@wular/coder 0.4.12 → 0.4.13
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 +1 -1
- package/dist/actions-D12xDiQS.js +4 -0
- package/dist/{adapter-CVd5klMH.js → adapter-Bz0E-DAY.js} +2 -2
- package/dist/{adapter-CU9H4g6c.js → adapter-CsacmMmv.js} +1 -1
- package/dist/adapter-DzpdWewB.js +1 -0
- package/dist/{agent-BA6xr8QY.js → agent-JJStALIx.js} +2 -2
- package/dist/apps-Bnk7F3A2.js +379 -0
- package/dist/args-Dqf5Y1RP.js +1 -0
- package/dist/async-Tj4zKHXR.js +3 -0
- package/dist/{auth-DuXnSNf9.js → auth-BhpnOCbn.js} +1 -1
- package/dist/builtin/coder/agent.json +0 -1
- package/dist/builtin/coder/system.md +1 -1
- package/dist/{chat-CgQdDRhs.js → chat-CSepnsrK.js} +1 -1
- package/dist/cli.js +13 -13
- package/dist/cmd-BHZwhrfa.js +118 -0
- package/dist/connection-BkYTuJjV.js +1 -0
- package/dist/context-zhSlmXOp.js +7 -0
- package/dist/dash/standalone/node_modules/contextjsx/package.json +1 -1
- package/dist/dash/standalone/server/build-index.json +1 -1
- package/dist/dash/standalone/server/manifest.json +1281 -1261
- package/dist/dash/standalone/server/modules-server-server-react-server/src/agent/context/{turn.dac8eb211c500271.js → turn.6bb73458768e222e.js} +4 -16
- package/dist/dash/standalone/server/modules-server-server-react-server/src/client/{index.0de14cb4e30bd70d.js → index.de1f1311bab4252f.js} +12 -6
- package/dist/dash/standalone/server/modules-server-server-react-server/src/core/{defaults.1b615366c56838a1.js → defaults.e972c134a1ae918f.js} +3 -5
- package/dist/dash/standalone/server/modules-server-server-react-server/src/core/task/{log-view.60308a11f7001eb7.js → log-view.ec6391dbf3063330.js} +40 -48
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/api/{load.be791a5eaf328738.js → load.30ed8c28774a1a82.js} +4 -4
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/connect/{page.0fbfdba5254f7ae5.js → page.04762872666a6f0a.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/create/[id]/{page.70913bd4075da914.js → page.118a70787eff1761.js} +23 -3
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/account/{loading.e348ec45e9ed951b.js → loading.fcdfd50c21031895.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/account/{notify.61aab176baeefebd.js → notify.98dfcd316c306258.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/account/{page.815371ed0d5dd4fa.js → page.74c59322f5fe8a2c.js} +4 -4
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/account/{sign-out.1d6af804f9ec043d.js → sign-out.730aa96b086ac996.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/(list)/{agent-menu.2ed0e66d131fc148.js → agent-menu.1be5795272b245c8.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/(list)/{agents-grid.f43bcc1148ce3650.js → agents-grid.2c30ace077893029.js} +6 -6
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/(list)/{connect-apps.f3af8cc8540719d7.js → connect-apps.8a20501ccb244421.js} +3 -3
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/(list)/{loading.fac1132ad9c4248e.js → loading.733f0acc2af5ceda.js} +2 -2
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/(list)/{page.c6efd5432c1a4a75.js → page.d066b77dd3187026.js} +9 -9
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/{layout.a795379254982121.js → layout.b26006f060cd48f0.js} +9 -9
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/{page.a2cb6d1f1714259a.js → page.4b23e9df21433bd3.js} +9 -9
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/platforms/{loading.4da9e2ba3fea937f.js → loading.e06845585ca67abc.js} +2 -2
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/platforms/{page.996172c951739b35.js → page.4048048acb374c67.js} +35 -23
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/platforms/{platform-actions.8e7ca54dd1821e98.js → platform-actions.000f2f87a48bfbc6.js} +36 -10
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/settings/{agent-settings-form.aa9e157d141481d7.js → agent-settings-form.ee0bb2dc4d403ec3.js} +8 -8
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/settings/{loading.ad1a4c9b000d269a.js → loading.0e3641f3e4abaa7c.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/settings/{page.44d886e60ae04303.js → page.649b4ba135ded99b.js} +7 -7
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/tasks/{loading.521c9e7b8d77f557.js → loading.195e168e8e41d797.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/tasks/{page.828cfb8112404792.js → page.96f7573208644f40.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/usage/{loading.8f998a9c511e1fb3.js → loading.905293c9aa9afbc9.js} +2 -2
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/usage/{page.45e18b6dc3019af4.js → page.5f2b8585db8b27ad.js} +4 -4
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/{versions-list.c8d76988c734dda2.js → versions-list.8700f0106f4e8c15.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/edit/{loading.b1367e864b4fb406.js → loading.f94b2f9ab04aaf21.js} +3 -3
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/edit/{page.dd11f2618e08becd.js → page.e898c4b5ef16ecb0.js} +7 -7
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/agent/{agent-pills.f987c12bcbc5c850.js → agent-pills.44e689e546fb042b.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/agent/{agent-toggle.1579dc8acbaacf92.js → agent-toggle.4c67dfbb7d28a416.js} +2 -2
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/agent/{hero.ad5cc342db794e5d.js → hero.9740a8e2f4b41f28.js} +5 -5
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/editor/{connect-repositories.43b4b28f194ea842.js → connect-repositories.ff8b78a03153239b.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/editor/{editor.776856fe1ed1a642.js → editor.471af698b8060eba.js} +31 -20
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/editor/{import-picker.eafa5b41a2ed571f.js → import-picker.b7b5c89e618e8f89.js} +5 -5
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/new/{loading.ee001af7a96e3972.js → loading.ecb9dfd4d0f9d107.js} +2 -2
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/new/{page.7d84ef2b178b34d2.js → page.880bdac7fe843635.js} +5 -5
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/{layout.393cf7429eea189e.js → layout.81f7e055829854a3.js} +5 -5
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/operator/operator-apps.09bf294d753ee9d7.js +115 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/operator/{page.980adfb7c5714752.js → page.8f8697b1b6b34ad7.js} +36 -9
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/{page.24a1987405ed7b17.js → page.fe608b8e661aba1d.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{connections-list.21ec9dc73ce68656.js → connections-list.97381888bfdd711b.js} +8 -8
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{credentials-list.683476f62a9ecde7.js → credentials-list.a4d8338c7f6a5702.js} +10 -8
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{credentials.b43dd3d97c536c2a.js → credentials.1443bbed1ff1d441.js} +8 -8
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{engines-list.9e116751bd34e2cc.js → engines-list.d47db60d7dc01ebd.js} +2 -2
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{list.083f5c665df04b1b.js → list.a5b273558fb7f0f0.js} +4 -4
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{models-list.537f63f8e5dd085d.js → models-list.31d369f1b7ab45da.js} +66 -32
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{page.dfed4ae6ffc74434.js → page.805d0f8a2c5817d6.js} +15 -15
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{runners-list.3afa989490bbe77c.js → runners-list.1e83449aa6593224.js} +6 -6
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/{secrets-list.0d175ee815b22cd7.js → secrets-list.17ac06593005b8ba.js} +4 -4
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/{layout.3e8289f888fa444c.js → layout.8c4a2b31b194ba3e.js} +5 -5
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/{page.06feaa5fbb06f1e6.js → page.a77996786278cda0.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/{settings-head.bbc7ced8dd5491eb.js → settings-head.705be0b1129b97af.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/setup/{create-link.ff95e4b6977d0474.js → create-link.19b4c50ef497aca1.js} +3 -3
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/setup/{outcome-dialog.894c73f9abee3ce1.js → outcome-dialog.18cf32fa42247b91.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/setup/{page.f06fda0df59beeb5.js → page.616f0b36bf7925bc.js} +5 -5
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/[id]/{activity.3c79cf14feff12bf.js → activity.a911169a820ba604.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/[id]/{loading.47cbb34ea8d2e33f.js → loading.76f851da5cc5268d.js} +5 -5
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/[id]/{page.abed2a8424ef3da0.js → page.ddb594bb6567ee13.js} +6 -6
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/[id]/task-actions.51fbeac76459433a.js +240 -0
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/[id]/{task-view.dc294bb94b7437e1.js → task-view.3276538e8306fd8a.js} +28 -28
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/{composer-data.309a194fc7fa34be.js → composer-data.05fc39e1a7fd1ab7.js} +2 -2
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/{composer.5072aacdce127689.js → composer.dbf06b05c5e2eba3.js} +9 -9
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/list/{status.16190fdd5fd7daad.js → status.cb704b48ce86cc7d.js} +6 -3
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/list/{task.0a1b5878dccd3b37.js → task.f089c1c122ed6dd2.js} +17 -4
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/list/{tasks-list.1162926f7498c732.js → tasks-list.5a00d69851dae119.js} +37 -22
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/list/{tasks-section.1d687c986db53a73.js → tasks-section.36e70c93f7d0feee.js} +7 -7
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/{page.d5d8cb5033823c9c.js → page.185b1ba0c803db3f.js} +4 -4
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/usage/{loading.97d277dbab9c15cf.js → loading.a7e0ec01bfa769e3.js} +2 -2
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/usage/{page.fb21ebe90d49dac1.js → page.d41fea7676e37bfc.js} +4 -4
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/usage/{range-bar.2197d8f43216d104.js → range-bar.69e68c9dae09f238.js} +2 -2
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/{layout.185dbc99875e208a.js → layout.296d70b95894209f.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/{foreign-link.1f4217895ff1e835.js → foreign-link.8c6adf9c5a6f467c.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/{loading-card.cc76fc9708142525.js → loading-card.1cea8a722c10b998.js} +2 -2
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/{page-head.85f15db7b648d48c.js → page-head.87b92529dbb53ceb.js} +3 -3
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/{stream.e2915852cf82c86b.js → stream.c32d78562f75db25.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/{task-toasts.0ed8ccaae81b9d53.js → task-toasts.44075fa7e04575e8.js} +5 -5
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/nav/{back.180765bdadf6d602.js → back.d6109e72fbd04b45.js} +2 -2
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/nav/{org.572ad93c7707ab27.js → org.d3abfd4053b711ce.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{confirm.c1281f9b12854210.js → confirm.29e198be34578222.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{filter.3a452a262f040973.js → filter.81bb9a5c60cd1089.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{modal.25d53e5b41b9c4e5.js → modal.0b69c7fd9db025b9.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{segmented.a08dc08338d080e9.js → segmented.633abe26ff760e37.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{sentinel.17cffebfc3103b9f.js → sentinel.0ddf515b8f09ef9f.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{tabs.66b2e54963f6901b.js → tabs.1600a0b563a5c7dd.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{toolbar.24036899654de6df.js → toolbar.8b3a460a65edf85a.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/utils/{action.b9a5c37272250e82.js → action.67dd6f8ab1ae067d.js} +1 -1
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/utils/{client.a3928fa2dcd27b75.js → client.78267fa3d7905d17.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/{action-71685b2d5ad9f359.js → action-a76e495fb39a73d3.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/{agent-pills-15da36c2cb81991b.js → agent-pills-4d3c6a2aa9eb1522.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/{agent-settings-form-6e6a87d6e673daa8.js → agent-settings-form-f7231a66e391f6b6.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/{agent-toggle-ca98586e3b4ce9ae.js → agent-toggle-d7d27123f2070f18.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/{agents-grid-29c399e46b4e9e2b.js → agents-grid-185ecb3d86c6c447.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/{back-fa9d6e37f9828093.js → back-e29cb10f5548ddae.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/{combo-86f3e11d1f6f6cee.js → combo-702c94817bf6ac17.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/composer-56ebf36d63400423.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/{composer-85e0ec7163ae18b7.js → composer-a686289a79f64bae.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/composer-data-f46a9bc7a14b4f9a.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/{confirm-c29a1db0130638d2.js → confirm-a78147b6ecef3847.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/{connect-apps-b73490e04ae6398d.js → connect-apps-696726aedab42c96.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/{connect-repositories-0de82daaf654b1d3.js → connect-repositories-7770ab805160028d.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/connections-list-07559f145f3e3da3.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/{copy-445c11202f136275.js → copy-bdc60bdafe336316.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/create-link-426b0a5871ee41dd.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/credentials-list-f07d090410104148.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/{custom-range-a0630599f907b30e.js → custom-range-6618f32ef6cd4e80.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/editor-0860e370cbfc6b03.js +6 -0
- package/dist/dash/standalone/static/assets/chunks/engines-list-31b9bb7885924b05.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/{field-b82a0f895266791c.js → field-bb8191aa02d07282.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/instructions-06b63e558f879da5.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/{instructions-affaaeff366b1725.js → instructions-2d9fbcbfadac4f40.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/list-2773686bf8df64c7.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/models-list-03611e64b6a07efe.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/{notice-57db7a1f05b7308c.js → notice-d14fdac28139c0a8.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/outcome-dialog-d3ba8ef89c59f801.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/{outcome-dialog-5cf575a5e6921a5d.js → outcome-dialog-fde11a52c282301d.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/platform-actions-2a71c62b9f7eaef3.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/platform-actions-70600c9943320152.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/runners-list-edf536eb8003eab5.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/secrets-list-e86122f73525ff95.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/segmented-0b6dc6b93c35e0f5.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/shared-init-b281027d465e004f.js +5 -0
- package/dist/dash/standalone/static/assets/chunks/shared-init-c3bd249cf1eca6d1.js +2 -0
- package/dist/dash/standalone/static/assets/chunks/side-toggle-9b3af821cfe4c824.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/{tail-b1c46587301ef397.js → tail-f8804b80cf32f8d0.js} +1 -1
- package/dist/dash/standalone/static/assets/chunks/task-a37e7c26e82eb77d.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/task-actions-705395565f2d83b8.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/task-view-cb21169f38b56d15.js +6 -0
- package/dist/dash/standalone/static/assets/chunks/tasks-list-d7dccfd7e0623ae0.js +1 -0
- package/dist/dash/standalone/static/assets/chunks/{versions-list-21cb854e6a7108a7.js → versions-list-f8f2e71df691efda.js} +1 -1
- package/dist/dash/standalone/static/assets/create-param-id-c2c756f652f2fc30.css +1 -0
- package/dist/dash/standalone/static/assets/{dash-param-org-account-9471bec93c444232.css → dash-param-org-account-702f8a1b213e4026.css} +1 -1
- package/dist/dash/standalone/static/assets/dash-param-org-agents-aad2f9f93c06e9ab.css +1 -0
- package/dist/dash/standalone/static/assets/dash-param-org-agents-new-f9dcbcec36586f2b.css +1 -0
- package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-8ff47f5d622c1f9b.css +1 -0
- package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-edit-907036d553cfeb36.css +1 -0
- package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-platforms-5cc77badad15f00c.css +1 -0
- package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-settings-705d7c15868b4fd6.css +1 -0
- package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-tasks-04e189c045098772.css +1 -0
- package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-usage-76fcd1ce7b3dae71.css +1 -0
- package/dist/dash/standalone/static/assets/{dash-param-org-bcfa3de29341d5ba.css → dash-param-org-eccb6bb9297a53e6.css} +1 -1
- package/dist/dash/standalone/static/assets/dash-param-org-operator-635a121f7a9a95bd.css +1 -0
- package/dist/dash/standalone/static/assets/{dash-param-org-settings-6d6902345d88a687.css → dash-param-org-settings-a3297dc4d9e0c961.css} +1 -1
- package/dist/dash/standalone/static/assets/dash-param-org-settings-param-tab-bcb06f81d9e8268d.css +1 -0
- package/dist/dash/standalone/static/assets/{dash-param-org-setup-173efecd7b990c2e.css → dash-param-org-setup-df4be8b188b9777f.css} +1 -1
- package/dist/dash/standalone/static/assets/dash-param-org-tasks-16f9866a1b4801cd.css +1 -0
- package/dist/dash/standalone/static/assets/dash-param-org-tasks-param-id-02ae551dcd852b57.css +1 -0
- package/dist/dash/standalone/static/assets/dash-param-org-usage-f2175403069aab99.css +1 -0
- package/dist/dash/standalone/static/assets/{global-87e1762113874559.css → global-e1de614478b64717.css} +1 -1
- package/dist/dash/standalone/static/assets/pnext-client-0dc829ba60df5c26.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-14d191f7f1da6602.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-169eaa63783b71fd.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-1e34cfefafa70fac.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-285d61f00a80f40b.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-35b89c3ba23ee845.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-6c42784e005d4b87.js +1 -0
- package/dist/dash/standalone/static/assets/{pnext-client-576c06599e241231.js → pnext-client-6cd93f9bd4cf6ffd.js} +1 -1
- package/dist/dash/standalone/static/assets/pnext-client-7355f473fade532d.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-815c3c297f75efb0.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-87fe73c10a4dc33c.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-98b56a142d441260.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-b4bafe68a40f720b.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-bf61ff39bdc0db48.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-c9fa86c244813f74.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-d2e7a75e16221224.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-d34e774405ea8da8.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-d511822afdb41d1d.js +1 -0
- package/dist/dash/standalone/static/assets/pnext-client-e113aa2f25ecfe01.js +1 -0
- package/dist/dash/standalone/static/assets/{pnext-client-c2c30dcb6dc31d60.js → pnext-client-eb62f461d0c32266.js} +1 -1
- package/dist/{discover-CPZdprlQ.js → discover-CHfF4cEz.js} +1 -1
- package/dist/{docs-x-l7gjFE.js → docs-KHc0_gFX.js} +1 -1
- package/dist/{drive-Y-ZlgiUW.js → drive-Bwl7Bjme.js} +1 -1
- package/dist/emit-BrkJJPUE.js +11 -0
- package/dist/env-6Y-NNnYD.js +1 -0
- package/dist/errors-DO_IltpP.js +16 -0
- package/dist/exec-BmTa0vcO.js +4 -0
- package/dist/executor-ufWRqhdS.js +11 -0
- package/dist/flow/builtin/review/index.d.ts +1 -1
- package/dist/flow/builtin/review/index.js +3 -3
- package/dist/flow/index.d.ts +1 -1
- package/dist/flow/index.js +1 -1
- package/dist/hook-CIipj9MJ.js +1 -0
- package/dist/http-Cg8PSe-c.js +1 -0
- package/dist/{index-BdkdNI1v.d.ts → index-ChcxzFdB.d.ts} +50 -185
- package/dist/integrations-I7fRDk_l.js +4 -0
- package/dist/lib/broker.js +2 -2
- package/dist/load-BDlEFetB.js +2 -0
- package/dist/local-COlczLwI.js +5 -0
- package/dist/log-view-CfX9lakH.js +4 -0
- package/dist/{maintenance-BfxcatXH.js → maintenance-CKCIWOvn.js} +1 -1
- package/dist/{match-Bq4sDuCy.js → match-CufHAZQH.js} +1 -1
- package/dist/mcp-BkwmRHI9.js +2 -0
- package/dist/mcp-CGU7aoJ-.js +1 -0
- package/dist/{mcp-Bta09QCU.js → mcp-DAHbhfUh.js} +1 -1
- package/dist/models-CzggS7p2.js +1 -0
- package/dist/output-SNqdgh9A.js +17 -0
- package/dist/permission-MWFjKxqX.js +1 -0
- package/dist/{prompt-onpyIyXK.js → prompt-CIx4jwQF.js} +1 -1
- package/dist/refresh-CxsaX5R9.js +1 -0
- package/dist/remote-C9Hj2cby.js +2 -0
- package/dist/remote-HUZCWgfl.js +3 -0
- package/dist/{runner-CTFTuaz_.js → runner-DYysY1-G.js} +1 -1
- package/dist/runner.json +1 -1
- package/dist/runner.tgz +0 -0
- package/dist/runners-CfaGE0nV.js +36 -0
- package/dist/schema.js +1 -1
- package/dist/sdk.d.ts +285 -104
- package/dist/sdk.js +1 -1
- package/dist/serve-DdAdw7Su.js +4 -0
- package/dist/serve-NQykWAKV.js +1 -0
- package/dist/serve-vKNqVaVy.js +12 -0
- package/dist/slack-BtKvW_4v.js +5 -0
- package/dist/task-CFxs0E_J.js +1 -0
- package/dist/task-iuYQ0zAK.js +7 -0
- package/dist/tools-B6ZxcqRi.js +2 -0
- package/dist/{tools-CM4UCsId.js → tools-FVop8XYG.js} +1 -1
- package/dist/tools-search-kjKKolwp.js +1 -0
- package/dist/turn-DQ13lkPF.js +2 -0
- package/dist/types-DPtbvoo3.js +1 -0
- package/dist/types-DmThhjcW.js +1 -0
- package/dist/views-CMHXBMJp.js +3 -0
- package/dist/{wire-JMNPv8f6.js → wire-C9CupY_A.js} +1 -1
- package/dist/worker-BQpx1dPr.js +9 -0
- package/dist/worker-sTJL2eoe.js +1 -0
- package/docs/access.md +33 -0
- package/docs/agents/coder.md +0 -11
- package/docs/agents/index.md +1 -1
- package/docs/cli/agent.md +6 -6
- package/docs/cli/connection.md +5 -5
- package/docs/cli/flow.md +9 -9
- package/docs/cli/index.md +3 -3
- package/docs/cli/model.md +12 -10
- package/docs/cli/runner.md +1 -1
- package/docs/cli/server.md +2 -2
- package/docs/cli/task.md +23 -21
- package/docs/config.md +5 -15
- package/docs/flows.md +1 -1
- package/docs/models.md +7 -6
- package/docs/sdk.md +29 -29
- package/docs/self-host.md +25 -25
- package/package.json +2 -2
- package/plugins/claude/.claude-plugin/plugin.json +1 -1
- package/plugins/cursor/.cursor-plugin/plugin.json +1 -1
- package/dist/actions-BT7_eKXm.js +0 -10
- package/dist/adapter-BT8ECcRG.js +0 -1
- package/dist/apps-D-v5sQJk.js +0 -367
- package/dist/args-CbO_Ck9Z.js +0 -11
- package/dist/async-XNO3nqum.js +0 -3
- package/dist/cmd-DX5ByXo3.js +0 -119
- package/dist/connection-DNxi2btM.js +0 -1
- package/dist/context-65bOofts.js +0 -7
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/operator/operator-apps.a244f3199e7cf09c.js +0 -144
- package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/[id]/task-actions.587da79d68ab8d14.js +0 -151
- package/dist/dash/standalone/static/assets/chunks/composer-910bb87127972f62.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/composer-data-5fed6c271a4791ca.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/connections-list-c50f58b4b28d10bb.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/create-link-6d64a2d5f9ce6de0.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/credentials-list-bee95799b2319b3b.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/defaults-52f30e83d7666f7a.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/editor-b9951819f21b2e43.js +0 -6
- package/dist/dash/standalone/static/assets/chunks/engines-list-2720c3e8fa12b2f7.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/instructions-fd7402ac5aa8b50e.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/list-d918f79562d497eb.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/models-list-12bc7aceaa52f5b0.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/outcome-dialog-b219595be320108a.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/platform-actions-1d27d2ba7eee9ff1.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/platform-actions-dba96dcb0f6513db.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/runners-list-36f8c5ecfcf8e9ae.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/secrets-list-d7dbafd24dd18481.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/segmented-8f809ebe712e92a7.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/shared-init-cc13a835f3508618.js +0 -2
- package/dist/dash/standalone/static/assets/chunks/shared-init-f475017dd5811e33.js +0 -5
- package/dist/dash/standalone/static/assets/chunks/side-toggle-0aa237eba3dfe9c1.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/task-681061023bdf0a49.js +0 -5
- package/dist/dash/standalone/static/assets/chunks/task-actions-c9e46e81604e85c5.js +0 -1
- package/dist/dash/standalone/static/assets/chunks/task-view-134186a544917ceb.js +0 -5
- package/dist/dash/standalone/static/assets/chunks/tasks-list-352a3222d878de0f.js +0 -1
- package/dist/dash/standalone/static/assets/create-param-id-da3f7e20689fe51a.css +0 -1
- package/dist/dash/standalone/static/assets/dash-param-org-agents-64500e78caae32df.css +0 -1
- package/dist/dash/standalone/static/assets/dash-param-org-agents-new-c067c22928a2d7cc.css +0 -1
- package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-9dec87710e04f949.css +0 -1
- package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-edit-779c474301e04440.css +0 -1
- package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-platforms-c7d594b5232630c2.css +0 -1
- package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-settings-a80e62570716fdb9.css +0 -1
- package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-tasks-ce278252012297b9.css +0 -1
- package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-usage-d3b6d701eb8e1403.css +0 -1
- package/dist/dash/standalone/static/assets/dash-param-org-operator-b7bc6447cc27c9ce.css +0 -1
- package/dist/dash/standalone/static/assets/dash-param-org-settings-param-tab-85c7af9a89eef06e.css +0 -1
- package/dist/dash/standalone/static/assets/dash-param-org-tasks-ae0bc03f468e63cc.css +0 -1
- package/dist/dash/standalone/static/assets/dash-param-org-tasks-param-id-7325d8cff5be3592.css +0 -1
- package/dist/dash/standalone/static/assets/dash-param-org-usage-517b2a7ae462ac57.css +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-05df74b071ddb0b3.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-2c19cca257f78ae6.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-2db05dfa62642a65.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-36b0d6085a073880.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-6aa0f19a30d58d63.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-6b30b71f452f2f07.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-6ccb4d4fff812db3.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-74eb465defba421e.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-8c692d12b2fd90d6.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-92e17d39063a9ced.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-93246aea268c2682.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-9954dcbc0c579e0d.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-c0dfa1cdde9a9855.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-c28d38d4aafd4af6.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-dbf741073e11eac0.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-e29194a27280333f.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-f8a7e692b27caad9.js +0 -1
- package/dist/dash/standalone/static/assets/pnext-client-fc5b8cfcba2a9f63.js +0 -1
- package/dist/env-B9JG6gwo.js +0 -1
- package/dist/errors-XBA-Ls4n.js +0 -10
- package/dist/exec-iFssTO5V.js +0 -3
- package/dist/executor-Dt2FFT-y.js +0 -11
- package/dist/http-BZfjbiov.js +0 -1
- package/dist/integrations-DyInAa5g.js +0 -2
- package/dist/load-zhcrwSRF.js +0 -2
- package/dist/local-D55UkW93.js +0 -5
- package/dist/log-view-CL3_S0IQ.js +0 -3
- package/dist/mcp-CUITALl1.js +0 -1
- package/dist/models-C1O2DrXx.js +0 -1
- package/dist/output-D95NoAA9.js +0 -16
- package/dist/prompts-B8pKhMcu.js +0 -4
- package/dist/refresh-D-0K9fo3.js +0 -1
- package/dist/remote-CDm0YUU3.js +0 -3
- package/dist/runners-CYTicTb7.js +0 -36
- package/dist/serve-Bzs_lEg-.js +0 -1
- package/dist/serve-CWtLyyTz.js +0 -12
- package/dist/serve-DE6A-rBk.js +0 -4
- package/dist/slack-Bo5l13Rs.js +0 -5
- package/dist/task-BU1JEK9X.js +0 -7
- package/dist/task-CPzBITsp.js +0 -1
- package/dist/tools-BMaKWTa6.js +0 -1
- package/dist/turn-DMvPfhb5.js +0 -3
- package/dist/types-D_xnfP7m.js +0 -1
- package/dist/views-DEdKqLm_.js +0 -5
- package/dist/worker-BuP_Lem1.js +0 -9
- package/dist/worker-C1tuzq5n.js +0 -1
- /package/dist/dash/standalone/server/modules-server-server-react-server/src/core/{errors.0a735590a5412ea6.js → errors.1bd0542d832ae0c0.js} +0 -0
- /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/platforms/{page.c811938ae8a8f1df.css.pnext-asset.js → page.107e622830bff31d.css.pnext-asset.js} +0 -0
- /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/agent/{hero.1bef5dca89b5942c.css.pnext-asset.js → hero.243d85cac1f22df2.css.pnext-asset.js} +0 -0
- /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/editor/{editor.c496247a81ed832c.css.pnext-asset.js → editor.1eb1bce282b289c9.css.pnext-asset.js} +0 -0
- /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/{model-options.a96c11d11674f598.js → model-options.73f8d0d54f79d8e3.js} +0 -0
- /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/[id]/{task-view.57990cfd2bdf5c11.css.pnext-asset.js → task-view.42337a0d7c6ad0b6.css.pnext-asset.js} +0 -0
- /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/list/{tasks-list.abbbc9ace4d866e5.css.pnext-asset.js → tasks-list.2f90c4410f843fff.css.pnext-asset.js} +0 -0
- /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/{globals.c8fd2b8b01e7077b.css.pnext-asset.js → globals.f8ac779f0ebf888b.css.pnext-asset.js} +0 -0
- /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/{page-head.364ec93a8e7857b3.css.pnext-asset.js → page-head.9fcc49ddf7119d75.css.pnext-asset.js} +0 -0
- /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{modal.9db07d368dcf5981.css.pnext-asset.js → modal.a533234c7c831be4.css.pnext-asset.js} +0 -0
- /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{segmented.0bd8652fdbc05eb0.css.pnext-asset.js → segmented.c6f30b839fd27f35.css.pnext-asset.js} +0 -0
- /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{sentinel.1e3ec9bd6008d811.css.pnext-asset.js → sentinel.d17e2bfcbeb9df31.css.pnext-asset.js} +0 -0
- /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{tabs.ca13e40ff54128d0.css.pnext-asset.js → tabs.025b532d6cc51736.css.pnext-asset.js} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{Gt as e,Zt as t,kn as n}from"./core-DwsAMCnL.js";import{_r as r,ar as i,br as a,cr as o,fr as s,ir as c,nr as l,sr as u,tr as d}from"./errors-DO_IltpP.js";function f(e,t=``,r){return n.add(e,{description:t,...r?{value:r}:{}}),e}const p=e=>f(s(i()),e),m=(e,t)=>f(s(r()),e,t),h=(e,t)=>f(s(c(r())),e,t),g=(e,t)=>f(s(a([r(),o(!0)])),e,t),_=e=>f(l(s(a([r(),o(!0)])),!0),e,`[url]`),v=e=>f(s(a([o(`all`),d().check(u(),t())],{error:`expected a positive integer or "all"`})),e,`<n|all>`),y=t=>f(s(a([o(`all`),d().check(u(),e())],{error:`expected a number or "all"`})),t,`<n|all>`),b={server:g(`act on your Coder server`,`[url]`),workspace:m(`with --server: the workspace to act in (default: the saved one)`,`<slug>`),yes:p(`with --server: connect to a server used for the first time without asking`)};function x(e){return(e.server===!0?` --server`:typeof e.server==`string`?` --server ${JSON.stringify(e.server)}`:``)+(e.workspace?` --workspace ${JSON.stringify(e.workspace)}`:``)}const S={server:_(`act on your Coder server, in the saved workspace`),yes:p(`connect to a server used for the first time without asking`)};export{g as a,m as c,v as i,h as l,S as n,b as o,p as r,x as s,f as t,y as u};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import{qi as e}from"./core-DwsAMCnL.js";import{A as t,G as n,Or as r,Tr as i,kr as a}from"./errors-DO_IltpP.js";import{C as o}from"./output-SNqdgh9A.js";import{c as s,o as c}from"./actions-D12xDiQS.js";import{C as l,b as u,i as d,r as f,s as p,t as m,w as h}from"./executor-ufWRqhdS.js";import g from"node:path";import _ from"node:process";var v=e({driveAsyncTool:()=>T,pendingCall:()=>C,startAsyncTool:()=>w,taskFlow:()=>S});const y=e=>g.join(e,`async.json`),b=e=>i(y(e))??[];function x(e,t){return r(`${y(e)}.lock`,()=>{let n=b(e),r=t(n);return a(y(e),n),r})}const S=e=>e.flowRunId?h(e.flowRunId)?.name:void 0;function C(e,t){return b(e).find(e=>(!t||e.tool===t)&&!e.delivered&&(l(e.runId)?.status===`running`||e.pid!==void 0&&f(e.pid)))?.runId}async function w(e,t,n,r){let a=i(g.join(e,`job.json`));if(!a)throw Error(`This task has no record`);if(S(a)===t.flow)throw Error(`A ${t.name} task cannot start a ${t.name}`);if(r!==void 0&&!(r>0))throw Error(`timeout must be a positive number of seconds`);let s=a.cwd??_.cwd();return x(e,i=>{let c=C(e,t.name);if(c)throw Error(`${E(t.name)} ${c} is still running; its result arrives as a message.`);if(i.filter(e=>e.tool===t.name).length>=t.limit)throw Error(`This task has used all ${t.limit} of its ${t.name}s.`);let l=d(t.flow,{cwd:s,args:t.args(n,s)});i.push({tool:t.name,runId:l.runId});let{[o]:f,...p}=_.env;return u(l,s,{env:p,drive:[`--task`,a.id,`--tool`,t.name,...r?[`--timeout`,String(r)]:[]]}),l.runId})}async function T(e,r,i,a,o){let l=n(i,a),u=e=>x(l,t=>{let n=t.find(e=>e.runId===r);n&&Object.assign(n,e)}),d=E(e.name),f,g,v=()=>{},y=new Promise(e=>{o&&(g=setTimeout(()=>e(`timeout`),o*1e3)),v=()=>e(`stopped`),_.once(`SIGINT`,v),_.once(`SIGTERM`,v)}),S;try{await u({pid:_.pid});let t=h(r);if(!t)throw Error(`No flow run "${r}".`);let n=await Promise.race([m(t,i,{onStart:e=>f=e}),y]);typeof n==`string`?(await p(r,f?.runningIds()),f?.requestStop(),S=n===`timeout`?`${d} timed out after ${o}s and was stopped`:`${d} was stopped`):S=`${d} finished\n\n${e.render(n.result,r)}`}catch(e){S=`${d} ${r} failed: ${e instanceof Error?e.message:String(e)}`}finally{clearTimeout(g),_.off(`SIGINT`,v),_.off(`SIGTERM`,v)}let C=t(i,a);if(!C)throw Error(`No task "${a}" to send ${e.name} ${r} to.`);let w=e.limit-b(l).filter(t=>t.tool===e.name).length,[T,...D]=S.split(`
|
|
2
|
+
`),O=[`${T} (task ${e.name}s left ${w}/${e.limit}).`,...D].join(`
|
|
3
|
+
`);await s(C.cwd??i,C,O,(C.connectionSource??(C.connections?`server`:void 0))===`server`?{resolveConnections:c(C.mcp)}:{}),await u({delivered:!0})}const E=e=>e[0].toUpperCase()+e.slice(1);export{S as i,C as n,w as r,v as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{$ as e,A as t,B as n,C as r,D as i,E as a,F as o,G as s,H as c,I as l,J as u,K as d,L as f,M as p,N as m,O as h,P as g,Q as _,R as v,S as y,T as b,U as x,V as S,W as C,X as w,Y as T,Z as E,_ as D,a as O,at as k,b as ee,c as A,ct as j,d as M,dt as te,et as N,f as ne,ft as re,g as ie,gt as ae,ht as oe,i as se,it as ce,j as le,k as ue,lt as de,m as fe,mt as P,n as pe,nt as me,o as he,ot as F,p as ge,pt as _e,q as ve,r as ye,rt as be,s as xe,st as Se,tt as Ce,ut as we,v as Te,vt as Ee,w as De,x as Oe,y as ke,z as Ae}from"./build-CmtlB7pX.js";import{i as je,l as Me}from"./http-BZfjbiov.js";import{B as Ne,_r as Pe,gr as Fe,or as Ie,yn as Le}from"./apps-D-v5sQJk.js";import{m as I,p as L,platformLink as R}from"./schema.js";import{a as Re,i as ze,o as Be}from"./serve-CWtLyyTz.js";import{createECDH as Ve,hkdfSync as He}from"node:crypto";import{isDeepStrictEqual as Ue}from"node:util";function We(e,t,n){if(!S(e,t,n))throw new N(`JWE Protected, JWE Shared Unprotected and JWE Per-Recipient Header Parameter names must be disjoint`)}function Ge(e,t,n=!1){if(!e[1]&&!e[2]&&!e[3])throw new N(`either setProtectedHeader, setUnprotectedHeader, or sharedUnprotectedHeader must be called before #encrypt()`);t!==void 0&&(e[8]=t?.crit);let[,i,a,c,l,d,f,p,m]=e;if(l!==void 0&&v(l,`JWE Additional Authenticated Data`),d!==void 0&&v(d,`JWE Content Encryption Key`),f!==void 0&&v(f,`JWE Initialization Vector`),!n&&i!==void 0&&(i=s(N,i)[0],e[1]=i),a!==void 0&&(a=s(N,a)[0],e[2]=a),!n&&c!==void 0&&(c=s(N,c)[0],e[3]=c),p!==void 0&&!x(p))throw TypeError(`JWE Key Management Parameters must be an object`);We(i,a,c);let h={...i,...a,...c};T(N,i),u(N,o,m,i,h),ke(h,i);let{alg:g,enc:_}=h;if(typeof g!=`string`||!g)throw new N(`JWE "alg" (Algorithm) Header Parameter missing or invalid`);let y=Oe[g];if(y?.mode===`integrated-encryption`){if(_!==void 0)throw new N(`JWE "enc" (Encryption Algorithm) Header Parameter must not be present for integrated encryption`);if(d!==void 0)throw TypeError(`setContentEncryptionKey cannot be called with JWE "alg" (Algorithm) Header ${g}`);if(f!==void 0)throw TypeError(`setInitializationVector cannot be called with JWE "alg" (Algorithm) Header ${g}`);return[h,void 0,y]}if(typeof _!=`string`||!_)throw new N(`JWE "enc" (Encryption Algorithm) Header Parameter missing or invalid`);return[h,r(_),y]}async function Ke(e,t,n){let[r,i,a]=t,[o,s,c,l,u,d,f,m,,h]=e,g=s,_=c,v=a??y(r.alg),x,S,C;v.mode===`integrated-encryption`?C=await p(v,n,`encrypt`):[C,x,S]=await ee(v,i,n,r,d,m),S&&(h?_=_?{..._,...S}:S:g=g?{...g,...S}:S,We(g,_,l));let T=g?w(JSON.stringify(g)):``,E=u?.byteLength?w(u):void 0,D=P(E?`${T}.${E}`:T),O=o;r.zip===`DEF`&&(O=await Te(O).catch(e=>{throw new N(`Failed to compress plaintext`,{cause:e})}));let k,A,j;v.mode===`integrated-encryption`?[x,k]=await v.encrypt(C,O,D,g,r,m):{ciphertext:k,tag:A,iv:j}=await b(i,O,C,f,D);let M={ciphertext:w(k)};return j&&(M.iv=w(j)),A&&(M.tag=w(A)),x?.byteLength&&(M.encrypted_key=w(x)),E&&(M.aad=E),g&&(M.protected=T),l&&(M.unprotected=l),_&&(M.header=_),M}async function qe(e,t,n){return Ke(e,Ge(e,n),t)}function Je(e){return[e.protected,e.encrypted_key,e.iv,e.ciphertext,e.tag].join(`.`)}const z=[[`verify`],[`sign`]];function Ye(e){let t={name:`HMAC`,hash:`SHA-${e}`};return{kty:[`oct`],secret:!0,subtle:t,signing:t,usages:z}}function B(e,t){let n={name:t?`RSA-PSS`:`RSASSA-PKCS1-v1_5`,hash:`SHA-${e}`};return{kty:[`RSA`],subtle:n,signing:t?{...n,saltLength:t}:n,usages:z,minRsaBits:2048}}function Xe(e,t){return{kty:[`EC`],crv:e,subtle:{name:`ECDSA`,namedCurve:e},signing:{name:`ECDSA`,hash:`SHA-${t}`},usages:z}}function Ze(){let e={name:`Ed25519`};return{kty:[`OKP`],crv:`Ed25519`,subtle:e,signing:e,usages:z}}function Qe(e){let t={name:`ML-DSA-${e}`};return{kty:[`AKP`],subtle:t,signing:t,usages:z}}const $e=De({HS256:Ye(256),HS384:Ye(384),HS512:Ye(512),RS256:B(256),RS384:B(384),RS512:B(512),PS256:B(256,32),PS384:B(384,48),PS512:B(512,64),ES256:Xe(`P-256`,256),ES384:Xe(`P-384`,384),ES512:Xe(`P-521`,512),EdDSA:Ze(),Ed25519:Ze(),"ML-DSA-44":Qe(44),"ML-DSA-65":Qe(65),"ML-DSA-87":Qe(87)});function et(t){let n=typeof t==`string`?$e[t]:void 0;if(!n)throw new e(`alg ${t} is not supported either by JOSE or your javascript runtime`);return n}function tt(e){return[e&&d(`algorithms`,e.algorithms),e?.crit]}function nt(e){return e===void 0?{}:C(e,F,`JWS Protected Header is invalid`)}function rt(e){try{return P(e)}catch{throw new F(`JWS Compact Serialization payload must use only ASCII characters`)}}async function it(e,t,r,i,o){let{protected:s,header:c,payload:d}=e,f=o??nt(s);if(!S(f,c))throw new F(`JWS Protected and JWS Unprotected Header Parameter names must be disjoint`);let h={...f,...c},g=ve(f,u(F,l,t[1],f,h)),{alg:_}=h;if(typeof _!=`string`||!_)throw new F(`JWS "alg" (Algorithm) Header Parameter missing or invalid`);if(t[0]&&!t[0].has(_))throw new E(`"alg" (Algorithm) Header Parameter value not allowed`);if(g){if(typeof d!=`string`)throw new F(`JWS Payload must be a string`)}else if(typeof d!=`string`&&!(d instanceof Uint8Array))throw new F(`JWS Payload must be a string or an Uint8Array instance`);let v=g||typeof d!=`string`?d:i(d),y=!1;typeof r==`function`&&(r=await r(f,e),y=!0);let b=et(_),x=te(s===void 0?new Uint8Array:P(s),P(`.`),typeof v==`string`?t[2]??=n(v,`payload`,F):v),C=Ae(e.signature,`signature`,F),w=await p(b,r,`verify`),T=await m(w,b.subtle,`verify`);b.minRsaBits&&a(b.alg,T);let D=!1;try{D=await crypto.subtle.verify(b.signing,T,C,x)}catch{}if(!D)throw new Se;let O={payload:typeof v==`string`?Ae(v,`payload`,F):v};return s!==void 0&&(O.protectedHeader=f),c!==void 0&&(O.unprotectedHeader=c),y?[{...O,key:w},g]:[O,g]}async function at(e,t,n){if(e instanceof Uint8Array&&(e=re.decode(e)),typeof e!=`string`)throw new F(`Compact JWS must be a string or Uint8Array`);let{0:r,1:i,2:a,length:o}=e.split(`.`);if(o!==3)throw new F(`Invalid Compact JWS`);return it({payload:i,protected:r,signature:a},t,n,rt)}const V=e=>Math.floor(e.getTime()/1e3),ot={s:1,m:60,h:3600,d:86400,w:604800,y:31557600},st=/^(\+|\-)? ?(\d+|\d+\.\d+) ?(seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)(?: (ago|from now))?$/i,H=`check_failed`;function ct(){throw TypeError(`Invalid time period format`)}function U(e){typeof e!=`string`&&ct();let t=st.exec(e);(!t||t[4]&&t[1])&&ct();let n=parseFloat(t[2]),r=Math.round(n*ot[t[3][0].toLowerCase()]);return Number.isFinite(r)||ct(),t[1]===`-`||t[4]===`ago`?-r:r}function W(e,t){if(!Number.isFinite(t))throw TypeError(`Invalid ${e} input`);return t}function lt(e,t){if(typeof t!=`string`)throw TypeError(`"${e}" claim must be a string`)}function ut(e){if(typeof e!=`string`&&(!Array.isArray(e)||Array.from(e).some(e=>typeof e!=`string`)))throw TypeError(`"aud" claim must be a string or an array of strings`)}function dt(e,t){return typeof e==`number`?W(t,e):e instanceof Date?W(t,V(e)):V(new Date)+U(e)}const ft=e=>{let t=e.toLowerCase();return e.includes(`/`)?t:`application/${t}`},pt=(e,t)=>typeof e==`string`?t.includes(e):Array.isArray(e)?t.some(t=>e.includes(t)):!1;function mt(e,t,n=!1){let r=e[t];if(!(r===void 0&&!n)){if(typeof r!=`number`)throw new j(`"${t}" claim must be a number`,e,t,`invalid`);return r}}function ht(e,t){throw new j(`unexpected "${t}" claim value`,e,t,H)}function gt(e,t,n={}){let r;try{r=JSON.parse(ae.decode(t))}catch{}if(!x(r))throw new we(`JWT Claims Set must be a top-level JSON object`);let{typ:i}=n;if(i!==void 0&&(typeof e.typ!=`string`||ft(e.typ)!==ft(i)))throw new j(`unexpected "typ" JWT header value`,r,`typ`,H);let{requiredClaims:a=[],issuer:o,subject:s,audience:c,maxTokenAge:l}=n,u=[...a];l!==void 0&&u.push(`iat`),c!==void 0&&u.push(`aud`),s!==void 0&&u.push(`sub`),o!==void 0&&u.push(`iss`);for(let e of new Set(u.reverse()))if(!Object.hasOwn(r,e))throw new j(`missing required "${e}" claim`,r,e,`missing`);o!==void 0&&!(Array.isArray(o)?o:[o]).includes(r.iss)&&ht(r,`iss`),s!==void 0&&r.sub!==s&&ht(r,`sub`),c!==void 0&&!pt(r.aud,typeof c==`string`?[c]:c)&&ht(r,`aud`);let{clockTolerance:d}=n,f=0;if(typeof d==`string`)f=U(d);else if(d!==void 0){if(typeof d!=`number`)throw TypeError(`Invalid clockTolerance option type`);f=d}W(`clockTolerance option`,f);let{currentDate:p}=n,m=W(`currentDate option`,V(p===void 0?new Date:p)),h=mt(r,`iat`,l!==void 0),g=mt(r,`nbf`);if(g!==void 0&&g>m+f)throw new j(`"nbf" claim timestamp check failed`,r,`nbf`,H);let _=mt(r,`exp`);if(_!==void 0&&_<=m-f)throw new de(`"exp" claim timestamp check failed`,r,`exp`,H);if(l!==void 0){let e=m-h,t=W(`maxTokenAge option`,typeof l==`number`?l:U(l));if(e-f>t)throw new de(`"iat" claim timestamp check failed (too far in the past)`,r,`iat`,H);if(e<-f)throw new j(`"iat" claim timestamp check failed (it should be in the past)`,r,`iat`,H)}return r}let _t;function G(e){return _t.get(e)}function vt(e){let t=G(e);for(let e of[`iat`,`nbf`,`exp`]){let n=t[e];if(typeof n==`number`&&!Number.isFinite(n))throw TypeError(`"${e}" claim must be a finite number`)}return oe.encode(JSON.stringify(t))}function yt(e,t){return G(e)[t]}var bt=class{constructor(e={}){if(!x(e))throw TypeError(`JWT Claims Set MUST be an object`);(_t||=new WeakMap).set(this,structuredClone(e))}setIssuer(e){return lt(`iss`,e),G(this).iss=e,this}setSubject(e){return lt(`sub`,e),G(this).sub=e,this}setAudience(e){return ut(e),G(this).aud=e,this}setJti(e){return lt(`jti`,e),G(this).jti=e,this}setNotBefore(e){return G(this).nbf=dt(e,`setNotBefore`),this}setExpirationTime(e){return G(this).exp=dt(e,`setExpirationTime`),this}setIssuedAt(e){let t=G(this);return t.iat=e===void 0?V(new Date):typeof e==`string`?W(`setIssuedAt`,V(new Date)+U(e)):dt(e,`setIssuedAt`),this}};async function xt(e,t,n){let[r,i]=await at(e,tt(n),t);if(!i)throw new we(`JWTs MUST NOT use unencoded payload`);let a=gt(r.protectedHeader,r.payload,n);return{...r,payload:a}}async function St(e,t,n){let{plaintext:r,...i}=await ie(e,D(n),t),{protectedHeader:a}=i,o=gt(a,r,n);for(let e of[`iss`,`sub`,`aud`])if(a[e]!==void 0&&(e===`aud`?JSON.stringify(a.aud)!==JSON.stringify(o.aud):a[e]!==o[e]))throw new j(`replicated "${e}" claim header parameter mismatch`,o,e,`mismatch`);return{payload:o,...i}}const Ct=bt;var wt=class extends Ct{#e=[void 0];#t;#n;#r;setProtectedHeader(e){return f(this.#e[1],`setProtectedHeader`),this.#e[1]=e,this}setKeyManagementParameters(e){return f(this.#e[7],`setKeyManagementParameters`),this.#e[7]=e,this}setContentEncryptionKey(e){return f(this.#e[5],`setContentEncryptionKey`),this.#e[5]=e,this}setInitializationVector(e){return f(this.#e[6],`setInitializationVector`),this.#e[6]=e,this}replicateIssuerAsHeader(){return this.#t=!0,this}replicateSubjectAsHeader(){return this.#n=!0,this}replicateAudienceAsHeader(){return this.#r=!0,this}async encrypt(e,t){let n=vt(this);this.#e[1]&&(this.#t||this.#n||this.#r)&&(this.#e[1]={...this.#e[1],iss:this.#t?yt(this,`iss`):void 0,sub:this.#n?yt(this,`sub`):void 0,aud:this.#r?yt(this,`aud`):void 0});let r=[...this.#e];return r[0]=n,Je(await qe(r,e,t))}};async function Tt(e){if(t(e))if(e.type===`secret`)e=e.export();else return e.export({format:`jwk`});if(e instanceof Uint8Array)return{kty:`oct`,k:w(e)};if(!h(e))throw TypeError(i(e,`CryptoKey`,`KeyObject`,`Uint8Array`));if(!e.extractable)throw TypeError(`non-extractable CryptoKey cannot be exported as a JWK`);let n=await crypto.subtle.exportKey(`jwk`,e);delete n.ext,delete n.key_ops,delete n.use,n.kty!==`AKP`&&delete n.alg;for(let e of Object.keys(n))n[e]===void 0&&delete n[e];return n}const K=(e,t)=>{if(typeof e!=`string`||!e)throw new Ce(`${t} missing or invalid`)};async function Et(t,n){let r;if(x(t)){if(r=g(t),typeof r.kty!=`string`)throw TypeError(i(t,`CryptoKey`,`KeyObject`,`JSON Web Key`))}else if(ue(t))r=g(await Tt(t));else throw TypeError(i(t,`CryptoKey`,`KeyObject`,`JSON Web Key`));if(n??=`sha256`,n!==`sha256`&&n!==`sha384`&&n!==`sha512`)throw TypeError(`digestAlgorithm must one of "sha256", "sha384", or "sha512"`);let a;switch(r.kty){case`AKP`:K(r.alg,`"alg" (Algorithm) Parameter`),K(r.pub,`"pub" (Public key) Parameter`),a={alg:r.alg,kty:r.kty,pub:r.pub};break;case`EC`:K(r.crv,`"crv" (Curve) Parameter`),K(r.x,`"x" (X Coordinate) Parameter`),K(r.y,`"y" (Y Coordinate) Parameter`),a={crv:r.crv,kty:r.kty,x:r.x,y:r.y};break;case`OKP`:K(r.crv,`"crv" (Subtype of Key Pair) Parameter`),K(r.x,`"x" (Public Key) Parameter`),a={crv:r.crv,kty:r.kty,x:r.x};break;case`RSA`:K(r.e,`"e" (Exponent) Parameter`),K(r.n,`"n" (Modulus) Parameter`),a={e:r.e,kty:r.kty,n:r.n};break;case`oct`:if(typeof r.k!=`string`)throw new Ce(`"k" (Key Value) Parameter missing or invalid`);a={k:r.k,kty:r.kty};break;default:throw new e(`"kty" (Key Type) Parameter missing or unsupported`)}let o=P(JSON.stringify(a));return w(await _e(n,o))}function Dt(e,t,n,r){let{kty:i,key_ops:a,ext:o,kid:s,alg:c,use:l,crv:u}=e;return(o===void 0||typeof o==`boolean`)&&(a===void 0||Array.isArray(a)&&a.every((e,t)=>typeof e==`string`&&a.indexOf(e)===t)&&a.includes(`verify`))&&t.kty.includes(i)&&(r===void 0||typeof r==`string`&&r===s)&&(c===void 0?i!==`AKP`:n===c)&&(l===void 0||l===`sig`)&&(!t.crv||u===t.crv)}async function Ot(e,t,n){let r=e.get(t)||e.set(t,{}).get(t),{alg:i}=n;if(r[i]===void 0){let e=le(n,t,!0).then(e=>{if(e.type!==`public`)throw new me(`JSON Web Key Set members must be public keys`);return r[i]=e,e}).catch(t=>{throw r[i]===e&&delete r[i],t});r[i]=e}return r[i]}function kt(t){let n;try{n=structuredClone(t)}catch{}if(!c(n))throw new me(`JSON Web Key Set malformed`);let r=n.keys.map(e=>{let t=g(e);return Array.isArray(t.key_ops)&&(t.key_ops=[...t.key_ops]),t}),i=new WeakMap;return Object.defineProperty(async(t,a)=>{let{alg:o,kid:s}={...t,...a?.header},c=typeof o==`string`?$e[o]:void 0;if(!c||c.secret)throw new e(`Unsupported "alg" value for a JSON Web Key Set`);let l=n.keys.filter((e,t)=>Dt(r[t],c,o,s)),{0:u,length:d}=l;if(!d)throw new ce;if(d!==1){let e=new be;throw e[Symbol.asyncIterator]=async function*(){for(let e of l)try{yield await Ot(i,e,c)}catch{}},e}return Ot(i,u,c)},"jwks",{value:()=>structuredClone(n)})}function At(){return typeof WebSocketPair<`u`||typeof navigator<`u`&&navigator.userAgent===`Cloudflare-Workers`||typeof EdgeRuntime<`u`&&EdgeRuntime===`vercel`}let jt;(typeof navigator>`u`||!navigator.userAgent?.startsWith?.(`Mozilla/5.0 `))&&(jt=`jose/v6.2.12`);const Mt=Symbol();async function Nt(e,t,n,r=fetch){let i=await r(e,{method:`GET`,signal:n,redirect:`manual`,headers:t}).catch(e=>{throw e.name===`TimeoutError`?new k:e});if(i.status!==200)throw new _(`Expected 200 OK from the JSON Web Key Set HTTP response`);try{return await i.json()}catch{throw new _(`Failed to parse the JSON Web Key Set HTTP response as JSON`)}}const Pt=Symbol();function q(e,t){return Number.isFinite(e)&&Date.now()<e+t}function Ft(e,t,n){if(Number.isNaN(e))throw TypeError(`"${n}" option must not be NaN`);return typeof e==`number`?e:t}function It(e,t){if(!(e instanceof URL))throw TypeError(`url must be an instance of URL`);let n=new URL(e.href).href,r=t??{},i=r.timeoutDuration;if(typeof i==`number`&&(!Number.isInteger(i)||i<0))throw TypeError(`"timeoutDuration" option must be a non-negative integer`);let a=typeof i==`number`?i:5e3,o=Ft(r.cooldownDuration,3e4,`cooldownDuration`),s=Ft(r.cacheMaxAge,6e5,`cacheMaxAge`),l=new Headers(r.headers);jt&&!l.has(`User-Agent`)&&l.set(`User-Agent`,jt),l.has(`accept`)||l.set(`accept`,`application/json, application/jwk-set+json`);let u=r[Mt],d=r[Pt],f,p,m=0,h=0,g;if(d&&typeof d==`object`){let{uat:e,jwks:t}=d;q(e,s)&&c(t)&&(f=e,g=kt(t))}let _=async()=>{if(p&&At()&&(p=void 0),!p){let e=++m,t=p=Nt(n,l,AbortSignal.timeout(a),u).then(t=>{let n=kt(t);if(e<=h)return;g=n;let r=Date.now();d&&(d.uat=r,d.jwks=t),f=r,h=e}).finally(()=>{p===t&&(p=void 0)})}await p};return Object.defineProperties(async(e,t)=>{(!g||!q(f,s))&&await _();try{return await g(e,t)}catch(n){if(n instanceof ce&&!q(f,o))return await _(),g(e,t);throw n}},{coolingDown:{get:()=>q(f,o),enumerable:!0},fresh:{get:()=>q(f,s),enumerable:!0},reload:{value:_,enumerable:!0},reloading:{get:()=>!!p,enumerable:!0},jwks:{value:()=>g?.jwks(),enumerable:!0}})}const Lt=(e,t)=>new Uint8Array(He(`sha256`,e,``,t,32));async function Rt(e){let t=Lt(e,`coder oidc client key`),n=Ve(`prime256v1`);n.setPrivateKey(t);let r=n.getPublicKey(),i={kty:`EC`,crv:`P-256`,x:Buffer.from(r.subarray(1,33)).toString(`base64url`),y:Buffer.from(r.subarray(33)).toString(`base64url`)},a=await crypto.subtle.importKey(`jwk`,{...i,d:Buffer.from(t).toString(`base64url`)},{name:`ECDSA`,namedCurve:`P-256`},!1,[`sign`]),o=await Et(i);return{key:a,kid:o,jwk:{...i,kid:o,alg:`ES256`,use:`sig`}}}async function zt(e){let t=[e.encryptionKey,e.previousEncryptionKey].filter(e=>!!e),n=await Promise.all(t.map(Rt));return{cookie:t.map(e=>Lt(e,`coder session cookie`)),client:n[0],jwks:{keys:n.map(e=>e.jwk)}}}const J=`${Fe}.session`,Y=`${Fe}.oidc`,X=`${Fe}.operator`,Bt=3800,Vt=2592e3,Ht=3600,Z=()=>Math.floor(Date.now()/1e3);function Q(e){let t=new Map;for(let n of(e.get(`cookie`)??``).split(/;\s*/)){let e=n.indexOf(`=`);e>0&&t.set(n.slice(0,e),n.slice(e+1))}return t}function Ut(e){let t=[];for(;e.has(`${J}.${t.length}`);)t.push(`${J}.${t.length}`);return t}function $(e){let t=Q(e);return t.get(J)??(Ut(t).map(e=>t.get(e)).join(``)||void 0)}function Wt(e){return Array.isArray(e)?e.flatMap(e=>typeof e?.id==`string`&&typeof e.role==`string`?[{id:e.id,slug:String(e.slug??e.id),name:String(e.name??e.slug??e.id),role:e.role}]:[]):[]}function Gt(e){let t=(e?.orgs.find(t=>t.id===e.org)??e?.orgs[0])?.slug;return t?`/dash/${encodeURIComponent(t)}/operator`:`/dash/operator`}function Kt(e,t,n){let r=e.get(`x-coder-organization`);if(r)return Ie(t,r);let i=t.organizations.find(e=>e.id===n)??t.organizations[0];return i?{...t,organizationId:i.id,role:i.role}:t}async function qt(e,t){let n=t.auth.wular.url,r=t.publicUrl,i=new URL(r).origin,a=r.startsWith(`https:`),o=await zt(t),s=t=>t instanceof Le?t.db:e,c=`${r}${ze}`,l=(e,t,n)=>`${e}=${t}; Path=/; HttpOnly; SameSite=Lax; Max-Age=${n}${a?`; Secure`:``}`,u=(e,t)=>new wt(e).setProtectedHeader({alg:`dir`,enc:`A256GCM`}).setIssuedAt().setExpirationTime(`${t}s`).encrypt(o.cookie[0]);async function d(e){if(e)for(let t of o.cookie)try{return(await St(e,t)).payload}catch{}}async function f(e,t){let n=await u(t,Vt),r=Ut(Q(e));if(n.length<=Bt)return[l(J,n,Vt),...r.map(e=>l(e,``,0))];let i=n.match(RegExp(`.{1,${Bt}}`,`g`));return[l(J,``,0),...i.map((e,t)=>l(`${J}.${t}`,e,Vt)),...r.slice(i.length).map(e=>l(e,``,0))]}let p=e=>[J,...Ut(Q(e))].map(e=>l(e,``,0)),m,h=()=>m??=A(new URL(n),`${r}${Be}`,void 0,pe(o.client),new URL(n).protocol===`http:`?{execute:[ye]}:void 0).catch(e=>{throw m=void 0,e}),g,v=async()=>g??=It(new URL((await h()).serverMetadata().jwks_uri));function y(e,t){let n=e.claims();if(!n)throw Error(`Wular Auth returned no ID token`);let r=Wt(n.organizations),i=e=>r.find(t=>t.id===e)?.id;return{sub:n.sub,name:typeof n.name==`string`?n.name:``,email:typeof n.email==`string`?n.email:``,orgs:r,org:i(t?.org)??i(n.org)??r[0]?.id,exp_at:Z()+(e.expires_in??600),at:Z(),rt:e.refresh_token??t?.rt,idt:e.id_token??t?.idt}}let b=async t=>{try{await Promise.all(t.map(({id:t,slug:n,name:r})=>new Le(e,t).put(`delivery`,`workspace`,{slug:n,name:r})))}catch(e){console.error(`coder server: saving organizations failed`,e)}},x=new Map;function S(e){let t=e.rt;if(!t)return Promise.resolve(void 0);let n=x.get(t);return n||(n=h().then(e=>fe(e,t)).then(t=>y(t,e)).then(t=>(Ue(t.orgs,e.orgs)||b(t.orgs),t)).catch(e=>(x.delete(t),e instanceof Ee&&e.error===`invalid_grant`?!1:void 0)),x.set(t,n),setTimeout(()=>x.delete(t),6e4).unref?.()),n.then(t=>t&&t.orgs.some(t=>t.id===e.org)?{...t,org:e.org}:t)}async function C(e,t,r){let a=(await v().then(t=>xt(e,t,{issuer:n,audience:i,typ:`at+jwt`})).catch(e=>{(!(e instanceof _)||e instanceof k||e.code===`ERR_JOSE_GENERIC`)&&console.error(`coder server: bearer verification unavailable`,e)}))?.payload;if(!a?.sub)return;let o={user:{id:a.sub,name:``,email:``},organizations:Wt(a.organizations)};return r&&Z()-(a.iat??0)>60?{...o,stale:!0}:Kt(t,o,typeof a.org==`string`?a.org:void 0)}async function w(e){let t=await h().catch(()=>void 0);if(!t)return Response.redirect(`${r}/login?error=unavailable`,302);let n=e.searchParams.get(`operator`)===`1`,a=e.searchParams.get(`prompt`)===`login`,o={verifier:ne(),state:ge(),nonce:M(),return:n?`/dash`:Pe(e.searchParams.get(`return`),i),...n?{operator:n}:{}},s=O(t,{redirect_uri:c,...n?{scope:`openid`,prompt:`login`}:{scope:Re},...a?{prompt:`login`}:{},code_challenge:await xe(o.verifier),code_challenge_method:`S256`,state:o.state,nonce:o.nonce});return new Response(null,{status:302,headers:{location:s.href,"set-cookie":l(Y,await u(o,600),600)}})}async function T(e,t){let n=e=>{let t=new Headers({location:`/login?error=${encodeURIComponent(e)}`});return t.append(`set-cookie`,l(Y,``,0)),new Response(null,{status:302,headers:t})},r=await d(Q(e.headers).get(Y));if(!r)return n(`expired`);let i=t.searchParams.get(`error`);if(i)return n(i);let a,o;try{let e=await se(await h(),new URL(`${c}${t.search}`),{pkceCodeVerifier:r.verifier,expectedState:r.state,expectedNonce:r.nonce,idTokenExpected:!0});a=y(e),o=e.claims()?.auth_time}catch{return n(`sign_in_failed`)}if(r.operator)return D(e,a.sub,o);await b(a.orgs);let s=new Headers({location:r.return});s.append(`set-cookie`,l(Y,``,0));for(let t of await f(e.headers,a))s.append(`set-cookie`,t);return new Response(null,{status:302,headers:s})}let E=e=>u(e,e.at+Ht-e.seen).then(t=>l(X,t,e.at+Ht-e.seen));async function D(e,n,r){let a=await d($(e.headers)),o=Z(),s=typeof r==`number`&&o-r<=60,c=s&&a?.sub===n&&t.operators?.includes(n),u=new Headers({location:c?Gt(a):`${Gt(a)}?error=${s?`denied`:`stale`}`});return u.append(`set-cookie`,l(Y,``,0)),c&&u.append(`set-cookie`,await E({sub:n,aud:i,at:o,seen:o})),new Response(null,{status:302,headers:u})}async function ee(e){if(!Ne(e,r))return je();let t=await d($(e.headers)),n=await h().catch(()=>void 0),i=`${r}/?signed_out=1`,a=n?.serverMetadata().end_session_endpoint&&t?.idt?he(n,{id_token_hint:t.idt,post_logout_redirect_uri:i}).href:i,o=Response.json({url:a});for(let t of p(e.headers))o.headers.append(`set-cookie`,t);return o.headers.append(`set-cookie`,l(X,``,0)),o}return{issuer:n,jwks:o.jwks,handler(e){let t=new URL(e.url);return t.pathname===`/api/auth/sign-in`&&e.method===`GET`?w(t):t.pathname===`/api/auth/callback`&&e.method===`GET`?T(e,t):t.pathname===`/api/auth/sign-out`&&e.method===`POST`?ee(e):Promise.resolve(Me())},async session(e,t=!1,n=[]){let r=e.get(`authorization`);if(r?.startsWith(`Bearer `))return C(r.slice(7),e,t);let i=await d($(e));if(i){if(i.exp_at<=Z()||t&&Z()-i.at>60){let t=await S(i);if(t===!1&&n.push(...p(e)),!t)return;i=t,n.push(...await f(e,i))}return Kt(e,{user:{id:i.sub,name:i.name,email:i.email},organizations:i.orgs},i.org)}},async operator(e,t=[]){let n=Q(e).get(X),r=await d(n),a=Z();if(!r||r.aud!==i||a-r.seen>900||a>=r.at+Ht){n&&t.push(l(X,``,0));return}return t.push(await E({...r,seen:a})),r.sub},async setOrganization(e,t,n=[]){let r=await d($(e));r&&r.exp_at<=Z()&&(r=await S(r)||void 0);let i=r?.orgs.find(e=>e.slug===t);if(!(!r||!i))return r.org!==i.id&&n.push(...await f(e,{...r,org:i.id})),i},async organization(t){let n=await new Le(e,t).get(`delivery`,`workspace`);return n&&`slug`in n?n:void 0},async link(e,t,n,r={},i){let a={name:e.name,email:e.email,...r.organizations?{organizations:r.organizations}:{},...r.token?{token:r.token}:{}},[o]=await s(i).insert(R).values({platform:t,platformUserId:n,userId:e.id,...a}).onConflictDoUpdate({target:[R.platform,R.platformUserId],set:a,setWhere:I(R.userId,e.id)}).returning({userId:R.userId});return o?.userId===e.id?`linked`:`taken`},async linkedAccounts(e,t){return(await s(t).select().from(R).where(I(R.userId,e))).map(e=>({platform:e.platform,platformUserId:e.platformUserId,name:e.name,email:e.email,...e.organizations?{organizations:e.organizations}:{},...e.token?{token:e.token}:{}}))},async unlink(e,t,n,r){await s(r).delete(R).where(L(I(R.userId,e),I(R.platform,t),I(R.platformUserId,n)))},async refreshLinkedToken(e,t,n,r,i,a){let[o]=await s(a).update(R).set({token:i}).where(L(I(R.userId,e),I(R.platform,t),I(R.platformUserId,n),I(R.token,r))).returning({userId:R.userId});return!!o},async linkedUser(t,n){let[r]=await e.select({id:R.userId,name:R.name,email:R.email,organizations:R.organizations,token:R.token}).from(R).where(L(I(R.platform,t),I(R.platformUserId,n)));return r&&{id:r.id,name:r.name,email:r.email,...r.organizations?{organizations:r.organizations}:{},...r.token?{token:r.token}:{}}}}}export{qt as createAuth};
|
|
1
|
+
import{$ as e,A as t,B as n,C as r,D as i,E as a,F as o,G as s,H as c,I as l,J as u,K as d,L as f,M as p,N as m,O as h,P as g,Q as _,R as v,S as y,T as b,U as x,V as S,W as C,X as w,Y as T,Z as E,_ as D,a as O,at as k,b as ee,c as A,ct as j,d as M,dt as te,et as N,f as ne,ft as re,g as ie,gt as ae,ht as oe,i as se,it as ce,j as le,k as ue,lt as de,m as fe,mt as P,n as pe,nt as me,o as he,ot as F,p as ge,pt as _e,q as ve,r as ye,rt as be,s as xe,st as Se,tt as Ce,ut as we,v as Te,vt as Ee,w as De,x as Oe,y as ke,z as Ae}from"./build-CmtlB7pX.js";import{i as je,l as Me}from"./http-Cg8PSe-c.js";import{Tn as Ne,V as Pe,_r as Fe,sr as Ie,vr as Le}from"./apps-Bnk7F3A2.js";import{m as I,p as L,platformLink as R}from"./schema.js";import{a as Re,i as ze,o as Be}from"./serve-vKNqVaVy.js";import{createECDH as Ve,hkdfSync as He}from"node:crypto";import{isDeepStrictEqual as Ue}from"node:util";function We(e,t,n){if(!S(e,t,n))throw new N(`JWE Protected, JWE Shared Unprotected and JWE Per-Recipient Header Parameter names must be disjoint`)}function Ge(e,t,n=!1){if(!e[1]&&!e[2]&&!e[3])throw new N(`either setProtectedHeader, setUnprotectedHeader, or sharedUnprotectedHeader must be called before #encrypt()`);t!==void 0&&(e[8]=t?.crit);let[,i,a,c,l,d,f,p,m]=e;if(l!==void 0&&v(l,`JWE Additional Authenticated Data`),d!==void 0&&v(d,`JWE Content Encryption Key`),f!==void 0&&v(f,`JWE Initialization Vector`),!n&&i!==void 0&&(i=s(N,i)[0],e[1]=i),a!==void 0&&(a=s(N,a)[0],e[2]=a),!n&&c!==void 0&&(c=s(N,c)[0],e[3]=c),p!==void 0&&!x(p))throw TypeError(`JWE Key Management Parameters must be an object`);We(i,a,c);let h={...i,...a,...c};T(N,i),u(N,o,m,i,h),ke(h,i);let{alg:g,enc:_}=h;if(typeof g!=`string`||!g)throw new N(`JWE "alg" (Algorithm) Header Parameter missing or invalid`);let y=Oe[g];if(y?.mode===`integrated-encryption`){if(_!==void 0)throw new N(`JWE "enc" (Encryption Algorithm) Header Parameter must not be present for integrated encryption`);if(d!==void 0)throw TypeError(`setContentEncryptionKey cannot be called with JWE "alg" (Algorithm) Header ${g}`);if(f!==void 0)throw TypeError(`setInitializationVector cannot be called with JWE "alg" (Algorithm) Header ${g}`);return[h,void 0,y]}if(typeof _!=`string`||!_)throw new N(`JWE "enc" (Encryption Algorithm) Header Parameter missing or invalid`);return[h,r(_),y]}async function Ke(e,t,n){let[r,i,a]=t,[o,s,c,l,u,d,f,m,,h]=e,g=s,_=c,v=a??y(r.alg),x,S,C;v.mode===`integrated-encryption`?C=await p(v,n,`encrypt`):[C,x,S]=await ee(v,i,n,r,d,m),S&&(h?_=_?{..._,...S}:S:g=g?{...g,...S}:S,We(g,_,l));let T=g?w(JSON.stringify(g)):``,E=u?.byteLength?w(u):void 0,D=P(E?`${T}.${E}`:T),O=o;r.zip===`DEF`&&(O=await Te(O).catch(e=>{throw new N(`Failed to compress plaintext`,{cause:e})}));let k,A,j;v.mode===`integrated-encryption`?[x,k]=await v.encrypt(C,O,D,g,r,m):{ciphertext:k,tag:A,iv:j}=await b(i,O,C,f,D);let M={ciphertext:w(k)};return j&&(M.iv=w(j)),A&&(M.tag=w(A)),x?.byteLength&&(M.encrypted_key=w(x)),E&&(M.aad=E),g&&(M.protected=T),l&&(M.unprotected=l),_&&(M.header=_),M}async function qe(e,t,n){return Ke(e,Ge(e,n),t)}function Je(e){return[e.protected,e.encrypted_key,e.iv,e.ciphertext,e.tag].join(`.`)}const z=[[`verify`],[`sign`]];function Ye(e){let t={name:`HMAC`,hash:`SHA-${e}`};return{kty:[`oct`],secret:!0,subtle:t,signing:t,usages:z}}function B(e,t){let n={name:t?`RSA-PSS`:`RSASSA-PKCS1-v1_5`,hash:`SHA-${e}`};return{kty:[`RSA`],subtle:n,signing:t?{...n,saltLength:t}:n,usages:z,minRsaBits:2048}}function Xe(e,t){return{kty:[`EC`],crv:e,subtle:{name:`ECDSA`,namedCurve:e},signing:{name:`ECDSA`,hash:`SHA-${t}`},usages:z}}function Ze(){let e={name:`Ed25519`};return{kty:[`OKP`],crv:`Ed25519`,subtle:e,signing:e,usages:z}}function Qe(e){let t={name:`ML-DSA-${e}`};return{kty:[`AKP`],subtle:t,signing:t,usages:z}}const $e=De({HS256:Ye(256),HS384:Ye(384),HS512:Ye(512),RS256:B(256),RS384:B(384),RS512:B(512),PS256:B(256,32),PS384:B(384,48),PS512:B(512,64),ES256:Xe(`P-256`,256),ES384:Xe(`P-384`,384),ES512:Xe(`P-521`,512),EdDSA:Ze(),Ed25519:Ze(),"ML-DSA-44":Qe(44),"ML-DSA-65":Qe(65),"ML-DSA-87":Qe(87)});function et(t){let n=typeof t==`string`?$e[t]:void 0;if(!n)throw new e(`alg ${t} is not supported either by JOSE or your javascript runtime`);return n}function tt(e){return[e&&d(`algorithms`,e.algorithms),e?.crit]}function nt(e){return e===void 0?{}:C(e,F,`JWS Protected Header is invalid`)}function rt(e){try{return P(e)}catch{throw new F(`JWS Compact Serialization payload must use only ASCII characters`)}}async function it(e,t,r,i,o){let{protected:s,header:c,payload:d}=e,f=o??nt(s);if(!S(f,c))throw new F(`JWS Protected and JWS Unprotected Header Parameter names must be disjoint`);let h={...f,...c},g=ve(f,u(F,l,t[1],f,h)),{alg:_}=h;if(typeof _!=`string`||!_)throw new F(`JWS "alg" (Algorithm) Header Parameter missing or invalid`);if(t[0]&&!t[0].has(_))throw new E(`"alg" (Algorithm) Header Parameter value not allowed`);if(g){if(typeof d!=`string`)throw new F(`JWS Payload must be a string`)}else if(typeof d!=`string`&&!(d instanceof Uint8Array))throw new F(`JWS Payload must be a string or an Uint8Array instance`);let v=g||typeof d!=`string`?d:i(d),y=!1;typeof r==`function`&&(r=await r(f,e),y=!0);let b=et(_),x=te(s===void 0?new Uint8Array:P(s),P(`.`),typeof v==`string`?t[2]??=n(v,`payload`,F):v),C=Ae(e.signature,`signature`,F),w=await p(b,r,`verify`),T=await m(w,b.subtle,`verify`);b.minRsaBits&&a(b.alg,T);let D=!1;try{D=await crypto.subtle.verify(b.signing,T,C,x)}catch{}if(!D)throw new Se;let O={payload:typeof v==`string`?Ae(v,`payload`,F):v};return s!==void 0&&(O.protectedHeader=f),c!==void 0&&(O.unprotectedHeader=c),y?[{...O,key:w},g]:[O,g]}async function at(e,t,n){if(e instanceof Uint8Array&&(e=re.decode(e)),typeof e!=`string`)throw new F(`Compact JWS must be a string or Uint8Array`);let{0:r,1:i,2:a,length:o}=e.split(`.`);if(o!==3)throw new F(`Invalid Compact JWS`);return it({payload:i,protected:r,signature:a},t,n,rt)}const V=e=>Math.floor(e.getTime()/1e3),ot={s:1,m:60,h:3600,d:86400,w:604800,y:31557600},st=/^(\+|\-)? ?(\d+|\d+\.\d+) ?(seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)(?: (ago|from now))?$/i,H=`check_failed`;function ct(){throw TypeError(`Invalid time period format`)}function U(e){typeof e!=`string`&&ct();let t=st.exec(e);(!t||t[4]&&t[1])&&ct();let n=parseFloat(t[2]),r=Math.round(n*ot[t[3][0].toLowerCase()]);return Number.isFinite(r)||ct(),t[1]===`-`||t[4]===`ago`?-r:r}function W(e,t){if(!Number.isFinite(t))throw TypeError(`Invalid ${e} input`);return t}function lt(e,t){if(typeof t!=`string`)throw TypeError(`"${e}" claim must be a string`)}function ut(e){if(typeof e!=`string`&&(!Array.isArray(e)||Array.from(e).some(e=>typeof e!=`string`)))throw TypeError(`"aud" claim must be a string or an array of strings`)}function dt(e,t){return typeof e==`number`?W(t,e):e instanceof Date?W(t,V(e)):V(new Date)+U(e)}const ft=e=>{let t=e.toLowerCase();return e.includes(`/`)?t:`application/${t}`},pt=(e,t)=>typeof e==`string`?t.includes(e):Array.isArray(e)?t.some(t=>e.includes(t)):!1;function mt(e,t,n=!1){let r=e[t];if(!(r===void 0&&!n)){if(typeof r!=`number`)throw new j(`"${t}" claim must be a number`,e,t,`invalid`);return r}}function ht(e,t){throw new j(`unexpected "${t}" claim value`,e,t,H)}function gt(e,t,n={}){let r;try{r=JSON.parse(ae.decode(t))}catch{}if(!x(r))throw new we(`JWT Claims Set must be a top-level JSON object`);let{typ:i}=n;if(i!==void 0&&(typeof e.typ!=`string`||ft(e.typ)!==ft(i)))throw new j(`unexpected "typ" JWT header value`,r,`typ`,H);let{requiredClaims:a=[],issuer:o,subject:s,audience:c,maxTokenAge:l}=n,u=[...a];l!==void 0&&u.push(`iat`),c!==void 0&&u.push(`aud`),s!==void 0&&u.push(`sub`),o!==void 0&&u.push(`iss`);for(let e of new Set(u.reverse()))if(!Object.hasOwn(r,e))throw new j(`missing required "${e}" claim`,r,e,`missing`);o!==void 0&&!(Array.isArray(o)?o:[o]).includes(r.iss)&&ht(r,`iss`),s!==void 0&&r.sub!==s&&ht(r,`sub`),c!==void 0&&!pt(r.aud,typeof c==`string`?[c]:c)&&ht(r,`aud`);let{clockTolerance:d}=n,f=0;if(typeof d==`string`)f=U(d);else if(d!==void 0){if(typeof d!=`number`)throw TypeError(`Invalid clockTolerance option type`);f=d}W(`clockTolerance option`,f);let{currentDate:p}=n,m=W(`currentDate option`,V(p===void 0?new Date:p)),h=mt(r,`iat`,l!==void 0),g=mt(r,`nbf`);if(g!==void 0&&g>m+f)throw new j(`"nbf" claim timestamp check failed`,r,`nbf`,H);let _=mt(r,`exp`);if(_!==void 0&&_<=m-f)throw new de(`"exp" claim timestamp check failed`,r,`exp`,H);if(l!==void 0){let e=m-h,t=W(`maxTokenAge option`,typeof l==`number`?l:U(l));if(e-f>t)throw new de(`"iat" claim timestamp check failed (too far in the past)`,r,`iat`,H);if(e<-f)throw new j(`"iat" claim timestamp check failed (it should be in the past)`,r,`iat`,H)}return r}let _t;function G(e){return _t.get(e)}function vt(e){let t=G(e);for(let e of[`iat`,`nbf`,`exp`]){let n=t[e];if(typeof n==`number`&&!Number.isFinite(n))throw TypeError(`"${e}" claim must be a finite number`)}return oe.encode(JSON.stringify(t))}function yt(e,t){return G(e)[t]}var bt=class{constructor(e={}){if(!x(e))throw TypeError(`JWT Claims Set MUST be an object`);(_t||=new WeakMap).set(this,structuredClone(e))}setIssuer(e){return lt(`iss`,e),G(this).iss=e,this}setSubject(e){return lt(`sub`,e),G(this).sub=e,this}setAudience(e){return ut(e),G(this).aud=e,this}setJti(e){return lt(`jti`,e),G(this).jti=e,this}setNotBefore(e){return G(this).nbf=dt(e,`setNotBefore`),this}setExpirationTime(e){return G(this).exp=dt(e,`setExpirationTime`),this}setIssuedAt(e){let t=G(this);return t.iat=e===void 0?V(new Date):typeof e==`string`?W(`setIssuedAt`,V(new Date)+U(e)):dt(e,`setIssuedAt`),this}};async function xt(e,t,n){let[r,i]=await at(e,tt(n),t);if(!i)throw new we(`JWTs MUST NOT use unencoded payload`);let a=gt(r.protectedHeader,r.payload,n);return{...r,payload:a}}async function St(e,t,n){let{plaintext:r,...i}=await ie(e,D(n),t),{protectedHeader:a}=i,o=gt(a,r,n);for(let e of[`iss`,`sub`,`aud`])if(a[e]!==void 0&&(e===`aud`?JSON.stringify(a.aud)!==JSON.stringify(o.aud):a[e]!==o[e]))throw new j(`replicated "${e}" claim header parameter mismatch`,o,e,`mismatch`);return{payload:o,...i}}const Ct=bt;var wt=class extends Ct{#e=[void 0];#t;#n;#r;setProtectedHeader(e){return f(this.#e[1],`setProtectedHeader`),this.#e[1]=e,this}setKeyManagementParameters(e){return f(this.#e[7],`setKeyManagementParameters`),this.#e[7]=e,this}setContentEncryptionKey(e){return f(this.#e[5],`setContentEncryptionKey`),this.#e[5]=e,this}setInitializationVector(e){return f(this.#e[6],`setInitializationVector`),this.#e[6]=e,this}replicateIssuerAsHeader(){return this.#t=!0,this}replicateSubjectAsHeader(){return this.#n=!0,this}replicateAudienceAsHeader(){return this.#r=!0,this}async encrypt(e,t){let n=vt(this);this.#e[1]&&(this.#t||this.#n||this.#r)&&(this.#e[1]={...this.#e[1],iss:this.#t?yt(this,`iss`):void 0,sub:this.#n?yt(this,`sub`):void 0,aud:this.#r?yt(this,`aud`):void 0});let r=[...this.#e];return r[0]=n,Je(await qe(r,e,t))}};async function Tt(e){if(t(e))if(e.type===`secret`)e=e.export();else return e.export({format:`jwk`});if(e instanceof Uint8Array)return{kty:`oct`,k:w(e)};if(!h(e))throw TypeError(i(e,`CryptoKey`,`KeyObject`,`Uint8Array`));if(!e.extractable)throw TypeError(`non-extractable CryptoKey cannot be exported as a JWK`);let n=await crypto.subtle.exportKey(`jwk`,e);delete n.ext,delete n.key_ops,delete n.use,n.kty!==`AKP`&&delete n.alg;for(let e of Object.keys(n))n[e]===void 0&&delete n[e];return n}const K=(e,t)=>{if(typeof e!=`string`||!e)throw new Ce(`${t} missing or invalid`)};async function Et(t,n){let r;if(x(t)){if(r=g(t),typeof r.kty!=`string`)throw TypeError(i(t,`CryptoKey`,`KeyObject`,`JSON Web Key`))}else if(ue(t))r=g(await Tt(t));else throw TypeError(i(t,`CryptoKey`,`KeyObject`,`JSON Web Key`));if(n??=`sha256`,n!==`sha256`&&n!==`sha384`&&n!==`sha512`)throw TypeError(`digestAlgorithm must one of "sha256", "sha384", or "sha512"`);let a;switch(r.kty){case`AKP`:K(r.alg,`"alg" (Algorithm) Parameter`),K(r.pub,`"pub" (Public key) Parameter`),a={alg:r.alg,kty:r.kty,pub:r.pub};break;case`EC`:K(r.crv,`"crv" (Curve) Parameter`),K(r.x,`"x" (X Coordinate) Parameter`),K(r.y,`"y" (Y Coordinate) Parameter`),a={crv:r.crv,kty:r.kty,x:r.x,y:r.y};break;case`OKP`:K(r.crv,`"crv" (Subtype of Key Pair) Parameter`),K(r.x,`"x" (Public Key) Parameter`),a={crv:r.crv,kty:r.kty,x:r.x};break;case`RSA`:K(r.e,`"e" (Exponent) Parameter`),K(r.n,`"n" (Modulus) Parameter`),a={e:r.e,kty:r.kty,n:r.n};break;case`oct`:if(typeof r.k!=`string`)throw new Ce(`"k" (Key Value) Parameter missing or invalid`);a={k:r.k,kty:r.kty};break;default:throw new e(`"kty" (Key Type) Parameter missing or unsupported`)}let o=P(JSON.stringify(a));return w(await _e(n,o))}function Dt(e,t,n,r){let{kty:i,key_ops:a,ext:o,kid:s,alg:c,use:l,crv:u}=e;return(o===void 0||typeof o==`boolean`)&&(a===void 0||Array.isArray(a)&&a.every((e,t)=>typeof e==`string`&&a.indexOf(e)===t)&&a.includes(`verify`))&&t.kty.includes(i)&&(r===void 0||typeof r==`string`&&r===s)&&(c===void 0?i!==`AKP`:n===c)&&(l===void 0||l===`sig`)&&(!t.crv||u===t.crv)}async function Ot(e,t,n){let r=e.get(t)||e.set(t,{}).get(t),{alg:i}=n;if(r[i]===void 0){let e=le(n,t,!0).then(e=>{if(e.type!==`public`)throw new me(`JSON Web Key Set members must be public keys`);return r[i]=e,e}).catch(t=>{throw r[i]===e&&delete r[i],t});r[i]=e}return r[i]}function kt(t){let n;try{n=structuredClone(t)}catch{}if(!c(n))throw new me(`JSON Web Key Set malformed`);let r=n.keys.map(e=>{let t=g(e);return Array.isArray(t.key_ops)&&(t.key_ops=[...t.key_ops]),t}),i=new WeakMap;return Object.defineProperty(async(t,a)=>{let{alg:o,kid:s}={...t,...a?.header},c=typeof o==`string`?$e[o]:void 0;if(!c||c.secret)throw new e(`Unsupported "alg" value for a JSON Web Key Set`);let l=n.keys.filter((e,t)=>Dt(r[t],c,o,s)),{0:u,length:d}=l;if(!d)throw new ce;if(d!==1){let e=new be;throw e[Symbol.asyncIterator]=async function*(){for(let e of l)try{yield await Ot(i,e,c)}catch{}},e}return Ot(i,u,c)},"jwks",{value:()=>structuredClone(n)})}function At(){return typeof WebSocketPair<`u`||typeof navigator<`u`&&navigator.userAgent===`Cloudflare-Workers`||typeof EdgeRuntime<`u`&&EdgeRuntime===`vercel`}let jt;(typeof navigator>`u`||!navigator.userAgent?.startsWith?.(`Mozilla/5.0 `))&&(jt=`jose/v6.2.12`);const Mt=Symbol();async function Nt(e,t,n,r=fetch){let i=await r(e,{method:`GET`,signal:n,redirect:`manual`,headers:t}).catch(e=>{throw e.name===`TimeoutError`?new k:e});if(i.status!==200)throw new _(`Expected 200 OK from the JSON Web Key Set HTTP response`);try{return await i.json()}catch{throw new _(`Failed to parse the JSON Web Key Set HTTP response as JSON`)}}const Pt=Symbol();function q(e,t){return Number.isFinite(e)&&Date.now()<e+t}function Ft(e,t,n){if(Number.isNaN(e))throw TypeError(`"${n}" option must not be NaN`);return typeof e==`number`?e:t}function It(e,t){if(!(e instanceof URL))throw TypeError(`url must be an instance of URL`);let n=new URL(e.href).href,r=t??{},i=r.timeoutDuration;if(typeof i==`number`&&(!Number.isInteger(i)||i<0))throw TypeError(`"timeoutDuration" option must be a non-negative integer`);let a=typeof i==`number`?i:5e3,o=Ft(r.cooldownDuration,3e4,`cooldownDuration`),s=Ft(r.cacheMaxAge,6e5,`cacheMaxAge`),l=new Headers(r.headers);jt&&!l.has(`User-Agent`)&&l.set(`User-Agent`,jt),l.has(`accept`)||l.set(`accept`,`application/json, application/jwk-set+json`);let u=r[Mt],d=r[Pt],f,p,m=0,h=0,g;if(d&&typeof d==`object`){let{uat:e,jwks:t}=d;q(e,s)&&c(t)&&(f=e,g=kt(t))}let _=async()=>{if(p&&At()&&(p=void 0),!p){let e=++m,t=p=Nt(n,l,AbortSignal.timeout(a),u).then(t=>{let n=kt(t);if(e<=h)return;g=n;let r=Date.now();d&&(d.uat=r,d.jwks=t),f=r,h=e}).finally(()=>{p===t&&(p=void 0)})}await p};return Object.defineProperties(async(e,t)=>{(!g||!q(f,s))&&await _();try{return await g(e,t)}catch(n){if(n instanceof ce&&!q(f,o))return await _(),g(e,t);throw n}},{coolingDown:{get:()=>q(f,o),enumerable:!0},fresh:{get:()=>q(f,s),enumerable:!0},reload:{value:_,enumerable:!0},reloading:{get:()=>!!p,enumerable:!0},jwks:{value:()=>g?.jwks(),enumerable:!0}})}const Lt=(e,t)=>new Uint8Array(He(`sha256`,e,``,t,32));async function Rt(e){let t=Lt(e,`coder oidc client key`),n=Ve(`prime256v1`);n.setPrivateKey(t);let r=n.getPublicKey(),i={kty:`EC`,crv:`P-256`,x:Buffer.from(r.subarray(1,33)).toString(`base64url`),y:Buffer.from(r.subarray(33)).toString(`base64url`)},a=await crypto.subtle.importKey(`jwk`,{...i,d:Buffer.from(t).toString(`base64url`)},{name:`ECDSA`,namedCurve:`P-256`},!1,[`sign`]),o=await Et(i);return{key:a,kid:o,jwk:{...i,kid:o,alg:`ES256`,use:`sig`}}}async function zt(e){let t=[e.encryptionKey,e.previousEncryptionKey].filter(e=>!!e),n=await Promise.all(t.map(Rt));return{cookie:t.map(e=>Lt(e,`coder session cookie`)),client:n[0],jwks:{keys:n.map(e=>e.jwk)}}}const J=`${Fe}.session`,Y=`${Fe}.oidc`,X=`${Fe}.operator`,Bt=3800,Vt=2592e3,Ht=3600,Z=()=>Math.floor(Date.now()/1e3);function Q(e){let t=new Map;for(let n of(e.get(`cookie`)??``).split(/;\s*/)){let e=n.indexOf(`=`);e>0&&t.set(n.slice(0,e),n.slice(e+1))}return t}function Ut(e){let t=[];for(;e.has(`${J}.${t.length}`);)t.push(`${J}.${t.length}`);return t}function $(e){let t=Q(e);return t.get(J)??(Ut(t).map(e=>t.get(e)).join(``)||void 0)}function Wt(e){return Array.isArray(e)?e.flatMap(e=>typeof e?.id==`string`&&typeof e.role==`string`?[{id:e.id,slug:String(e.slug??e.id),name:String(e.name??e.slug??e.id),role:e.role}]:[]):[]}function Gt(e){let t=(e?.orgs.find(t=>t.id===e.org)??e?.orgs[0])?.slug;return t?`/dash/${encodeURIComponent(t)}/operator`:`/dash/operator`}function Kt(e,t,n){let r=e.get(`x-coder-organization`);if(r)return Ie(t,r);let i=t.organizations.find(e=>e.id===n)??t.organizations[0];return i?{...t,organizationId:i.id,role:i.role}:t}async function qt(e,t){let n=t.auth.wular.url,r=t.publicUrl,i=new URL(r).origin,a=r.startsWith(`https:`),o=await zt(t),s=t=>t instanceof Ne?t.db:e,c=`${r}${ze}`,l=(e,t,n)=>`${e}=${t}; Path=/; HttpOnly; SameSite=Lax; Max-Age=${n}${a?`; Secure`:``}`,u=(e,t)=>new wt(e).setProtectedHeader({alg:`dir`,enc:`A256GCM`}).setIssuedAt().setExpirationTime(`${t}s`).encrypt(o.cookie[0]);async function d(e){if(e)for(let t of o.cookie)try{return(await St(e,t)).payload}catch{}}async function f(e,t){let n=await u(t,Vt),r=Ut(Q(e));if(n.length<=Bt)return[l(J,n,Vt),...r.map(e=>l(e,``,0))];let i=n.match(RegExp(`.{1,${Bt}}`,`g`));return[l(J,``,0),...i.map((e,t)=>l(`${J}.${t}`,e,Vt)),...r.slice(i.length).map(e=>l(e,``,0))]}let p=e=>[J,...Ut(Q(e))].map(e=>l(e,``,0)),m,h=()=>m??=A(new URL(n),`${r}${Be}`,void 0,pe(o.client),new URL(n).protocol===`http:`?{execute:[ye]}:void 0).catch(e=>{throw m=void 0,e}),g,v=async()=>g??=It(new URL((await h()).serverMetadata().jwks_uri));function y(e,t){let n=e.claims();if(!n)throw Error(`Wular Auth returned no ID token`);let r=Wt(n.organizations),i=e=>r.find(t=>t.id===e)?.id;return{sub:n.sub,name:typeof n.name==`string`?n.name:``,email:typeof n.email==`string`?n.email:``,orgs:r,org:i(t?.org)??i(n.org)??r[0]?.id,exp_at:Z()+(e.expires_in??600),at:Z(),rt:e.refresh_token??t?.rt,idt:e.id_token??t?.idt}}let b=async t=>{try{await Promise.all(t.map(({id:t,slug:n,name:r})=>new Ne(e,t).put(`delivery`,`workspace`,{slug:n,name:r})))}catch(e){console.error(`coder server: saving organizations failed`,e)}},x=new Map;function S(e){let t=e.rt;if(!t)return Promise.resolve(void 0);let n=x.get(t);return n||(n=h().then(e=>fe(e,t)).then(t=>y(t,e)).then(t=>(Ue(t.orgs,e.orgs)||b(t.orgs),t)).catch(e=>(x.delete(t),e instanceof Ee&&e.error===`invalid_grant`?!1:void 0)),x.set(t,n),setTimeout(()=>x.delete(t),6e4).unref?.()),n.then(t=>t&&t.orgs.some(t=>t.id===e.org)?{...t,org:e.org}:t)}async function C(e,t,r){let a=(await v().then(t=>xt(e,t,{issuer:n,audience:i,typ:`at+jwt`})).catch(e=>{(!(e instanceof _)||e instanceof k||e.code===`ERR_JOSE_GENERIC`)&&console.error(`coder server: bearer verification unavailable`,e)}))?.payload;if(!a?.sub)return;let o={user:{id:a.sub,name:``,email:``},organizations:Wt(a.organizations)};return r&&Z()-(a.iat??0)>60?{...o,stale:!0}:Kt(t,o,typeof a.org==`string`?a.org:void 0)}async function w(e){let t=await h().catch(()=>void 0);if(!t)return Response.redirect(`${r}/login?error=unavailable`,302);let n=e.searchParams.get(`operator`)===`1`,a=e.searchParams.get(`prompt`)===`login`,o={verifier:ne(),state:ge(),nonce:M(),return:n?`/dash`:Le(e.searchParams.get(`return`),i),...n?{operator:n}:{}},s=O(t,{redirect_uri:c,...n?{scope:`openid`,prompt:`login`}:{scope:Re},...a?{prompt:`login`}:{},code_challenge:await xe(o.verifier),code_challenge_method:`S256`,state:o.state,nonce:o.nonce});return new Response(null,{status:302,headers:{location:s.href,"set-cookie":l(Y,await u(o,600),600)}})}async function T(e,t){let n=e=>{let t=new Headers({location:`/login?error=${encodeURIComponent(e)}`});return t.append(`set-cookie`,l(Y,``,0)),new Response(null,{status:302,headers:t})},r=await d(Q(e.headers).get(Y));if(!r)return n(`expired`);let i=t.searchParams.get(`error`);if(i)return n(i);let a,o;try{let e=await se(await h(),new URL(`${c}${t.search}`),{pkceCodeVerifier:r.verifier,expectedState:r.state,expectedNonce:r.nonce,idTokenExpected:!0});a=y(e),o=e.claims()?.auth_time}catch{return n(`sign_in_failed`)}if(r.operator)return D(e,a.sub,o);await b(a.orgs);let s=new Headers({location:r.return});s.append(`set-cookie`,l(Y,``,0));for(let t of await f(e.headers,a))s.append(`set-cookie`,t);return new Response(null,{status:302,headers:s})}let E=e=>u(e,e.at+Ht-e.seen).then(t=>l(X,t,e.at+Ht-e.seen));async function D(e,n,r){let a=await d($(e.headers)),o=Z(),s=typeof r==`number`&&o-r<=60,c=s&&a?.sub===n&&t.operators?.includes(n);c||console.error(`coder server: operator sign-in refused: ${s?`not this session or not an operator`:`auth_time ${typeof r==`number`?`${o-r}s old`:`missing`}`}`);let u=new Headers({location:`${Gt(a)}?${c?`entered=1`:`error=${s?`denied`:`stale`}`}`});return u.append(`set-cookie`,l(Y,``,0)),c&&u.append(`set-cookie`,await E({sub:n,aud:i,at:o,seen:o})),new Response(null,{status:302,headers:u})}async function ee(e){if(!Pe(e,r))return je();let t=await d($(e.headers)),n=await h().catch(()=>void 0),i=`${r}/?signed_out=1`,a=n?.serverMetadata().end_session_endpoint&&t?.idt?he(n,{id_token_hint:t.idt,post_logout_redirect_uri:i}).href:i,o=Response.json({url:a});for(let t of p(e.headers))o.headers.append(`set-cookie`,t);return o.headers.append(`set-cookie`,l(X,``,0)),o}return{issuer:n,jwks:o.jwks,handler(e){let t=new URL(e.url);return t.pathname===`/api/auth/sign-in`&&e.method===`GET`?w(t):t.pathname===`/api/auth/callback`&&e.method===`GET`?T(e,t):t.pathname===`/api/auth/sign-out`&&e.method===`POST`?ee(e):Promise.resolve(Me())},async session(e,t=!1,n=[]){let r=e.get(`authorization`);if(r?.startsWith(`Bearer `))return C(r.slice(7),e,t);let i=await d($(e));if(i){if(i.exp_at<=Z()||t&&Z()-i.at>60){let t=await S(i);if(t===!1&&n.push(...p(e)),!t)return;i=t,n.push(...await f(e,i))}return Kt(e,{user:{id:i.sub,name:i.name,email:i.email},organizations:i.orgs},i.org)}},async operator(e,t=[]){let n=Q(e).get(X),r=await d(n),a=Z();if(!r||r.aud!==i||a-r.seen>900||a>=r.at+Ht){n&&t.push(l(X,``,0));return}return t.push(await E({...r,seen:a})),r.sub},async setOrganization(e,t,n=[]){let r=await d($(e));r&&r.exp_at<=Z()&&(r=await S(r)||void 0);let i=r?.orgs.find(e=>e.slug===t);if(!(!r||!i))return r.org!==i.id&&n.push(...await f(e,{...r,org:i.id})),i},async organization(t){let n=await new Ne(e,t).get(`delivery`,`workspace`);return n&&`slug`in n?n:void 0},async link(e,t,n,r={},i){let a={name:e.name,email:e.email,...r.organizations?{organizations:r.organizations}:{},...r.token?{token:r.token}:{}},[o]=await s(i).insert(R).values({platform:t,platformUserId:n,userId:e.id,...a}).onConflictDoUpdate({target:[R.platform,R.platformUserId],set:a,setWhere:I(R.userId,e.id)}).returning({userId:R.userId});return o?.userId===e.id?`linked`:`taken`},async linkedAccounts(e,t){return(await s(t).select().from(R).where(I(R.userId,e))).map(e=>({platform:e.platform,platformUserId:e.platformUserId,name:e.name,email:e.email,...e.organizations?{organizations:e.organizations}:{},...e.token?{token:e.token}:{}}))},async unlink(e,t,n,r){await s(r).delete(R).where(L(I(R.userId,e),I(R.platform,t),I(R.platformUserId,n)))},async refreshLinkedToken(e,t,n,r,i,a){let[o]=await s(a).update(R).set({token:i}).where(L(I(R.userId,e),I(R.platform,t),I(R.platformUserId,n),I(R.token,r))).returning({userId:R.userId});return!!o},async linkedUser(t,n){let[r]=await e.select({id:R.userId,name:R.name,email:R.email,organizations:R.organizations,token:R.token}).from(R).where(L(I(R.platform,t),I(R.platformUserId,n)));return r&&{id:r.id,name:r.name,email:r.email,...r.organizations?{organizations:r.organizations}:{},...r.token?{token:r.token}:{}}}}}export{qt as createAuth};
|
|
@@ -12,6 +12,6 @@ Always make sure you have the ability to perform a specific task rather than bli
|
|
|
12
12
|
|
|
13
13
|
# Platform notes
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
When asked for a review, use your `review` tool; for a pull request, pass its number.
|
|
16
16
|
|
|
17
17
|
Generally read the event and its context, then answer the question or make the requested change. If the task is gonna take longer, inform the user about your intent very early and concisely, and then perform the task and link the pull request or any resource you create or reference. Don't spam the user though, one or two messages should be enough for most requests.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{En as e}from"./apps-Bnk7F3A2.js";import{a as t}from"./client-C4QCT6cG.js";import{C as n,M as r,T as i,b as a,chatItem as o,chatState as s,h as c,m as l,p as u}from"./schema.js";import{randomUUID as d}from"node:crypto";var f=class{db;now;constructor(e,t=Date.now){this.db=e,this.now=t}at(e){return e?new Date(this.now()+e):null}stamp(e){return e===void 0?null:new Date(this.now()+e).toISOString()}live(){return i(a(s.expiresAt),c(s.expiresAt,new Date(this.now())))}expired(){return n(s.expiresAt,new Date(this.now()))}async read(e){let[n]=await t(this.db,()=>this.db.select({value:r`${s.value}`}).from(s).where(u(l(s.key,e),this.live())));return n?.value}async claim(e,t,n){return(await this.db.insert(s).values({key:e,value:t,expiresAt:n}).onConflictDoUpdate({target:s.key,set:{value:t,expiresAt:n},setWhere:this.expired()}).returning({key:s.key})).length>0}async connect(){}async disconnect(){}async get(e){return await this.read(`k:${e}`)??null}async set(e,t,n){let r={value:t,expiresAt:this.at(n)};await this.db.insert(s).values({key:`k:${e}`,...r}).onConflictDoUpdate({target:s.key,set:r})}setIfNotExists(e,t,n){return this.claim(`k:${e}`,t,this.at(n))}async delete(e){await this.db.execute(r`with items as (delete from ${o} where key = ${`k:${e}`}) delete from ${s} where key = ${`k:${e}`}`)}async appendToList(e,t,n={}){let i=`k:${e}`,a=n.maxLength?r`or seq <= coalesce((select seq from ${o} where key = ${i} order by seq desc offset ${n.maxLength-1} limit 1), -1)`:r``;await this.db.execute(r`
|
|
2
2
|
with added as (insert into ${o} (key, value, expires_at) values (${i}, ${JSON.stringify(t)}::jsonb, ${this.stamp(n.ttlMs)}::timestamptz))
|
|
3
3
|
delete from ${o} where key = ${i} and ((select expires_at from ${o} where key = ${i} order by seq desc limit 1) <= ${this.stamp(0)}::timestamptz ${a})`)}async getList(n){let i=`k:${n}`;return(await t(this.db,()=>e(this.db,r`
|
|
4
4
|
with newest as (select expires_at from ${o} where key = ${i} order by seq desc limit 1)
|
package/dist/cli.js
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import{kn as e}from"./core-DwsAMCnL.js";import{
|
|
2
|
+
import{kn as e}from"./core-DwsAMCnL.js";import{Ar as t,Nr as n,On as r,Pr as i,Tn as a}from"./errors-DO_IltpP.js";import{a as o,i as s,r as c,t as l}from"./emit-BrkJJPUE.js";import{Dt as u,Y as d,f,h as p,i as m,lt as h,p as g,r as _,s as v,t as ee}from"./output-SNqdgh9A.js";import{a as te,l as ne,m as y,r as b,t as re,u as x}from"./prompt-CIx4jwQF.js";import{c as S,r as C,s as w}from"./args-Dqf5Y1RP.js";import T from"node:path";import E from"node:process";import{pathToFileURL as ie}from"node:url";const D={title:`Coder`,usageLine:`coder <command>`,description:`Delegate a coding task to the best available engine and steer it while it runs.`,commands:[{usage:`dash`,blurb:`your tasks, agents and settings in the browser`},{usage:`run "<text>"`,blurb:`run a task (background; --wait blocks)`},{usage:`list`,blurb:`list recent tasks (by default running + just stopped)`},{usage:`result [task-id]`,blurb:`status + final answer (--wait blocks)`},{usage:`task <cmd>`,blurb:`run, list, result, watch, steer, stop, approve, ...`},{usage:`flow <cmd>`,blurb:`run, list, watch, result, resume, stop, discover, ...`},{usage:`agent <cmd>`,blurb:`list, show, init, push, run, usage, integrations`},{usage:`credentials <cmd>`,blurb:`engine credentials: list, add, login, remove`},{usage:`server <cmd>`,blurb:`self-host Coder: serve, rotate-key`},{usage:`runner <cmd>`,blurb:`run your server's tasks on this machine: serve, list, ...`},{usage:`auth <cmd>`,blurb:`sign in to Coder: login, logout, status`},{usage:`review [--base <ref> | --pr <n>]`,blurb:`review changed code with a built-in flow`},{usage:`config <list|get|set|unset> [<key> [value]]`,blurb:`read or write config`},{usage:`model <list|add|alias|disable>`,blurb:`manage models: built-ins, aliases, custom endpoints`},{usage:`connection <cmd>`,blurb:`platform accounts, API keys and MCP servers tasks use: add, list, rm, ...`},{usage:`docs [topic]`,blurb:`print bundled documentation (for agents to read)`},{usage:`upgrade [--cli-only|--plugins-only]`,blurb:`update the CLI and host plugins`}],start:[{usage:`coder setup-host [claude|agents]`,blurb:`"claude" for Claude Code, "agents" for any ~/.agents host (Codex, Pi, ...)`},{usage:`coder run --engine [codex|claude] "<task>"`,blurb:`run a task on that engine's default model`},{usage:`coder task result <task-id> --wait`,blurb:`wait for the answer; returns early if the task needs your approval`}],agents:[{usage:`coder docs skill [--claude]`,blurb:`load the skill once`},{usage:`coder mcp`,blurb:`the MCP server your host runs (setup-host adds it)`}],cloudIntro:`Your agents, always on at coder.wular.ai, connected to GitHub, Slack and any other app.`,cloud:[{usage:`coder auth login`,blurb:`sign in`},{usage:`coder <command> --server`,blurb:`the same commands on your Coder server, e.g. coder run --server "<task>"`}],usage:[{usage:`coder <command> --help`,blurb:`flags and details for any command`}]};function O(e){let t=e._zod.def;for(;t.innerType??t.in;)t=(t.innerType??t.in)._zod.def;return t.type===`union`&&t.options?.some(e=>e._zod.def.values?.includes(!0))?`maybe`:t.type}const k=t=>e.get(t)??{};function A(e,t){let n=e.args[t],r=O(n)===`array`?`...`:``;return n._zod.optin?`[${t}${r}]`:`<${t}>${r}`}function j(e,t){let n=O(t),r=k(t).value??(n===`boolean`?``:n===`maybe`?`[${e}]`:`<${e}>`);return{usage:`--${e}${r?` ${r}`:``}`,blurb:k(t).description??``}}const M=e=>[e.description,e.usage==null?``:n(e.usage)].filter(Boolean);function N(e,t,n=t.cyan){let r=Math.max(0,...e.map(e=>e.usage.length))+2;return e.map(e=>` ${n(e.usage.padEnd(r))}${t.dim(e.blurb)}${e.note?` ${t.light(e.note)}`:``}`)}function P(e,t,n){return[``,n.bold(`${e}:`),...t]}function ae(e,t,n){let r=g,i=l(t).namespaces.find(t=>t.namespace===e)?.path??[e.name],a=i.join(` `),o=e=>Object.entries(n).find(([,t])=>t.join(` `)===[...i,e.name].join(` `))?.[0],s=e.namespaces??[],c=[...e.commands.map(e=>({usage:[e.name,...(e.cli?.positional??[]).map(t=>A(e,t))].join(` `),blurb:e.description,...o(e)?{note:`(coder ${o(e)})`}:{}})),...s.map(e=>({usage:`${e.name} <${e.commands.map(e=>e.name).join(`|`)}>`,blurb:e.description}))];return`${[r.bold(`Usage:`),` coder ${a} <subcommand>`,``,M(e).join(`
|
|
3
3
|
|
|
4
|
-
`),...
|
|
5
|
-
`)}\n`}function
|
|
4
|
+
`),...P(`Subcommands`,N(c,r),r),``,v([`Details on a subcommand: coder ${a} <subcommand> --help`],r,r.cyan)].join(`
|
|
5
|
+
`)}\n`}function F(e,t){let n=g,r=e.cli?.positional??[],i=Object.entries(e.args??{}).filter(([e])=>!r.includes(e)),a=i.filter(([e])=>e!==`json`&&e!==`cwd`),o=i.filter(([e])=>e===`json`||e===`cwd`),s=t?l(t).commands.find(t=>t.command===e)?.path??[e.name]:[e.name],c=s.join(` `),u=[n.bold(`Usage:`),` ${[`coder`,c,...r.map(t=>A(e,t)),...a.length?[`[flags]`]:[]].join(` `)}`,``,M(e).join(`
|
|
6
6
|
|
|
7
|
-
`)],
|
|
8
|
-
`)}\n`}function
|
|
9
|
-
`)}\n`}function
|
|
10
|
-
Use astra or fable for the hardest work; they cost the most.`,L={json:
|
|
7
|
+
`)],d=e=>N(e.map(([e,t])=>j(e,t)),n),f=e=>N(e.map(([e,t])=>({usage:String(e),blurb:t})),n),{exit:p,env:m,examples:h}=e.cli??{};return a.length&&u.push(...P(`Flags`,d(a),n)),o.length&&u.push(...P(`Global flags`,d(o),n)),p?.length&&u.push(...P(`Exit codes`,f(p),n)),m?.length&&u.push(...P(`Environment`,f(m),n)),h?.length&&u.push(...P(`Examples`,h.flatMap(e=>{let t=e.lastIndexOf(` # `);return t<0?[` ${n.cyan(e)}`]:[` ${n.cyan(e.slice(0,t))}`,` ${n.dim(e.slice(t+4))}`]}),n)),s.length>1&&u.push(...P(`Related`,[` ${n.cyan(`coder ${s.slice(0,-1).join(` `)} --help`)}`],n)),`${u.join(`
|
|
8
|
+
`)}\n`}function oe(e,t){let n=g,{start:r,agents:i,cloud:a,usage:o,commands:s,globals:c}=e,l=N([...r,...i,...a,...o,...s,...c],n),u=0,d=e=>l.slice(u,u+=e);return`${[`${n.bold(e.title)} ${n.dim(`v${t}`)}`,e.description,...P(`Get started`,d(r.length),n),...P(`Agents`,d(i.length),n),...P(`Coder Cloud`,[` ${n.dim(e.cloudIntro)}`,...d(a.length)],n),...P(`Usage`,[` ${e.usageLine}`,...d(o.length)],n),...P(`Commands`,d(s.length),n),...P(`Global`,l.slice(-c.length),n)].join(`
|
|
9
|
+
`)}\n`}function se(e){let t=e.indexOf(`--`),n=t===-1?e:e.slice(0,t);return n.includes(`-h`)||n.includes(`--help`)}const I=`Use luna or sonnet for mechanical work; sol or opus is the default.
|
|
10
|
+
Use astra or fable for the hardest work; they cost the most.`,L={json:C(`JSON output`),cwd:S(`workspace directory; default current`,`<dir>`)};function R(e,t){return e.map(e=>{let n=e.search(/(?:\b[A-Z][A-Z0-9_]*=\S+\s+)*coder /);return{usage:n<0?``:e.slice(n),blurb:n<0?e:e.slice(0,n).trim().replace(/:$/,``),cli:{...t,text:e}}})}function z(e,t={}){e=e.filter(e=>!e.cli?.hidden&&e.cli?.slot===t.slot);let n=N(e.map(e=>({...e,blurb:e.cli?.layout===`rows`?e.cli.text??e.blurb:e.blurb})),g,g.blue);for(let r=0;r<e.length;){let{text:i,...a}=e[r].cli??{},o={...a,...t},s=r+1;for(;s<e.length;){let{text:n,...r}=e[s].cli??{};if(JSON.stringify({...r,...t})!==JSON.stringify(o))break;s++}let c=o.stream===`stderr`?E.stderr:E.stdout,l=o.stream===`stderr`&&o.style!==`stdout`?_:g,u=e.slice(r,s).map(e=>e.cli?.text??`${e.blurb}: ${e.usage}`),d=o.layout===`plain`?o.dim?l.dim(u.join(`
|
|
11
11
|
`)):u.join(`
|
|
12
|
-
`):o.layout===`good`||o.layout===`bad`?u.map(o.layout===`good`?
|
|
12
|
+
`):o.layout===`good`||o.layout===`bad`?u.map(o.layout===`good`?f:ee).join(`
|
|
13
13
|
`):o.layout===`inline`?e.slice(r,s).map(e=>`${l.bold(e.usage)} ${l.dim(e.blurb)}`).join(`
|
|
14
14
|
`):o.layout===`rows`?[l.bold(`${o.title??`Related`}:`),...n.slice(r,s)].join(`
|
|
15
|
-
`):
|
|
16
|
-
`}${d}\n`),r=s}}const B=e=>e===`https://coder.wular.ai`?`Sign in: coder auth login`:`Sign in: coder auth login --server ${e}`;async function V(e,t=!1){let n=
|
|
17
|
-
`),
|
|
15
|
+
`):v(u,l,o.paint===`cyan`?l.cyan:l.blue,o.title);c.write(`${o.prefix??`
|
|
16
|
+
`}${d}\n`),r=s}}const B=e=>e===`https://coder.wular.ai`?`Sign in: coder auth login`:`Sign in: coder auth login --server ${e}`;async function V(e,t=!1){let n=y(e);if(ne(n))return n;if(!t){if(!b())throw new u(`invalid-option`,`First use of Coder server ${new URL(n).origin} needs confirmation.`,{hint:`Inspect the origin, then repeat with --yes.`});if((await te({title:`Connect to ${new URL(n).origin}?`,hint:`This server can receive task and agent data.`,options:[{value:`yes`,label:`Continue`},{value:`no`,label:`Cancel`}]}))[0]!==`yes`)throw new u(`invalid-option`,`Server connection cancelled.`)}return x(n),n}function H(e){E.stderr.write(`[coder] No engine could start. Follow fallback.instructions with a native subagent.
|
|
17
|
+
`),p(e)}function U(e,t=!1){let n=`read-only unavailable on this host: the OS sandbox failed to start (Linux/WSL2 needs bubblewrap + socat). Re-dispatch with --permissions auto (or workspace-write) if writes are acceptable, or install the sandbox deps.`;t?p({error:n,code:`read-only-unavailable`,detail:e}):E.stderr.write(`[coder] ${n}\n`),E.exit(1)}function W(e,t,n,r){let i=w(r);return R([`Approve: coder task approve ${t} ${n.id}${i}`,`Deny: coder task approve ${t} ${n.id} --deny --reason "<why>"${i}`,`Then wait again in its own background shell, one per task: coder task result ${t} --wait${i}`,`The decision reaches the task as a message, any time.`])}function G(e,t){return Error(JSON.stringify({...typeof e==`object`&&e?e:{result:e},next:t.map(({usage:e,blurb:t})=>({usage:e,blurb:t}))}))}function ce(e,t,n,r){if(r.json)p({taskId:t,status:`awaiting-approval`,approval:n});else{let i=W(e,t,n,r).map(e=>e.cli.text);E.stdout.write(`Approval needed for task ${t}: ${n.reason}\n`),E.stdout.write(`${h(n.actions)}\n`),E.stderr.write(`\n${v(i,_,_.blue,`Next steps`)}\n`)}E.exit(4)}function le(e,t,n){switch(e.code){case`chain-exhausted`:H(e.payload),E.exit(3);case`read-only-unavailable`:U(e.message,n.json);case`approval-pending`:ce(t,e.taskId,e.approval,n);case`startup-failed`:n.json&&(p({taskId:e.taskId,status:`failed`,detail:e.message}),E.exit(1)),m(`Task ${e.taskId} failed to start.${e.message?`\n${e.message}`:``}`,{hint:`See: coder task result ${e.taskId}`});case`login-failed`:m(e.message,{hint:[B(y(n.server)),`Or, for a memory server, set the same ADMIN_TOKEN it was started with`]});case`server`:m(e.message,{hint:e.hint??(e.status===401?B(y(n.server)):void 0)});default:m(e.message,e.hint?{hint:e.hint}:{})}}function ue(e){let t=Object.entries(L).filter(([t])=>e.globalFlags?.[t]!==!1),n={...e.args,...Object.fromEntries(t)},r=e.cli?.positional??[],a=(t,n)=>{let{cwd:i}=t,a=t;return{options:t,args:r.flatMap(e=>a[e]??[]),cwd:i?T.resolve(i):E.cwd(),tool:n,next(r,i){!n&&(!t.json||i?.force)&&z(e.next?.({result:r,args:t})??[],i)}}},s=async t=>{let n=t.options;return n.server!==void 0&&await V(n.server,n.yes),e.run(t)},d=i({name:e.name,description:e.description,...e.usage?{usage:e.usage}:{},access:e.access,args:n,...e.cli?{cli:e.cli}:{},...e.mcp===!1?{mcp:!1}:{},...e.mcp===!1?{}:{mcp:{text:e=>typeof e.output==`string`?e.output:JSON.stringify(e.output)??``}},async run(t){let n=a(t,!0),r;try{r=await s(n)}catch(e){throw e instanceof u&&e.code===`approval-pending`&&e.taskId&&e.approval?G({taskId:e.taskId,status:`awaiting-approval`,approval:e.approval},W(n.cwd,e.taskId,e.approval,n.options)):e}let i=e.json?e.json(r,n):r;if(e.exit?.(r,n))throw G(i,e.next?.({result:r,args:t})??[]);return{value:r,output:i}},next:({result:t,args:n})=>e.next?.({result:t.value,args:n})??[]}),f=async t=>{let n;try{n=o(d,t)}catch(t){if(!(t instanceof c))throw t;let{cli:n}=await import(`./cmd-BHZwhrfa.js`),r=l(n).commands.find(e=>e.command.run===d.run)?.path??[e.name];throw new u(`invalid-option`,t.message,{hint:`Help: coder ${r.join(` `)} --help`})}let r=a(n,!1),i;try{i=await s(r)}catch(e){throw e instanceof u&&le(e,r.cwd,r.options),e}if(n.json&&i!==void 0)p(e.json?e.json(i,r):i);else{let t=e.print?.(i,r);t&&typeof t.then==`function`&&await t,r.next(i),await e.afterNext?.(i,r)}let f=e.exit?.(i,r);f!==void 0&&(E.exitCode=f)};return Object.defineProperty(f,"name",{value:e.name,writable:!0,enumerable:!0}),Object.assign(f,d)}function K({usage:e,...n}){let r=async e=>{let{cli:t}=await import(`./cmd-BHZwhrfa.js`);return Z([...l(t).namespaces.find(e=>e.namespace.name===n.name&&e.namespace.commands===n.commands)?.path??[n.name],...e])};return Object.defineProperty(r,"name",{value:n.name,writable:!0,enumerable:!0}),Object.assign(r,t({...n,...e?{usage:e}:{}}))}const q={"task worker":async()=>(await import(`./worker-sTJL2eoe.js`)).commandWorker,"task mcp":async()=>(await import(`./mcp-CGU7aoJ-.js`)).commandTaskMcp,"task hook":async()=>(await import(`./hook-CIipj9MJ.js`)).commandTaskHook,"task tools":async()=>(await import(`./tools-FVop8XYG.js`)).commandTools,"task tools-search":async()=>(await import(`./tools-search-kjKKolwp.js`)).commandToolsSearch,"flow drive":async()=>(await import(`./drive-Bwl7Bjme.js`)).commandDrive,"upgrade refresh":async()=>(await import(`./refresh-CxsaX5R9.js`)).commandRefreshUpdate};async function J(e){let{cli:t,SHORTCUTS:n}=await import(`./cmd-BHZwhrfa.js`),r=n[e[0]];return s(t,r?[...r,...e.slice(1)]:e)}async function Y(e){let{cli:t,SHORTCUTS:n}=await import(`./cmd-BHZwhrfa.js`);return`command`in e?F(e.command,t):ae(e.namespace,t,n)}async function de(e){let t=await J(e.split(` `));return t&&!t.rest.length?Y(t):null}const X=()=>oe({...D,globals:[{usage:`-h, --help`,blurb:`show help (top-level, or for a command)`},{usage:`-v, --version`,blurb:`print the coder version`},...Object.entries(L).map(([e,t])=>j(e,t))]},r());async function Z(e){let[t,...n]=e;if(t===`--version`||t===`-v`){E.stdout.write(`${r()}\n`);return}if(t===void 0||t===`help`||t===`--help`||t===`-h`){let e=n.length?await J(n):void 0;E.stdout.write(e?await Y(e):X());return}let i=e.slice(0,2).join(` `);if(!q[i]&&t!==`mcp`){let e=d(r(),a);e&&E.stderr.write(_.dim(`coder ${r()} -> `)+_.bold(e)+_.dim(` available. run: coder upgrade
|
|
18
18
|
|
|
19
|
-
`))}if(q[
|
|
20
|
-
`),
|
|
19
|
+
`))}if(q[i])return(await q[i]())(e.slice(2));let o=await J(e);if(o||(E.stdout.write(X()),E.stdout.write(`
|
|
20
|
+
`),m(`Unknown command "${t}".`,{hint:`See all commands: coder --help`})),`namespace`in o){let[e]=o.rest,t=o.path.join(` `);E.stdout.write(await Y(o)),e&&![`help`,`-h`,`--help`].includes(e)&&m(`Unknown ${t} subcommand "${e}".`,{hint:`Help: coder ${t} --help`});return}if(se(o.rest))return void E.stdout.write(await Y(o));await o.command(o.rest)}function Q(){return E.stdout.on(`error`,e=>{throw e.code===`EPIPE`&&E.exit(0),e}),Z(E.argv.slice(2)).catch(e=>{e instanceof re&&E.exit(130),e instanceof u&&e.hint&&m(e.message,{hint:e.hint});let t=e instanceof Error&&e.cause instanceof Error?`: ${e.cause.message}`:``;E.stderr.write(`${e instanceof Error?e.message:String(e)}${t}\n`),E.exit(1)})}const $=E.argv[1]&&ie(E.argv[1]).href;$&&[import.meta.url,new URL(`./cli.js`,import.meta.url).href].includes($)&&Q();export{I as MODEL_HINT,ue as command,V as confirmServer,Z as dispatch,K as group,Q as main,R as nextSteps,de as renderHelp,X as renderTopHelp,F as t};
|