constellai 0.3.8 → 0.3.9
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/build-manifest.json +2 -2
- package/.next/prerender-manifest.json +3 -3
- 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 +3 -3
- 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 +2 -2
- 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 +2 -2
- 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 +2 -2
- 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 +1 -1
- 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_client-reference-manifest.js +1 -1
- package/.next/server/app/(auth)/onboarding/page.js +1 -1
- package/.next/server/app/(auth)/onboarding/page_client-reference-manifest.js +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 +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/api/cron/tick/route.js +2 -2
- package/.next/server/app/api/sync/file/route.js +1 -1
- package/.next/server/app/api/telegram/poll/route.js +2 -2
- package/.next/server/app/api/v1/[[...path]]/route.js +1 -1
- package/.next/server/chunks/1033.js +1 -1
- package/.next/server/chunks/1190.js +12 -0
- package/.next/server/chunks/1986.js +1 -1
- package/.next/server/chunks/2118.js +1 -1
- package/.next/server/chunks/{1678.js → 3481.js} +16 -16
- package/.next/server/chunks/3987.js +3 -3
- package/.next/server/chunks/4288.js +1 -1
- package/.next/server/chunks/4435.js +1 -0
- package/.next/server/chunks/4732.js +1 -0
- package/.next/server/chunks/5878.js +1 -1
- package/.next/server/chunks/7348.js +4 -0
- package/.next/server/chunks/739.js +1 -0
- package/.next/server/chunks/7867.js +1 -1
- package/.next/server/chunks/7905.js +1 -1
- package/.next/server/chunks/8134.js +1 -1
- package/.next/server/chunks/8211.js +1 -1
- package/.next/server/chunks/8868.js +21 -0
- package/.next/server/chunks/907.js +1 -1
- package/.next/server/chunks/9344.js +3 -3
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/middleware.js +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/1738-28b6824e2a707b93.js +1 -0
- package/.next/static/chunks/4365-c5eb5b6af7bfc653.js +4 -0
- package/.next/static/chunks/6871-a079ac1b4f0caec2.js +1 -0
- package/.next/static/chunks/{7218-21f40f9caef5d658.js → 7218-44d9a247cf4980fa.js} +2 -2
- package/.next/static/chunks/7466-6d8ba01f169a6a1e.js +1 -0
- package/.next/static/chunks/app/(app)/activity/{page-ce3fc6003368f592.js → page-8cf9b4c853ca9c69.js} +1 -1
- package/.next/static/chunks/app/(app)/agents/[handle]/page-068e58bd327db429.js +1 -0
- package/.next/static/chunks/app/(app)/code/page-98becb790f9aeedf.js +1 -0
- package/.next/static/chunks/app/(app)/config/page-b5447ad490de11f7.js +1 -0
- package/.next/static/chunks/app/(app)/costs/page-02324b05660bad50.js +1 -0
- package/.next/static/chunks/app/(app)/cron/page-5c9c6fea5aee299c.js +1 -0
- package/.next/static/chunks/app/(app)/dashboard/{page-6237c3a35cce55ce.js → page-742ac16dbfce548b.js} +1 -1
- package/.next/static/chunks/app/(app)/design/{page-5997054187e59e74.js → page-3ff2eae843e8b7ea.js} +3 -3
- package/.next/static/chunks/app/(app)/docs/[id]/page-f7cc168b103da51e.js +1 -0
- package/.next/static/chunks/app/(app)/docs/page-bc93a2e0342c61af.js +1 -0
- package/.next/static/chunks/app/(app)/github/page-44b09f94c19f56f0.js +1 -0
- package/.next/static/chunks/app/(app)/goals/{page-95e85ce115ed9ff3.js → page-b66ec65a7221b023.js} +1 -1
- package/.next/static/chunks/app/(app)/inbox/page-57a8ab9347276aa2.js +12 -0
- package/.next/static/chunks/app/(app)/knowledge/page-fb3902b3c7348818.js +1 -0
- package/.next/static/chunks/app/(app)/layout-98aa9e760faf2331.js +1 -0
- package/.next/static/chunks/app/(app)/models/page-92f957c7400497f0.js +1 -0
- package/.next/static/chunks/app/(app)/notifications/page-e3fcdad57e7a94fd.js +12 -0
- package/.next/static/chunks/app/(app)/org/page-9030d33729e45e07.js +12 -0
- package/.next/static/chunks/app/(app)/organizations/{page-0de7da829c9b2249.js → page-f29c3dc4b3327b8d.js} +1 -1
- package/.next/static/chunks/app/(app)/page-0e7e7cfd98d44f59.js +1 -0
- package/.next/static/chunks/app/(app)/planner/{page-0fc0ebe2d338769a.js → page-a2c45cb14b53454a.js} +1 -1
- package/.next/static/chunks/app/(app)/plugins/page-792b3dc0ae8571db.js +1 -0
- package/.next/static/chunks/app/(app)/pm/page-4624950feadad3be.js +1 -0
- package/.next/static/chunks/app/(app)/prepare-deploy/page-a5d2911069317635.js +1 -0
- package/.next/static/chunks/app/(app)/profile/page-10ce6fd89387a1f0.js +1 -0
- package/.next/static/chunks/app/(app)/pulse/page-793ce0d2074d2cd7.js +1 -0
- package/.next/static/chunks/app/(app)/reports/[id]/page-5c9c6fea5aee299c.js +1 -0
- package/.next/static/chunks/app/(app)/reports/page-cfa78938aef16acc.js +1 -0
- package/.next/static/chunks/app/(app)/routines/page-06df804a8db66b2d.js +1 -0
- package/.next/static/chunks/app/(app)/search/page-eec2f135e6af9c70.js +1 -0
- package/.next/static/chunks/app/(app)/security/page-23dd0b8308ee48b8.js +1 -0
- package/.next/static/chunks/app/(app)/skills/page-d3d63cac10ce08e1.js +1 -0
- package/.next/static/chunks/app/(app)/tasks/{page-4d535f34ae9c44ca.js → page-0750ff77f17bdd9d.js} +1 -1
- package/.next/static/chunks/app/(app)/test-dev/page-7c09ba848265ffe6.js +1 -0
- package/.next/static/chunks/app/(app)/update/page-e70ac9974eb7bf03.js +1 -0
- package/.next/static/chunks/app/(auth)/login/page-0ee8f367460d835a.js +1 -0
- package/.next/static/chunks/app/(auth)/onboarding/{page-8548be7e3ab3659e.js → page-1de0c42322e9f296.js} +1 -1
- package/.next/static/chunks/app/layout-a80704c0fd0a9e29.js +1 -0
- package/.next/trace-build +1 -1
- package/CHANGELOG.md +12 -0
- package/README.md +1 -1
- package/README.pt-BR.md +1 -1
- package/docs/UPDATE.md +9 -3
- package/package.json +1 -1
- package/.next/server/chunks/3392.js +0 -1
- package/.next/server/chunks/6538.js +0 -4
- package/.next/server/chunks/7727.js +0 -1
- package/.next/server/chunks/8237.js +0 -12
- package/.next/server/chunks/939.js +0 -1
- package/.next/server/chunks/9795.js +0 -21
- package/.next/static/chunks/3556-dbb9200143640484.js +0 -1
- package/.next/static/chunks/5523-9c369c915ee6d9c9.js +0 -1
- package/.next/static/chunks/7363-b9ebe28fed23b997.js +0 -1
- package/.next/static/chunks/7621-87d8d0d0568de3ca.js +0 -4
- package/.next/static/chunks/app/(app)/agents/[handle]/page-236e13b8edadd480.js +0 -1
- package/.next/static/chunks/app/(app)/code/page-18ae765c81a2c709.js +0 -1
- package/.next/static/chunks/app/(app)/config/page-8a6fcf6c04337210.js +0 -1
- package/.next/static/chunks/app/(app)/costs/page-230b0ef03a2024b0.js +0 -1
- package/.next/static/chunks/app/(app)/cron/page-ca89769e2522191d.js +0 -1
- package/.next/static/chunks/app/(app)/docs/[id]/page-3362d323e0f4dada.js +0 -1
- package/.next/static/chunks/app/(app)/docs/page-d7d8018a7884a4b4.js +0 -1
- package/.next/static/chunks/app/(app)/github/page-f5c1cae725d080fb.js +0 -1
- package/.next/static/chunks/app/(app)/inbox/page-474c3f0a181bbbd3.js +0 -12
- package/.next/static/chunks/app/(app)/knowledge/page-08596428ca34b620.js +0 -1
- package/.next/static/chunks/app/(app)/layout-720a1171f7152d86.js +0 -1
- package/.next/static/chunks/app/(app)/models/page-fa1eb257e6911c9a.js +0 -1
- package/.next/static/chunks/app/(app)/notifications/page-31f2a041bdb497b9.js +0 -12
- package/.next/static/chunks/app/(app)/org/page-666438930ddc4639.js +0 -12
- package/.next/static/chunks/app/(app)/page-bfcf3d25f468240f.js +0 -1
- package/.next/static/chunks/app/(app)/plugins/page-ad369fbfec6f3d1c.js +0 -1
- package/.next/static/chunks/app/(app)/pm/page-bb39c9d9a4f0d597.js +0 -1
- package/.next/static/chunks/app/(app)/prepare-deploy/page-f182991e68b159c1.js +0 -1
- package/.next/static/chunks/app/(app)/profile/page-cf5fe16bfad2a7ba.js +0 -1
- package/.next/static/chunks/app/(app)/pulse/page-03877c467c491e8a.js +0 -1
- package/.next/static/chunks/app/(app)/reports/[id]/page-ca89769e2522191d.js +0 -1
- package/.next/static/chunks/app/(app)/reports/page-7741b6a25e582791.js +0 -1
- package/.next/static/chunks/app/(app)/routines/page-ea83e6337e7502c2.js +0 -1
- package/.next/static/chunks/app/(app)/search/page-5e7f7cf0cc51b76f.js +0 -1
- package/.next/static/chunks/app/(app)/security/page-410144cdc35e19cc.js +0 -1
- package/.next/static/chunks/app/(app)/skills/page-90e5d8a24920c275.js +0 -1
- package/.next/static/chunks/app/(app)/test-dev/page-782c8cadd8a10feb.js +0 -1
- package/.next/static/chunks/app/(app)/update/page-decdb0ece526b50f.js +0 -1
- package/.next/static/chunks/app/(auth)/login/page-147a9be880c44d42.js +0 -1
- package/.next/static/chunks/app/layout-c717657a60a7f62c.js +0 -1
- /package/.next/static/{ehoxBsPzAtE_FyZ2VpMF0 → vW8upousaXo7DvSlRwFbb}/_buildManifest.js +0 -0
- /package/.next/static/{ehoxBsPzAtE_FyZ2VpMF0 → vW8upousaXo7DvSlRwFbb}/_ssgManifest.js +0 -0
|
@@ -38,7 +38,7 @@
|
|
|
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
|
-
`))}},19121:a=>{a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},29021:a=>{a.exports=require("fs")},29294:a=>{a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},31421:a=>{a.exports=require("node:child_process")},33873:a=>{a.exports=require("path")},37067:a=>{a.exports=require("node:http")},38522:a=>{a.exports=require("node:zlib")},
|
|
41
|
+
`))}},19121:a=>{a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},29021:a=>{a.exports=require("fs")},29294:a=>{a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},31421:a=>{a.exports=require("node:child_process")},33873:a=>{a.exports=require("path")},37067:a=>{a.exports=require("node:http")},38522:a=>{a.exports=require("node:zlib")},44870:a=>{a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},46466:a=>{a.exports=require("node:stream/promises")},47401:(a,b,c)=>{c.r(b),c.d(b,{"001d16694995abe26f4f19abcd2afbcb14baa2f54d":()=>d.Uw,"001dd8c9d00bd6c066bcf76069721ed4629efea404":()=>h.e9,"001f06b8e5d1dae22ea9780fa3e8d2a12e364bdd06":()=>h.wP,"0023c2d2a7bab3fa7022c78ac6d614acd1ba769a55":()=>g.groomBacklog,"002ad4a53b99266d836bd498f3f9c9f93d7af939fb":()=>d.V$,"002b210d490bfa99b1e3b3dcf5278a1a34186c9de2":()=>d.LU,"002e86b903268c109648432c9929f609e8e1cd431e":()=>d.Vr,"0034909a2352aaa8e86a3701ef7b3f8e84b0189b2a":()=>d.ts,"0036e0e3aed32ebc221551eb790eeac7654c2f9ead":()=>d.Jw,"003d491d5a9f1d5aa2c1e34df023e249b1e6a4d27b":()=>g.requestPlanChanges,"004dad502111825011e799dc5f3456eb391617c0ab":()=>d.nl,"0057fef5f4c3a7908b17ebee99b5fafa167cb86c7a":()=>h.Tu,"0065245bcdbe5768c989195823cf77b2811ce397d4":()=>h.PO,"006e3862d33640a4d6587e0d999584ac5db40cb1be":()=>g.approvePlan,"0074379a2535bd5392e0dbde1f2463ed56bde60f53":()=>h.Ni,"00a76b217eeb7097c4ba372a728d57bbc66adc2cbe":()=>d.Ac,"00ae804b8f08d9be53e841dedfae723956105acfe0":()=>h.gn,"00af40297858927e400bb6f4df39523802b9a1169d":()=>d.lC,"00b7343b9be87a777c99551a954722031c66d9a178":()=>h.I_,"00b7c531efd4fb1ca1ffa96d784f08d7e41d4537a5":()=>d.Hi,"00be1b609c8b1d4ee869da2a24669791bf714540cc":()=>d.kb,"00c1203e4de4a3f7c59b6e117bce32c5f9f8e1bb59":()=>h.ME,"00d65aadb2b093b5e3316b26e8214c8dbec693d3d8":()=>d.zO,"00d755a9414ab910fb9707b07cb2bc669cbb52768c":()=>d.Gh,"00d8efef48b73ec337df23f7ab530632cab6662c03":()=>h.o3,"00e0d80384e6e10ca7ab9d59884a0bc960b9c46260":()=>h.yL,"00e679961093600765d5177e2b3cde814e84a11766":()=>h.oS,"00fdd067a717b4bec952b6217c776dae025cfc6b19":()=>d.S8,"00ffc53f6108023783cfde05ee215eab4da4b0ffee":()=>d.VH,"40013167334e9c5909d5a49208cd7bdd390497efe3":()=>h.is,"400131ca77bbfb1ac4d799e619f1aa13d27cdcee48":()=>h.lj,"40102b8d3d6f3d24e3eb5dd445242945b75511d595":()=>g.approveIssue,"401c5051bc353b84413b009dd51f516148c91d0a6c":()=>d.az,"40242f4eaff43df72cf01e4c58d529b352b0844451":()=>g.rejectIssue,"402bf9d698c935f90139857c5ee816f0925b2f4c85":()=>d.I2,"4042f30cd92a4ce15b57cdf3bb844ed17b123375bb":()=>g.startNewWork,"4046fa12571497a64e108e9b450e01044d1952fc4c":()=>g.planFromConversation,"405024f72692c33a38c13ce62dedfd1fc4772cc7bb":()=>d.Cp,"40506681298deecf587a22a58f89b00187526d839e":()=>g.rejectSpec,"405625f8452c4f8ddc1d39f88e1d25d620eba1f354":()=>g.advanceIssue,"4065a8605d2b51d7b64c3e8d3d63abe311f0726dd5":()=>h.NM,"40795a2cee09e53a3192bb4582588b29bedfbbbfd3":()=>g.approveSpec,"40930525e94ac0b0cf8c69a77b18ea75797697ede7":()=>h.fb,"4093a638bbf25c217b2dcd7a60e3863af53581f4f6":()=>d.ju,"4098adb7b9cb6d8ece6a5d5da39e8c06941be1f196":()=>h.DX,"40a7743715198e7409c8a4cd0a07beb4c5e0468668":()=>h.R6,"40abdf7aae1b6c1eb3a4f2b3e7ee903de41565d01d":()=>h.a4,"40ad11a33262da1899a6826210e521724c5db5ab0e":()=>d.m,"40ba827778cc9afae5ab41aa5cd8e4cfb89b37e3db":()=>h.h_,"40c7e47e1cc2d9177d758ceeac9062e7f258e5798e":()=>d.wp,"40c96648818d9d4ec130d567d4e3b3deb7d8724ae9":()=>e.mg,"40da20117d679d6fda817d86bc7ba74c80844d42bf":()=>g.setAuto247,"40dd3790d27215bc81b13a7b70b0dca9fdc9e28db9":()=>d.L0,"40ebc4494ff674327f4f0bdde94c626e1970bff237":()=>h.$_,"40ec7dc7ac14af3c16cacc0dd7501b8b23bd60c7f5":()=>d.cm,"40f40927761bc3b2be5ac04bdc8f6b2ea0a4cef554":()=>g.generatePlan,"600adfc269778741217c31377d7e0b633650bc2ec9":()=>f.k,"601886d36b903eae39aa2d6755f8cda894f37cbad5":()=>h.Fo,"60207b3edb388e4b1f4c6add9fe87c45038c85803c":()=>h.RS,"603a0bee748da70ce7c6eeb9eed35eb5791ca34fd5":()=>h.ft,"606af0fc590574400bb3424d3b678eaa11902fb114":()=>h.NW,"6071acd600fbb10587d980179307f0fd094a5f115a":()=>h.pG,"60a3d44b282c3fc785b97ee6983137620eb7272345":()=>e.eA,"60a408a3a21b681b16b206149fd9e0790a4304056e":()=>f.I,"60bb60af78eb2e0494e29b19cbc5dd6b653ff0e9ec":()=>h.qw,"60c5c511b8ddf434edb4df1dd8c7b74962fc2cff88":()=>g.groomBacklogFor,"60f8cc90db98cfdc08de4403875a6eb7a03b924ec9":()=>h.EQ,"704f8b8b0844d526a7840066d6e99fc851e9902780":()=>h.fM,"7053230fcc82cc3fdd37196885d8475eeb89f396ff":()=>h.sy,"7064a5f752cc0107884224a36b01befc2f6fd6fba4":()=>h.Sy,"707c7fd0696d03085cd45440035e098cd78345649c":()=>h.a7,"70fc54beaa8893b4532bcbebbdd236a4e938781544":()=>e.LV,"7c22b8b2c3d793c3aaaa313b550ba7e274863d17dc":()=>h.Hg});var d=c(15878),e=c(89258),f=c(87980),g=c(12529),h=c(74910)},48161:a=>{a.exports=require("node:os")},49131:(a,b,c)=>{c.r(b),c.d(b,{handler:()=>ag,patchFetch:()=>af,routeModule:()=>ab,serverHooks:()=>ae,workAsyncStorage:()=>ac,workUnitAsyncStorage:()=>ad});var d={};c.r(d),c.d(d,{POST:()=>aa,dynamic:()=>_,runtime:()=>$});var e=c(16633),f=c(35526),g=c(80445),h=c(49421),i=c(68279),j=c(22827),k=c(261),l=c(45469),m=c(19923),n=c(17653),o=c(70486),p=c(49496),q=c(16674),r=c(11264),s=c(7001),t=c(86439),u=c(4535),v=c(91736),w=c(77598),x=c(73024),y=c(76760),z=c(50730),A=c(23888),B=c(12940),C=c(76561),D=c(66408),E=c(8646),F=c(84534),G=c(20699),H=c(66263),I=c(87355),J=c(56425),K=c(15563),L=c(74910),M=c(28134),N=c(63942);let O="telegram",P=new Set,Q=new Set,R=new Set;async function S(){let a=await B.db.select().from(C.workspace),b=0;for(let c of a){let a=c.settings??{};if(!(0,E.Ml)(a.integrations,"telegram"))continue;let d=await (0,F._9)(c.id);if(!d)continue;R.has(d.botToken)||(0,F.A3)(d.botToken).then(()=>R.add(d.botToken)).catch(()=>{});let e=a.telegram?.offset??0,f=await (0,F.SD)(d.botToken,e),g=e;for(let a of f)try{await T(c,d,a),g=Math.max(g,a.update_id+1)}catch(a){console.error("[telegram] ingest failed:",a);break}g!==e&&await B.db.update(C.workspace).set({settings:{...a,telegram:{...a.telegram??{},offset:g}}}).where((0,z.eq)(C.workspace.id,c.id)),b+=f.length}return{updates:b}}async function T(a,b,c){if(c.callback_query)return void await Z(a,b,c.callback_query);let d=c.message;if(!d||String(d.chat.id)!==String(b.chatId)||d.from&&String(d.from.id)!==String(b.chatId))return;let e=(d.text??d.caption??"").slice(0,4e3),f=[],g=(0,D.HZ)(a.orgId),h=(0,w.randomUUID)().slice(0,8),i=async(a,c,d)=>{let e=await (0,F.G3)(b.botToken,a);if(!e)return;let i=c.replace(/[^\w.\-]+/g,"_").slice(-60)||`file.${e.ext}`,j=`uploads/tg-${h}/${i}`;try{(0,x.mkdirSync)((0,y.join)(g,`uploads/tg-${h}`),{recursive:!0}),(0,x.writeFileSync)((0,y.join)(g,j),e.buf),f.push({name:i,type:d,size:e.buf.length,path:j})}catch{}};if(d.photo?.length&&await i(d.photo[d.photo.length-1].file_id,"photo.jpg","image/jpeg"),d.document&&await i(d.document.file_id,d.document.file_name??"document",d.document.mime_type??"application/octet-stream"),e||0!==f.length){if(await B.db.insert(C.message).values({id:(0,w.randomUUID)(),workspaceId:a.id,channel:O,fromKind:"operator",text:e||"(attachment)",attachments:f.length?f:null}),(0,H.r)(a.id),P.has(a.id)&&e&&!e.startsWith("/")){P.delete(a.id),await (0,I.TR)(a.id,e),await X(a,b,"↩️ Recorded — the CEO will revise the plan with your reason.");return}if(Q.has(a.id)&&e&&!e.startsWith("/")){Q.delete(a.id);try{await B.db.insert(C.message).values({id:(0,w.randomUUID)(),workspaceId:a.id,channel:"design",fromKind:"operator",text:`Change request (via Telegram): ${e}`})}catch{}await X(a,b,"\uD83D\uDCDD Recorded — open the Design module and Grace will apply your changes, then Send to execution.");return}if(e.startsWith("/"))return void await Y(a,b,e);await U(a,b)}}async function U(a,b){let c=(await B.db.select().from(C.agent).where((0,z.Uo)((0,z.eq)(C.agent.workspaceId,a.id),(0,z.eq)(C.agent.handle,"ada"))))[0]??(await B.db.select().from(C.agent).where((0,z.eq)(C.agent.workspaceId,a.id)))[0];if(!c)return;await B.db.update(C.agent).set({status:"working"}).where((0,z.eq)(C.agent.id,c.id)),await (0,F.sK)(b.botToken,b.chatId,"typing");let d=setInterval(()=>{(0,F.sK)(b.botToken,b.chatId,"typing").catch(()=>{})},4e3),e="",f=!1;try{({text:e,planRequested:f}=await (0,G.PM)(a.orgId,a,O,c,"chat"))}finally{clearInterval(d)}if(await B.db.update(C.agent).set({status:"idle"}).where((0,z.eq)(C.agent.id,c.id)),e&&await (0,F.vH)(b.botToken,b.chatId,(0,N.Z)(e,[b.botToken])),f){let c=await (0,K.G)(a.orgId,a,O);await X(a,b,c.ok?"\uD83D\uDCDD Got it — drafting the plan now (specs \xb7 issues \xb7 TODOs); it'll appear in the CEO Planner for your approval, and I'll post here when it's ready.":`I couldn't start a plan from this yet${c.error?` (${c.error})`:""} — add a little more detail and I'll try again.`)}}let V=`Remote control:
|
|
42
42
|
/status — quick status
|
|
43
43
|
/review — full plan / issues / tasks summary
|
|
44
44
|
/tasks — what's in flight right now
|
|
@@ -130,4 +130,4 @@ ${c.map(a=>"- "+a).join("\n")||"(scan the project for components / screens / sty
|
|
|
130
130
|
1) Create design-mock/styles/global.css with the design tokens (:root), reset/base and theme ([data-theme]).
|
|
131
131
|
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.
|
|
132
132
|
3) Write design-mock/design-system.md outlining the palette, typography, spacing, core components and the screens to build.
|
|
133
|
-
4) Tell me what you set up and what to build/validate next before approving.`;return G(`Ada is preparing the delivery plan and needs the design prototyped + approved first (zero drift). ${a}`)}async function W(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:A(c,a,a=>(0,p.sL)(b.id,a)).slice(0,2e6)}}async function X(){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)=>Y(a.path)-Y(b.path)||a.label.localeCompare(b.label));return(0,t.zw)(a.id,b),{docs:c}}function Y(a){return/APPROVED\.md$/i.test(a)?0:/design-system\.md$/i.test(a)?1:2}async function Z(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 _(){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 aa(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 _(),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 ab(a){let{org:b}=await (0,k.nP)(),{presets:c}=await _();return(0,p.dx)(b.id,$,JSON.stringify(c.filter(b=>b.id!==a),null,2)),{ok:!0}}async function ac(){let{org:a,workspace:b}=await (0,k.nP)(),c=(0,t.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 ad(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 ae(){let{workspace:a}=await (0,k.nP)();(0,s.I)();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 af(a,b){return G(`Restore the prototype to ${a} — "${b}". Re-apply that state to the screens under design-mock/screens/ and tell me what changed.`)}async function ag(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."};(0,s.I)();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 ah(a){let{org:b,workspace:c}=await (0,k.nP)();(0,s.I)();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 ai(a){let{workspace:b}=await (0,k.nP)();(0,s.I)();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 aj(a,b,c,d,f){let g=d?.trim();if(!g)return{ok:!1,error:"Empty comment."};(0,s.I)();let k=await E(),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 ak(a,b,c){(0,s.I)();let d=await E(),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 al(a){let{workspace:b}=await (0,k.nP)();(0,s.I)();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 am(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 an(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 ao(d.id,a)}catch{}try{(0,h.revalidatePath)("/design")}catch{}return{ok:!0}}async function ao(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 ap(){let{org:a,workspace:b}=await (0,k.nP)(),c=(0,t.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}}(A(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,B.D)([E,F,G,H,I,J,K,L,N,O,Q,T,U,V,W,X,Z,_,aa,ab,ac,ae,af,ag,ah,ai,aj,ak,al,am,an,ap]),(0,d.A)(E,"005b10ac4df7ed0f7392e991bb82ed4f88d3b61d74",null),(0,d.A)(F,"4067307ce089b31d3e494ed9c0f93d9847b649e934",null),(0,d.A)(G,"7080b27ff6dfc3db037e16c1bfcb0dbdd6e39da61a",null),(0,d.A)(H,"40c1f693730c73d3ea25cb7fead89fbeddc38941bf",null),(0,d.A)(I,"704f3c299b2a26f4c589dae77dd538aca487aaa71c",null),(0,d.A)(J,"007d2d9dd848b3415490b6f32875e692d898958ab6",null),(0,d.A)(K,"60a086bbd97cfbf602cbe04606aa1b54802fc1d3fe",null),(0,d.A)(L,"00881dc144c821d03ec1349f977507a79eb62c08b9",null),(0,d.A)(N,"60b2749ebc40600e93b4d9b6be93528555dea63350",null),(0,d.A)(O,"00ba0232091ba4ed048391fa668752ce34b548bcf0",null),(0,d.A)(Q,"60816c6010080d0c3b54871286f36bd24e0618aaa6",null),(0,d.A)(T,"60df6fc6cfbfdc1eb8f9a039646193c4d8d1b3ecfa",null),(0,d.A)(U,"00c62021056f8b2c00829a8b7d390353eaabc724a4",null),(0,d.A)(V,"00a3c4b5a13e1dde6efab6d5421a9232dfd87a4689",null),(0,d.A)(W,"40bac470c1253b0cd0dc683537b3cf5462d92020bc",null),(0,d.A)(X,"000e9041aeb30b4c8ca71341990e208d68b7b21b7f",null),(0,d.A)(Z,"40aa8544982f3077cdbc78e57a1bc7a1d078a5035f",null),(0,d.A)(_,"00956b8eaaf169063abde5cb3f59badefbe71915f6",null),(0,d.A)(aa,"6021c456fc57cc4afc301239c8ce96b2f55ebeaab6",null),(0,d.A)(ab,"402081a0915ac82ebc6d340fbf82e3746a4925eb8b",null),(0,d.A)(ac,"000bae14a63337ad112175da81b78bcd62ba42a2df",null),(0,d.A)(ae,"008f3863abc603d341052a4bbab8ce9243ad029880",null),(0,d.A)(af,"60e6e05368a96761ba5c0fb9a1542975b0e1812ac5",null),(0,d.A)(ag,"400df4e1324216021f528585fdf52bcbb465ae43c6",null),(0,d.A)(ah,"40103701dbb018905c3123a247995125d8a7bd4d7a",null),(0,d.A)(ai,"40a8566bc9a80a001d82131f509bd374af991b76ff",null),(0,d.A)(aj,"7cd67f9da791307c34e973ce5935ff3ebdb540ece0",null),(0,d.A)(ak,"7092594720b30422789b60560e0e360acd53a13329",null),(0,d.A)(al,"40b8490ba2b7dd406f11ea61518ad8761bb15ca558",null),(0,d.A)(am,"700861576230a313df69af7bb3b2ad32c90963e9fe",null),(0,d.A)(an,"602d70d47f8248807f19f7af7595ad03cb510362f1",null),(0,d.A)(ap,"000775aa288b626c1a9d42728f9f4ff7d9d3d468d4",null)},76760:a=>{a.exports=require("node:path")},77030:a=>{a.exports=require("node:net")},77598:a=>{a.exports=require("node:crypto")},78474:a=>{a.exports=require("node:events")},86439:a=>{a.exports=require("next/dist/shared/lib/no-fallback-error.external")},87550:a=>{a.exports=require("better-sqlite3")}};var b=require("../../../../webpack-runtime.js");b.C(a);var c=b.X(0,[5911,5361,6309,4679,7474,5557,6585,1243,912,415,77,5878,8134,6807,2323,26,1033,6121,907,699],()=>b(b.s=49131));module.exports=c})();
|
|
133
|
+
4) Tell me what you set up and what to build/validate next before approving.`;return G(`Ada is preparing the delivery plan and needs the design prototyped + approved first (zero drift). ${a}`)}async function W(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:A(c,a,a=>(0,p.sL)(b.id,a)).slice(0,2e6)}}async function X(){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)=>Y(a.path)-Y(b.path)||a.label.localeCompare(b.label));return(0,t.zw)(a.id,b),{docs:c}}function Y(a){return/APPROVED\.md$/i.test(a)?0:/design-system\.md$/i.test(a)?1:2}async function Z(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 _(){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 aa(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 _(),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 ab(a){let{org:b}=await (0,k.nP)(),{presets:c}=await _();return(0,p.dx)(b.id,$,JSON.stringify(c.filter(b=>b.id!==a),null,2)),{ok:!0}}async function ac(){let{org:a,workspace:b}=await (0,k.nP)(),c=(0,t.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 ad(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 ae(){let{workspace:a}=await (0,k.nP)();(0,s.I)();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 af(a,b){return G(`Restore the prototype to ${a} — "${b}". Re-apply that state to the screens under design-mock/screens/ and tell me what changed.`)}async function ag(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."};(0,s.I)();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 ah(a){let{org:b,workspace:c}=await (0,k.nP)();(0,s.I)();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 ai(a){let{workspace:b}=await (0,k.nP)();(0,s.I)();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 aj(a,b,c,d,f){let g=d?.trim();if(!g)return{ok:!1,error:"Empty comment."};(0,s.I)();let k=await E(),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 ak(a,b,c){(0,s.I)();let d=await E(),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 al(a){let{workspace:b}=await (0,k.nP)();(0,s.I)();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 am(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 an(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 ao(d.id,a)}catch{}try{(0,h.revalidatePath)("/design")}catch{}return{ok:!0}}async function ao(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 ap(){let{org:a,workspace:b}=await (0,k.nP)(),c=(0,t.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}}(A(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,B.D)([E,F,G,H,I,J,K,L,N,O,Q,T,U,V,W,X,Z,_,aa,ab,ac,ae,af,ag,ah,ai,aj,ak,al,am,an,ap]),(0,d.A)(E,"00c1203e4de4a3f7c59b6e117bce32c5f9f8e1bb59",null),(0,d.A)(F,"40ba827778cc9afae5ab41aa5cd8e4cfb89b37e3db",null),(0,d.A)(G,"7064a5f752cc0107884224a36b01befc2f6fd6fba4",null),(0,d.A)(H,"40013167334e9c5909d5a49208cd7bdd390497efe3",null),(0,d.A)(I,"704f8b8b0844d526a7840066d6e99fc851e9902780",null),(0,d.A)(J,"00e679961093600765d5177e2b3cde814e84a11766",null),(0,d.A)(K,"60207b3edb388e4b1f4c6add9fe87c45038c85803c",null),(0,d.A)(L,"00b7343b9be87a777c99551a954722031c66d9a178",null),(0,d.A)(N,"601886d36b903eae39aa2d6755f8cda894f37cbad5",null),(0,d.A)(O,"00d8efef48b73ec337df23f7ab530632cab6662c03",null),(0,d.A)(Q,"606af0fc590574400bb3424d3b678eaa11902fb114",null),(0,d.A)(T,"60bb60af78eb2e0494e29b19cbc5dd6b653ff0e9ec",null),(0,d.A)(U,"0065245bcdbe5768c989195823cf77b2811ce397d4",null),(0,d.A)(V,"0057fef5f4c3a7908b17ebee99b5fafa167cb86c7a",null),(0,d.A)(W,"4098adb7b9cb6d8ece6a5d5da39e8c06941be1f196",null),(0,d.A)(X,"001f06b8e5d1dae22ea9780fa3e8d2a12e364bdd06",null),(0,d.A)(Z,"400131ca77bbfb1ac4d799e619f1aa13d27cdcee48",null),(0,d.A)(_,"0074379a2535bd5392e0dbde1f2463ed56bde60f53",null),(0,d.A)(aa,"603a0bee748da70ce7c6eeb9eed35eb5791ca34fd5",null),(0,d.A)(ab,"40ebc4494ff674327f4f0bdde94c626e1970bff237",null),(0,d.A)(ac,"00ae804b8f08d9be53e841dedfae723956105acfe0",null),(0,d.A)(ae,"00e0d80384e6e10ca7ab9d59884a0bc960b9c46260",null),(0,d.A)(af,"6071acd600fbb10587d980179307f0fd094a5f115a",null),(0,d.A)(ag,"40abdf7aae1b6c1eb3a4f2b3e7ee903de41565d01d",null),(0,d.A)(ah,"40930525e94ac0b0cf8c69a77b18ea75797697ede7",null),(0,d.A)(ai,"40a7743715198e7409c8a4cd0a07beb4c5e0468668",null),(0,d.A)(aj,"7c22b8b2c3d793c3aaaa313b550ba7e274863d17dc",null),(0,d.A)(ak,"707c7fd0696d03085cd45440035e098cd78345649c",null),(0,d.A)(al,"4065a8605d2b51d7b64c3e8d3d63abe311f0726dd5",null),(0,d.A)(am,"7053230fcc82cc3fdd37196885d8475eeb89f396ff",null),(0,d.A)(an,"60f8cc90db98cfdc08de4403875a6eb7a03b924ec9",null),(0,d.A)(ap,"001dd8c9d00bd6c066bcf76069721ed4629efea404",null)},76760:a=>{a.exports=require("node:path")},77030:a=>{a.exports=require("node:net")},77598:a=>{a.exports=require("node:crypto")},78474:a=>{a.exports=require("node:events")},86439:a=>{a.exports=require("next/dist/shared/lib/no-fallback-error.external")},87550:a=>{a.exports=require("better-sqlite3")}};var b=require("../../../../webpack-runtime.js");b.C(a);var c=b.X(0,[5911,5361,6309,4679,7474,5557,6585,1243,912,415,77,5878,8134,6807,2323,26,1033,6121,907,699],()=>b(b.s=49131));module.exports=c})();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";(()=>{var a={};a.id=2835,a.ids=[2835],a.modules={261:a=>{a.exports=require("next/dist/shared/lib/router/utils/app-paths")},3295:a=>{a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},4326:(a,b,c)=>{c.r(b),c.d(b,{handler:()=>Y,patchFetch:()=>X,routeModule:()=>T,serverHooks:()=>W,workAsyncStorage:()=>U,workUnitAsyncStorage:()=>V});var d={};c.r(d),c.d(d,{GET:()=>R,POST:()=>S,dynamic:()=>M,runtime:()=>L});var e=c(16633),f=c(35526),g=c(80445),h=c(49421),i=c(68279),j=c(22827),k=c(261),l=c(45469),m=c(19923),n=c(17653),o=c(70486),p=c(49496),q=c(16674),r=c(11264),s=c(7001),t=c(86439),u=c(4535),v=c(91736),w=c(77598),x=c(50730),y=c(12940),z=c(76561),A=c(2148);async function B(a,b){let c=/^Bearer\s+(cn_[A-Za-z0-9_-]{8,})$/.exec((a??"").trim());if(!c)return{ok:!1,status:401,error:"missing or malformed bearer token"};let d=(0,w.createHash)("sha256").update(c[1]).digest("hex"),[e]=await y.db.select().from(z.personalAccessToken).where((0,x.eq)(z.personalAccessToken.tokenHash,d));if(!e)return{ok:!1,status:401,error:"invalid token"};try{await y.db.update(z.personalAccessToken).set({lastUsedAt:new Date}).where((0,x.eq)(z.personalAccessToken.id,e.id))}catch{}let f=await (0,A.$x)(e.userId,b??void 0);if(!f)return{ok:!1,status:404,error:"no organization for this token's user"};if(f.archived)return{ok:!1,status:409,error:"organization is archived"};let g=await (0,A.K4)(f.id);return g?{ok:!0,auth:{userId:e.userId,tokenId:e.id,scope:e.scope,org:f,workspace:g}}:{ok:!1,status:404,error:"no workspace for the organization"}}async function C(a){let[b,c,d,[e]]=await Promise.all([y.db.select({status:z.goal.status}).from(z.goal).where((0,x.eq)(z.goal.workspaceId,a.id)),y.db.select({col:z.issue.col}).from(z.issue).where((0,x.eq)(z.issue.workspaceId,a.id)),y.db.select({col:z.task.col}).from(z.task).where((0,x.eq)(z.task.workspaceId,a.id)),y.db.select().from(z.plan).where((0,x.eq)(z.plan.workspaceId,a.id))]),f=a=>a.reduce((a,b)=>(a[b.col]=(a[b.col]??0)+1,a),{});return{workspace:{id:a.id,name:a.name,slug:a.slug},goals:{active:b.filter(a=>"active"===a.status).length,total:b.length},issues:{open:c.filter(a=>"done"!==a.col).length,total:c.length,byCol:f(c)},tasks:{doing:d.filter(a=>"doing"===a.col).length,total:d.length,byCol:f(d)},plan:e?{approved:e.approved,auto247:e.auto247,stage:e.stage}:null}}async function D(a){return await y.db.select({id:z.goal.id,title:z.goal.title,status:z.goal.status,progress:z.goal.progress}).from(z.goal).where((0,x.eq)(z.goal.workspaceId,a))}async function E(a){return await y.db.select({id:z.issue.id,key:z.issue.key,title:z.issue.title,col:z.issue.col,prio:z.issue.prio,points:z.issue.points,moscow:z.issue.moscow,approved:z.issue.approved}).from(z.issue).where((0,x.eq)(z.issue.workspaceId,a))}async function F(a){return await y.db.select({id:z.task.id,key:z.task.key,title:z.task.title,col:z.task.col,prio:z.task.prio}).from(z.task).where((0,x.eq)(z.task.workspaceId,a))}async function G(a){return await y.db.select({id:z.spec.id,key:z.spec.key,title:z.spec.title,status:z.spec.status,approved:z.spec.approved}).from(z.spec).where((0,x.eq)(z.spec.workspaceId,a))}var H=c(87355),I=c(56425),J=c(15563),K=c(28134);let L="nodejs",M="force-dynamic",N=new Map,O=(a,b=200)=>v.NextResponse.json({ok:!0,data:a},{status:b}),P=(a,b)=>v.NextResponse.json({ok:!1,error:b},{status:a});async function Q(a,b,c){var d;let e,f,g=await B(a.headers.get("authorization"),a.headers.get("x-constella-org"));if(!g.ok)return P(g.status,g.error);let{auth:h}=g;if(d=h.tokenId,e=Date.now(),(f=(N.get(d)??[]).filter(a=>e-a<6e4)).push(e),N.set(d,f),f.length>120)return P(429,"rate limit exceeded (120 req/min)");let i=h.workspace,j=b.join("/"),k="write"===h.scope,l=()=>k?null:P(403,"this token has read scope; a write-scope token is required");if("GET"===c)switch(j){case"":case"me":return O({user:h.userId,org:{id:h.org.id,name:h.org.name},workspace:{id:i.id,name:i.name,slug:i.slug},scope:h.scope});case"status":return O(await C(i));case"review":return O({text:await (0,H.mt)(i)});case"goals":return O(await D(i.id));case"issues":return O(await E(i.id));case"tasks":return O(await F(i.id));case"specs":return O(await G(i.id));case"kb":{let b=a.nextUrl.searchParams.get("q")??"";if(!b.trim())return P(400,"missing ?q=");let c=await (0,K.ed)(h.org.id,b);return O({text:c.text,sources:c.sources})}default:return P(404,`unknown GET /${j}`)}let m=await a.json().catch(()=>({}));switch(j){case"plan/approve":return l()??O(await (0,H.wz)(h.org.id,i));case"plan/reject":{let a=l();if(a)return a;return await (0,H.TR)(i.id,"string"==typeof m.reason?m.reason:void 0),O({rejected:!0})}case"execution":{let a=l();if(a)return a;let b=!1!==m.on;return await (0,H.mL)(i.id,b),O({auto247:b})}case"work":{let a=l();if(a)return a;let b="string"==typeof m.brief?m.brief:"",c="string"==typeof m.title?m.title:void 0,d=await (0,J.startNewWorkFor)(h.org.id,i,{brief:b,title:c});return d.ok?O(d):P(400,d.error??"could not start work")}case"kb":{let a="string"==typeof m.q?m.q:"";if(!a.trim())return P(400,"missing body.q");let b=await (0,K.ed)(h.org.id,a);return O({text:b.text,sources:b.sources})}default:if("goals"===b[0]&&3===b.length){let a=l();if(a)return a;let c=b[1];if("cancel"===b[2]){let a=await (0,I.NF)(i.id,c);return a.ok?O(a):P(404,"goal not found")}if("archive"===b[2]){let a=await (0,I.PT)(h.org.id,i.id,c);return a.ok?O(a):P(404,"goal not found")}}return P(404,`unknown POST /${j}`)}}async function R(a,b){try{let{path:c}=await b.params;return await Q(a,c??[],"GET")}catch(a){return P(500,String(a instanceof Error?a.message:a))}}async function S(a,b){try{let{path:c}=await b.params;return await Q(a,c??[],"POST")}catch(a){return P(500,String(a instanceof Error?a.message:a))}}let T=new e.AppRouteRouteModule({definition:{kind:f.RouteKind.APP_ROUTE,page:"/api/v1/[[...path]]/route",pathname:"/api/v1/[[...path]]",filename:"route",bundlePath:"app/api/v1/[[...path]]/route"},distDir:".next",relativeProjectDir:"",resolvedPagePath:"C:\\Users\\Usuario\\Documents\\constella\\src\\app\\api\\v1\\[[...path]]\\route.ts",nextConfigOutput:"",userland:d,...{}}),{workAsyncStorage:U,workUnitAsyncStorage:V,serverHooks:W}=T;function X(){return(0,g.patchFetch)({workAsyncStorage:U,workUnitAsyncStorage:V})}async function Y(a,b,c){c.requestMeta&&(0,h.setRequestMeta)(a,c.requestMeta),T.isDev&&(0,h.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let d="/api/v1/[[...path]]/route";"/index"===d&&(d="/");let e=await T.prepare(a,b,{srcPage:d,multiZoneDraftMode:!1});if(!e)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:g,deploymentId:v,params:w,nextConfig:x,parsedUrl:y,isDraftMode:z,prerenderManifest:A,routerServerContext:B,isOnDemandRevalidate:C,revalidateOnlyGenerated:D,resolvedPathname:E,clientReferenceManifest:F,serverActionsManifest:G}=e,H=(0,k.normalizeAppPath)(d),I=!!(A.dynamicRoutes[H]||A.routes[E]),J=async()=>((null==B?void 0:B.render404)?await B.render404(a,b,y,!1):b.end("This page could not be found"),null);if(I&&!z){let a=!!A.routes[E],b=A.dynamicRoutes[H];if(b&&!1===b.fallback&&!a){if(x.adapterPath)return await J();throw new t.NoFallbackError}}let K=null;!I||T.isDev||z||(K="/index"===(K=E)?"/":K);let L=!0===T.isDev||!I,M=I&&!L;G&&F&&(0,j.setManifestsSingleton)({page:d,clientReferenceManifest:F,serverActionsManifest:G});let N=a.method||"GET",O=(0,i.getTracer)(),P=O.getActiveScopeSpan(),Q=!!(null==B?void 0:B.isWrappedByNextServer),R=!!(0,h.getRequestMeta)(a,"minimalMode"),S=(0,h.getRequestMeta)(a,"incrementalCache")||await T.getIncrementalCache(a,x,A,R);null==S||S.resetRequestCache(),globalThis.__incrementalCache=S;let U={params:w,previewProps:A.preview,renderOpts:{experimental:{authInterrupts:!!x.experimental.authInterrupts},cacheComponents:!!x.cacheComponents,supportsDynamicResponse:L,incrementalCache:S,cacheLifeProfiles:x.cacheLife,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0,onInstrumentationRequestError:(b,c,d,e)=>T.onRequestError(a,b,d,e,B)},sharedContext:{buildId:g,deploymentId:v}},V=new l.NodeNextRequest(a),W=new l.NodeNextResponse(b),X=m.NextRequestAdapter.fromNodeNextRequest(V,(0,m.signalFromNodeResponse)(b));try{let e,g=async a=>T.handle(X,U).finally(()=>{if(!a)return;a.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let c=O.getRootSpanAttributes();if(!c)return;if(c.get("next.span_type")!==n.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${c.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let f=c.get("next.route");if(f){let b=`${N} ${f}`;a.setAttributes({"next.route":f,"http.route":f,"next.span_name":b}),a.updateName(b),e&&e!==a&&(e.setAttribute("http.route",f),e.updateName(b))}else a.updateName(`${N} ${d}`)}),h=async e=>{var h,i;let j=async({previousCacheEntry:f})=>{try{if(!R&&C&&D&&!f)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let d=await g(e);a.fetchMetrics=U.renderOpts.fetchMetrics;let h=U.renderOpts.pendingWaitUntil;h&&c.waitUntil&&(c.waitUntil(h),h=void 0);let i=U.renderOpts.collectedTags;if(!I)return await (0,p.I)(V,W,d,U.renderOpts.pendingWaitUntil),null;{let a=await d.blob(),b=(0,q.toNodeOutgoingHttpHeaders)(d.headers);i&&(b[s.NEXT_CACHE_TAGS_HEADER]=i),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==U.renderOpts.collectedRevalidate&&!(U.renderOpts.collectedRevalidate>=s.INFINITE_CACHE)&&U.renderOpts.collectedRevalidate,e=void 0===U.renderOpts.collectedExpire||U.renderOpts.collectedExpire>=s.INFINITE_CACHE?void 0:U.renderOpts.collectedExpire;return{value:{kind:u.CachedRouteKind.APP_ROUTE,status:d.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:e}}}}catch(b){throw(null==f?void 0:f.isStale)&&await T.onRequestError(a,b,{routerKind:"App Router",routePath:d,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:M,isOnDemandRevalidate:C})},!1,B),b}},k=await T.handleResponse({req:a,nextConfig:x,cacheKey:K,routeKind:f.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:A,isRoutePPREnabled:!1,isOnDemandRevalidate:C,revalidateOnlyGenerated:D,responseGenerator:j,waitUntil:c.waitUntil,isMinimalMode:R});if(!I)return null;if((null==k||null==(h=k.value)?void 0:h.kind)!==u.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==k||null==(i=k.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});R||b.setHeader("x-nextjs-cache",C?"REVALIDATED":k.isMiss?"MISS":k.isStale?"STALE":"HIT"),z&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let l=(0,q.fromNodeOutgoingHttpHeaders)(k.value.headers);return R&&I||l.delete(s.NEXT_CACHE_TAGS_HEADER),!k.cacheControl||b.getHeader("Cache-Control")||l.get("Cache-Control")||l.set("Cache-Control",(0,r.getCacheControlHeader)(k.cacheControl)),await (0,p.I)(V,W,new Response(k.value.body,{headers:l,status:k.value.status||200})),null};Q&&P?await h(P):(e=O.getActiveScopeSpan(),await O.withPropagatedContext(a.headers,()=>O.trace(n.BaseServerSpan.handleRequest,{spanName:`${N} ${d}`,kind:i.SpanKind.SERVER,attributes:{"http.method":N,"http.target":a.url}},h),void 0,!Q))}catch(b){if(b instanceof t.NoFallbackError||await T.onRequestError(a,b,{routerKind:"App Router",routePath:H,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:M,isOnDemandRevalidate:C})},!1,B),I)throw b;return await (0,p.I)(V,W,new Response(null,{status:500})),null}}},10846:a=>{a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},19121:a=>{a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},29021:a=>{a.exports=require("fs")},29294:a=>{a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},31421:a=>{a.exports=require("node:child_process")},33873:a=>{a.exports=require("path")},37067:a=>{a.exports=require("node:http")},38522:a=>{a.exports=require("node:zlib")},44870:a=>{a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},46466:a=>{a.exports=require("node:stream/promises")},48161:a=>{a.exports=require("node:os")},51455:a=>{a.exports=require("node:fs/promises")},55511:a=>{a.exports=require("crypto")},57075:a=>{a.exports=require("node:stream")},63033:a=>{a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},73024:a=>{a.exports=require("node:fs")},74075:a=>{a.exports=require("zlib")},76760:a=>{a.exports=require("node:path")},77030:a=>{a.exports=require("node:net")},77598:a=>{a.exports=require("node:crypto")},78474:a=>{a.exports=require("node:events")},81959:(a,b,c)=>{c.r(b),c.d(b,{"001f94d0bd03f690900ff275fc7bcb81f9d6db5da1":()=>e.Vr,"0033b35723a2f0e68a64e154c1ad7fc143aaa54614":()=>e.lC,"0049165d407101d40a5d00da538a6d71ff6c0cf759":()=>e.VH,"00582b241ca559456a57429e2961de086d53d90623":()=>e.ts,"006c909a46b7f43ab34b0f5c528a5599c55483d3e2":()=>e.LU,"006f70fc5235026e74aa57f7c74fa2a41f520679a0":()=>e.S8,"0078eee6c6a712c6aea28f9bd404d07bd6c8f06300":()=>d.approvePlan,"009318875523f1f33fd010f80e967c123eb9ad62eb":()=>e.nl,"0096ea98aaf52e1293c52c7b4d3da81953f9f42a40":()=>d.groomBacklog,"009a9da1bd0fa61f361f014358ef9b43180692d144":()=>e.Hi,"00b3ada168785f05d91953e196ff9e629394c71f6c":()=>e.zO,"00bcafd8a8e2107bb2939a5e353db5bcf1865921ef":()=>e.Jw,"00c63dd53781d20430fbd0b1b5fdbf72cd4383e759":()=>e.Ac,"00df3ceaa88bb6e2855dfd878b7de60ec140591e32":()=>e.V$,"00e67cf87dadcbcbdf45049da9523da454401958c9":()=>d.requestPlanChanges,"00e8d27c5632be19ba82275be7daab4ca11ac30265":()=>e.Gh,"00f1167df722f92286917fa4940a672407b1c19f95":()=>e.Uw,"00f4b1765195f72a7b12d848bc3a2350f7a0f8cdae":()=>e.kb,"40197202b1575054bdc6f788583699228c62e9b638":()=>d.setAuto247,"401c666cf084eddc0dffbc92690b8485f6bb35bb76":()=>e.I2,"40204beb18ac2a6dd649bd6bac3cd3824475e9bf62":()=>d.startNewWork,"405a19722e7131aeebc719ebaf12c74a1682c69a11":()=>e.az,"405bbb6298711330c0a007ae10eea08b34e1223ca1":()=>e.cm,"405ed4651f47318a4181b8770112f7bc71df0e57a2":()=>d.approveSpec,"40612bb48c7b9899000f07b3256b6a217f9f14c163":()=>d.rejectSpec,"407439429438ecc96bc01ec5c7cfd82b32a53b59b7":()=>e.L0,"407c663df5abe57a45597e626aefe95df23e6946a9":()=>e.Cp,"40ac43be66059aad8695fa35343af7a907394ec850":()=>d.approveIssue,"40b760c8302cb242aa549e9abff4587294fabab477":()=>e.m,"40c679f63e25b10357f3d3231817fcc35b1db6ddfb":()=>f.mg,"40d83b0317effac5a2687de461e5308315108cb910":()=>d.planFromConversation,"40d94739ab3473c06b3faaae4456ea491b787f8ad2":()=>d.generatePlan,"40e28ba0dfac6e7e214062a8b673ca7b4b44c5c87d":()=>e.wp,"40e795413ad61f4779ccdba157080b914a9c8adcd4":()=>d.advanceIssue,"40f88afb175b09ac00d2f0cc2bb7fffb401c667a94":()=>d.rejectIssue,"40fd12491a5c555de5b0eaaa9e4b0f3097e4967851":()=>e.ju,"603c43bef66e43b540b8445b0c3fe4ee8e746a3329":()=>g.k,"603c9b63894b12bccde4b46ffa96519c81bca136a3":()=>d.groomBacklogFor,"60546c3703874a3d7415fa213900e30f539ca5b9d0":()=>f.eA,"6069d55c3f4e1783abfd4728ea381d7c4de7169b17":()=>g.I,"70c9946ce7b4d59b33995bd699fa6d230d232d09ac":()=>f.LV});var d=c(12529),e=c(15878),f=c(89258),g=c(87980)},86439:a=>{a.exports=require("next/dist/shared/lib/no-fallback-error.external")},87550:a=>{a.exports=require("better-sqlite3")}};var b=require("../../../../webpack-runtime.js");b.C(a);var c=b.X(0,[5911,5361,6309,4679,7474,5557,6585,1243,912,415,77,5878,8134,6807,2323,1033,907],()=>b(b.s=4326));module.exports=c})();
|
|
1
|
+
"use strict";(()=>{var a={};a.id=2835,a.ids=[2835],a.modules={261:a=>{a.exports=require("next/dist/shared/lib/router/utils/app-paths")},3295:a=>{a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},4326:(a,b,c)=>{c.r(b),c.d(b,{handler:()=>Y,patchFetch:()=>X,routeModule:()=>T,serverHooks:()=>W,workAsyncStorage:()=>U,workUnitAsyncStorage:()=>V});var d={};c.r(d),c.d(d,{GET:()=>R,POST:()=>S,dynamic:()=>M,runtime:()=>L});var e=c(16633),f=c(35526),g=c(80445),h=c(49421),i=c(68279),j=c(22827),k=c(261),l=c(45469),m=c(19923),n=c(17653),o=c(70486),p=c(49496),q=c(16674),r=c(11264),s=c(7001),t=c(86439),u=c(4535),v=c(91736),w=c(77598),x=c(50730),y=c(12940),z=c(76561),A=c(2148);async function B(a,b){let c=/^Bearer\s+(cn_[A-Za-z0-9_-]{8,})$/.exec((a??"").trim());if(!c)return{ok:!1,status:401,error:"missing or malformed bearer token"};let d=(0,w.createHash)("sha256").update(c[1]).digest("hex"),[e]=await y.db.select().from(z.personalAccessToken).where((0,x.eq)(z.personalAccessToken.tokenHash,d));if(!e)return{ok:!1,status:401,error:"invalid token"};try{await y.db.update(z.personalAccessToken).set({lastUsedAt:new Date}).where((0,x.eq)(z.personalAccessToken.id,e.id))}catch{}let f=await (0,A.$x)(e.userId,b??void 0);if(!f)return{ok:!1,status:404,error:"no organization for this token's user"};if(f.archived)return{ok:!1,status:409,error:"organization is archived"};let g=await (0,A.K4)(f.id);return g?{ok:!0,auth:{userId:e.userId,tokenId:e.id,scope:e.scope,org:f,workspace:g}}:{ok:!1,status:404,error:"no workspace for the organization"}}async function C(a){let[b,c,d,[e]]=await Promise.all([y.db.select({status:z.goal.status}).from(z.goal).where((0,x.eq)(z.goal.workspaceId,a.id)),y.db.select({col:z.issue.col}).from(z.issue).where((0,x.eq)(z.issue.workspaceId,a.id)),y.db.select({col:z.task.col}).from(z.task).where((0,x.eq)(z.task.workspaceId,a.id)),y.db.select().from(z.plan).where((0,x.eq)(z.plan.workspaceId,a.id))]),f=a=>a.reduce((a,b)=>(a[b.col]=(a[b.col]??0)+1,a),{});return{workspace:{id:a.id,name:a.name,slug:a.slug},goals:{active:b.filter(a=>"active"===a.status).length,total:b.length},issues:{open:c.filter(a=>"done"!==a.col).length,total:c.length,byCol:f(c)},tasks:{doing:d.filter(a=>"doing"===a.col).length,total:d.length,byCol:f(d)},plan:e?{approved:e.approved,auto247:e.auto247,stage:e.stage}:null}}async function D(a){return await y.db.select({id:z.goal.id,title:z.goal.title,status:z.goal.status,progress:z.goal.progress}).from(z.goal).where((0,x.eq)(z.goal.workspaceId,a))}async function E(a){return await y.db.select({id:z.issue.id,key:z.issue.key,title:z.issue.title,col:z.issue.col,prio:z.issue.prio,points:z.issue.points,moscow:z.issue.moscow,approved:z.issue.approved}).from(z.issue).where((0,x.eq)(z.issue.workspaceId,a))}async function F(a){return await y.db.select({id:z.task.id,key:z.task.key,title:z.task.title,col:z.task.col,prio:z.task.prio}).from(z.task).where((0,x.eq)(z.task.workspaceId,a))}async function G(a){return await y.db.select({id:z.spec.id,key:z.spec.key,title:z.spec.title,status:z.spec.status,approved:z.spec.approved}).from(z.spec).where((0,x.eq)(z.spec.workspaceId,a))}var H=c(87355),I=c(56425),J=c(15563),K=c(28134);let L="nodejs",M="force-dynamic",N=new Map,O=(a,b=200)=>v.NextResponse.json({ok:!0,data:a},{status:b}),P=(a,b)=>v.NextResponse.json({ok:!1,error:b},{status:a});async function Q(a,b,c){var d;let e,f,g=await B(a.headers.get("authorization"),a.headers.get("x-constella-org"));if(!g.ok)return P(g.status,g.error);let{auth:h}=g;if(d=h.tokenId,e=Date.now(),(f=(N.get(d)??[]).filter(a=>e-a<6e4)).push(e),N.set(d,f),f.length>120)return P(429,"rate limit exceeded (120 req/min)");let i=h.workspace,j=b.join("/"),k="write"===h.scope,l=()=>k?null:P(403,"this token has read scope; a write-scope token is required");if("GET"===c)switch(j){case"":case"me":return O({user:h.userId,org:{id:h.org.id,name:h.org.name},workspace:{id:i.id,name:i.name,slug:i.slug},scope:h.scope});case"status":return O(await C(i));case"review":return O({text:await (0,H.mt)(i)});case"goals":return O(await D(i.id));case"issues":return O(await E(i.id));case"tasks":return O(await F(i.id));case"specs":return O(await G(i.id));case"kb":{let b=a.nextUrl.searchParams.get("q")??"";if(!b.trim())return P(400,"missing ?q=");let c=await (0,K.ed)(h.org.id,b);return O({text:c.text,sources:c.sources})}default:return P(404,`unknown GET /${j}`)}let m=await a.json().catch(()=>({}));switch(j){case"plan/approve":return l()??O(await (0,H.wz)(h.org.id,i));case"plan/reject":{let a=l();if(a)return a;return await (0,H.TR)(i.id,"string"==typeof m.reason?m.reason:void 0),O({rejected:!0})}case"execution":{let a=l();if(a)return a;let b=!1!==m.on;return await (0,H.mL)(i.id,b),O({auto247:b})}case"work":{let a=l();if(a)return a;let b="string"==typeof m.brief?m.brief:"",c="string"==typeof m.title?m.title:void 0,d=await (0,J.startNewWorkFor)(h.org.id,i,{brief:b,title:c});return d.ok?O(d):P(400,d.error??"could not start work")}case"kb":{let a="string"==typeof m.q?m.q:"";if(!a.trim())return P(400,"missing body.q");let b=await (0,K.ed)(h.org.id,a);return O({text:b.text,sources:b.sources})}default:if("goals"===b[0]&&3===b.length){let a=l();if(a)return a;let c=b[1];if("cancel"===b[2]){let a=await (0,I.NF)(i.id,c);return a.ok?O(a):P(404,"goal not found")}if("archive"===b[2]){let a=await (0,I.PT)(h.org.id,i.id,c);return a.ok?O(a):P(404,"goal not found")}}return P(404,`unknown POST /${j}`)}}async function R(a,b){try{let{path:c}=await b.params;return await Q(a,c??[],"GET")}catch(a){return P(500,String(a instanceof Error?a.message:a))}}async function S(a,b){try{let{path:c}=await b.params;return await Q(a,c??[],"POST")}catch(a){return P(500,String(a instanceof Error?a.message:a))}}let T=new e.AppRouteRouteModule({definition:{kind:f.RouteKind.APP_ROUTE,page:"/api/v1/[[...path]]/route",pathname:"/api/v1/[[...path]]",filename:"route",bundlePath:"app/api/v1/[[...path]]/route"},distDir:".next",relativeProjectDir:"",resolvedPagePath:"C:\\Users\\Usuario\\Documents\\constella\\src\\app\\api\\v1\\[[...path]]\\route.ts",nextConfigOutput:"",userland:d,...{}}),{workAsyncStorage:U,workUnitAsyncStorage:V,serverHooks:W}=T;function X(){return(0,g.patchFetch)({workAsyncStorage:U,workUnitAsyncStorage:V})}async function Y(a,b,c){c.requestMeta&&(0,h.setRequestMeta)(a,c.requestMeta),T.isDev&&(0,h.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let d="/api/v1/[[...path]]/route";"/index"===d&&(d="/");let e=await T.prepare(a,b,{srcPage:d,multiZoneDraftMode:!1});if(!e)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:g,deploymentId:v,params:w,nextConfig:x,parsedUrl:y,isDraftMode:z,prerenderManifest:A,routerServerContext:B,isOnDemandRevalidate:C,revalidateOnlyGenerated:D,resolvedPathname:E,clientReferenceManifest:F,serverActionsManifest:G}=e,H=(0,k.normalizeAppPath)(d),I=!!(A.dynamicRoutes[H]||A.routes[E]),J=async()=>((null==B?void 0:B.render404)?await B.render404(a,b,y,!1):b.end("This page could not be found"),null);if(I&&!z){let a=!!A.routes[E],b=A.dynamicRoutes[H];if(b&&!1===b.fallback&&!a){if(x.adapterPath)return await J();throw new t.NoFallbackError}}let K=null;!I||T.isDev||z||(K="/index"===(K=E)?"/":K);let L=!0===T.isDev||!I,M=I&&!L;G&&F&&(0,j.setManifestsSingleton)({page:d,clientReferenceManifest:F,serverActionsManifest:G});let N=a.method||"GET",O=(0,i.getTracer)(),P=O.getActiveScopeSpan(),Q=!!(null==B?void 0:B.isWrappedByNextServer),R=!!(0,h.getRequestMeta)(a,"minimalMode"),S=(0,h.getRequestMeta)(a,"incrementalCache")||await T.getIncrementalCache(a,x,A,R);null==S||S.resetRequestCache(),globalThis.__incrementalCache=S;let U={params:w,previewProps:A.preview,renderOpts:{experimental:{authInterrupts:!!x.experimental.authInterrupts},cacheComponents:!!x.cacheComponents,supportsDynamicResponse:L,incrementalCache:S,cacheLifeProfiles:x.cacheLife,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0,onInstrumentationRequestError:(b,c,d,e)=>T.onRequestError(a,b,d,e,B)},sharedContext:{buildId:g,deploymentId:v}},V=new l.NodeNextRequest(a),W=new l.NodeNextResponse(b),X=m.NextRequestAdapter.fromNodeNextRequest(V,(0,m.signalFromNodeResponse)(b));try{let e,g=async a=>T.handle(X,U).finally(()=>{if(!a)return;a.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let c=O.getRootSpanAttributes();if(!c)return;if(c.get("next.span_type")!==n.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${c.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let f=c.get("next.route");if(f){let b=`${N} ${f}`;a.setAttributes({"next.route":f,"http.route":f,"next.span_name":b}),a.updateName(b),e&&e!==a&&(e.setAttribute("http.route",f),e.updateName(b))}else a.updateName(`${N} ${d}`)}),h=async e=>{var h,i;let j=async({previousCacheEntry:f})=>{try{if(!R&&C&&D&&!f)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let d=await g(e);a.fetchMetrics=U.renderOpts.fetchMetrics;let h=U.renderOpts.pendingWaitUntil;h&&c.waitUntil&&(c.waitUntil(h),h=void 0);let i=U.renderOpts.collectedTags;if(!I)return await (0,p.I)(V,W,d,U.renderOpts.pendingWaitUntil),null;{let a=await d.blob(),b=(0,q.toNodeOutgoingHttpHeaders)(d.headers);i&&(b[s.NEXT_CACHE_TAGS_HEADER]=i),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==U.renderOpts.collectedRevalidate&&!(U.renderOpts.collectedRevalidate>=s.INFINITE_CACHE)&&U.renderOpts.collectedRevalidate,e=void 0===U.renderOpts.collectedExpire||U.renderOpts.collectedExpire>=s.INFINITE_CACHE?void 0:U.renderOpts.collectedExpire;return{value:{kind:u.CachedRouteKind.APP_ROUTE,status:d.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:e}}}}catch(b){throw(null==f?void 0:f.isStale)&&await T.onRequestError(a,b,{routerKind:"App Router",routePath:d,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:M,isOnDemandRevalidate:C})},!1,B),b}},k=await T.handleResponse({req:a,nextConfig:x,cacheKey:K,routeKind:f.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:A,isRoutePPREnabled:!1,isOnDemandRevalidate:C,revalidateOnlyGenerated:D,responseGenerator:j,waitUntil:c.waitUntil,isMinimalMode:R});if(!I)return null;if((null==k||null==(h=k.value)?void 0:h.kind)!==u.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==k||null==(i=k.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});R||b.setHeader("x-nextjs-cache",C?"REVALIDATED":k.isMiss?"MISS":k.isStale?"STALE":"HIT"),z&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let l=(0,q.fromNodeOutgoingHttpHeaders)(k.value.headers);return R&&I||l.delete(s.NEXT_CACHE_TAGS_HEADER),!k.cacheControl||b.getHeader("Cache-Control")||l.get("Cache-Control")||l.set("Cache-Control",(0,r.getCacheControlHeader)(k.cacheControl)),await (0,p.I)(V,W,new Response(k.value.body,{headers:l,status:k.value.status||200})),null};Q&&P?await h(P):(e=O.getActiveScopeSpan(),await O.withPropagatedContext(a.headers,()=>O.trace(n.BaseServerSpan.handleRequest,{spanName:`${N} ${d}`,kind:i.SpanKind.SERVER,attributes:{"http.method":N,"http.target":a.url}},h),void 0,!Q))}catch(b){if(b instanceof t.NoFallbackError||await T.onRequestError(a,b,{routerKind:"App Router",routePath:H,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:M,isOnDemandRevalidate:C})},!1,B),I)throw b;return await (0,p.I)(V,W,new Response(null,{status:500})),null}}},10846:a=>{a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},19121:a=>{a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},29021:a=>{a.exports=require("fs")},29294:a=>{a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},31421:a=>{a.exports=require("node:child_process")},33873:a=>{a.exports=require("path")},37067:a=>{a.exports=require("node:http")},38522:a=>{a.exports=require("node:zlib")},44870:a=>{a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},46466:a=>{a.exports=require("node:stream/promises")},48161:a=>{a.exports=require("node:os")},51455:a=>{a.exports=require("node:fs/promises")},55511:a=>{a.exports=require("crypto")},55520:(a,b,c)=>{c.r(b),c.d(b,{"001d16694995abe26f4f19abcd2afbcb14baa2f54d":()=>e.Uw,"0023c2d2a7bab3fa7022c78ac6d614acd1ba769a55":()=>d.groomBacklog,"002ad4a53b99266d836bd498f3f9c9f93d7af939fb":()=>e.V$,"002b210d490bfa99b1e3b3dcf5278a1a34186c9de2":()=>e.LU,"002e86b903268c109648432c9929f609e8e1cd431e":()=>e.Vr,"0034909a2352aaa8e86a3701ef7b3f8e84b0189b2a":()=>e.ts,"0036e0e3aed32ebc221551eb790eeac7654c2f9ead":()=>e.Jw,"003d491d5a9f1d5aa2c1e34df023e249b1e6a4d27b":()=>d.requestPlanChanges,"004dad502111825011e799dc5f3456eb391617c0ab":()=>e.nl,"006e3862d33640a4d6587e0d999584ac5db40cb1be":()=>d.approvePlan,"00a76b217eeb7097c4ba372a728d57bbc66adc2cbe":()=>e.Ac,"00af40297858927e400bb6f4df39523802b9a1169d":()=>e.lC,"00b7c531efd4fb1ca1ffa96d784f08d7e41d4537a5":()=>e.Hi,"00be1b609c8b1d4ee869da2a24669791bf714540cc":()=>e.kb,"00d65aadb2b093b5e3316b26e8214c8dbec693d3d8":()=>e.zO,"00d755a9414ab910fb9707b07cb2bc669cbb52768c":()=>e.Gh,"00fdd067a717b4bec952b6217c776dae025cfc6b19":()=>e.S8,"00ffc53f6108023783cfde05ee215eab4da4b0ffee":()=>e.VH,"40102b8d3d6f3d24e3eb5dd445242945b75511d595":()=>d.approveIssue,"401c5051bc353b84413b009dd51f516148c91d0a6c":()=>e.az,"40242f4eaff43df72cf01e4c58d529b352b0844451":()=>d.rejectIssue,"402bf9d698c935f90139857c5ee816f0925b2f4c85":()=>e.I2,"4042f30cd92a4ce15b57cdf3bb844ed17b123375bb":()=>d.startNewWork,"4046fa12571497a64e108e9b450e01044d1952fc4c":()=>d.planFromConversation,"405024f72692c33a38c13ce62dedfd1fc4772cc7bb":()=>e.Cp,"40506681298deecf587a22a58f89b00187526d839e":()=>d.rejectSpec,"405625f8452c4f8ddc1d39f88e1d25d620eba1f354":()=>d.advanceIssue,"40795a2cee09e53a3192bb4582588b29bedfbbbfd3":()=>d.approveSpec,"4093a638bbf25c217b2dcd7a60e3863af53581f4f6":()=>e.ju,"40ad11a33262da1899a6826210e521724c5db5ab0e":()=>e.m,"40c7e47e1cc2d9177d758ceeac9062e7f258e5798e":()=>e.wp,"40c96648818d9d4ec130d567d4e3b3deb7d8724ae9":()=>f.mg,"40da20117d679d6fda817d86bc7ba74c80844d42bf":()=>d.setAuto247,"40dd3790d27215bc81b13a7b70b0dca9fdc9e28db9":()=>e.L0,"40ec7dc7ac14af3c16cacc0dd7501b8b23bd60c7f5":()=>e.cm,"40f40927761bc3b2be5ac04bdc8f6b2ea0a4cef554":()=>d.generatePlan,"600adfc269778741217c31377d7e0b633650bc2ec9":()=>g.k,"60a3d44b282c3fc785b97ee6983137620eb7272345":()=>f.eA,"60a408a3a21b681b16b206149fd9e0790a4304056e":()=>g.I,"60c5c511b8ddf434edb4df1dd8c7b74962fc2cff88":()=>d.groomBacklogFor,"70fc54beaa8893b4532bcbebbdd236a4e938781544":()=>f.LV});var d=c(12529),e=c(15878),f=c(89258),g=c(87980)},57075:a=>{a.exports=require("node:stream")},63033:a=>{a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},73024:a=>{a.exports=require("node:fs")},74075:a=>{a.exports=require("zlib")},76760:a=>{a.exports=require("node:path")},77030:a=>{a.exports=require("node:net")},77598:a=>{a.exports=require("node:crypto")},78474:a=>{a.exports=require("node:events")},86439:a=>{a.exports=require("next/dist/shared/lib/no-fallback-error.external")},87550:a=>{a.exports=require("better-sqlite3")}};var b=require("../../../../webpack-runtime.js");b.C(a);var c=b.X(0,[5911,5361,6309,4679,7474,5557,6585,1243,912,415,77,5878,8134,6807,2323,1033,907],()=>b(b.s=4326));module.exports=c})();
|
|
@@ -10,5 +10,5 @@ DETECTED CONTEXT (domain + visual intent): ${c.slice(0,16).join(", ")}. Ground t
|
|
|
10
10
|
MOST RELEVANT seeded skills for THIS request — READ the matching \`.claude/skills/<name>.md\` FIRST before building:
|
|
11
11
|
${d.map(a=>`- ${a.name}: ${a.description}`).join("\n")}`:""].filter(Boolean).join("\n")}let n=".claude/design-gate.json";function o(a){let b=(0,d.sL)(a,n);if(!b)return{};try{return JSON.parse(b)||{}}catch{return{}}}function p(a,b){try{(0,d.dx)(a,n,JSON.stringify(b,null,2))}catch{}}function q(a){p(a,{skip:!1})}let r=".claude/design-promoted.json";function s(a){let b=(0,d.sL)(a,r);if(!b)return{};try{return JSON.parse(b)||{}}catch{return{}}}function t(a,b){try{(0,d.dx)(a,r,JSON.stringify(b,null,2))}catch{}}function u(a){let b=a.designMockFiles.some(a=>/design-mock\/screens\/.+\.html?$/i.test(a));return!a.approved&&!b}let v=/\b(tela|telas|screen|screens|p[áa]gina|pagina|page|pages|web|webapp|web-?app|website|site|app|apps|aplicativo|aplica[çc][ãa]o|spa|single-?page|pwa|ui|ux|interface|frontend|front-?end|layout|component|componente|design|visual|dashboard|form|formul[áa]rio|formulario|bot[ãa]o|botao|button|modal|menu|nav|navbar|sidebar|card|landing|hero|gallery|galeria|theme|tema|palette|paleta|typography|tipografia|style|estilo|css|html|responsive|responsiv[oa]|mobile|desktop|tablet|anima[çc][ãa]o|animation|microintera[çc][õo]es|wizard|onboarding|checkout|perfil|profile|settings|configura[çc][õo]es|view|views|render)\b/i;function w(a){return!!a&&v.test(a)}let x=/\b(api|rest|restful|graphql|grpc|cli|command[\s-]?line|terminal|backend|back-?end|micro-?service|microservices|service|library|\bsdk\b|daemon|cron|scheduler|pipeline|etl|database|\bdb\b|infra|infrastructure|devops|webhook|message[\s-]?queue|\bqueue\b|worker|scraper|crawler|\bbot\b|middleware|server[\s-]?side|protocol|compiler|parser|scraping)\b/i;function y(a){return!!a&&x.test(a)&&!w(a)}},21046:(a,b,c)=>{c.d(b,{j:()=>i});var d=c(77598),e=c(50730),f=c(12940),g=c(76561),h=c(28134);async function i(a,b){if(b.text.trim()){try{await f.db.insert(g.decision).values({id:(0,d.randomUUID)(),workspaceId:a,text:b.text.slice(0,1e3),by:b.by??"",source:b.source??"",refKey:b.refKey??"",rationale:b.rationale??"",goalId:b.goalId??null,createdAt:new Date})}catch(a){console.error("[decision] log failed:",a)}(async()=>{try{let[c]=await f.db.select({orgId:g.workspace.orgId}).from(g.workspace).where((0,e.eq)(g.workspace.id,a));c?.orgId&&await (0,h.ru)(c.orgId,[{type:"decision",title:b.text.slice(0,120),summary:b.text.slice(0,1e3),body:b.rationale??"",goalId:b.goalId??null,agentHandle:b.by??"",sourceKind:"decision",sourceRef:b.refKey??""}])}catch{}})()}}},36548:(a,b,c)=>{Object.defineProperty(b,"A",{enumerable:!0,get:function(){return d.registerServerReference}});let d=c(97879)},52052:(a,b,c)=>{c.d(b,{lM:()=>j,s$:()=>k});var d=c(77598),e=c(50730),f=c(12940),g=c(76561),h=c(66408);function i(a){let b=[];for(let c of a.split("\n")){let a=c.match(/^\s*-\s*\[([ xX])\]\s+(.+)$/);a&&b.push({text:a[2].trim().slice(0,200),done:"x"===a[1].toLowerCase()})}return b.slice(0,12)}async function j(a,b,c){let h=i(c);if(!h.length)return;let j=await f.db.select().from(g.taskStep).where((0,e.eq)(g.taskStep.taskId,b)),k=new Map(j.map(a=>[a.text.toLowerCase(),a])),l=j.length;for(let c of h){let h=k.get(c.text.toLowerCase());h?h.done!==c.done&&await f.db.update(g.taskStep).set({done:c.done}).where((0,e.eq)(g.taskStep.id,h.id)):await f.db.insert(g.taskStep).values({id:(0,d.randomUUID)(),workspaceId:a,taskId:b,text:c.text,done:c.done,ord:l++})}}async function k(a,b){let c=await f.db.select().from(g.issue).where((0,e.eq)(g.issue.workspaceId,b)),j=Object.fromEntries((await f.db.select().from(g.spec).where((0,e.eq)(g.spec.workspaceId,b))).map(a=>[a.id,a.summary])),k=new Set((await f.db.select({issueId:g.task.issueId}).from(g.task).where((0,e.eq)(g.task.workspaceId,b))).map(a=>a.issueId).filter(Boolean)),m=0;for(let e of c){if(k.has(e.id))continue;let c=(0,h.sL)(a,`issues/${e.key}.md`)??"",l=c.match(/^\*\*Skills to consult:\*\*\s*(.+)$/m)?.[1]?.trim(),n=l?`
|
|
12
12
|
|
|
13
|
-
Consult these skills BEFORE building (read the matching .claude/skills/<name>.md): ${l}.`:"",o=(((e.specId?j[e.specId]:"")||c).slice(0,2e3)+n).slice(0,2200),p=(0,d.randomUUID)();await f.db.insert(g.task).values({id:p,workspaceId:b,issueId:e.id,goalId:e.goalId,key:e.key,title:e.title,description:o,col:"todo",prio:e.prio,assigneeId:e.assigneeId,createdBy:"agent"});let q=0;for(let a of i(c))await f.db.insert(g.taskStep).values({id:(0,d.randomUUID)(),workspaceId:b,taskId:p,text:a.text,done:a.done,ord:q++});m++}return await l(b),m}async function l(a){let[b]=await f.db.select().from(g.agent).where((0,e.Uo)((0,e.eq)(g.agent.workspaceId,a),(0,e.eq)(g.agent.handle,"barbara"))),c=b??(await f.db.select().from(g.agent).where((0,e.Uo)((0,e.eq)(g.agent.workspaceId,a),(0,e.mj)(g.agent.role,"%Docs%"))))[0];!c||(await f.db.select({id:g.task.id}).from(g.task).where((0,e.Uo)((0,e.eq)(g.task.workspaceId,a),(0,e.eq)(g.task.key,"DOCS-1")))).length||await f.db.insert(g.task).values({id:(0,d.randomUUID)(),workspaceId:a,key:"DOCS-1",title:"Document the project — update DOCS/ to match what was built",description:"Read the real code, specs and structure in this workspace, then write/refresh accurate documentation under DOCS/ (architecture, API, usage, how to run). Replace the scaffold templates with real content grounded in the actual files. Do not invent features.",col:"todo",prio:"low",assigneeId:c.id,createdBy:"agent"})}},66263:(a,b,c)=>{c.d(b,{a:()=>h,r:()=>g});var d=c(78474);let e=globalThis,f=e.__constellaBus??(e.__constellaBus=new d.EventEmitter);function g(a){f.emit("wake",a)}function h(a,b){let c=c=>{c===a&&b()};return f.on("wake",c),()=>{f.off("wake",c)}}f.setMaxListeners(64)},69539:(a,b,c)=>{c.d(b,{dp:()=>o,j2:()=>p});var d=c(20140),e=c(75797),f=c(59814),g=c(12940),h=c(76561);let i=process.env.BETTER_AUTH_URL??"http://localhost:3000";function j(a){return a?.split(",")[0]?.trim()||null}function k(a){if(!a)return null;try{return new URL(a).origin}catch{return null}}function l(a,b){let c=k(b?.trim());c&&a.add(c)}let m=(()=>{let a=new Set;for(let b of[i,process.env.BETTER_AUTH_URL,process.env.NEXT_PUBLIC_BETTER_AUTH_URL,...(process.env.CONSTELLA_TRUSTED_ORIGINS??"").split(",")])l(a,b);return[...a]})();process.env.BETTER_AUTH_SECRET||console.error("[auth] FATAL: BETTER_AUTH_SECRET is required (sessions would be forgeable). Set it in your environment.");let n={};process.env.GITHUB_CLIENT_ID&&process.env.GITHUB_CLIENT_SECRET&&(n.github={clientId:process.env.GITHUB_CLIENT_ID,clientSecret:process.env.GITHUB_CLIENT_SECRET,scope:["repo","read:user"]}),process.env.GOOGLE_CLIENT_ID&&process.env.GOOGLE_CLIENT_SECRET&&(n.google={clientId:process.env.GOOGLE_CLIENT_ID,clientSecret:process.env.GOOGLE_CLIENT_SECRET});let o=Object.keys(n),p=(0,d.l)({baseURL:i,trustedOrigins:function(a){let b=new Set(m);l(b,a?.url);let c=function(a){let b=a?.headers,c=j(b?.get("x-forwarded-host"))??j(b?.get("host"));if(!c)return null;let d=(j(b?.get("x-forwarded-proto"))??(i.startsWith("https://")?"https":"http")).replace(/:$/,"");return/^[a-z][a-z0-9+.-]*$/i.test(d)?k(`${d}://${c}`):null}(a);return c&&b.add(c),[...b]},secret:process.env.BETTER_AUTH_SECRET,database:(0,e.y)(g.db,{provider:"sqlite",schema:{user:h.user,session:h.session,account:h.account,verification:h.verification,twoFactor:h.twoFactor}}),emailAndPassword:{enabled:!0,autoSignIn:!0,requireEmailVerification:!1},socialProviders:n,account:{accountLinking:{enabled:!0,trustedProviders:["github","google"]}},session:{expiresIn:2592e3,additionalFields:{activeOrgId:{type:"string",required:!1}}},plugins:[(0,f.d)()],advanced:{useSecureCookies:i.startsWith("https://")}})},77680:(a,b,c)=>{c.d(b,{Y:()=>j,g:()=>i});var d=c(50730),e=c(76760),f=c(12940),g=c(76561),h=c(66408);async function i(a,b,c,d){let i=(0,h.HZ)(b);for(let b of d){if(!b.path)continue;let d=((0,e.isAbsolute)(b.path)?(0,e.relative)(i,b.path):b.path).replace(/\\/g,"/");if(!(!d||d.startsWith(".."))&&!(d.startsWith(".claude/")||d.startsWith("archives/")||d.startsWith(".git/")))try{await f.db.insert(g.goalFile).values({workspaceId:a,goalId:c,path:d,op:b.op}).onConflictDoUpdate({target:[g.goalFile.goalId,g.goalFile.path],set:{op:b.op,at:new Date}})}catch{}}}async function j(a,b){return(await f.db.select({path:g.goalFile.path}).from(g.goalFile).where((0,d.Uo)((0,d.eq)(g.goalFile.workspaceId,a),(0,d.eq)(g.goalFile.goalId,b)))).map(a=>a.path)}},87980:(a,b,c)=>{c.d(b,{I:()=>l,k:()=>m});var d=c(36548),e=c(77598),f=c(50730),g=c(23888),h=c(12940),i=c(76561),j=c(2148),k=c(66263);async function l(a,b){await h.db.insert(i.event).values({id:(0,e.randomUUID)(),workspaceId:a,runId:b.runId,channel:b.channel??"room",agentId:b.agentId??null,seq:Date.now(),kind:b.kind,target:(b.target??"").slice(0,500),detail:(b.detail??"").slice(0,8e3)}),(0,k.r)(a)}async function m(a,b=0){let{workspace:c}=await (0,j.nP)();return h.db.select().from(i.event).where((0,f.Uo)((0,f.eq)(i.event.workspaceId,c.id),(0,f.eq)(i.event.channel,a),(0,f.gt)(i.event.seq,b))).orderBy((0,g.Y)(i.event.seq)).limit(300)}(0,c(99688).D)([l,m]),(0,d.A)(l,"
|
|
13
|
+
Consult these skills BEFORE building (read the matching .claude/skills/<name>.md): ${l}.`:"",o=(((e.specId?j[e.specId]:"")||c).slice(0,2e3)+n).slice(0,2200),p=(0,d.randomUUID)();await f.db.insert(g.task).values({id:p,workspaceId:b,issueId:e.id,goalId:e.goalId,key:e.key,title:e.title,description:o,col:"todo",prio:e.prio,assigneeId:e.assigneeId,createdBy:"agent"});let q=0;for(let a of i(c))await f.db.insert(g.taskStep).values({id:(0,d.randomUUID)(),workspaceId:b,taskId:p,text:a.text,done:a.done,ord:q++});m++}return await l(b),m}async function l(a){let[b]=await f.db.select().from(g.agent).where((0,e.Uo)((0,e.eq)(g.agent.workspaceId,a),(0,e.eq)(g.agent.handle,"barbara"))),c=b??(await f.db.select().from(g.agent).where((0,e.Uo)((0,e.eq)(g.agent.workspaceId,a),(0,e.mj)(g.agent.role,"%Docs%"))))[0];!c||(await f.db.select({id:g.task.id}).from(g.task).where((0,e.Uo)((0,e.eq)(g.task.workspaceId,a),(0,e.eq)(g.task.key,"DOCS-1")))).length||await f.db.insert(g.task).values({id:(0,d.randomUUID)(),workspaceId:a,key:"DOCS-1",title:"Document the project — update DOCS/ to match what was built",description:"Read the real code, specs and structure in this workspace, then write/refresh accurate documentation under DOCS/ (architecture, API, usage, how to run). Replace the scaffold templates with real content grounded in the actual files. Do not invent features.",col:"todo",prio:"low",assigneeId:c.id,createdBy:"agent"})}},66263:(a,b,c)=>{c.d(b,{a:()=>h,r:()=>g});var d=c(78474);let e=globalThis,f=e.__constellaBus??(e.__constellaBus=new d.EventEmitter);function g(a){f.emit("wake",a)}function h(a,b){let c=c=>{c===a&&b()};return f.on("wake",c),()=>{f.off("wake",c)}}f.setMaxListeners(64)},69539:(a,b,c)=>{c.d(b,{dp:()=>o,j2:()=>p});var d=c(20140),e=c(75797),f=c(59814),g=c(12940),h=c(76561);let i=process.env.BETTER_AUTH_URL??"http://localhost:3000";function j(a){return a?.split(",")[0]?.trim()||null}function k(a){if(!a)return null;try{return new URL(a).origin}catch{return null}}function l(a,b){let c=k(b?.trim());c&&a.add(c)}let m=(()=>{let a=new Set;for(let b of[i,process.env.BETTER_AUTH_URL,process.env.NEXT_PUBLIC_BETTER_AUTH_URL,...(process.env.CONSTELLA_TRUSTED_ORIGINS??"").split(",")])l(a,b);return[...a]})();process.env.BETTER_AUTH_SECRET||console.error("[auth] FATAL: BETTER_AUTH_SECRET is required (sessions would be forgeable). Set it in your environment.");let n={};process.env.GITHUB_CLIENT_ID&&process.env.GITHUB_CLIENT_SECRET&&(n.github={clientId:process.env.GITHUB_CLIENT_ID,clientSecret:process.env.GITHUB_CLIENT_SECRET,scope:["repo","read:user"]}),process.env.GOOGLE_CLIENT_ID&&process.env.GOOGLE_CLIENT_SECRET&&(n.google={clientId:process.env.GOOGLE_CLIENT_ID,clientSecret:process.env.GOOGLE_CLIENT_SECRET});let o=Object.keys(n),p=(0,d.l)({baseURL:i,trustedOrigins:function(a){let b=new Set(m);l(b,a?.url);let c=function(a){let b=a?.headers,c=j(b?.get("x-forwarded-host"))??j(b?.get("host"));if(!c)return null;let d=(j(b?.get("x-forwarded-proto"))??(i.startsWith("https://")?"https":"http")).replace(/:$/,"");return/^[a-z][a-z0-9+.-]*$/i.test(d)?k(`${d}://${c}`):null}(a);return c&&b.add(c),[...b]},secret:process.env.BETTER_AUTH_SECRET,database:(0,e.y)(g.db,{provider:"sqlite",schema:{user:h.user,session:h.session,account:h.account,verification:h.verification,twoFactor:h.twoFactor}}),emailAndPassword:{enabled:!0,autoSignIn:!0,requireEmailVerification:!1},socialProviders:n,account:{accountLinking:{enabled:!0,trustedProviders:["github","google"]}},session:{expiresIn:2592e3,additionalFields:{activeOrgId:{type:"string",required:!1}}},plugins:[(0,f.d)()],advanced:{useSecureCookies:i.startsWith("https://")}})},77680:(a,b,c)=>{c.d(b,{Y:()=>j,g:()=>i});var d=c(50730),e=c(76760),f=c(12940),g=c(76561),h=c(66408);async function i(a,b,c,d){let i=(0,h.HZ)(b);for(let b of d){if(!b.path)continue;let d=((0,e.isAbsolute)(b.path)?(0,e.relative)(i,b.path):b.path).replace(/\\/g,"/");if(!(!d||d.startsWith(".."))&&!(d.startsWith(".claude/")||d.startsWith("archives/")||d.startsWith(".git/")))try{await f.db.insert(g.goalFile).values({workspaceId:a,goalId:c,path:d,op:b.op}).onConflictDoUpdate({target:[g.goalFile.goalId,g.goalFile.path],set:{op:b.op,at:new Date}})}catch{}}}async function j(a,b){return(await f.db.select({path:g.goalFile.path}).from(g.goalFile).where((0,d.Uo)((0,d.eq)(g.goalFile.workspaceId,a),(0,d.eq)(g.goalFile.goalId,b)))).map(a=>a.path)}},87980:(a,b,c)=>{c.d(b,{I:()=>l,k:()=>m});var d=c(36548),e=c(77598),f=c(50730),g=c(23888),h=c(12940),i=c(76561),j=c(2148),k=c(66263);async function l(a,b){await h.db.insert(i.event).values({id:(0,e.randomUUID)(),workspaceId:a,runId:b.runId,channel:b.channel??"room",agentId:b.agentId??null,seq:Date.now(),kind:b.kind,target:(b.target??"").slice(0,500),detail:(b.detail??"").slice(0,8e3)}),(0,k.r)(a)}async function m(a,b=0){let{workspace:c}=await (0,j.nP)();return h.db.select().from(i.event).where((0,f.Uo)((0,f.eq)(i.event.workspaceId,c.id),(0,f.eq)(i.event.channel,a),(0,f.gt)(i.event.seq,b))).orderBy((0,g.Y)(i.event.seq)).limit(300)}(0,c(99688).D)([l,m]),(0,d.A)(l,"60a408a3a21b681b16b206149fd9e0790a4304056e",null),(0,d.A)(m,"600adfc269778741217c31377d7e0b633650bc2ec9",null)},97879:(a,b,c)=>{a.exports=c(9345).vendored["react-rsc"].ReactServerDOMWebpackServer},99688:(a,b)=>{function c(a){for(let b=0;b<a.length;b++){let c=a[b];if("function"!=typeof c)throw Object.defineProperty(Error(`A "use server" file can only export async functions, found ${typeof c}.
|
|
14
14
|
Read more: https://nextjs.org/docs/messages/invalid-use-server-value`),"__NEXT_ERROR_CODE",{value:"E352",enumerable:!1,configurable:!0})}}Object.defineProperty(b,"D",{enumerable:!0,get:function(){return c}})}};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";exports.id=1190,exports.ids=[1190],exports.modules={8357:(a,b,c)=>{c.r(b),c.d(b,{"000841b225cd318c6b6e1b74681a04446c2fc49827":()=>e.PE,"004609cc8fda5b9551472b8f08684533ed82369738":()=>j.O,"00693e54844bbe9066f8a5473c488cc194c2bd4e5a":()=>k.eg,"0083f7ee1dc6ce9ec6bd0c12b600eb53328ba0fb2e":()=>e.KO,"008cb8cd775a0682f7319a9eed86a533ba9df2b5f3":()=>E,"0095f11f333d7bcdf5602f400aea375fada9d68c1d":()=>i.V,"0096f6fb82c612c03f93f9ebd24c474faa12f23fe3":()=>F.PG,"009e150de570f488c6b8dbc495936ae183dd6c7616":()=>k.io,"00acc17f0a5dd16286b178a08a5b8989ce5e3c9959":()=>d.xU,"00ba86d367299f75e022572c6e1e95a941f2c6d7ef":()=>d.bt,"00c77541def75536050d1e662a4b64ee8fa577538c":()=>h.x7,"00d0f3628462a983000d3a144f0fea8952be03118a":()=>h.Mp,"00de50f827186209568d4473a153e7029805645f82":()=>j.f,"00de5c63e670d2bd9579fceacf36b317be3727c745":()=>k.dj,"00df4ab050d844889b2d0ba8dec8981130081da1dc":()=>F.pM,"00f19c590f424939eff454ea8eef8b17ffbbaad8bf":()=>F.eU,"00fc098e676b165a642943c5e06fcd724ef5a74ff6":()=>e.y_,"00fcbefe6ec2a1a891b8dbc0a7f4e21444bd632f7f":()=>e.GK,"400f09679fbb3399982b683f027ff6e04946b8404d":()=>k.De,"402eeadb31eb2f5e60056cac29b659dd532df68954":()=>d.VL,"4038033f4f6fcc7c8c7ae4142336630f2c339a8d8c":()=>F.Kg,"403e95b7d8ae811fc9c94823902961f5efd9aae4e0":()=>g.L,"403f0c1322179601c99169bfc630a12c33910f2ff0":()=>F.lP,"4044d632fa539e7ed118940bfb3162d1466ea39a3b":()=>D,"40481e759c0032df6828ed1515136b2c254b38f242":()=>d.H7,"40594812b6f624475e6155545734712fe04ab6ef71":()=>C,"405c8b7e8f39ec0ca9ccff67449314122e269c4ee2":()=>e.RG,"405daeb99ac0dc584448e0a82ebd446353e1df4370":()=>e.r7,"406446417d1e902c37f8bd18abb427c8fbbcacee3e":()=>h.lR,"406b15d0657c83dab5ffbc9cffdd724d9b809acd31":()=>z,"4072e95d4eeea0593600570929aeebdb4783bfc7ba":()=>d.rd,"4078d148218374f7578a97565bb9a808e0d439a458":()=>i.zS,"407f17cfaeafb77b61206820355d8e1c297b48cb88":()=>d.gg,"40827dab442f71c707bd0e721f259179891be9b5d9":()=>m.y,"408acc42ba98211dcb2ed5698525048120214a2795":()=>e.S,"408e36e5fc942856e7846646e50a0ffb880040d1ac":()=>e.lJ,"4096d75401f65b0aa8ba36eea0623e2e3577f65f29":()=>h.sE,"409885a154f76f49c496538d9aed35c80648a5e32e":()=>l.IL,"40a0f062a8cf5bed06418f1201c86a1ee1dafce5dc":()=>l.q4,"40a1227b56f23bc58dfd91bd85d1b5abfb5eb9daed":()=>g.p,"40abbb87162e59657b98ec22a7ae131f173b4c408b":()=>A,"40b7b0aafd77ebee4bf58f8a190c6e1aa4f872b27f":()=>e.ey,"40b7f0298b5d7562b02b0db827a94fcfe4619d2a7a":()=>i.E_,"40bae138b46868f9b0e8f1affa2906d86a42269771":()=>i.VJ,"40d1b0145d7680e7365af98919ae9af17a85857f40":()=>d.Wu,"40d566a39bf39a39d982aa905355fadb88fd5966e0":()=>i.F,"40ecfef3afd4364a9f849ddb6e027a9b67be65ada4":()=>d.GW,"40f51ff321012914f13823c293c8e24340007774ea":()=>e.jc,"40f727c4725f83381768196103bac004bbc3b8e443":()=>l.TX,"6008156461d0c2379888e1b1db64a646787ee241e0":()=>l.Jp,"60099e58904f04f5679bb3adca0aceb7ca2a23755e":()=>e.AA,"600a2886a60cdf75d89400f6f0461b75b5e1af28c1":()=>d.ME,"600adfc269778741217c31377d7e0b633650bc2ec9":()=>f.k,"600cb7ae668798f94b0ce0b2259e8147ef45bad893":()=>d.n4,"603bf0d1081d45bf74f51b1d97e886245d20a09039":()=>d.rm,"603dece8cb304470bc9693f7ff674be4f1310cb608":()=>d.Fu,"6093001ac03ac32892149c155ca2e88fc2ccf57b6c":()=>l.bV,"60a408a3a21b681b16b206149fd9e0790a4304056e":()=>f.I,"60b01b94effbac0ba086f6db9ca70bfa6850dafeb8":()=>d.jw,"60ca963096e5ac21ffbb5c20553b60e07cfc10a082":()=>y,"60cd05b6970937c9be25ff9559aad958cda9108eee":()=>e.q$,"60e6a3f0a9d48006009dc02ade0ec2b69ff94e73fe":()=>l.bk,"60e6d0387bb44d263eb1212066de048c606793e5c2":()=>e.LZ,"60f1bd7e98aa5ca0c4700c68d2982ce1f1cfa391c2":()=>B,"70597648c34d00471da008672cbce28984ac84dc26":()=>e.M8,"70f96de32bbfe1507e590c7730f5ef1477412ef98a":()=>d._z});var d=c(13712),e=c(4619),f=c(37181),g=c(8937),h=c(86591),i=c(10222),j=c(34567),k=c(78387),l=c(74774),m=c(51773),n=c(80501),o=c(77598),p=c(73591),q=c(3770),r=c(54813),s=c(406),t=c(96405),u=c(81585),v=c(3233),w=c(55593),x=c(45900);async function y(a,b){let{workspace:c}=await (0,t.nP)();await r.db.update(s.routine).set({enabled:b}).where((0,p.Uo)((0,p.eq)(s.routine.id,a),(0,p.eq)(s.routine.workspaceId,c.id))),(0,q.revalidatePath)("/routines")}async function z(a){let{workspace:b}=await (0,t.nP)(),c=a.name.trim();return c?(await r.db.insert(s.routine).values({id:(0,o.randomUUID)(),workspaceId:b.id,name:c.slice(0,120),cmd:(a.cmd??"").trim().slice(0,500),freq:(a.freq??"Daily").trim()||"Daily",agentId:a.agentId||null,enabled:!0}),(0,q.revalidatePath)("/routines"),{ok:!0}):{ok:!1,error:"Name the routine."}}async function A(a){let{workspace:b}=await (0,t.nP)();await r.db.delete(s.routine).where((0,p.Uo)((0,p.eq)(s.routine.id,a),(0,p.eq)(s.routine.workspaceId,b.id))),(0,q.revalidatePath)("/routines")}async function B(a,b){let{workspace:c}=await (0,t.nP)();await r.db.update(s.plugin).set({enabled:b}).where((0,p.Uo)((0,p.eq)(s.plugin.id,a),(0,p.eq)(s.plugin.workspaceId,c.id))),(0,q.revalidatePath)("/plugins")}async function C(a){let{workspace:b}=await (0,t.nP)();await r.db.delete(s.inboxItem).where((0,p.Uo)((0,p.eq)(s.inboxItem.id,a),(0,p.eq)(s.inboxItem.workspaceId,b.id))),(0,q.revalidatePath)("/inbox")}async function D(a){let{workspace:b}=await (0,t.nP)();await r.db.update(s.finding).set({status:"fixed"}).where((0,p.Uo)((0,p.eq)(s.finding.id,a),(0,p.eq)(s.finding.workspaceId,b.id))),await r.db.insert(s.notification).values({id:(0,o.randomUUID)(),workspaceId:b.id,kind:"security",text:"Finding patched by the Code Review Agent",detail:"A security finding was fixed and a report was filed."}),(0,q.revalidatePath)("/security")}async function E(){let{org:a,workspace:b}=await (0,t.nP)(),c=await r.db.select().from(s.agent).where((0,p.eq)(s.agent.workspaceId,b.id)),d=c.find(a=>"whitfield"===a.handle)??c.find(a=>/cyber|sec/i.test(a.role))??c[0],e=(0,o.randomUUID)();if(!d)return{ok:!1,count:0,runId:e,error:"no agent"};await r.db.update(s.agent).set({status:"working"}).where((0,p.eq)(s.agent.id,d.id)),await (0,f.I)(b.id,{runId:e,channel:"security",agentId:d.id,kind:"thinking",target:`${d.name} is reviewing the workspace…`});let g=await r.db.select({name:s.skill.name,instructions:s.skill.instructions,summary:s.skill.summary}).from(s.agentSkill).innerJoin(s.skill,(0,p.eq)(s.agentSkill.skillId,s.skill.id)).where((0,p.Uo)((0,p.eq)(s.agentSkill.agentId,d.id),(0,p.RV)(s.skill.name,["owasp-top-10","owasp-asvs","appsec-fundamentals","secrets-management","secure-auth-sessions","dependency-supply-chain","review-code-perf-security","code-review-practices"]))),h=g.length?`
|
|
2
|
+
Apply these review skills (consult before judging):
|
|
3
|
+
${g.map(a=>`- ${a.name}: ${(a.instructions||a.summary).replace(/\s+/g," ").slice(0,300)}`).join("\n")}`:"",i=await (0,v.yY)(a.id,"security review: vulnerabilities, auth, secrets, prior findings and decisions",{agentHandle:d.handle,k:6}),j=i.context?`
|
|
4
|
+
Project knowledge (prior findings, decisions, patterns — do not contradict):
|
|
5
|
+
${i.context}`:"",k=[`You are ${d.name}, the security reviewer. Review the code in the current workspace directory for vulnerabilities, secret/token exposure, permission & workspace-isolation issues, and risky patterns.`,h,j,"Output ONLY a JSON array (no prose, no markdown fences) of findings:",'[{"sev":"high"|"med"|"low","title":"short title","file":"relative/path","suggestion":"how to fix"}]',"If the workspace is clean or empty, output []. Do not modify any files."].filter(Boolean).join("\n"),l=(0,u.hW)(d.adapter,d.model),m=(0,u.qX)(d.adapter),n=await (0,u.p1)(k,{orgId:a.id,binary:l,model:m,timeoutMs:24e4},a=>{(0,f.I)(b.id,{runId:e,channel:"security",agentId:d.id,kind:a.kind,target:a.target,detail:a.detail})}),y=[],z=n.text.match(/\[[\s\S]*\]/);if(z)try{y=JSON.parse(z[0])}catch{y=[]}for(let a of y.slice(0,40)){let c="high"===a.sev||"low"===a.sev?a.sev:"med";await r.db.insert(s.finding).values({id:(0,o.randomUUID)(),workspaceId:b.id,sev:c,title:String(a.title??"Finding").slice(0,200),file:String(a.file??""),suggestion:String(a.suggestion??""),status:"open"})}y.length&&(0,v.ru)(a.id,y.slice(0,40).map(a=>({type:"vuln",title:String(a.title??"Finding").slice(0,120),summary:`${a.sev??"med"}: ${String(a.suggestion??"")}`.slice(0,1e3),paths:a.file?[String(a.file)]:void 0,agentHandle:d.handle,sourceKind:"review",sourceRef:`${String(a.file??"")}::${String(a.title??"")}`.slice(0,200)}))).catch(()=>{}),(n.usd>0||n.inputTokens+n.outputTokens>0)&&await r.db.insert(s.costEntry).values({id:(0,o.randomUUID)(),workspaceId:b.id,agentId:d.id,provider:n.binary,model:n.model??d.model,usd:n.usd,tokens:n.inputTokens+n.outputTokens,at:new Date}),await r.db.update(s.workspace).set({settings:{...b.settings??{},lastSecurityRun:Date.now()}}).where((0,p.eq)(s.workspace.id,b.id)),await r.db.update(s.agent).set({status:"idle"}).where((0,p.eq)(s.agent.id,d.id));let A=new Date().toISOString().replace("T"," ").slice(0,19),B=`# Security review
|
|
6
|
+
|
|
7
|
+
_By @${d.handle} (${d.role}) \xb7 ${A}_
|
|
8
|
+
|
|
9
|
+
`+(y.length?`Filed ${y.length} finding(s):
|
|
10
|
+
|
|
11
|
+
`+y.slice(0,40).map(a=>`- **${a.sev??"med"}** ${a.title??"Finding"} — \`${a.file??"?"}\`
|
|
12
|
+
- ${a.suggestion??""}`).join("\n")+"\n":"No findings — the workspace looks clean.\n");try{await (0,x.g)(a.id,"Reports/security-review.md",B)}catch(a){console.error("[review] security report write failed:",a)}return await (0,f.I)(b.id,{runId:e,channel:"security",agentId:d.id,kind:n.ok?"done":"error",target:n.ok?`${y.length} finding(s) filed`:(n.error??"review failed").slice(0,200)}),await (0,w.I)(b.id,{kind:"security",text:"Security sweep finished",detail:`${d.name} filed ${y.length} finding(s).`,agentId:d.id}),(0,q.revalidatePath)("/security"),(0,q.revalidatePath)("/","layout"),{ok:n.ok,count:y.length,runId:e,error:n.error}}(0,c(64185).D)([y,z,A,B,C,D,E]),(0,n.A)(y,"60ca963096e5ac21ffbb5c20553b60e07cfc10a082",null),(0,n.A)(z,"406b15d0657c83dab5ffbc9cffdd724d9b809acd31",null),(0,n.A)(A,"40abbb87162e59657b98ec22a7ae131f173b4c408b",null),(0,n.A)(B,"60f1bd7e98aa5ca0c4700c68d2982ce1f1cfa391c2",null),(0,n.A)(C,"40594812b6f624475e6155545734712fe04ab6ef71",null),(0,n.A)(D,"4044d632fa539e7ed118940bfb3162d1466ea39a3b",null),(0,n.A)(E,"008cb8cd775a0682f7319a9eed86a533ba9df2b5f3",null);var F=c(51439)},15438:(a,b,c)=>{c.d(b,{FixButton:()=>f,RunReviewButton:()=>g,Toggle:()=>e});var d=c(97879);let e=(0,d.registerClientReference)(function(){throw Error("Attempted to call Toggle() from the server but Toggle 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\\module-toggles.tsx","Toggle");(0,d.registerClientReference)(function(){throw Error("Attempted to call ResolveButton() from the server but ResolveButton 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\\module-toggles.tsx","ResolveButton");let f=(0,d.registerClientReference)(function(){throw Error("Attempted to call FixButton() from the server but FixButton 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\\module-toggles.tsx","FixButton"),g=(0,d.registerClientReference)(function(){throw Error("Attempted to call RunReviewButton() from the server but RunReviewButton 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\\module-toggles.tsx","RunReviewButton")},48071:(a,b,c)=>{c.d(b,{FixButton:()=>n,RunReviewButton:()=>o,Toggle:()=>m});var d=c(40201),e=c(98604),f=c(26021);let g=(0,f.createServerReference)("60ca963096e5ac21ffbb5c20553b60e07cfc10a082",f.callServer,void 0,f.findSourceMapURL,"toggleRoutine"),h=(0,f.createServerReference)("60f1bd7e98aa5ca0c4700c68d2982ce1f1cfa391c2",f.callServer,void 0,f.findSourceMapURL,"togglePlugin"),i=(0,f.createServerReference)("4044d632fa539e7ed118940bfb3162d1466ea39a3b",f.callServer,void 0,f.findSourceMapURL,"fixFinding"),j=(0,f.createServerReference)("008cb8cd775a0682f7319a9eed86a533ba9df2b5f3",f.callServer,void 0,f.findSourceMapURL,"runReview");var k=c(77758),l=c(71955);function m({kind:a,id:b,on:c}){let[f,i]=(0,e.useTransition)(),j="routine"===a?g:h;return(0,d.jsx)("div",{className:"toggle"+(c?" on":""),"aria-disabled":f,role:"switch","aria-checked":c,onClick:()=>!f&&i(()=>j(b,!c))})}function n({id:a}){let b=(0,l.k)(),[c,f]=(0,e.useTransition)();return(0,d.jsxs)("button",{className:"sc2-btn",disabled:c,onClick:()=>f(()=>i(a)),children:[(0,d.jsx)(k.I,{name:"bot",size:12})," ",b("security.letAgentFix")]})}function o(){let a=(0,l.k)(),[b,c]=(0,e.useTransition)();return(0,d.jsxs)("button",{className:"btn-accent",disabled:b,onClick:()=>{window.dispatchEvent(new CustomEvent("constella:agent-run",{detail:{channel:"security"}})),c(async()=>{await j()})},children:[(0,d.jsx)(k.I,{name:"refresh",size:14,className:b?"sync-spin":""})," ",a(b?"security.reviewing":"security.runReview")]})}},58415:(a,b,c)=>{c.r(b),c.d(b,{"003cb2637940868c8169779ab7f079e932dbf14f29":()=>d.cT,"00b1add2e21c88cc3e4a931a8a0ae1491e689a263f":()=>d.Kd,"40c5952eae34879312fca825fbe1435872d84b57bc":()=>d.j0,"40ecbca5c8419b752f5ad5a3609271ceadcacfd8cf":()=>d.OD});var d=c(54489)}};
|
|
@@ -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,"002bdd3d8e0d713599caefb2b0f47fa20840947134",null),(0,d.A)(y,"4026a092db9003ef1c8ff46de87d5ca098e20c51ae",null),(0,d.A)(z,"4012a930dd0ac181177c103465f7d748afdd913bb8",null),(0,d.A)(A,"40aeb881b9c750a27fa1b41e98e94291f4b7384bf8",null),(0,d.A)(B,"008fcf51a0503914d7ed1fdf2740ed0eefe22ce5be",null),(0,d.A)(D,"007cb561a881ba0680cffb498614b62995856f0b68",null),(0,d.A)(E,"40c9419a2e111af15412601c1a517224983aa93d26",null),(0,d.A)(F,"406553dc805e7899ed02bc19a92b3d89d59957fd0b",null),(0,d.A)(G,"00325e8539c9a246c683c4d6d4360a4df1bcc733e3",null),(0,d.A)(H,"00040cd493a0b3560c6c9f8687b77d38050e7a1ef4",null),(0,d.A)(I,"00c402d779d00773fa8c24f2bc49c92fe8335061b5",null),(0,d.A)(J,"409220c1a6f0766e8624db679ac2637e6b66cec0c0",null)},41323:(a,b,c)=>{c.d(b,{ViewChrome:()=>d});let d=(0,c(97879).registerClientReference)(function(){throw Error("Attempted to call ViewChrome() from the server but ViewChrome 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\\shell\\view-chrome.tsx","ViewChrome")},47385:(a,b,c)=>{c.d(b,{l:()=>g});var d=c(46309),e=c(34925);async function f(){return(0,e.e)((await (0,d.cookies)()).get("cn-lang")?.value)}async function g(){let a=await f();return(b,c)=>(0,e.t)(a,b,c)}},51439:(a,b,c)=>{c.d(b,{pM:()=>z,lP:()=>y,Kg:()=>x,eU:()=>B,PG:()=>A});var d=c(80501),e=c(96405),f=c(90127),g=c(59627),h=c(24582);function i(){return(0,h.n)()?"dev":"vps"===(0,g.T)()?"vps":"portable"===(0,g.T)()?"portable":/[\\/]_npx[\\/]/.test((0,f.v)())?"npx":"global"}var j=c(52392),k=c(73024),l=c(76760),m=c(48161),n=c(31421),o=c(37989);let p=()=>new Date().toISOString().replace(/[:.]/g,"-"),q=()=>(0,l.join)((0,o.r$)(),"backups","last-update.json");async function r(){let a=await (0,j.checkForUpdate)(!0),b=i(),c=a.command;if(!a.updateAvailable)return{ok:!0,context:b,command:c,message:"Already up to date."};let d=function(){try{let a=(0,o.r$)(),b=(0,l.join)(a,"backups",p());for(let c of((0,k.mkdirSync)(b,{recursive:!0}),[".env","constella.db","constella.db-wal","constella.db-shm"])){let d=(0,l.join)(a,c);if((0,k.existsSync)(d))try{(0,k.copyFileSync)(d,(0,l.join)(b,c))}catch{}}return b}catch{return null}}()??void 0;if("dev"===b)return{ok:!1,context:b,command:c,backupDir:d,message:"Running from source — update with: git pull && pnpm install && pnpm build"};if("npx"===b)return{ok:!1,context:b,command:c,backupDir:d,message:"npx runs an ephemeral copy — re-run: npx constellai@latest"};if("vps"===b){var e="bash scripts/vps-update.sh";try{(0,k.writeFileSync)(q(),JSON.stringify({status:"running",to:a.latest,at:p()}));let b=(0,o.r$)(),c=process.env.CONSTELLA_PKG_ROOT||process.cwd(),f=(0,l.join)(c,"bin","constella-update.mjs"),g=a.latest?["--version",a.latest]:[];return(0,n.spawn)(process.execPath,[f,"--quiet","--mode","vps","--home",b,...g],{detached:!0,stdio:"ignore",cwd:(0,m.tmpdir)()}).unref(),{ok:!0,started:!0,needsRestart:!0,context:"vps",command:e,backupDir:d,message:`Updating to ${a.latest} and restarting the service — this page reconnects in a few seconds.`}}catch(a){return{ok:!1,context:"vps",command:e,backupDir:d,message:"Couldn't launch the updater: "+String(a instanceof Error?a.message:a)}}}return function(a,b,c,d){try{(0,k.writeFileSync)(q(),JSON.stringify({status:"running",to:a.latest,at:p()}));let e=process.env.CONSTELLA_RUN_MODE||"start",f=process.env.CONSTELLA_LAUNCHER_PID||"0",g=(0,o.r$)(),h=process.env.PORT||"3000",i=process.env.CONSTELLA_PKG_ROOT||process.cwd(),j=(0,l.join)(i,"bin","constella-update.mjs"),r=a.latest?["--version",a.latest]:[];return(0,n.spawn)(process.execPath,[j,"--quiet","--pid",f,"--mode",e,"--home",g,"--port",h,...r],{detached:!0,stdio:"ignore",windowsHide:!0,cwd:(0,m.tmpdir)()}).unref(),{ok:!0,started:!0,needsRestart:!0,context:b,command:c,backupDir:d,message:`Updating to ${a.latest} and restarting — this page reconnects in a few seconds.`}}catch(a){return{ok:!1,context:b,command:c,backupDir:d,message:"Couldn't launch the updater: "+String(a instanceof Error?a.message:a)}}}(a,b,c,d)}var s=c(73591),t=c(54813),u=c(406),v=c(96977);async function w(){let a=await t.db.select({lastPulse:u.agent.lastPulse}).from(u.agent).where((0,s.eq)(u.agent.status,"working")),b=Date.now()-v.fQ;return a.some(a=>null!=a.lastPulse&&new Date(a.lastPulse).getTime()>=b)}async function x(a=!1){return(0,j.checkForUpdate)(a)}async function y(a=!1){let[b,c]=await Promise.all([(0,j.checkForUpdate)(a),w()]);return{info:b,busy:c}}async function z(){return i()}async function A(){return(await (0,e.nP)(),await w())?{ok:!1,started:!1,blocked:!0,context:"",command:"",message:"An agent is working — pause it before updating."}:r()}async function B(){try{return JSON.parse((0,k.readFileSync)(q(),"utf8"))}catch{return{status:"idle"}}}(0,c(64185).D)([x,y,z,A,B]),(0,d.A)(x,"4038033f4f6fcc7c8c7ae4142336630f2c339a8d8c",null),(0,d.A)(y,"403f0c1322179601c99169bfc630a12c33910f2ff0",null),(0,d.A)(z,"00df4ab050d844889b2d0ba8dec8981130081da1dc",null),(0,d.A)(A,"0096f6fb82c612c03f93f9ebd24c474faa12f23fe3",null),(0,d.A)(B,"00f19c590f424939eff454ea8eef8b17ffbbaad8bf",null)},52392:(a,b,c)=>{c.d(b,{checkForUpdate:()=>m});var d=c(73024),e=c(76760),f=c(90127);let g="constellai",h=null,i=a=>a.replace(/^v/,"").split("-")[0].split(".").map(a=>parseInt(a,10)||0),j=a=>a.replace(/^v/,"").split("-")[1]??"";async function k(a){try{let b=new AbortController,c=setTimeout(()=>b.abort(),3e3),d=await fetch(a,{signal:b.signal,headers:{"user-agent":"constella"}});return clearTimeout(c),d.ok?await d.json():null}catch{return null}}async function l(a){try{let b=new AbortController,c=setTimeout(()=>b.abort(),3e3),d=await fetch(a,{signal:b.signal,headers:{"user-agent":"constella"}});return clearTimeout(c),d.ok?await d.text():null}catch{return null}}async function m(a=!1){let b,c,n=function(){if(process.env.CONSTELLA_VERSION)return process.env.CONSTELLA_VERSION;try{let a=JSON.parse((0,d.readFileSync)((0,e.join)((0,f.v)(),"package.json"),"utf8"));if(a?.version)return a.version}catch{}return"0.0.0"}(),o=`npm install -g ${g}@latest`;if(!a&&h&&Date.now()-h.at<216e5)return h.info;let p=await k(`https://registry.npmjs.org/${g}/latest`),q=p?.version??null,r=!!q&&function(a,b){let c=i(a),d=i(b);for(let a=0;a<3;a++){if((c[a]||0)>(d[a]||0))return!0;if((c[a]||0)<(d[a]||0))return!1}return!j(a)&&!!j(b)}(q,n),s=null;if(r&&q){let a=await l("https://raw.githubusercontent.com/gabriel7silva/constella/main/CHANGELOG.md");s=a?function(a,b){let c=b.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),d=a.match(RegExp(`(^|\\n)##\\s*\\[?${c}\\]?[\\s\\S]*?(?=\\n##\\s|$)`));if(d)return d[0].trim();let e=a.split(/\n##\s/)[1];return e?"## "+e.trim():null}(a,q):null}let t={current:n,latest:q,updateAvailable:r,type:q?(b=i(q),c=i(n),b[0]>c[0]?"major":b[1]>c[1]?"minor":b[2]>c[2]||!j(q)&&j(n)?"patch":null):null,command:o,changelog:s};return h={at:Date.now(),info:t},t}},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"}},64543:(a,b,c)=>{c.d(b,{_:()=>g});var d=c(50727),e=c(48578),f=c(41323);function g({title:a,sub:b,right:c,icon:h,flush:i,children:j}){return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(e.b,{title:a}),(0,d.jsx)(f.ViewChrome,{title:a,sub:b,right:c,icon:h,flush:i,children:j})]})}},84039:(a,b,c)=>{c.d(b,{I:()=>l});var d=c(73024),e=c(76760),f=c(55104);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}}}};
|