@runeya/apps-cli 0.1.1 → 0.1.2
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/dist/agent/index.js +5303 -0
- package/dist/agent/index.js.map +1 -0
- package/dist/agent-manager-3S4FUNJS-MYT5X6XQ.js +8 -0
- package/dist/agent-manager-3S4FUNJS-MYT5X6XQ.js.map +1 -0
- package/dist/chunk-32HTB3XS.js +350 -0
- package/dist/chunk-32HTB3XS.js.map +1 -0
- package/dist/chunk-ERJIU7R4.js +195 -0
- package/dist/chunk-ERJIU7R4.js.map +1 -0
- package/dist/chunk-XZPCEGWS.js +2452 -0
- package/dist/chunk-XZPCEGWS.js.map +1 -0
- package/dist/dist-MFM5N25P.js +10985 -0
- package/dist/dist-MFM5N25P.js.map +1 -0
- package/dist/index.js.map +1 -0
- package/dist/kanban-commands-VEVMJTFS-OIYWEHUP.js +14 -0
- package/dist/kanban-commands-VEVMJTFS-OIYWEHUP.js.map +1 -0
- package/dist/package.json +36 -0
- package/dist/runeya +4 -0
- package/dist/web/assets/AddressBar.vue-dB66q4DS.js +1 -0
- package/dist/web/assets/AgentPage-B3wrH3gG.js +2 -0
- package/dist/web/assets/AgentPage-BTWkJvqr.css +1 -0
- package/dist/web/assets/AgentScalarChatInterface.vue-CJVuZIB9.js +13 -0
- package/dist/web/assets/AgentTerminalPage-Cj5fRr-j.js +36 -0
- package/dist/web/assets/AgentTerminalPage-EX_n6P3x.css +1 -0
- package/dist/web/assets/AiChatPage-Dhsx3B9B.js +1 -0
- package/dist/web/assets/ApiDocsPage-BddLJuUF.js +5 -0
- package/dist/web/assets/ApiDocsPage-D2Z0wqGZ.css +1 -0
- package/dist/web/assets/AppLayout-AfhaeKlp.js +1 -0
- package/dist/web/assets/AppLayout-sngalCCj.css +1 -0
- package/dist/web/assets/AuditPage-BBV9FW9y.css +1 -0
- package/dist/web/assets/AuditPage-DqycuiVb.js +1 -0
- package/dist/web/assets/CodeInput.vue-Dyew7ml-.js +1 -0
- package/dist/web/assets/Collection.vue-DePdVAHM.js +1 -0
- package/dist/web/assets/CollectionAuthentication.vue-DagSEg45.js +1 -0
- package/dist/web/assets/CollectionCookies.vue-vMKPCgg1.js +1 -0
- package/dist/web/assets/CollectionEnvironment.vue-B0JkZ6GC.js +1 -0
- package/dist/web/assets/CollectionOverview.vue-Bm7OsMWM.js +1 -0
- package/dist/web/assets/CollectionScripts.vue-CZiBq0rT.js +1 -0
- package/dist/web/assets/CollectionServers.vue-bziJbP-5.js +1 -0
- package/dist/web/assets/CollectionSettings.vue-D4oBu-fT.js +1 -0
- package/dist/web/assets/CollectionSync.vue-BG50-Lo4.js +1 -0
- package/dist/web/assets/CommandActionInput.vue-DmZld2w7.js +1 -0
- package/dist/web/assets/Cookies.vue-DjxMLL79.js +1 -0
- package/dist/web/assets/DashboardPage-QjYCF0Kd.js +1 -0
- package/dist/web/assets/DashboardPage-gZJ4_s8T.css +1 -0
- package/dist/web/assets/DataTable.vue-BV9IuUNB.js +1 -0
- package/dist/web/assets/DataTableCheckbox.vue-Cx0exaNK.js +1 -0
- package/dist/web/assets/DataTableHeader.vue-ZtUdyiLV.js +1 -0
- package/dist/web/assets/DataTableInput.vue-C4NF8kJn.js +1 -0
- package/dist/web/assets/DeleteSidebarListElement.vue-CcAW4Pdn.js +1 -0
- package/dist/web/assets/EditSidebarListElement.vue-Crbagha4.js +1 -0
- package/dist/web/assets/EditorIcon-BaDORp4k.js +15 -0
- package/dist/web/assets/EditorIcon-zS3bHXe1.css +1 -0
- package/dist/web/assets/EmptyState.vue-2hJbVxAi.js +22 -0
- package/dist/web/assets/Environment.vue-CcERFnQq.js +1 -0
- package/dist/web/assets/EnvironmentForm-DSKxdDGW.js +108 -0
- package/dist/web/assets/EnvironmentForm-DVMc303P.css +1 -0
- package/dist/web/assets/EnvironmentFormPage-BDhR07CG.js +1 -0
- package/dist/web/assets/EnvironmentFormPage-OaDJvyrc.css +1 -0
- package/dist/web/assets/EnvironmentListPage-BDqcug66.css +1 -0
- package/dist/web/assets/EnvironmentListPage-BzdxgZdS.js +1 -0
- package/dist/web/assets/EnvironmentModal.vue-DvsPa6V9.js +1 -0
- package/dist/web/assets/EnvironmentSelector-B9SZvB3I.css +1 -0
- package/dist/web/assets/EnvironmentSelector-BWljvJWP.js +1 -0
- package/dist/web/assets/Form.vue-BxhIukSx.js +1 -0
- package/dist/web/assets/IconSelector.vue-SxFpYToZ.js +1 -0
- package/dist/web/assets/KanbanBoardPage-7nOYpwHn.css +1 -0
- package/dist/web/assets/KanbanBoardPage-Bbyn-iLC.js +141 -0
- package/dist/web/assets/KanbanListPage-BEX3MKW0.js +1 -0
- package/dist/web/assets/KanbanListPage-DbdjvTCx.css +1 -0
- package/dist/web/assets/LaunchProjectPage-DB_XBa86.js +1 -0
- package/dist/web/assets/LaunchProjectPage-_L_i2xo0.css +1 -0
- package/dist/web/assets/LaunchServicesPage-BABQz-ey.css +1 -0
- package/dist/web/assets/LaunchServicesPage-fmsU-_p0.js +1 -0
- package/dist/web/assets/LogViewer-CJcXcTP0.css +1 -0
- package/dist/web/assets/LogViewer-CV9OmAb1.js +3 -0
- package/dist/web/assets/ProcessControls-CKmB6sB9.css +1 -0
- package/dist/web/assets/ProcessControls-L_hld0kN.js +1 -0
- package/dist/web/assets/ProcessDetailPage-B0qGKtvQ.css +1 -0
- package/dist/web/assets/ProcessDetailPage-CW0F6wvO.js +1 -0
- package/dist/web/assets/ProcessMetrics-BgEFMdnW.css +1 -0
- package/dist/web/assets/ProcessMetrics-D2vCK15o.js +1 -0
- package/dist/web/assets/ProjectDetailPage-Bo04MsdE.js +1 -0
- package/dist/web/assets/ProjectDetailPage-CZBB6F-t.css +1 -0
- package/dist/web/assets/ProjectListPage-BGU6SKAr.css +1 -0
- package/dist/web/assets/ProjectListPage-CG-r82FQ.js +1 -0
- package/dist/web/assets/RandomJobTestPage-C1mgTTSY.css +1 -0
- package/dist/web/assets/RandomJobTestPage-COnuE_dj.js +2 -0
- package/dist/web/assets/Request.vue-CeAzdpVl.js +1 -0
- package/dist/web/assets/RequestAuth.vue-DABBKM9M.js +1 -0
- package/dist/web/assets/RequestRoot.vue-CRaiGtgb.js +19 -0
- package/dist/web/assets/ScalarAsciiArt.vue-mR3JflbN.js +2 -0
- package/dist/web/assets/ScalarIconEyeSlash.vue-JQCpS43o.js +1 -0
- package/dist/web/assets/ScalarIconTrash.vue-D7zGeCPC.js +1 -0
- package/dist/web/assets/ScenarioEditorPage-BVnDp-fS.js +14 -0
- package/dist/web/assets/ScenarioEditorPage-CfBKebp6.css +1 -0
- package/dist/web/assets/ServerVariablesForm.vue-DbVG31Dx.js +1 -0
- package/dist/web/assets/ServiceControlsBar-Cp2VUifX.js +1 -0
- package/dist/web/assets/ServiceControlsBar-D_S_sGQj.css +1 -0
- package/dist/web/assets/ServiceDetailPage-BriHTCpT.css +1 -0
- package/dist/web/assets/ServiceDetailPage-DMoXJliU.js +2 -0
- package/dist/web/assets/ServiceFormPage-BXTTwyWP.js +1 -0
- package/dist/web/assets/ServiceFormPage-CyY-14jH.css +1 -0
- package/dist/web/assets/Settings.vue-BtjfBYMB.js +1 -0
- package/dist/web/assets/SettingsPage-BFqYvm6R.js +508 -0
- package/dist/web/assets/SettingsPage-vGhb_tlY.css +1 -0
- package/dist/web/assets/SetupKeyPage-CrmikLTx.js +1 -0
- package/dist/web/assets/SetupKeyPage-DoY1Ua1s.css +1 -0
- package/dist/web/assets/SetupPage-CRuL5LXc.js +1 -0
- package/dist/web/assets/SetupPage-_KXpCQSU.css +1 -0
- package/dist/web/assets/Sidebar.vue-CLpz7l3s.js +1 -0
- package/dist/web/assets/SidebarButton.vue-DAvh-OoW.js +1 -0
- package/dist/web/assets/SidebarListElement.vue-CfQ22Epo.js +1 -0
- package/dist/web/assets/UnlockPage-Cx3PYgUl.css +1 -0
- package/dist/web/assets/UnlockPage-UxunGumn.js +1 -0
- package/dist/web/assets/VariablesTable-BtdK5olT.css +1 -0
- package/dist/web/assets/VariablesTable-CKe8mApI.js +1 -0
- package/dist/web/assets/ViewLayout.vue-D30IFsIP.js +1 -0
- package/dist/web/assets/ViewLayoutContent.vue-B4BXKBtQ.js +1 -0
- package/dist/web/assets/ViewLayoutSection.vue-BGkXXzBQ.js +1 -0
- package/dist/web/assets/_plugin-vue_export-helper-C7ztIXtE.js +1 -0
- package/dist/web/assets/abap-C4tHUUCU.js +1 -0
- package/dist/web/assets/active-entities-DMSK8Kvo.js +1 -0
- package/dist/web/assets/apex-6cG6aG-w.js +1 -0
- package/dist/web/assets/api-reference-DUBKG98-.js +1 -0
- package/dist/web/assets/autocomplete-Bx5M86A5.js +308 -0
- package/dist/web/assets/azcli-51BngrSU.js +1 -0
- package/dist/web/assets/base64-uZi92-DX.js +1 -0
- package/dist/web/assets/bat-BDcdVSIt.js +1 -0
- package/dist/web/assets/bicep-Cg0BCcky.js +2 -0
- package/dist/web/assets/cameligo-C3ekVui9.js +1 -0
- package/dist/web/assets/card-6r6P_U-q.js +32 -0
- package/dist/web/assets/checkbox-CQpllPXd.js +141 -0
- package/dist/web/assets/chip-gp-_w98f.js +54 -0
- package/dist/web/assets/clojure-Ci5xNgh_.js +1 -0
- package/dist/web/assets/codicon-DCmgc-ay.ttf +0 -0
- package/dist/web/assets/coffee-xsRz4GKy.js +1 -0
- package/dist/web/assets/column-CE6TbiAC.js +763 -0
- package/dist/web/assets/core-CLjfGkKM.js +1 -0
- package/dist/web/assets/cpp-B2gW4e23.js +1 -0
- package/dist/web/assets/csharp-SRujvHqy.js +1 -0
- package/dist/web/assets/csp-Cr-ll6gP.js +1 -0
- package/dist/web/assets/css-BYTJZCno.js +3 -0
- package/dist/web/assets/cssMode-Bl7Y9u0B.js +4 -0
- package/dist/web/assets/cypher-AmQ0R_D3.js +1 -0
- package/dist/web/assets/dart-Du01a0J5.js +1 -0
- package/dist/web/assets/dist-CNJKy0Au.js +192 -0
- package/dist/web/assets/dist-DGrDIHmK.js +1 -0
- package/dist/web/assets/dist-DkaYBczY.js +1 -0
- package/dist/web/assets/dist-E9g7EMme.js +1 -0
- package/dist/web/assets/dist-wHtavuXf.js +33 -0
- package/dist/web/assets/divider-J1wJyhb6.js +82 -0
- package/dist/web/assets/dockerfile-Dtlk9wqf.js +1 -0
- package/dist/web/assets/ecl-CpmVnLkK.js +1 -0
- package/dist/web/assets/editor.store-CIIP294U.js +1 -0
- package/dist/web/assets/editor.worker-Di51weDy.js +12 -0
- package/dist/web/assets/elixir-B3MVAC8k.js +1 -0
- package/dist/web/assets/fieldset-BRuU3VW2.js +88 -0
- package/dist/web/assets/flow9-Chkly0RN.js +1 -0
- package/dist/web/assets/freemarker2-C-5i2Fhr.js +3 -0
- package/dist/web/assets/fsharp-CZvMkppk.js +1 -0
- package/dist/web/assets/go-dT2iT7lt.js +1 -0
- package/dist/web/assets/graphql-DmObWyBD.js +1 -0
- package/dist/web/assets/handlebars-Bq-uEMhK.js +1 -0
- package/dist/web/assets/hcl-D1x5Oyp4.js +1 -0
- package/dist/web/assets/html-B-mweV_C.js +1 -0
- package/dist/web/assets/htmlMode-BlnuAGDY.js +4 -0
- package/dist/web/assets/index-BRDI9Dib.css +1 -0
- package/dist/web/assets/index-gfmcW9Sb.js +4220 -0
- package/dist/web/assets/ini-Bg2o1S3s.js +1 -0
- package/dist/web/assets/java-XviKSSn5.js +1 -0
- package/dist/web/assets/javascript-D61EWPTf.js +1 -0
- package/dist/web/assets/jsonMode-DmSJWG69.js +10 -0
- package/dist/web/assets/julia-DfTIwUGh.js +1 -0
- package/dist/web/assets/keyboard-nBda2f6m.js +4 -0
- package/dist/web/assets/kotlin-CNaIBh9d.js +1 -0
- package/dist/web/assets/less-D7o76tXd.js +2 -0
- package/dist/web/assets/lexon-Dd374QjV.js +1 -0
- package/dist/web/assets/lib-CegStMAw.js +5 -0
- package/dist/web/assets/library-BwIJAfg0.js +1 -0
- package/dist/web/assets/liquid-BRXADGhu.js +1 -0
- package/dist/web/assets/lua-DZKuiFbY.js +1 -0
- package/dist/web/assets/m3-CbwRx9Bb.js +1 -0
- package/dist/web/assets/markdown-DwLB5Rib.js +1 -0
- package/dist/web/assets/mdx-DXlefD6G.js +1 -0
- package/dist/web/assets/mediaTypes-BtSbXDUA.js +2 -0
- package/dist/web/assets/message-EfwB0RVQ.js +316 -0
- package/dist/web/assets/minus-DCEEn9ly.js +2 -0
- package/dist/web/assets/mips-DLbIq1yM.js +1 -0
- package/dist/web/assets/msdax-D4IjoZ6m.js +1 -0
- package/dist/web/assets/multiselect-BMOAw1qo.js +251 -0
- package/dist/web/assets/mysql-DQL_jy6H.js +1 -0
- package/dist/web/assets/objective-c-D74wM5bv.js +1 -0
- package/dist/web/assets/pascal-5tRlZk4O.js +1 -0
- package/dist/web/assets/pascaligo-CAE4rAEt.js +1 -0
- package/dist/web/assets/password-B0kJu8RE.js +101 -0
- package/dist/web/assets/perl-DREAbuQT.js +1 -0
- package/dist/web/assets/pgsql-DASKdyAW.js +1 -0
- package/dist/web/assets/php-C37ZWqoO.js +1 -0
- package/dist/web/assets/pla-v5u9R8i1.js +1 -0
- package/dist/web/assets/plus-CaknAInj.js +197 -0
- package/dist/web/assets/postiats-Szt5m-7G.js +1 -0
- package/dist/web/assets/powerquery-BzVrUSu3.js +1 -0
- package/dist/web/assets/powershell-BdbPbX_X.js +1 -0
- package/dist/web/assets/pretty-ms-CG-W6pSW.js +202 -0
- package/dist/web/assets/primeicons-C6QP2o4f.woff2 +0 -0
- package/dist/web/assets/primeicons-DMOk5skT.eot +0 -0
- package/dist/web/assets/primeicons-Dr5RGzOO.svg +345 -0
- package/dist/web/assets/primeicons-MpK4pl85.ttf +0 -0
- package/dist/web/assets/primeicons-WjwUDZjB.woff +0 -0
- package/dist/web/assets/process.store-DxDr1XKZ.js +1 -0
- package/dist/web/assets/project.store-CUclo-tf.js +1 -0
- package/dist/web/assets/protobuf-qqDa50tu.js +2 -0
- package/dist/web/assets/pug-Cu20UQ5w.js +1 -0
- package/dist/web/assets/python-BeJzJfgr.js +1 -0
- package/dist/web/assets/qsharp-DcbHL5X7.js +1 -0
- package/dist/web/assets/r-Bvig6Flk.js +1 -0
- package/dist/web/assets/radiobutton-Dpp9kpvR.js +145 -0
- package/dist/web/assets/razor-C8GjTcdm.js +1 -0
- package/dist/web/assets/redis-BxHDcW3-.js +1 -0
- package/dist/web/assets/redshift-B8dvlzjH.js +1 -0
- package/dist/web/assets/restructuredtext-npodtAFM.js +1 -0
- package/dist/web/assets/router-BAq_YY48.js +1 -0
- package/dist/web/assets/ruby-DiofbcJD.js +1 -0
- package/dist/web/assets/rust-BjYid3-m.js +1 -0
- package/dist/web/assets/sb-CzcPAP71.js +1 -0
- package/dist/web/assets/scala-Ci4wFrYi.js +1 -0
- package/dist/web/assets/scheme-D3iWhvP7.js +1 -0
- package/dist/web/assets/scss-DdlqDgmu.js +3 -0
- package/dist/web/assets/settings.store-RtV37pb_.js +1 -0
- package/dist/web/assets/shell-Bawb9gbH.js +1 -0
- package/dist/web/assets/solidity-Z2Sq8PBC.js +1 -0
- package/dist/web/assets/sophia--yD-H1Ow.js +1 -0
- package/dist/web/assets/sparql-0vv3-wLi.js +1 -0
- package/dist/web/assets/sql-0gdWKhmJ.js +1 -0
- package/dist/web/assets/st-rE-x-DTZ.js +1 -0
- package/dist/web/assets/store-BSUCffsu.js +1840 -0
- package/dist/web/assets/style-4Pk2icOw.css +1 -0
- package/dist/web/assets/swift-CSKeG8Ne.js +1 -0
- package/dist/web/assets/systemverilog-CblNM3Im.js +1 -0
- package/dist/web/assets/tabpanel-CXo9Yhvl.js +150 -0
- package/dist/web/assets/tag-BsP7PdQ9.js +54 -0
- package/dist/web/assets/tcl-BYnzj-GZ.js +1 -0
- package/dist/web/assets/toggleswitch-C0fuTzJt.js +115 -0
- package/dist/web/assets/trpc-DgyerAaK.js +1 -0
- package/dist/web/assets/ts.worker-DHQ2j8_R.js +51339 -0
- package/dist/web/assets/tsMode-CaqfXb40.js +11 -0
- package/dist/web/assets/twig-DiGWiEtp.js +1 -0
- package/dist/web/assets/typescript-D23_zyMA.js +1 -0
- package/dist/web/assets/typespec-a6xMcpXw.js +1 -0
- package/dist/web/assets/urls-D4kou9RH.js +12 -0
- package/dist/web/assets/use-tree-walker-BebEauYQ.js +1 -0
- package/dist/web/assets/useAiChatDrawer-DDBZQU71.js +1 -0
- package/dist/web/assets/useClipboard-BgE-EP5h.js +1 -0
- package/dist/web/assets/useLayout-BtC8xLAa.js +1 -0
- package/dist/web/assets/usePluginManager-MFUURiUn.js +1 -0
- package/dist/web/assets/useSidebar-DC34K6Vb.js +1 -0
- package/dist/web/assets/uuid-B9GFVXPm.js +1 -0
- package/dist/web/assets/vb---51HVMC.js +1 -0
- package/dist/web/assets/vue-router-CCwpUNtv.js +1 -0
- package/dist/web/assets/w3c-keyname-DDCGDLuI.js +1 -0
- package/dist/web/assets/wgsl-2A8z4pT5.js +298 -0
- package/dist/web/assets/xml-e0SmIpRt.js +1 -0
- package/dist/web/assets/yaml-ChhAbF6s.js +1 -0
- package/dist/web/index.html +14 -0
- package/package.json +7 -7
- package/Dockerfile +0 -54
- package/scripts/post-build.mjs +0 -61
- package/src/__tests__/cli-port.test.ts +0 -93
- package/src/index.ts +0 -298
- package/src/port-resolution.ts +0 -19
- package/tsconfig.json +0 -9
- package/tsup.config.bundled_lh0xis3zdq.mjs +0 -10
- package/tsup.config.bundled_qj1zdvku09a.mjs +0 -10
- package/tsup.config.ts +0 -6
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/port-resolution.ts"],"sourcesContent":["#!/usr/bin/env node\nimport type { Server } from 'node:http';\nimport type { WebSocketServer } from 'ws';\nimport type { Request, Response } from 'express';\nimport { fileURLToPath, URL as NodeURL } from 'node:url';\nimport { dirname, join, resolve } from 'node:path';\nimport { readFileSync } from 'node:fs';\nimport express from 'express';\nimport dotenv from 'dotenv'\nimport open from 'open';\nimport { resolvePort } from './port-resolution.js';\n\nconst __dirname = dirname(fileURLToPath(import.meta.url));\n\nconst { version } = JSON.parse(\n readFileSync(new NodeURL('../package.json', import.meta.url), 'utf8'),\n) as { version: string };\n\nfunction printStartupTable(port: number, appUrl: string): void {\n const rows: [string, string][] = [\n ['Version', version],\n ['Port', String(port)],\n ['Url', appUrl],\n ];\n\n const col0 = Math.max(...rows.map(([k]) => k.length));\n const col1 = Math.max(...rows.map(([, v]) => v.length));\n\n const pad = (s: string, n: number) => s.padEnd(n);\n const hr = (l: string, m: string, r: string, f: string) =>\n l + f.repeat(col0 + 2) + m + f.repeat(col1 + 2) + r;\n\n console.log('');\n console.log(hr('┌', '┬', '┐', '─'));\n for (const [key, value] of rows) {\n console.log(`│ ${pad(key, col0)} │ ${pad(value, col1)} │`);\n }\n console.log(hr('└', '┴', '┘', '─'));\n console.log('');\n}\n\n// Parse CLI flags\nconst args = process.argv.slice(2);\n\n// Resolve target directory (first positional arg, skipping flag values)\nconst flagsWithValues = new Set(['--host', '--port', '-e', '--environment', '-s', '--service']);\nconst targetDir = args.find((a, i) => !a.startsWith('-') && !flagsWithValues.has(args[i - 1] ?? ''));\nif (targetDir) {\n const resolved = resolve(targetDir);\n process.chdir(resolved);\n console.log(`[cli] Working directory: ${resolved}`);\n}\n\ndotenv.config();\n\nif (args.includes('--help') || args.includes('-h')) {\n console.log(`Usage: runeya [path-to-your-stack] [options]\n\nOptions:\n --version Show version number\n --pe, --pull-env Print env vars for a service to stdout (requires -e and -s)\n -e, --environment <n> Environment name or id\n -s, --service <name> Service name or id\n --lan Expose server on the local network (shortcut for --host 0.0.0.0)\n --host <address> Host to bind to (default: 127.0.0.1)\n --no-open Do not open browser on startup\n --agent Run as agent only (no server, no UI) — for remote machines\n -h, --help Show this help message\n`);\n process.exit(0);\n}\n\nif (args.includes('--version')) {\n console.log(version);\n process.exit(0);\n}\n\nconst noOpen =\n args.includes('--no-open') ||\n !!process.env['VITEST'] ||\n !!process.env['CI'] ||\n process.env['NODE_ENV'] === 'test';\n\n// --pull-env flag — detect early so we can silence stdout before any log\nconst isPullEnv = args.includes('--pull-env') || args.includes('--pe');\n\n// In pull-env mode, redirect console.log/info to stderr so only KEY=VALUE goes to stdout\nif (isPullEnv) {\n const toStderr = (...a: unknown[]) => process.stderr.write(a.join(' ') + '\\n');\n console.log = toStderr;\n console.info = toStderr;\n}\n\nfunction getFlagValue(flags: string[]): string | undefined {\n for (const flag of flags) {\n const idx = args.indexOf(flag);\n if (idx !== -1 && idx + 1 < args.length) return args[idx + 1];\n }\n return undefined;\n}\n\nconst serviceArg = getFlagValue(['-s', '--service']);\nconst environmentArg = getFlagValue(['-e', '--environment']);\n\n// Configure environment BEFORE importing server (env is parsed at module load)\n// RUNEYA_HTTP_PORT takes priority over PORT\nif (process.env.RUNEYA_HTTP_PORT && !process.env.PORT) {\n process.env.PORT = process.env.RUNEYA_HTTP_PORT;\n}\n// AGENT_PORT is an alias for RUNEYA_AGENT_PORT (used by e2e test-server and legacy tooling)\nif (process.env.AGENT_PORT && !process.env.RUNEYA_AGENT_PORT) {\n process.env.RUNEYA_AGENT_PORT = process.env.AGENT_PORT;\n}\n// --lan shortcut sets host to 0.0.0.0; --host flag takes priority over HOST env var\nconst isLan = args.includes('--lan');\nconst hostFlag = getFlagValue(['--host']);\nconst isLanProxy = isLan || process.env.RUNEYA_LAN_PROXY === 'true' || process.env.RUNEYA_LAN_PROXY === '1';\nif (hostFlag) {\n process.env.HOST = hostFlag;\n} else if (isLanProxy) {\n process.env.HOST = '0.0.0.0';\n}\nif (isLanProxy) {\n process.env.RUNEYA_LAN_PROXY = 'true';\n}\n// Agent binary path (embedded in CLI dist during build)\nprocess.env.AGENT_BINARY_PATH = join(__dirname, 'agent/index.js');\n\n// --agent mode: run as standalone agent only (no server, no UI)\nconst isAgentOnly = args.includes('--agent');\nif (isAgentOnly) {\n const agentPort = getFlagValue(['--port']);\n const agentHost = getFlagValue(['--host']);\n if (agentPort) process.env.RUNEYA_AGENT_PORT = agentPort;\n // --host in agent mode binds the agent (default 127.0.0.1 — use --host 0.0.0.0 for remote access)\n // --lan also applies: sets agent host to 0.0.0.0 unless --host overrides it\n if (agentHost) {\n process.env.RUNEYA_AGENT_HOST = agentHost;\n } else if (isLanProxy) {\n process.env.RUNEYA_AGENT_HOST = '0.0.0.0';\n }\n}\n// Data directory defaults to CWD/.runeya (server env.ts default)\n// so Runeya data lives alongside the target project.\n\n/**\n * Listen with retry for EADDRINUSE — handles the race condition when the CLI\n * restarts the server before the old process has fully released the port.\n *\n * The `wss` parameter is needed because the `ws` library re-emits HTTP server\n * errors on the WebSocketServer — without a handler the error becomes unhandled.\n */\nfunction listenWithRetry(\n server: Server,\n port: number,\n host: string,\n wss?: WebSocketServer,\n maxRetries = 20,\n delay = 500,\n): Promise<void> {\n return new Promise((resolve, reject) => {\n let attempts = 0;\n\n // Absorb EADDRINUSE errors re-emitted by the ws library on the WSS\n // during the retry window. Without this, Node.js crashes on unhandled error.\n const wssErrorHandler = () => { /* absorbed — handled via server 'error' */ };\n wss?.on('error', wssErrorHandler);\n\n const tryListen = () => {\n const onError = (err: NodeJS.ErrnoException) => {\n // Clean up the 'listening' callback that server.listen() registered\n server.removeAllListeners('listening');\n\n if (err.code === 'EADDRINUSE' && attempts < maxRetries) {\n attempts++;\n console.log(`[cli] Port ${port} in use, retrying in ${delay}ms (${attempts}/${maxRetries})...`);\n setTimeout(tryListen, delay);\n } else {\n wss?.removeListener('error', wssErrorHandler);\n reject(err);\n }\n };\n\n server.once('error', onError);\n server.listen(port, host, () => {\n server.removeListener('error', onError);\n wss?.removeListener('error', wssErrorHandler);\n resolve();\n });\n };\n\n tryListen();\n });\n}\n\nasync function main() {\n // Dynamic import ensures env is parsed AFTER we configure it\n const { createLocalServer, pullEnv, PullEnvError } = await import('@runeya/apps-server');\n\n // Handle --pull-env mode: resolve env vars and print, then exit\n if (isPullEnv) {\n if (!serviceArg) {\n console.error('Error: --service (-s) is required with --pull-env');\n process.exit(1);\n }\n if (!environmentArg) {\n console.error('Error: --environment (-e) is required with --pull-env');\n process.exit(1);\n }\n try {\n const output = await pullEnv({ service: serviceArg, environment: environmentArg });\n if (output) process.stdout.write(output + '\\n');\n process.exit(0);\n } catch (err: unknown) {\n if (err instanceof PullEnvError) {\n console.error(`Error: ${err.message}`);\n process.exit(err.exitCode);\n }\n throw err;\n }\n }\n\n // --agent mode: standalone agent, no server, no UI\n if (isAgentOnly) {\n const { spawn } = await import('node:child_process');\n const agentBin = join(__dirname, 'agent/index.js');\n const child = spawn(process.execPath, [agentBin], { stdio: 'inherit' });\n child.on('exit', (code) => process.exit(code ?? 0));\n // SIGINT is already delivered to the child by the terminal (same process group).\n // Intercept it here only to suppress Node's default exit so we stay alive\n // until the child finishes its graceful shutdown.\n process.on('SIGINT', () => { /* wait for child to exit */ });\n process.on('SIGTERM', () => child.kill('SIGTERM'));\n return;\n }\n\n console.log('[cli] Starting Runeya...');\n\n // Create server (automatically spawns local agent)\n const { app, server, wss, shutdown } = await createLocalServer();\n\n // Serve static files from web frontend (embedded in CLI dist during build)\n const webDistPath = join(__dirname, 'web');\n app.use(express.static(webDistPath));\n\n // Fallback to index.html for client-side routing (Vue Router)\n // Express 5 requires explicit path patterns (not '*')\n app.use((_req: Request, res: Response) => {\n res.sendFile(join(webDistPath, 'index.html'));\n });\n\n // Start server — RUNEYA_HTTP_PORT takes priority over PORT\n const port = resolvePort();\n const host = process.env.HOST ?? '127.0.0.1';\n\n await listenWithRetry(server, port, host, wss);\n\n const appUrl = `http://${host}:${port}`;\n\n if (!noOpen) {\n await open(appUrl);\n }\n\n console.log('\\n🚀 Runeya is running!');\n if (isLanProxy) {\n console.log('🌐 LAN mode: server and service ports exposed on local network');\n }\n printStartupTable(port, appUrl);\n console.log('[cli] Press Ctrl+C to stop');\n\n let shuttingDown = false;\n const gracefulShutdown = async (signal: string) => {\n if (shuttingDown) {\n console.log(`[cli] Forced exit (second ${signal})`);\n process.exit(1);\n }\n shuttingDown = true;\n console.log(`\\n[cli] Received ${signal}, shutting down gracefully...`);\n\n // In dev, exit immediately — ports are freed on process death,\n // and the 'exit' handler in agent-spawner SIGKILLs the agent.\n if (process.env.NODE_ENV === 'development') {\n process.exit(0);\n }\n\n await shutdown();\n console.log('[cli] Shutdown complete');\n process.exit(0);\n };\n\n process.on('SIGTERM', () => gracefulShutdown('SIGTERM'));\n process.on('SIGINT', () => gracefulShutdown('SIGINT'));\n}\n\nmain().catch((err) => {\n console.error('[cli] Fatal error:', err);\n process.exit(1);\n});\n","/**\n * Resolve the HTTP port Runeya should listen on.\n *\n * Priority: RUNEYA_HTTP_PORT > PORT > 4000 (default)\n *\n * Throws if the resolved value is not an integer in [1, 65535].\n */\nexport function resolvePort(): number {\n const raw = process.env.RUNEYA_HTTP_PORT ?? process.env.PORT;\n if (raw === undefined) return 4000;\n\n const port = Number(raw);\n if (!Number.isInteger(port) || port < 1 || port > 65535) {\n throw new Error(\n `Invalid port: ${JSON.stringify(raw)}. Must be an integer between 1 and 65535.`,\n );\n }\n return port;\n}\n"],"mappings":";;;AAIA,SAAS,eAAe,OAAO,eAAe;AAC9C,SAAS,SAAS,MAAM,eAAe;AACvC,SAAS,oBAAoB;AAC7B,OAAO,aAAa;AACpB,OAAO,YAAY;AACnB,OAAO,UAAU;;;ACFV,SAAS,cAAsB;AACpC,QAAM,MAAM,QAAQ,IAAI,oBAAoB,QAAQ,IAAI;AACxD,MAAI,QAAQ,OAAW,QAAO;AAE9B,QAAM,OAAO,OAAO,GAAG;AACvB,MAAI,CAAC,OAAO,UAAU,IAAI,KAAK,OAAO,KAAK,OAAO,OAAO;AACvD,UAAM,IAAI;AAAA,MACR,iBAAiB,KAAK,UAAU,GAAG,CAAC;AAAA,IACtC;AAAA,EACF;AACA,SAAO;AACT;;;ADNA,IAAM,YAAY,QAAQ,cAAc,YAAY,GAAG,CAAC;AAExD,IAAM,EAAE,QAAQ,IAAI,KAAK;AAAA,EACvB,aAAa,IAAI,QAAQ,mBAAmB,YAAY,GAAG,GAAG,MAAM;AACtE;AAEA,SAAS,kBAAkB,MAAc,QAAsB;AAC7D,QAAM,OAA2B;AAAA,IAC/B,CAAC,WAAW,OAAO;AAAA,IACnB,CAAC,QAAQ,OAAO,IAAI,CAAC;AAAA,IACrB,CAAC,OAAO,MAAM;AAAA,EAChB;AAEA,QAAM,OAAO,KAAK,IAAI,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC;AACpD,QAAM,OAAO,KAAK,IAAI,GAAG,KAAK,IAAI,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;AAEtD,QAAM,MAAM,CAAC,GAAW,MAAc,EAAE,OAAO,CAAC;AAChD,QAAM,KAAK,CAAC,GAAW,GAAW,GAAW,MAC3C,IAAI,EAAE,OAAO,OAAO,CAAC,IAAI,IAAI,EAAE,OAAO,OAAO,CAAC,IAAI;AAEpD,UAAQ,IAAI,EAAE;AACd,UAAQ,IAAI,GAAG,UAAK,UAAK,UAAK,QAAG,CAAC;AAClC,aAAW,CAAC,KAAK,KAAK,KAAK,MAAM;AAC/B,YAAQ,IAAI,UAAK,IAAI,KAAK,IAAI,CAAC,WAAM,IAAI,OAAO,IAAI,CAAC,SAAI;AAAA,EAC3D;AACA,UAAQ,IAAI,GAAG,UAAK,UAAK,UAAK,QAAG,CAAC;AAClC,UAAQ,IAAI,EAAE;AAChB;AAGA,IAAM,OAAO,QAAQ,KAAK,MAAM,CAAC;AAGjC,IAAM,kBAAkB,oBAAI,IAAI,CAAC,UAAU,UAAU,MAAM,iBAAiB,MAAM,WAAW,CAAC;AAC9F,IAAM,YAAY,KAAK,KAAK,CAAC,GAAG,MAAM,CAAC,EAAE,WAAW,GAAG,KAAK,CAAC,gBAAgB,IAAI,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;AACnG,IAAI,WAAW;AACb,QAAM,WAAW,QAAQ,SAAS;AAClC,UAAQ,MAAM,QAAQ;AACtB,UAAQ,IAAI,4BAA4B,QAAQ,EAAE;AACpD;AAEA,OAAO,OAAO;AAEd,IAAI,KAAK,SAAS,QAAQ,KAAK,KAAK,SAAS,IAAI,GAAG;AAClD,UAAQ,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAYb;AACC,UAAQ,KAAK,CAAC;AAChB;AAEA,IAAI,KAAK,SAAS,WAAW,GAAG;AAC9B,UAAQ,IAAI,OAAO;AACnB,UAAQ,KAAK,CAAC;AAChB;AAEA,IAAM,SACJ,KAAK,SAAS,WAAW,KACzB,CAAC,CAAC,QAAQ,IAAI,QAAQ,KACtB,CAAC,CAAC,QAAQ,IAAI,IAAI,KAClB,QAAQ,IAAI,UAAU,MAAM;AAG9B,IAAM,YAAY,KAAK,SAAS,YAAY,KAAK,KAAK,SAAS,MAAM;AAGrE,IAAI,WAAW;AACb,QAAM,WAAW,IAAI,MAAiB,QAAQ,OAAO,MAAM,EAAE,KAAK,GAAG,IAAI,IAAI;AAC7E,UAAQ,MAAM;AACd,UAAQ,OAAO;AACjB;AAEA,SAAS,aAAa,OAAqC;AACzD,aAAW,QAAQ,OAAO;AACxB,UAAM,MAAM,KAAK,QAAQ,IAAI;AAC7B,QAAI,QAAQ,MAAM,MAAM,IAAI,KAAK,OAAQ,QAAO,KAAK,MAAM,CAAC;AAAA,EAC9D;AACA,SAAO;AACT;AAEA,IAAM,aAAa,aAAa,CAAC,MAAM,WAAW,CAAC;AACnD,IAAM,iBAAiB,aAAa,CAAC,MAAM,eAAe,CAAC;AAI3D,IAAI,QAAQ,IAAI,oBAAoB,CAAC,QAAQ,IAAI,MAAM;AACrD,UAAQ,IAAI,OAAO,QAAQ,IAAI;AACjC;AAEA,IAAI,QAAQ,IAAI,cAAc,CAAC,QAAQ,IAAI,mBAAmB;AAC5D,UAAQ,IAAI,oBAAoB,QAAQ,IAAI;AAC9C;AAEA,IAAM,QAAQ,KAAK,SAAS,OAAO;AACnC,IAAM,WAAW,aAAa,CAAC,QAAQ,CAAC;AACxC,IAAM,aAAa,SAAS,QAAQ,IAAI,qBAAqB,UAAU,QAAQ,IAAI,qBAAqB;AACxG,IAAI,UAAU;AACZ,UAAQ,IAAI,OAAO;AACrB,WAAW,YAAY;AACrB,UAAQ,IAAI,OAAO;AACrB;AACA,IAAI,YAAY;AACd,UAAQ,IAAI,mBAAmB;AACjC;AAEA,QAAQ,IAAI,oBAAoB,KAAK,WAAW,gBAAgB;AAGhE,IAAM,cAAc,KAAK,SAAS,SAAS;AAC3C,IAAI,aAAa;AACf,QAAM,YAAY,aAAa,CAAC,QAAQ,CAAC;AACzC,QAAM,YAAY,aAAa,CAAC,QAAQ,CAAC;AACzC,MAAI,UAAW,SAAQ,IAAI,oBAAoB;AAG/C,MAAI,WAAW;AACb,YAAQ,IAAI,oBAAoB;AAAA,EAClC,WAAW,YAAY;AACrB,YAAQ,IAAI,oBAAoB;AAAA,EAClC;AACF;AAWA,SAAS,gBACP,QACA,MACA,MACA,KACA,aAAa,IACb,QAAQ,KACO;AACf,SAAO,IAAI,QAAQ,CAACA,UAAS,WAAW;AACtC,QAAI,WAAW;AAIf,UAAM,kBAAkB,MAAM;AAAA,IAA8C;AAC5E,SAAK,GAAG,SAAS,eAAe;AAEhC,UAAM,YAAY,MAAM;AACtB,YAAM,UAAU,CAAC,QAA+B;AAE9C,eAAO,mBAAmB,WAAW;AAErC,YAAI,IAAI,SAAS,gBAAgB,WAAW,YAAY;AACtD;AACA,kBAAQ,IAAI,cAAc,IAAI,wBAAwB,KAAK,OAAO,QAAQ,IAAI,UAAU,MAAM;AAC9F,qBAAW,WAAW,KAAK;AAAA,QAC7B,OAAO;AACL,eAAK,eAAe,SAAS,eAAe;AAC5C,iBAAO,GAAG;AAAA,QACZ;AAAA,MACF;AAEA,aAAO,KAAK,SAAS,OAAO;AAC5B,aAAO,OAAO,MAAM,MAAM,MAAM;AAC9B,eAAO,eAAe,SAAS,OAAO;AACtC,aAAK,eAAe,SAAS,eAAe;AAC5C,QAAAA,SAAQ;AAAA,MACV,CAAC;AAAA,IACH;AAEA,cAAU;AAAA,EACZ,CAAC;AACH;AAEA,eAAe,OAAO;AAEpB,QAAM,EAAE,mBAAmB,SAAS,aAAa,IAAI,MAAM,OAAO,oBAAqB;AAGvF,MAAI,WAAW;AACb,QAAI,CAAC,YAAY;AACf,cAAQ,MAAM,mDAAmD;AACjE,cAAQ,KAAK,CAAC;AAAA,IAChB;AACA,QAAI,CAAC,gBAAgB;AACnB,cAAQ,MAAM,uDAAuD;AACrE,cAAQ,KAAK,CAAC;AAAA,IAChB;AACA,QAAI;AACF,YAAM,SAAS,MAAM,QAAQ,EAAE,SAAS,YAAY,aAAa,eAAe,CAAC;AACjF,UAAI,OAAQ,SAAQ,OAAO,MAAM,SAAS,IAAI;AAC9C,cAAQ,KAAK,CAAC;AAAA,IAChB,SAAS,KAAc;AACrB,UAAI,eAAe,cAAc;AAC/B,gBAAQ,MAAM,UAAU,IAAI,OAAO,EAAE;AACrC,gBAAQ,KAAK,IAAI,QAAQ;AAAA,MAC3B;AACA,YAAM;AAAA,IACR;AAAA,EACF;AAGA,MAAI,aAAa;AACf,UAAM,EAAE,MAAM,IAAI,MAAM,OAAO,eAAoB;AACnD,UAAM,WAAW,KAAK,WAAW,gBAAgB;AACjD,UAAM,QAAQ,MAAM,QAAQ,UAAU,CAAC,QAAQ,GAAG,EAAE,OAAO,UAAU,CAAC;AACtE,UAAM,GAAG,QAAQ,CAAC,SAAS,QAAQ,KAAK,QAAQ,CAAC,CAAC;AAIlD,YAAQ,GAAG,UAAU,MAAM;AAAA,IAA+B,CAAC;AAC3D,YAAQ,GAAG,WAAW,MAAM,MAAM,KAAK,SAAS,CAAC;AACjD;AAAA,EACF;AAEA,UAAQ,IAAI,0BAA0B;AAGtC,QAAM,EAAE,KAAK,QAAQ,KAAK,SAAS,IAAI,MAAM,kBAAkB;AAG/D,QAAM,cAAc,KAAK,WAAW,KAAK;AACzC,MAAI,IAAI,QAAQ,OAAO,WAAW,CAAC;AAInC,MAAI,IAAI,CAAC,MAAe,QAAkB;AACxC,QAAI,SAAS,KAAK,aAAa,YAAY,CAAC;AAAA,EAC9C,CAAC;AAGD,QAAM,OAAO,YAAY;AACzB,QAAM,OAAO,QAAQ,IAAI,QAAQ;AAEjC,QAAM,gBAAgB,QAAQ,MAAM,MAAM,GAAG;AAE7C,QAAM,SAAS,UAAU,IAAI,IAAI,IAAI;AAErC,MAAI,CAAC,QAAQ;AACX,UAAM,KAAK,MAAM;AAAA,EACnB;AAEA,UAAQ,IAAI,iCAA0B;AACtC,MAAI,YAAY;AACd,YAAQ,IAAI,wEAAiE;AAAA,EAC/E;AACA,oBAAkB,MAAM,MAAM;AAC9B,UAAQ,IAAI,4BAA4B;AAExC,MAAI,eAAe;AACnB,QAAM,mBAAmB,OAAO,WAAmB;AACjD,QAAI,cAAc;AAChB,cAAQ,IAAI,6BAA6B,MAAM,GAAG;AAClD,cAAQ,KAAK,CAAC;AAAA,IAChB;AACA,mBAAe;AACf,YAAQ,IAAI;AAAA,iBAAoB,MAAM,+BAA+B;AAIrE,QAAI,QAAQ,IAAI,aAAa,eAAe;AAC1C,cAAQ,KAAK,CAAC;AAAA,IAChB;AAEA,UAAM,SAAS;AACf,YAAQ,IAAI,yBAAyB;AACrC,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,UAAQ,GAAG,WAAW,MAAM,iBAAiB,SAAS,CAAC;AACvD,UAAQ,GAAG,UAAU,MAAM,iBAAiB,QAAQ,CAAC;AACvD;AAEA,KAAK,EAAE,MAAM,CAAC,QAAQ;AACpB,UAAQ,MAAM,sBAAsB,GAAG;AACvC,UAAQ,KAAK,CAAC;AAChB,CAAC;","names":["resolve"]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import {
|
|
2
|
+
executeKanbanBoardCommands,
|
|
3
|
+
executeKanbanCommands,
|
|
4
|
+
generateKanbanPopulatePrompt,
|
|
5
|
+
generateKanbanSystemPrompt
|
|
6
|
+
} from "./chunk-32HTB3XS.js";
|
|
7
|
+
import "./chunk-ERJIU7R4.js";
|
|
8
|
+
export {
|
|
9
|
+
executeKanbanBoardCommands,
|
|
10
|
+
executeKanbanCommands,
|
|
11
|
+
generateKanbanPopulatePrompt,
|
|
12
|
+
generateKanbanSystemPrompt
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=kanban-commands-VEVMJTFS-OIYWEHUP.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@runeya/apps-cli",
|
|
3
|
+
"version": "0.1.2",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"bin": {
|
|
6
|
+
"runeya": "./index.js"
|
|
7
|
+
},
|
|
8
|
+
"repository": "https://github.com/runeya/runeya",
|
|
9
|
+
"dependencies": {
|
|
10
|
+
"@anthropic-ai/sdk": "^0.78.0",
|
|
11
|
+
"@modelcontextprotocol/sdk": "^1.27.1",
|
|
12
|
+
"@napi-rs/keyring": "^1.2.0",
|
|
13
|
+
"@node-rs/argon2": "^2.0.2",
|
|
14
|
+
"@trpc/server": "^11.11.0",
|
|
15
|
+
"cors": "^2.8.6",
|
|
16
|
+
"dotenv": "^17.3.1",
|
|
17
|
+
"esbuild": "^0.25.12",
|
|
18
|
+
"execa": "^9.6.1",
|
|
19
|
+
"express": "^5.2.1",
|
|
20
|
+
"express-rate-limit": "^8.2.1",
|
|
21
|
+
"jose": "^6.1.3",
|
|
22
|
+
"kill-port": "^2.0.1",
|
|
23
|
+
"mongodb": "^6.21.0",
|
|
24
|
+
"multer": "^1.4.5-lts.2",
|
|
25
|
+
"mysql2": "^3.20.0",
|
|
26
|
+
"node-pty": "^1.1.0",
|
|
27
|
+
"openai": "^6.25.0",
|
|
28
|
+
"pidusage": "^3.0.2",
|
|
29
|
+
"shellwords": "^0.1.1",
|
|
30
|
+
"trpc-to-openapi": "^3.1.0",
|
|
31
|
+
"tsup": "^8.5.1",
|
|
32
|
+
"ws": "^8.19.0",
|
|
33
|
+
"zod": "^4.3.6",
|
|
34
|
+
"zod-openapi": "^5.4.6"
|
|
35
|
+
}
|
|
36
|
+
}
|
package/dist/runeya
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{$i as e,Bi as t,Ca as n,Ea as r,Hi as i,Oa as a,Oi as o,Ui as s,Yi as c,_i as l,ai as u,ci as d,di as f,fi as p,ha as m,ka as h,li as g,mi as _,ra as v,ui as y,yi as b}from"./index-gfmcW9Sb.js";import{Ht as x,Q as S,Ut as C,V as w,Z as T,hn as E,un as D}from"./dist-CNJKy0Au.js";import{_ as O,g as k,h as A,m as j,p as M,v as N}from"./pretty-ms-CG-W6pSW.js";import{t as P}from"./store-BSUCffsu.js";import{t as F}from"./_plugin-vue_export-helper-C7ztIXtE.js";import{t as I}from"./useLayout-BtC8xLAa.js";import{t as L}from"./CodeInput.vue-Dyew7ml-.js";import{s as R}from"./mediaTypes-BtSbXDUA.js";var z={key:0},B={key:1},V={key:2},H={key:3},U={key:4},W={key:5},G=b({name:`ScalarIconPlay`,props:{label:{},weight:{}},setup(e){let{bind:r,weight:i}=D(e);return(e,a)=>(t(),p(`svg`,o({xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 256 256`,fill:`currentColor`},n(r)),[s(e.$slots,`default`),n(i)===`bold`?(t(),p(`g`,z,[...a[0]||=[g(`path`,{d:`M234.49,111.07,90.41,22.94A20,20,0,0,0,60,39.87V216.13a20,20,0,0,0,30.41,16.93l144.08-88.13a19.82,19.82,0,0,0,0-33.86ZM84,208.85V47.15L216.16,128Z`},null,-1)]])):n(i)===`duotone`?(t(),p(`g`,B,[...a[1]||=[g(`path`,{d:`M228.23,134.69,84.15,222.81A8,8,0,0,1,72,216.12V39.88a8,8,0,0,1,12.15-6.69l144.08,88.12A7.82,7.82,0,0,1,228.23,134.69Z`,opacity:`0.2`},null,-1),g(`path`,{d:`M232.4,114.49,88.32,26.35a16,16,0,0,0-16.2-.3A15.86,15.86,0,0,0,64,39.87V216.13A15.94,15.94,0,0,0,80,232a16.07,16.07,0,0,0,8.36-2.35L232.4,141.51a15.81,15.81,0,0,0,0-27ZM80,215.94V40l143.83,88Z`},null,-1)]])):n(i)===`fill`?(t(),p(`g`,V,[...a[2]||=[g(`path`,{d:`M240,128a15.74,15.74,0,0,1-7.6,13.51L88.32,229.65a16,16,0,0,1-16.2.3A15.86,15.86,0,0,1,64,216.13V39.87a15.86,15.86,0,0,1,8.12-13.82,16,16,0,0,1,16.2.3L232.4,114.49A15.74,15.74,0,0,1,240,128Z`},null,-1)]])):n(i)===`light`?(t(),p(`g`,H,[...a[3]||=[g(`path`,{d:`M231.36,116.19,87.28,28.06a14,14,0,0,0-14.18-.27A13.69,13.69,0,0,0,66,39.87V216.13a13.69,13.69,0,0,0,7.1,12.08,14,14,0,0,0,14.18-.27l144.08-88.13a13.82,13.82,0,0,0,0-23.62Zm-6.26,13.38L81,217.7a2,2,0,0,1-2.06,0,1.78,1.78,0,0,1-1-1.61V39.87a1.78,1.78,0,0,1,1-1.61A2.06,2.06,0,0,1,80,38a2,2,0,0,1,1,.31L225.1,126.43a1.82,1.82,0,0,1,0,3.14Z`},null,-1)]])):n(i)===`regular`?(t(),p(`g`,U,[...a[4]||=[g(`path`,{d:`M232.4,114.49,88.32,26.35a16,16,0,0,0-16.2-.3A15.86,15.86,0,0,0,64,39.87V216.13A15.94,15.94,0,0,0,80,232a16.07,16.07,0,0,0,8.36-2.35L232.4,141.51a15.81,15.81,0,0,0,0-27ZM80,215.94V40l143.83,88Z`},null,-1)]])):n(i)===`thin`?(t(),p(`g`,W,[...a[5]||=[g(`path`,{d:`M230.32,117.9,86.24,29.79a11.91,11.91,0,0,0-12.17-.23A11.71,11.71,0,0,0,68,39.89V216.11a11.71,11.71,0,0,0,6.07,10.33,11.91,11.91,0,0,0,12.17-.23L230.32,138.1a11.82,11.82,0,0,0,0-20.2Zm-4.18,13.37L82.06,219.39a4,4,0,0,1-4.07.07,3.77,3.77,0,0,1-2-3.35V39.89a3.77,3.77,0,0,1,2-3.35,4,4,0,0,1,4.07.07l144.08,88.12a3.8,3.8,0,0,1,0,6.54Z`},null,-1)]])):f(``,!0)],16))}}),K={100:{color:`text-yellow`},200:{color:`text-green`},202:{color:`text-green`},300:{color:`text-blue`},304:{color:`text-blue`},400:{color:`text-red`},401:{color:`text-orange`},422:{color:`text-yellow`},423:{color:`text-purple`},505:{color:`text-orange`}},q=e=>K[e]||{color:`text-grey`},J={class:`min-w-0`},Y={class:`text-c-1 min-w-0 truncate`},X=F(b({__name:`AddressBarHistory`,props:{operation:{},target:{}},setup(e){let{requestHistory:o}=P(),s=d(()=>o.filter(t=>t.request.requestUid===e.operation.uid).slice().reverse());function c(e){console.warn(`Restoring from the request history doesn't work yet. Request History Item:`,e)}return(o,d)=>(t(),y(n(N),{as:`div`},{default:v(({open:o})=>[l(n(S),{offset:0,resize:``,target:e.target},_({default:v(()=>[s.value?.length?(t(),y(n(k),{key:0,class:`address-bar-history-button z-context-plus text-c-3 focus:text-c-1 relative mr-1 rounded-lg p-1.5`},{default:v(()=>[l(n(w),{icon:`History`,size:`sm`,thickness:`2.25`}),d[0]||=g(`span`,{class:`sr-only`},`Request History`,-1)]),_:1})):f(``,!0)]),_:2},[o?{name:`floating`,fn:v(({width:e})=>[l(n(A),{class:`custom-scroll grid max-h-[inherit] grid-cols-[44px_1fr_repeat(3,auto)] items-center border-t p-0.75`,static:``,style:a({width:e})},{default:v(()=>[(t(!0),p(u,null,i(s.value,(e,i)=>(t(),y(n(O),{key:e.timestamp,as:`button`,class:`font-code ui-active:*:bg-b-2 text-c-2 contents text-sm font-medium *:flex *:h-8 *:cursor-pointer *:items-center *:rounded-none *:px-1.5 *:first:rounded-l *:last:rounded-r`,value:i,onClick:t=>c(e)},{default:v(()=>[e.response.method?(t(),y(R,{key:0,class:`text-[11px]`,method:e.response.method},null,8,[`method`])):f(``,!0),g(`div`,J,[g(`div`,Y,h(e.response.path),1)]),g(`div`,null,h(n(j)(e.response.duration)),1),g(`div`,{class:r([n(q)(e.response.status).color])},h(e.response.status),3),g(`div`,null,h(n(x)[e.response.status]?.name),1)]),_:2},1032,[`value`,`onClick`]))),128))]),_:1},8,[`style`]),l(n(T),{class:`-top-(--scalar-address-bar-height) rounded-lg`})]),key:`0`}:void 0]),1032,[`target`])]),_:1}))}}),[[`__scopeId`,`data-v-a93fa60f`]]),Z=[`id`],Q={class:`address-bar-bg-states text-xxs group relative order-last flex w-full max-w-[calc(100dvw-24px)] flex-1 flex-row items-stretch rounded-lg p-0.75 lg:order-none lg:max-w-[580px] lg:min-w-[580px] xl:max-w-[720px] xl:min-w-[720px]`},$={class:`pointer-events-none absolute top-0 left-0 block h-full w-full overflow-hidden rounded-lg border`},ee={class:`z-context-plus flex gap-1`},te={class:`scroll-timeline-x scroll-timeline-x-hidden z-context-plus relative flex w-full bg-blend-normal`},ne={"aria-hidden":`true`,class:`inline-flex items-center gap-1`},re={class:`sr-only`},ie=F(b({__name:`AddressBar`,props:{collection:{},operation:{},server:{},environment:{},envVariables:{},workspace:{}},emits:[`importCurl`],setup(r){let i=c(),{requestMutators:o,events:s}=P(),{layout:u}=I(),d=m(null),_=m(null),b=e=>{r.operation.path!==e&&o.edit(r.operation.uid,`path`,e)};e(()=>r.operation.path,e=>{e&&b(e)});let x=m(100),S=m(0),w=m(!1),T=m();function D(){w.value?x.value-=(x.value-15)/60:x.value-=S.value/20,x.value<=0&&(clearInterval(T.value),T.value=void 0,x.value=100,w.value=!1)}function O(){T.value||=(w.value=!0,setInterval(D,20))}function k(){S.value=x.value,w.value=!1}function A(){clearInterval(T.value),T.value=void 0,x.value=100,w.value=!1}s.requestStatus.on(e=>{if(e===`start`)return O();if(e===`stop`)return k();if(e===`abort`)return A()}),s.focusAddressBar.on(()=>{u===`modal`?_.value?.$el?.focus():d.value?.focus()});function j(e){o.edit(r.operation.uid,`method`,e)}function N(){let{method:e}=r.operation;return C[e].colorVar}function F(){w.value||(w.value=!0,s.executeRequest.emit({requestUid:r.operation.uid}))}s.hotKeys.on(e=>{e?.focusAddressBar&&d.value?.focus(),e?.executeRequest&&F()});function z(e){o.edit(r.operation.uid,`path`,e)}return(e,o)=>(t(),p(`div`,{id:n(i),class:`scalar-address-bar order-last flex h-(--scalar-address-bar-height) w-full [--scalar-address-bar-height:32px] lg:order-none lg:w-auto`},[g(`div`,Q,[g(`div`,$,[g(`div`,{class:`absolute top-0 left-0 z-[1002] h-full w-full`,style:a({backgroundColor:`color-mix(in srgb, transparent 90%, ${N()})`,transform:`translate3d(-${x.value}%,0,0)`})},null,4)]),g(`div`,ee,[l(R,{isEditable:n(u)!==`modal`,isSquare:``,method:r.operation.method,teleport:``,onChange:j},null,8,[`isEditable`,`method`])]),g(`div`,te,[r.collection.servers.length?(t(),y(n(M),{key:0,collection:r.collection,layout:`client`,operation:r.operation,server:r.server,target:n(i)},null,8,[`collection`,`operation`,`server`,`target`])):f(``,!0),o[1]||=g(`div`,{class:`fade-left`},null,-1),l(L,{ref_key:`addressBarRef`,ref:d,"aria-label":`Path`,class:`min-w-fit outline-none`,disableCloseBrackets:``,disabled:n(u)===`modal`,disableEnter:``,disableTabIndent:``,emitOnBlur:!1,envVariables:r.envVariables,environment:r.environment,importCurl:``,modelValue:r.operation.path,placeholder:r.server?.uid&&r.collection.servers.includes(r.server.uid)?``:`Enter a URL or cURL command`,server:``,workspace:r.workspace,onCurl:o[0]||=t=>e.$emit(`importCurl`,t),onSubmit:F,"onUpdate:modelValue":z},null,8,[`disabled`,`envVariables`,`environment`,`modelValue`,`placeholder`,`workspace`]),o[2]||=g(`div`,{class:`fade-right`},null,-1)]),l(X,{operation:r.operation,target:n(i)},null,8,[`operation`,`target`]),l(n(E),{ref_key:`sendButtonRef`,ref:_,class:`z-context-plus relative h-auto shrink-0 overflow-hidden py-1 pr-2.5 pl-2 font-bold`,disabled:w.value,onClick:F},{default:v(()=>[g(`span`,ne,[l(n(G),{class:`relative shrink-0`,size:`xs`,weight:`fill`}),o[3]||=g(`span`,{class:`text-xxs hidden lg:flex`},`Send`,-1)]),g(`span`,re,` Send `+h(r.operation.method)+` request to `+h(r.server?.url??``)+h(r.operation.path),1)]),_:1},8,[`disabled`])])],8,Z))}}),[[`__scopeId`,`data-v-cb2a35da`]]);export{G as n,ie as t};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{$i as e,A as t,Bi as n,Ca as r,Cn as i,Dn as a,Ea as o,Gi as s,Gn as c,H as l,Hi as u,Ii as d,Ri as ee,Tn as f,Wn as p,Yn as m,_i as h,ai as g,ci as _,di as v,fi as y,gi as b,ha as x,hn as S,ia as C,ka as w,ki as T,li as E,ni as te,q as D,ra as O,rt as k,ui as A,yi as j}from"./index-gfmcW9Sb.js";import{t as M}from"./tag-BsP7PdQ9.js";import{n as N,t as P}from"./column-CE6TbiAC.js";import{t as ne}from"./password-B0kJu8RE.js";import{t as F}from"./autocomplete-Bx5M86A5.js";import{t as I}from"./toggleswitch-C0fuTzJt.js";var L={class:`traefik-settings`},R={class:`traefik-row`},z={class:`traefik-row`},re={class:`traefik-field`},ie={class:`traefik-field`},ae={class:`traefik-field`},oe={class:`traefik-field`},B={key:0,class:`hint-ok`},se=[`href`],V={class:`traefik-ports`},ce={class:`traefik-field traefik-field--small`},le={class:`traefik-field traefik-field--small`},ue={class:`traefik-actions`},de={key:1,class:`traefik-renewal-notice`},H={key:2,class:`traefik-validation`},U={key:3,class:`traefik-config-files`},W={class:`traefik-logs-header`},fe={class:`config-tabs`},G={class:`traefik-logs-content`},pe={key:4,class:`traefik-logs`},K={class:`traefik-logs-header`},q=i(j({__name:`TraefikSettings`,props:{agentId:{}},emits:[`saved`],setup(t,{emit:i}){let s=`acmedns.alidns.allinkl.arvancloud.autodns.azure.azuredns.bindman.bluecat.brandit.bunny.checkdomain.civo.clouddns.cloudflare.cloudns.cloudxns.conoha.constellix.cpanel.desec.designate.digitalocean.dnshomede.dnsimple.dnsmadeeasy.dnsover.dnspod.dode.domeneshop.dreamhost.duckdns.dyn.dynu.easydns.edgedns.efficientip.epik.exoscale.freemyip.gandi.gandiv5.gcloud.gcore.glesys.godaddy.hetzner.hostingde.hosttech.httpnet.huaweicloud.hurricane.hyperone.ibmcloud.iij.iijdpf.infoblox.infomaniak.internetbs.inwx.ionos.ipv64.iwantmyname.joker.linode.liquidweb.loopia.luadns.mailinabox.metaname.mydnsjp.mythicbeasts.namecheap.namedotcom.namesilo.nearlyfreespeech.netcup.netlify.nicmanager.nifcloud.njalla.nodion.ns1.openstack.oracle.otc.ovh.pdns.plesk.porkbun.rackspace.radix.rcodezero.regru.rfc2136.route53.sakuracloud.scaleway.selectel.servercow.simply.sonic.stackpath.tencentcloud.transip.ultradns.variomedia.vegadns.versio.vinyldns.vkcloud.vscale.vultr.webnames.websupport.wedos.yandex.yandex360.zoneee.zonomi`.split(`.`),c=x([]);function l(e){let t=e.query.toLowerCase();c.value=t?s.filter(e=>e.includes(t)):s.slice(0,20)}let d=t,f=i,p=x({enabled:!1,acmeEmail:``,wildcardDomain:``,httpPort:80,httpsPort:443,dnsProvider:``,acmeStaging:!1}),m=x([]),C=x(!1),te=x(!1),O=x(!1),k=x(null),A=x(!1),j=x(!1),M=x(!1),N=x(null),P=x(`static`);async function q(){if(N.value){N.value=null;return}try{N.value=await S.settings.getAgentTraefikConfigFiles.query({agentId:d.agentId})}catch{N.value={static:`(erreur)`,dynamic:`(erreur)`}}}let J=x(null),Y=x(null),X=null;_(()=>k.value?.some(e=>e.id===`ssl_cert`&&!e.ok)??!1);function Z(){Q(),J.value=[];let e=S.settings.streamAgentTraefikLogs.subscribe({agentId:d.agentId},{onData(e){J.value=[...J.value??[],...e.lines],T(()=>{Y.value&&(Y.value.scrollTop=Y.value.scrollHeight)})}});X=()=>e.unsubscribe()}function Q(){X?.(),X=null}ee(Q);async function me(){let e=await S.settings.getAgentTraefikConfig.query({agentId:d.agentId});p.value.enabled=e.enabled,p.value.acmeEmail=e.acmeEmail??``,p.value.wildcardDomain=e.wildcardDomain??``,p.value.httpPort=e.httpPort,p.value.httpsPort=e.httpsPort,p.value.dnsProvider=e.dnsProvider??``,p.value.acmeStaging=e.acmeStaging??!1,C.value=e.hasDnsCredentials,m.value=(e.dnsCredentialKeys??[]).map(e=>({key:e,value:``}))}e(()=>d.agentId,me,{immediate:!0});function he(){m.value=[...m.value,{key:``,value:``}]}function $(e){m.value=m.value.filter((t,n)=>n!==e)}async function ge(){j.value=!0;try{await S.settings.restartAgentTraefik.mutate({agentId:d.agentId}),Z()}finally{j.value=!1}}async function _e(){A.value=!0,k.value=null,M.value=!1;try{await S.settings.renewAgentTraefikCert.mutate({agentId:d.agentId}),M.value=!0,Z(),setTimeout(()=>ve(),1e4)}finally{A.value=!1}}async function ve(){O.value=!0,k.value=null,M.value=!1;try{k.value=(await S.settings.validateAgentTraefikConfig.query({agentId:d.agentId})).checks}finally{O.value=!1}}async function ye(){te.value=!0;try{let e={};for(let{key:t,value:n}of m.value)t.trim()&&n.trim()&&(e[t.trim()]=n);await S.settings.updateAgentTraefikConfig.mutate({agentId:d.agentId,enabled:p.value.enabled,acmeEmail:p.value.acmeEmail||void 0,wildcardDomain:p.value.wildcardDomain||void 0,httpPort:p.value.httpPort,httpsPort:p.value.httpsPort,dnsProvider:p.value.dnsProvider||void 0,acmeStaging:p.value.acmeStaging,...Object.keys(e).length>0&&{dnsCredentials:e}}),Object.keys(e).length>0&&(C.value=!0,m.value=m.value.map(e=>({key:e.key,value:``}))),f(`saved`)}finally{te.value=!1}}return(e,t)=>(n(),y(`div`,L,[E(`div`,R,[t[11]||=E(`span`,null,`Activer Traefik`,-1),h(r(I),{modelValue:p.value.enabled,"onUpdate:modelValue":t[0]||=e=>p.value.enabled=e},null,8,[`modelValue`])]),p.value.enabled?(n(),y(g,{key:0},[E(`div`,z,[t[12]||=E(`span`,null,[b(` Let's Encrypt staging `),E(`small`,{style:{display:`block`,color:`var(--p-text-muted-color)`}},`Certificats de test, pas de limite de taux`)],-1),h(r(I),{modelValue:p.value.acmeStaging,"onUpdate:modelValue":t[1]||=e=>p.value.acmeStaging=e},null,8,[`modelValue`])]),E(`div`,re,[t[13]||=E(`label`,null,`Domaine wildcard`,-1),h(r(D),{modelValue:p.value.wildcardDomain,"onUpdate:modelValue":t[2]||=e=>p.value.wildcardDomain=e,placeholder:`*.local.mondomaine.com`},null,8,[`modelValue`]),t[14]||=E(`small`,null,[b(`Enregistrement DNS requis : `),E(`code`,null,`*.local.mondomaine.com A 127.0.0.1`)],-1)]),E(`div`,ie,[t[15]||=E(`label`,null,`Email ACME (Let's Encrypt)`,-1),h(r(D),{modelValue:p.value.acmeEmail,"onUpdate:modelValue":t[3]||=e=>p.value.acmeEmail=e,placeholder:`contact@mondomaine.com`},null,8,[`modelValue`])]),E(`div`,ae,[t[16]||=E(`label`,null,`Provider DNS`,-1),h(r(F),{modelValue:p.value.dnsProvider,"onUpdate:modelValue":t[4]||=e=>p.value.dnsProvider=e,suggestions:c.value,placeholder:`cloudflare`,dropdown:``,onComplete:l},null,8,[`modelValue`,`suggestions`]),t[17]||=E(`small`,null,[b(` Identifiant lego du provider — `),E(`a`,{href:`https://go-acme.github.io/lego/dns/index.html`,target:`_blank`,rel:`noopener`},`liste complète`)],-1)]),E(`div`,oe,[E(`label`,null,[t[18]||=b(` Variables d'environnement du provider DNS `,-1),C.value&&m.value.length===0?(n(),y(`span`,B,`✓ configurées`)):v(``,!0)]),E(`small`,null,[t[19]||=b(` Variables requises par le provider. `,-1),p.value.dnsProvider&&s.includes(p.value.dnsProvider)?(n(),y(`a`,{key:0,href:`https://go-acme.github.io/lego/dns/${p.value.dnsProvider}/`,target:`_blank`,rel:`noopener`},` Voir les variables pour `+w(p.value.dnsProvider),9,se)):v(``,!0),t[20]||=b(` Stockées chiffrées — les valeurs ne sont jamais relues. `,-1)]),(n(!0),y(g,null,u(m.value,(e,t)=>(n(),y(`div`,{key:t,class:`credential-row`},[h(r(D),{modelValue:e.key,"onUpdate:modelValue":t=>e.key=t,placeholder:`NOM_VARIABLE`,class:`credential-key`},null,8,[`modelValue`,`onUpdate:modelValue`]),h(r(ne),{modelValue:e.value,"onUpdate:modelValue":t=>e.value=t,placeholder:C.value?`••••••••`:`valeur`,feedback:!1,"toggle-mask":``,class:`credential-value`},null,8,[`modelValue`,`onUpdate:modelValue`,`placeholder`]),h(r(a),{icon:`pi pi-trash`,severity:`danger`,text:``,size:`small`,onClick:e=>$(t)},null,8,[`onClick`])]))),128)),h(r(a),{icon:`pi pi-plus`,label:`Ajouter une variable`,size:`small`,outlined:``,onClick:he})]),E(`div`,V,[E(`div`,ce,[t[21]||=E(`label`,null,`Port HTTP`,-1),h(r(D),{modelValue:p.value.httpPort,"onUpdate:modelValue":t[5]||=e=>p.value.httpPort=e,modelModifiers:{number:!0}},null,8,[`modelValue`])]),E(`div`,le,[t[22]||=E(`label`,null,`Port HTTPS`,-1),h(r(D),{modelValue:p.value.httpsPort,"onUpdate:modelValue":t[6]||=e=>p.value.httpsPort=e,modelModifiers:{number:!0}},null,8,[`modelValue`])])])],64)):v(``,!0),E(`div`,ue,[h(r(a),{label:`Enregistrer`,icon:`pi pi-save`,loading:te.value,onClick:ye},null,8,[`loading`]),h(r(a),{label:`Redémarrer`,icon:`pi pi-refresh`,severity:`secondary`,loading:j.value,onClick:ge},null,8,[`loading`]),h(r(a),{label:`Réémettre cert`,icon:`pi pi-shield`,severity:`warning`,loading:A.value,onClick:_e},null,8,[`loading`]),h(r(a),{label:`Config`,icon:`pi pi-file-edit`,severity:`secondary`,onClick:q}),h(r(a),{label:`Logs`,icon:`pi pi-align-left`,severity:`secondary`,onClick:Z}),h(r(a),{label:`Vérifier`,icon:`pi pi-check-circle`,severity:`secondary`,loading:O.value,onClick:ve},null,8,[`loading`])]),M.value?(n(),y(`div`,de,[...t[23]||=[E(`i`,{class:`pi pi-spin pi-spinner`},null,-1),E(`span`,null,[b(`Challenge DNS-01 en cours — le certificat peut prendre `),E(`strong`,null,`1 à 3 minutes`),b(` selon la propagation DNS. Suivez les logs ci-dessous puis cliquez sur `),E(`strong`,null,`Vérifier`),b(`.`)],-1)]])):v(``,!0),k.value?(n(),y(`div`,H,[(n(!0),y(g,null,u(k.value,e=>(n(),y(`div`,{key:e.id,class:o([`validation-item`,e.ok?`validation-item--ok`:`validation-item--fail`])},[E(`i`,{class:o(e.ok?`pi pi-check`:`pi pi-times`)},null,2),E(`span`,null,w(e.message),1)],2))),128))])):v(``,!0),N.value?(n(),y(`div`,U,[E(`div`,W,[E(`div`,fe,[E(`button`,{class:o([`config-tab`,P.value===`static`&&`config-tab--active`]),onClick:t[7]||=e=>P.value=`static`},`traefik.yml`,2),E(`button`,{class:o([`config-tab`,P.value===`dynamic`&&`config-tab--active`]),onClick:t[8]||=e=>P.value=`dynamic`},`services.yml`,2)]),h(r(a),{icon:`pi pi-times`,text:``,size:`small`,onClick:t[9]||=e=>N.value=null})]),E(`pre`,G,w(P.value===`static`?N.value.static:N.value.dynamic),1)])):v(``,!0),J.value===null?v(``,!0):(n(),y(`div`,pe,[E(`div`,K,[t[24]||=E(`span`,null,[b(`Logs Traefik `),E(`span`,{class:`logs-live`},`● live`)],-1),h(r(a),{icon:`pi pi-times`,text:``,size:`small`,onClick:t[10]||=e=>{Q(),J.value=null}})]),E(`pre`,{ref_key:`logsEl`,ref:Y,class:`traefik-logs-content`},w(J.value.join(`
|
|
2
|
+
`)||`(en attente de logs…)`),513)]))]))}}),[[`__scopeId`,`data-v-9b0684d2`]]),J={class:`traefik-dialog-layout`},Y={class:`traefik-dialog-left`},X={class:`traefik-dialog-right`},Z={class:`fs-header`},Q={class:`fs-tree`},me=[`onClick`],he={class:`fs-dir`},$={class:`fs-name`},ge={key:0,class:`fs-empty`},_e={key:0,class:`fs-content`},ve=i(j({__name:`TraefikDialog`,props:{agentId:{}},setup(t){let i=t,s=x([]),c=x(null),l=x(!1);async function d(){l.value=!0;try{let e=await S.settings.getAgentTraefikFileTree.query({agentId:i.agentId});s.value=e,e.length>0&&!c.value&&(c.value=e[0])}catch{s.value=[]}finally{l.value=!1}}e(()=>i.agentId,d,{immediate:!0});function ee(e){return e.split(`/`).filter(Boolean).pop()??e}function f(e){let t=e.split(`/`).filter(Boolean);return t.length>1?t.slice(0,-1).join(`/`)+`/`:``}return(e,i)=>(n(),y(`div`,J,[E(`div`,Y,[h(q,{"agent-id":t.agentId,onSaved:d},null,8,[`agent-id`])]),E(`div`,X,[E(`div`,Z,[i[0]||=E(`span`,null,`~/.runeya/traefik/`,-1),h(r(a),{icon:`pi pi-refresh`,text:``,size:`small`,loading:l.value,onClick:d},null,8,[`loading`])]),E(`div`,Q,[(n(!0),y(g,null,u(s.value,e=>(n(),y(`button`,{key:e.path,class:o([`fs-entry`,{"fs-entry--active":c.value?.path===e.path}]),onClick:t=>c.value=e},[i[1]||=E(`i`,{class:`pi pi-file fs-icon`},null,-1),E(`span`,he,w(f(e.path)),1),E(`span`,$,w(ee(e.path)),1)],10,me))),128)),s.value.length===0&&!l.value?(n(),y(`div`,ge,` Aucun fichier — démarrez Traefik d'abord `)):v(``,!0)]),c.value?(n(),y(`pre`,_e,w(c.value.content),1)):v(``,!0)])]))}}),[[`__scopeId`,`data-v-9ce779b4`]]),ye={class:`agent-page`},be={class:`page-header`},xe={key:0,class:`loading-container`},Se={key:1,class:`error-container`},Ce={key:2,class:`empty-container`},we={class:`agent-name`},Te={class:`agent-url`},Ee={key:0},De={key:1,class:`text-muted`},Oe={class:`runner-tags`},ke={key:0,class:`text-muted`},Ae={class:`passthrough-description`},je={key:0,class:`passthrough-list`},Me={class:`passthrough-item-info`},Ne={key:0,class:`passthrough-value`},Pe={key:1,class:`passthrough-undefined`},Fe={key:2,class:`passthrough-unsaved`},Ie={key:1,class:`text-muted passthrough-empty`},Le={class:`passthrough-add`},Re={key:2,class:`passthrough-error`},ze={class:`form-group`},Be={for:`agent-name`},Ve={class:`form-group`},He={for:`agent-url`},Ue={class:`form-hint`},We={class:`form-group`},Ge={for:`agent-passphrase`},Ke={class:`form-hint`},qe={class:`form-group test-connection`},Je=i(j({__name:`AgentPage`,setup(e){let i=c(),o=p(),T=l(),{t:j}=m(),F=x(!1),I=x(!1),L=x(null),R=x({name:``,url:``,passphrase:``}),z=_(()=>L.value!==null),re=_(()=>z.value?j(`agentPage.dialog.editHeader`):j(`agentPage.dialog.registerHeader`)),ie=_(()=>z.value?j(`actions.save`):j(`agentPage.registerAgent`)),ae=_(()=>{let{name:e,url:t,passphrase:n}=R.value;return!(!e.trim()||!t.trim()||!z.value&&!n.trim())}),oe=x(!1),B=x(null),se=_(()=>{let{url:e,passphrase:t}=R.value;return e.trim()?!!t.trim()||z.value:!1}),V=x(!1),ce=x(!1),le=x(null),ue=x(``);function de(e){le.value=e.config.id,ue.value=e.config.name,ce.value=!0}let H=x(!1),U=x(!1),W=x(null),fe=x(``),G=x([]),pe=x(new Set),K=x({}),q=x(``),J=/^[A-Za-z_][A-Za-z0-9_]*$/,Y=_(()=>{let e=q.value.trim();return e?J.test(e)?G.value.includes(e)?j(`agentPage.passthrough.alreadyInList`):``:j(`agentPage.passthrough.invalidVarName`):``}),X=_(()=>q.value.trim().length>0&&!Y.value);async function Z(e){W.value=e.config.id,fe.value=e.config.name;let t=e.config.passthroughEnv??[];G.value=[...t],pe.value=new Set(t),K.value={},q.value=``,V.value=!0,U.value=!0;try{K.value=await S.agent.getPassthroughEnv.query({id:e.config.id})}catch{}finally{U.value=!1}}function Q(){let e=q.value.trim();!e||Y.value||(G.value=[...G.value,e],q.value=``)}function me(e){G.value=G.value.filter((t,n)=>n!==e)}async function he(){if(W.value){H.value=!0;try{await T.updatePassthroughEnv(W.value,G.value),i.add({severity:`success`,summary:j(`agentPage.passthrough.updated`),life:3e3}),V.value=!1}catch(e){i.add({severity:`error`,summary:j(`common.error`),detail:k(e)??j(`agentPage.passthrough.saveFailed`),life:5e3})}finally{H.value=!1}}}let $=null;function ge(e){return e<60?`${Math.floor(e)}s`:e<3600?`${Math.floor(e/60)}m`:`${Math.floor(e/3600)}h ${Math.floor(e%3600/60)}m`}function _e(e){return e?new Date(e).toLocaleString(void 0,{month:`short`,day:`numeric`,hour:`2-digit`,minute:`2-digit`,second:`2-digit`}):j(`agentPage.never`)}function Je(){L.value=null,R.value={name:``,url:``,passphrase:``},B.value=null,F.value=!0}function Ye(e){L.value=e.config.id,R.value={name:e.config.name,url:e.config.url,passphrase:``},B.value=null,F.value=!0}async function Xe(){oe.value=!0,B.value=null;try{let e={url:R.value.url.trim()};R.value.passphrase.trim()&&(e.passphrase=R.value.passphrase.trim()),z.value&&(e.agentId=L.value),B.value=await S.agent.testConnection.mutate(e)}catch(e){B.value={success:!1,error:k(e)??j(`agentPage.dialog.testFailed`)}}finally{oe.value=!1}}async function Ze(){let{name:e,url:t,passphrase:n}=R.value;I.value=!0;try{if(z.value){let r={name:e.trim(),url:t.trim()};n.trim()&&(r.passphrase=n.trim()),await S.agent.update.mutate({id:L.value,...r}),i.add({severity:`success`,summary:j(`agentPage.toast.updated`),detail:j(`agentPage.toast.updatedDetail`,{name:e}),life:3e3})}else await S.agent.register.mutate({name:e.trim(),url:t.trim(),passphrase:n.trim()}),i.add({severity:`success`,summary:j(`agentPage.toast.registered`),detail:j(`agentPage.toast.registeredDetail`,{name:e}),life:3e3});F.value=!1,await T.fetchAll()}catch(e){i.add({severity:`error`,summary:j(`common.error`),detail:k(e)??j(`agentPage.toast.saveFailed`),life:5e3})}finally{I.value=!1}}function Qe(e){o.require({message:j(`agentPage.confirm.removeMessage`,{name:e.config.name}),header:j(`agentPage.confirm.removeHeader`),icon:`pi pi-exclamation-triangle`,rejectLabel:j(`actions.cancel`),acceptLabel:j(`agentPage.remove`),acceptClass:`p-button-danger`,accept:()=>$e(e.config.id)})}async function $e(e){try{await S.agent.remove.mutate({id:e}),i.add({severity:`success`,summary:j(`agentPage.toast.removed`),life:2e3}),await T.fetchAll()}catch(e){i.add({severity:`error`,summary:j(`common.error`),detail:k(e)??j(`agentPage.toast.removeFailed`),life:5e3})}}return d(()=>{T.fetchAll(),T.subscribeStatus(),$=setInterval(()=>{T.fetchAll()},6e4)}),ee(()=>{T.unsubscribeStatus(),$&&=(clearInterval($),null)}),(e,i)=>{let o=s(`tooltip`);return n(),y(`div`,ye,[E(`div`,be,[E(`h1`,null,w(r(j)(`agents.title`)),1),h(r(a),{label:r(j)(`agentPage.registerAgent`),icon:`pi pi-plus`,onClick:Je},null,8,[`label`])]),r(T).loading&&r(T).agents.length===0?(n(),y(`div`,xe,[h(r(t))])):r(T).error&&r(T).agents.length===0?(n(),y(`div`,Se,[i[10]||=E(`i`,{class:`pi pi-exclamation-triangle`,style:{"font-size":`2rem`,color:`var(--p-red-500)`}},null,-1),E(`p`,null,w(r(T).error),1),h(r(a),{label:r(j)(`agentPage.retry`),icon:`pi pi-refresh`,severity:`secondary`,onClick:i[0]||=e=>r(T).fetchAll()},null,8,[`label`])])):r(T).agents.length===0?(n(),y(`div`,Ce,[i[11]||=E(`i`,{class:`pi pi-server`,style:{"font-size":`3rem`}},null,-1),E(`p`,null,w(r(j)(`agentPage.empty`)),1),h(r(a),{label:r(j)(`agentPage.registerAgent`),icon:`pi pi-plus`,onClick:Je},null,8,[`label`])])):(n(),A(r(N),{key:3,value:r(T).agents,stripedRows:``,responsiveLayout:`scroll`,paginator:!0,rows:10,"rows-per-page-options":[5,10,20],class:`agents-table`},{default:O(()=>[h(r(P),{field:`config.name`,header:r(j)(`common.name`)},{body:O(({data:e})=>[E(`span`,we,[i[12]||=E(`i`,{class:`pi pi-server`},null,-1),b(` `+w(e.config.name)+` `,1),e.isLocal?(n(),A(r(M),{key:0,value:r(j)(`agents.local`),severity:`secondary`,size:`small`},null,8,[`value`])):v(``,!0)])]),_:1},8,[`header`]),h(r(P),{field:`config.url`,header:r(j)(`common.url`)},{body:O(({data:e})=>[E(`code`,Te,w(e.config.url),1)]),_:1},8,[`header`]),h(r(P),{header:r(j)(`common.status`),style:{width:`140px`}},{body:O(({data:e})=>[h(r(M),{value:e.status.connected?r(j)(`agents.connected`):r(j)(`agents.disconnected`),severity:e.status.connected?`success`:`danger`,icon:e.status.connected?`pi pi-check-circle`:`pi pi-times-circle`},null,8,[`value`,`severity`,`icon`])]),_:1},8,[`header`]),h(r(P),{header:r(j)(`agentPage.uptime`),style:{width:`110px`}},{body:O(({data:e})=>[e.status.connected&&e.status.uptime?(n(),y(`span`,Ee,w(ge(e.status.uptime)),1)):(n(),y(`span`,De,`-`))]),_:1},8,[`header`]),h(r(P),{header:r(j)(`agentPage.lastSeen`),style:{width:`180px`}},{body:O(({data:e})=>[E(`span`,null,w(_e(e.status.lastSeen)),1)]),_:1},8,[`header`]),h(r(P),{header:r(j)(`agentPage.runners`),style:{width:`180px`}},{body:O(({data:e})=>[E(`div`,Oe,[(n(!0),y(g,null,u(e.status.runnersAvailable??[],e=>(n(),A(r(M),{key:e,value:e,severity:e===`docker`?`warn`:`info`,size:`small`},null,8,[`value`,`severity`]))),128)),e.status.runnersAvailable?.length?v(``,!0):(n(),y(`span`,ke,`-`))])]),_:1},8,[`header`]),h(r(P),{header:r(j)(`agentPage.actions`),style:{width:`170px`}},{body:O(({data:e})=>[C(h(r(a),{icon:`pi pi-globe`,severity:`info`,text:``,rounded:``,size:`small`,onClick:t=>Z(e)},null,8,[`onClick`]),[[o,r(j)(`agentPage.passthrough.titleShort`),void 0,{top:!0}]]),C(h(r(a),{icon:`pi pi-server`,severity:`info`,text:``,rounded:``,size:`small`,onClick:t=>de(e)},null,8,[`onClick`]),[[o,`Traefik`,void 0,{top:!0}]]),C(h(r(a),{icon:`pi pi-pencil`,severity:`info`,text:``,rounded:``,size:`small`,disabled:e.isLocal,onClick:t=>Ye(e)},null,8,[`disabled`,`onClick`]),[[o,e.isLocal?r(j)(`agentPage.localCannotEdit`):r(j)(`agentPage.editAgent`),void 0,{top:!0}]]),C(h(r(a),{icon:`pi pi-trash`,severity:`danger`,text:``,rounded:``,size:`small`,disabled:e.isLocal,onClick:t=>Qe(e)},null,8,[`disabled`,`onClick`]),[[o,e.isLocal?r(j)(`agentPage.localCannotRemove`):r(j)(`agentPage.removeAgent`),void 0,{top:!0}]])]),_:1},8,[`header`])]),_:1},8,[`value`])),h(r(f),{visible:V.value,"onUpdate:visible":i[3]||=e=>V.value=e,header:r(j)(`agentPage.passthrough.header`,{name:fe.value}),style:{width:`550px`},modal:``,closable:!H.value},{footer:O(()=>[h(r(a),{label:r(j)(`actions.cancel`),severity:`secondary`,text:``,disabled:H.value,onClick:i[2]||=e=>V.value=!1},null,8,[`label`,`disabled`]),h(r(a),{label:r(j)(`actions.save`),icon:`pi pi-check`,loading:H.value,onClick:he},null,8,[`label`,`loading`])]),default:O(()=>[E(`p`,Ae,w(r(j)(`agentPage.passthrough.description`)),1),G.value.length>0?(n(),y(`div`,je,[(n(!0),y(g,null,u(G.value,(e,t)=>(n(),y(`div`,{key:e,class:`passthrough-item`},[E(`div`,Me,[E(`code`,null,w(e),1),K.value[e]===void 0?!U.value&&pe.value.has(e)?(n(),y(`span`,Pe,w(r(j)(`agentPage.passthrough.undefined`)),1)):!U.value&&!pe.value.has(e)?(n(),y(`span`,Fe,w(r(j)(`agentPage.passthrough.notSaved`)),1)):v(``,!0):(n(),y(`span`,Ne,`= `+w(K.value[e]),1))]),h(r(a),{icon:`pi pi-times`,severity:`danger`,text:``,rounded:``,size:`small`,onClick:e=>me(t)},null,8,[`onClick`])]))),128))])):(n(),y(`p`,Ie,w(r(j)(`agentPage.passthrough.empty`)),1)),E(`div`,Le,[h(r(D),{modelValue:q.value,"onUpdate:modelValue":i[1]||=e=>q.value=e,placeholder:r(j)(`agentPage.passthrough.placeholder`),class:`passthrough-add-input`,onKeyup:te(Q,[`enter`])},null,8,[`modelValue`,`placeholder`]),h(r(a),{icon:`pi pi-plus`,label:r(j)(`actions.add`),size:`small`,disabled:!X.value,onClick:Q},null,8,[`label`,`disabled`])]),Y.value?(n(),y(`small`,Re,w(Y.value),1)):v(``,!0)]),_:1},8,[`visible`,`header`,`closable`]),h(r(f),{visible:F.value,"onUpdate:visible":i[8]||=e=>F.value=e,header:re.value,style:{width:`500px`},modal:``,closable:!I.value},{footer:O(()=>[h(r(a),{label:r(j)(`actions.cancel`),severity:`secondary`,text:``,disabled:I.value,onClick:i[7]||=e=>F.value=!1},null,8,[`label`,`disabled`]),h(r(a),{label:ie.value,icon:`pi pi-check`,loading:I.value,disabled:!ae.value,onClick:Ze},null,8,[`label`,`loading`,`disabled`])]),default:O(()=>[E(`div`,ze,[E(`label`,Be,w(r(j)(`common.name`))+` *`,1),h(r(D),{id:`agent-name`,modelValue:R.value.name,"onUpdate:modelValue":i[4]||=e=>R.value.name=e,placeholder:r(j)(`agentPage.dialog.namePlaceholder`),class:`w-full`,autofocus:``},null,8,[`modelValue`,`placeholder`])]),E(`div`,Ve,[E(`label`,He,w(r(j)(`common.url`))+` *`,1),h(r(D),{id:`agent-url`,modelValue:R.value.url,"onUpdate:modelValue":i[5]||=e=>R.value.url=e,placeholder:r(j)(`agentPage.dialog.urlPlaceholder`),class:`w-full`},null,8,[`modelValue`,`placeholder`]),E(`small`,Ue,w(r(j)(`agentPage.dialog.urlHint`)),1)]),E(`div`,We,[E(`label`,Ge,w(r(j)(`agentPage.dialog.passphrase`))+` `+w(z.value?``:`*`),1),h(r(ne),{id:`agent-passphrase`,modelValue:R.value.passphrase,"onUpdate:modelValue":i[6]||=e=>R.value.passphrase=e,placeholder:z.value?r(j)(`agentPage.dialog.passphraseKeep`):r(j)(`agentPage.dialog.passphrasePlaceholder`),feedback:!1,toggleMask:``,class:`w-full`,inputClass:`w-full`},null,8,[`modelValue`,`placeholder`]),E(`small`,Ke,w(r(j)(`agentPage.dialog.passphraseHint`)),1)]),E(`div`,qe,[h(r(a),{label:r(j)(`agentPage.dialog.testConnection`),icon:`pi pi-bolt`,severity:`secondary`,outlined:``,size:`small`,loading:oe.value,disabled:!se.value,onClick:Xe},null,8,[`label`,`loading`,`disabled`]),B.value?.success?(n(),A(r(M),{key:0,value:r(j)(`agents.connected`),severity:`success`,icon:`pi pi-check-circle`},null,8,[`value`])):B.value&&!B.value.success?(n(),A(r(M),{key:1,value:B.value.error??r(j)(`agentPage.dialog.connectionFailed`),severity:`danger`,icon:`pi pi-times-circle`},null,8,[`value`])):v(``,!0)])]),_:1},8,[`visible`,`header`,`closable`]),h(r(f),{visible:ce.value,"onUpdate:visible":i[9]||=e=>ce.value=e,header:`Traefik — ${ue.value}`,style:{width:`90vw`,maxWidth:`1400px`},modal:``},{default:O(()=>[le.value?(n(),A(ve,{key:0,"agent-id":le.value},null,8,[`agent-id`])):v(``,!0)]),_:1},8,[`visible`,`header`])])}}}),[[`__scopeId`,`data-v-5f511a94`]]);export{Je as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.traefik-settings[data-v-9b0684d2]{box-sizing:border-box;flex-direction:column;gap:1rem;width:100%;min-width:0;display:flex}.traefik-settings[data-v-9b0684d2] input,.traefik-settings[data-v-9b0684d2] .p-inputtext,.traefik-settings[data-v-9b0684d2] .p-autocomplete,.traefik-settings[data-v-9b0684d2] .p-password{box-sizing:border-box;width:100%;max-width:100%}.traefik-row[data-v-9b0684d2]{justify-content:space-between;align-items:center;display:flex}.traefik-field[data-v-9b0684d2]{flex-direction:column;gap:.4rem;display:flex}.traefik-field label[data-v-9b0684d2]{font-size:.875rem;font-weight:500}.traefik-field small[data-v-9b0684d2]{color:var(--p-text-muted-color);font-size:.75rem}.credential-row[data-v-9b0684d2]{align-items:center;gap:.5rem;min-width:0;display:flex}.credential-key[data-v-9b0684d2]{flex:0 0 160px;min-width:0}.credential-value[data-v-9b0684d2]{flex:1;min-width:0}.credential-value[data-v-9b0684d2] .p-password,.credential-value[data-v-9b0684d2] .p-password input{width:100%}.traefik-ports[data-v-9b0684d2]{gap:1rem;display:flex}.traefik-field--small[data-v-9b0684d2]{flex:1}.hint-ok[data-v-9b0684d2]{color:var(--p-green-500);font-size:.8rem;font-weight:400}.traefik-actions[data-v-9b0684d2]{align-self:flex-end;gap:.5rem;display:flex}.traefik-renewal-notice[data-v-9b0684d2]{border-radius:var(--p-border-radius);background:color-mix(in srgb, var(--p-blue-500) 10%, transparent);border:1px solid color-mix(in srgb, var(--p-blue-500) 30%, transparent);color:var(--p-blue-300);align-items:flex-start;gap:.6rem;padding:.75rem;font-size:.875rem;display:flex}.traefik-validation[data-v-9b0684d2]{border:1px solid var(--p-content-border-color);border-radius:var(--p-border-radius);flex-direction:column;gap:.4rem;padding:.75rem;display:flex}.validation-item[data-v-9b0684d2]{align-items:center;gap:.5rem;font-size:.875rem;display:flex}.validation-item--ok[data-v-9b0684d2]{color:var(--p-green-500)}.validation-item--fail[data-v-9b0684d2]{color:var(--p-red-500)}.traefik-logs[data-v-9b0684d2],.traefik-config-files[data-v-9b0684d2]{border:1px solid var(--p-content-border-color);border-radius:var(--p-border-radius);overflow:hidden}.config-tabs[data-v-9b0684d2]{gap:.25rem;display:flex}.config-tab[data-v-9b0684d2]{border-radius:var(--p-border-radius);cursor:pointer;color:var(--p-text-muted-color);background:0 0;border:none;padding:.2rem .6rem;font-size:.8rem}.config-tab--active[data-v-9b0684d2]{background:var(--p-primary-color);color:var(--p-primary-contrast-color)}.traefik-logs-header[data-v-9b0684d2]{background:var(--p-content-hover-background);justify-content:space-between;align-items:center;padding:.4rem .75rem;font-size:.8rem;font-weight:600;display:flex}.logs-live[data-v-9b0684d2]{color:var(--p-green-400);font-size:.7rem;animation:1.2s ease-in-out infinite blink-9b0684d2}@keyframes blink-9b0684d2{0%,to{opacity:1}50%{opacity:.3}}.traefik-logs-content[data-v-9b0684d2]{white-space:pre-wrap;word-break:break-all;background:var(--p-surface-900,#1a1a1a);max-height:300px;color:var(--p-surface-100,#f0f0f0);margin:0;padding:.75rem;font-family:monospace;font-size:.75rem;overflow-y:auto}.traefik-dialog-layout[data-v-9ce779b4]{grid-template-columns:1fr 1fr;gap:1.5rem;min-height:0;display:grid}.traefik-dialog-left[data-v-9ce779b4]{min-width:0;max-height:80vh;padding-right:.5rem;overflow-y:auto}.traefik-dialog-right[data-v-9ce779b4]{flex-direction:column;gap:.5rem;min-width:0;max-height:80vh;display:flex}.fs-header[data-v-9ce779b4]{color:var(--p-text-muted-color);border-bottom:1px solid var(--p-content-border-color);justify-content:space-between;align-items:center;padding:.25rem 0;font-size:.75rem;font-weight:600;display:flex}.fs-tree[data-v-9ce779b4]{flex-direction:column;gap:1px;display:flex}.fs-entry[data-v-9ce779b4]{border-radius:var(--p-border-radius);cursor:pointer;text-align:left;color:var(--p-text-color);background:0 0;border:none;align-items:center;gap:.4rem;width:100%;padding:.3rem .5rem;font-size:.8rem;display:flex}.fs-entry[data-v-9ce779b4]:hover{background:var(--p-content-hover-background)}.fs-entry--active[data-v-9ce779b4]{background:color-mix(in srgb, var(--p-primary-color) 15%, transparent);color:var(--p-primary-color)}.fs-icon[data-v-9ce779b4]{opacity:.6;flex-shrink:0;font-size:.75rem}.fs-dir[data-v-9ce779b4]{opacity:.5;font-size:.7rem}.fs-name[data-v-9ce779b4]{font-weight:500}.fs-empty[data-v-9ce779b4]{color:var(--p-text-muted-color);padding:.5rem;font-size:.8rem;font-style:italic}.fs-content[data-v-9ce779b4]{white-space:pre-wrap;word-break:break-all;background:var(--p-surface-900,#1a1a1a);color:var(--p-surface-100,#f0f0f0);border-radius:var(--p-border-radius);border:1px solid var(--p-content-border-color);flex:1;margin:0;padding:.75rem;font-family:monospace;font-size:.72rem;overflow-y:auto}.agent-page[data-v-5f511a94]{max-width:1200px;margin:0 auto;padding:1.5rem}.page-header[data-v-5f511a94]{justify-content:space-between;align-items:center;margin-bottom:1.5rem;display:flex}.page-header h1[data-v-5f511a94]{margin:0;font-size:1.75rem;font-weight:700}.loading-container[data-v-5f511a94],.error-container[data-v-5f511a94],.empty-container[data-v-5f511a94]{color:var(--p-text-muted-color);flex-direction:column;align-items:center;gap:.75rem;padding:3rem 0;display:flex}.agent-name[data-v-5f511a94]{align-items:center;gap:.5rem;font-weight:500;display:flex}.agent-url[data-v-5f511a94]{background:var(--p-content-hover-background);border-radius:4px;padding:.15rem .4rem;font-family:Fira Code,Cascadia Code,monospace;font-size:.8rem}.runner-tags[data-v-5f511a94]{gap:.3rem;display:flex}.text-muted[data-v-5f511a94]{color:var(--p-text-muted-color)}.form-group[data-v-5f511a94]{margin-bottom:1rem}.form-group label[data-v-5f511a94]{margin-bottom:.4rem;font-size:.875rem;font-weight:500;display:block}.form-hint[data-v-5f511a94]{color:var(--p-text-muted-color);font-size:.78rem}.test-connection[data-v-5f511a94]{align-items:center;gap:.75rem;display:flex}.w-full[data-v-5f511a94]{width:100%}.passthrough-description[data-v-5f511a94]{color:var(--p-text-muted-color);margin:0 0 1rem;font-size:.85rem;line-height:1.4}.passthrough-list[data-v-5f511a94]{flex-direction:column;gap:.25rem;margin-bottom:.75rem;display:flex}.passthrough-item[data-v-5f511a94]{background:var(--p-content-hover-background);border-radius:6px;justify-content:space-between;align-items:center;padding:.3rem .5rem;display:flex}.passthrough-item-info[data-v-5f511a94]{align-items:center;gap:.4rem;min-width:0;display:flex;overflow:hidden}.passthrough-item code[data-v-5f511a94]{flex-shrink:0;font-family:Fira Code,Cascadia Code,monospace;font-size:.85rem}.passthrough-value[data-v-5f511a94]{color:var(--p-text-muted-color);text-overflow:ellipsis;white-space:nowrap;font-family:Fira Code,Cascadia Code,monospace;font-size:.8rem;overflow:hidden}.passthrough-undefined[data-v-5f511a94]{color:var(--p-orange-500);font-size:.78rem;font-style:italic}.passthrough-unsaved[data-v-5f511a94]{color:var(--p-text-muted-color);font-size:.78rem;font-style:italic}.passthrough-empty[data-v-5f511a94]{margin-bottom:.75rem;font-size:.85rem}.passthrough-add[data-v-5f511a94]{align-items:center;gap:.5rem;display:flex}.passthrough-add-input[data-v-5f511a94]{flex:1}.passthrough-error[data-v-5f511a94]{color:var(--p-red-500);margin-top:.25rem;font-size:.78rem;display:block}
|