@numa-tech/numa 1.24.0 → 1.26.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 +4 -0
- package/dist/business-issuer.js +5 -5
- package/dist/business-issuer.js.map +1 -1
- package/dist/cli.js +3 -0
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +1 -1
- package/dist/config.js +2 -2
- package/dist/config.js.map +1 -1
- package/dist/kb/catalog.js +33 -2
- package/dist/kb/catalog.js.map +1 -1
- package/dist/kb/chat-stream.d.ts +5 -0
- package/dist/kb/chat-stream.js +61 -0
- package/dist/kb/chat-stream.js.map +1 -0
- package/dist/kb/client.d.ts +75 -6
- package/dist/kb/client.js +114 -12
- package/dist/kb/client.js.map +1 -1
- package/dist/kb/commands.js +93 -8
- package/dist/kb/commands.js.map +1 -1
- package/dist/kb/config.d.ts +15 -3
- package/dist/kb/config.js +40 -21
- package/dist/kb/config.js.map +1 -1
- package/dist/kb/management-commands.d.ts +7 -0
- package/dist/kb/management-commands.js +86 -0
- package/dist/kb/management-commands.js.map +1 -0
- package/dist/kb/management-schemas.d.ts +106 -0
- package/dist/kb/management-schemas.js +33 -0
- package/dist/kb/management-schemas.js.map +1 -0
- package/dist/kb/transfers.d.ts +4 -0
- package/dist/kb/transfers.js +11 -4
- package/dist/kb/transfers.js.map +1 -1
- package/dist/kb/upload-decisions.d.ts +28 -0
- package/dist/kb/upload-decisions.js +23 -0
- package/dist/kb/upload-decisions.js.map +1 -0
- package/dist/kb/upload-state.d.ts +1 -0
- package/dist/kb/upload-state.js +1 -0
- package/dist/kb/upload-state.js.map +1 -1
- package/dist/kb/web-login.d.ts +10 -0
- package/dist/kb/web-login.js +25 -0
- package/dist/kb/web-login.js.map +1 -0
- package/dist/kb/web-page.d.ts +3 -0
- package/dist/kb/web-page.js +114 -0
- package/dist/kb/web-page.js.map +1 -0
- package/dist/kb/web-queue.d.ts +61 -0
- package/dist/kb/web-queue.js +101 -0
- package/dist/kb/web-queue.js.map +1 -0
- package/dist/kb/web.d.ts +26 -0
- package/dist/kb/web.js +234 -0
- package/dist/kb/web.js.map +1 -0
- package/dist/local-web/context-menu.d.ts +2 -0
- package/dist/local-web/context-menu.js +53 -0
- package/dist/local-web/context-menu.js.map +1 -0
- package/dist/local-web/file-workspace-style.d.ts +2 -0
- package/dist/local-web/file-workspace-style.js +58 -0
- package/dist/local-web/file-workspace-style.js.map +1 -0
- package/dist/local-web/file-workspace.d.ts +2 -0
- package/dist/local-web/file-workspace.js +39 -0
- package/dist/local-web/file-workspace.js.map +1 -0
- package/dist/local-web/security.d.ts +6 -0
- package/dist/local-web/security.js +51 -0
- package/dist/local-web/security.js.map +1 -0
- package/dist/login-recovery.js +8 -3
- package/dist/login-recovery.js.map +1 -1
- package/dist/mcp-gateway/profile.d.ts +4 -0
- package/dist/mcp-gateway/profile.js +6 -3
- package/dist/mcp-gateway/profile.js.map +1 -1
- package/dist/mcp-gateway/runtime.js +14 -0
- package/dist/mcp-gateway/runtime.js.map +1 -1
- package/dist/oss/transfer-queue.d.ts +7 -51
- package/dist/oss/transfer-queue.js +15 -308
- package/dist/oss/transfer-queue.js.map +1 -1
- package/dist/oss/web-page.js +21 -103
- package/dist/oss/web-page.js.map +1 -1
- package/dist/oss/web.js +4 -45
- package/dist/oss/web.js.map +1 -1
- package/dist/platform-profile.d.ts +25 -1
- package/dist/platform-profile.js +44 -1
- package/dist/platform-profile.js.map +1 -1
- package/dist/transfers/persistent-queue.d.ts +65 -0
- package/dist/transfers/persistent-queue.js +312 -0
- package/dist/transfers/persistent-queue.js.map +1 -0
- package/docs/design/kb-capability-upgrade.md +36 -0
- package/docs/design/kb-cli.md +4 -4
- package/docs/design/kb-web-workspace.md +97 -0
- package/docs/kb-access.md +86 -7
- package/examples/jev/README.md +65 -0
- package/examples/jev/platform-client.test.ts +136 -0
- package/examples/jev/platform-client.ts +122 -0
- package/package.json +9 -7
- package/scripts/export-kb-contract.py +25 -6
- package/skills/numa-jev/LICENSE +21 -0
- package/skills/numa-jev/SKILL.md +54 -0
- package/skills/numa-jev/assets/decision.json +37 -0
- package/skills/numa-jev/numa-skill.json +8 -0
- package/skills/numa-jev/references/application-integration.md +36 -0
- package/skills/numa-jev/references/mcp-usage.md +53 -0
- package/skills/numa-jev/references/upstream.md +13 -0
- package/src/kb/openapi-contract.json +2297 -566
package/dist/oss/web-page.js
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import { FILE_WORKSPACE_CSS } from '../local-web/file-workspace-style.js';
|
|
2
|
+
import { FILE_WORKSPACE_JS } from '../local-web/file-workspace.js';
|
|
3
|
+
import { LOCAL_CONTEXT_MENU_JS } from '../local-web/context-menu.js';
|
|
1
4
|
import { OSS_REFRESH_ICON, OSS_COPY_ICON } from "./web-icons.js";
|
|
2
5
|
/** Self-contained local assets: no CDN, remote fonts, analytics or credential-bearing markup. */
|
|
3
6
|
export const OSS_WEB_HTML = String.raw `<!doctype html>
|
|
@@ -30,63 +33,10 @@ export const OSS_WEB_HTML = String.raw `<!doctype html>
|
|
|
30
33
|
<section id="operations-panel" class="operations-panel" hidden aria-label="文件操作进度"><div id="operations-list"></div><p>关闭浏览器后继续执行。停止服务会中断文件操作;已完成部分保留,重启后不会自动续做。</p></section>
|
|
31
34
|
<template id="copy-icon">${OSS_COPY_ICON}</template>
|
|
32
35
|
</body></html>`;
|
|
33
|
-
export const OSS_WEB_CSS =
|
|
34
|
-
.file-menu{position:fixed;z-index:20;min-width:175px;padding:5px;background:white;border:1px solid #d4ded6;border-radius:8px;box-shadow:0 8px 28px #20372e26}.file-menu button{display:block;width:100%;border:0;text-align:left;padding:9px 12px}.file-menu button:focus{background:#eff5f1}.file-menu button[aria-disabled=true]{color:#99a49e}.permission-tip{position:fixed;z-index:30;max-width:min(330px,calc(100vw - 16px));padding:10px 12px;background:#263c31;color:#fff;border-radius:6px;box-shadow:0 6px 24px #20372e26;font-size:12px;line-height:1.7;overflow-wrap:anywhere}
|
|
35
|
-
#statistics-result{display:grid;grid-template-columns:100px 1fr;gap:12px;margin:20px 0;font-variant-numeric:tabular-nums}#statistics-result dd{margin:0;font-weight:600}#statistics-status{margin-top:10px}
|
|
36
|
-
#statistics-dialog{width:min(640px,90vw);max-width:90vw;max-height:90vh;overflow:auto}#statistics-result dd{overflow-wrap:anywhere}.statistics-table{margin:22px 0 10px}.statistics-table caption{text-align:left;font-weight:600;margin-bottom:6px}.statistics-table th:first-child,.statistics-table td:first-child{width:44%;overflow-wrap:anywhere}.statistics-table th:not(:first-child),.statistics-table td:not(:first-child){text-align:right;font-variant-numeric:tabular-nums}.statistics-table td{color:#4a6554}#statistics-dialog .dialog-actions{position:sticky;bottom:-26px;background:#fff;padding:14px 0;margin-top:10px}
|
|
37
|
-
#links-dialog{width:min(680px,90vw);max-width:90vw;max-height:90vh;overflow:auto}#links-expires{margin-left:12px;max-width:100%}.links-renew{margin-top:12px;white-space:normal}#links-session-hint{margin:8px 0 12px}#links-result article{border-top:1px solid #dbe3de;padding:14px 0}#links-result h3{font-size:13px;overflow-wrap:anywhere;margin:0 0 8px}#links-result textarea{width:100%;font:11px/1.6 ui-monospace,monospace;resize:vertical;overflow-wrap:anywhere;min-height:72px}#links-result .link-copy{display:flex;align-items:center;gap:8px}#links-status{overflow-wrap:anywhere}#links-dialog .dialog-actions{position:sticky;bottom:-26px;background:white;padding:14px 0}
|
|
38
|
-
#operation-dialog{max-height:90vh;overflow:auto;width:min(520px,90vw)}
|
|
39
|
-
#destination-picker{margin-top:16px}#destination-hint{font-size:12px;margin-bottom:8px}.destination-tree{max-height:260px;overflow:auto;border:1px solid #dbe3de;border-radius:6px;padding:6px;background:#fafcfb}.destination-children{padding-left:18px}.destination-line{display:flex;align-items:center;gap:4px;min-height:34px;border-radius:4px}.destination-line button{border:0;background:transparent;padding:6px;color:#344b41}.destination-toggle{width:28px;flex-shrink:0}.destination-name{display:flex;align-items:center;gap:8px;flex:1;min-width:0;text-align:left;white-space:normal;overflow-wrap:anywhere}.destination-name .folder-icon{flex-shrink:0}.destination-item[aria-selected=true]>.destination-line{background:#dfede3}.destination-item:focus{outline:none}.destination-item:focus-visible>.destination-line{outline:2px solid #16805a;outline-offset:-2px}.destination-status{font-size:11px;color:#7b8d81;margin-left:32px}.destination-more{font-size:12px;margin:4px 0 4px 32px}.destination-editor{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0 6px 32px}.destination-editor input{width:100%;min-width:0;padding:7px;border:1px solid #cbd9cf;border-radius:4px;background:white;color:#23322e}.destination-editor button{font-size:12px;padding:6px 9px}
|
|
40
|
-
#operation-dialog label{display:block;font-size:12px;margin:16px 0 8px}#operation-value{width:100%;border:1px solid #cbd9cf;padding:10px;border-radius:5px;color:#23322e}#operation-source{overflow-wrap:anywhere}#operation-help{margin-top:10px}#operation-error{color:#a7473d}
|
|
41
|
-
.operations-panel{flex-shrink:0;background:#f0f6f2;border-top:1px solid #cbd9cf;max-height:24vh;overflow:auto;padding:10px 26px;font-size:12px}.operations-panel>p{font-size:11px;color:#74867b;margin-top:5px}.operation-row{display:flex;align-items:center;gap:12px;padding:5px 0}.operation-row span{flex:1;overflow-wrap:anywhere}.operation-row button{font-size:12px;padding:5px 10px}.upload-actions{flex-wrap:wrap;justify-content:flex-end}
|
|
42
|
-
|
|
43
|
-
.icon-button{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;min-width:34px;min-height:34px}
|
|
44
|
-
:root{font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC",sans-serif;color:#23322e;background:#f5f7f5;font-size:14px;font-synthesis:none}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button,select{cursor:pointer}button{border:1px solid #d8e0db;background:white;color:#344b41;border-radius:6px;padding:8px 12px;white-space:nowrap}button:hover:not(:disabled){background:#eff5f1;border-color:#a5bcae}button:disabled{opacity:.4;cursor:not-allowed}input:focus-visible,button:focus-visible,select:focus-visible{outline:2px solid #16805a;outline-offset:2px}input[type=checkbox]{accent-color:#197854;width:15px;height:15px;cursor:pointer}input[type=search]{border:1px solid #dbe3de;border-radius:6px;padding:9px 12px;min-width:160px;background:#fafcfb;color:#23322e}select{border:0;background:transparent;color:#263d31;max-width:100%;padding:6px 24px 6px 0;font-weight:550}h1,h2,p{margin:0}h1{font-size:27px;letter-spacing:-.7px;font-weight:600}h2{font-size:15px;font-weight:600}.topbar{height:62px;padding:0 26px;background:#20372e;color:#ecf4ed;display:flex;align-items:center;gap:20px}.brand{font-size:24px;letter-spacing:-1px;font-weight:650;color:inherit;text-decoration:none}.brand span{font-size:16px;font-weight:400;letter-spacing:.5px;color:#a9c0b0;margin-left:12px}.local{font-size:11px;color:#cee0d5;display:flex;align-items:center;gap:6px}.local i{height:6px;width:6px;background:#8edaac;border-radius:50%}.topnote{margin-left:auto;color:#aac0b2;font-size:12px;letter-spacing:2px}.authorization{display:flex;align-items:center;justify-content:space-between;gap:24px;background:#fff;border-bottom:1px solid #dbe3de;padding:16px 26px}.grant-field{min-width:0;display:flex;align-items:center;gap:12px;flex:1}.grant-field label{font-size:12px;color:#7a8c80;white-space:nowrap}.session-controls{display:flex;align-items:center;gap:18px;flex-shrink:0}.expiry{display:flex;align-items:center;gap:10px;font-size:11px;color:#718076}.expiry strong{font-family:ui-monospace,SFMono-Regular,monospace;color:#2b674c;font-size:20px;font-weight:500;min-width:62px}.expiry strong.warning{color:#b45309}.expiry strong.expired{color:#bf403d}.check{display:flex;align-items:center;gap:5px;font-size:12px;white-space:nowrap}.quiet{background:transparent;border-color:transparent;color:#718577;padding:6px 8px}.primary{color:white;background:#227b54;border-color:#227b54}.primary:hover:not(:disabled){background:#196140;color:white}.danger{color:#9f4b40}.destructive{color:white;background:#a7473d;border-color:#a7473d}.notice{margin:0;padding:10px 26px;background:#fff4df;border-bottom:1px solid #ead9b8;color:#845422;font-size:13px;line-height:1.6}.notice.success{background:#e9f6ec;color:#266342;border-color:#c9e3d0}.workspace{display:grid;grid-template-columns:205px minmax(420px,1fr) 310px;min-height:calc(100vh - 137px)}.sidebar{border-right:1px solid #dbe3de;padding:30px 16px;display:flex;flex-direction:column;background:#f0f4f0;min-width:0}.eyebrow{font-size:10px;letter-spacing:1.7px;color:#89988d;font-weight:600}.sidebar .eyebrow{padding-left:10px}.root-button{display:flex;align-items:center;gap:10px;margin-top:18px;white-space:normal;text-align:left;overflow-wrap:anywhere;background:#e1ebe2;border:0;color:#24573d;font-size:13px}.folder-icon{display:inline-block;width:16px;height:11px;background:#9fbba1;border-radius:2px;position:relative;flex-shrink:0;margin-top:3px}.folder-icon:before{content:"";position:absolute;left:0;top:-3px;width:7px;height:4px;border-radius:2px 2px 0 0;background:inherit}.scope-label{font-size:11px;color:#86978a;margin:23px 10px 9px}.scope{font-family:ui-monospace,SFMono-Regular,monospace;font-size:12px;color:#637c6a;overflow-wrap:anywhere;line-height:1.7}.sidebar>.scope{padding:0 10px}.sidebar-bottom{margin-top:auto;padding:40px 10px 0;color:#607e68;font-size:12px}.sidebar-bottom p{margin-top:12px;line-height:1.8;color:#8b9b8e;font-size:11px}.files{background:white;min-width:0;padding:30px 28px 0;display:flex;flex-direction:column}.page-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px}.page-heading .eyebrow{margin-bottom:8px}.location{display:flex;align-items:center;gap:6px;border-top:1px solid #e8ede9;border-bottom:1px solid #e8ede9;padding:9px 0;min-width:0}.location nav{display:flex;align-items:center;flex-wrap:wrap;flex:1;gap:2px;min-width:0}.location nav button{padding:4px 7px;border:0;font-size:12px;max-width:220px;overflow:hidden;text-overflow:ellipsis}.location nav span{color:#c1ccc4}.toolbar{display:flex;gap:8px;align-items:center;margin:18px 0}.toolbar input[type=search]{flex:1;min-width:0}.toolbar button{font-size:12px;padding:7px 9px}#selection-count{font-size:11px;color:#819286;white-space:nowrap}.table-wrap{overflow-x:auto;min-height:290px}table{width:100%;border-collapse:collapse;table-layout:fixed}th{text-align:left;font-size:11px;color:#8a978e;font-weight:500;border-bottom:1px solid #e3e9e4;padding:11px 9px}td{padding:12px 9px;border-bottom:1px solid #f0f3f0;font-size:12px;color:#79897e}.check-cell{width:30px;padding-left:0}.size-cell{width:82px;text-align:right;font-variant-numeric:tabular-nums}.date-cell{width:145px;text-align:right}tr:hover td{background:#f7faf7}tr.active td{background:#edf5ee}td .entry{border:0;background:transparent;padding:0;display:flex;align-items:center;gap:10px;max-width:100%;color:#354e3e;font-size:13px;text-align:left}td .entry span:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-icon{display:inline-block;width:13px;height:16px;border:1px solid #a8b8ad;background:#f5f8f5;border-radius:2px;flex-shrink:0}.empty{text-align:center;padding:65px 20px;color:#8b9b8f;line-height:1.9}.list-footer{border-top:1px solid #e9eee9;display:flex;align-items:center;justify-content:space-between;color:#92a095;font-size:11px;padding:13px 0;margin-top:auto;min-height:48px}.preview-panel{border-left:1px solid #dbe3de;display:flex;flex-direction:column;padding:29px 20px 20px;background:#f8faf7;min-width:0}.preview-heading{display:flex;justify-content:space-between;align-items:center}.preview-heading h2{font-size:13px;color:#61776a}.preview-body{padding-top:25px;flex:1;min-width:0}.preview-empty{text-align:center;color:#859889;padding:80px 0;line-height:2}.preview-empty small{color:#a0aca2;font-size:11px}.preview-body h3{font-size:15px;line-height:1.7;overflow-wrap:anywhere;font-weight:500;margin:0 0 18px}.preview-body dl{font-size:11px;display:grid;grid-template-columns:60px minmax(0,1fr);gap:10px;margin:20px 0;color:#91a094}.preview-body dd{margin:0;color:#607968;overflow-wrap:anywhere}.preview-body pre{font:11px/1.8 ui-monospace,SFMono-Regular,monospace;white-space:pre-wrap;overflow-wrap:anywhere;max-height:50vh;overflow:auto;background:#edf2ec;padding:12px;border-radius:5px;color:#48654e}.preview-body img{max-width:100%;max-height:40vh;object-fit:contain;border-radius:4px}.preview-body p{font-size:12px;line-height:1.8;color:#8c9a8f}.preview-actions{display:flex;gap:8px;padding-top:20px}.preview-actions button{flex:1;font-size:12px}.transfer{border-top:1px solid #dce8df;padding:14px 0;font-size:12px}.transfer>div{display:flex;align-items:center;justify-content:space-between}.transfer progress{width:100%;height:5px;accent-color:#227b54;margin:10px 0}.transfer span{font-size:11px;color:#7b9082}dialog{border:1px solid #d4ded6;border-radius:10px;padding:26px;max-width:min(480px,90vw);color:#344c3c;box-shadow:0 20px 80px #182c2530}dialog::backdrop{background:#1c322747}dialog h2{font-size:19px;margin-bottom:15px}dialog p{font-size:13px;line-height:1.8;color:#879489}dialog ul{max-height:180px;overflow:auto;padding-left:20px;font-size:12px;line-height:1.9;overflow-wrap:anywhere}.dialog-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:24px}[hidden]{display:none!important}@media(min-width:1500px){.workspace{grid-template-columns:235px minmax(500px,1fr) 370px}.files{padding-left:38px;padding-right:38px}}@media(max-width:1100px){.workspace{grid-template-columns:160px minmax(360px,1fr) 260px}.files{padding:24px 18px 0}.authorization{flex-wrap:wrap;gap:10px}.grant-field{flex-basis:100%}.session-controls{margin-left:auto}.date-cell{width:110px}.toolbar{flex-wrap:wrap}.toolbar input[type=search]{flex-basis:100%}}@media(max-width:820px){.workspace{grid-template-columns:1fr}.sidebar{display:none}.preview-panel{border-left:0;border-top:1px solid #dbe3de}.preview-empty{padding:20px}.files{min-height:60vh}.authorization{padding:14px 18px}.grant-field{gap:7px;flex-wrap:wrap}.grant-field select{flex:1;min-width:180px}.session-controls{width:100%;justify-content:space-between;gap:8px}.expiry{gap:6px}.topbar{padding:0 18px}.topnote{display:none}.date-cell{width:110px}.preview-body pre{max-height:280px}.preview-actions{max-width:360px}}
|
|
45
|
-
/* Independent scrolling keeps file actions within the current viewport. */
|
|
46
|
-
body{height:100vh;height:100dvh;display:flex;flex-direction:column;overflow:hidden}
|
|
47
|
-
.topbar,.authorization,.notice{flex-shrink:0}.notice{max-height:20vh;overflow:auto}
|
|
48
|
-
.workspace{flex:1;min-height:0;overflow:hidden}.sidebar{min-height:0;overflow:auto}
|
|
49
|
-
.files{min-height:0;overflow:hidden}.files>:not(.table-wrap){flex-shrink:0}
|
|
50
|
-
.table-wrap{flex:1;min-height:0;overflow:auto;overscroll-behavior:contain}
|
|
51
|
-
.table-wrap thead{position:sticky;top:0;background:#fff;z-index:1}
|
|
52
|
-
.list-footer{margin-top:0;flex-shrink:0}.preview-panel{min-height:0;overflow:hidden}
|
|
53
|
-
.preview-heading,.preview-actions{flex-shrink:0}.preview-body{min-height:0;overflow:auto;overscroll-behavior:contain;padding-right:6px}
|
|
54
|
-
.preview-actions{border-top:1px solid #dbe3de;margin-top:16px;padding-top:16px;background:#f8faf7}
|
|
55
|
-
.preview-body h4{font-size:12px;font-weight:600;margin:24px 0 12px;color:#496553}
|
|
56
|
-
.preview-body dl{grid-template-columns:78px minmax(0,1fr)}.preview-body dt{overflow-wrap:anywhere}
|
|
57
|
-
.preview-body .metadata-list{grid-template-columns:minmax(0,1fr);gap:5px}.metadata-list dd{padding-bottom:9px}
|
|
58
|
-
.copy-field{display:flex;align-items:flex-start;gap:6px;min-width:0}.copy-field>span{min-width:0;overflow-wrap:anywhere}
|
|
59
|
-
.copy-button{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;padding:2px;width:24px;height:24px;margin-top:-3px}
|
|
60
|
-
.copy-button svg{width:15px;height:15px}.copy-button.copied{color:#18764e;background:#e1f2e7}
|
|
61
|
-
.copy-field a{color:#197854;text-underline-offset:3px;line-height:1.7}.copy-manual{width:100%;font:inherit}
|
|
62
|
-
.clipboard-fallback{position:fixed;left:0;top:0;opacity:0;pointer-events:none}
|
|
63
|
-
.icon-button{color:#526f5e}.icon-button svg{display:block}.is-loading svg{animation:oss-refresh-spin .8s linear infinite}
|
|
64
|
-
@keyframes oss-refresh-spin{to{transform:rotate(360deg)}}
|
|
65
|
-
@media(prefers-reduced-motion:reduce){.is-loading svg{animation:none}.is-loading{opacity:.55}}
|
|
66
|
-
@media(max-width:820px){.workspace{display:flex;flex-direction:column;overflow:auto}.files{flex:none;height:58dvh;min-height:330px}.preview-panel{flex:none;height:45dvh;min-height:270px}.preview-body pre{max-height:none}}
|
|
67
|
-
|
|
68
|
-
.topbar{height:auto;min-height:62px;flex-wrap:wrap;gap:12px;padding-top:10px;padding-bottom:10px}#service-stop{font-size:12px;background:transparent;border-color:#82958a;color:#edf5ef}.upload-actions{display:flex;gap:8px}.tasks-panel{position:fixed;right:20px;bottom:20px;top:155px;width:min(480px,calc(100vw - 32px));z-index:5;background:#fff;border:1px solid #cbd9cf;border-radius:10px;box-shadow:0 12px 50px #20372e30;display:flex;flex-direction:column;overflow:hidden}.tasks-heading{display:flex;align-items:center;justify-content:space-between;padding:15px 18px;border-bottom:1px solid #e4ebe5}.tasks-note{font-size:12px;line-height:1.8;color:#718577;padding:12px 18px}.tasks-list{overflow:auto;overscroll-behavior:contain;flex:1;min-height:0}.task-card{padding:15px 18px;border-top:1px solid #e8eee9}.task-card h3{font-size:13px;margin:0 0 7px;overflow-wrap:anywhere;font-weight:550}.task-meta,.task-path,.task-stats{font-size:11px;color:#738a7b;line-height:1.7;overflow-wrap:anywhere}.task-path{font-family:ui-monospace,SFMono-Regular,monospace}.task-card progress{width:100%;height:6px;accent-color:#227b54;margin:10px 0 6px}.task-actions{display:flex;gap:7px;margin-top:10px}.task-actions button{font-size:12px;padding:5px 10px}.task-error,#tasks-connection{font-size:12px;color:#9f4b40;line-height:1.7;overflow-wrap:anywhere}.task-error{margin-top:8px}#tasks-connection{padding:0 18px 10px}#tasks-toggle{font-size:12px;background:#2f4b3e;border-color:#607969;color:#edf5ef}#tasks-count{font-variant-numeric:tabular-nums;margin-left:5px}@media(max-width:820px){.tasks-panel{top:140px;right:16px;bottom:16px}.upload-actions{gap:5px}.upload-actions button{font-size:12px;padding:7px 9px}}
|
|
69
|
-
|
|
70
|
-
/* Collapsed rails keep both expand buttons visible and give space back to the file list. */
|
|
71
|
-
.workspace{--sidebar-width:205px;--preview-width:310px;grid-template-columns:var(--sidebar-width) minmax(0,1fr) var(--preview-width)}
|
|
72
|
-
.sidebar-heading{display:flex;align-items:center;justify-content:space-between;gap:6px;flex-shrink:0}.sidebar-heading .eyebrow{letter-spacing:1px;font-size:11px}
|
|
73
|
-
.panel-toggle{width:28px;height:28px;padding:0;flex-shrink:0;font-size:24px;line-height:1}
|
|
74
|
-
.sidebar-content{display:flex;flex-direction:column;flex:1;min-height:0;overflow:auto}.sidebar-content>.scope{padding:0 10px}.sidebar-content .root-button{flex-shrink:0}
|
|
75
|
-
.preview-content{display:flex;flex-direction:column;flex:1;min-height:0;overflow:hidden}
|
|
76
|
-
@media(min-width:1500px){.workspace{--sidebar-width:235px;--preview-width:370px}}
|
|
77
|
-
@media(min-width:821px) and (max-width:1100px){.workspace{--sidebar-width:160px;--preview-width:260px}}
|
|
78
|
-
.workspace[data-sidebar-collapsed=true]{--sidebar-width:44px}.workspace[data-preview-collapsed=true]{--preview-width:44px}
|
|
79
|
-
.workspace[data-sidebar-collapsed=true] .sidebar,.workspace[data-preview-collapsed=true] .preview-panel{padding:20px 7px;overflow:hidden}
|
|
80
|
-
.workspace[data-sidebar-collapsed=true] .sidebar-heading,.workspace[data-preview-collapsed=true] .preview-heading{flex-direction:column-reverse;gap:16px}
|
|
81
|
-
.workspace[data-sidebar-collapsed=true] .sidebar-heading h2,.workspace[data-preview-collapsed=true] .preview-heading h2{writing-mode:vertical-rl;letter-spacing:2px;font-size:11px;padding:0;font-weight:500}
|
|
82
|
-
@media(max-width:820px){
|
|
83
|
-
.sidebar{display:flex;flex:none;padding:12px 18px;max-height:38dvh;border-right:0;border-bottom:1px solid #dbe3de}.sidebar-content{flex:auto}.sidebar-bottom{padding-top:16px}.sidebar-heading .eyebrow{padding-left:0}
|
|
84
|
-
.workspace[data-sidebar-collapsed=true] .sidebar,.workspace[data-preview-collapsed=true] .preview-panel{height:auto;min-height:0;max-height:none;padding:8px 18px}
|
|
85
|
-
.workspace[data-sidebar-collapsed=true] .sidebar-heading,.workspace[data-preview-collapsed=true] .preview-heading{flex-direction:row;gap:8px}
|
|
86
|
-
.workspace[data-sidebar-collapsed=true] .sidebar-heading h2,.workspace[data-preview-collapsed=true] .preview-heading h2{writing-mode:horizontal-tb;letter-spacing:1px}
|
|
87
|
-
}
|
|
88
|
-
`;
|
|
36
|
+
export const OSS_WEB_CSS = FILE_WORKSPACE_CSS;
|
|
89
37
|
export const OSS_WEB_JS = String.raw `(() => {
|
|
38
|
+
${LOCAL_CONTEXT_MENU_JS}
|
|
39
|
+
${FILE_WORKSPACE_JS}
|
|
90
40
|
'use strict';
|
|
91
41
|
const $ = id => document.getElementById(id);
|
|
92
42
|
const fragment = new URLSearchParams(location.hash.slice(1));
|
|
@@ -185,14 +135,11 @@ function visible() { const query = $('search').value.toLocaleLowerCase(); return
|
|
|
185
135
|
function renderRows() {
|
|
186
136
|
const body = $('rows'); body.replaceChildren(); const rows = visible();
|
|
187
137
|
for (const row of rows) {
|
|
188
|
-
const tr = node('tr'); tr.oncontextmenu = event => openFileMenu(event, row); tr.tabIndex = 0; tr.onkeydown = event => { if (event.key === 'ContextMenu' || event.shiftKey && event.key === 'F10') openFileMenu(event, row, tr); }; if (state.file?.key === row.key) tr.className = 'active';
|
|
189
138
|
const checkCell = node('td', undefined, 'check-cell');
|
|
190
139
|
{ const check = document.createElement('input'); check.type = 'checkbox'; check.checked = state.selected.has(row.key); check.setAttribute('aria-label', '选择 ' + displayName(row.key)); check.onchange = () => { if (check.checked) state.selected.add(row.key); else state.selected.delete(row.key); updateSelection(); controls(); }; checkCell.append(check); }
|
|
191
|
-
tr.
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
button.onclick = () => row.directory ? navigate(row.key) : preview(row); name.append(button); tr.append(name);
|
|
195
|
-
tr.append(node('td', row.directory ? '—' : bytes(row.sizeBytes), 'size-cell'), node('td', date(row.lastModified), 'date-cell'));
|
|
140
|
+
const tr=workspaceFileRow({leading:checkCell,title:row.key,name:displayName(row.key.slice(state.dir.length)||row.key),icon:row.directory?'folder-icon':'file-icon',selected:state.file?.key===row.key,
|
|
141
|
+
onOpen:()=>row.directory?navigate(row.key):preview(row),onMenu:(event,anchor)=>openFileMenu(event,row,anchor),
|
|
142
|
+
cells:[[row.directory?'—':bytes(row.sizeBytes),'size-cell'],[date(row.lastModified),'date-cell']]});
|
|
196
143
|
body.append(tr);
|
|
197
144
|
}
|
|
198
145
|
$('empty').hidden = rows.length > 0; $('empty').textContent = state.loading ? '正在读取文件…' : $('search').value ? '已加载列表中没有匹配项' : '此目录暂无文件';
|
|
@@ -419,24 +366,13 @@ function renderTasks(jobs) {
|
|
|
419
366
|
for (const job of jobs) {
|
|
420
367
|
let card = taskCards.get(job.id);
|
|
421
368
|
if (!card) {
|
|
422
|
-
|
|
423
|
-
progress.max = 100; progress.setAttribute('aria-label', '文件传输进度');
|
|
424
|
-
const actions = new Map();
|
|
425
|
-
for (const [action, label] of [['pause','暂停'],['resume','恢复'],['cancel','取消']]) { const button = node('button', label); button.onclick = () => taskAction(job.id, action); actions.set(action, button); buttons.append(button); }
|
|
426
|
-
root.append(title, meta, path, progress, stats, error, buttons); $('tasks-list').append(root);
|
|
427
|
-
card = { root, title, meta, path, progress, stats, error, actions }; taskCards.set(job.id, card);
|
|
369
|
+
card=createWorkspaceTransferCard(job.id,taskAction);$('tasks-list').append(card.root);taskCards.set(job.id,card);
|
|
428
370
|
}
|
|
429
371
|
const prior = taskStatuses.get(job.id);
|
|
430
372
|
if ((prior || transfersLoaded) && prior !== 'completed' && job.status === 'completed' && job.direction === 'upload') markListingChanged(job.grantId);
|
|
431
373
|
taskStatuses.set(job.id, job.status);
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
card.progress.value = job.size > 0 ? Math.min(100, job.transferred / job.size * 100) : job.status === 'completed' ? 100 : 0;
|
|
435
|
-
card.progress.setAttribute('aria-valuetext', bytes(job.transferred) + ' / ' + bytes(job.size));
|
|
436
|
-
setText(card.stats, bytes(job.transferred) + ' / ' + bytes(job.size) + (job.status === 'running' ? ' · ' + bytes(Math.max(0, Number(job.bytesPerSecond) || 0)) + '/s' : ''));
|
|
437
|
-
setText(card.error, job.error || ''); card.error.hidden = !job.error;
|
|
438
|
-
const available = { pause: ['queued','running'].includes(job.status), resume: ['paused','failed'].includes(job.status), cancel: ['queued','running','paused','failed'].includes(job.status) };
|
|
439
|
-
for (const [action, button] of card.actions) { button.hidden = !available[action]; button.disabled = taskBusy.has(job.id); }
|
|
374
|
+
updateWorkspaceTransferCard(card,job,{title:job.key,meta:(job.direction==='upload'?'上传':'下载')+' · Grant #'+job.grantId+' · '+(taskLabels[job.status]||'状态未知'),
|
|
375
|
+
progress:bytes(job.transferred)+' / '+bytes(job.size),stats:bytes(job.transferred)+' / '+bytes(job.size)+(job.status==='running'?' · '+bytes(Math.max(0,Number(job.bytesPerSecond)||0))+'/s':'')},taskBusy.has(job.id));
|
|
440
376
|
}
|
|
441
377
|
$('tasks-empty').hidden = jobs.length > 0;
|
|
442
378
|
setText($('tasks-count'), String(jobs.length));
|
|
@@ -475,7 +411,7 @@ async function deleteFiles() {
|
|
|
475
411
|
catch (error) { fail(error); }
|
|
476
412
|
finally { state.mutating = false; controls(); }
|
|
477
413
|
}
|
|
478
|
-
let
|
|
414
|
+
let permissionTipOwner = null, permissionTipTimer = null;
|
|
479
415
|
function hidePermissionTip() { clearTimeout(permissionTipTimer); permissionTipTimer = null; $('permission-tip').hidden = true; permissionTipOwner?.removeAttribute('aria-describedby'); permissionTipOwner = null; }
|
|
480
416
|
function showPermissionTip(button, missing) {
|
|
481
417
|
hidePermissionTip(); button.focus(); permissionTipOwner = button;
|
|
@@ -486,18 +422,19 @@ function showPermissionTip(button, missing) {
|
|
|
486
422
|
tip.style.left = Math.max(8,Math.min(bounds.left,window.innerWidth - tip.offsetWidth - 8)) + 'px';
|
|
487
423
|
tip.style.top = Math.max(8,Math.min(bounds.bottom + 6,window.innerHeight - tip.offsetHeight - 8)) + 'px';
|
|
488
424
|
}
|
|
489
|
-
|
|
425
|
+
const fileMenu = createLocalContextMenu($('file-menu'), hidePermissionTip);
|
|
426
|
+
function closeFileMenu(restore = false) { fileMenu.close(restore); }
|
|
490
427
|
function openFileMenu(event, row, anchor) {
|
|
491
428
|
event.preventDefault(); closeFileMenu();
|
|
492
429
|
if (!state.ready || state.stopping || state.mutating || remaining() <= 0) return;
|
|
493
|
-
const menu = $('file-menu'); document.body.append(menu,$('permission-tip'));
|
|
430
|
+
const menu = $('file-menu'); document.body.append(menu,$('permission-tip')); fileMenu.begin(event,anchor);
|
|
494
431
|
const permissions = {read:'读取权限(oss:GetObject)',write:'写入权限(oss:PutObject)',delete:'删除权限(oss:DeleteObject)',list:'列举权限(oss:ListObjects)'};
|
|
495
432
|
const actions = [['delete',row.directory ? '删除文件夹…' : '删除文件…',['delete']],['copy','拷贝到…',['read','write']],['move','移动到…',['read','write','delete']],['rename','重命名…',['read','write','delete']]];
|
|
496
433
|
for (const [kind,label,required] of actions) {
|
|
497
434
|
const missing = [...required,...(row.directory ? ['list'] : [])].filter(permission => !state.session[permission]).map(permission => permissions[permission]);
|
|
498
|
-
const button =
|
|
435
|
+
const button = fileMenu.item(label, () => { if (kind === 'delete') askDelete([row.key]); else askOperation(kind,row); },
|
|
436
|
+
{danger:kind === 'delete',disabled:missing.length > 0,onDisabled:button => showPermissionTip(button,missing)});
|
|
499
437
|
button.onblur = hidePermissionTip;
|
|
500
|
-
button.onclick = () => { if (missing.length) { showPermissionTip(button,missing); return; } closeFileMenu(); if (kind === 'delete') askDelete([row.key]); else askOperation(kind,row); }; menu.append(button);
|
|
501
438
|
}
|
|
502
439
|
const selected = state.selected.has(row.key) ? state.rows.filter(item => state.selected.has(item.key)) : [row];
|
|
503
440
|
const links = node('button', '临时下载链接…'); links.setAttribute('role','menuitem');
|
|
@@ -508,11 +445,7 @@ function openFileMenu(event, row, anchor) {
|
|
|
508
445
|
const missing = [...new Set(selected.map(item => item.directory ? 'list' : 'read'))].filter(permission => !state.session[permission]).map(permission => permissions[permission]);
|
|
509
446
|
statistics.setAttribute('aria-disabled',String(missing.length > 0)); statistics.onblur = hidePermissionTip;
|
|
510
447
|
statistics.onclick = () => { if (missing.length) { showPermissionTip(statistics,missing); return; } closeFileMenu(); startStatistics(selected); }; menu.append(statistics);
|
|
511
|
-
|
|
512
|
-
const bounds = anchor?.getBoundingClientRect();
|
|
513
|
-
menu.style.left = Math.max(8, Math.min(bounds ? bounds.left : event.clientX, window.innerWidth - menu.offsetWidth - 8)) + 'px';
|
|
514
|
-
menu.style.top = Math.max(8, Math.min(bounds ? bounds.bottom : event.clientY, window.innerHeight - menu.offsetHeight - 8)) + 'px';
|
|
515
|
-
[...menu.children].find(button => !button.disabled)?.focus();
|
|
448
|
+
fileMenu.show(event,anchor);
|
|
516
449
|
}
|
|
517
450
|
let destinationTree = null;
|
|
518
451
|
function clearDestinationTree() {
|
|
@@ -598,7 +531,7 @@ async function loadDestinationBranch(tree, branch) {
|
|
|
598
531
|
function openDestinationMenu(event, tree, branch, anchor) {
|
|
599
532
|
event.preventDefault(); event.stopPropagation(); closeFileMenu();
|
|
600
533
|
if (tree !== destinationTree || state.mutating || state.stopping || branch.choose.disabled) return;
|
|
601
|
-
const menu = $('file-menu');
|
|
534
|
+
const menu = $('file-menu'); fileMenu.begin(event,anchor || branch.item,$('operation-dialog'));
|
|
602
535
|
// A modal dialog makes body-level menus inert; keep the menu and tooltip in its top layer.
|
|
603
536
|
$('operation-dialog').append(menu,$('permission-tip'));
|
|
604
537
|
const create = node('button','创建子目录…'); create.setAttribute('role','menuitem'); create.setAttribute('aria-disabled',String(!tree.writable));
|
|
@@ -612,11 +545,7 @@ function openDestinationMenu(event, tree, branch, anchor) {
|
|
|
612
545
|
branch.status.hidden = false; branch.status.textContent = ''; branch.more.hidden = !branch.marker;
|
|
613
546
|
branch.editor.hidden = false; branch.nameInput.value = ''; branch.nameInput.focus();
|
|
614
547
|
};
|
|
615
|
-
menu.append(create);
|
|
616
|
-
const bounds = anchor?.getBoundingClientRect();
|
|
617
|
-
menu.style.left = Math.max(8,Math.min(bounds ? bounds.left : event.clientX,window.innerWidth - menu.offsetWidth - 8)) + 'px';
|
|
618
|
-
menu.style.top = Math.max(8,Math.min(bounds ? bounds.bottom : event.clientY,window.innerHeight - menu.offsetHeight - 8)) + 'px';
|
|
619
|
-
create.focus();
|
|
548
|
+
menu.append(create); fileMenu.show(event,anchor);
|
|
620
549
|
}
|
|
621
550
|
async function createDestinationDirectory(tree, branch) {
|
|
622
551
|
if (tree !== destinationTree || !tree.writable || state.mutating || state.stopping || branch.choose.disabled) return;
|
|
@@ -783,17 +712,6 @@ $('operation-dialog').oncancel = event => { if (state.mutating) { event.preventD
|
|
|
783
712
|
$('operation-value').oninput = syncDestinationSelection;
|
|
784
713
|
$('operation-confirm').onclick = confirmOperation;
|
|
785
714
|
$('operation-value').onkeydown = event => { if (event.key === 'Enter') { event.preventDefault(); confirmOperation(); } };
|
|
786
|
-
document.addEventListener('click', event => { if (!$('file-menu').contains(event.target)) closeFileMenu(); });
|
|
787
|
-
document.addEventListener('keydown', event => {
|
|
788
|
-
const menu = $('file-menu'); if (menu.hidden) return;
|
|
789
|
-
if (event.key === 'Escape' || event.key === 'Tab') { if (event.key === 'Escape') event.preventDefault(); closeFileMenu(true); return; }
|
|
790
|
-
if (['ArrowDown','ArrowUp','Home','End'].includes(event.key)) {
|
|
791
|
-
event.preventDefault(); const buttons = [...menu.children].filter(button => !button.disabled), index = buttons.indexOf(document.activeElement);
|
|
792
|
-
const next = event.key === 'Home' ? 0 : event.key === 'End' ? buttons.length - 1 : (index + (event.key === 'ArrowDown' ? 1 : buttons.length - 1)) % buttons.length;
|
|
793
|
-
buttons[next]?.focus();
|
|
794
|
-
}
|
|
795
|
-
});
|
|
796
|
-
document.addEventListener('scroll', () => closeFileMenu(), true);
|
|
797
715
|
setInterval(pollOperations, 1000);
|
|
798
716
|
let pollingService = false;
|
|
799
717
|
async function pollService() {
|
package/dist/oss/web-page.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web-page.js","sourceRoot":"","sources":["../../src/oss/web-page.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEjE,iGAAiG;AACjG,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAA;;;;4PAIsN,gBAAgB;;;;;mOAKzC,gBAAgB;;;;;;;;;;;;;;;;;;;2BAmBxN,aAAa;eACzB,CAAC;AAEhB,MAAM,CAAC,MAAM,WAAW,GAAG,
|
|
1
|
+
{"version":3,"file":"web-page.js","sourceRoot":"","sources":["../../src/oss/web-page.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEjE,iGAAiG;AACjG,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAA;;;;4PAIsN,gBAAgB;;;;;mOAKzC,gBAAgB;;;;;;;;;;;;;;;;;;;2BAmBxN,aAAa;eACzB,CAAC;AAEhB,MAAM,CAAC,MAAM,WAAW,GAAG,kBAAkB,CAAC;AAE9C,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAA;EAClC,qBAAqB;EACrB,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA+uBb,CAAC"}
|
package/dist/oss/web.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { localWebHeaders as headers, strictLocalJson as strictJson, requireLocalOrigin, requireLocalAuthorization } from '../local-web/security.js';
|
|
2
|
+
import { createHash, randomBytes, randomUUID } from "node:crypto";
|
|
2
3
|
import { createServer } from "node:http";
|
|
3
4
|
import { mkdtemp, rm } from "node:fs/promises";
|
|
4
5
|
import { tmpdir } from "node:os";
|
|
@@ -36,14 +37,6 @@ export function readyWebGrants(grants) {
|
|
|
36
37
|
return grants.filter(g => g.status === "ACTIVE" && g.cloudPolicySynced && g.roleName && g.bucketName
|
|
37
38
|
&& g.effect !== "Deny" && g.maxSessionSeconds >= 900);
|
|
38
39
|
}
|
|
39
|
-
function headers(res, contentType) {
|
|
40
|
-
res.setHeader("Content-Type", contentType);
|
|
41
|
-
res.setHeader("Cache-Control", "no-store");
|
|
42
|
-
res.setHeader("X-Content-Type-Options", "nosniff");
|
|
43
|
-
res.setHeader("Referrer-Policy", "no-referrer");
|
|
44
|
-
res.setHeader("X-Frame-Options", "DENY");
|
|
45
|
-
res.setHeader("Content-Security-Policy", "default-src 'none'; script-src 'self'; style-src 'self'; connect-src 'self'; img-src 'self' data:; frame-ancestors 'none'; base-uri 'none'; form-action 'none'");
|
|
46
|
-
}
|
|
47
40
|
function json(res, status, value) {
|
|
48
41
|
headers(res, "application/json; charset=utf-8");
|
|
49
42
|
res.writeHead(status);
|
|
@@ -120,29 +113,6 @@ async function limited(stream, max) {
|
|
|
120
113
|
stream.destroy();
|
|
121
114
|
}
|
|
122
115
|
}
|
|
123
|
-
async function strictJson(req, allowedKeys) {
|
|
124
|
-
const chunks = [];
|
|
125
|
-
let size = 0;
|
|
126
|
-
for await (const value of req) {
|
|
127
|
-
const chunk = Buffer.isBuffer(value) ? value : Buffer.from(value);
|
|
128
|
-
size += chunk.length;
|
|
129
|
-
if (size > 64 * 1024)
|
|
130
|
-
throw new OssError("Request body too large", "oss_input_invalid", 400);
|
|
131
|
-
chunks.push(chunk);
|
|
132
|
-
}
|
|
133
|
-
let value;
|
|
134
|
-
try {
|
|
135
|
-
value = JSON.parse(Buffer.concat(chunks).toString("utf8"));
|
|
136
|
-
}
|
|
137
|
-
catch {
|
|
138
|
-
throw new OssError("Invalid JSON", "oss_input_invalid", 400);
|
|
139
|
-
}
|
|
140
|
-
if (!value || typeof value !== "object" || Array.isArray(value)
|
|
141
|
-
|| Object.keys(value).some(key => !allowedKeys.includes(key))) {
|
|
142
|
-
throw new OssError("Invalid request fields", "oss_input_invalid", 400);
|
|
143
|
-
}
|
|
144
|
-
return value;
|
|
145
|
-
}
|
|
146
116
|
function uploadInput(value) {
|
|
147
117
|
if (Object.keys(value).length !== 2 || typeof value.prefix !== "string" || typeof value.folder !== "boolean") {
|
|
148
118
|
throw new OssError("Invalid upload request", "oss_input_invalid", 400);
|
|
@@ -271,11 +241,7 @@ export async function startOssWeb(options) {
|
|
|
271
241
|
const sockets = new Set();
|
|
272
242
|
const server = createServer((req, res) => {
|
|
273
243
|
void (async () => {
|
|
274
|
-
|
|
275
|
-
throw new OssError("Host", "oss_web_host", 421);
|
|
276
|
-
if ((req.headers.origin && req.headers.origin !== origin) || req.headers["sec-fetch-site"] === "cross-site") {
|
|
277
|
-
throw new OssError("Origin", "oss_web_origin", 403);
|
|
278
|
-
}
|
|
244
|
+
requireLocalOrigin(req, origin);
|
|
279
245
|
const url = new URL(req.url ?? "/", origin);
|
|
280
246
|
const assets = { "/": ["text/html; charset=utf-8", OSS_WEB_HTML],
|
|
281
247
|
"/app.css": ["text/css; charset=utf-8", OSS_WEB_CSS], "/app.js": ["text/javascript; charset=utf-8", OSS_WEB_JS] };
|
|
@@ -285,14 +251,7 @@ export async function startOssWeb(options) {
|
|
|
285
251
|
res.end(body);
|
|
286
252
|
return;
|
|
287
253
|
}
|
|
288
|
-
|
|
289
|
-
const expected = `Bearer ${token}`;
|
|
290
|
-
if (Buffer.byteLength(bearer) !== Buffer.byteLength(expected) || !timingSafeEqual(Buffer.from(bearer), Buffer.from(expected))) {
|
|
291
|
-
throw new OssError("Token", "oss_web_unauthorized", 401);
|
|
292
|
-
}
|
|
293
|
-
if (!["GET", "HEAD"].includes(req.method ?? "") && req.headers.origin !== origin) {
|
|
294
|
-
throw new OssError("Origin", "oss_web_origin", 403);
|
|
295
|
-
}
|
|
254
|
+
requireLocalAuthorization(req, origin, token);
|
|
296
255
|
if (req.method === "GET" && url.pathname === "/api/service") {
|
|
297
256
|
json(res, 200, { ok: true, service: serviceInfo(identity, queue.list(), shutdownRequested, operations.list().filter(job => ['running', 'stopping'].includes(job.status)).length) });
|
|
298
257
|
return;
|
package/dist/oss/web.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web.js","sourceRoot":"","sources":["../../src/oss/web.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"web.js","sourceRoot":"","sources":["../../src/oss/web.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,6 +16,18 @@ declare const ServiceSchema: z.ZodObject<{
|
|
|
16
16
|
issuerAuthorities: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
17
17
|
capabilityUrl: z.ZodOptional<z.ZodString>;
|
|
18
18
|
configuration: z.ZodOptional<z.ZodObject<{
|
|
19
|
+
environments: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
20
|
+
name: z.ZodString;
|
|
21
|
+
namespace: z.ZodOptional<z.ZodString>;
|
|
22
|
+
envId: z.ZodOptional<z.ZodNumber>;
|
|
23
|
+
baseUrl: z.ZodString;
|
|
24
|
+
resource: z.ZodString;
|
|
25
|
+
authority: z.ZodString;
|
|
26
|
+
audience: z.ZodString;
|
|
27
|
+
roleClientId: z.ZodString;
|
|
28
|
+
apiVersion: z.ZodString;
|
|
29
|
+
}, z.core.$strip>>>;
|
|
30
|
+
defaultEnvironment: z.ZodOptional<z.ZodString>;
|
|
19
31
|
defaultNamespaceKey: z.ZodOptional<z.ZodString>;
|
|
20
32
|
skillBootstrap: z.ZodOptional<z.ZodObject<{
|
|
21
33
|
enabled: z.ZodBoolean;
|
|
@@ -72,6 +84,18 @@ declare const ProfileSchema: z.ZodObject<{
|
|
|
72
84
|
issuerAuthorities: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
73
85
|
capabilityUrl: z.ZodOptional<z.ZodString>;
|
|
74
86
|
configuration: z.ZodOptional<z.ZodObject<{
|
|
87
|
+
environments: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
88
|
+
name: z.ZodString;
|
|
89
|
+
namespace: z.ZodOptional<z.ZodString>;
|
|
90
|
+
envId: z.ZodOptional<z.ZodNumber>;
|
|
91
|
+
baseUrl: z.ZodString;
|
|
92
|
+
resource: z.ZodString;
|
|
93
|
+
authority: z.ZodString;
|
|
94
|
+
audience: z.ZodString;
|
|
95
|
+
roleClientId: z.ZodString;
|
|
96
|
+
apiVersion: z.ZodString;
|
|
97
|
+
}, z.core.$strip>>>;
|
|
98
|
+
defaultEnvironment: z.ZodOptional<z.ZodString>;
|
|
75
99
|
defaultNamespaceKey: z.ZodOptional<z.ZodString>;
|
|
76
100
|
skillBootstrap: z.ZodOptional<z.ZodObject<{
|
|
77
101
|
enabled: z.ZodBoolean;
|
|
@@ -158,7 +182,7 @@ export declare function resolvePlatformProfile(sourceUrl: string, options?: {
|
|
|
158
182
|
warn?: (message: string) => void;
|
|
159
183
|
cacheDirectory?: string;
|
|
160
184
|
}): Promise<ResolvedPlatformProfile>;
|
|
161
|
-
export declare function requireProfileService(key: PlatformServiceKey, issuer?: string): {
|
|
185
|
+
export declare function requireProfileService(key: PlatformServiceKey, issuer?: string, environment?: string): {
|
|
162
186
|
profile: ResolvedPlatformProfile;
|
|
163
187
|
service: z.infer<typeof ServiceSchema>;
|
|
164
188
|
authority: z.infer<typeof AuthoritySchema>;
|
package/dist/platform-profile.js
CHANGED
|
@@ -11,6 +11,14 @@ const AuthoritySchema = z.object({
|
|
|
11
11
|
clientId: z.string().min(1),
|
|
12
12
|
scopes: z.array(z.string().min(1)).min(1)
|
|
13
13
|
});
|
|
14
|
+
const ServiceEnvironmentSchema = z.object({
|
|
15
|
+
name: z.string().min(1),
|
|
16
|
+
namespace: z.string().min(1).optional(),
|
|
17
|
+
envId: z.number().int().positive().optional(),
|
|
18
|
+
baseUrl: z.string().url(), resource: z.string().url(),
|
|
19
|
+
authority: z.string().min(1), audience: z.string().min(1),
|
|
20
|
+
roleClientId: z.string().min(1), apiVersion: z.string().min(1)
|
|
21
|
+
});
|
|
14
22
|
const ServiceSchema = z.object({
|
|
15
23
|
baseUrl: z.string().url(),
|
|
16
24
|
resource: z.string().url(),
|
|
@@ -22,6 +30,8 @@ const ServiceSchema = z.object({
|
|
|
22
30
|
issuerAuthorities: z.record(z.string(), z.string().min(1)).optional(),
|
|
23
31
|
capabilityUrl: z.string().url().optional(),
|
|
24
32
|
configuration: z.object({
|
|
33
|
+
environments: z.record(z.string().regex(/^[A-Za-z0-9][A-Za-z0-9._-]{0,159}$/), ServiceEnvironmentSchema).optional(),
|
|
34
|
+
defaultEnvironment: z.string().min(1).optional(),
|
|
25
35
|
defaultNamespaceKey: z.string().min(1).optional(),
|
|
26
36
|
skillBootstrap: SkillBootstrapSchema.optional(),
|
|
27
37
|
skillDefaultsProfileUrl: z.string().url().optional(),
|
|
@@ -210,6 +220,24 @@ function validateProfile(raw) {
|
|
|
210
220
|
continue;
|
|
211
221
|
if (!Object.hasOwn(profile.authorities, parsedService.data.authority))
|
|
212
222
|
throw new Error(`服务 ${key} 引用了未知 authority`);
|
|
223
|
+
const environmentConfig = parsedService.data.configuration;
|
|
224
|
+
if (environmentConfig?.defaultEnvironment && !Object.hasOwn(environmentConfig.environments ?? {}, environmentConfig.defaultEnvironment))
|
|
225
|
+
throw new Error(`服务 ${key} 的默认环境未配置`);
|
|
226
|
+
if (environmentConfig?.defaultEnvironment) {
|
|
227
|
+
const target = environmentConfig.environments[environmentConfig.defaultEnvironment];
|
|
228
|
+
for (const field of ['baseUrl', 'resource', 'authority', 'audience', 'roleClientId', 'apiVersion'])
|
|
229
|
+
if (target[field] !== parsedService.data[field])
|
|
230
|
+
throw new Error(`服务 ${key} 的默认环境必须与默认服务配置一致,以兼容旧客户端`);
|
|
231
|
+
}
|
|
232
|
+
for (const environment of Object.values(environmentConfig?.environments ?? {})) {
|
|
233
|
+
if (!Object.hasOwn(profile.authorities, environment.authority))
|
|
234
|
+
throw new Error(`服务 ${key} 的环境引用了未知 authority`);
|
|
235
|
+
for (const value of [environment.baseUrl, environment.resource]) {
|
|
236
|
+
const url = new URL(value);
|
|
237
|
+
if (url.username || url.password || url.search || url.hash || (url.protocol !== "https:" && !(url.protocol === "http:" && ["localhost", "127.0.0.1", "[::1]"].includes(url.hostname))))
|
|
238
|
+
throw new Error(`服务 ${key} 的环境地址无效`);
|
|
239
|
+
}
|
|
240
|
+
}
|
|
213
241
|
for (const authority of Object.values(parsedService.data.issuerAuthorities ?? {}))
|
|
214
242
|
if (!Object.hasOwn(profile.authorities, authority))
|
|
215
243
|
throw new Error(`服务 ${key} 的 issuerAuthorities 引用了未知 authority`);
|
|
@@ -255,8 +283,10 @@ function compareVersions(left, right) {
|
|
|
255
283
|
function resolved(profile, sourceUrl, stale, legacyLocalOverrides) {
|
|
256
284
|
return { ...profile, sourceUrl, stale, ...(legacyLocalOverrides ? { legacyLocalOverrides } : {}) };
|
|
257
285
|
}
|
|
258
|
-
export function requireProfileService(key, issuer) {
|
|
286
|
+
export function requireProfileService(key, issuer, environment) {
|
|
259
287
|
if (!activeProfile) {
|
|
288
|
+
if (environment)
|
|
289
|
+
throw new Error("--environment 需要 Profile 环境配置。");
|
|
260
290
|
if (issuer)
|
|
261
291
|
throw new Error("--issuer 需要包含业务身份源配置的 Profile。");
|
|
262
292
|
return undefined;
|
|
@@ -264,6 +294,19 @@ export function requireProfileService(key, issuer) {
|
|
|
264
294
|
const service = ServiceSchema.safeParse(activeProfile.services[key]);
|
|
265
295
|
if (!service.success)
|
|
266
296
|
throw new ModuleUnavailableError(key);
|
|
297
|
+
if (environment && issuer)
|
|
298
|
+
throw new Error("--environment 与 --issuer 不能同时使用;环境已确定身份源。");
|
|
299
|
+
const environmentKey = environment ?? (!issuer ? service.data.configuration?.defaultEnvironment : undefined);
|
|
300
|
+
if (environmentKey) {
|
|
301
|
+
const environments = service.data.configuration?.environments ?? {};
|
|
302
|
+
if (!Object.hasOwn(environments, environmentKey))
|
|
303
|
+
throw new Error("指定环境不在当前 Profile 的服务环境列表中。");
|
|
304
|
+
const target = environments[environmentKey];
|
|
305
|
+
const authority = activeProfile.authorities[target.authority];
|
|
306
|
+
if (!authority)
|
|
307
|
+
throw new Error("服务环境引用了未知 authority。");
|
|
308
|
+
return { profile: activeProfile, service: { ...service.data, ...target }, authority };
|
|
309
|
+
}
|
|
267
310
|
const choices = service.data.issuerAuthorities;
|
|
268
311
|
if (issuer && !choices)
|
|
269
312
|
throw new Error(`当前 Profile ${activeProfile.profileId}(revision ${activeProfile.revision},来源 ${activeProfile.sourceUrl})未下发该服务可选业务 issuer。` +
|