@xenon-device-management/xenon 1.3.0 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +17 -0
- package/lib/package.json +1 -1
- package/lib/public/assets/{Layouts-D6IPfwoe.js → Layouts-BV_fQEKa.js} +1 -1
- package/lib/public/assets/{ai-settings-CflyFKan.js → ai-settings-BnoeJplt.js} +2 -2
- package/lib/public/assets/api-keys-TLWTJYrE.js +1 -0
- package/lib/public/assets/{apps-Da4dvQ1J.js → apps-BGCcB8_p.js} +2 -2
- package/lib/public/assets/arrow-left-B6-SH02F.js +6 -0
- package/lib/public/assets/{badge-BNR9umdu.js → badge-BtQKmQsj.js} +1 -1
- package/lib/public/assets/button-CNLKazSa.js +16 -0
- package/lib/public/assets/{calendar-fehdBtun.js → calendar-CPNkf0zl.js} +1 -1
- package/lib/public/assets/{clock-DrpxSvCL.js → clock-C8ZaLIQA.js} +1 -1
- package/lib/public/assets/copy-DCAmOyY9.js +11 -0
- package/lib/public/assets/{cpu-tuyMVZ4I.js → cpu-D3PzrmhN.js} +1 -1
- package/lib/public/assets/{device-explorer-DOfRH3zm.js → device-explorer-BfFe3bRe.js} +36 -41
- package/lib/public/assets/{index-BaTiUCeH.js → index-Do3u3FMx.js} +38 -28
- package/lib/public/assets/{lock-C6CoqSr2.js → lock-DNzAbx6Q.js} +1 -1
- package/lib/public/assets/{maintenance-settings-CM2oC7-i.js → maintenance-settings-yHAKnfz_.js} +2 -2
- package/lib/public/assets/{mouse-pointer-2-CXdnjXIg.js → mouse-pointer-2-B0KBsfLG.js} +1 -1
- package/lib/public/assets/{plus-B4B1Hukt.js → plus-DecbehZh.js} +1 -1
- package/lib/public/assets/{session-dashboard-B5OPMTz5.js → session-dashboard-CJvDLc6D.js} +17 -22
- package/lib/public/assets/settings-DjTQTjSq.js +1 -0
- package/lib/public/assets/shield-alert-Br1Ebl1G.js +6 -0
- package/lib/public/assets/teams-LILlQka3.js +1 -0
- package/lib/public/assets/{trash-2-NJMZJ2Ol.js → trash-2-DEafUZlN.js} +1 -1
- package/lib/public/assets/{useSocket-Ct2wo7P2.js → useSocket-Dzv_TTsO.js} +1 -1
- package/lib/public/assets/{webhook-settings-Cz35-QJ7.js → webhook-settings-CVwvtwI7.js} +1 -1
- package/lib/public/assets/{zap-CssSMAN5.js → zap-DCsIYdwr.js} +1 -1
- package/lib/public/index.html +1 -1
- package/lib/src/XenonCapabilityManager.js +30 -0
- package/lib/src/app/index.js +3 -0
- package/lib/src/app/routers/apikeys.js +5 -2
- package/lib/src/app/routers/grid.js +46 -2
- package/lib/src/app/routers/teams.js +66 -0
- package/lib/src/dashboard/event-manager.js +2 -0
- package/lib/src/data-service/device-store.js +12 -0
- package/lib/src/data-service/prisma-store.js +7 -0
- package/lib/src/device-utils.js +7 -1
- package/lib/src/generated/client/edge.js +18 -7
- package/lib/src/generated/client/index-browser.js +15 -4
- package/lib/src/generated/client/index.d.ts +2613 -391
- package/lib/src/generated/client/index.js +18 -7
- package/lib/src/generated/client/package.json +1 -1
- package/lib/src/generated/client/schema.prisma +18 -0
- package/lib/src/generated/client/wasm.js +15 -4
- package/lib/src/logger.js +17 -0
- package/lib/src/middleware/apiKeyMiddleware.js +22 -2
- package/lib/src/services/ApiKeyService.js +20 -1
- package/lib/src/services/ServerManager.js +10 -3
- package/lib/src/services/SessionLifecycleService.js +53 -4
- package/lib/src/services/TeamService.js +100 -0
- package/lib/src/sessions/XenonSession.js +3 -0
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/prisma/migrations/20260424033547_add_teams/migration.sql +101 -0
- package/prisma/schema.prisma +18 -0
- package/lib/public/assets/button-hZFV1ypT.js +0 -26
- package/lib/public/assets/settings-BTHP7fj3.js +0 -1
- /package/lib/public/assets/{Layouts-DPMls9vh.css → settings-DPMls9vh.css} +0 -0
package/lib/public/assets/{maintenance-settings-CM2oC7-i.js → maintenance-settings-yHAKnfz_.js}
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import{c as x,r as n,j as e,g as j,l as v,d as b,I as y,i as C,T as f}from"./index-
|
|
1
|
+
import{c as x,r as n,j as e,g as j,l as v,d as b,I as y,i as C,T as f}from"./index-Do3u3FMx.js";import{X as u}from"./index-C1DBaoSh.js";/* empty css */import{A as N}from"./Layouts-BV_fQEKa.js";import{T as S}from"./trash-2-DEafUZlN.js";import{C as M}from"./calendar-CPNkf0zl.js";/**
|
|
2
2
|
* @license lucide-react v0.555.0 - ISC
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the ISC license.
|
|
5
5
|
* See the LICENSE file in the root directory of this source tree.
|
|
6
|
-
*/const A=[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}],["path",{d:"M12 7v5l4 2",key:"1fdv2h"}]],D=x("history",A),
|
|
6
|
+
*/const A=[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}],["path",{d:"M12 7v5l4 2",key:"1fdv2h"}]],D=x("history",A),R=()=>{const[a,i]=n.useState({buildCleanupDays:30,buildCleanupMaxCount:100,buildCleanupSchedule:"0 0 * * *",deleteBuildAssets:!0}),[h,r]=n.useState(!0),[g,c]=n.useState(!1),[l,t]=n.useState(null);n.useEffect(()=>{d()},[]);const d=async()=>{r(!0);try{const s=await u.getGlobalConfig();i({buildCleanupDays:s.buildCleanupDays||30,buildCleanupMaxCount:s.buildCleanupMaxCount||100,buildCleanupSchedule:s.buildCleanupSchedule||"0 0 * * *",deleteBuildAssets:s.deleteBuildAssets!==void 0?s.deleteBuildAssets:!0})}catch(s){console.error("Failed to load maintenance settings",s),t({type:"error",message:"Failed to access maintenance parameters."})}finally{r(!1)}},o=async(s=a)=>{c(!0),t(null);try{await u.updateGlobalConfig(s),t({type:"success",message:"Maintenance parameters synchronized across fleet."}),setTimeout(()=>t(null),5e3)}catch(m){console.error("Failed to save maintenance settings",m),t({type:"error",message:"Synchronization failed. Check network integrity."})}finally{c(!1)}},p=async()=>{const s={buildCleanupDays:30,buildCleanupMaxCount:100,buildCleanupSchedule:"0 0 * * *",deleteBuildAssets:!0};i(s),await o(s)};return h?e.jsxs("div",{className:"settings-loading",children:[e.jsx(j,{className:"animate-spin",size:32}),e.jsx("span",{children:"Synchronizing Maintenance Parameters..."})]}):e.jsxs("div",{className:"settings-container mesh-gradient-infra",children:[e.jsx("div",{className:"scanline",style:{position:"absolute",inset:0,pointerEvents:"none",opacity:.05,zIndex:1001}}),e.jsxs("div",{className:"settings-header",children:[e.jsxs("div",{className:"settings-title-group",children:[e.jsx(v,{className:"settings-icon infra-icon",size:28}),e.jsx("h2",{children:"Maintenance & Retention"})]}),e.jsx("p",{className:"settings-subtitle",children:"Manage the lifecycle of test artifacts, automated purging schedules, and storage optimization across the global registry."})]}),e.jsxs("div",{className:"settings-content",children:[e.jsxs("div",{className:"settings-grid",children:[e.jsxs("div",{className:"setting-card stagger-1",children:[e.jsxs("div",{className:"setting-card-header",children:[e.jsx(D,{size:16}),e.jsx("h4",{children:"Retention Window"})]}),e.jsx("p",{className:"section-description-dense",children:"Number of days to preserve builds and sessions before automatic purging from the system."}),e.jsx("div",{className:"setting-field",children:e.jsxs("div",{className:"input-group",children:[e.jsx("input",{type:"number",value:a.buildCleanupDays,onChange:s=>i({...a,buildCleanupDays:parseInt(s.target.value)}),min:1}),e.jsx("span",{className:"code-font",children:"DAYS"})]})}),e.jsx("div",{className:"setting-hint-clean",children:"Standard enterprise retention is typically 30-90 days."})]}),e.jsxs("div",{className:"setting-card stagger-2",children:[e.jsxs("div",{className:"setting-card-header",children:[e.jsx(S,{size:16}),e.jsx("h4",{children:"Max Build Capacity"})]}),e.jsx("p",{className:"section-description-dense",children:"Cap the maximum number of historical builds stored in the primary database."}),e.jsx("div",{className:"setting-field",children:e.jsxs("div",{className:"input-group",children:[e.jsx("input",{type:"number",value:a.buildCleanupMaxCount,onChange:s=>i({...a,buildCleanupMaxCount:parseInt(s.target.value)}),min:1}),e.jsx("span",{className:"code-font",children:"BUILDS"})]})}),e.jsx("div",{className:"setting-hint-clean",children:"Protects against database bloat during high-frequency CI bursts."})]}),e.jsxs("div",{className:"setting-card stagger-3",children:[e.jsxs("div",{className:"setting-card-header",children:[e.jsx(b,{size:16}),e.jsx("h4",{children:"Asset Purge Strategy"})]}),e.jsx("p",{className:"section-description-dense",children:"Automatically remove binary artifacts (videos, screenshots) when build records are purged."}),e.jsxs("div",{className:"toggle-group",children:[e.jsxs("label",{className:"switch",children:[e.jsx("input",{type:"checkbox",checked:a.deleteBuildAssets,onChange:s=>i({...a,deleteBuildAssets:s.target.checked})}),e.jsx("span",{className:"slider round"})]}),e.jsx("span",{className:"toggle-label",children:a.deleteBuildAssets?"ENABLED":"DISABLED"})]}),e.jsx("div",{className:"setting-hint-clean",children:"Disabling this will leave orphaned files on disk—use with caution."})]}),e.jsxs("div",{className:"setting-card stagger-4",children:[e.jsxs("div",{className:"setting-card-header",children:[e.jsx(M,{size:16}),e.jsx("h4",{children:"Cleanup Orchestration"})]}),e.jsx("p",{className:"section-description-dense",children:"Standardized Cron syntax for scheduling the automated cleanup engine."}),e.jsx("div",{className:"setting-field",children:e.jsx("div",{className:"setting-input-wrapper",children:e.jsx("input",{type:"text",placeholder:"e.g. 0 0 * * * (Midnight)",value:a.buildCleanupSchedule,onChange:s=>i({...a,buildCleanupSchedule:s.target.value})})})}),e.jsx("div",{className:"cron-presets",children:e.jsx("div",{className:"presets-grid",children:[{label:"Daily (Midnight)",value:"0 0 * * *"},{label:"Weekly (Sunday)",value:"0 0 * * 0"},{label:"Bi-Daily (12h)",value:"0 */12 * * *"}].map(s=>e.jsx("button",{className:`preset-chip ${a.buildCleanupSchedule===s.value?"active":""}`,onClick:()=>i({...a,buildCleanupSchedule:s.value}),children:s.label},s.label))})})]})]}),e.jsxs("div",{className:"health-monitor-alert",style:{background:"rgba(59, 130, 246, 0.05)",borderColor:"rgba(59, 130, 246, 0.2)",color:"#60a5fa",marginTop:"1.5rem"},children:[e.jsx(y,{size:18}),e.jsxs("span",{children:[e.jsx("strong",{children:"Resource Notice:"})," Bulk purging operations are non-blocking and execute at low priority to ensure zero interference with active test execution."]})]}),l&&e.jsxs("div",{className:`status-banner ${l.type}`,children:[l.type==="success"?e.jsx(C,{size:18}):e.jsx(f,{size:18}),e.jsx("span",{children:l.message})]})]}),e.jsx(N,{onSave:o,onDiscard:d,onRestoreDefaults:p,isSaving:g})]})};export{R as MaintenanceSettings};
|