feat(runtime): 即梦本机运行时 - 接入安全生成闭环与桌面本机渠道

Refs #225

Co-authored-by: zkhyww <127009345+zkhyww@users.noreply.github.com>
This commit is contained in:
ddCat
2026-08-15 12:45:29 +08:00
parent 8f2232feee
commit 57e1820f41
179 changed files with 49746 additions and 1897 deletions

View File

@@ -0,0 +1,33 @@
const LEGACY_STORAGE_KEYS = ["canvas-agent-url", "canvas-agent-token"] as const;
const LEGACY_QUERY_KEYS = ["agentUrl", "agentToken"] as const;
export type LocalRuntimeBootstrapState = {
legacyDeepLinkRejected: boolean;
};
let currentState: LocalRuntimeBootstrapState = { legacyDeepLinkRejected: false };
export function readLocalRuntimeBootstrapState() {
return { ...currentState };
}
type LocalRuntimeBootstrapEnvironment = {
readonly href: string;
replaceUrl(url: string): void;
removeStorageItem(key: string): void;
};
export function runLocalRuntimeBootstrap(environment: LocalRuntimeBootstrapEnvironment, loadApplication: (state: LocalRuntimeBootstrapState) => void) {
const url = new URL(environment.href);
const legacyDeepLinkRejected = LEGACY_QUERY_KEYS.some((key) => url.searchParams.has(key));
if (legacyDeepLinkRejected) {
for (const key of LEGACY_QUERY_KEYS) url.searchParams.delete(key);
environment.replaceUrl(`${url.pathname}${url.search}${url.hash}`);
}
for (const key of LEGACY_STORAGE_KEYS) environment.removeStorageItem(key);
const state = { legacyDeepLinkRejected };
currentState = state;
loadApplication(state);
return state;
}