dsh-data-domain-knowledge 0.1.0-alpha.13 → 0.1.0-alpha.15
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 +89 -56
- package/cordis.patch.yml +36 -129
- package/eval/benchmark-extraction-format.mjs +20 -0
- package/lib/client.js +3262 -4142
- package/lib/doc-page.js +1 -1
- package/lib/pages.js +1147 -364
- package/lib/types/axis-registry.d.ts +8 -1
- package/lib/types/axis-registry.d.ts.map +1 -1
- package/lib/types/axis-registry.js +62 -7
- package/lib/types/axis-registry.js.map +1 -1
- package/lib/types/convert/host.d.ts.map +1 -1
- package/lib/types/convert/host.js +3 -0
- package/lib/types/convert/host.js.map +1 -1
- package/lib/types/convert/ingest.d.ts +9 -0
- package/lib/types/convert/ingest.d.ts.map +1 -1
- package/lib/types/convert/ingest.js +68 -9
- package/lib/types/convert/ingest.js.map +1 -1
- package/lib/types/diagnosis/cards.d.ts +7 -3
- package/lib/types/diagnosis/cards.d.ts.map +1 -1
- package/lib/types/diagnosis/cards.js +13 -8
- package/lib/types/diagnosis/cards.js.map +1 -1
- package/lib/types/diagnosis/run.d.ts +4 -13
- package/lib/types/diagnosis/run.d.ts.map +1 -1
- package/lib/types/diagnosis/run.js +26 -16
- package/lib/types/diagnosis/run.js.map +1 -1
- package/lib/types/diagnosis/schema.js +2 -2
- package/lib/types/diagnosis/schema.js.map +1 -1
- package/lib/types/diagnosis/seed-source.d.ts +1 -1
- package/lib/types/diagnosis/seed-source.d.ts.map +1 -1
- package/lib/types/diagnosis/seed-source.js +5 -4
- package/lib/types/diagnosis/seed-source.js.map +1 -1
- package/lib/types/diagnosis/seed.d.ts +4 -4
- package/lib/types/diagnosis/seed.d.ts.map +1 -1
- package/lib/types/diagnosis/seed.js +6 -8
- package/lib/types/diagnosis/seed.js.map +1 -1
- package/lib/types/diagnosis/store.d.ts +18 -17
- package/lib/types/diagnosis/store.d.ts.map +1 -1
- package/lib/types/diagnosis/store.js +94 -66
- package/lib/types/diagnosis/store.js.map +1 -1
- package/lib/types/diagnosis/types.d.ts +10 -16
- package/lib/types/diagnosis/types.d.ts.map +1 -1
- package/lib/types/diagnosis/types.js.map +1 -1
- package/lib/types/environment/dsh-python.d.ts +77 -0
- package/lib/types/environment/dsh-python.d.ts.map +1 -0
- package/lib/types/environment/dsh-python.js +139 -0
- package/lib/types/environment/dsh-python.js.map +1 -0
- package/lib/types/environment/install.d.ts +9 -1
- package/lib/types/environment/install.d.ts.map +1 -1
- package/lib/types/environment/install.js +149 -24
- package/lib/types/environment/install.js.map +1 -1
- package/lib/types/environment/model-catalog.d.ts +34 -2
- package/lib/types/environment/model-catalog.d.ts.map +1 -1
- package/lib/types/environment/model-catalog.js +40 -2
- package/lib/types/environment/model-catalog.js.map +1 -1
- package/lib/types/environment/service.d.ts +13 -3
- package/lib/types/environment/service.d.ts.map +1 -1
- package/lib/types/environment/service.js +127 -23
- package/lib/types/environment/service.js.map +1 -1
- package/lib/types/environment/types.d.ts +9 -0
- package/lib/types/environment/types.d.ts.map +1 -1
- package/lib/types/events.d.ts +2 -0
- package/lib/types/events.d.ts.map +1 -1
- package/lib/types/events.js +13 -0
- package/lib/types/events.js.map +1 -1
- package/lib/types/extract-contract.d.ts +1 -1
- package/lib/types/extract-contract.d.ts.map +1 -1
- package/lib/types/extract-contract.js +34 -31
- package/lib/types/extract-contract.js.map +1 -1
- package/lib/types/extract-model.d.ts +2 -0
- package/lib/types/extract-model.d.ts.map +1 -1
- package/lib/types/extract-model.js.map +1 -1
- package/lib/types/extract-table-contract.d.ts +3 -0
- package/lib/types/extract-table-contract.d.ts.map +1 -0
- package/lib/types/extract-table-contract.js +30 -0
- package/lib/types/extract-table-contract.js.map +1 -0
- package/lib/types/extract-table.d.ts +8 -0
- package/lib/types/extract-table.d.ts.map +1 -0
- package/lib/types/extract-table.js +151 -0
- package/lib/types/extract-table.js.map +1 -0
- package/lib/types/extraction-runs.d.ts +30 -6
- package/lib/types/extraction-runs.d.ts.map +1 -1
- package/lib/types/extraction-runs.js +69 -8
- package/lib/types/extraction-runs.js.map +1 -1
- package/lib/types/fs-atomic.d.ts +0 -7
- package/lib/types/fs-atomic.d.ts.map +1 -1
- package/lib/types/fs-atomic.js +17 -2
- package/lib/types/fs-atomic.js.map +1 -1
- package/lib/types/images.d.ts +1 -1
- package/lib/types/images.d.ts.map +1 -1
- package/lib/types/images.js +2 -2
- package/lib/types/images.js.map +1 -1
- package/lib/types/index.d.ts.map +1 -1
- package/lib/types/index.js +232 -50
- package/lib/types/index.js.map +1 -1
- package/lib/types/intent/scope.d.ts.map +1 -1
- package/lib/types/intent/scope.js +1 -0
- package/lib/types/intent/scope.js.map +1 -1
- package/lib/types/intent/tools.d.ts +19 -0
- package/lib/types/intent/tools.d.ts.map +1 -1
- package/lib/types/intent/tools.js +37 -1
- package/lib/types/intent/tools.js.map +1 -1
- package/lib/types/knowledge-bases.d.ts.map +1 -1
- package/lib/types/knowledge-bases.js +5 -16
- package/lib/types/knowledge-bases.js.map +1 -1
- package/lib/types/knowledge.d.ts +3 -0
- package/lib/types/knowledge.d.ts.map +1 -1
- package/lib/types/knowledge.js +21 -5
- package/lib/types/knowledge.js.map +1 -1
- package/lib/types/materialize-snapshot.d.ts +49 -0
- package/lib/types/materialize-snapshot.d.ts.map +1 -0
- package/lib/types/materialize-snapshot.js +2 -0
- package/lib/types/materialize-snapshot.js.map +1 -0
- package/lib/types/model-text.d.ts +1 -1
- package/lib/types/model-text.d.ts.map +1 -1
- package/lib/types/model-text.js +5 -4
- package/lib/types/model-text.js.map +1 -1
- package/lib/types/oplog.d.ts.map +1 -1
- package/lib/types/oplog.js +7 -0
- package/lib/types/oplog.js.map +1 -1
- package/lib/types/pipeline/engine.d.ts +60 -0
- package/lib/types/pipeline/engine.d.ts.map +1 -0
- package/lib/types/pipeline/engine.js +338 -0
- package/lib/types/pipeline/engine.js.map +1 -0
- package/lib/types/pipeline/store.d.ts +73 -0
- package/lib/types/pipeline/store.d.ts.map +1 -0
- package/lib/types/pipeline/store.js +143 -0
- package/lib/types/pipeline/store.js.map +1 -0
- package/lib/types/pipeline/types.d.ts +101 -0
- package/lib/types/pipeline/types.d.ts.map +1 -0
- package/lib/types/pipeline/types.js +5 -0
- package/lib/types/pipeline/types.js.map +1 -0
- package/lib/types/present.d.ts +2 -0
- package/lib/types/present.d.ts.map +1 -1
- package/lib/types/present.js +9 -4
- package/lib/types/present.js.map +1 -1
- package/lib/types/retention.d.ts +39 -0
- package/lib/types/retention.d.ts.map +1 -0
- package/lib/types/retention.js +42 -0
- package/lib/types/retention.js.map +1 -0
- package/lib/types/runtime.d.ts +115 -5
- package/lib/types/runtime.d.ts.map +1 -1
- package/lib/types/runtime.js +862 -132
- package/lib/types/runtime.js.map +1 -1
- package/lib/types/source-evidence.d.ts +9 -1
- package/lib/types/source-evidence.d.ts.map +1 -1
- package/lib/types/source-evidence.js +13 -5
- package/lib/types/source-evidence.js.map +1 -1
- package/lib/types/store/axis-references.js +3 -3
- package/lib/types/store/axis-references.js.map +1 -1
- package/lib/types/store/derived.d.ts +1 -1
- package/lib/types/store/derived.d.ts.map +1 -1
- package/lib/types/store/derived.js +41 -7
- package/lib/types/store/derived.js.map +1 -1
- package/lib/types/store/knowledge-db.d.ts +18 -0
- package/lib/types/store/knowledge-db.d.ts.map +1 -1
- package/lib/types/store/knowledge-db.js +111 -6
- package/lib/types/store/knowledge-db.js.map +1 -1
- package/lib/types/store/migrate.js +1 -1
- package/lib/types/store/migrate.js.map +1 -1
- package/lib/types/trajectory-types.d.ts +172 -0
- package/lib/types/trajectory-types.d.ts.map +1 -0
- package/lib/types/trajectory-types.js +36 -0
- package/lib/types/trajectory-types.js.map +1 -0
- package/lib/types/types.d.ts +3 -4
- package/lib/types/types.d.ts.map +1 -1
- package/lib/types/types.js.map +1 -1
- package/lib/types/wiki-finalize.d.ts +16 -0
- package/lib/types/wiki-finalize.d.ts.map +1 -1
- package/lib/types/wiki-finalize.js +26 -0
- package/lib/types/wiki-finalize.js.map +1 -1
- package/lib/types/wiki-materialize.d.ts.map +1 -1
- package/lib/types/wiki-materialize.js +3 -15
- package/lib/types/wiki-materialize.js.map +1 -1
- package/lib/types/wiki-trial-types.d.ts +3 -0
- package/lib/types/wiki-trial-types.d.ts.map +1 -1
- package/lib/types/wiki-trial.d.ts +2 -0
- package/lib/types/wiki-trial.d.ts.map +1 -1
- package/lib/types/wiki-trial.js +31 -7
- package/lib/types/wiki-trial.js.map +1 -1
- package/package.json +6 -3
- package/preset/tita-data-agent/agent.cordis.yml +36 -129
- package/src/axis-registry.ts +57 -9
- package/src/client/AttributionEventGuide.tsx +10 -9
- package/src/client/CompileDialogs.tsx +10 -2
- package/src/client/EnvironmentSetup.tsx +76 -16
- package/src/client/ExpansionGraph.tsx +13 -7
- package/src/client/ExtractionTasksPage.tsx +543 -156
- package/src/client/ImportFilesDialog.tsx +2 -13
- package/src/client/IntentTab.tsx +3 -1
- package/src/client/KnowledgeBaseTab.tsx +139 -122
- package/src/client/KnowledgeLayerSection.tsx +19 -2
- package/src/client/KnowledgePanel.tsx +17 -3
- package/src/client/ListPager.tsx +15 -5
- package/src/client/MaterializeTrajectoryView.tsx +124 -0
- package/src/client/NodeSettings.tsx +90 -25
- package/src/client/NormalizeTrajectoryView.tsx +136 -0
- package/src/client/PipelineNotice.tsx +26 -0
- package/src/client/RecallPanel.tsx +55 -25
- package/src/client/TabGuide.tsx +4 -4
- package/src/client/TrialReportView.tsx +61 -16
- package/src/client/TypeDefinitionDrawer.tsx +33 -9
- package/src/client/WikiCardPreview.tsx +43 -10
- package/src/client/WikiFlowPanel.tsx +4 -4
- package/src/client/architecture.tsx +1 -1
- package/src/client/attribution/AttributionTab.tsx +37 -36
- package/src/client/attribution/CaseView.tsx +3 -1
- package/src/client/attribution/EventView.tsx +14 -4
- package/src/client/attribution/RunView.tsx +2 -2
- package/src/client/attribution/ViewSwitch.tsx +20 -5
- package/src/client/attribution/graph-options.ts +38 -31
- package/src/client/attribution/model.ts +16 -9
- package/src/client/graph/palette.ts +165 -0
- package/src/client/pages.css +224 -28
- package/src/client/pages.tsx +33 -11
- package/src/client/styles.css +61 -6
- package/src/client/wiki-trial.ts +30 -1
- package/src/convert/host.ts +3 -0
- package/src/convert/ingest.ts +73 -9
- package/src/diagnosis/cards.ts +13 -8
- package/src/diagnosis/run.ts +27 -17
- package/src/diagnosis/schema.ts +2 -2
- package/src/diagnosis/seed-source.ts +5 -4
- package/src/diagnosis/seed.ts +6 -8
- package/src/diagnosis/store.ts +99 -69
- package/src/diagnosis/types.ts +10 -16
- package/src/environment/dsh-python.ts +156 -0
- package/src/environment/install.ts +134 -19
- package/src/environment/model-catalog.ts +45 -3
- package/src/environment/service.ts +111 -23
- package/src/environment/types.ts +6 -0
- package/src/events.ts +12 -0
- package/src/extract-contract.ts +6 -3
- package/src/extract-model.ts +2 -0
- package/src/extract-table-contract.ts +29 -0
- package/src/extract-table.ts +126 -0
- package/src/extraction-runs.ts +70 -11
- package/src/fs-atomic.ts +19 -2
- package/src/images.ts +2 -2
- package/src/index.ts +207 -72
- package/src/intent/scope.ts +1 -0
- package/src/intent/tools.ts +38 -1
- package/src/knowledge-bases.ts +4 -12
- package/src/knowledge.ts +24 -4
- package/src/materialize-snapshot.ts +46 -0
- package/src/model-text.ts +5 -3
- package/src/oplog.ts +7 -0
- package/src/pipeline/engine.ts +312 -0
- package/src/pipeline/store.ts +147 -0
- package/src/pipeline/types.ts +92 -0
- package/src/present.ts +10 -4
- package/src/retention.ts +76 -0
- package/src/runtime.ts +853 -131
- package/src/source-evidence.ts +12 -5
- package/src/store/axis-references.ts +3 -3
- package/src/store/derived.ts +40 -7
- package/src/store/knowledge-db.ts +111 -5
- package/src/store/migrate.ts +1 -1
- package/src/trajectory-types.ts +142 -0
- package/src/types.ts +3 -4
- package/src/wiki-finalize.ts +28 -0
- package/src/wiki-materialize.ts +3 -14
- package/src/wiki-trial-types.ts +3 -0
- package/src/wiki-trial.ts +26 -7
- package/src/client/convert/ConvertPanel.tsx +0 -583
- package/src/client/convert/styles.css +0 -138
- package/src/client/convert/styles.ts +0 -49
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/diagnosis/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAE1D,oCAAoC;AACpC,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,WAAW,GAAG,UAAU,CAAA;AAEzD
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/diagnosis/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/diagnosis/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/diagnosis/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AA0KH,0BAA0B;AAC1B,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,CAAA"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DSH 自带 Python 的落点(2026-10-18)。
|
|
3
|
+
*
|
|
4
|
+
* 桌面端把 Python 3.12 **打在自己的运行时里**:
|
|
5
|
+
* `<App>/Contents/Resources/runtime/primary-runtime/dependencies/python`(清单见同目录
|
|
6
|
+
* `runtime.json` 的 `python` 字段)。但这一层没把位置告诉插件 —— 宿主不导出 `DSH_PYTHON`,
|
|
7
|
+
* 于是「一键准备」的默认值 `python3` 落到了系统那个 3.9(macOS 命令行工具自带的正是 3.9),
|
|
8
|
+
* 第一步就报「Python 版本不受支持」,而机器上明明有 3.12。
|
|
9
|
+
*
|
|
10
|
+
* 所以这里自己找,顺序是:
|
|
11
|
+
*
|
|
12
|
+
* 1. **`DSH_PYTHON`** —— 显式覆盖永远是第一位的(文档里承诺的自定义入口)。
|
|
13
|
+
* 2. **DSH 自带的那一个** —— 从宿主告诉我们的两个锚点推:Electron 的 `resourcesPath`,
|
|
14
|
+
* 以及 `process.execPath`(桌面端是 `Contents/MacOS/<App>`,`ELECTRON_RUN_AS_NODE` 下
|
|
15
|
+
* 它就是运行时用的那个可执行文件)。两者都会向上找几级,因为包装脚本与真实二进制的
|
|
16
|
+
* 层级不一定一样。
|
|
17
|
+
* 3. **PATH 上的 `python3`** —— 都没有才退回。
|
|
18
|
+
*
|
|
19
|
+
* ## 这里只回答「哪个路径最可能是它」,不回答「它是哪个版本」
|
|
20
|
+
*
|
|
21
|
+
* 版本判断必须由准备阶段做(它要跑一次 `sys.version_info`,并把结论写进安装日志)。
|
|
22
|
+
* 在这里再探测一遍等于把同步可判的事情做成两次异步调用,而且拿到版本也不知道该报给谁。
|
|
23
|
+
*/
|
|
24
|
+
import { runProcess } from './process.js';
|
|
25
|
+
export interface PythonPick {
|
|
26
|
+
/** 要拿去建虚拟环境的解释器。 */
|
|
27
|
+
path: string;
|
|
28
|
+
/** 它从哪来 —— 报错时要能说清「我没找到自带的那个」。 */
|
|
29
|
+
source: 'override' | 'bundled' | 'path';
|
|
30
|
+
}
|
|
31
|
+
export interface PythonProbe {
|
|
32
|
+
env?: Record<string, string | undefined>;
|
|
33
|
+
/** Electron 的 `process.resourcesPath`;不在 Electron 里时省略。 */
|
|
34
|
+
resourcesPath?: string;
|
|
35
|
+
/** 宿主的可执行文件路径;默认取 `process.execPath`。 */
|
|
36
|
+
execPath?: string;
|
|
37
|
+
platform?: NodeJS.Platform;
|
|
38
|
+
/** 存在性判断,测试里换成假的。 */
|
|
39
|
+
exists?: (path: string) => boolean;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* 挑一个基础解释器。**纯函数**(存在性判断可注入),所以「自带优先于 PATH」这条能被单独断言。
|
|
43
|
+
*/
|
|
44
|
+
export declare function pickBasePython(probe?: PythonProbe): PythonPick;
|
|
45
|
+
/** 报错里那句「没找到自带的那一个」用得上。 */
|
|
46
|
+
export declare function pythonSourceLabel(source: PythonPick['source']): string;
|
|
47
|
+
/**
|
|
48
|
+
* 这个解释器能不能加载**第三方原生扩展**(torch 这类 pip 装的 dylib)。
|
|
49
|
+
*
|
|
50
|
+
* macOS 上不行的一种情况是真实存在过的(2026-10-18 实测):DSH 桌面端把 Python 3.12
|
|
51
|
+
* 打在自己的运行时里,并给它签了 Developer ID + **hardened runtime**
|
|
52
|
+
* (`flags=0x10000(runtime)`),又没有 `com.apple.security.cs.disable-library-validation`。
|
|
53
|
+
* 库校验因此生效 —— 它只肯加载**同一 Team ID** 签的 dylib。pip 上的 torch 是 ad-hoc 签名
|
|
54
|
+
* (Team ID 为空),于是:
|
|
55
|
+
*
|
|
56
|
+
* ```
|
|
57
|
+
* OSError: dlopen(.../libtorch_global_deps.dylib, 0x000A):
|
|
58
|
+
* code signature ... not valid for use in process:
|
|
59
|
+
* mapping process and mapped file (non-platform) have different Team IDs
|
|
60
|
+
* ```
|
|
61
|
+
*
|
|
62
|
+
* 同一个 dylib 换成 uv 管的独立 CPython(`adhoc, linker-signed`,没有 runtime 标记)
|
|
63
|
+
* 就能加载 —— 这一条在同一台机器上验过。
|
|
64
|
+
*
|
|
65
|
+
* 判据读的是 `codesign` 的 flags,不看路径:运行时目录在某些安装形态下不在 `.app` 里,
|
|
66
|
+
* 而「带不带 hardened runtime」才是真正决定库校验的那件事。没有 `codesign`(Linux/Windows)
|
|
67
|
+
* 或读不到(没签名)时一律当「能加载」—— 不因为探测失败就改道去下载解释器。
|
|
68
|
+
*/
|
|
69
|
+
export declare function hasHardenedRuntime(path: string, run?: typeof runProcess): Promise<boolean>;
|
|
70
|
+
/**
|
|
71
|
+
* 这个解释器要不要换成 uv 管的那一个。
|
|
72
|
+
*
|
|
73
|
+
* 判据只有一条:**带 hardened runtime 就用不了第三方原生扩展**(见 `hasHardenedRuntime`)。
|
|
74
|
+
* `DSH_PYTHON` 显式给的不改道 —— 那是用户的选择;插件只把风险写进日志。
|
|
75
|
+
*/
|
|
76
|
+
export declare function needsManagedInterpreter(pick: PythonPick, hardened: boolean): boolean;
|
|
77
|
+
//# sourceMappingURL=dsh-python.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dsh-python.d.ts","sourceRoot":"","sources":["../../../src/environment/dsh-python.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAIH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAwCzC,MAAM,WAAW,UAAU;IACzB,oBAAoB;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,kCAAkC;IAClC,MAAM,EAAE,UAAU,GAAG,SAAS,GAAG,MAAM,CAAA;CACxC;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAA;IACxC,2DAA2D;IAC3D,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,yCAAyC;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAA;IAC1B,qBAAqB;IACrB,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAA;CACnC;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,GAAE,WAAgB,GAAG,UAAU,CAoBlE;AAED,2BAA2B;AAC3B,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,GAAG,MAAM,CAEtE;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,GAAE,OAAO,UAAuB,GAAG,OAAO,CAAC,OAAO,CAAC,CAS5G;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO,CAEpF"}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DSH 自带 Python 的落点(2026-10-18)。
|
|
3
|
+
*
|
|
4
|
+
* 桌面端把 Python 3.12 **打在自己的运行时里**:
|
|
5
|
+
* `<App>/Contents/Resources/runtime/primary-runtime/dependencies/python`(清单见同目录
|
|
6
|
+
* `runtime.json` 的 `python` 字段)。但这一层没把位置告诉插件 —— 宿主不导出 `DSH_PYTHON`,
|
|
7
|
+
* 于是「一键准备」的默认值 `python3` 落到了系统那个 3.9(macOS 命令行工具自带的正是 3.9),
|
|
8
|
+
* 第一步就报「Python 版本不受支持」,而机器上明明有 3.12。
|
|
9
|
+
*
|
|
10
|
+
* 所以这里自己找,顺序是:
|
|
11
|
+
*
|
|
12
|
+
* 1. **`DSH_PYTHON`** —— 显式覆盖永远是第一位的(文档里承诺的自定义入口)。
|
|
13
|
+
* 2. **DSH 自带的那一个** —— 从宿主告诉我们的两个锚点推:Electron 的 `resourcesPath`,
|
|
14
|
+
* 以及 `process.execPath`(桌面端是 `Contents/MacOS/<App>`,`ELECTRON_RUN_AS_NODE` 下
|
|
15
|
+
* 它就是运行时用的那个可执行文件)。两者都会向上找几级,因为包装脚本与真实二进制的
|
|
16
|
+
* 层级不一定一样。
|
|
17
|
+
* 3. **PATH 上的 `python3`** —— 都没有才退回。
|
|
18
|
+
*
|
|
19
|
+
* ## 这里只回答「哪个路径最可能是它」,不回答「它是哪个版本」
|
|
20
|
+
*
|
|
21
|
+
* 版本判断必须由准备阶段做(它要跑一次 `sys.version_info`,并把结论写进安装日志)。
|
|
22
|
+
* 在这里再探测一遍等于把同步可判的事情做成两次异步调用,而且拿到版本也不知道该报给谁。
|
|
23
|
+
*/
|
|
24
|
+
import { existsSync } from 'node:fs';
|
|
25
|
+
import { posix, win32 } from 'node:path';
|
|
26
|
+
import { runProcess } from './process.js';
|
|
27
|
+
/**
|
|
28
|
+
* 按**目标平台**拼路径,不按跑这段代码的机器。
|
|
29
|
+
*
|
|
30
|
+
* 生产里两者永远一致(Windows 上 `process.platform` 就是 `win32`),但这里允许注入平台 ——
|
|
31
|
+
* 而 POSIX 上的 `dirname('C:\\x\\node.exe')` 会给出 `'.'`,于是那条 Windows 断言在 mac 上
|
|
32
|
+
* 跑不通。用平台自己的路径工具,注入才是真的能测。
|
|
33
|
+
*/
|
|
34
|
+
const pathsFor = (platform) => platform === 'win32' ? win32 : posix;
|
|
35
|
+
/** 相对 App 资源根的落点。`runtime.json` 就在它的上一级。 */
|
|
36
|
+
const BUNDLE_RELATIVE = ['runtime/primary-runtime/dependencies/python'];
|
|
37
|
+
/** 一个解释器可能叫的几个名字。Windows 的独立发行版把 `python.exe` 放在根上。 */
|
|
38
|
+
function interpreterNames(root, platform) {
|
|
39
|
+
const { join } = pathsFor(platform);
|
|
40
|
+
return platform === 'win32'
|
|
41
|
+
? [join(root, 'python.exe'), join(root, 'python3.exe')]
|
|
42
|
+
: [join(root, 'bin', 'python3'), join(root, 'bin', 'python')];
|
|
43
|
+
}
|
|
44
|
+
/** 从锚点向上走几级,每一级都试「本体」和「本体/Resources」两种排法。 */
|
|
45
|
+
function bundleCandidates(anchor, platform) {
|
|
46
|
+
const { dirname, join } = pathsFor(platform);
|
|
47
|
+
const found = [];
|
|
48
|
+
let dir = anchor;
|
|
49
|
+
for (let depth = 0; depth < 6; depth += 1) {
|
|
50
|
+
for (const relative of BUNDLE_RELATIVE) {
|
|
51
|
+
for (const name of interpreterNames(join(dir, relative), platform))
|
|
52
|
+
found.push(name);
|
|
53
|
+
// macOS / Windows 的 `.app`:真实资源在 `Contents/Resources`,而锚点是 `Contents/MacOS`。
|
|
54
|
+
for (const name of interpreterNames(join(dir, 'Resources', relative), platform))
|
|
55
|
+
found.push(name);
|
|
56
|
+
}
|
|
57
|
+
const parent = dirname(dir);
|
|
58
|
+
if (parent === dir)
|
|
59
|
+
break;
|
|
60
|
+
dir = parent;
|
|
61
|
+
}
|
|
62
|
+
return found;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* 挑一个基础解释器。**纯函数**(存在性判断可注入),所以「自带优先于 PATH」这条能被单独断言。
|
|
66
|
+
*/
|
|
67
|
+
export function pickBasePython(probe = {}) {
|
|
68
|
+
const env = probe.env ?? process.env;
|
|
69
|
+
const override = env.DSH_PYTHON?.trim();
|
|
70
|
+
if (override)
|
|
71
|
+
return { path: override, source: 'override' };
|
|
72
|
+
const platform = probe.platform ?? process.platform;
|
|
73
|
+
const exists = probe.exists ?? existsSync;
|
|
74
|
+
const anchors = [];
|
|
75
|
+
if (probe.resourcesPath)
|
|
76
|
+
anchors.push(probe.resourcesPath);
|
|
77
|
+
const { dirname } = pathsFor(platform);
|
|
78
|
+
const executables = [env.DSH_DESKTOP_NODE_EXECUTABLE, probe.execPath ?? process.execPath];
|
|
79
|
+
for (const executable of executables) {
|
|
80
|
+
const value = executable?.trim();
|
|
81
|
+
if (value)
|
|
82
|
+
anchors.push(dirname(value));
|
|
83
|
+
}
|
|
84
|
+
for (const anchor of anchors) {
|
|
85
|
+
for (const candidate of bundleCandidates(anchor, platform)) {
|
|
86
|
+
if (exists(candidate))
|
|
87
|
+
return { path: candidate, source: 'bundled' };
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return { path: 'python3', source: 'path' };
|
|
91
|
+
}
|
|
92
|
+
/** 报错里那句「没找到自带的那一个」用得上。 */
|
|
93
|
+
export function pythonSourceLabel(source) {
|
|
94
|
+
return source === 'override' ? 'DSH_PYTHON' : source === 'bundled' ? 'DSH 自带运行时' : 'PATH 上的 python3';
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* 这个解释器能不能加载**第三方原生扩展**(torch 这类 pip 装的 dylib)。
|
|
98
|
+
*
|
|
99
|
+
* macOS 上不行的一种情况是真实存在过的(2026-10-18 实测):DSH 桌面端把 Python 3.12
|
|
100
|
+
* 打在自己的运行时里,并给它签了 Developer ID + **hardened runtime**
|
|
101
|
+
* (`flags=0x10000(runtime)`),又没有 `com.apple.security.cs.disable-library-validation`。
|
|
102
|
+
* 库校验因此生效 —— 它只肯加载**同一 Team ID** 签的 dylib。pip 上的 torch 是 ad-hoc 签名
|
|
103
|
+
* (Team ID 为空),于是:
|
|
104
|
+
*
|
|
105
|
+
* ```
|
|
106
|
+
* OSError: dlopen(.../libtorch_global_deps.dylib, 0x000A):
|
|
107
|
+
* code signature ... not valid for use in process:
|
|
108
|
+
* mapping process and mapped file (non-platform) have different Team IDs
|
|
109
|
+
* ```
|
|
110
|
+
*
|
|
111
|
+
* 同一个 dylib 换成 uv 管的独立 CPython(`adhoc, linker-signed`,没有 runtime 标记)
|
|
112
|
+
* 就能加载 —— 这一条在同一台机器上验过。
|
|
113
|
+
*
|
|
114
|
+
* 判据读的是 `codesign` 的 flags,不看路径:运行时目录在某些安装形态下不在 `.app` 里,
|
|
115
|
+
* 而「带不带 hardened runtime」才是真正决定库校验的那件事。没有 `codesign`(Linux/Windows)
|
|
116
|
+
* 或读不到(没签名)时一律当「能加载」—— 不因为探测失败就改道去下载解释器。
|
|
117
|
+
*/
|
|
118
|
+
export async function hasHardenedRuntime(path, run = runProcess) {
|
|
119
|
+
if (process.platform !== 'darwin')
|
|
120
|
+
return false;
|
|
121
|
+
try {
|
|
122
|
+
const output = await run('/usr/bin/codesign', ['-dv', '--verbose=2', path], { timeoutMs: 10_000 });
|
|
123
|
+
const flags = /flags=0x[0-9a-f]+\(([^)]*)\)/i.exec(output)?.[1] ?? '';
|
|
124
|
+
return flags.split(',').some(flag => flag.trim() === 'runtime');
|
|
125
|
+
}
|
|
126
|
+
catch {
|
|
127
|
+
return false;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* 这个解释器要不要换成 uv 管的那一个。
|
|
132
|
+
*
|
|
133
|
+
* 判据只有一条:**带 hardened runtime 就用不了第三方原生扩展**(见 `hasHardenedRuntime`)。
|
|
134
|
+
* `DSH_PYTHON` 显式给的不改道 —— 那是用户的选择;插件只把风险写进日志。
|
|
135
|
+
*/
|
|
136
|
+
export function needsManagedInterpreter(pick, hardened) {
|
|
137
|
+
return hardened && pick.source !== 'override';
|
|
138
|
+
}
|
|
139
|
+
//# sourceMappingURL=dsh-python.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dsh-python.js","sourceRoot":"","sources":["../../../src/environment/dsh-python.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,5 +3,13 @@ import { runProcess } from './process.js';
|
|
|
3
3
|
export declare const requirementsFile: string;
|
|
4
4
|
export declare const setupScript: string;
|
|
5
5
|
export declare function managedPython(root: string): string;
|
|
6
|
-
|
|
6
|
+
/**
|
|
7
|
+
* 准备这个库的推理运行时。
|
|
8
|
+
*
|
|
9
|
+
* `basePython` 省略时按 `pickBasePython()` 找:`DSH_PYTHON` → DSH 自带运行时 → PATH 上的
|
|
10
|
+
* `python3`。**默认值不能再写死 `python3`**:macOS 命令行工具自带的是 3.9,而桌面端明明把
|
|
11
|
+
* 3.12 打在了自己的运行时里 —— 写死默认值会让「一键准备」在任何没配 `DSH_PYTHON` 的机器上
|
|
12
|
+
* 第一步就失败(见 `dsh-python.ts` 的注释)。
|
|
13
|
+
*/
|
|
14
|
+
export declare function installRequiredEnvironment(root: string, signal: AbortSignal, stage: (label: string) => void, log: (line: string) => void, runner?: typeof runProcess, selection?: ModelSelection, basePython?: string, hardened?: (path: string) => Promise<boolean>): Promise<void>;
|
|
7
15
|
//# sourceMappingURL=install.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../src/environment/install.ts"],"names":[],"mappings":"AAOA,OAAO,EAA2B,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAEjF,OAAO,EAAE,UAAU,EAAuB,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../src/environment/install.ts"],"names":[],"mappings":"AAOA,OAAO,EAA2B,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAEjF,OAAO,EAAE,UAAU,EAAuB,MAAM,cAAc,CAAA;AAG9D,eAAO,MAAM,gBAAgB,QAA8E,CAAA;AAC3G,eAAO,MAAM,WAAW,QAA+E,CAAA;AACvG,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAgI;AAoInL;;;;;;;GAOG;AACH,wBAAsB,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EAAE,MAAM,GAAE,OAAO,UAAuB,EAAE,SAAS,GAAE,cAAwC,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,QAAQ,GAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAA4C,GAAG,OAAO,CAAC,IAAI,CAAC,CAyFzW"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createHash, randomUUID } from 'node:crypto';
|
|
2
2
|
import { existsSync } from 'node:fs';
|
|
3
|
-
import { chmod, copyFile, mkdir, open, readFile, readdir, rename, rm, writeFile } from 'node:fs/promises';
|
|
3
|
+
import { chmod, copyFile, mkdir, open, readFile, readdir, rename, rm, stat, writeFile } from 'node:fs/promises';
|
|
4
4
|
import { homedir } from 'node:os';
|
|
5
5
|
import { dirname, join } from 'node:path';
|
|
6
6
|
import { fileURLToPath } from 'node:url';
|
|
@@ -8,9 +8,16 @@ import { modelsForSelection, UV_VERSION } from './manifest.js';
|
|
|
8
8
|
import { DEFAULT_MODEL_SELECTION } from './model-catalog.js';
|
|
9
9
|
import { writeModelSelection } from './selection.js';
|
|
10
10
|
import { runProcess } from './process.js';
|
|
11
|
+
import { hasHardenedRuntime, needsManagedInterpreter, pickBasePython, pythonSourceLabel } from './dsh-python.js';
|
|
11
12
|
export const requirementsFile = fileURLToPath(new URL('../../../python/requirements.txt', import.meta.url));
|
|
12
13
|
export const setupScript = fileURLToPath(new URL('../../../python/prepare-models.py', import.meta.url));
|
|
13
14
|
export function managedPython(root) { return process.platform === 'win32' ? join(root, 'python', 'Scripts', 'python.exe') : join(root, 'python', 'bin', 'python'); }
|
|
15
|
+
/** 只问次版本:判断的是「能不能装这套依赖」,不是补丁号。 */
|
|
16
|
+
const PYTHON_VERSION_SCRIPT = 'import sys; print(f"{sys.version_info.major}.{sys.version_info.minor}")';
|
|
17
|
+
/** 推理依赖支持的解释器区间(torch 的 wheel 覆盖到 3.13)。 */
|
|
18
|
+
const SUPPORTED_PYTHON = /^3\.(10|11|12|13)$/;
|
|
19
|
+
/** 走 uv 管理解释器时请求的版本:与桌面端自带的那份对齐,避免两套行为。 */
|
|
20
|
+
const MANAGED_PYTHON = '3.12';
|
|
14
21
|
async function download(url, signal) {
|
|
15
22
|
const response = await fetch(url, { signal: AbortSignal.any([signal, AbortSignal.timeout(120_000)]) });
|
|
16
23
|
if (!response.ok)
|
|
@@ -81,13 +88,22 @@ async function ensureUv(root, signal, log, run) {
|
|
|
81
88
|
await rm(scratch, { recursive: true, force: true });
|
|
82
89
|
}
|
|
83
90
|
}
|
|
91
|
+
/**
|
|
92
|
+
* 一把「陈旧」锁可以被接管的时限。
|
|
93
|
+
*
|
|
94
|
+
* 单步安装超时是 30 分钟,整轮远小于这个上限,所以 6 小时之后还在的锁一定是崩溃残留。
|
|
95
|
+
* 有了它,「持锁进程已死但 PID 被系统复用」才不会让用户永久卡在「另一个进程正在准备环境」上。
|
|
96
|
+
*/
|
|
97
|
+
const STALE_LOCK_MS = 6 * 60 * 60 * 1000;
|
|
84
98
|
async function installLock(root) {
|
|
85
99
|
const path = join(root, 'environment-install.lock');
|
|
86
|
-
|
|
100
|
+
/** 这一把锁的归属凭据。释放时靠它判断「这份文件还是不是我的」。 */
|
|
101
|
+
const token = randomUUID();
|
|
102
|
+
for (let attempt = 0; attempt < 3; attempt++) {
|
|
87
103
|
try {
|
|
88
104
|
const file = await open(path, 'wx');
|
|
89
105
|
try {
|
|
90
|
-
await file.writeFile(JSON.stringify({ pid: process.pid, at: new Date().toISOString() }));
|
|
106
|
+
await file.writeFile(JSON.stringify({ token, pid: process.pid, at: new Date().toISOString() }));
|
|
91
107
|
}
|
|
92
108
|
catch (cause) {
|
|
93
109
|
await rm(path, { force: true });
|
|
@@ -96,52 +112,157 @@ async function installLock(root) {
|
|
|
96
112
|
finally {
|
|
97
113
|
await file.close();
|
|
98
114
|
}
|
|
99
|
-
return () =>
|
|
115
|
+
return async () => {
|
|
116
|
+
/**
|
|
117
|
+
* 只删**自己那一把**。判据是 token,不是「路径上有没有文件」:锁可能已被另一个
|
|
118
|
+
* 进程按陈旧接管过,那时这份文件是它的 —— 删掉就等于让两个安装并发写同一个 venv。
|
|
119
|
+
*/
|
|
120
|
+
try {
|
|
121
|
+
const current = JSON.parse(await readFile(path, 'utf8'));
|
|
122
|
+
if (current.token === token)
|
|
123
|
+
await rm(path, { force: true });
|
|
124
|
+
}
|
|
125
|
+
catch { /* 已被接管或已不存在:不是自己的锁就不动 */ }
|
|
126
|
+
};
|
|
100
127
|
}
|
|
101
128
|
catch (error) {
|
|
102
129
|
if (error.code !== 'EEXIST')
|
|
103
130
|
throw error;
|
|
104
|
-
let
|
|
131
|
+
let holder;
|
|
105
132
|
try {
|
|
106
|
-
|
|
133
|
+
holder = JSON.parse(await readFile(path, 'utf8'));
|
|
107
134
|
}
|
|
108
135
|
catch {
|
|
109
|
-
|
|
136
|
+
holder = undefined;
|
|
110
137
|
}
|
|
111
|
-
if (
|
|
112
|
-
|
|
138
|
+
if (holder === undefined) {
|
|
139
|
+
/**
|
|
140
|
+
* 解析不了(0 字节、半截 JSON、磁盘满)也要能自愈。
|
|
141
|
+
*
|
|
142
|
+
* 锁是「`open('wx')` 建文件 → 再写内容」两步,中间被杀就会留下这种文件;
|
|
143
|
+
* 原来这里直接抛「安装锁异常」,于是**每一次**安装尝试都失败,只能人工删锁。
|
|
144
|
+
* 判据换成文件的 mtime:与「持锁进程还活着」同一套时限,超时就接管。
|
|
145
|
+
*/
|
|
146
|
+
const info = await stat(path).catch(() => undefined);
|
|
147
|
+
const aged = info !== undefined && Date.now() - info.mtimeMs > STALE_LOCK_MS;
|
|
148
|
+
if (!aged)
|
|
149
|
+
throw new Error('安装锁异常,请检查 resource/environment-install.lock');
|
|
150
|
+
await rm(path, { force: true });
|
|
151
|
+
continue;
|
|
152
|
+
}
|
|
153
|
+
const pid = Number(holder.pid);
|
|
154
|
+
const at = Date.parse(String(holder.at ?? ''));
|
|
155
|
+
const aged = Number.isFinite(at) && Date.now() - at > STALE_LOCK_MS;
|
|
156
|
+
if (!Number.isInteger(pid) || pid <= 0) {
|
|
157
|
+
// 内容不成立:没到期就如实报出来让人看一眼,到期了才当陈旧处理。
|
|
158
|
+
if (!aged)
|
|
159
|
+
throw new Error('安装锁异常,请检查 resource/environment-install.lock');
|
|
160
|
+
}
|
|
161
|
+
else {
|
|
162
|
+
let dead = false;
|
|
163
|
+
try {
|
|
164
|
+
process.kill(pid, 0);
|
|
165
|
+
}
|
|
166
|
+
catch (cause) {
|
|
167
|
+
dead = cause.code === 'ESRCH';
|
|
168
|
+
}
|
|
169
|
+
// `dead`(进程真的没了)或 `aged`(号码可能已被别人复用)任一成立都算陈旧。
|
|
170
|
+
if (!dead && !aged)
|
|
171
|
+
throw new Error('另一个进程正在准备环境,请等待完成后重试');
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* 接管之前**再读一次**并确认还是刚才那一把。读完到删之间仍有一个极窄的窗口,
|
|
175
|
+
* 但「先删后判」会让两个进程同时接管同一把锁 —— 那才是真正的并发安装。
|
|
176
|
+
*/
|
|
113
177
|
try {
|
|
114
|
-
|
|
115
|
-
|
|
178
|
+
const again = JSON.parse(await readFile(path, 'utf8'));
|
|
179
|
+
if (again.token !== holder.token)
|
|
180
|
+
continue;
|
|
116
181
|
}
|
|
117
|
-
catch
|
|
118
|
-
|
|
119
|
-
throw cause;
|
|
120
|
-
await rm(path, { force: true });
|
|
182
|
+
catch {
|
|
183
|
+
continue;
|
|
121
184
|
}
|
|
185
|
+
await rm(path, { force: true });
|
|
122
186
|
}
|
|
123
187
|
}
|
|
124
188
|
throw new Error('无法获取环境安装锁');
|
|
125
189
|
}
|
|
126
|
-
|
|
190
|
+
/**
|
|
191
|
+
* 准备这个库的推理运行时。
|
|
192
|
+
*
|
|
193
|
+
* `basePython` 省略时按 `pickBasePython()` 找:`DSH_PYTHON` → DSH 自带运行时 → PATH 上的
|
|
194
|
+
* `python3`。**默认值不能再写死 `python3`**:macOS 命令行工具自带的是 3.9,而桌面端明明把
|
|
195
|
+
* 3.12 打在了自己的运行时里 —— 写死默认值会让「一键准备」在任何没配 `DSH_PYTHON` 的机器上
|
|
196
|
+
* 第一步就失败(见 `dsh-python.ts` 的注释)。
|
|
197
|
+
*/
|
|
198
|
+
export async function installRequiredEnvironment(root, signal, stage, log, runner = runProcess, selection = DEFAULT_MODEL_SELECTION, basePython, hardened = path => hasHardenedRuntime(path, runner)) {
|
|
127
199
|
await mkdir(root, { recursive: true });
|
|
200
|
+
const picked = basePython === undefined ? pickBasePython() : { path: basePython, source: 'override' };
|
|
128
201
|
const unlock = await installLock(root);
|
|
129
|
-
const env = {
|
|
202
|
+
const env = {
|
|
203
|
+
...process.env,
|
|
204
|
+
UV_CACHE_DIR: join(root, 'cache', 'uv'),
|
|
205
|
+
/**
|
|
206
|
+
* uv 自己管理的解释器也落在资源目录里:它和依赖、模型一样属于「这个 Agent 的家当」,
|
|
207
|
+
* 备份 / 迁移 / 删除该一起走,而不是散到 `~/.local/share/uv/python`。
|
|
208
|
+
*/
|
|
209
|
+
UV_PYTHON_INSTALL_DIR: join(root, 'tools', 'python'),
|
|
210
|
+
HF_HOME: join(root, 'cache', 'huggingface'),
|
|
211
|
+
PIP_DISABLE_PIP_VERSION_CHECK: '1',
|
|
212
|
+
};
|
|
130
213
|
const run = (command, args, extra = {}) => runner(command, args, { env, signal, timeoutMs: 30 * 60_000, onLine: log, ...extra });
|
|
131
214
|
try {
|
|
132
215
|
stage('准备模型运行时');
|
|
133
216
|
const uv = await ensureUv(root, signal, log, runner);
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
217
|
+
log(`基础 Python:${picked.path}(${pythonSourceLabel(picked.source)})`);
|
|
218
|
+
/**
|
|
219
|
+
* 自带运行时那份 Python 带 hardened runtime,**装不了 torch**(见 `hasHardenedRuntime`):
|
|
220
|
+
* 库校验只喂它自己 Team ID 签的 dylib,而 pip 上的原生轮子是 ad-hoc 签名的。
|
|
221
|
+
* 这时改用 uv 管的独立 CPython(不带 hardened runtime),装到 `<resource>/tools/python`。
|
|
222
|
+
*
|
|
223
|
+
* 显式给了 `DSH_PYTHON` 就不改道 —— 那是用户的选择,只把风险写进日志。
|
|
224
|
+
*/
|
|
225
|
+
const isHardened = await hardened(picked.path);
|
|
226
|
+
const managed = needsManagedInterpreter(picked, isHardened);
|
|
227
|
+
if (isHardened && picked.source === 'override') {
|
|
228
|
+
log(`注意:${picked.path} 带 hardened runtime,第三方原生扩展(torch 等)可能加载不了。`);
|
|
229
|
+
}
|
|
230
|
+
let baseVersion;
|
|
231
|
+
if (managed) {
|
|
232
|
+
log('基础 Python:由 uv 管理的独立 CPython 3.12(自带的那份带 hardened runtime,加载不了第三方原生扩展)');
|
|
233
|
+
}
|
|
234
|
+
else {
|
|
235
|
+
log(`基础 Python:${picked.path}(${pythonSourceLabel(picked.source)})`);
|
|
236
|
+
const versionOutput = await run(picked.path, ['-c', PYTHON_VERSION_SCRIPT], { timeoutMs: 15_000 });
|
|
237
|
+
baseVersion = versionOutput.trim().split(/\r?\n/).at(-1);
|
|
238
|
+
if (!baseVersion || !SUPPORTED_PYTHON.test(baseVersion)) {
|
|
239
|
+
/**
|
|
240
|
+
* 这句要能直接照着做。原来只说「版本不受支持」,而人看到的是自己机器上
|
|
241
|
+
* `python3 --version` 报 3.9 —— 会以为插件在挑刺,不知道桌面端本身带了 3.12。
|
|
242
|
+
*/
|
|
243
|
+
throw new Error([
|
|
244
|
+
`DSH Python 版本不受支持:${baseVersion || '无法读取'}(${picked.path},来自${pythonSourceLabel(picked.source)});需要 Python 3.10–3.13。`,
|
|
245
|
+
picked.source === 'path'
|
|
246
|
+
? '没有找到 DSH 自带的 Python(桌面端运行时里应有一份 3.12)。请安装 Python 3.10–3.13,再用环境变量 DSH_PYTHON 指向它。'
|
|
247
|
+
: `请把 DSH_PYTHON 指向一个 3.10–3.13 的解释器后重试。`,
|
|
248
|
+
].join(' '));
|
|
249
|
+
}
|
|
138
250
|
}
|
|
139
251
|
const python = managedPython(root);
|
|
140
252
|
let compatible = false;
|
|
141
253
|
if (existsSync(python)) {
|
|
142
254
|
try {
|
|
143
|
-
const
|
|
144
|
-
|
|
255
|
+
const current = (await run(python, ['-c', PYTHON_VERSION_SCRIPT], { timeoutMs: 15_000 })).trim().split(/\r?\n/).at(-1);
|
|
256
|
+
// 管好的解释器只要求落在支持区间(它的次版本会随 uv 走),其余必须与基础解释器同一个次版本。
|
|
257
|
+
const versionOk = managed ? SUPPORTED_PYTHON.test(current ?? '') : current === baseVersion;
|
|
258
|
+
/**
|
|
259
|
+
* 还要**真的**确认这个环境不带 hardened runtime。
|
|
260
|
+
*
|
|
261
|
+
* 只比版本的话,一个用自带 Python 建出来的 3.12 环境会被判成「兼容」,于是「修复」
|
|
262
|
+
* 不重建 —— 而它正是装不了 torch 的那一个。`codesign` 跟着符号链接走,
|
|
263
|
+
* 所以这里量的是它最终指向的那个解释器。
|
|
264
|
+
*/
|
|
265
|
+
compatible = versionOk && (!managed || !(await hardened(python)));
|
|
145
266
|
}
|
|
146
267
|
catch {
|
|
147
268
|
if (signal.aborted)
|
|
@@ -154,7 +275,11 @@ export async function installRequiredEnvironment(root, signal, stage, log, runne
|
|
|
154
275
|
await rename(join(root, 'python'), backup);
|
|
155
276
|
log(`原模型运行环境不可用,已保留备份:${backup}`);
|
|
156
277
|
}
|
|
157
|
-
await run(uv, ['venv',
|
|
278
|
+
await run(uv, ['venv',
|
|
279
|
+
...(managed ? ['--python', MANAGED_PYTHON, '--python-preference', 'only-managed'] : ['--python', picked.path, '--python-preference', 'only-system']),
|
|
280
|
+
join(root, 'python')]);
|
|
281
|
+
if (managed)
|
|
282
|
+
log(`基础 Python:${(await run(python, ['-c', PYTHON_VERSION_SCRIPT], { timeoutMs: 15_000 })).trim()}(uv 管理的独立 CPython)`);
|
|
158
283
|
}
|
|
159
284
|
stage('安装推理依赖');
|
|
160
285
|
await run(uv, ['pip', 'install', '--reinstall', '--python', python, '-r', requirementsFile]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/environment/install.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/environment/install.ts"],"names":[],"mappings":"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"}
|