nodal-agents 0.1.0
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/README.md +81 -0
- package/cli.js +14113 -0
- package/migrations/0000_flashy_clea.sql +529 -0
- package/migrations/0001_exotic_shooting_star.sql +3 -0
- package/migrations/0002_gray_devos.sql +39 -0
- package/migrations/0003_stormy_thaddeus_ross.sql +1 -0
- package/migrations/0004_married_deadpool.sql +3 -0
- package/migrations/0005_tense_hedge_knight.sql +1 -0
- package/migrations/0006_credentials_table.sql +25 -0
- package/migrations/0007_free_speed.sql +16 -0
- package/migrations/0008_curious_thor_girl.sql +17 -0
- package/migrations/meta/0000_snapshot.json +3957 -0
- package/migrations/meta/0001_snapshot.json +3977 -0
- package/migrations/meta/0002_snapshot.json +4210 -0
- package/migrations/meta/0003_snapshot.json +4216 -0
- package/migrations/meta/0004_snapshot.json +4237 -0
- package/migrations/meta/0005_snapshot.json +4244 -0
- package/migrations/meta/0006_snapshot.json +4330 -0
- package/migrations/meta/0007_snapshot.json +4330 -0
- package/migrations/meta/0008_snapshot.json +4447 -0
- package/migrations/meta/_journal.json +69 -0
- package/package.json +63 -0
- package/runner.js +13181 -0
- package/web/.next/BUILD_ID +1 -0
- package/web/.next/app-path-routes-manifest.json +28 -0
- package/web/.next/build-manifest.json +20 -0
- package/web/.next/package.json +1 -0
- package/web/.next/prerender-manifest.json +109 -0
- package/web/.next/react-loadable-manifest.json +14 -0
- package/web/.next/required-server-files.json +351 -0
- package/web/.next/routes-manifest.json +216 -0
- package/web/.next/server/app/(dashboard)/agents/[id]/edit/page.js +2 -0
- package/web/.next/server/app/(dashboard)/agents/[id]/edit/page.js.nft.json +1 -0
- package/web/.next/server/app/(dashboard)/agents/[id]/edit/page_client-reference-manifest.js +1 -0
- package/web/.next/server/app/(dashboard)/agents/[id]/telegram/page.js +2 -0
- package/web/.next/server/app/(dashboard)/agents/[id]/telegram/page.js.nft.json +1 -0
- package/web/.next/server/app/(dashboard)/agents/[id]/telegram/page_client-reference-manifest.js +1 -0
- package/web/.next/server/app/(dashboard)/agents/page.js +2 -0
- package/web/.next/server/app/(dashboard)/agents/page.js.nft.json +1 -0
- package/web/.next/server/app/(dashboard)/agents/page_client-reference-manifest.js +1 -0
- package/web/.next/server/app/(dashboard)/approvals/page.js +2 -0
- package/web/.next/server/app/(dashboard)/approvals/page.js.nft.json +1 -0
- package/web/.next/server/app/(dashboard)/approvals/page_client-reference-manifest.js +1 -0
- package/web/.next/server/app/(dashboard)/automations/page.js +2 -0
- package/web/.next/server/app/(dashboard)/automations/page.js.nft.json +1 -0
- package/web/.next/server/app/(dashboard)/automations/page_client-reference-manifest.js +1 -0
- package/web/.next/server/app/(dashboard)/billing/page.js +2 -0
- package/web/.next/server/app/(dashboard)/billing/page.js.nft.json +1 -0
- package/web/.next/server/app/(dashboard)/billing/page_client-reference-manifest.js +1 -0
- package/web/.next/server/app/(dashboard)/connectors/page.js +2 -0
- package/web/.next/server/app/(dashboard)/connectors/page.js.nft.json +1 -0
- package/web/.next/server/app/(dashboard)/connectors/page_client-reference-manifest.js +1 -0
- package/web/.next/server/app/(dashboard)/credentials/page.js +2 -0
- package/web/.next/server/app/(dashboard)/credentials/page.js.nft.json +1 -0
- package/web/.next/server/app/(dashboard)/credentials/page_client-reference-manifest.js +1 -0
- package/web/.next/server/app/(dashboard)/jobs/[id]/page.js +2 -0
- package/web/.next/server/app/(dashboard)/jobs/[id]/page.js.nft.json +1 -0
- package/web/.next/server/app/(dashboard)/jobs/[id]/page_client-reference-manifest.js +1 -0
- package/web/.next/server/app/(dashboard)/jobs/page.js +2 -0
- package/web/.next/server/app/(dashboard)/jobs/page.js.nft.json +1 -0
- package/web/.next/server/app/(dashboard)/jobs/page_client-reference-manifest.js +1 -0
- package/web/.next/server/app/(dashboard)/logs/page.js +2 -0
- package/web/.next/server/app/(dashboard)/logs/page.js.nft.json +1 -0
- package/web/.next/server/app/(dashboard)/logs/page_client-reference-manifest.js +1 -0
- package/web/.next/server/app/(dashboard)/memories/page.js +2 -0
- package/web/.next/server/app/(dashboard)/memories/page.js.nft.json +1 -0
- package/web/.next/server/app/(dashboard)/memories/page_client-reference-manifest.js +1 -0
- package/web/.next/server/app/(dashboard)/settings/page.js +2 -0
- package/web/.next/server/app/(dashboard)/settings/page.js.nft.json +1 -0
- package/web/.next/server/app/(dashboard)/settings/page_client-reference-manifest.js +1 -0
- package/web/.next/server/app/(dashboard)/skills/[id]/edit/page.js +2 -0
- package/web/.next/server/app/(dashboard)/skills/[id]/edit/page.js.nft.json +1 -0
- package/web/.next/server/app/(dashboard)/skills/[id]/edit/page_client-reference-manifest.js +1 -0
- package/web/.next/server/app/(dashboard)/skills/page.js +2 -0
- package/web/.next/server/app/(dashboard)/skills/page.js.nft.json +1 -0
- package/web/.next/server/app/(dashboard)/skills/page_client-reference-manifest.js +1 -0
- package/web/.next/server/app/(dashboard)/stats/page.js +2 -0
- package/web/.next/server/app/(dashboard)/stats/page.js.nft.json +1 -0
- package/web/.next/server/app/(dashboard)/stats/page_client-reference-manifest.js +1 -0
- package/web/.next/server/app/_global-error/page.js +32 -0
- package/web/.next/server/app/_global-error/page.js.nft.json +1 -0
- package/web/.next/server/app/_global-error/page_client-reference-manifest.js +1 -0
- package/web/.next/server/app/_global-error.html +1 -0
- package/web/.next/server/app/_global-error.meta +16 -0
- package/web/.next/server/app/_global-error.rsc +18 -0
- package/web/.next/server/app/_global-error.segments/_full.segment.rsc +18 -0
- package/web/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +5 -0
- package/web/.next/server/app/_global-error.segments/_global-error.segment.rsc +5 -0
- package/web/.next/server/app/_global-error.segments/_head.segment.rsc +5 -0
- package/web/.next/server/app/_global-error.segments/_index.segment.rsc +7 -0
- package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -0
- package/web/.next/server/app/_not-found/page.js +2 -0
- package/web/.next/server/app/_not-found/page.js.nft.json +1 -0
- package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -0
- package/web/.next/server/app/_not-found.html +1 -0
- package/web/.next/server/app/_not-found.meta +16 -0
- package/web/.next/server/app/_not-found.rsc +17 -0
- package/web/.next/server/app/_not-found.segments/_full.segment.rsc +17 -0
- package/web/.next/server/app/_not-found.segments/_head.segment.rsc +5 -0
- package/web/.next/server/app/_not-found.segments/_index.segment.rsc +7 -0
- package/web/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +6 -0
- package/web/.next/server/app/_not-found.segments/_not-found.segment.rsc +5 -0
- package/web/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -0
- package/web/.next/server/app/api/auth/[...all]/route.js +1 -0
- package/web/.next/server/app/api/auth/[...all]/route.js.nft.json +1 -0
- package/web/.next/server/app/api/auth/[...all]/route_client-reference-manifest.js +1 -0
- package/web/.next/server/app/api/health/route.js +1 -0
- package/web/.next/server/app/api/health/route.js.nft.json +1 -0
- package/web/.next/server/app/api/health/route_client-reference-manifest.js +1 -0
- package/web/.next/server/app/api/oauth/[provider]/callback/route.js +1 -0
- package/web/.next/server/app/api/oauth/[provider]/callback/route.js.nft.json +1 -0
- package/web/.next/server/app/api/oauth/[provider]/callback/route_client-reference-manifest.js +1 -0
- package/web/.next/server/app/api/oauth/[provider]/start/route.js +1 -0
- package/web/.next/server/app/api/oauth/[provider]/start/route.js.nft.json +1 -0
- package/web/.next/server/app/api/oauth/[provider]/start/route_client-reference-manifest.js +1 -0
- package/web/.next/server/app/auth/callback/route.js +1 -0
- package/web/.next/server/app/auth/callback/route.js.nft.json +1 -0
- package/web/.next/server/app/auth/callback/route_client-reference-manifest.js +1 -0
- package/web/.next/server/app/index.html +1 -0
- package/web/.next/server/app/index.meta +16 -0
- package/web/.next/server/app/index.rsc +16 -0
- package/web/.next/server/app/index.segments/__PAGE__.segment.rsc +6 -0
- package/web/.next/server/app/index.segments/_full.segment.rsc +16 -0
- package/web/.next/server/app/index.segments/_head.segment.rsc +5 -0
- package/web/.next/server/app/index.segments/_index.segment.rsc +7 -0
- package/web/.next/server/app/index.segments/_tree.segment.rsc +2 -0
- package/web/.next/server/app/login/page.js +2 -0
- package/web/.next/server/app/login/page.js.nft.json +1 -0
- package/web/.next/server/app/login/page_client-reference-manifest.js +1 -0
- package/web/.next/server/app/onboarding/page.js +2 -0
- package/web/.next/server/app/onboarding/page.js.nft.json +1 -0
- package/web/.next/server/app/onboarding/page_client-reference-manifest.js +1 -0
- package/web/.next/server/app/onboarding.html +1 -0
- package/web/.next/server/app/onboarding.meta +15 -0
- package/web/.next/server/app/onboarding.rsc +17 -0
- package/web/.next/server/app/onboarding.segments/_full.segment.rsc +17 -0
- package/web/.next/server/app/onboarding.segments/_head.segment.rsc +5 -0
- package/web/.next/server/app/onboarding.segments/_index.segment.rsc +7 -0
- package/web/.next/server/app/onboarding.segments/_tree.segment.rsc +2 -0
- package/web/.next/server/app/onboarding.segments/onboarding/__PAGE__.segment.rsc +5 -0
- package/web/.next/server/app/onboarding.segments/onboarding.segment.rsc +5 -0
- package/web/.next/server/app/page.js +2 -0
- package/web/.next/server/app/page.js.nft.json +1 -0
- package/web/.next/server/app/page_client-reference-manifest.js +1 -0
- package/web/.next/server/app-paths-manifest.json +28 -0
- package/web/.next/server/chunks/1006.js +1 -0
- package/web/.next/server/chunks/168.js +8 -0
- package/web/.next/server/chunks/2187.js +1 -0
- package/web/.next/server/chunks/2275.js +120 -0
- package/web/.next/server/chunks/2422.js +1 -0
- package/web/.next/server/chunks/3159.js +45 -0
- package/web/.next/server/chunks/3699.js +1 -0
- package/web/.next/server/chunks/3807.js +1 -0
- package/web/.next/server/chunks/3865.js +9 -0
- package/web/.next/server/chunks/3869.js +1 -0
- package/web/.next/server/chunks/3938.js +1 -0
- package/web/.next/server/chunks/4574.js +1 -0
- package/web/.next/server/chunks/4674.js +18 -0
- package/web/.next/server/chunks/5376.js +1 -0
- package/web/.next/server/chunks/5402.js +65 -0
- package/web/.next/server/chunks/5449.js +1 -0
- package/web/.next/server/chunks/5754.js +62 -0
- package/web/.next/server/chunks/5962.js +1 -0
- package/web/.next/server/chunks/6128.js +1 -0
- package/web/.next/server/chunks/6402.js +1 -0
- package/web/.next/server/chunks/6605.js +12 -0
- package/web/.next/server/chunks/6697.js +1 -0
- package/web/.next/server/chunks/6764.js +1 -0
- package/web/.next/server/chunks/6896.js +2 -0
- package/web/.next/server/chunks/8464.js +2 -0
- package/web/.next/server/chunks/9606.js +428 -0
- package/web/.next/server/functions-config-manifest.json +14 -0
- package/web/.next/server/middleware-build-manifest.js +1 -0
- package/web/.next/server/middleware-manifest.json +6 -0
- package/web/.next/server/middleware-react-loadable-manifest.js +1 -0
- package/web/.next/server/middleware.js +18 -0
- package/web/.next/server/next-font-manifest.js +1 -0
- package/web/.next/server/next-font-manifest.json +1 -0
- package/web/.next/server/pages/404.html +1 -0
- package/web/.next/server/pages/500.html +1 -0
- package/web/.next/server/pages-manifest.json +4 -0
- package/web/.next/server/prefetch-hints.json +1 -0
- package/web/.next/server/server-reference-manifest.js +1 -0
- package/web/.next/server/server-reference-manifest.json +1 -0
- package/web/.next/server/webpack-runtime.js +1 -0
- package/web/.next/static/chunks/174.f5bd28884efa0000.js +1 -0
- package/web/.next/static/chunks/203.02a2bd001ebbe608.js +1 -0
- package/web/.next/static/chunks/231-fbb2baea2de90085.js +1 -0
- package/web/.next/static/chunks/363-483f33abe1809381.js +1 -0
- package/web/.next/static/chunks/45-b78e94bb1c396542.js +1 -0
- package/web/.next/static/chunks/504-baed39064a242351.js +1 -0
- package/web/.next/static/chunks/511-487710d0fe16fbe3.js +1 -0
- package/web/.next/static/chunks/678-46261e73dea11bc7.js +1 -0
- package/web/.next/static/chunks/724-1d09b7ea367babbe.js +32 -0
- package/web/.next/static/chunks/a7a8b010-64b9ea0922a3e9c1.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/agents/[id]/edit/page-1cbc88f6ea30c04e.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/agents/[id]/telegram/page-c3393e2e0665b0a7.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/agents/page-fe6937dec50415e9.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/approvals/page-9509351c92665fc1.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/automations/page-d06b5eb3ec1ada30.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/billing/page-88165ec8f0c4df6b.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/connectors/page-9189af92fc7cddd4.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/credentials/page-9ad4cfdfb3fda068.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/jobs/[id]/page-fdaeff5be0544e4c.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/jobs/page-c1ddb55d4de1ae7d.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/layout-7ad84dfaa376ab9f.js +2 -0
- package/web/.next/static/chunks/app/(dashboard)/logs/page-a6006d9cc2590a0a.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/memories/page-8466e02527ae909b.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/settings/page-d7dd2b7586e23ec9.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/skills/[id]/edit/page-7c1e1566a93b3a65.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/skills/page-30cbb1e29d7e5147.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/stats/page-ddf08b608a2840c5.js +1 -0
- package/web/.next/static/chunks/app/_global-error/page-ddf08b608a2840c5.js +1 -0
- package/web/.next/static/chunks/app/_not-found/page-ddf08b608a2840c5.js +1 -0
- package/web/.next/static/chunks/app/api/auth/[...all]/route-ddf08b608a2840c5.js +1 -0
- package/web/.next/static/chunks/app/api/health/route-ddf08b608a2840c5.js +1 -0
- package/web/.next/static/chunks/app/api/oauth/[provider]/callback/route-ddf08b608a2840c5.js +1 -0
- package/web/.next/static/chunks/app/api/oauth/[provider]/start/route-ddf08b608a2840c5.js +1 -0
- package/web/.next/static/chunks/app/auth/callback/route-ddf08b608a2840c5.js +1 -0
- package/web/.next/static/chunks/app/error-41d8134c91e8652d.js +1 -0
- package/web/.next/static/chunks/app/layout-fb836a3464648614.js +1 -0
- package/web/.next/static/chunks/app/login/page-176e4c02453c9ce9.js +1 -0
- package/web/.next/static/chunks/app/not-found-88165ec8f0c4df6b.js +1 -0
- package/web/.next/static/chunks/app/onboarding/page-ddf08b608a2840c5.js +1 -0
- package/web/.next/static/chunks/app/page-ddf08b608a2840c5.js +1 -0
- package/web/.next/static/chunks/e5009a55-3b270d90dfdebefa.js +1 -0
- package/web/.next/static/chunks/framework-a208e71e7c780968.js +1 -0
- package/web/.next/static/chunks/main-949172f5a58d52c4.js +5 -0
- package/web/.next/static/chunks/main-app-ad34d1b1511b9a1c.js +1 -0
- package/web/.next/static/chunks/next/dist/client/components/builtin/app-error-ddf08b608a2840c5.js +1 -0
- package/web/.next/static/chunks/next/dist/client/components/builtin/forbidden-ddf08b608a2840c5.js +1 -0
- package/web/.next/static/chunks/next/dist/client/components/builtin/global-error-c836ffb6bc7442ca.js +1 -0
- package/web/.next/static/chunks/next/dist/client/components/builtin/unauthorized-ddf08b608a2840c5.js +1 -0
- package/web/.next/static/chunks/polyfills-42372ed130431b0a.js +1 -0
- package/web/.next/static/chunks/webpack-ea6870dc3308aa05.js +1 -0
- package/web/.next/static/css/bd2cf2f17af36e40.css +1 -0
- package/web/.next/static/vTtlbto9aMl3tYcTyV1GL/_buildManifest.js +1 -0
- package/web/.next/static/vTtlbto9aMl3tYcTyV1GL/_ssgManifest.js +1 -0
- package/web/server.js +44 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[665],{982:(e,t,r)=>{Promise.resolve().then(r.bind(r,3732)),Promise.resolve().then(r.bind(r,9181))},1369:(e,t,r)=>{"use strict";r.d(t,{E$:()=>a,Ff:()=>o,X3:()=>i,_6:()=>l});var n=r(4178);function a(e,t=new Date){if(!e||"string"!=typeof e)return{ok:!1,error:"Empty expression"};try{let r=n.CronExpressionParser.parse(e.trim(),{currentDate:t}),a=[];for(let e=0;e<3;e++)a.push(r.next().toDate());return{ok:!0,nextRuns:a,humanLabel:l(e)}}catch(e){return{ok:!1,error:e instanceof Error?e.message:"Invalid cron expression"}}}let s=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];function l(e){let t=e.trim().split(/\s+/);if(5!==t.length)return e;let[r,n,a,l,o]=t;if("*"===r&&"*"===n&&"*"===a&&"*"===l&&"*"===o)return"Every minute";let i=r?.match(/^\*\/(\d+)$/);if(i&&"*"===n&&"*"===a&&"*"===l&&"*"===o)return`Every ${i[1]} minutes`;if("*"===n&&"*"===a&&"*"===l&&"*"===o&&/^\d+$/.test(r??""))return"0"===r?"Every hour (top of hour)":`Every hour at :${(r??"").padStart(2,"0")}`;if("*"===a&&"*"===l&&"*"===o&&/^\d+$/.test(r??"")&&/^\d+$/.test(n??""))return`Every day at ${d(n)}:${d(r)}`;if("*"===a&&"*"===l&&/^\d+$/.test(r??"")&&/^\d+$/.test(n??"")){let e=function(e){if("*"===e)return"day";if("1-5"===e)return"weekday";if("0,6"===e||"6,0"===e)return"weekend";if(/^\d$/.test(e)){let t=parseInt(e,10);if(t>=0&&t<=6)return s[t]??null}return/^[0-6](,[0-6])+$/.test(e)?e.split(",").map(e=>s[parseInt(e,10)]).filter(Boolean).join(", "):null}(o??"");if(e)return`Every ${e} at ${d(n)}:${d(r)}`}return"*"===l&&"*"===o&&/^\d+$/.test(r??"")&&/^\d+$/.test(n??"")&&/^\d+$/.test(a??"")?`Day ${a} of every month at ${d(n)}:${d(r)}`:e}function d(e){return(e??"").padStart(2,"0")}function o(e){let t=function(e){if(!e)return{hour:9,minute:0};let t=e.match(/^(\d{1,2}):(\d{2})$/);return t?{hour:Math.max(0,Math.min(23,parseInt(t[1]??"0",10))),minute:Math.max(0,Math.min(59,parseInt(t[2]??"0",10)))}:{hour:9,minute:0}}(e.time);switch(e.mode){case"minutes":{let t=e.everyMinutes&&e.everyMinutes>0?e.everyMinutes:5;return`*/${t} * * * *`}case"hourly":return`${t.minute} * * * *`;case"daily":return`${t.minute} ${t.hour} * * *`;case"weekly":{let r=e.weekdays&&e.weekdays.length>0?e.weekdays.slice().sort().join(","):"1";return`${t.minute} ${t.hour} * * ${r}`}case"monthly":{let r=e.dayOfMonth&&e.dayOfMonth>0?e.dayOfMonth:1;return`${t.minute} ${t.hour} ${r} * *`}case"custom":return(e.custom??"").trim()}}function i(e){let t=e.trim().split(/\s+/);if(5!==t.length)return{mode:"custom",values:{mode:"custom",custom:e}};let[r,n,a,s,l]=t,o=r?.match(/^\*\/(\d+)$/);if(o&&"*"===n&&"*"===a&&"*"===s&&"*"===l)return{mode:"minutes",values:{mode:"minutes",everyMinutes:parseInt(o[1]??"5",10)}};if("*"===n&&"*"===a&&"*"===s&&"*"===l&&/^\d+$/.test(r??""))return{mode:"hourly",values:{mode:"hourly",time:`00:${d(r)}`}};if("*"===a&&"*"===s&&"*"===l&&/^\d+$/.test(r??"")&&/^\d+$/.test(n??""))return{mode:"daily",values:{mode:"daily",time:`${d(n)}:${d(r)}`}};if("*"===a&&"*"===s&&/^\d+$/.test(r??"")&&/^\d+$/.test(n??"")){let e=function(e){if("*"===e)return[0,1,2,3,4,5,6];if("1-5"===e)return[1,2,3,4,5];if("0,6"===e||"6,0"===e)return[0,6];if(/^\d$/.test(e)){let t=parseInt(e,10);if(t>=0&&t<=6)return[t]}return/^[0-6](,[0-6])+$/.test(e)?e.split(",").map(e=>parseInt(e,10)):null}(l??"");if(e)return{mode:"weekly",values:{mode:"weekly",time:`${d(n)}:${d(r)}`,weekdays:e}}}return"*"===s&&"*"===l&&/^\d+$/.test(r??"")&&/^\d+$/.test(n??"")&&/^\d+$/.test(a??"")?{mode:"monthly",values:{mode:"monthly",time:`${d(n)}:${d(r)}`,dayOfMonth:parseInt(a??"1",10)}}:{mode:"custom",values:{mode:"custom",custom:e}}}},1444:()=>{},3732:(e,t,r)=>{"use strict";r.d(t,{default:()=>h});var n=r(3680),a=r(8604),s=r(9504),l=r(4678);let d=(0,l.createServerReference)("4036dccfd836547574d7b1a2d35d2e1f6128f19d63",l.callServer,void 0,l.findSourceMapURL,"updateScheduleAction"),o=(0,l.createServerReference)("409c74ae0001509a0665a05d754aa6c00a53ac63ce",l.callServer,void 0,l.findSourceMapURL,"createScheduleAction");var i=r(1369);let u=[{n:1,label:"Mon"},{n:2,label:"Tue"},{n:3,label:"Wed"},{n:4,label:"Thu"},{n:5,label:"Fri"},{n:6,label:"Sat"},{n:0,label:"Sun"}],c=[1,5,10,15,30];function m({name:e="cronExpr",initial:t}){let r=(0,a.useMemo)(()=>t?(0,i.X3)(t):{mode:"daily",values:{mode:"daily",time:"09:00"}},[t]),[s,l]=(0,a.useState)(r.mode),[d,o]=(0,a.useState)(r.values.everyMinutes??5),[h,p]=(0,a.useState)(r.values.time??"09:00"),[b,f]=(0,a.useState)(r.values.weekdays??[1,2,3,4,5]),[v,y]=(0,a.useState)(r.values.dayOfMonth??1),[g,j]=(0,a.useState)(r.values.custom??t??"0 9 * * *"),w=(0,a.useMemo)(()=>(0,i.Ff)({mode:s,everyMinutes:d,time:h,weekdays:b,dayOfMonth:v,custom:g}),[s,d,h,b,v,g]),N=(0,a.useMemo)(()=>(0,i.E$)(w),[w]);return(0,n.jsxs)("div",{className:"space-y-3",children:[(0,n.jsx)("input",{type:"hidden",name:e,value:w}),(0,n.jsxs)("div",{className:"grid grid-cols-2 gap-3",children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("label",{htmlFor:"cron-mode",className:"block text-xs text-neutral-500 mb-1",children:"Frequency"}),(0,n.jsxs)("select",{id:"cron-mode",value:s,onChange:e=>l(e.target.value),className:"w-full bg-neutral-800 border border-neutral-700 rounded-md px-2 py-1.5 text-sm text-white focus:border-neutral-500 focus:outline-none",children:[(0,n.jsx)("option",{value:"minutes",children:"Every N minutes"}),(0,n.jsx)("option",{value:"hourly",children:"Hourly"}),(0,n.jsx)("option",{value:"daily",children:"Daily"}),(0,n.jsx)("option",{value:"weekly",children:"Weekly"}),(0,n.jsx)("option",{value:"monthly",children:"Monthly"}),(0,n.jsx)("option",{value:"custom",children:"Custom (cron)"})]})]}),"minutes"===s&&(0,n.jsxs)("div",{children:[(0,n.jsx)("label",{htmlFor:"cron-every",className:"block text-xs text-neutral-500 mb-1",children:"Every"}),(0,n.jsx)("select",{id:"cron-every",value:d,onChange:e=>o(parseInt(e.target.value,10)),className:"w-full bg-neutral-800 border border-neutral-700 rounded-md px-2 py-1.5 text-sm text-white focus:border-neutral-500 focus:outline-none",children:c.map(e=>(0,n.jsxs)("option",{value:e,children:[e," ",1===e?"minute":"minutes"]},e))})]}),"hourly"===s&&(0,n.jsxs)("div",{children:[(0,n.jsx)("label",{htmlFor:"cron-min-of-hour",className:"block text-xs text-neutral-500 mb-1",children:"At minute"}),(0,n.jsx)("input",{id:"cron-min-of-hour",type:"number",min:0,max:59,value:parseInt(h.split(":")[1]??"0",10),onChange:e=>{let t=Math.max(0,Math.min(59,parseInt(e.target.value||"0",10)));p(`00:${String(t).padStart(2,"0")}`)},className:"w-full bg-neutral-800 border border-neutral-700 rounded-md px-2 py-1.5 text-sm text-white focus:border-neutral-500 focus:outline-none"})]}),("daily"===s||"weekly"===s||"monthly"===s)&&(0,n.jsxs)("div",{children:[(0,n.jsx)("label",{htmlFor:"cron-time",className:"block text-xs text-neutral-500 mb-1",children:"Time"}),(0,n.jsx)("input",{id:"cron-time",type:"time",value:h,onChange:e=>p(e.target.value),className:"w-full bg-neutral-800 border border-neutral-700 rounded-md px-2 py-1.5 text-sm text-white focus:border-neutral-500 focus:outline-none"})]})]}),"weekly"===s&&(0,n.jsxs)("div",{children:[(0,n.jsx)("label",{className:"block text-xs text-neutral-500 mb-1",children:"Days"}),(0,n.jsx)("div",{className:"flex flex-wrap gap-1.5",children:u.map(e=>{let t=b.includes(e.n);return(0,n.jsx)("button",{type:"button",onClick:()=>{var t;return t=e.n,void f(e=>e.includes(t)?e.filter(e=>e!==t):[...e,t].sort())},className:`px-2.5 py-1 text-xs font-medium rounded border ${t?"bg-violet-500/15 border-violet-500/50 text-violet-300":"border-neutral-800 text-neutral-500 hover:border-neutral-700 hover:text-white"}`,children:e.label},e.n)})})]}),"monthly"===s&&(0,n.jsxs)("div",{children:[(0,n.jsx)("label",{htmlFor:"cron-dom",className:"block text-xs text-neutral-500 mb-1",children:"Day of month"}),(0,n.jsx)("input",{id:"cron-dom",type:"number",min:1,max:31,value:v,onChange:e=>y(Math.max(1,Math.min(31,parseInt(e.target.value||"1",10)))),className:"w-32 bg-neutral-800 border border-neutral-700 rounded-md px-2 py-1.5 text-sm text-white focus:border-neutral-500 focus:outline-none"})]}),"custom"===s&&(0,n.jsxs)("div",{children:[(0,n.jsx)("label",{htmlFor:"cron-custom",className:"block text-xs text-neutral-500 mb-1",children:"Cron expression"}),(0,n.jsx)("input",{id:"cron-custom",type:"text",value:g,onChange:e=>j(e.target.value),placeholder:"0 9 * * *",className:"w-full bg-neutral-800 border border-neutral-700 rounded-md px-2 py-1.5 text-sm text-white placeholder-neutral-600 focus:border-neutral-500 focus:outline-none font-mono"}),(0,n.jsx)("p",{className:"text-[10px] text-neutral-600 mt-1",children:"Format: minute hour day-of-month month day-of-week"})]}),(0,n.jsx)(x,{expr:w,preview:N})]})}function x({expr:e,preview:t}){return t.ok?(0,n.jsxs)("div",{className:"bg-neutral-950 border border-neutral-800/40 rounded-md px-3 py-2 space-y-1",children:[(0,n.jsxs)("div",{className:"flex items-center gap-2 text-xs",children:[(0,n.jsx)("span",{className:"text-neutral-500",children:"Schedule:"}),(0,n.jsx)("span",{className:"text-white",children:t.humanLabel}),(0,n.jsx)("code",{className:"ml-auto font-mono text-[10px] text-violet-400",children:e})]}),(0,n.jsxs)("div",{className:"text-[10px] text-neutral-600",suppressHydrationWarning:!0,children:["Next runs: ",t.nextRuns.map(e=>e.toLocaleString([],{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})).join(" \xb7 ")]})]}):(0,n.jsxs)("div",{className:"bg-red-950/30 border border-red-900/40 rounded-md px-3 py-2 text-xs text-red-300",children:[(0,n.jsx)("span",{className:"font-semibold",children:"Invalid:"})," ",t.error]})}function h(e){let t="edit"===e.mode,[r,l]=(0,a.useState)(t),[i,u]=(0,a.useTransition)();if(!t&&!r)return(0,n.jsx)("button",{type:"button",onClick:()=>l(!0),disabled:0===e.agents.length,className:"px-4 py-2 text-sm font-medium bg-white text-black rounded-lg hover:bg-neutral-200 disabled:opacity-40 disabled:cursor-not-allowed",title:0===e.agents.length?"Create an agent first":"",children:"+ New schedule"});let c=t?e.initial.agentId:"",x=t?e.initial.name:"",h=t?e.initial.task??"":"",p=t?e.initial.cronExpr:"0 9 * * *";return(0,n.jsxs)("form",{onSubmit:function(r){r.preventDefault();let n=r.currentTarget,a=new FormData(n);u(async()=>{if(t){let t=await d({id:e.initial.id,agentId:a.get("agentId"),name:a.get("name"),cronExpr:a.get("cronExpr"),task:a.get("task")});t.ok?(s.o.success("Schedule updated"),e.onDone?.()):s.o.error(t.message)}else{let t=await o({agentId:a.get("agentId"),name:a.get("name"),cronExpr:a.get("cronExpr"),task:a.get("task")});t.ok?(s.o.success("Schedule created"),n.reset(),l(!1),e.onDone?.()):s.o.error(t.message)}})},className:"bg-neutral-900 border border-neutral-800/60 rounded-xl p-5 space-y-3",children:[(0,n.jsx)("h3",{className:"text-sm font-semibold text-white",children:t?"Edit schedule":"New schedule"}),(0,n.jsxs)("div",{className:"grid grid-cols-2 gap-3",children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("label",{className:"block text-xs text-neutral-500 mb-1",htmlFor:"schedule-agent",children:"Agent"}),(0,n.jsxs)("select",{id:"schedule-agent",name:"agentId",required:!0,defaultValue:c,className:"w-full bg-neutral-800 border border-neutral-700 rounded-md px-2 py-1.5 text-sm text-white focus:border-neutral-500 focus:outline-none",children:[(0,n.jsx)("option",{value:"",children:"Select…"}),e.agents.map(e=>(0,n.jsx)("option",{value:e.id,children:e.name},e.id))]})]}),(0,n.jsxs)("div",{children:[(0,n.jsx)("label",{className:"block text-xs text-neutral-500 mb-1",htmlFor:"schedule-name",children:"Name"}),(0,n.jsx)("input",{id:"schedule-name",name:"name",required:!0,defaultValue:x,placeholder:"Daily standup",className:"w-full bg-neutral-800 border border-neutral-700 rounded-md px-2 py-1.5 text-sm text-white placeholder-neutral-600 focus:border-neutral-500 focus:outline-none"})]})]}),(0,n.jsx)(m,{name:"cronExpr",initial:p}),(0,n.jsxs)("div",{children:[(0,n.jsx)("label",{className:"block text-xs text-neutral-500 mb-1",htmlFor:"schedule-task",children:"Task instructions"}),(0,n.jsx)("textarea",{id:"schedule-task",name:"task",required:!0,rows:4,defaultValue:h,placeholder:"What should the agent do each time this fires?",className:"w-full bg-neutral-800 border border-neutral-700 rounded-md px-2 py-1.5 text-sm text-white placeholder-neutral-600 focus:border-neutral-500 focus:outline-none resize-y"})]}),(0,n.jsxs)("div",{className:"flex gap-2 pt-1",children:[(0,n.jsx)("button",{type:"submit",disabled:i,className:"px-4 py-2 text-sm font-semibold bg-white text-black rounded-md hover:bg-neutral-200 disabled:opacity-50",children:i?t?"Saving…":"Creating…":t?"Save changes":"Create schedule"}),(0,n.jsx)("button",{type:"button",onClick:()=>{t?e.onDone?.():l(!1)},className:"px-4 py-2 text-sm font-medium border border-neutral-700 text-neutral-400 rounded-md hover:border-neutral-600",children:"Cancel"})]})]})}},4308:(e,t,r)=>{"use strict";r.d(t,{A:()=>l});var n=r(3680),a=r(8604),s=r(1869);function l({open:e,title:t,message:r,confirmLabel:d="Confirm",cancelLabel:o="Cancel",destructive:i=!0,onConfirm:u,onCancel:c}){let m=(0,a.useRef)(null),[x,h]=(0,a.useState)(!1);return((0,a.useEffect)(()=>{h(!0)},[]),(0,a.useEffect)(()=>{if(e)return m.current?.focus(),window.addEventListener("keydown",t),()=>window.removeEventListener("keydown",t);function t(e){"Escape"===e.key&&c()}},[e,c]),e&&x)?(0,s.createPortal)((0,n.jsxs)("div",{role:"dialog","aria-modal":"true","aria-labelledby":"confirm-dialog-title",className:"fixed inset-0 z-50 flex items-center justify-center px-4 text-left",children:[(0,n.jsx)("div",{className:"absolute inset-0 bg-black/60 backdrop-blur-sm",onClick:c,"aria-hidden":"true"}),(0,n.jsxs)("div",{className:"relative bg-neutral-900 border border-neutral-800/60 rounded-xl p-6 max-w-md w-full shadow-2xl",children:[(0,n.jsx)("h2",{id:"confirm-dialog-title",className:"text-base font-semibold text-white",children:t}),r&&(0,n.jsx)("p",{className:"mt-2 text-sm text-neutral-400 leading-relaxed",children:r}),(0,n.jsxs)("div",{className:"mt-6 flex justify-end gap-2",children:[(0,n.jsx)("button",{ref:m,type:"button",onClick:c,className:"px-4 py-2 text-sm font-medium border border-neutral-700 text-neutral-300 rounded-lg hover:border-neutral-600 hover:text-white transition-colors",children:o}),(0,n.jsx)("button",{type:"button",onClick:u,className:`px-4 py-2 text-sm font-semibold rounded-lg transition-colors ${i?"bg-red-600 hover:bg-red-500 text-white":"bg-white hover:bg-neutral-200 text-black"}`,children:d})]})]})]}),document.body):null}},6333:()=>{},9181:(e,t,r)=>{"use strict";r.d(t,{default:()=>m});var n=r(3680),a=r(8604),s=r(9504),l=r(4678);let d=(0,l.createServerReference)("408e203f348affcf78adf58badc7f441dcb09aa706",l.callServer,void 0,l.findSourceMapURL,"toggleScheduleAction"),o=(0,l.createServerReference)("4027c9eb7c179a2e12bf684055cb25c5968c7a4cfe",l.callServer,void 0,l.findSourceMapURL,"deleteScheduleAction");var i=r(4308),u=r(3732),c=r(1369);function m({schedule:e,agents:t}){let[r,l]=(0,a.useTransition)(),[x,h]=(0,a.useState)(!1),[p,b]=(0,a.useState)(!1);return p?(0,n.jsx)("div",{className:"space-y-2",children:(0,n.jsx)(u.default,{mode:"edit",agents:t,initial:e,onDone:()=>b(!1)})}):(0,n.jsxs)("div",{className:"bg-neutral-900 border border-neutral-800/60 rounded-xl p-5 space-y-3",children:[(0,n.jsxs)("div",{className:"flex items-start justify-between gap-3",children:[(0,n.jsxs)("div",{className:"space-y-1",children:[(0,n.jsxs)("div",{className:"flex items-center gap-2 flex-wrap",children:[(0,n.jsx)("h3",{className:"text-base font-semibold text-white",children:e.name}),(0,n.jsx)("span",{className:`px-2 py-0.5 rounded text-[10px] font-semibold uppercase tracking-wider ${e.active?"bg-emerald-500/15 text-emerald-400":"bg-neutral-800 text-neutral-500"}`,children:e.active?"active":"paused"})]}),(0,n.jsxs)("div",{className:"flex items-center gap-3 text-xs text-neutral-500 flex-wrap",children:[(0,n.jsx)("span",{children:(0,c._6)(e.cronExpr)}),e.agentName&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("span",{className:"text-neutral-700",children:"\xb7"}),(0,n.jsxs)("span",{children:[e.agentName," ",(0,n.jsx)("span",{className:"font-mono text-neutral-600",children:e.agentSlug})]})]})]}),(0,n.jsxs)("div",{className:"flex items-center gap-3 text-[10px] text-neutral-600",children:[e.nextRun&&e.active&&(0,n.jsxs)("span",{children:["Next run ",new Date(e.nextRun).toLocaleString()]}),e.lastRun&&(0,n.jsxs)("span",{children:["Last run ",new Date(e.lastRun).toLocaleString(),e.lastStatus&&(0,n.jsxs)("span",{className:`ml-1 ${"success"===e.lastStatus?"text-emerald-400":"failed"===e.lastStatus?"text-red-400":"text-neutral-500"}`,children:["(",e.lastStatus,")"]})]})]})]}),(0,n.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,n.jsx)("button",{type:"button",onClick:()=>b(!0),disabled:r,className:"px-2.5 py-1 text-xs font-medium border border-neutral-800 text-neutral-400 rounded-md hover:border-neutral-700 hover:text-white disabled:opacity-40",children:"Edit"}),(0,n.jsx)("button",{type:"button",onClick:function(){l(async()=>{let t=await d(e.id);t.ok?s.o.success(t.data.active?"Schedule enabled":"Schedule disabled"):s.o.error(t.message)})},disabled:r,className:"px-2.5 py-1 text-xs font-medium border border-neutral-800 text-neutral-400 rounded-md hover:border-neutral-700 hover:text-white disabled:opacity-40",children:e.active?"Pause":"Enable"}),(0,n.jsx)("button",{type:"button",onClick:()=>h(!0),disabled:r,className:"px-2.5 py-1 text-xs font-medium border border-red-900/40 text-red-400 rounded-md hover:border-red-700 hover:text-red-300 disabled:opacity-40",children:"Delete"})]})]}),e.task&&(0,n.jsxs)("details",{className:"bg-neutral-950 border border-neutral-800/40 rounded-md",children:[(0,n.jsx)("summary",{className:"cursor-pointer px-3 py-2 text-xs text-neutral-500 hover:text-neutral-300",children:"Task instructions"}),(0,n.jsx)("pre",{className:"px-3 pb-3 text-xs text-neutral-300 whitespace-pre-wrap",children:e.task})]}),(0,n.jsx)(i.A,{open:x,title:"Delete schedule?",message:"This cron schedule will be removed. Past runs are kept for audit.",confirmLabel:"Delete",onConfirm:function(){h(!1),l(async()=>{let t=await o(e.id);t.ok?s.o.success("Schedule deleted"):s.o.error(t.message)})},onCancel:()=>h(!1)})]})}}},e=>{e.O(0,[641,504,45,65,724,358],()=>e(e.s=982)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[250,345],{4050:(e,s,_)=>{Promise.resolve().then(_.t.bind(_,3363,23))}},e=>{e.O(0,[363,65,724,358],()=>e(e.s=4050)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[527],{2450:(e,t,n)=>{"use strict";n.d(t,{default:()=>o});var r=n(8604),a=n(7540),l=n(9504);function o({successLabel:e,errorMessage:t}){let n=(0,a.useRouter)(),s=(0,r.useRef)(!1);return(0,r.useEffect)(()=>{!s.current&&(s.current=!0,e&&(l.o.success(`${e} connected`),n.replace("/connectors")),t&&console.error("[OAuth] connection failed:",t))},[e,t,n]),null}},3275:(e,t,n)=>{"use strict";n.d(t,{default:()=>l});var r=n(3680),a=n(7540);function l({code:e,message:t}){let n=(0,a.useRouter)();return(0,r.jsx)("div",{role:"alert",className:"rounded-xl border border-red-900/40 bg-red-500/5 px-5 py-4 text-sm text-red-200",children:(0,r.jsxs)("div",{className:"flex items-start justify-between gap-3",children:[(0,r.jsxs)("div",{className:"space-y-1.5 min-w-0",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)("span",{"aria-hidden":"true",className:"font-bold text-red-300",children:"!"}),(0,r.jsx)("p",{className:"font-semibold text-red-100",children:"OAuth connection failed"}),(0,r.jsx)("code",{className:"font-mono text-[10px] text-red-300/80 bg-red-950/40 px-1.5 py-0.5 rounded",children:e})]}),(0,r.jsx)("p",{className:"text-red-200/90 leading-relaxed",children:t})]}),(0,r.jsx)("button",{type:"button",onClick:function(){n.replace("/connectors")},"aria-label":"Dismiss",className:"shrink-0 text-red-300/70 hover:text-red-100 transition-colors text-lg leading-none px-2 -mt-0.5",children:"\xd7"})]})})}},3756:(e,t,n)=>{"use strict";n.d(t,{default:()=>f});var r=n(3680),a=n(8604),l=n(9504),o=n(4678);let s=(0,o.createServerReference)("40f592e072817ad6226f35ec56ee68795ab50fbbcc",o.callServer,void 0,o.findSourceMapURL,"saveApiKeyConnectorAction"),c=(0,o.createServerReference)("4036c80fbbbf7681b51e0425774969eb9bf44a1c57",o.callServer,void 0,o.findSourceMapURL,"deleteConnectorAction"),d=(0,o.createServerReference)("600da3ee864c97178af244a4e77453171211545c7c",o.callServer,void 0,o.findSourceMapURL,"assignCredentialAction"),i=(0,o.createServerReference)("601aa685b0444bd7447e318dc38136f5f9760acdbb",o.callServer,void 0,o.findSourceMapURL,"createOrAssignOAuthConnectorAction"),u=(0,o.createServerReference)("403af77a8cddc8a7590ad3edc279a7098d07432522",o.callServer,void 0,o.findSourceMapURL,"refreshCredentialAction");var x=n(4308),b=n(8666),m=n(6762),p=n(900);let h=new Set(["notion-oauth"]);function f({entry:e,compatibleCredentials:t,catalogEntry:n}){let[o,y]=(0,a.useState)(!1),[g,j]=(0,a.useTransition)(),[N,k]=(0,a.useTransition)(),[w,S]=(0,a.useState)(!1),[C,R]=(0,a.useState)(!1),[A,T]=(0,a.useState)(e.connector?.credentialId??t[0]?.id??""),$="api_key"===e.authType,M="oauth2"===e.authType,D=!!e.connector?.active,U=M&&!h.has(n.credentialType??""),_=n.credentialType,L=e.connector?.credentialId??null,O=e.connector?.credentialName??null,E=e.connector?.credentialAccountName??null,K=e.connector?.credentialExpiresAt??null,F=e.connector?.credentialScopes??null,P=!!K&&K.getTime()<Date.now(),I=e.connector?e.connector.active?"connected":"inactive":"disconnected";return(0,r.jsxs)("div",{className:"bg-neutral-900 border border-neutral-800/60 rounded-xl p-5 space-y-4",children:[(0,r.jsxs)("div",{className:"flex items-start justify-between gap-3",children:[(0,r.jsxs)("div",{children:[(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)("h3",{className:"text-base font-semibold text-white",children:e.label}),(0,r.jsx)("span",{className:`inline-block px-2 py-0.5 rounded text-[10px] font-semibold uppercase tracking-wider ${"connected"===I?"bg-emerald-500/15 text-emerald-400":"inactive"===I?"bg-amber-500/15 text-amber-400":"bg-neutral-800 text-neutral-500"}`,children:I})]}),(0,r.jsxs)("p",{className:"text-xs text-neutral-500 mt-1 font-mono",children:[e.catalogSlug," \xb7 ",e.authType]}),E&&(0,r.jsx)("p",{className:"text-xs text-neutral-400 mt-1",children:E})]}),(0,r.jsx)("div",{className:"flex gap-2 shrink-0 flex-wrap justify-end",children:D&&M?(0,r.jsxs)(r.Fragment,{children:[U&&(0,r.jsx)("button",{type:"button",onClick:function(){L&&k(async()=>{let e=await u(L);e.ok?l.o.success("Token refreshed"):l.o.error(e.message??"Refresh failed")})},disabled:N||g,className:"px-3 py-1.5 text-xs font-medium border border-neutral-800 text-neutral-400 rounded-md hover:border-neutral-700 hover:text-white disabled:opacity-40",children:N?"Refreshing…":"Refresh now"}),(0,r.jsx)("button",{type:"button",onClick:()=>R(!0),disabled:g||N,className:"px-3 py-1.5 text-xs font-medium border border-neutral-800 text-neutral-400 rounded-md hover:border-neutral-700 hover:text-white disabled:opacity-40",children:"Reconnect"}),(0,r.jsx)("button",{type:"button",onClick:()=>y(e=>!e),disabled:g||N,className:"px-3 py-1.5 text-xs font-medium border border-neutral-800 text-neutral-400 rounded-md hover:border-neutral-700 hover:text-white disabled:opacity-40",children:o?"Cancel":"Switch credential"}),(0,r.jsx)("button",{type:"button",onClick:()=>S(!0),disabled:g||N,className:"px-3 py-1.5 text-xs font-medium border border-red-900/40 text-red-400 rounded-md hover:border-red-700 hover:text-red-300 disabled:opacity-40",children:"Disconnect"})]}):e.connector?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("button",{type:"button",onClick:()=>y(e=>!e),className:"px-3 py-1.5 text-xs font-medium border border-neutral-800 text-neutral-400 rounded-md hover:border-neutral-700 hover:text-white",children:o?"Cancel":"Edit"}),(0,r.jsx)("button",{type:"button",onClick:()=>S(!0),disabled:g,className:"px-3 py-1.5 text-xs font-medium border border-red-900/40 text-red-400 rounded-md hover:border-red-700 hover:text-red-300 disabled:opacity-40",children:"Disconnect"})]}):M?0===t.length?(0,r.jsxs)("button",{type:"button",onClick:()=>R(!0),className:"px-3 py-1.5 text-xs font-semibold bg-white text-black rounded-md hover:bg-neutral-200",children:["Connect with"," ",n.credentialType?v[n.credentialType]??e.label:e.label]}):(0,r.jsx)("button",{type:"button",onClick:()=>y(e=>!e),className:"px-3 py-1.5 text-xs font-semibold bg-white text-black rounded-md hover:bg-neutral-200",children:o?"Cancel":"Connect"}):(0,r.jsx)("button",{type:"button",onClick:()=>y(e=>!e),className:"px-3 py-1.5 text-xs font-semibold bg-white text-black rounded-md hover:bg-neutral-200",children:o?"Cancel":"Connect"})})]}),(0,r.jsx)("p",{className:"text-xs text-neutral-500",children:e.docsHint}),D&&M&&L&&(0,r.jsxs)("div",{className:"pt-2 border-t border-neutral-800/60 space-y-2",children:[O&&(0,r.jsxs)("p",{className:"text-xs text-neutral-400",children:["Credential: ",(0,r.jsx)("span",{className:"text-white font-medium",children:O})]}),F&&(0,r.jsx)("div",{className:"flex flex-wrap gap-1",children:F.split(/\s+/).map(e=>(0,r.jsx)("span",{className:"px-1.5 py-0.5 bg-neutral-800 text-neutral-400 rounded text-[10px] font-mono",children:e},e))}),U&&(0,r.jsx)("p",{className:"text-xs text-neutral-500",children:"Auto-refreshes when used"}),!U&&K&&(0,r.jsx)("p",{className:`text-xs ${P?"text-amber-400":"text-neutral-500"}`,children:function(e){let t;if(!e)return"";let n=Math.round((e.getTime()-Date.now())/1e3),r=Math.abs(n);return t=r<60?`${r}s`:r<3600?`${Math.round(r/60)} min`:r<86400?`${Math.round(r/3600)} h`:`${Math.round(r/86400)} d`,n>=0?`expires in ${t}`:`expired ${t} ago`}(K)})]}),M&&o&&(0,r.jsx)("div",{className:"space-y-3 pt-2 border-t border-neutral-800/60",children:t.length>0?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)("div",{children:[(0,r.jsx)("label",{className:"block text-xs text-neutral-500 mb-1",children:"Use credential"}),(0,r.jsx)("select",{value:A,onChange:e=>T(e.target.value),className:"w-full bg-neutral-800 border border-neutral-700 rounded-md px-2 py-1.5 text-sm text-white focus:border-neutral-500 focus:outline-none",children:t.map(e=>(0,r.jsxs)("option",{value:e.id,children:[e.name,e.accountName?` (${e.accountName})`:""]},e.id))})]}),(0,r.jsxs)("div",{className:"flex gap-2 items-center pt-1",children:[(0,r.jsx)("button",{type:"button",onClick:()=>A&&void j(async()=>{let t=e.connector?await d(e.connector.id,A):await i(e.catalogSlug,A);t.ok?(l.o.success(e.connector?`${e.label} credential updated`:`${e.label} connected`),y(!1)):l.o.error(t.message)}),disabled:g||!A,className:"px-4 py-2 text-sm font-semibold bg-white text-black rounded-md hover:bg-neutral-200 disabled:opacity-50",children:g?"Saving…":"Save"}),(0,r.jsx)("button",{type:"button",onClick:()=>R(!0),className:"px-3 py-1.5 text-xs text-neutral-500 hover:text-white underline",children:"or create new"})]})]}):(0,r.jsxs)("p",{className:"text-xs text-neutral-500",children:["No compatible credentials found."," ",(0,r.jsx)("button",{type:"button",onClick:()=>{y(!1),R(!0)},className:"text-indigo-400 hover:text-indigo-300 underline",children:"Create one"})]})}),$&&o&&(0,r.jsxs)("form",{onSubmit:function(t){t.preventDefault();let n=new FormData(t.currentTarget);j(async()=>{let t=await s({slug:e.catalogSlug,apiKey:n.get("apiKey"),name:n.get("name")||void 0});t.ok?(l.o.success(`${e.label} connected`),y(!1)):l.o.error(t.message)})},className:"space-y-3 pt-2 border-t border-neutral-800/60",children:[(0,r.jsxs)("div",{children:[(0,r.jsxs)("label",{htmlFor:"apikey-name",className:"block text-xs text-neutral-500 mb-1",children:["Display name ",(0,r.jsx)("span",{className:"text-neutral-700",children:"(optional)"})]}),(0,r.jsx)("input",{id:"apikey-name",name:"name",defaultValue:e.connector?.name??"",placeholder:e.label,className:"w-full bg-neutral-800 border border-neutral-700 rounded-md px-2 py-1.5 text-sm text-white placeholder-neutral-600 focus:border-neutral-500 focus:outline-none"})]}),p.m[e.catalogSlug]&&(0,r.jsxs)("details",{className:"group text-xs",children:[(0,r.jsx)("summary",{className:"cursor-pointer text-neutral-500 hover:text-neutral-300",children:"Where do I get this?"}),(0,r.jsx)("div",{className:"mt-3 pl-1",children:(0,r.jsx)(m.A,{guide:p.m[e.catalogSlug]})})]}),(0,r.jsxs)("div",{children:[(0,r.jsx)("label",{htmlFor:"apikey-apiKey",className:"block text-xs text-neutral-500 mb-1",children:"API key"}),(0,r.jsx)("input",{id:"apikey-apiKey",name:"apiKey",type:"password",required:!0,placeholder:e.connector?.hasApiKey?"•••••••• (leave blank to keep)":"",className:"w-full bg-neutral-800 border border-neutral-700 rounded-md px-2 py-1.5 text-sm text-white placeholder-neutral-600 focus:border-neutral-500 focus:outline-none font-mono"})]}),(0,r.jsx)("div",{className:"pt-1",children:(0,r.jsx)("button",{type:"submit",disabled:g,className:"px-4 py-2 text-sm font-semibold bg-white text-black rounded-md hover:bg-neutral-200 disabled:opacity-50",children:g?"Saving…":e.connector?"Update":"Connect"})})]}),(0,r.jsx)(x.A,{open:w,title:`Disconnect ${e.label}?`,message:"Tools that depend on this connector will fail until you reconnect. Existing job history is preserved.",confirmLabel:"Disconnect",onConfirm:M?function(){if(S(!1),!e.connector)return;let t=e.connector.id;j(async()=>{let n=await c(t);n.ok?l.o.success(`${e.label} disconnected`):l.o.error(n.message)})}:function(){if(S(!1),!e.connector)return;let t=e.connector.id;j(async()=>{let n=await c(t);n.ok?l.o.success(`${e.label} disconnected`):l.o.error(n.message)})},onCancel:()=>S(!1)}),C&&_&&(0,r.jsx)(b.A,{initialType:_,returnToConnectorSlug:e.catalogSlug,onClose:()=>R(!1)})]})}let v={"google-oauth":"Google","notion-oauth":"Notion","airtable-oauth":"Airtable"}},4678:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r={callServer:function(){return l.callServer},createServerReference:function(){return s.createServerReference},findSourceMapURL:function(){return o.findSourceMapURL}};for(var a in r)Object.defineProperty(t,a,{enumerable:!0,get:r[a]});let l=n(2673),o=n(3145),s=n(7478)},5838:(e,t,n)=>{Promise.resolve().then(n.bind(n,3756)),Promise.resolve().then(n.bind(n,3275)),Promise.resolve().then(n.bind(n,2450))}},e=>{e.O(0,[504,678,65,724,358],()=>e(e.s=5838)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[87],{113:(e,t,r)=>{Promise.resolve().then(r.bind(r,6448))},6448:(e,t,r)=>{"use strict";r.d(t,{default:()=>h});var s=r(3680),n=r(8604),a=r(7540),l=r(9504),o=r(3363),d=r.n(o),i=r(4308);let c=new Set(["google-oauth","airtable-oauth"]),x={"google-oauth":"Google","notion-oauth":"Notion","airtable-oauth":"Airtable"};function u({credential:e,onDelete:t,onRename:r,onRefresh:a}){var o;let[m,h]=(0,n.useState)(!1),[p,b]=(0,n.useState)(!1),[y,f]=(0,n.useState)(e.name),[g,N]=(0,n.useTransition)(),[j,v]=(0,n.useTransition)(),w=c.has(e.type),k=!!(o=e.expiresAt)&&o.getTime()<Date.now(),C=function(e){let t;if(!e)return"";let r=Math.round((e.getTime()-Date.now())/1e3),s=Math.abs(r);return t=s<60?`${s}s`:s<3600?`${Math.round(s/60)} min`:s<86400?`${Math.round(s/3600)} h`:`${Math.round(s/86400)} d`,r>=0?`expires in ${t}`:`expired ${t} ago`}(e.expiresAt),$=x[e.type]??e.type,D=e.inUseBy.length;function A(){let t=y.trim();t&&t!==e.name?N(async()=>{let s=await r(e.id,t);s.ok?(l.o.success("Credential renamed"),b(!1)):l.o.error(s.message)}):b(!1)}return(0,s.jsxs)("div",{className:"bg-neutral-900 border border-neutral-800/60 rounded-xl p-5 space-y-3",children:[(0,s.jsxs)("div",{className:"flex items-start justify-between gap-3",children:[(0,s.jsxs)("div",{className:"min-w-0",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2 flex-wrap",children:[(0,s.jsx)("h3",{className:"text-base font-semibold text-white truncate",children:e.name}),(0,s.jsx)("span",{className:"inline-block px-2 py-0.5 rounded text-[10px] font-semibold uppercase tracking-wider bg-indigo-500/15 text-indigo-400 shrink-0",children:$})]}),e.accountName&&(0,s.jsx)("p",{className:"text-xs text-neutral-400 mt-0.5",children:e.accountName}),w?(0,s.jsx)("p",{className:"text-xs text-neutral-500 mt-0.5",children:"Auto-refreshes when used"}):C?(0,s.jsx)("p",{className:`text-xs mt-0.5 ${k?"text-amber-400":"text-neutral-500"}`,children:C}):null]}),(0,s.jsxs)("div",{className:"flex gap-2 shrink-0 flex-wrap justify-end",children:[(0,s.jsx)("button",{type:"button",onClick:()=>b(!0),disabled:g||j,className:"px-3 py-1.5 text-xs font-medium border border-neutral-800 text-neutral-400 rounded-md hover:border-neutral-700 hover:text-white disabled:opacity-40",children:"Rename"}),w&&(0,s.jsx)("button",{type:"button",onClick:function(){v(async()=>{let t=await a(e.id);t.ok?l.o.success("Token refreshed"):l.o.error(t.message??"Refresh failed")})},disabled:j||g,className:"px-3 py-1.5 text-xs font-medium border border-neutral-800 text-neutral-400 rounded-md hover:border-neutral-700 hover:text-white disabled:opacity-40",children:j?"Refreshing…":"Refresh"}),(0,s.jsx)("button",{type:"button",onClick:()=>h(!0),disabled:g||j,className:"px-3 py-1.5 text-xs font-medium border border-red-900/40 text-red-400 rounded-md hover:border-red-700 hover:text-red-300 disabled:opacity-40",children:"Delete"})]})]}),e.decryptError&&(0,s.jsxs)("div",{className:"px-3 py-2 rounded border border-red-900/50 bg-red-950/30 text-xs text-red-300",children:[(0,s.jsx)("span",{className:"font-semibold",children:"Cannot decrypt this credential."})," The encrypted payload could not be read (master key changed or row corrupted). Delete and recreate it."]}),e.scopes&&(0,s.jsx)("div",{className:"flex flex-wrap gap-1",children:e.scopes.split(/\s+/).map(e=>(0,s.jsx)("span",{className:"px-1.5 py-0.5 bg-neutral-800 text-neutral-400 rounded text-[10px] font-mono",children:e},e))}),D>0&&(0,s.jsxs)("div",{className:"flex flex-wrap gap-1 items-center",children:[(0,s.jsx)("span",{className:"text-[10px] text-neutral-600 uppercase tracking-wider font-semibold mr-1",children:"Used by"}),e.inUseBy.map(e=>(0,s.jsx)(d(),{href:"/connectors",className:"px-2 py-0.5 rounded text-[10px] bg-neutral-800 text-neutral-400 hover:text-white hover:bg-neutral-700 transition-colors font-mono",children:e.connectorSlug},e.connectorId))]}),p&&(0,s.jsxs)("div",{className:"pt-2 border-t border-neutral-800/60 space-y-2",children:[(0,s.jsx)("label",{className:"block text-xs text-neutral-500",children:"New display name"}),(0,s.jsx)("input",{type:"text",value:y,onChange:e=>f(e.target.value),onKeyDown:e=>{"Enter"===e.key&&A(),"Escape"===e.key&&b(!1)},autoFocus:!0,className:"w-full bg-neutral-800 border border-neutral-700 rounded-md px-2 py-1.5 text-sm text-white focus:border-neutral-500 focus:outline-none"}),(0,s.jsxs)("div",{className:"flex gap-2",children:[(0,s.jsx)("button",{type:"button",onClick:A,disabled:g,className:"px-3 py-1.5 text-xs font-semibold bg-white text-black rounded-md hover:bg-neutral-200 disabled:opacity-50",children:g?"Saving…":"Save"}),(0,s.jsx)("button",{type:"button",onClick:()=>{b(!1),f(e.name)},className:"px-3 py-1.5 text-xs font-medium border border-neutral-800 text-neutral-400 rounded-md hover:border-neutral-700 hover:text-white",children:"Cancel"})]})]}),(0,s.jsx)(i.A,{open:m,title:`Delete "${e.name}"?`,message:D>0?`This credential is used by ${D} connector${1!==D?"s":""} which will be disconnected.`:"This credential will be permanently deleted.",confirmLabel:"Delete",onConfirm:function(){h(!1),N(async()=>{let r=await t(e.id);r.ok?l.o.success(`Credential "${e.name}" deleted`):l.o.error(r.message)})},onCancel:()=>h(!1)})]})}var m=r(8666);function h({credentials:e,justCreatedId:t,onDelete:r,onRename:o,onRefresh:d}){let i=(0,a.useRouter)(),c=(0,n.useRef)(!1),[x,p]=(0,n.useState)(!1);return(0,n.useEffect)(()=>{t&&!c.current&&(c.current=!0,l.o.success("Credential created"),i.replace("/credentials"))},[t,i]),(0,s.jsxs)("div",{className:"space-y-6 max-w-4xl",children:[(0,s.jsxs)("div",{className:"flex items-start justify-between gap-3",children:[(0,s.jsxs)("div",{children:[(0,s.jsx)("h1",{className:"text-2xl font-bold text-white",children:"Credentials"}),(0,s.jsx)("p",{className:"text-sm text-neutral-500 mt-0.5",children:0===e.length?"No credentials yet — create one to connect OAuth providers.":`${e.length} credential${1!==e.length?"s":""}`})]}),(0,s.jsx)("button",{type:"button",onClick:()=>p(!0),className:"shrink-0 px-4 py-2 text-sm font-semibold bg-white text-black rounded-md hover:bg-neutral-200",children:"+ New credential"})]}),0===e.length?(0,s.jsxs)("div",{className:"bg-neutral-900 border border-neutral-800/60 rounded-xl px-6 py-12 text-center",children:[(0,s.jsxs)("p",{className:"text-sm text-neutral-500",children:["Credentials store your OAuth client ID and secret securely (encrypted at rest).",(0,s.jsx)("br",{}),"Once created, multiple connectors can share the same credential."]}),(0,s.jsx)("button",{type:"button",onClick:()=>p(!0),className:"mt-4 px-4 py-2 text-sm font-semibold bg-white text-black rounded-md hover:bg-neutral-200",children:"Create your first credential"})]}):(0,s.jsx)("div",{className:"space-y-3",children:e.map(e=>(0,s.jsx)(u,{credential:e,onDelete:r,onRename:o,onRefresh:d},e.id))}),x&&(0,s.jsx)(m.A,{onClose:()=>p(!1)})]})}}},e=>{e.O(0,[363,504,678,65,724,358],()=>e(e.s=113)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[771],{3189:(e,r,t)=>{"use strict";t.d(r,{default:()=>b});var l=t(3680),a=t(8604),s=t(4678);let n=(0,s.createServerReference)("402490f531ec1ab6616055d7beb2e811c393644499",s.callServer,void 0,s.findSourceMapURL,"getJobStatusAction"),d={completed:{bg:"bg-emerald-950/50 border border-emerald-900/50",text:"text-emerald-400",dot:"bg-emerald-500",pulse:!1},failed:{bg:"bg-red-950/50 border border-red-900/50",text:"text-red-400",dot:"bg-red-500",pulse:!1},processing:{bg:"bg-amber-950/50 border border-amber-900/50",text:"text-amber-400",dot:"bg-amber-400",pulse:!0},pending:{bg:"bg-neutral-800/60 border border-neutral-700/50",text:"text-neutral-400",dot:"bg-neutral-500",pulse:!1},awaiting_approval:{bg:"bg-violet-950/50 border border-violet-900/50",text:"text-violet-400",dot:"bg-violet-400",pulse:!0},awaiting_delegation:{bg:"bg-blue-950/50 border border-blue-900/50",text:"text-blue-400",dot:"bg-blue-400",pulse:!0},cancelled:{bg:"bg-neutral-800/40 border border-neutral-700/30",text:"text-neutral-500",dot:"bg-neutral-600",pulse:!1}};function u({status:e}){let r=d[e]??d.pending;return(0,l.jsxs)("span",{className:`inline-flex items-center gap-1.5 px-2 py-0.5 rounded-md text-xs font-semibold ${r.bg} ${r.text}`,children:[(0,l.jsx)("span",{className:`w-1.5 h-1.5 rounded-full shrink-0 ${r.dot} ${r.pulse?"animate-pulse":""}`}),e]})}let o=new Set(["completed","failed","cancelled"]);function b({jobId:e,initialStatus:r}){let[t,s]=(0,a.useState)({status:r,result:null,error:null});return(0,a.useEffect)(()=>{if(o.has(t.status))return;let r=async()=>{let r=await n(e);r.ok&&s(r.data)},l=setInterval(()=>{r()},3e3);return()=>clearInterval(l)},[e,t.status]),(0,l.jsxs)("div",{className:"space-y-4",children:[(0,l.jsxs)("div",{className:"flex items-center gap-3",children:[(0,l.jsx)(u,{status:t.status}),!o.has(t.status)&&(0,l.jsx)("span",{className:"text-xs text-neutral-600 animate-pulse",children:"Polling…"})]}),t.result&&(0,l.jsxs)("div",{children:[(0,l.jsx)("p",{className:"text-xs text-neutral-500 font-semibold uppercase tracking-wider mb-1",children:"Result"}),(0,l.jsx)("pre",{className:"text-sm text-neutral-300 whitespace-pre-wrap bg-neutral-900 rounded-lg p-4 border border-neutral-800/60 max-h-80 overflow-auto",children:t.result})]}),t.error&&(0,l.jsxs)("div",{children:[(0,l.jsx)("p",{className:"text-xs text-red-400 font-semibold uppercase tracking-wider mb-1",children:"Error"}),(0,l.jsx)("pre",{className:"text-sm text-red-300 whitespace-pre-wrap bg-red-950/20 rounded-lg p-4 border border-red-900/40",children:t.error})]})]})}},4678:(e,r,t)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var l={callServer:function(){return s.callServer},createServerReference:function(){return d.createServerReference},findSourceMapURL:function(){return n.findSourceMapURL}};for(var a in l)Object.defineProperty(r,a,{enumerable:!0,get:l[a]});let s=t(2673),n=t(3145),d=t(7478)},6599:(e,r,t)=>{Promise.resolve().then(t.bind(t,3189)),Promise.resolve().then(t.t.bind(t,3363,23))}},e=>{e.O(0,[363,65,724,358],()=>e(e.s=6599)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[731],{3199:(e,t,r)=>{Promise.resolve().then(r.bind(r,7506)),Promise.resolve().then(r.t.bind(r,3363,23))},4678:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var a={callServer:function(){return s.callServer},createServerReference:function(){return o.createServerReference},findSourceMapURL:function(){return l.findSourceMapURL}};for(var n in a)Object.defineProperty(t,n,{enumerable:!0,get:a[n]});let s=r(2673),l=r(3145),o=r(7478)},7506:(e,t,r)=>{"use strict";r.d(t,{default:()=>u});var a=r(3680),n=r(8604),s=r(7540),l=r(9504),o=r(4678);let i=(0,o.createServerReference)("406ff824fdd4f44a6f654e27108c9d452e7be9e620",o.callServer,void 0,o.findSourceMapURL,"sendTaskAction");function u({agents:e}){let t=(0,n.useRef)(null),[r,o]=(0,n.useTransition)(),[d,c]=(0,n.useState)(!1),[m,b]=(0,n.useState)(""),x=(0,s.useRouter)(),h=e.find(e=>e.id===m);return d?(0,a.jsxs)("form",{ref:t,onSubmit:function(e){e.preventDefault();let r=Object.fromEntries(new FormData(e.currentTarget));o(async()=>{let e=await i(r);e.ok?(l.o.success("Task sent — job created"),t.current?.reset(),c(!1),x.push(`/jobs/${e.data.jobId}`)):l.o.error(e.message)})},className:"bg-neutral-900 border border-neutral-800/60 rounded-xl p-5 space-y-4 max-w-lg",children:[(0,a.jsx)("h3",{className:"text-sm font-semibold text-white",children:"Send a task"}),(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"block text-xs text-neutral-500 mb-1",htmlFor:"task-prompt",children:"Task description"}),(0,a.jsx)("textarea",{id:"task-prompt",name:"prompt",required:!0,rows:6,placeholder:"Summarise the last 10 emails from my inbox…",className:"w-full bg-neutral-800 border border-neutral-700 rounded-lg px-3 py-2 text-sm text-white placeholder-neutral-600 focus:border-neutral-500 focus:outline-none resize-y min-h-[80px]"})]}),(0,a.jsxs)("div",{className:"grid grid-cols-2 gap-3",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"block text-xs text-neutral-500 mb-1",htmlFor:"task-agent",children:"Assign to"}),(0,a.jsxs)("select",{id:"task-agent",name:"agentId",required:!0,value:m,onChange:e=>b(e.target.value),className:"w-full bg-neutral-800 border border-neutral-700 rounded-lg px-3 py-2 text-sm text-white focus:border-neutral-500 focus:outline-none",children:[(0,a.jsx)("option",{value:"",disabled:!0,children:"Select agent"}),e.map(e=>(0,a.jsxs)("option",{value:e.id,children:[e.name," (",e.slug,")"]},e.id))]})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"block text-xs text-neutral-500 mb-1",htmlFor:"task-priority",children:"Priority"}),(0,a.jsxs)("select",{id:"task-priority",name:"priority",defaultValue:"medium",className:"w-full bg-neutral-800 border border-neutral-700 rounded-lg px-3 py-2 text-sm text-white focus:border-neutral-500 focus:outline-none",children:[(0,a.jsx)("option",{value:"low",children:"Low"}),(0,a.jsx)("option",{value:"medium",children:"Medium"}),(0,a.jsx)("option",{value:"high",children:"High"})]})]})]}),h?.telegramBotToken&&h?.lastSeenChatIdTelegram&&(0,a.jsxs)("label",{className:"flex items-center gap-2 text-sm text-neutral-300",children:[(0,a.jsx)("input",{type:"checkbox",name:"sendViaTelegram",value:"true",className:"rounded border border-neutral-700 bg-neutral-800 accent-white"}),"Send result via Telegram (chat: ",h.lastSeenChatIdTelegram,")"]}),(0,a.jsxs)("div",{className:"flex gap-2 pt-1",children:[(0,a.jsx)("button",{type:"submit",disabled:r,className:"px-4 py-2 text-sm font-semibold bg-white text-black rounded-lg hover:bg-neutral-200 transition-colors disabled:opacity-50",children:r?"Sending…":"Send task"}),(0,a.jsx)("button",{type:"button",onClick:()=>c(!1),className:"px-4 py-2 text-sm font-medium border border-neutral-700 text-neutral-400 rounded-lg hover:border-neutral-600 transition-colors",children:"Cancel"})]})]}):(0,a.jsx)("button",{onClick:()=>c(!0),className:"px-4 py-2 text-sm font-medium bg-white text-black rounded-lg hover:bg-neutral-200 transition-colors",children:"+ Send task"})}},7540:(e,t,r)=>{"use strict";var a=r(1268);r.o(a,"usePathname")&&r.d(t,{usePathname:function(){return a.usePathname}}),r.o(a,"useRouter")&&r.d(t,{useRouter:function(){return a.useRouter}}),r.o(a,"useSearchParams")&&r.d(t,{useSearchParams:function(){return a.useSearchParams}})}},e=>{e.O(0,[363,504,65,724,358],()=>e(e.s=3199)),_N_E=e.O()}]);
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[305],{5056:(e,t,s)=>{"use strict";s.d(t,{default:()=>N});var n=s(3680),l=s(8604),a=s(3363),i=s.n(a),r=s(7540),o=s(8433),c=s(342),d=s(1513),h=s(4484),u=s(7696),m=s(8518),x=s(2089),f=s(4453),b=s(4792),g=s(7036),p=s(5543),j=s(6613),v=s(7223),w=s(4805);let k=[{section:null,items:[{href:"/stats",label:"Stats",icon:o.T},{href:"/agents",label:"Agents",icon:c.n}]},{section:"Data",items:[{href:"/jobs",label:"Jobs",icon:d.k},{href:"/memories",label:"Memories",icon:h.j},{href:"/connectors",label:"Connectors",icon:u.F},{href:"/credentials",label:"Credentials",icon:m.U},{href:"/skills",label:"Skills",icon:x.f}]},{section:"Automation",items:[{href:"/automations",label:"Automations",icon:f.E},{href:"/approvals",label:"Approvals",icon:b.o},{href:"/logs",label:"Logs",icon:g.m}]},{section:"Workspace",items:[{href:"/billing",label:"Billing",icon:p.S},{href:"/settings",label:"Settings",icon:j._}]}];function N({userMenu:e}){let t=(0,r.usePathname)(),[s,a]=(0,l.useState)(!1);return(0,l.useEffect)(()=>(queueMicrotask(()=>a(!1)),()=>void 0),[t]),(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("div",{className:"lg:hidden fixed top-0 left-0 right-0 z-40 flex items-center justify-between px-4 py-4 bg-neutral-950 border-b border-neutral-800/50",children:[(0,n.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,n.jsx)("span",{className:"text-emerald-500 font-mono text-sm",children:"$"}),(0,n.jsx)("span",{className:"text-sm font-mono font-bold text-white tracking-tight",children:"nodal-agents"})]}),(0,n.jsx)("button",{type:"button",onClick:()=>a(e=>!e),className:"text-neutral-400 hover:text-white transition-colors","aria-label":"Toggle menu",children:s?(0,n.jsx)(v.X,{size:20}):(0,n.jsx)(w.B,{size:20})})]}),s&&(0,n.jsx)("div",{className:"lg:hidden fixed inset-0 z-30 bg-black/60",onClick:()=>a(!1)}),(0,n.jsxs)("aside",{className:`fixed top-0 left-0 h-full z-40 w-56 bg-neutral-950 border-r border-neutral-800/50 flex flex-col transition-transform duration-200
|
|
2
|
+
${s?"translate-x-0":"-translate-x-full"} lg:translate-x-0`,children:[(0,n.jsxs)("div",{className:"flex items-center gap-1.5 px-5 py-5 border-b border-neutral-800/50",children:[(0,n.jsx)("span",{className:"text-emerald-500 font-mono text-sm",children:"$"}),(0,n.jsx)("span",{className:"text-sm font-mono font-bold text-white tracking-tight",children:"nodal-agents"})]}),(0,n.jsx)("nav",{className:"flex-1 overflow-y-auto py-3 px-2",children:k.map((e,s)=>(0,n.jsxs)("div",{className:"mb-4",children:[e.section&&(0,n.jsx)("p",{className:"px-3 mb-1 text-[10px] font-semibold uppercase tracking-widest text-neutral-600",children:e.section}),e.items.map(e=>{let s=t===e.href||t.startsWith(e.href+"/"),l=e.icon;return(0,n.jsxs)(i(),{href:e.href,className:`flex items-center gap-2.5 px-3 py-2 rounded-lg text-sm transition-colors mb-0.5 ${s?"bg-neutral-800/60 text-white font-medium":"text-neutral-400 hover:text-white hover:bg-neutral-800/30"}`,children:[(0,n.jsx)(l,{size:16,weight:s?"fill":"regular"}),e.label]},e.href)})]},s))}),e&&(0,n.jsx)("div",{className:"border-t border-neutral-800/50 p-3","data-testid":"user-menu",children:e})]})]})}},7345:(e,t,s)=>{"use strict";s.d(t,{default:()=>i});var n=s(3680),l=s(8604),a=s(472);function i(){let[e,t]=(0,l.useState)(!1);async function s(){t(!0);try{let e=await fetch("/api/auth/sign-out",{method:"POST",headers:{"Content-Type":"application/json"},body:"{}",credentials:"same-origin"});e.ok||console.error("sign-out failed",e.status,await e.text().catch(()=>""))}catch(e){console.error("sign-out network error",e)}window.location.replace("/login")}return(0,n.jsx)("button",{type:"button",onClick:s,disabled:e,"data-testid":"user-menu-sign-out","aria-label":"Sign out",title:"Sign out",className:"shrink-0 inline-flex items-center justify-center w-8 h-8 rounded-md text-neutral-500 hover:text-white hover:bg-neutral-800/60 transition-colors disabled:opacity-40 disabled:cursor-not-allowed",children:(0,n.jsx)(a.M,{size:15})})}},8917:(e,t,s)=>{Promise.resolve().then(s.bind(s,5056)),Promise.resolve().then(s.bind(s,7345)),Promise.resolve().then(s.bind(s,9504))}},e=>{e.O(0,[363,504,511,65,724,358],()=>e(e.s=8917)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[996],{2270:(e,t,r)=>{"use strict";r.d(t,{default:()=>i});var l=r(3680),a=r(3363),s=r.n(a),n=r(8604);function d(e){return!!e&&/^(error|\[ERROR|Error:|RuntimeError)/i.test(e.trim())}function o(e){if(null==e)return"—";if("string"==typeof e)try{return JSON.stringify(JSON.parse(e),null,2)}catch{return e}try{return JSON.stringify(e,null,2)}catch{return String(e)}}function i({items:e}){let[t,r]=(0,n.useState)(null);return(0,l.jsx)("div",{className:"bg-neutral-900 border border-neutral-800/60 rounded-xl overflow-hidden",children:(0,l.jsxs)("table",{className:"w-full text-sm",children:[(0,l.jsx)("thead",{children:(0,l.jsxs)("tr",{className:"border-b border-neutral-800/60",children:[(0,l.jsx)("th",{className:"text-left px-5 py-3 text-xs text-neutral-500 font-semibold uppercase tracking-wider",children:"Time"}),(0,l.jsx)("th",{className:"text-left px-5 py-3 text-xs text-neutral-500 font-semibold uppercase tracking-wider",children:"Tool"}),(0,l.jsx)("th",{className:"text-left px-5 py-3 text-xs text-neutral-500 font-semibold uppercase tracking-wider hidden md:table-cell",children:"Agent"}),(0,l.jsx)("th",{className:"text-left px-5 py-3 text-xs text-neutral-500 font-semibold uppercase tracking-wider hidden lg:table-cell",children:"Duration"}),(0,l.jsx)("th",{className:"text-left px-5 py-3 text-xs text-neutral-500 font-semibold uppercase tracking-wider hidden lg:table-cell",children:"Job"})]})}),(0,l.jsx)("tbody",{children:e.map(e=>{var a;let i=t===e.id;return(0,l.jsxs)(n.Fragment,{children:[(0,l.jsxs)("tr",{className:`border-b border-neutral-800/40 last:border-0 align-top cursor-pointer transition-colors ${i?"bg-neutral-800/40":"hover:bg-neutral-800/20"}`,onClick:()=>r(i?null:e.id),"aria-expanded":i,"data-testid":`log-row-${e.id}`,children:[(0,l.jsxs)("td",{className:"px-5 py-3 text-xs text-neutral-500 whitespace-nowrap",children:[e.createdAt?new Date(e.createdAt).toLocaleTimeString():"—",(0,l.jsx)("div",{className:"text-[10px] text-neutral-600",children:e.createdAt?new Date(e.createdAt).toLocaleDateString():""})]}),(0,l.jsxs)("td",{className:"px-5 py-3",children:[(0,l.jsx)("code",{className:`font-mono text-xs ${d(e.toolOutput)?"text-red-400":"text-violet-400"}`,children:e.toolName}),d(e.toolOutput)&&(0,l.jsx)("span",{className:"ml-2 text-[10px] font-semibold text-red-400 uppercase",children:"error"}),null!==e.turn&&(0,l.jsxs)("span",{className:"ml-2 text-[10px] text-neutral-600",children:["turn ",e.turn]})]}),(0,l.jsx)("td",{className:"hidden md:table-cell px-5 py-3 text-xs",onClick:e=>e.stopPropagation(),children:e.agentName?(0,l.jsx)(s(),{href:`/logs?agent=${e.agentId}`,className:"text-neutral-300 hover:text-white",children:e.agentName}):(0,l.jsx)("span",{className:"text-neutral-600",children:"—"})}),(0,l.jsx)("td",{className:"hidden lg:table-cell px-5 py-3 text-xs text-neutral-400",children:null==(a=e.durationMs)?"—":a<1e3?`${a}ms`:`${(a/1e3).toFixed(1)}s`}),(0,l.jsx)("td",{className:"hidden lg:table-cell px-5 py-3",onClick:e=>e.stopPropagation(),children:e.jobId?(0,l.jsx)(s(),{href:`/jobs/${e.jobId}`,className:"font-mono text-xs text-neutral-500 hover:text-white",children:e.jobId.slice(0,8)}):(0,l.jsx)("span",{className:"text-neutral-600",children:"—"})})]}),i&&(0,l.jsx)("tr",{className:"border-b border-neutral-800/40 bg-neutral-950/50","data-testid":`log-detail-${e.id}`,children:(0,l.jsx)("td",{colSpan:5,className:"px-5 py-4",children:(0,l.jsxs)("div",{className:"grid gap-4 md:grid-cols-2",children:[(0,l.jsxs)("div",{children:[(0,l.jsx)("div",{className:"text-[10px] uppercase tracking-wider text-neutral-500 mb-1.5",children:"Input"}),(0,l.jsx)("pre",{className:"text-[11px] text-neutral-300 bg-neutral-950 border border-neutral-800 rounded-md px-3 py-2 overflow-x-auto whitespace-pre-wrap break-all max-h-96 overflow-y-auto",children:o(e.toolInput)})]}),(0,l.jsxs)("div",{children:[(0,l.jsx)("div",{className:"text-[10px] uppercase tracking-wider text-neutral-500 mb-1.5",children:"Output"}),(0,l.jsx)("pre",{className:`text-[11px] bg-neutral-950 border rounded-md px-3 py-2 overflow-x-auto whitespace-pre-wrap break-all max-h-96 overflow-y-auto ${d(e.toolOutput)?"text-red-300 border-red-900/40":"text-neutral-300 border-neutral-800"}`,children:o(e.toolOutput)})]})]})})})]},e.id)})})]})})}},4504:(e,t,r)=>{"use strict";r.d(t,{default:()=>n});var l=r(3680),a=r(7540),s=r(8604);function n({agents:e,toolNames:t}){let r=(0,a.useRouter)(),d=(0,a.useSearchParams)(),[o,i]=(0,s.useTransition)(),c=d.get("agent")??"",u=d.get("tool")??"";function x(e){let t=new URLSearchParams(d.toString());for(let[r,l]of Object.entries(e))l?t.set(r,l):t.delete(r);t.delete("page"),i(()=>{r.replace(`/logs?${t.toString()}`)})}return(0,l.jsxs)("div",{className:"flex flex-wrap items-end gap-3 bg-neutral-900 border border-neutral-800/60 rounded-xl px-4 py-3",children:[(0,l.jsxs)("div",{className:"flex-1 min-w-[180px]",children:[(0,l.jsx)("label",{className:"block text-[10px] uppercase tracking-wider text-neutral-500 mb-1",children:"Agent"}),(0,l.jsxs)("select",{value:c,onChange:e=>x({agent:e.target.value||null}),disabled:o,className:"w-full bg-neutral-800 border border-neutral-700 rounded-md px-2 py-1.5 text-sm text-white focus:border-neutral-500 focus:outline-none",children:[(0,l.jsx)("option",{value:"",children:"All agents"}),e.map(e=>(0,l.jsx)("option",{value:e.id,children:e.name},e.id))]})]}),(0,l.jsxs)("div",{className:"flex-1 min-w-[200px]",children:[(0,l.jsx)("label",{className:"block text-[10px] uppercase tracking-wider text-neutral-500 mb-1",children:"Tool name"}),(0,l.jsxs)("select",{value:u,onChange:e=>x({tool:e.target.value||null}),disabled:o,className:"w-full bg-neutral-800 border border-neutral-700 rounded-md px-2 py-1.5 text-sm text-white focus:border-neutral-500 focus:outline-none font-mono",children:[(0,l.jsx)("option",{value:"",children:"All tools"}),t.map(e=>(0,l.jsx)("option",{value:e,children:e},e))]})]})]})}},7540:(e,t,r)=>{"use strict";var l=r(1268);r.o(l,"usePathname")&&r.d(t,{usePathname:function(){return l.usePathname}}),r.o(l,"useRouter")&&r.d(t,{useRouter:function(){return l.useRouter}}),r.o(l,"useSearchParams")&&r.d(t,{useSearchParams:function(){return l.useSearchParams}})},9477:(e,t,r)=>{Promise.resolve().then(r.bind(r,4504)),Promise.resolve().then(r.bind(r,2270)),Promise.resolve().then(r.t.bind(r,3363,23))}},e=>{e.O(0,[363,65,724,358],()=>e(e.s=9477)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[244],{1204:(e,t,r)=>{Promise.resolve().then(r.bind(r,3315)),Promise.resolve().then(r.bind(r,8203)),Promise.resolve().then(r.t.bind(r,3363,23))},3315:(e,t,r)=>{"use strict";r.d(t,{default:()=>u});var n=r(3680),a=r(8604),l=r(9504),o=r(4678);let s=(0,o.createServerReference)("40ee84d73cd36a07e60542045b5c1f849b82a07d7f",o.callServer,void 0,o.findSourceMapURL,"unarchiveMemoryAction"),c=(0,o.createServerReference)("40c6341922e2afaf4eec92be3f81c206d591802776",o.callServer,void 0,o.findSourceMapURL,"archiveMemoryAction"),i=(0,o.createServerReference)("400136355083428342bf17e243ce78ceeb405e6ebc",o.callServer,void 0,o.findSourceMapURL,"deleteMemoryAction");var d=r(4308);function u({id:e,archived:t}){let[r,o]=(0,a.useTransition)(),[m,x]=(0,a.useState)(!1);return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,n.jsx)("button",{type:"button",onClick:function(){o(async()=>{let r=await (t?s:c)(e);r.ok?l.o.success(t?"Memory restored":"Memory archived"):l.o.error(r.message)})},disabled:r,className:"px-2.5 py-1 text-xs font-medium border border-neutral-800 text-neutral-400 rounded-md hover:border-neutral-700 hover:text-white transition-colors disabled:opacity-40",children:t?"Restore":"Archive"}),(0,n.jsx)("button",{type:"button",onClick:()=>x(!0),disabled:r,className:"px-2.5 py-1 text-xs font-medium border border-red-900/40 text-red-400 rounded-md hover:border-red-700 hover:text-red-300 transition-colors disabled:opacity-40",children:"Delete"})]}),(0,n.jsx)(d.A,{open:m,title:"Delete memory?",message:"This memory will be permanently removed. This action cannot be undone.",confirmLabel:"Delete",onConfirm:function(){x(!1),o(async()=>{let t=await i(e);t.ok?l.o.success("Memory deleted"):l.o.error(t.message)})},onCancel:()=>x(!1)})]})}},4308:(e,t,r)=>{"use strict";r.d(t,{A:()=>o});var n=r(3680),a=r(8604),l=r(1869);function o({open:e,title:t,message:r,confirmLabel:s="Confirm",cancelLabel:c="Cancel",destructive:i=!0,onConfirm:d,onCancel:u}){let m=(0,a.useRef)(null),[x,b]=(0,a.useState)(!1);return((0,a.useEffect)(()=>{b(!0)},[]),(0,a.useEffect)(()=>{if(e)return m.current?.focus(),window.addEventListener("keydown",t),()=>window.removeEventListener("keydown",t);function t(e){"Escape"===e.key&&u()}},[e,u]),e&&x)?(0,l.createPortal)((0,n.jsxs)("div",{role:"dialog","aria-modal":"true","aria-labelledby":"confirm-dialog-title",className:"fixed inset-0 z-50 flex items-center justify-center px-4 text-left",children:[(0,n.jsx)("div",{className:"absolute inset-0 bg-black/60 backdrop-blur-sm",onClick:u,"aria-hidden":"true"}),(0,n.jsxs)("div",{className:"relative bg-neutral-900 border border-neutral-800/60 rounded-xl p-6 max-w-md w-full shadow-2xl",children:[(0,n.jsx)("h2",{id:"confirm-dialog-title",className:"text-base font-semibold text-white",children:t}),r&&(0,n.jsx)("p",{className:"mt-2 text-sm text-neutral-400 leading-relaxed",children:r}),(0,n.jsxs)("div",{className:"mt-6 flex justify-end gap-2",children:[(0,n.jsx)("button",{ref:m,type:"button",onClick:u,className:"px-4 py-2 text-sm font-medium border border-neutral-700 text-neutral-300 rounded-lg hover:border-neutral-600 hover:text-white transition-colors",children:c}),(0,n.jsx)("button",{type:"button",onClick:d,className:`px-4 py-2 text-sm font-semibold rounded-lg transition-colors ${i?"bg-red-600 hover:bg-red-500 text-white":"bg-white hover:bg-neutral-200 text-black"}`,children:s})]})]})]}),document.body):null}},4678:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n={callServer:function(){return l.callServer},createServerReference:function(){return s.createServerReference},findSourceMapURL:function(){return o.findSourceMapURL}};for(var a in n)Object.defineProperty(t,a,{enumerable:!0,get:n[a]});let l=r(2673),o=r(3145),s=r(7478)},7540:(e,t,r)=>{"use strict";var n=r(1268);r.o(n,"usePathname")&&r.d(t,{usePathname:function(){return n.usePathname}}),r.o(n,"useRouter")&&r.d(t,{useRouter:function(){return n.useRouter}}),r.o(n,"useSearchParams")&&r.d(t,{useSearchParams:function(){return n.useSearchParams}})},8203:(e,t,r)=>{"use strict";r.d(t,{default:()=>s});var n=r(3680),a=r(7540),l=r(8604);let o=["preference","context","outcome","learned_rule"];function s({agents:e}){let t=(0,a.useRouter)(),r=(0,a.useSearchParams)(),[c,i]=(0,l.useTransition)(),d=r.get("agent")??"",u=r.get("category")??"",m=r.get("tag")??"",x="1"===r.get("archived");function b(e){let n=new URLSearchParams(r.toString());for(let[t,r]of Object.entries(e))r?n.set(t,r):n.delete(t);n.delete("page"),i(()=>{t.replace(`/memories?${n.toString()}`)})}return(0,n.jsxs)("div",{className:"flex flex-wrap items-center gap-3 bg-neutral-900 border border-neutral-800/60 rounded-xl px-4 py-3",children:[(0,n.jsxs)("div",{className:"flex-1 min-w-[180px]",children:[(0,n.jsx)("label",{className:"block text-[10px] uppercase tracking-wider text-neutral-500 mb-1",children:"Agent"}),(0,n.jsxs)("select",{value:d,onChange:e=>b({agent:e.target.value||null}),disabled:c,className:"w-full bg-neutral-800 border border-neutral-700 rounded-md px-2 py-1.5 text-sm text-white focus:border-neutral-500 focus:outline-none",children:[(0,n.jsx)("option",{value:"",children:"All agents"}),e.map(e=>(0,n.jsx)("option",{value:e.id,children:e.name},e.id))]})]}),(0,n.jsxs)("div",{className:"flex-1 min-w-[140px]",children:[(0,n.jsx)("label",{className:"block text-[10px] uppercase tracking-wider text-neutral-500 mb-1",children:"Category"}),(0,n.jsxs)("select",{value:u,onChange:e=>b({category:e.target.value||null}),disabled:c,className:"w-full bg-neutral-800 border border-neutral-700 rounded-md px-2 py-1.5 text-sm text-white focus:border-neutral-500 focus:outline-none",children:[(0,n.jsx)("option",{value:"",children:"All"}),o.map(e=>(0,n.jsx)("option",{value:e,children:e},e))]})]}),(0,n.jsxs)("div",{className:"flex-1 min-w-[160px]",children:[(0,n.jsx)("label",{className:"block text-[10px] uppercase tracking-wider text-neutral-500 mb-1",children:"Tag"}),(0,n.jsx)("input",{type:"text",defaultValue:m,onBlur:e=>b({tag:e.target.value.trim()||null}),onKeyDown:e=>{"Enter"===e.key&&e.target.blur()},placeholder:"any",disabled:c,className:"w-full bg-neutral-800 border border-neutral-700 rounded-md px-2 py-1.5 text-sm text-white placeholder-neutral-600 focus:border-neutral-500 focus:outline-none"})]}),(0,n.jsxs)("label",{className:"flex items-center gap-2 text-sm text-neutral-300 mt-5 cursor-pointer",children:[(0,n.jsx)("input",{type:"checkbox",checked:x,onChange:e=>b({archived:e.target.checked?"1":null}),disabled:c,className:"accent-violet-500"}),"Show archived"]})]})}}},e=>{e.O(0,[363,504,65,724,358],()=>e(e.s=1204)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[670],{3217:(e,t,r)=>{"use strict";function a(e){switch(e){case"openai-compatible":return"Local LLM";case"anthropic":return"Anthropic";case"openai":return"OpenAI";case"ollama":return"Ollama";case"openrouter":return"OpenRouter";case"google":return"Google";case"mistral":return"Mistral";case"groq":return"Groq";default:return e}}r.d(t,{R:()=>a})},4308:(e,t,r)=>{"use strict";r.d(t,{A:()=>o});var a=r(3680),s=r(8604),n=r(1869);function o({open:e,title:t,message:r,confirmLabel:l="Confirm",cancelLabel:i="Cancel",destructive:d=!0,onConfirm:c,onCancel:u}){let m=(0,s.useRef)(null),[x,p]=(0,s.useState)(!1);return((0,s.useEffect)(()=>{p(!0)},[]),(0,s.useEffect)(()=>{if(e)return m.current?.focus(),window.addEventListener("keydown",t),()=>window.removeEventListener("keydown",t);function t(e){"Escape"===e.key&&u()}},[e,u]),e&&x)?(0,n.createPortal)((0,a.jsxs)("div",{role:"dialog","aria-modal":"true","aria-labelledby":"confirm-dialog-title",className:"fixed inset-0 z-50 flex items-center justify-center px-4 text-left",children:[(0,a.jsx)("div",{className:"absolute inset-0 bg-black/60 backdrop-blur-sm",onClick:u,"aria-hidden":"true"}),(0,a.jsxs)("div",{className:"relative bg-neutral-900 border border-neutral-800/60 rounded-xl p-6 max-w-md w-full shadow-2xl",children:[(0,a.jsx)("h2",{id:"confirm-dialog-title",className:"text-base font-semibold text-white",children:t}),r&&(0,a.jsx)("p",{className:"mt-2 text-sm text-neutral-400 leading-relaxed",children:r}),(0,a.jsxs)("div",{className:"mt-6 flex justify-end gap-2",children:[(0,a.jsx)("button",{ref:m,type:"button",onClick:u,className:"px-4 py-2 text-sm font-medium border border-neutral-700 text-neutral-300 rounded-lg hover:border-neutral-600 hover:text-white transition-colors",children:i}),(0,a.jsx)("button",{type:"button",onClick:c,className:`px-4 py-2 text-sm font-semibold rounded-lg transition-colors ${d?"bg-red-600 hover:bg-red-500 text-white":"bg-white hover:bg-neutral-200 text-black"}`,children:l})]})]})]}),document.body):null}},4678:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var a={callServer:function(){return n.callServer},createServerReference:function(){return l.createServerReference},findSourceMapURL:function(){return o.findSourceMapURL}};for(var s in a)Object.defineProperty(t,s,{enumerable:!0,get:a[s]});let n=r(2673),o=r(3145),l=r(7478)},4962:(e,t,r)=>{"use strict";r.d(t,{default:()=>d});var a=r(3680),s=r(8604),n=r(9504),o=r(4678);let l=(0,o.createServerReference)("408e285ce3e953613af24846af0f2dc6a56012a71d",o.callServer,void 0,o.findSourceMapURL,"updateAuthSettingsAction");var i=r(4308);function d({initial:e}){let[t,r]=(0,s.useState)(e.configuredMode),[o,u]=(0,s.useState)(!1),[m,x]=(0,s.useTransition)(),[p,h]=(0,s.useState)(!1),[b,g]=(0,s.useState)(!1),f=t!==e.runtimeMode;return(0,a.jsxs)("form",{onSubmit:function(e){e.preventDefault();let r=new FormData(e.currentTarget);x(async()=>{let e=await l({mode:t,googleClientId:o?r.get("googleClientId"):void 0,googleClientSecret:o?r.get("googleClientSecret"):void 0,clearGoogle:!1});e.ok?(n.o.success("Auth settings saved"),h(e.data.requiresRestart)):n.o.error(e.message)})},className:"space-y-4",children:[(0,a.jsxs)("fieldset",{className:"space-y-2",children:[(0,a.jsx)("legend",{className:"block text-xs text-neutral-500 mb-2",children:"Auth mode"}),(0,a.jsx)(c,{checked:"local-trust"===t,onChange:()=>r("local-trust"),label:"No auth (local-trust)",subtitle:"Single hardcoded user. Recommended for solo loopback installs."}),(0,a.jsx)(c,{checked:"local-auth"===t,onChange:()=>r("local-auth"),label:"Email + password (local-auth)",subtitle:"Sign-up + login via better-auth. Optional Google OAuth on top."})]}),"local-auth"===t&&(0,a.jsxs)("div",{className:"bg-neutral-950 border border-neutral-800/40 rounded-lg p-4 space-y-3",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"text-sm text-white",children:"Google OAuth"}),(0,a.jsx)("div",{className:"text-xs text-neutral-500",children:e.googleConfigured?"Configured.":"Optional. Add to allow Google sign-in alongside email + password."})]}),(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)("button",{type:"button",onClick:()=>u(e=>!e),className:"px-3 py-1.5 text-xs font-medium border border-neutral-800 text-neutral-400 rounded-md hover:border-neutral-700 hover:text-white",children:o?"Hide fields":e.googleConfigured?"Rotate":"Add"}),e.googleConfigured&&(0,a.jsx)("button",{type:"button",onClick:()=>g(!0),disabled:m,className:"px-3 py-1.5 text-xs font-medium border border-red-900/40 text-red-400 rounded-md hover:border-red-700 hover:text-red-300 disabled:opacity-40",children:"Remove"})]})]}),o&&(0,a.jsxs)("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-3",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"block text-xs text-neutral-500 mb-1",htmlFor:"google-client-id",children:"Client ID"}),(0,a.jsx)("input",{id:"google-client-id",name:"googleClientId",type:"text",placeholder:"xxx.apps.googleusercontent.com",className:"w-full bg-neutral-800 border border-neutral-700 rounded-md px-2 py-1.5 text-sm text-white placeholder-neutral-600 focus:border-neutral-500 focus:outline-none font-mono"})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"block text-xs text-neutral-500 mb-1",htmlFor:"google-client-secret",children:"Client secret"}),(0,a.jsx)("input",{id:"google-client-secret",name:"googleClientSecret",type:"password",placeholder:e.googleConfigured?"•••••••• (overwrite)":"",className:"w-full bg-neutral-800 border border-neutral-700 rounded-md px-2 py-1.5 text-sm text-white placeholder-neutral-600 focus:border-neutral-500 focus:outline-none font-mono"})]}),(0,a.jsxs)("p",{className:"sm:col-span-2 text-[11px] text-neutral-600",children:["Use authorized JavaScript origins"," ",(0,a.jsx)("code",{className:"font-mono",children:"http://localhost:3000"})," and redirect URI"," ",(0,a.jsx)("code",{className:"font-mono",children:"http://localhost:3000/api/auth/callback/google"})," in the Google Cloud Console."]})]})]}),!e.configPathExists&&(0,a.jsxs)("div",{className:"bg-amber-500/10 border border-amber-500/30 rounded-md px-3 py-2 text-xs text-amber-300",children:["~/.nodalai/config.json wasn't found. Save here will fail until you've run"," ",(0,a.jsx)("code",{className:"font-mono",children:"nodal-agents init"})," at least once."]}),(0,a.jsxs)("div",{className:"flex items-center gap-3",children:[(0,a.jsx)("button",{type:"submit",disabled:m,className:"px-4 py-2 text-sm font-semibold bg-white text-black rounded-md hover:bg-neutral-200 disabled:opacity-50",children:m?"Saving…":"Save"}),f&&(0,a.jsxs)("span",{className:"text-xs text-amber-400",children:["New mode ",(0,a.jsx)("code",{className:"font-mono",children:t})," requires"," ",(0,a.jsx)("code",{className:"font-mono",children:"nodal-agents down && nodal-agents up"})," to take effect."]})]}),p&&(0,a.jsxs)("div",{className:"bg-emerald-500/10 border border-emerald-500/30 rounded-md px-3 py-2 text-xs text-emerald-300",children:["Saved. Restart with"," ",(0,a.jsx)("code",{className:"font-mono",children:"nodal-agents down && nodal-agents up"})," to activate the new auth mode."]}),(0,a.jsx)(i.A,{open:b,title:"Remove Google OAuth credentials?",message:"The clientId and clientSecret will be removed from ~/.nodalai/config.json. Users with active Google sessions will need to sign in again with email + password.",confirmLabel:"Remove",onConfirm:function(){g(!1),x(async()=>{let e=await l({mode:t,clearGoogle:!0});e.ok?n.o.success("Google credentials removed"):n.o.error(e.message)})},onCancel:()=>g(!1)})]})}function c({checked:e,onChange:t,label:r,subtitle:s}){return(0,a.jsxs)("label",{className:`flex items-start gap-3 px-3 py-2 rounded-md cursor-pointer border ${e?"border-violet-500/50 bg-violet-500/5":"border-neutral-800 hover:border-neutral-700"}`,children:[(0,a.jsx)("input",{type:"radio",checked:e,onChange:t,className:"mt-1 accent-violet-500"}),(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"text-sm text-white",children:r}),(0,a.jsx)("div",{className:"text-xs text-neutral-500",children:s})]})]})}},5534:(e,t,r)=>{Promise.resolve().then(r.bind(r,9689)),Promise.resolve().then(r.bind(r,7409)),Promise.resolve().then(r.bind(r,4962))},7409:(e,t,r)=>{"use strict";r.d(t,{default:()=>i});var a=r(3680),s=r(8604),n=r(9504),o=r(4678);let l=(0,o.createServerReference)("40db68977baa289b621f83b06e60258f44d26fee48",o.callServer,void 0,o.findSourceMapURL,"updateNetworkSettingsAction");function i({initial:e}){let[t,r]=(0,s.useState)(e.configuredBind),[o,c]=(0,s.useTransition)(),[u,m]=(0,s.useState)(!1),x=t!==e.runtimeBind;async function p(e){try{await navigator.clipboard.writeText(e),n.o.success("Copied")}catch{n.o.error("Could not copy")}}return(0,a.jsxs)("form",{onSubmit:function(e){e.preventDefault(),c(async()=>{let e=await l({bind:t});e.ok?(n.o.success("Network settings saved"),m(e.data.requiresRestart)):n.o.error(e.message)})},className:"space-y-4",children:[(0,a.jsxs)("fieldset",{className:"space-y-2",children:[(0,a.jsx)("legend",{className:"block text-xs text-neutral-500 mb-2",children:"Network access"}),(0,a.jsx)(d,{checked:"loopback"===t,onChange:()=>r("loopback"),label:"Local only (127.0.0.1)",subtitle:"Only this machine can reach the dashboard. No auth required by default."}),(0,a.jsx)(d,{checked:"lan"===t,onChange:()=>r("lan"),label:"LAN (0.0.0.0) — accessible from your network",subtitle:"Other devices on the same Wi-Fi can reach the dashboard. Sign-in required (local-auth)."})]}),"lan"===t&&e.lanAddresses.length>0&&(0,a.jsxs)("div",{className:"bg-neutral-950 border border-neutral-800/40 rounded-lg p-4 space-y-2",children:[(0,a.jsx)("div",{className:"text-xs text-neutral-500",children:"From your phone or another device on the same network, open:"}),(0,a.jsx)("ul",{className:"space-y-1.5",children:e.lanAddresses.map(t=>{let r=`http://${t}:${e.webPort}`;return(0,a.jsxs)("li",{className:"flex items-center justify-between gap-3",children:[(0,a.jsx)("code",{className:"font-mono text-sm text-white break-all",children:r}),(0,a.jsx)("button",{type:"button",onClick:()=>p(r),className:"px-2 py-1 text-[11px] font-medium border border-neutral-800 text-neutral-400 rounded hover:border-neutral-700 hover:text-white shrink-0",children:"Copy"})]},t)})}),(0,a.jsx)("p",{className:"text-[11px] text-neutral-600 pt-1",children:"Windows Defender may prompt the first time another device tries to connect — allow access on private networks."})]}),"lan"===t&&0===e.lanAddresses.length&&(0,a.jsx)("div",{className:"bg-amber-500/10 border border-amber-500/30 rounded-md px-3 py-2 text-xs text-amber-300",children:"No LAN interface detected. Make sure this machine is connected to a network before enabling LAN access."}),!e.configPathExists&&(0,a.jsxs)("div",{className:"bg-amber-500/10 border border-amber-500/30 rounded-md px-3 py-2 text-xs text-amber-300",children:["~/.nodalai/config.json wasn't found. Save here will fail until you've run"," ",(0,a.jsx)("code",{className:"font-mono",children:"nodal-agents init"})," at least once."]}),(0,a.jsxs)("div",{className:"flex items-center gap-3",children:[(0,a.jsx)("button",{type:"submit",disabled:o,className:"px-4 py-2 text-sm font-semibold bg-white text-black rounded-md hover:bg-neutral-200 disabled:opacity-50",children:o?"Saving…":"Save"}),x&&(0,a.jsxs)("span",{className:"text-xs text-amber-400",children:["New bind ",(0,a.jsx)("code",{className:"font-mono",children:t})," requires"," ",(0,a.jsx)("code",{className:"font-mono",children:"nodal-agents down && nodal-agents up"})," to take effect."]})]}),u&&(0,a.jsxs)("div",{className:"bg-emerald-500/10 border border-emerald-500/30 rounded-md px-3 py-2 text-xs text-emerald-300",children:["Saved. Restart with"," ",(0,a.jsx)("code",{className:"font-mono",children:"nodal-agents down && nodal-agents up"})," to activate the new network mode."]})]})}function d({checked:e,onChange:t,label:r,subtitle:s}){return(0,a.jsxs)("label",{className:`flex items-start gap-3 px-3 py-2 rounded-md cursor-pointer border ${e?"border-violet-500/50 bg-violet-500/5":"border-neutral-800 hover:border-neutral-700"}`,children:[(0,a.jsx)("input",{type:"radio",checked:e,onChange:t,className:"mt-1 accent-violet-500"}),(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"text-sm text-white",children:r}),(0,a.jsx)("div",{className:"text-xs text-neutral-500",children:s})]})]})}},7540:(e,t,r)=>{"use strict";var a=r(1268);r.o(a,"usePathname")&&r.d(t,{usePathname:function(){return a.usePathname}}),r.o(a,"useRouter")&&r.d(t,{useRouter:function(){return a.useRouter}}),r.o(a,"useSearchParams")&&r.d(t,{useSearchParams:function(){return a.useSearchParams}})},9689:(e,t,r)=>{"use strict";r.d(t,{default:()=>j});var a=r(3680),s=r(8604),n=r(7540),o=r(9504),l=r(4308),i=r(4678);let d=(0,i.createServerReference)("403893d8123be77d9b1dddec11e8b06cfaa5ae657f",i.callServer,void 0,i.findSourceMapURL,"deleteLlmKeyAction");var c=r(3217);function u({row:e,onEdit:t,onDeleted:r}){let[n,i]=(0,s.useTransition)(),[c,x]=(0,s.useState)(!1);return(0,a.jsxs)("div",{className:"flex items-center justify-between gap-4 px-5 py-3",children:[(0,a.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{className:"text-sm font-medium text-white truncate",children:e.nickname??(0,a.jsx)("span",{className:"text-neutral-500 italic",children:"no nickname"})}),(0,a.jsx)(m,{provider:e.provider}),!e.isActive&&(0,a.jsx)("span",{className:"text-[10px] font-semibold text-neutral-500 uppercase tracking-wider",children:"disabled"}),e.isActive&&(0,a.jsx)("span",{className:"text-[10px] font-semibold text-emerald-400 uppercase tracking-wider",children:"active"})]}),(0,a.jsxs)("div",{className:"mt-1 flex items-center gap-3 text-xs",children:[e.defaultModel&&(0,a.jsx)("span",{className:"font-mono text-neutral-400 truncate",children:e.defaultModel}),e.baseUrl&&(0,a.jsx)("span",{className:"font-mono text-neutral-500 truncate",children:e.baseUrl}),e.hasApiKey?(0,a.jsx)("span",{className:"font-mono text-neutral-500",title:"API key configured",children:"•••"}):(0,a.jsx)("span",{className:"text-amber-400",children:"no key"})]})]}),(0,a.jsxs)("div",{className:"flex items-center gap-2 shrink-0",children:[(0,a.jsx)("button",{type:"button",onClick:t,className:"px-3 py-1.5 text-xs font-medium border border-neutral-800 text-neutral-400 rounded-lg hover:border-neutral-700 hover:text-white transition-colors",children:"Edit"}),(0,a.jsx)("button",{type:"button",onClick:()=>x(!0),disabled:n,className:"px-3 py-1.5 text-xs font-medium border border-red-900/40 text-red-400 rounded-lg hover:border-red-700 hover:text-red-300 transition-colors disabled:opacity-40",children:"Delete"})]}),(0,a.jsx)(l.A,{open:c,title:"Remove LLM provider?",message:`"${e.nickname??e.provider}" will be removed. Agents using it will fall back to the default env-configured provider until reassigned.`,confirmLabel:"Remove",onConfirm:function(){x(!1),i(async()=>{let t=await d(e.id);t.ok?(o.o.success("LLM provider removed"),r()):o.o.error(t.message)})},onCancel:()=>x(!1)})]})}function m({provider:e}){let t=function(e){switch(e){case"anthropic":return"bg-amber-500/15 text-amber-400";case"openai":return"bg-emerald-500/15 text-emerald-400";case"openai-compatible":return"bg-violet-500/15 text-violet-400";case"ollama":return"bg-blue-500/15 text-blue-400";case"openrouter":return"bg-pink-500/15 text-pink-400";case"google":return"bg-cyan-500/15 text-cyan-400";case"mistral":return"bg-orange-500/15 text-orange-400";case"groq":return"bg-rose-500/15 text-rose-400";default:return"bg-neutral-500/15 text-neutral-400"}}(e);return(0,a.jsx)("span",{className:`px-2 py-0.5 rounded text-[10px] font-semibold uppercase tracking-wider ${t}`,children:(0,c.R)(e)})}let x=(0,i.createServerReference)("40e2114bbb6356ea6e0fc1cae68788c935b25befc9",i.callServer,void 0,i.findSourceMapURL,"testLlmKeyAction"),p=(0,i.createServerReference)("400f40aef9e0270d8ebcd4d98dc6465275eb776709",i.callServer,void 0,i.findSourceMapURL,"updateLlmKeyAction"),h=(0,i.createServerReference)("403d2d46dc8114439c70f38da70e8d8bbd885fc3c2",i.callServer,void 0,i.findSourceMapURL,"createLlmKeyAction"),b={anthropic:"https://api.anthropic.com/v1",openai:"https://api.openai.com/v1","openai-compatible":"http://localhost:1234/v1",ollama:"http://localhost:11434",openrouter:"https://openrouter.ai/api/v1",google:"https://generativelanguage.googleapis.com/v1beta",mistral:"https://api.mistral.ai/v1",groq:"https://api.groq.com/openai/v1"},g={anthropic:"claude-haiku-4-5-20251001",openai:"gpt-5","openai-compatible":"google/gemma-4-31b",ollama:"llama3.3:70b",openrouter:"anthropic/claude-3.5-sonnet",google:"gemini-2.0-flash",mistral:"mistral-large-latest",groq:"llama-3.3-70b-versatile"},f=["anthropic","openai","openai-compatible","ollama","openrouter","google","mistral","groq"];function v(e){let t="edit"===e.mode,r=t?e.initial:null,[n,l]=(0,s.useState)(r?.provider??"anthropic"),[i,d]=(0,s.useState)(r?.baseUrl??""),[u,m]=(0,s.useState)(""),[v,j]=(0,s.useState)(r?.nickname??""),[N,y]=(0,s.useState)(r?.defaultModel??""),[k,w]=(0,s.useState)(r?.isActive??!0),[S,C]=(0,s.useState)({state:"idle"}),[R,A]=(0,s.useTransition)(),[L,M]=(0,s.useState)(!1),P=t&&0===u.length,U=t&&r?.apiKeyLast4!=null&&!L&&0===u.length;function q(){"idle"!==S.state&&C({state:"idle"})}async function D(){C({state:"testing"});let e=t&&0===u.length&&r?.id,a=await x({provider:n,baseUrl:i||void 0,apiKey:u||void 0,model:N||void 0,...e?{keyId:r.id}:{}});a.ok?C({state:"pass",message:a.data.message}):C({state:"fail",message:a.message})}let O=b[n]||"https://...";return(0,a.jsxs)("form",{onSubmit:function(a){(a.preventDefault(),"pass"===S.state||P)?A(async()=>{if(t&&r){let t=await p({id:r.id,provider:n,baseUrl:i||void 0,apiKey:u||void 0,nickname:v,defaultModel:N,isActive:k});if(!t.ok)return void o.o.error(t.message);o.o.success("LLM provider updated"),e.onDone("saved")}else{let t=await h({provider:n,baseUrl:i||void 0,apiKey:u||void 0,nickname:v,defaultModel:N,isActive:k});if(!t.ok)return void o.o.error(t.message);o.o.success("LLM provider added"),e.onDone("saved")}}):o.o.error("Test the connection before saving")},className:"space-y-4 bg-neutral-950/40 border border-neutral-800/40 rounded-lg p-4",children:[(0,a.jsxs)("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-3",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"block text-xs text-neutral-500 mb-1",htmlFor:"llm-provider",children:"Provider"}),(0,a.jsx)("select",{id:"llm-provider",value:n,onChange:e=>{var t;l(t=e.target.value),!i&&b[t]&&d(b[t]),N||y(g[t]),q()},className:"w-full bg-neutral-800 border border-neutral-700 rounded-lg px-3 py-2 text-sm text-white focus:border-neutral-500 focus:outline-none",children:f.map(e=>(0,a.jsx)("option",{value:e,children:(0,c.R)(e)},e))})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"block text-xs text-neutral-500 mb-1",htmlFor:"llm-nickname",children:"Nickname"}),(0,a.jsx)("input",{id:"llm-nickname",type:"text",required:!0,value:v,onChange:e=>{j(e.target.value)},placeholder:`${(0,c.R)(n)} main`,className:"w-full bg-neutral-800 border border-neutral-700 rounded-lg px-3 py-2 text-sm text-white placeholder-neutral-600 focus:border-neutral-500 focus:outline-none"})]})]}),(0,a.jsxs)("div",{children:[(0,a.jsxs)("label",{className:"block text-xs text-neutral-500 mb-1",htmlFor:"llm-base-url",children:["Base URL","openai-compatible"===n||"ollama"===n?(0,a.jsx)("span",{className:"ml-2 text-amber-400",children:"(required)"}):(0,a.jsx)("span",{className:"ml-2 text-neutral-600",children:"(optional — defaults to provider's canonical)"})]}),(0,a.jsx)("input",{id:"llm-base-url",type:"text",required:"openai-compatible"===n||"ollama"===n,value:i,onChange:e=>{d(e.target.value),q()},placeholder:O||"leave blank to use the provider default",className:"w-full bg-neutral-800 border border-neutral-700 rounded-lg px-3 py-2 text-sm text-white placeholder-neutral-600 focus:border-neutral-500 focus:outline-none font-mono"})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"block text-xs text-neutral-500 mb-1",htmlFor:"llm-api-key",children:"API key"}),U?(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsxs)("div",{className:"flex-1 bg-neutral-800/60 border border-neutral-700/60 rounded-lg px-3 py-2 text-sm font-mono text-neutral-400 tracking-widest select-none",children:["••••••••",r.apiKeyLast4]}),(0,a.jsx)("button",{type:"button",onClick:()=>{M(!0),q()},className:"shrink-0 px-3 py-2 text-xs font-medium border border-neutral-700 text-neutral-400 rounded-lg hover:border-neutral-600 hover:text-white transition-colors",children:"Replace API key"})]}):(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("input",{id:"llm-api-key",type:"password",autoComplete:"new-password",value:u,onChange:e=>{m(e.target.value),q()},placeholder:t&&!L?"Leave blank to keep current":"",className:"flex-1 bg-neutral-800 border border-neutral-700 rounded-lg px-3 py-2 text-sm text-white placeholder-neutral-600 focus:border-neutral-500 focus:outline-none font-mono"}),t&&L&&(0,a.jsx)("button",{type:"button",onClick:()=>{M(!1),m(""),q()},className:"shrink-0 px-3 py-2 text-xs font-medium text-neutral-500 hover:text-neutral-300 transition-colors",children:"Cancel"})]})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"block text-xs text-neutral-500 mb-1",htmlFor:"llm-default-model",children:"Default model"}),(0,a.jsx)("input",{id:"llm-default-model",type:"text",required:!0,value:N,onChange:e=>y(e.target.value),placeholder:g[n],className:"w-full bg-neutral-800 border border-neutral-700 rounded-lg px-3 py-2 text-sm text-white placeholder-neutral-600 focus:border-neutral-500 focus:outline-none font-mono"}),(0,a.jsx)("p",{className:"mt-1 text-[11px] text-neutral-600",children:"Agents reference this provider and pick their own model on top — this is just the suggested default."})]}),(0,a.jsxs)("label",{className:"flex items-center gap-2 text-sm text-neutral-300 cursor-pointer",children:[(0,a.jsx)("input",{type:"checkbox",checked:k,onChange:e=>w(e.target.checked),className:"accent-violet-500"}),(0,a.jsx)("span",{children:"Active — agents may select this provider"})]}),"pass"===S.state&&(0,a.jsx)("div",{className:"bg-emerald-500/10 border border-emerald-500/30 rounded-md px-3 py-2 text-xs text-emerald-300",children:S.message}),"fail"===S.state&&(0,a.jsx)("div",{className:"bg-red-500/10 border border-red-500/30 rounded-md px-3 py-2 text-xs text-red-300 break-all",children:S.message}),(0,a.jsxs)("div",{className:"flex items-center gap-2 pt-1",children:[(0,a.jsx)("button",{type:"button",onClick:D,disabled:"testing"===S.state||R,className:"px-4 py-2 text-sm font-medium border border-neutral-700 text-neutral-300 rounded-lg hover:border-neutral-600 hover:text-white transition-colors disabled:opacity-50",children:"testing"===S.state?"Testing…":"Test connection"}),(0,a.jsx)("button",{type:"submit",disabled:R||"testing"===S.state||"pass"!==S.state&&!P,className:"px-4 py-2 text-sm font-semibold bg-white text-black rounded-lg hover:bg-neutral-200 transition-colors disabled:opacity-50",title:"pass"===S.state||P?void 0:"Test the connection before saving",children:R?"Saving…":t?"Save changes":"Add provider"}),(0,a.jsx)("button",{type:"button",onClick:()=>e.onDone("cancelled"),className:"px-4 py-2 text-sm font-medium text-neutral-500 hover:text-neutral-300 transition-colors",children:"Cancel"})]})]})}function j({initialRows:e}){let t=(0,n.useRouter)(),[,r]=(0,s.useTransition)(),[o,l]=(0,s.useState)({kind:"closed"});function i(){r(()=>{t.refresh()})}return(0,a.jsxs)("div",{className:"bg-neutral-900 border border-neutral-800/60 rounded-xl",children:[0===e.length?(0,a.jsx)("div",{className:"px-6 py-8 text-center text-sm text-neutral-500",children:"No LLM providers yet. Add one to start configuring agents."}):(0,a.jsx)("div",{className:"divide-y divide-neutral-800/60",children:e.map(e=>(0,a.jsx)(u,{row:e,onEdit:()=>l({kind:"edit",row:e}),onDeleted:i},e.id))}),(0,a.jsxs)("div",{className:"border-t border-neutral-800/60 px-5 py-3",children:["closed"===o.kind&&(0,a.jsx)("button",{type:"button",onClick:()=>l({kind:"create"}),className:"px-4 py-2 text-sm font-medium border border-neutral-700 text-neutral-300 rounded-lg hover:border-neutral-600 hover:text-white transition-colors",children:"+ Add provider"}),"create"===o.kind&&(0,a.jsx)(v,{mode:"create",onDone:e=>{l({kind:"closed"}),"saved"===e&&i()}}),"edit"===o.kind&&(0,a.jsx)(v,{mode:"edit",initial:o.row,onDone:e=>{l({kind:"closed"}),"saved"===e&&i()}})]})]})}}},e=>{e.O(0,[504,65,724,358],()=>e(e.s=5534)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[694],{3398:(e,t,r)=>{"use strict";r.d(t,{default:()=>u});var l=r(3680),n=r(8604),a=r(7540),s=r(9504),o=r(4678);let i=(0,o.createServerReference)("40c81dd184fe2b4a6eca984cdb19b314b5f223b04b",o.callServer,void 0,o.findSourceMapURL,"updateSkillAction"),d=(0,o.createServerReference)("405d194c22928c2be11c81853135b56b18f297616f",o.callServer,void 0,o.findSourceMapURL,"createSkillAction");function u(e){let t="edit"===e.mode,r=(0,a.useRouter)(),[o,u]=(0,n.useState)(t),[c,m]=(0,n.useTransition)();if(!o)return(0,l.jsx)("button",{type:"button",onClick:()=>u(!0),className:"px-4 py-2 text-sm font-medium bg-white text-black rounded-lg hover:bg-neutral-200",children:"+ New skill"});let b=t?e.initial:void 0;return(0,l.jsxs)("form",{onSubmit:function(l){l.preventDefault();let n=l.currentTarget,a=new FormData(n);if(t&&"edit"===e.mode){let t={id:e.initial.id,name:a.get("name"),content:a.get("content"),description:a.get("description")||void 0};m(async()=>{let e=await i(t);e.ok?(s.o.success("Skill updated"),r.push("/skills")):s.o.error(e.message)})}else m(async()=>{let e=await d({slug:a.get("slug"),name:a.get("name"),content:a.get("content"),description:a.get("description")||void 0});e.ok?(s.o.success("Skill created"),n.reset(),u(!1)):s.o.error(e.message)})},className:"bg-neutral-900 border border-neutral-800/60 rounded-xl p-5 space-y-3",children:[(0,l.jsx)("h3",{className:"text-sm font-semibold text-white",children:t?"Edit skill":"New skill"}),(0,l.jsxs)("div",{className:"grid grid-cols-2 gap-3",children:[(0,l.jsxs)("div",{children:[(0,l.jsxs)("label",{className:"block text-xs text-neutral-500 mb-1",htmlFor:"skill-slug",children:["Slug ",t&&(0,l.jsx)("span",{className:"text-neutral-700",children:"(stable — not editable)"})]}),(0,l.jsx)("input",{id:"skill-slug",name:"slug",required:!t,readOnly:t,disabled:t,pattern:t?void 0:"[a-z0-9\\-]+",placeholder:"my-skill",defaultValue:b?.slug,title:t?"Slug is a stable identifier and cannot be changed":void 0,className:t?"w-full bg-neutral-800/40 border border-neutral-700/50 rounded-md px-2 py-1.5 text-sm text-neutral-500 cursor-not-allowed font-mono":"w-full bg-neutral-800 border border-neutral-700 rounded-md px-2 py-1.5 text-sm text-white placeholder-neutral-600 focus:border-neutral-500 focus:outline-none font-mono"})]}),(0,l.jsxs)("div",{children:[(0,l.jsx)("label",{className:"block text-xs text-neutral-500 mb-1",htmlFor:"skill-name",children:"Name"}),(0,l.jsx)("input",{id:"skill-name",name:"name",required:!0,placeholder:"My Skill",defaultValue:b?.name,className:"w-full bg-neutral-800 border border-neutral-700 rounded-md px-2 py-1.5 text-sm text-white placeholder-neutral-600 focus:border-neutral-500 focus:outline-none"})]})]}),(0,l.jsxs)("div",{children:[(0,l.jsxs)("label",{className:"block text-xs text-neutral-500 mb-1",htmlFor:"skill-description",children:["Description ",(0,l.jsx)("span",{className:"text-neutral-700",children:"(optional)"})]}),(0,l.jsx)("input",{id:"skill-description",name:"description",maxLength:500,placeholder:"What does this skill teach the agent?",defaultValue:b?.description??"",className:"w-full bg-neutral-800 border border-neutral-700 rounded-md px-2 py-1.5 text-sm text-white placeholder-neutral-600 focus:border-neutral-500 focus:outline-none"})]}),(0,l.jsxs)("div",{children:[(0,l.jsx)("label",{className:"block text-xs text-neutral-500 mb-1",htmlFor:"skill-content",children:"Instructions"}),(0,l.jsx)("textarea",{id:"skill-content",name:"content",required:!0,rows:6,placeholder:"Step-by-step instructions or context the agent gets when this skill is enabled.",defaultValue:b?.content,className:"w-full bg-neutral-800 border border-neutral-700 rounded-md px-2 py-1.5 text-sm text-white placeholder-neutral-600 focus:border-neutral-500 focus:outline-none resize-y"})]}),(0,l.jsxs)("div",{className:"flex gap-2 pt-1",children:[(0,l.jsx)("button",{type:"submit",disabled:c,className:"px-4 py-2 text-sm font-semibold bg-white text-black rounded-md hover:bg-neutral-200 disabled:opacity-50",children:c?t?"Saving…":"Creating…":t?"Save changes":"Create skill"}),(0,l.jsx)("button",{type:"button",onClick:()=>t?r.push("/skills"):u(!1),className:"px-4 py-2 text-sm font-medium border border-neutral-700 text-neutral-400 rounded-md hover:border-neutral-600",children:"Cancel"})]})]})}},4678:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var l={callServer:function(){return a.callServer},createServerReference:function(){return o.createServerReference},findSourceMapURL:function(){return s.findSourceMapURL}};for(var n in l)Object.defineProperty(t,n,{enumerable:!0,get:l[n]});let a=r(2673),s=r(3145),o=r(7478)},7540:(e,t,r)=>{"use strict";var l=r(1268);r.o(l,"usePathname")&&r.d(t,{usePathname:function(){return l.usePathname}}),r.o(l,"useRouter")&&r.d(t,{useRouter:function(){return l.useRouter}}),r.o(l,"useSearchParams")&&r.d(t,{useSearchParams:function(){return l.useSearchParams}})},9883:(e,t,r)=>{Promise.resolve().then(r.bind(r,3398)),Promise.resolve().then(r.t.bind(r,3363,23))}},e=>{e.O(0,[363,504,65,724,358],()=>e(e.s=9883)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[141],{1373:(e,t,r)=>{"use strict";r.d(t,{default:()=>b});var s=r(3680),n=r(8604),l=r(3363),a=r.n(l),i=r(9504),d=r(4678);let o=(0,d.createServerReference)("403663baa79c7eeb4a035032aa78dec5b6ac39002c",d.callServer,void 0,d.findSourceMapURL,"listSkillAssignmentsAction"),c=(0,d.createServerReference)("40a5420a805d48017cb681d96467a4f3a55e81129e",d.callServer,void 0,d.findSourceMapURL,"unassignSkillAction"),u=(0,d.createServerReference)("404fd364eef42df3b728923526009168a909fbc70a",d.callServer,void 0,d.findSourceMapURL,"assignSkillAction"),x=(0,d.createServerReference)("40bb331a961af16ba2a1d2e87f3f2619784d202448",d.callServer,void 0,d.findSourceMapURL,"deleteSkillAction");var m=r(4308);function b({skill:e}){let[t,r]=(0,n.useState)(!1),[l,d]=(0,n.useState)(null),[p,h]=(0,n.useState)(!1),[f,g]=(0,n.useTransition)(),[v,k]=(0,n.useState)(!1);(0,n.useEffect)(()=>{t&&!l&&(h(!0),o(e.id).then(e=>{h(!1),e.ok?d(e.data):i.o.error(e.message)}))},[t,l,e.id]);let j=l?l.filter(e=>e.assigned).length:e.assignmentCount;return(0,s.jsxs)("div",{className:"bg-neutral-900 border border-neutral-800/60 rounded-xl overflow-hidden",children:[(0,s.jsxs)("div",{className:"flex items-center justify-between gap-3 px-5 py-4",children:[(0,s.jsxs)("button",{type:"button",onClick:()=>r(e=>!e),className:"flex-1 text-left flex items-center gap-3 hover:bg-neutral-800/30 -m-2 p-2 rounded-lg",children:[(0,s.jsx)("span",{className:"text-neutral-500 text-xs font-mono w-3",children:t?"▾":"▸"}),(0,s.jsxs)("div",{className:"flex-1",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2 flex-wrap",children:[(0,s.jsx)("span",{className:"text-white font-medium",children:e.name}),(0,s.jsx)("code",{className:"font-mono text-xs text-neutral-500",children:e.slug}),!e.active&&(0,s.jsx)("span",{className:"text-[10px] font-semibold uppercase tracking-wider text-amber-400",children:"inactive"})]}),e.description&&(0,s.jsx)("p",{className:"text-xs text-neutral-500 mt-0.5",children:e.description})]}),(0,s.jsxs)("span",{className:"text-xs text-neutral-500 shrink-0",children:[j," assigned"]})]}),(0,s.jsx)(a(),{href:`/skills/${e.id}/edit`,className:"shrink-0 px-2.5 py-1 text-xs font-medium border border-neutral-800 text-neutral-400 rounded-md hover:border-neutral-600 hover:text-white transition-colors",children:"Edit"}),(0,s.jsx)("button",{type:"button",onClick:()=>k(!0),disabled:f,className:"shrink-0 px-2.5 py-1 text-xs font-medium border border-red-900/40 text-red-400 rounded-md hover:border-red-700 hover:text-red-300 disabled:opacity-40",children:"Delete"})]}),(0,s.jsx)(m.A,{open:v,title:`Delete skill "${e.name}"?`,message:"The skill and all its agent assignments will be removed. Existing job logs are kept.",confirmLabel:"Delete",onConfirm:function(){k(!1),g(async()=>{let t=await x(e.id);t.ok?i.o.success("Skill deleted"):i.o.error(t.message)})},onCancel:()=>k(!1)}),t&&(0,s.jsxs)("div",{className:"border-t border-neutral-800/60 px-5 py-4 space-y-4 bg-neutral-950/40",children:[(0,s.jsxs)("div",{children:[(0,s.jsx)("h4",{className:"text-xs font-semibold text-neutral-400 uppercase tracking-wider mb-2",children:"Instructions"}),(0,s.jsx)("pre",{className:"text-xs text-neutral-300 font-mono whitespace-pre-wrap break-words bg-neutral-950 border border-neutral-800/40 rounded-md p-3 max-h-64 overflow-y-auto",children:e.content})]}),(0,s.jsxs)("div",{children:[(0,s.jsx)("h4",{className:"text-xs font-semibold text-neutral-400 uppercase tracking-wider mb-2",children:"Assigned to"}),p?(0,s.jsx)("p",{className:"text-xs text-neutral-600",children:"Loading…"}):l&&0!==l.length?(0,s.jsx)("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-1",children:l.map(t=>(0,s.jsxs)("label",{className:"flex items-center gap-2 px-2 py-1.5 rounded text-sm cursor-pointer hover:bg-neutral-800/40",children:[(0,s.jsx)("input",{type:"checkbox",checked:t.assigned,onChange:()=>{var r,s;return r=t.agentId,s=t.assigned,void(d(e=>e?e.map(e=>e.agentId===r?{...e,assigned:!s}:e):e),g(async()=>{let t=await (s?c:u)({skillId:e.id,agentId:r});t.ok?i.o.success(s?"Skill unassigned":"Skill assigned"):(i.o.error(t.message),d(e=>e?e.map(e=>e.agentId===r?{...e,assigned:s}:e):e))}))},className:"accent-violet-500"}),(0,s.jsx)("span",{className:"text-white",children:t.agentName}),(0,s.jsx)("span",{className:"font-mono text-xs text-neutral-500 ml-auto",children:t.agentSlug})]},t.agentId))}):(0,s.jsx)("p",{className:"text-xs text-neutral-600",children:"No agents in this workspace yet. Create one on the Agents page."})]})]})]})}},3398:(e,t,r)=>{"use strict";r.d(t,{default:()=>c});var s=r(3680),n=r(8604),l=r(7540),a=r(9504),i=r(4678);let d=(0,i.createServerReference)("40c81dd184fe2b4a6eca984cdb19b314b5f223b04b",i.callServer,void 0,i.findSourceMapURL,"updateSkillAction"),o=(0,i.createServerReference)("405d194c22928c2be11c81853135b56b18f297616f",i.callServer,void 0,i.findSourceMapURL,"createSkillAction");function c(e){let t="edit"===e.mode,r=(0,l.useRouter)(),[i,c]=(0,n.useState)(t),[u,x]=(0,n.useTransition)();if(!i)return(0,s.jsx)("button",{type:"button",onClick:()=>c(!0),className:"px-4 py-2 text-sm font-medium bg-white text-black rounded-lg hover:bg-neutral-200",children:"+ New skill"});let m=t?e.initial:void 0;return(0,s.jsxs)("form",{onSubmit:function(s){s.preventDefault();let n=s.currentTarget,l=new FormData(n);if(t&&"edit"===e.mode){let t={id:e.initial.id,name:l.get("name"),content:l.get("content"),description:l.get("description")||void 0};x(async()=>{let e=await d(t);e.ok?(a.o.success("Skill updated"),r.push("/skills")):a.o.error(e.message)})}else x(async()=>{let e=await o({slug:l.get("slug"),name:l.get("name"),content:l.get("content"),description:l.get("description")||void 0});e.ok?(a.o.success("Skill created"),n.reset(),c(!1)):a.o.error(e.message)})},className:"bg-neutral-900 border border-neutral-800/60 rounded-xl p-5 space-y-3",children:[(0,s.jsx)("h3",{className:"text-sm font-semibold text-white",children:t?"Edit skill":"New skill"}),(0,s.jsxs)("div",{className:"grid grid-cols-2 gap-3",children:[(0,s.jsxs)("div",{children:[(0,s.jsxs)("label",{className:"block text-xs text-neutral-500 mb-1",htmlFor:"skill-slug",children:["Slug ",t&&(0,s.jsx)("span",{className:"text-neutral-700",children:"(stable — not editable)"})]}),(0,s.jsx)("input",{id:"skill-slug",name:"slug",required:!t,readOnly:t,disabled:t,pattern:t?void 0:"[a-z0-9\\-]+",placeholder:"my-skill",defaultValue:m?.slug,title:t?"Slug is a stable identifier and cannot be changed":void 0,className:t?"w-full bg-neutral-800/40 border border-neutral-700/50 rounded-md px-2 py-1.5 text-sm text-neutral-500 cursor-not-allowed font-mono":"w-full bg-neutral-800 border border-neutral-700 rounded-md px-2 py-1.5 text-sm text-white placeholder-neutral-600 focus:border-neutral-500 focus:outline-none font-mono"})]}),(0,s.jsxs)("div",{children:[(0,s.jsx)("label",{className:"block text-xs text-neutral-500 mb-1",htmlFor:"skill-name",children:"Name"}),(0,s.jsx)("input",{id:"skill-name",name:"name",required:!0,placeholder:"My Skill",defaultValue:m?.name,className:"w-full bg-neutral-800 border border-neutral-700 rounded-md px-2 py-1.5 text-sm text-white placeholder-neutral-600 focus:border-neutral-500 focus:outline-none"})]})]}),(0,s.jsxs)("div",{children:[(0,s.jsxs)("label",{className:"block text-xs text-neutral-500 mb-1",htmlFor:"skill-description",children:["Description ",(0,s.jsx)("span",{className:"text-neutral-700",children:"(optional)"})]}),(0,s.jsx)("input",{id:"skill-description",name:"description",maxLength:500,placeholder:"What does this skill teach the agent?",defaultValue:m?.description??"",className:"w-full bg-neutral-800 border border-neutral-700 rounded-md px-2 py-1.5 text-sm text-white placeholder-neutral-600 focus:border-neutral-500 focus:outline-none"})]}),(0,s.jsxs)("div",{children:[(0,s.jsx)("label",{className:"block text-xs text-neutral-500 mb-1",htmlFor:"skill-content",children:"Instructions"}),(0,s.jsx)("textarea",{id:"skill-content",name:"content",required:!0,rows:6,placeholder:"Step-by-step instructions or context the agent gets when this skill is enabled.",defaultValue:m?.content,className:"w-full bg-neutral-800 border border-neutral-700 rounded-md px-2 py-1.5 text-sm text-white placeholder-neutral-600 focus:border-neutral-500 focus:outline-none resize-y"})]}),(0,s.jsxs)("div",{className:"flex gap-2 pt-1",children:[(0,s.jsx)("button",{type:"submit",disabled:u,className:"px-4 py-2 text-sm font-semibold bg-white text-black rounded-md hover:bg-neutral-200 disabled:opacity-50",children:u?t?"Saving…":"Creating…":t?"Save changes":"Create skill"}),(0,s.jsx)("button",{type:"button",onClick:()=>t?r.push("/skills"):c(!1),className:"px-4 py-2 text-sm font-medium border border-neutral-700 text-neutral-400 rounded-md hover:border-neutral-600",children:"Cancel"})]})]})}},4308:(e,t,r)=>{"use strict";r.d(t,{A:()=>a});var s=r(3680),n=r(8604),l=r(1869);function a({open:e,title:t,message:r,confirmLabel:i="Confirm",cancelLabel:d="Cancel",destructive:o=!0,onConfirm:c,onCancel:u}){let x=(0,n.useRef)(null),[m,b]=(0,n.useState)(!1);return((0,n.useEffect)(()=>{b(!0)},[]),(0,n.useEffect)(()=>{if(e)return x.current?.focus(),window.addEventListener("keydown",t),()=>window.removeEventListener("keydown",t);function t(e){"Escape"===e.key&&u()}},[e,u]),e&&m)?(0,l.createPortal)((0,s.jsxs)("div",{role:"dialog","aria-modal":"true","aria-labelledby":"confirm-dialog-title",className:"fixed inset-0 z-50 flex items-center justify-center px-4 text-left",children:[(0,s.jsx)("div",{className:"absolute inset-0 bg-black/60 backdrop-blur-sm",onClick:u,"aria-hidden":"true"}),(0,s.jsxs)("div",{className:"relative bg-neutral-900 border border-neutral-800/60 rounded-xl p-6 max-w-md w-full shadow-2xl",children:[(0,s.jsx)("h2",{id:"confirm-dialog-title",className:"text-base font-semibold text-white",children:t}),r&&(0,s.jsx)("p",{className:"mt-2 text-sm text-neutral-400 leading-relaxed",children:r}),(0,s.jsxs)("div",{className:"mt-6 flex justify-end gap-2",children:[(0,s.jsx)("button",{ref:x,type:"button",onClick:u,className:"px-4 py-2 text-sm font-medium border border-neutral-700 text-neutral-300 rounded-lg hover:border-neutral-600 hover:text-white transition-colors",children:d}),(0,s.jsx)("button",{type:"button",onClick:c,className:`px-4 py-2 text-sm font-semibold rounded-lg transition-colors ${o?"bg-red-600 hover:bg-red-500 text-white":"bg-white hover:bg-neutral-200 text-black"}`,children:i})]})]})]}),document.body):null}},4678:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var s={callServer:function(){return l.callServer},createServerReference:function(){return i.createServerReference},findSourceMapURL:function(){return a.findSourceMapURL}};for(var n in s)Object.defineProperty(t,n,{enumerable:!0,get:s[n]});let l=r(2673),a=r(3145),i=r(7478)},7540:(e,t,r)=>{"use strict";var s=r(1268);r.o(s,"usePathname")&&r.d(t,{usePathname:function(){return s.usePathname}}),r.o(s,"useRouter")&&r.d(t,{useRouter:function(){return s.useRouter}}),r.o(s,"useSearchParams")&&r.d(t,{useSearchParams:function(){return s.useSearchParams}})},7826:(e,t,r)=>{Promise.resolve().then(r.bind(r,3398)),Promise.resolve().then(r.bind(r,1373))}},e=>{e.O(0,[363,504,65,724,358],()=>e(e.s=7826)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[15,167,218,302,492,566,762,772,819,896,974,975,988],{4536:()=>{}},_=>{_.O(0,[65,724,358],()=>_(_.s=4536)),_N_E=_.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[15,167,218,302,492,566,762,772,819,896,974,975,988],{4536:()=>{}},_=>{_.O(0,[65,724,358],()=>_(_.s=4536)),_N_E=_.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[15,167,218,302,492,566,762,772,819,896,974,975,988],{4536:()=>{}},_=>{_.O(0,[65,724,358],()=>_(_.s=4536)),_N_E=_.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[15,167,218,302,492,566,762,772,819,896,974,975,988],{4536:()=>{}},_=>{_.O(0,[65,724,358],()=>_(_.s=4536)),_N_E=_.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[15,167,218,302,492,566,762,772,819,896,974,975,988],{4536:()=>{}},_=>{_.O(0,[65,724,358],()=>_(_.s=4536)),_N_E=_.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[15,167,218,302,492,566,762,772,819,896,974,975,988],{4536:()=>{}},_=>{_.O(0,[65,724,358],()=>_(_.s=4536)),_N_E=_.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[15,167,218,302,492,566,762,772,819,896,974,975,988],{4536:()=>{}},_=>{_.O(0,[65,724,358],()=>_(_.s=4536)),_N_E=_.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[15,167,218,302,492,566,762,772,819,896,974,975,988],{4536:()=>{}},_=>{_.O(0,[65,724,358],()=>_(_.s=4536)),_N_E=_.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[39],{6681:(e,s,t)=>{"use strict";t.r(s),t.d(s,{default:()=>r});var n=t(3680),l=t(8604);function r({error:e,reset:s}){return(0,l.useEffect)(()=>{console.error(e)},[e]),(0,n.jsx)("div",{className:"flex min-h-screen w-full items-center justify-center bg-neutral-950 px-4",children:(0,n.jsxs)("div",{className:"text-center space-y-4",children:[(0,n.jsx)("h1",{className:"text-2xl font-bold text-white",children:"Something went wrong"}),(0,n.jsx)("p",{className:"text-sm text-neutral-400",children:e.message}),(0,n.jsx)("button",{onClick:s,className:"rounded-lg bg-emerald-500 text-black px-4 py-2 text-sm font-semibold hover:bg-emerald-400 transition-colors",children:"Try again"})]})})}},9684:(e,s,t)=>{Promise.resolve().then(t.bind(t,6681))}},e=>{e.O(0,[65,724,358],()=>e(e.s=9684)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[177],{1723:()=>{},8318:(e,s,_)=>{Promise.resolve().then(_.t.bind(_,1723,23))}},e=>{e.O(0,[869,65,724,358],()=>e(e.s=8318)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[520],{3087:(e,t,a)=>{"use strict";a.d(t,{A:()=>r});var l=a(8604);let n=(0,l.createContext)({color:"currentColor",size:"1em",weight:"regular",mirrored:!1}),r=l.forwardRef((e,t)=>{let{alt:a,color:r,size:s,weight:c,mirrored:o,children:i,weights:d,...u}=e,{color:m="currentColor",size:h,weight:x="regular",mirrored:p=!1,...g}=l.useContext(n);return l.createElement("svg",{ref:t,xmlns:"http://www.w3.org/2000/svg",width:null!=s?s:h,height:null!=s?s:h,fill:null!=r?r:m,viewBox:"0 0 256 256",transform:o||p?"scale(-1, 1)":void 0,...g,...u},!!a&&l.createElement("title",null,a),i,d.get(null!=c?c:x))});r.displayName="IconBase"},6838:(e,t,a)=>{"use strict";a.d(t,{default:()=>u});var l=a(3680),n=a(8604),r=a(7540),s=a(3087);let c=new Map([["bold",n.createElement(n.Fragment,null,n.createElement("path",{d:"M56.88,31.93A12,12,0,1,0,39.12,48.07l16,17.65C20.67,88.66,5.72,121.58,5,123.13a12.08,12.08,0,0,0,0,9.75c.37.82,9.13,20.26,28.49,39.61C59.37,198.34,92,212,128,212a131.34,131.34,0,0,0,51-10l20.09,22.1a12,12,0,0,0,17.76-16.14ZM128,188c-29.59,0-55.47-10.73-76.91-31.88A130.69,130.69,0,0,1,29.52,128c5.27-9.31,18.79-29.9,42-44.29l90.09,99.11A109.33,109.33,0,0,1,128,188Zm123-55.12c-.36.81-9,20-28,39.16a12,12,0,1,1-17-16.9A130.48,130.48,0,0,0,226.48,128a130.36,130.36,0,0,0-21.57-28.12C183.46,78.73,157.59,68,128,68c-3.35,0-6.7.14-10,.42a12,12,0,1,1-2-23.91c3.93-.34,8-.51,12-.51,36,0,68.63,13.67,94.49,39.52,19.35,19.35,28.11,38.8,28.48,39.61A12.08,12.08,0,0,1,251,132.88Z"}))],["duotone",n.createElement(n.Fragment,null,n.createElement("path",{d:"M128,56C48,56,16,128,16,128s32,72,112,72,112-72,112-72S208,56,128,56Zm0,112a40,40,0,1,1,40-40A40,40,0,0,1,128,168Z",opacity:"0.2"}),n.createElement("path",{d:"M53.92,34.62A8,8,0,1,0,42.08,45.38L61.32,66.55C25,88.84,9.38,123.2,8.69,124.76a8,8,0,0,0,0,6.5c.35.79,8.82,19.57,27.65,38.4C61.43,194.74,93.12,208,128,208a127.11,127.11,0,0,0,52.07-10.83l22,24.21a8,8,0,1,0,11.84-10.76Zm47.33,75.84,41.67,45.85a32,32,0,0,1-41.67-45.85ZM128,192c-30.78,0-57.67-11.19-79.93-33.25A133.16,133.16,0,0,1,25,128c4.69-8.79,19.66-33.39,47.35-49.38l18,19.75a48,48,0,0,0,63.66,70l14.73,16.2A112,112,0,0,1,128,192Zm6-95.43a8,8,0,0,1,3-15.72,48.16,48.16,0,0,1,38.77,42.64,8,8,0,0,1-7.22,8.71,6.39,6.39,0,0,1-.75,0,8,8,0,0,1-8-7.26A32.09,32.09,0,0,0,134,96.57Zm113.28,34.69c-.42.94-10.55,23.37-33.36,43.8a8,8,0,1,1-10.67-11.92A132.77,132.77,0,0,0,231.05,128a133.15,133.15,0,0,0-23.12-30.77C185.67,75.19,158.78,64,128,64a118.37,118.37,0,0,0-19.36,1.57A8,8,0,1,1,106,49.79,134,134,0,0,1,128,48c34.88,0,66.57,13.26,91.66,38.35,18.83,18.83,27.3,37.62,27.65,38.41A8,8,0,0,1,247.31,131.26Z"}))],["fill",n.createElement(n.Fragment,null,n.createElement("path",{d:"M96.68,57.87a4,4,0,0,1,2.08-6.6A130.13,130.13,0,0,1,128,48c34.88,0,66.57,13.26,91.66,38.35,18.83,18.83,27.3,37.62,27.65,38.41a8,8,0,0,1,0,6.5c-.35.79-8.82,19.57-27.65,38.4q-4.28,4.26-8.79,8.07a4,4,0,0,1-5.55-.36ZM213.92,210.62a8,8,0,1,1-11.84,10.76L180,197.13A127.21,127.21,0,0,1,128,208c-34.88,0-66.57-13.26-91.66-38.34C17.51,150.83,9,132.05,8.69,131.26a8,8,0,0,1,0-6.5C9,124,17.51,105.18,36.34,86.35a135,135,0,0,1,25-19.78L42.08,45.38A8,8,0,1,1,53.92,34.62Zm-65.49-48.25-52.69-58a40,40,0,0,0,52.69,58Z"}))],["light",n.createElement(n.Fragment,null,n.createElement("path",{d:"M52.44,36A6,6,0,0,0,43.56,44L64.44,67c-37.28,21.9-53.23,57-53.92,58.57a6,6,0,0,0,0,4.88c.34.77,8.66,19.22,27.24,37.8C55,185.47,84.62,206,128,206a124.91,124.91,0,0,0,52.57-11.25l23,25.29a6,6,0,0,0,8.88-8.08Zm48.62,71.32,45,49.52a34,34,0,0,1-45-49.52ZM128,194c-31.38,0-58.78-11.42-81.45-33.93A134.57,134.57,0,0,1,22.69,128c4.29-8.2,20.1-35.18,50-51.91L92.89,98.3a46,46,0,0,0,61.35,67.48l17.81,19.6A113.47,113.47,0,0,1,128,194Zm6.4-99.4a6,6,0,0,1,2.25-11.79,46.17,46.17,0,0,1,37.15,40.87,6,6,0,0,1-5.42,6.53l-.56,0a6,6,0,0,1-6-5.45A34.1,34.1,0,0,0,134.4,94.6Zm111.08,35.85c-.41.92-10.37,23-32.86,43.12a6,6,0,1,1-8-8.94A134.07,134.07,0,0,0,233.31,128a134.67,134.67,0,0,0-23.86-32.07C186.78,73.42,159.38,62,128,62a120.19,120.19,0,0,0-19.69,1.6,6,6,0,1,1-2-11.83A131.12,131.12,0,0,1,128,50c43.38,0,73,20.54,90.24,37.76,18.58,18.58,26.9,37,27.24,37.81A6,6,0,0,1,245.48,130.45Z"}))],["regular",n.createElement(n.Fragment,null,n.createElement("path",{d:"M53.92,34.62A8,8,0,1,0,42.08,45.38L61.32,66.55C25,88.84,9.38,123.2,8.69,124.76a8,8,0,0,0,0,6.5c.35.79,8.82,19.57,27.65,38.4C61.43,194.74,93.12,208,128,208a127.11,127.11,0,0,0,52.07-10.83l22,24.21a8,8,0,1,0,11.84-10.76Zm47.33,75.84,41.67,45.85a32,32,0,0,1-41.67-45.85ZM128,192c-30.78,0-57.67-11.19-79.93-33.25A133.16,133.16,0,0,1,25,128c4.69-8.79,19.66-33.39,47.35-49.38l18,19.75a48,48,0,0,0,63.66,70l14.73,16.2A112,112,0,0,1,128,192Zm6-95.43a8,8,0,0,1,3-15.72,48.16,48.16,0,0,1,38.77,42.64,8,8,0,0,1-7.22,8.71,6.39,6.39,0,0,1-.75,0,8,8,0,0,1-8-7.26A32.09,32.09,0,0,0,134,96.57Zm113.28,34.69c-.42.94-10.55,23.37-33.36,43.8a8,8,0,1,1-10.67-11.92A132.77,132.77,0,0,0,231.05,128a133.15,133.15,0,0,0-23.12-30.77C185.67,75.19,158.78,64,128,64a118.37,118.37,0,0,0-19.36,1.57A8,8,0,1,1,106,49.79,134,134,0,0,1,128,48c34.88,0,66.57,13.26,91.66,38.35,18.83,18.83,27.3,37.62,27.65,38.41A8,8,0,0,1,247.31,131.26Z"}))],["thin",n.createElement(n.Fragment,null,n.createElement("path",{d:"M51,37.31A4,4,0,0,0,45,42.69L67.59,67.5C29.34,89,13,124.81,12.34,126.38a4.08,4.08,0,0,0,0,3.25c.34.77,8.52,18.89,26.83,37.2,17,17,46.14,37.17,88.83,37.17a122.59,122.59,0,0,0,53.06-11.69l24,26.38a4,4,0,1,0,5.92-5.38ZM149.1,157.16A36,36,0,0,1,101,104.22ZM128,196c-32,0-59.89-11.65-83-34.62A135.81,135.81,0,0,1,20.44,128c3.65-7.23,20.09-36.81,52.68-54.43l22.45,24.7a44,44,0,0,0,59,64.83l20.89,23A114.94,114.94,0,0,1,128,196Zm6.78-103.36a4,4,0,0,1,1.49-7.86,44.15,44.15,0,0,1,35.54,39.09,4,4,0,0,1-3.61,4.35l-.38,0a4,4,0,0,1-4-3.63A36.1,36.1,0,0,0,134.78,92.64Zm108.88,37c-.41.91-10.2,22.58-32.38,42.45a4,4,0,0,1-2.67,1,4,4,0,0,1-2.67-7A136.71,136.71,0,0,0,235.56,128,136.07,136.07,0,0,0,211,94.62C187.89,71.65,160,60,128,60a122,122,0,0,0-20,1.63,4,4,0,0,1-1.32-7.89A129.3,129.3,0,0,1,128,52c42.7,0,71.87,20.22,88.83,37.18,18.31,18.31,26.49,36.44,26.83,37.2A4.08,4.08,0,0,1,243.66,129.63Z"}))]]),o=n.forwardRef((e,t)=>n.createElement(s.A,{ref:t,...e,weights:c}));o.displayName="EyeSlashIcon";let i=new Map([["bold",n.createElement(n.Fragment,null,n.createElement("path",{d:"M251,123.13c-.37-.81-9.13-20.26-28.48-39.61C196.63,57.67,164,44,128,44S59.37,57.67,33.51,83.52C14.16,102.87,5.4,122.32,5,123.13a12.08,12.08,0,0,0,0,9.75c.37.82,9.13,20.26,28.49,39.61C59.37,198.34,92,212,128,212s68.63-13.66,94.48-39.51c19.36-19.35,28.12-38.79,28.49-39.61A12.08,12.08,0,0,0,251,123.13Zm-46.06,33C183.47,177.27,157.59,188,128,188s-55.47-10.73-76.91-31.88A130.36,130.36,0,0,1,29.52,128,130.45,130.45,0,0,1,51.09,99.89C72.54,78.73,98.41,68,128,68s55.46,10.73,76.91,31.89A130.36,130.36,0,0,1,226.48,128,130.45,130.45,0,0,1,204.91,156.12ZM128,84a44,44,0,1,0,44,44A44.05,44.05,0,0,0,128,84Zm0,64a20,20,0,1,1,20-20A20,20,0,0,1,128,148Z"}))],["duotone",n.createElement(n.Fragment,null,n.createElement("path",{d:"M128,56C48,56,16,128,16,128s32,72,112,72,112-72,112-72S208,56,128,56Zm0,112a40,40,0,1,1,40-40A40,40,0,0,1,128,168Z",opacity:"0.2"}),n.createElement("path",{d:"M247.31,124.76c-.35-.79-8.82-19.58-27.65-38.41C194.57,61.26,162.88,48,128,48S61.43,61.26,36.34,86.35C17.51,105.18,9,124,8.69,124.76a8,8,0,0,0,0,6.5c.35.79,8.82,19.57,27.65,38.4C61.43,194.74,93.12,208,128,208s66.57-13.26,91.66-38.34c18.83-18.83,27.3-37.61,27.65-38.4A8,8,0,0,0,247.31,124.76ZM128,192c-30.78,0-57.67-11.19-79.93-33.25A133.47,133.47,0,0,1,25,128,133.33,133.33,0,0,1,48.07,97.25C70.33,75.19,97.22,64,128,64s57.67,11.19,79.93,33.25A133.46,133.46,0,0,1,231.05,128C223.84,141.46,192.43,192,128,192Zm0-112a48,48,0,1,0,48,48A48.05,48.05,0,0,0,128,80Zm0,80a32,32,0,1,1,32-32A32,32,0,0,1,128,160Z"}))],["fill",n.createElement(n.Fragment,null,n.createElement("path",{d:"M247.31,124.76c-.35-.79-8.82-19.58-27.65-38.41C194.57,61.26,162.88,48,128,48S61.43,61.26,36.34,86.35C17.51,105.18,9,124,8.69,124.76a8,8,0,0,0,0,6.5c.35.79,8.82,19.57,27.65,38.4C61.43,194.74,93.12,208,128,208s66.57-13.26,91.66-38.34c18.83-18.83,27.3-37.61,27.65-38.4A8,8,0,0,0,247.31,124.76ZM128,168a40,40,0,1,1,40-40A40,40,0,0,1,128,168Z"}))],["light",n.createElement(n.Fragment,null,n.createElement("path",{d:"M245.48,125.57c-.34-.78-8.66-19.23-27.24-37.81C201,70.54,171.38,50,128,50S55,70.54,37.76,87.76c-18.58,18.58-26.9,37-27.24,37.81a6,6,0,0,0,0,4.88c.34.77,8.66,19.22,27.24,37.8C55,185.47,84.62,206,128,206s73-20.53,90.24-37.75c18.58-18.58,26.9-37,27.24-37.8A6,6,0,0,0,245.48,125.57ZM128,194c-31.38,0-58.78-11.42-81.45-33.93A134.77,134.77,0,0,1,22.69,128,134.56,134.56,0,0,1,46.55,95.94C69.22,73.42,96.62,62,128,62s58.78,11.42,81.45,33.94A134.56,134.56,0,0,1,233.31,128C226.94,140.21,195,194,128,194Zm0-112a46,46,0,1,0,46,46A46.06,46.06,0,0,0,128,82Zm0,80a34,34,0,1,1,34-34A34,34,0,0,1,128,162Z"}))],["regular",n.createElement(n.Fragment,null,n.createElement("path",{d:"M247.31,124.76c-.35-.79-8.82-19.58-27.65-38.41C194.57,61.26,162.88,48,128,48S61.43,61.26,36.34,86.35C17.51,105.18,9,124,8.69,124.76a8,8,0,0,0,0,6.5c.35.79,8.82,19.57,27.65,38.4C61.43,194.74,93.12,208,128,208s66.57-13.26,91.66-38.34c18.83-18.83,27.3-37.61,27.65-38.4A8,8,0,0,0,247.31,124.76ZM128,192c-30.78,0-57.67-11.19-79.93-33.25A133.47,133.47,0,0,1,25,128,133.33,133.33,0,0,1,48.07,97.25C70.33,75.19,97.22,64,128,64s57.67,11.19,79.93,33.25A133.46,133.46,0,0,1,231.05,128C223.84,141.46,192.43,192,128,192Zm0-112a48,48,0,1,0,48,48A48.05,48.05,0,0,0,128,80Zm0,80a32,32,0,1,1,32-32A32,32,0,0,1,128,160Z"}))],["thin",n.createElement(n.Fragment,null,n.createElement("path",{d:"M243.66,126.38c-.34-.76-8.52-18.89-26.83-37.2C199.87,72.22,170.7,52,128,52S56.13,72.22,39.17,89.18c-18.31,18.31-26.49,36.44-26.83,37.2a4.08,4.08,0,0,0,0,3.25c.34.77,8.52,18.89,26.83,37.2,17,17,46.14,37.17,88.83,37.17s71.87-20.21,88.83-37.17c18.31-18.31,26.49-36.43,26.83-37.2A4.08,4.08,0,0,0,243.66,126.38Zm-32.7,35c-23.07,23-51,34.62-83,34.62s-59.89-11.65-83-34.62A135.71,135.71,0,0,1,20.44,128,135.69,135.69,0,0,1,45,94.62C68.11,71.65,96,60,128,60s59.89,11.65,83,34.62A135.79,135.79,0,0,1,235.56,128,135.71,135.71,0,0,1,211,161.38ZM128,84a44,44,0,1,0,44,44A44.05,44.05,0,0,0,128,84Zm0,80a36,36,0,1,1,36-36A36,36,0,0,1,128,164Z"}))]]),d=n.forwardRef((e,t)=>n.createElement(s.A,{ref:t,...e,weights:i}));function u(){let e=(0,r.useRouter)(),[t,a]=(0,n.useState)("signin"),[s,c]=(0,n.useState)(""),[i,u]=(0,n.useState)(""),[m,h]=(0,n.useState)(""),[x,p]=(0,n.useState)(!1),[g,b]=(0,n.useState)(""),[f,A]=(0,n.useState)(""),[C,w]=(0,n.useState)(!1);function Z(e){a(e),b(""),A(""),u(""),h(""),p(!1)}async function N(t){t.preventDefault(),w(!0),b("");try{let t=await fetch("/api/auth/sign-in/email",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:s,password:i})});if(t.ok)e.push("/stats");else{let e=await t.json().catch(()=>null);b(e?.error??"Invalid email or password.")}}catch{b("Network error — please try again.")}finally{w(!1)}}async function j(e){if(e.preventDefault(),i!==m)return void b("Passwords do not match.");if(i.length<8)return void b("Password must be at least 8 characters.");w(!0),b("");try{let e=await fetch("/api/auth/sign-up/email",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:s,password:i,name:s.split("@")[0]})});if(e.ok)A("Account created — you can sign in now."),Z("signin");else{let t=await e.json().catch(()=>null);b(t?.error??"Could not create account.")}}catch{b("Network error — please try again.")}finally{w(!1)}}return(0,l.jsx)("div",{className:"flex min-h-screen w-full items-center justify-center bg-neutral-950 px-4",children:(0,l.jsxs)("div",{className:"w-full max-w-sm",children:[(0,l.jsxs)("div",{className:"mb-8 text-center",children:[(0,l.jsxs)("div",{className:"inline-flex items-center gap-1.5 mb-6",children:[(0,l.jsx)("span",{className:"text-emerald-500 font-mono text-sm",children:"$"}),(0,l.jsx)("span",{className:"text-sm font-mono font-bold text-white tracking-tight",children:"nodal-agents"})]}),(0,l.jsx)("h1",{className:"text-2xl font-bold text-white tracking-tight",children:"Welcome"}),(0,l.jsx)("p",{className:"text-sm text-neutral-500 mt-1",children:"Sign in or create an account to continue"})]}),(0,l.jsxs)("div",{className:"flex mb-6 rounded-lg bg-neutral-900 p-1 border border-neutral-800",children:[(0,l.jsx)("button",{type:"button",onClick:()=>Z("signin"),className:`flex-1 py-2 text-xs font-medium rounded-md transition-colors ${"signin"===t?"bg-neutral-800 text-white":"text-neutral-500 hover:text-neutral-300"}`,children:"Sign in"}),(0,l.jsx)("button",{type:"button",onClick:()=>Z("signup"),className:`flex-1 py-2 text-xs font-medium rounded-md transition-colors ${"signup"===t?"bg-neutral-800 text-white":"text-neutral-500 hover:text-neutral-300"}`,children:"Create account"})]}),(0,l.jsx)("div",{className:"rounded-2xl border border-neutral-800/50 bg-neutral-900/50 p-6 space-y-4",children:(0,l.jsxs)("form",{onSubmit:"signin"===t?N:j,className:"space-y-3",children:[(0,l.jsxs)("div",{children:[(0,l.jsx)("label",{className:"block text-xs text-neutral-400 mb-1.5",children:"Email address"}),(0,l.jsx)("input",{type:"email",value:s,onChange:e=>c(e.target.value),placeholder:"you@example.com",required:!0,autoFocus:!0,"data-testid":"email-input",className:"w-full rounded-lg border border-neutral-800/50 bg-neutral-800/30 px-3 py-2.5 text-sm text-white placeholder:text-neutral-600 focus:outline-none focus:border-neutral-600 transition-colors"})]}),(0,l.jsxs)("div",{children:[(0,l.jsx)("label",{className:"block text-xs text-neutral-400 mb-1.5",children:"Password"}),(0,l.jsxs)("div",{className:"relative",children:[(0,l.jsx)("input",{type:x?"text":"password",value:i,onChange:e=>u(e.target.value),placeholder:"••••••••",required:!0,"data-testid":"password-input",className:"w-full rounded-lg border border-neutral-800/50 bg-neutral-800/30 px-3 py-2.5 pr-10 text-sm text-white placeholder:text-neutral-600 focus:outline-none focus:border-neutral-600 transition-colors"}),(0,l.jsx)("button",{type:"button",onClick:()=>p(e=>!e),className:"absolute right-3 top-1/2 -translate-y-1/2 text-neutral-500 hover:text-neutral-300 transition-colors",children:x?(0,l.jsx)(o,{size:15}):(0,l.jsx)(d,{size:15})})]})]}),"signup"===t&&(0,l.jsxs)("div",{children:[(0,l.jsx)("label",{className:"block text-xs text-neutral-400 mb-1.5",children:"Confirm password"}),(0,l.jsx)("input",{type:"password",value:m,onChange:e=>h(e.target.value),placeholder:"••••••••",required:!0,className:"w-full rounded-lg border border-neutral-800/50 bg-neutral-800/30 px-3 py-2.5 text-sm text-white placeholder:text-neutral-600 focus:outline-none focus:border-neutral-600 transition-colors"})]}),g&&(0,l.jsx)("p",{className:"text-xs text-red-400","data-testid":"login-error",children:g}),f&&(0,l.jsx)("p",{className:"text-xs text-emerald-400",children:f}),(0,l.jsx)("button",{type:"submit",disabled:C,"data-testid":"login-button",className:"w-full rounded-lg bg-emerald-500 text-black py-2.5 text-sm font-semibold hover:bg-emerald-400 transition-colors disabled:opacity-40 disabled:cursor-not-allowed mt-1",children:C?"…":"signin"===t?"Sign in":"Create account"})]})})]})})}d.displayName="EyeIcon"},7182:(e,t,a)=>{Promise.resolve().then(a.bind(a,6838)),Promise.resolve().then(a.bind(a,8624))},7540:(e,t,a)=>{"use strict";var l=a(1268);a.o(l,"usePathname")&&a.d(t,{usePathname:function(){return l.usePathname}}),a.o(l,"useRouter")&&a.d(t,{useRouter:function(){return l.useRouter}}),a.o(l,"useSearchParams")&&a.d(t,{useSearchParams:function(){return l.useSearchParams}})},8624:(e,t,a)=>{"use strict";a.d(t,{default:()=>r});var l=a(3680),n=a(7540);function r(){let e=(0,n.useRouter)();return(0,l.jsx)("div",{className:"flex min-h-screen w-full items-center justify-center bg-neutral-950 px-4",children:(0,l.jsxs)("div",{className:"w-full max-w-sm",children:[(0,l.jsxs)("div",{className:"mb-8 text-center",children:[(0,l.jsxs)("div",{className:"inline-flex items-center gap-1.5 mb-6",children:[(0,l.jsx)("span",{className:"text-emerald-500 font-mono text-sm",children:"$"}),(0,l.jsx)("span",{className:"text-sm font-mono font-bold text-white tracking-tight",children:"nodal-agents"})]}),(0,l.jsx)("h1",{className:"text-2xl font-bold text-white tracking-tight",children:"Local mode active"}),(0,l.jsx)("p",{className:"text-sm text-neutral-500 mt-1",children:"No authentication required in local-trust mode."})]}),(0,l.jsxs)("div",{className:"rounded-2xl border border-neutral-800/50 bg-neutral-900/50 p-6 space-y-4 text-center",children:[(0,l.jsxs)("p",{className:"text-xs text-neutral-400",children:["You are running Nodal-Agents in ",(0,l.jsx)("code",{className:"text-emerald-400",children:"local-trust"})," ","mode. Pick ",(0,l.jsx)("code",{className:"text-emerald-400",children:"LAN"})," at"," ",(0,l.jsx)("code",{children:"nodal-agents init"})," to enable email + password authentication."]}),(0,l.jsx)("button",{type:"button",onClick:()=>e.push("/stats"),className:"w-full rounded-lg bg-emerald-500 text-black py-2.5 text-sm font-semibold hover:bg-emerald-400 transition-colors",children:"Enter dashboard"})]})]})})}}},e=>{e.O(0,[65,724,358],()=>e(e.s=7182)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[250,345],{4050:(e,s,_)=>{Promise.resolve().then(_.t.bind(_,3363,23))}},e=>{e.O(0,[363,65,724,358],()=>e(e.s=4050)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[15,167,218,302,492,566,762,772,819,896,974,975,988],{4536:()=>{}},_=>{_.O(0,[65,724,358],()=>_(_.s=4536)),_N_E=_.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[15,167,218,302,492,566,762,772,819,896,974,975,988],{4536:()=>{}},_=>{_.O(0,[65,724,358],()=>_(_.s=4536)),_N_E=_.O()}]);
|