@telorun/kernel 0.24.2 → 0.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/dist/application-env.d.ts +18 -0
- package/dist/application-env.d.ts.map +1 -1
- package/dist/application-env.js +36 -0
- package/dist/application-env.js.map +1 -1
- package/dist/controller-loader.d.ts +4 -0
- package/dist/controller-loader.d.ts.map +1 -1
- package/dist/controller-loader.js +4 -1
- package/dist/controller-loader.js.map +1 -1
- package/dist/controller-loaders/npm-loader.d.ts +51 -12
- package/dist/controller-loaders/npm-loader.d.ts.map +1 -1
- package/dist/controller-loaders/npm-loader.js +119 -52
- package/dist/controller-loaders/npm-loader.js.map +1 -1
- package/dist/controller-registry.d.ts +9 -0
- package/dist/controller-registry.d.ts.map +1 -1
- package/dist/controller-registry.js +18 -0
- package/dist/controller-registry.js.map +1 -1
- package/dist/controllers/module/import-controller.d.ts.map +1 -1
- package/dist/controllers/module/import-controller.js +50 -28
- package/dist/controllers/module/import-controller.js.map +1 -1
- package/dist/controllers/resource-definition/resource-definition-controller.d.ts.map +1 -1
- package/dist/controllers/resource-definition/resource-definition-controller.js +1 -0
- package/dist/controllers/resource-definition/resource-definition-controller.js.map +1 -1
- package/dist/evaluation-context.d.ts.map +1 -1
- package/dist/evaluation-context.js +13 -5
- package/dist/evaluation-context.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/kernel.d.ts +8 -0
- package/dist/kernel.d.ts.map +1 -1
- package/dist/kernel.js +46 -15
- package/dist/kernel.js.map +1 -1
- package/dist/manifest-sources/analysis-stamp.d.ts +2 -2
- package/dist/manifest-sources/analysis-stamp.d.ts.map +1 -1
- package/dist/manifest-sources/analysis-stamp.js +9 -4
- package/dist/manifest-sources/analysis-stamp.js.map +1 -1
- package/dist/manifest-sources/local-manifest-cache-source.d.ts +13 -3
- package/dist/manifest-sources/local-manifest-cache-source.d.ts.map +1 -1
- package/dist/manifest-sources/local-manifest-cache-source.js +25 -6
- package/dist/manifest-sources/local-manifest-cache-source.js.map +1 -1
- package/dist/module-context.d.ts +56 -7
- package/dist/module-context.d.ts.map +1 -1
- package/dist/module-context.js +121 -10
- package/dist/module-context.js.map +1 -1
- package/dist/resource-context.d.ts +1 -0
- package/dist/resource-context.d.ts.map +1 -1
- package/dist/resource-context.js +3 -0
- package/dist/resource-context.js.map +1 -1
- package/dist/schema-validator.d.ts +8 -1
- package/dist/schema-validator.d.ts.map +1 -1
- package/dist/schema-validator.js +47 -5
- package/dist/schema-validator.js.map +1 -1
- package/package.json +3 -3
- package/src/application-env.ts +37 -0
- package/src/controller-loader.ts +8 -1
- package/src/controller-loaders/npm-loader.ts +136 -59
- package/src/controller-registry.ts +18 -0
- package/src/controllers/module/import-controller.ts +58 -28
- package/src/controllers/resource-definition/resource-definition-controller.ts +1 -0
- package/src/evaluation-context.ts +15 -5
- package/src/index.ts +1 -0
- package/src/kernel.ts +65 -16
- package/src/manifest-sources/analysis-stamp.ts +9 -2
- package/src/manifest-sources/local-manifest-cache-source.ts +29 -4
- package/src/module-context.ts +153 -11
- package/src/resource-context.ts +4 -0
- package/src/schema-validator.ts +49 -5
|
@@ -38,4 +38,22 @@ export declare function resolveApplicationEnv(manifest: Record<string, any>, env
|
|
|
38
38
|
* schema surfaces through the normal analysis/runtime path, not here.
|
|
39
39
|
*/
|
|
40
40
|
export declare function precompileApplicationEnvSchemas(manifest: Record<string, any>, validator: SchemaValidator): void;
|
|
41
|
+
/**
|
|
42
|
+
* Build-time cache warm for resource-config validators. The runtime
|
|
43
|
+
* `_createInstance` compiles `controller.schema` — which falls back to the
|
|
44
|
+
* declaring `Telo.Definition`'s own `schema` — to validate every resource's
|
|
45
|
+
* config, then validates inputs/outputs against `inputType` / `outputType`.
|
|
46
|
+
* The analyze-only warm pass stops before instantiation, so without this those
|
|
47
|
+
* validators are absent from the `__validators` cache and the runtime
|
|
48
|
+
* recompiles (and, on a read-only image, fails to persist) them on every boot.
|
|
49
|
+
*
|
|
50
|
+
* Compiling each definition's `schema` (plus any inline `inputType` /
|
|
51
|
+
* `outputType` object schemas) here writes them into the same content-addressed
|
|
52
|
+
* cache the runtime reads, keyed identically because the same schema object is
|
|
53
|
+
* fed to the same `validator.compile`. Definitions whose controller exports its
|
|
54
|
+
* own `schema` (rare) still recompile at runtime — that needs the controller
|
|
55
|
+
* loaded, which the warm pass does not do. Compile failures are swallowed; a
|
|
56
|
+
* genuinely broken schema surfaces through analysis / runtime, not here.
|
|
57
|
+
*/
|
|
58
|
+
export declare function precompileDefinitionSchemas(manifests: Array<Record<string, any>>, validator: SchemaValidator): void;
|
|
41
59
|
//# sourceMappingURL=application-env.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"application-env.d.ts","sourceRoot":"","sources":["../src/application-env.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAiBxD,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B;AAWD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC7B,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,EACvC,SAAS,EAAE,eAAe,GACzB,mBAAmB,CAyBrB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,+BAA+B,CAC7C,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC7B,SAAS,EAAE,eAAe,GACzB,IAAI,CAwBN"}
|
|
1
|
+
{"version":3,"file":"application-env.d.ts","sourceRoot":"","sources":["../src/application-env.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAiBxD,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B;AAWD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC7B,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,EACvC,SAAS,EAAE,eAAe,GACzB,mBAAmB,CAyBrB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,+BAA+B,CAC7C,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC7B,SAAS,EAAE,eAAe,GACzB,IAAI,CAwBN;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,2BAA2B,CACzC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,EACrC,SAAS,EAAE,eAAe,GACzB,IAAI,CAeN"}
|
package/dist/application-env.js
CHANGED
|
@@ -77,6 +77,42 @@ export function precompileApplicationEnvSchemas(manifest, validator) {
|
|
|
77
77
|
compile(PORT_RESIDUAL_SCHEMA);
|
|
78
78
|
}
|
|
79
79
|
}
|
|
80
|
+
/**
|
|
81
|
+
* Build-time cache warm for resource-config validators. The runtime
|
|
82
|
+
* `_createInstance` compiles `controller.schema` — which falls back to the
|
|
83
|
+
* declaring `Telo.Definition`'s own `schema` — to validate every resource's
|
|
84
|
+
* config, then validates inputs/outputs against `inputType` / `outputType`.
|
|
85
|
+
* The analyze-only warm pass stops before instantiation, so without this those
|
|
86
|
+
* validators are absent from the `__validators` cache and the runtime
|
|
87
|
+
* recompiles (and, on a read-only image, fails to persist) them on every boot.
|
|
88
|
+
*
|
|
89
|
+
* Compiling each definition's `schema` (plus any inline `inputType` /
|
|
90
|
+
* `outputType` object schemas) here writes them into the same content-addressed
|
|
91
|
+
* cache the runtime reads, keyed identically because the same schema object is
|
|
92
|
+
* fed to the same `validator.compile`. Definitions whose controller exports its
|
|
93
|
+
* own `schema` (rare) still recompile at runtime — that needs the controller
|
|
94
|
+
* loaded, which the warm pass does not do. Compile failures are swallowed; a
|
|
95
|
+
* genuinely broken schema surfaces through analysis / runtime, not here.
|
|
96
|
+
*/
|
|
97
|
+
export function precompileDefinitionSchemas(manifests, validator) {
|
|
98
|
+
const compile = (schema) => {
|
|
99
|
+
if (!schema || typeof schema !== "object")
|
|
100
|
+
return;
|
|
101
|
+
try {
|
|
102
|
+
validator.compile(schema);
|
|
103
|
+
}
|
|
104
|
+
catch {
|
|
105
|
+
// Broken schemas are reported by analysis / runtime, not the warm pass.
|
|
106
|
+
}
|
|
107
|
+
};
|
|
108
|
+
for (const m of manifests) {
|
|
109
|
+
if (m?.kind !== "Telo.Definition")
|
|
110
|
+
continue;
|
|
111
|
+
compile(m.schema);
|
|
112
|
+
compile(m.inputType);
|
|
113
|
+
compile(m.outputType);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
80
116
|
/**
|
|
81
117
|
* Populate the root Application's `ports` namespace from host environment
|
|
82
118
|
* variables. Mirrors `resolveBlock` but fixes the value type to a port integer
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"application-env.js","sourceRoot":"","sources":["../src/application-env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAwB5C;;6BAE6B;AAC7B,MAAM,oBAAoB,GAA4B;IACpD,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,CAAC;IACV,OAAO,EAAE,KAAK;CACf,CAAC;AAEF;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,qBAAqB,CACnC,QAA6B,EAC7B,GAAuC,EACvC,SAA0B;IAE1B,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,SAAS,GAAG,YAAY,CAC5B,QAAQ,CAAC,SAAS,IAAI,EAAE,EACxB,GAAG,EACH,SAAS,EACT,MAAM,EACN,KAAK,CACN,CAAC;IACF,MAAM,OAAO,GAAG,YAAY,CAC1B,QAAQ,CAAC,OAAO,IAAI,EAAE,EACtB,GAAG,EACH,SAAS,EACT,MAAM,EACN,IAAI,CACL,CAAC;IACF,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IACzE,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,YAAY,CACpB,gCAAgC,EAChC,8CAA8C;YAC5C,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAC3C,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AACvC,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,+BAA+B,CAC7C,QAA6B,EAC7B,SAA0B;IAE1B,MAAM,OAAO,GAAG,CAAC,MAA+B,EAAQ,EAAE;QACxD,IAAI,CAAC;YACH,SAAS,CAAC,OAAO,CAAC,MAAa,CAAC,CAAC;QACnC,CAAC;QAAC,MAAM,CAAC;YACP,wEAAwE;QAC1E,CAAC;IACH,CAAC,CAAC;IACF,KAAK,MAAM,KAAK,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3D,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,SAAS;QAC1E,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,KAAiC,CAAC,EAAE,CAAC;YACrE,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;gBAAE,SAAS;YAClD,OAAO,CAAC,mBAAmB,CAAC,KAAgC,CAAC,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;IACD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;IAC7B,IACE,KAAK;QACL,OAAO,KAAK,KAAK,QAAQ;QACzB,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACrB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,EAC7B,CAAC;QACD,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAChC,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,YAAY,CACnB,KAA0C,EAC1C,GAAuC,EACvC,SAA0B,EAC1B,MAAgB;IAEhB,MAAM,GAAG,GAA2B,EAAE,CAAC;IACvC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAChE,OAAO,GAAG,CAAC;IACb,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAkC,CAAC,EAAE,CAAC;QAC/E,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,SAAS;QAClD,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC;QACzB,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QAExB,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YACtC,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;gBAChC,MAAM,UAAU,GAAG,gBAAgB,CAAC,KAAK,CAAC,OAAO,EAAE,oBAAoB,EAAE,SAAS,CAAC,CAAC;gBACpF,IAAI,UAAU,EAAE,CAAC;oBACf,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,KAAK,UAAU,EAAE,CAAC,CAAC;gBACxC,CAAC;qBAAM,CAAC;oBACN,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC;gBAC5B,CAAC;gBACD,SAAS;YACX,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,0BAA0B,MAAM,0BAA0B,CAAC,CAAC;YAC/E,SAAS;QACX,CAAC;QAED,IAAI,OAAgB,CAAC;QACrB,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QAClD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,KAAM,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;YAChD,SAAS;QACX,CAAC;QAED,MAAM,UAAU,GAAG,gBAAgB,CAAC,OAAO,EAAE,oBAAoB,EAAE,SAAS,CAAC,CAAC;QAC9E,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,KAAK,UAAU,EAAE,CAAC,CAAC;YACtC,SAAS;QACX,CAAC;QAED,GAAG,CAAC,IAAI,CAAC,GAAG,OAAiB,CAAC;IAChC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,YAAY,CACnB,KAAyC,EACzC,GAAuC,EACvC,SAA0B,EAC1B,MAAgB,EAChB,QAAiB;IAEjB,MAAM,GAAG,GAA4B,EAAE,CAAC;IACxC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAChE,OAAO,GAAG,CAAC;IACb,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAiC,CAAC,EAAE,CAAC;QAC9E,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,SAAS;QAClD,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC;QACzB,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,MAAM,QAAQ,GAAG,mBAAmB,CAAC,KAAgC,CAAC,CAAC;QAEvE,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YACtC,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;gBAChC,MAAM,UAAU,GAAG,gBAAgB,CAAC,KAAK,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;gBACxE,IAAI,UAAU,EAAE,CAAC;oBACf,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,KAAK,UAAU,EAAE,CAAC,CAAC;gBACxC,CAAC;qBAAM,CAAC;oBACN,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC;gBAC5B,CAAC;gBACD,SAAS;YACX,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,0BAA0B,MAAM,0BAA0B,CAAC,CAAC;YAC/E,SAAS;QACX,CAAC;QAED,IAAI,OAAgB,CAAC;QACrB,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QACtD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,KAAM,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;YAChD,SAAS;QACX,CAAC;QAED,MAAM,UAAU,GAAG,gBAAgB,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;QAClE,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,KAAK,UAAU,EAAE,CAAC,CAAC;YACtC,SAAS;QACX,CAAC;QAED,GAAG,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;IACtB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;yEAEyE;AACzE,SAAS,iBAAiB,CAAC,GAAW,EAAE,QAAiB;IACvD,OAAO,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC;AAC9C,CAAC;AAED,SAAS,MAAM,CACb,GAAW,EACX,IAAe,EACf,MAAc,EACd,QAAiB;IAEjB,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,QAAQ;YACX,OAAO,GAAG,CAAC;QACb,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;YAC3B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC7B,MAAM,IAAI,KAAK,CACb,wBAAwB,MAAM,WAAW,iBAAiB,CAAC,GAAG,EAAE,QAAQ,CAAC,yBAAyB,CACnG,CAAC;YACJ,CAAC;YACD,OAAO,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAC/B,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;YAC1B,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpB,MAAM,IAAI,KAAK,CACb,wBAAwB,MAAM,WAAW,iBAAiB,CAAC,GAAG,EAAE,QAAQ,CAAC,wBAAwB,CAClG,CAAC;YACJ,CAAC;YACD,OAAO,CAAC,CAAC;QACX,CAAC;QACD,KAAK,SAAS;YACZ,IAAI,GAAG,KAAK,MAAM;gBAAE,OAAO,IAAI,CAAC;YAChC,IAAI,GAAG,KAAK,OAAO;gBAAE,OAAO,KAAK,CAAC;YAClC,MAAM,IAAI,KAAK,CACb,wBAAwB,MAAM,WAAW,iBAAiB,CAAC,GAAG,EAAE,QAAQ,CAAC,sDAAsD,CAChI,CAAC;QACJ,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;YAChD,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC3E,MAAM,IAAI,KAAK,CACb,wBAAwB,MAAM,+BAA+B,gBAAgB,CAAC,MAAM,CAAC,EAAE,CACxF,CAAC;YACJ,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;YAChD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC3B,MAAM,IAAI,KAAK,CACb,wBAAwB,MAAM,8BAA8B,gBAAgB,CAAC,MAAM,CAAC,EAAE,CACvF,CAAC;YACJ,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,GAAW,EAAE,MAAc,EAAE,QAAiB;IAC/D,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,yEAAyE;QACzE,wEAAwE;QACxE,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAE,CAAW,CAAC,OAAO,CAAC;QAC3E,MAAM,IAAI,KAAK,CAAC,wBAAwB,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,4BAA4B,MAAM,EAAE,EAAE,CAAC,CAAC;IACjH,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAc;IACtC,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC;IAClC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC;IACzC,OAAO,OAAO,KAAK,CAAC;AACtB,CAAC;AAED,SAAS,gBAAgB,CACvB,KAAc,EACd,QAAiC,EACjC,SAA0B;IAE1B,IAAI,CAAC;QACH,SAAS,CAAC,OAAO,CAAC,QAAe,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACnD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,GAAG,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACvD,yEAAyE;QACzE,0EAA0E;QAC1E,uEAAuE;QACvE,wEAAwE;QACxE,sDAAsD;QACtD,MAAM,QAAQ,GAAG,WAAW,CAAC;QAC7B,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAClC,IAAI,GAAG,CAAC,UAAU,CAAC,uBAAuB,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;YAC1D,OAAO,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC1C,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"application-env.js","sourceRoot":"","sources":["../src/application-env.ts"],"names":[],"mappings":"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"}
|
|
@@ -59,6 +59,10 @@ export interface ControllerLoaderOptions {
|
|
|
59
59
|
* (cargo loader has its own per-crate cache and does not need this).
|
|
60
60
|
*/
|
|
61
61
|
entryUrl?: string;
|
|
62
|
+
/** Explicit npm install root (`<cache-root>/npm`), threaded from the kernel's
|
|
63
|
+
* single `resolveCacheRoot`. Overrides the entry-anchored default so a
|
|
64
|
+
* relocated `TELO_CACHE_DIR` is honoured. */
|
|
65
|
+
installRoot?: string;
|
|
62
66
|
}
|
|
63
67
|
/**
|
|
64
68
|
* Top-level controller-loader dispatcher. Picks a per-scheme sub-loader by
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controller-loader.d.ts","sourceRoot":"","sources":["../src/controller-loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAgB,MAAM,cAAc,CAAC;AAIhE,OAAO,EAAE,gBAAgB,EAAmC,MAAM,uBAAuB,CAAC;AAE1F,YAAY,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D;;;;;GAKG;AACH,MAAM,MAAM,uBAAuB,GAC/B,OAAO,GACP,cAAc,GACd,OAAO,GACP,aAAa,GACb,aAAa,GACb,QAAQ,CAAC;AAEb,MAAM,MAAM,qBAAqB,GAC7B;IAAE,IAAI,EAAE,mBAAmB,CAAC;IAAC,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GACxD;IACE,IAAI,EAAE,kBAAkB,CAAC;IACzB,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,uBAAuB,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;CAChF,GACD;IAAE,IAAI,EAAE,sBAAsB,CAAC;IAAC,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE;AAC5E;;;;;;GAMG;GACD;IAAE,IAAI,EAAE,uBAAuB,CAAC;IAAC,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAAC;AAEjF;;;;;;GAMG;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,KAAK,EAAE,qBAAqB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1F,MAAM,WAAW,uBAAuB;IACtC,IAAI,CAAC,EAAE,oBAAoB,CAAC;IAC5B;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"controller-loader.d.ts","sourceRoot":"","sources":["../src/controller-loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAgB,MAAM,cAAc,CAAC;AAIhE,OAAO,EAAE,gBAAgB,EAAmC,MAAM,uBAAuB,CAAC;AAE1F,YAAY,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D;;;;;GAKG;AACH,MAAM,MAAM,uBAAuB,GAC/B,OAAO,GACP,cAAc,GACd,OAAO,GACP,aAAa,GACb,aAAa,GACb,QAAQ,CAAC;AAEb,MAAM,MAAM,qBAAqB,GAC7B;IAAE,IAAI,EAAE,mBAAmB,CAAC;IAAC,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GACxD;IACE,IAAI,EAAE,kBAAkB,CAAC;IACzB,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,uBAAuB,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;CAChF,GACD;IAAE,IAAI,EAAE,sBAAsB,CAAC;IAAC,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE;AAC5E;;;;;;GAMG;GACD;IAAE,IAAI,EAAE,uBAAuB,CAAC;IAAC,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAAC;AAEjF;;;;;;GAMG;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,KAAK,EAAE,qBAAqB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1F,MAAM,WAAW,uBAAuB;IACtC,IAAI,CAAC,EAAE,oBAAoB,CAAC;IAC5B;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;kDAE8C;IAC9C,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAmC;IACxD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAsB;IAChD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAuB;IAClD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAyB;gBAE1C,OAAO,GAAE,uBAA4B;IAU3C,IAAI,CACR,cAAc,EAAE,MAAM,EAAE,EACxB,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,gBAAgB,GACxB,OAAO,CAAC,kBAAkB,CAAC;YAqDhB,WAAW;CAe1B"}
|
|
@@ -23,7 +23,10 @@ import { DEFAULT_POLICY, POLICY_WILDCARD } from "./runtime-registry.js";
|
|
|
23
23
|
export class ControllerLoader {
|
|
24
24
|
constructor(options = {}) {
|
|
25
25
|
this.emit = options.emit;
|
|
26
|
-
this.npmLoader = new NpmControllerLoader({
|
|
26
|
+
this.npmLoader = new NpmControllerLoader({
|
|
27
|
+
entryUrl: options.entryUrl,
|
|
28
|
+
installRoot: options.installRoot,
|
|
29
|
+
});
|
|
27
30
|
this.napiLoader = new NapiControllerLoader();
|
|
28
31
|
this.bundleLoader = new BundleControllerLoader();
|
|
29
32
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controller-loader.js","sourceRoot":"","sources":["../src/controller-loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,YAAY,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAC/E,OAAO,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AACtG,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAoB,cAAc,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"controller-loader.js","sourceRoot":"","sources":["../src/controller-loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,20 +18,31 @@ export interface NpmControllerLoaderOptions {
|
|
|
18
18
|
* `pkg-name` cli command resolves it from its argument.
|
|
19
19
|
*/
|
|
20
20
|
entryUrl?: string;
|
|
21
|
+
/**
|
|
22
|
+
* Explicit install root, threaded from the kernel's single `resolveCacheRoot`
|
|
23
|
+
* (`<cache-root>/npm`). When set it overrides the entry-anchored
|
|
24
|
+
* `computeInstallRoot`, so a relocated `TELO_CACHE_DIR` (e.g. a prebuilt
|
|
25
|
+
* image baking deps at `/telo-cache`) is honoured without this loader reading
|
|
26
|
+
* the env itself.
|
|
27
|
+
*/
|
|
28
|
+
installRoot?: string;
|
|
21
29
|
}
|
|
22
30
|
/**
|
|
23
31
|
* The npm-loader maintains a single install root per kernel process. For a
|
|
24
32
|
* local entry manifest (`file://` URL or bare path) the root lives at
|
|
25
33
|
* `<entry-manifest-dir>/.telo/npm/`; for an HTTP(S) entry URL it lives in a
|
|
26
34
|
* user-level cache keyed by `sha256(entryUrl)` (see `computeInstallRoot`).
|
|
27
|
-
* Every controller — registry tag or `local_path` — is installed
|
|
28
|
-
* `npm install <spec
|
|
29
|
-
* `<root>/node_modules/<
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
+
* Every controller — registry tag or `local_path` — is installed under a
|
|
36
|
+
* version-scoped npm alias (`npm install <alias>@<spec>`, see `installAlias`)
|
|
37
|
+
* into this root, then imported from `<root>/node_modules/<alias>`. The alias
|
|
38
|
+
* encodes `name@version`, so a graph that references one package at two
|
|
39
|
+
* versions keeps both in the single flat `node_modules` instead of the last
|
|
40
|
+
* `--save` clobbering the first. This still collapses two parallel module
|
|
41
|
+
* realms (kernel-side @telorun/sdk vs. controller-side @telorun/sdk) into one:
|
|
42
|
+
* `@telorun/sdk` is exempt from aliasing and wired in as a `file:` dep under
|
|
43
|
+
* its real name, npm/pnpm hoist a single copy, and Node's ESM resolver follows
|
|
44
|
+
* it to the same realpath as the kernel — so `Stream` (and any other
|
|
45
|
+
* class-identity-sensitive type) has a single constructor across the process.
|
|
35
46
|
*
|
|
36
47
|
* Per-kernel state lives on each `NpmControllerLoader` instance (one is
|
|
37
48
|
* constructed per `ControllerLoader`, which is itself constructed per
|
|
@@ -44,6 +55,8 @@ export interface NpmControllerLoaderOptions {
|
|
|
44
55
|
*/
|
|
45
56
|
export declare class NpmControllerLoader {
|
|
46
57
|
private readonly entryUrl?;
|
|
58
|
+
/** Threaded install root (`<cache-root>/npm`); overrides `computeInstallRoot`. */
|
|
59
|
+
private readonly installRootOverride?;
|
|
47
60
|
/**
|
|
48
61
|
* Per-process cache of "this controller's package + version is already
|
|
49
62
|
* installed in the root and matches our spec" so concurrent loads of the
|
|
@@ -94,11 +107,14 @@ export declare class NpmControllerLoader {
|
|
|
94
107
|
*/
|
|
95
108
|
private seedDepCaches;
|
|
96
109
|
/**
|
|
97
|
-
* Install one controller
|
|
98
|
-
*
|
|
99
|
-
* `npm install` call. If the
|
|
100
|
-
*
|
|
110
|
+
* Install one controller into the existing root under its version-scoped
|
|
111
|
+
* `alias` folder. Single-flight per alias within the process; cross-process
|
|
112
|
+
* safety is the fs-lock around the `npm install` call. If the alias is
|
|
113
|
+
* already installed (right version on disk, or a matching `file:` record),
|
|
114
|
+
* skip — reusing the previous install.
|
|
101
115
|
*
|
|
116
|
+
* `spec` is the source half of the install (`npm:<name>@<version>` or
|
|
117
|
+
* `file:<abs>`); the package manager is invoked with `<alias>@<spec>`.
|
|
102
118
|
* `kind` distinguishes a `local_path` source (loader synthesized `file:`
|
|
103
119
|
* spec) from a registry tag. The CLI silences progress for both `cache`
|
|
104
120
|
* and `local`; `npm-install` is the only event surfaced. Folding this
|
|
@@ -132,6 +148,28 @@ export declare class NpmControllerLoader {
|
|
|
132
148
|
* advance to a non-npm candidate.
|
|
133
149
|
*/
|
|
134
150
|
declare function computeInstallRoot(entryUrl: string): string;
|
|
151
|
+
/**
|
|
152
|
+
* Version-qualified install alias for a controller package. The kernel's single
|
|
153
|
+
* flat install root can hold only one folder per package name, but a manifest
|
|
154
|
+
* graph may legitimately reference the same package at multiple versions (e.g.
|
|
155
|
+
* a library pins `@telorun/mcp-client@0.3.1` while the app uses `0.4.0`).
|
|
156
|
+
* Installing each `name@version` under a distinct npm alias
|
|
157
|
+
* (`npm install <alias>@npm:<name>@<version>`) lets every version coexist in
|
|
158
|
+
* one `node_modules`, mirroring the per-(name, version) identity of a Telo
|
|
159
|
+
* module singleton. `@telorun/sdk` is intentionally NOT routed through here —
|
|
160
|
+
* it stays under its real name so realm-collapse hoists a single copy across
|
|
161
|
+
* the kernel/controller boundary (see REALM_COLLAPSE_NAMES).
|
|
162
|
+
*
|
|
163
|
+
* The result is a valid unscoped npm package name: the scope `@` is dropped,
|
|
164
|
+
* `/` becomes `__`, and any character outside npm's name grammar is replaced
|
|
165
|
+
* with `-`. Because that sanitization is lossy (e.g. build metadata `1.0.0+x`
|
|
166
|
+
* and prerelease `1.0.0-x` both fold to `1.0.0-x`, and a `__` already in a
|
|
167
|
+
* package name overlaps the scope separator), the alias ends with a short hash
|
|
168
|
+
* of the *exact* `name@version` — so two distinct pairs can never collide onto
|
|
169
|
+
* one folder regardless of how their readable prefixes sanitize. The readable
|
|
170
|
+
* prefix is kept purely so the install tree is greppable.
|
|
171
|
+
*/
|
|
172
|
+
declare function installAlias(packageName: string, version: string | null): string;
|
|
135
173
|
/**
|
|
136
174
|
* Normalize a `file:` spec to an absolute path so two specs that point at the
|
|
137
175
|
* same source — one absolute (what the loader synthesizes from `local_path`)
|
|
@@ -157,6 +195,7 @@ declare function resolveExportTargetValue(target: any, conditions: ReadonlyArray
|
|
|
157
195
|
* Not part of the kernel's public API — consumers should not import these.
|
|
158
196
|
*/
|
|
159
197
|
export declare const __testing__: {
|
|
198
|
+
installAlias: typeof installAlias;
|
|
160
199
|
normalizeFileSpec: typeof normalizeFileSpec;
|
|
161
200
|
resolvePackageExportTarget: typeof resolvePackageExportTarget;
|
|
162
201
|
resolveExportTargetValue: typeof resolveExportTargetValue;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"npm-loader.d.ts","sourceRoot":"","sources":["../../src/controller-loaders/npm-loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AA4DlD;;;;;GAKG;AACH,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,cAAc,GAAG,aAAa,GAAG,OAAO,CAAC;AAoBlF,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,MAAM,EAAE,gBAAgB,CAAC;CAC1B;AAED,MAAM,WAAW,0BAA0B;IACzC;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"npm-loader.d.ts","sourceRoot":"","sources":["../../src/controller-loaders/npm-loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AA4DlD;;;;;GAKG;AACH,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,cAAc,GAAG,aAAa,GAAG,OAAO,CAAC;AAoBlF,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,MAAM,EAAE,gBAAgB,CAAC;CAC1B;AAED,MAAM,WAAW,0BAA0B;IACzC;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAS;IACnC,kFAAkF;IAClF,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAS;IAE9C;;;;;;OAMG;IACH,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAqB;IAEpD;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoC;IAE7D;;;;OAIG;IACH,OAAO,CAAC,SAAS,CAAC,CAAkB;IAEpC;;;;;;;;OAQG;IACH,OAAO,CAAC,QAAQ,CAA8B;gBAElC,OAAO,GAAE,0BAA+B;IAK9C,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAwBjE;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB;YAUX,sBAAsB;IAqFpC;;;;;;;OAOG;YACW,aAAa;IAe3B;;;;;;;;;;;;;;OAcG;YACW,cAAc;CAuH7B;AA+ND;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,iBAAS,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CA2BpD;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,iBAAS,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAMzE;AAED;;;;;;GAMG;AACH,iBAAS,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAKpE;AAkLD;;;;GAIG;AACH,iBAAe,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAOrE;AAED,iBAAS,0BAA0B,CACjC,YAAY,EAAE,GAAG,EACjB,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,aAAa,CAAC,MAAM,CAAC,GAChC,MAAM,GAAG,IAAI,CAIf;AAED,iBAAS,wBAAwB,CAC/B,MAAM,EAAE,GAAG,EACX,UAAU,EAAE,aAAa,CAAC,MAAM,CAAC,EACjC,KAAK,EAAE,MAAM,GACZ,MAAM,GAAG,IAAI,CAoBf;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;CAUvB,CAAC"}
|
|
@@ -55,14 +55,17 @@ const LOCK_RETRY_MS = 500;
|
|
|
55
55
|
* local entry manifest (`file://` URL or bare path) the root lives at
|
|
56
56
|
* `<entry-manifest-dir>/.telo/npm/`; for an HTTP(S) entry URL it lives in a
|
|
57
57
|
* user-level cache keyed by `sha256(entryUrl)` (see `computeInstallRoot`).
|
|
58
|
-
* Every controller — registry tag or `local_path` — is installed
|
|
59
|
-
* `npm install <spec
|
|
60
|
-
* `<root>/node_modules/<
|
|
61
|
-
*
|
|
62
|
-
*
|
|
63
|
-
*
|
|
64
|
-
*
|
|
65
|
-
*
|
|
58
|
+
* Every controller — registry tag or `local_path` — is installed under a
|
|
59
|
+
* version-scoped npm alias (`npm install <alias>@<spec>`, see `installAlias`)
|
|
60
|
+
* into this root, then imported from `<root>/node_modules/<alias>`. The alias
|
|
61
|
+
* encodes `name@version`, so a graph that references one package at two
|
|
62
|
+
* versions keeps both in the single flat `node_modules` instead of the last
|
|
63
|
+
* `--save` clobbering the first. This still collapses two parallel module
|
|
64
|
+
* realms (kernel-side @telorun/sdk vs. controller-side @telorun/sdk) into one:
|
|
65
|
+
* `@telorun/sdk` is exempt from aliasing and wired in as a `file:` dep under
|
|
66
|
+
* its real name, npm/pnpm hoist a single copy, and Node's ESM resolver follows
|
|
67
|
+
* it to the same realpath as the kernel — so `Stream` (and any other
|
|
68
|
+
* class-identity-sensitive type) has a single constructor across the process.
|
|
66
69
|
*
|
|
67
70
|
* Per-kernel state lives on each `NpmControllerLoader` instance (one is
|
|
68
71
|
* constructed per `ControllerLoader`, which is itself constructed per
|
|
@@ -100,6 +103,7 @@ export class NpmControllerLoader {
|
|
|
100
103
|
*/
|
|
101
104
|
this.rootDeps = {};
|
|
102
105
|
this.entryUrl = options.entryUrl;
|
|
106
|
+
this.installRootOverride = options.installRoot;
|
|
103
107
|
}
|
|
104
108
|
async load(purl, baseUri) {
|
|
105
109
|
const parsed = PackageURL.fromString(purl);
|
|
@@ -107,10 +111,14 @@ export class NpmControllerLoader {
|
|
|
107
111
|
throw new Error(`Invalid PURL '${purl}': missing package name`);
|
|
108
112
|
}
|
|
109
113
|
const packageName = parsed.namespace ? `${parsed.namespace}/${parsed.name}` : parsed.name;
|
|
114
|
+
const version = parsed.version ?? null;
|
|
115
|
+
// Version-scope the install under an alias so the same package at two
|
|
116
|
+
// versions can coexist in one flat node_modules (see installAlias).
|
|
117
|
+
const alias = installAlias(packageName, version);
|
|
110
118
|
const installRoot = await this.ensureInstallRoot();
|
|
111
119
|
const resolved = await resolveInstallSpec(parsed, packageName, baseUri);
|
|
112
|
-
const source = await this.installPackage(installRoot,
|
|
113
|
-
const instance = await loadFromInstall(installRoot,
|
|
120
|
+
const source = await this.installPackage(installRoot, alias, resolved.spec, resolved.kind, version);
|
|
121
|
+
const instance = await loadFromInstall(installRoot, alias, parsed.subpath ?? null, purl);
|
|
114
122
|
return { instance, source };
|
|
115
123
|
}
|
|
116
124
|
/**
|
|
@@ -140,7 +148,7 @@ export class NpmControllerLoader {
|
|
|
140
148
|
"Kernel.load() records this; CLI: pass the manifest path).");
|
|
141
149
|
}
|
|
142
150
|
const entryUrlStr = this.entryUrl;
|
|
143
|
-
const installRoot = computeInstallRoot(entryUrlStr);
|
|
151
|
+
const installRoot = this.installRootOverride ?? computeInstallRoot(entryUrlStr);
|
|
144
152
|
// Build the install-root package.json: kernel-runtime deps as `file:` refs
|
|
145
153
|
// pointing at the kernel-side realpath. Modules declare these names as
|
|
146
154
|
// `peerDependencies`, so npm/pnpm resolve each controller's `import` to the
|
|
@@ -211,25 +219,33 @@ export class NpmControllerLoader {
|
|
|
211
219
|
* reload where the writer is still racing).
|
|
212
220
|
*/
|
|
213
221
|
async seedDepCaches(installRoot, dependencies) {
|
|
222
|
+
// `dependencies` is only the realm-collapse deps (`@telorun/sdk`), keyed by
|
|
223
|
+
// real `name@spec`. Controllers, by contrast, key `installedSpecs` by their
|
|
224
|
+
// version-scoped alias in `installPackage`. The two key spaces are
|
|
225
|
+
// intentionally disjoint — realm-collapse names are wired in here and never
|
|
226
|
+
// flow through `installPackage`, so an alias and a `name@spec` never clash.
|
|
214
227
|
for (const [name, spec] of Object.entries(dependencies)) {
|
|
215
228
|
this.installedSpecs.add(`${name}@${spec}`);
|
|
216
229
|
}
|
|
217
230
|
this.rootDeps = (await readPackageDeps(installRoot)) ?? { ...dependencies };
|
|
218
231
|
}
|
|
219
232
|
/**
|
|
220
|
-
* Install one controller
|
|
221
|
-
*
|
|
222
|
-
* `npm install` call. If the
|
|
223
|
-
*
|
|
233
|
+
* Install one controller into the existing root under its version-scoped
|
|
234
|
+
* `alias` folder. Single-flight per alias within the process; cross-process
|
|
235
|
+
* safety is the fs-lock around the `npm install` call. If the alias is
|
|
236
|
+
* already installed (right version on disk, or a matching `file:` record),
|
|
237
|
+
* skip — reusing the previous install.
|
|
224
238
|
*
|
|
239
|
+
* `spec` is the source half of the install (`npm:<name>@<version>` or
|
|
240
|
+
* `file:<abs>`); the package manager is invoked with `<alias>@<spec>`.
|
|
225
241
|
* `kind` distinguishes a `local_path` source (loader synthesized `file:`
|
|
226
242
|
* spec) from a registry tag. The CLI silences progress for both `cache`
|
|
227
243
|
* and `local`; `npm-install` is the only event surfaced. Folding this
|
|
228
244
|
* decision in here means the caller no longer needs to override the
|
|
229
245
|
* returned source after the fact.
|
|
230
246
|
*/
|
|
231
|
-
async installPackage(installRoot,
|
|
232
|
-
const cacheKey =
|
|
247
|
+
async installPackage(installRoot, alias, spec, kind, requestedVersion) {
|
|
248
|
+
const cacheKey = alias;
|
|
233
249
|
if (this.installedSpecs.has(cacheKey))
|
|
234
250
|
return "cache";
|
|
235
251
|
const inFlight = this.inFlight.get(cacheKey);
|
|
@@ -237,16 +253,19 @@ export class NpmControllerLoader {
|
|
|
237
253
|
await inFlight;
|
|
238
254
|
return "cache";
|
|
239
255
|
}
|
|
240
|
-
|
|
256
|
+
// The package is installed under its version-scoped alias, so its folder
|
|
257
|
+
// name in node_modules is the alias, not the bare package name.
|
|
258
|
+
const targetPath = path.join(installRoot, "node_modules", alias);
|
|
241
259
|
// Registry fast path: compare against the installed package's own
|
|
242
|
-
// `package.json` version field.
|
|
243
|
-
//
|
|
244
|
-
//
|
|
245
|
-
// never matches and every fresh `NpmControllerLoader`
|
|
246
|
-
// `Telo.Definition.init`) would fall through to a no-op but ~200ms
|
|
260
|
+
// `package.json` version field. The recorded dep spec can't be used here
|
|
261
|
+
// because npm rewrites registry specs on `--save` — we pass
|
|
262
|
+
// `<alias>@npm:@scope/pkg@0.3.4`, npm writes `npm:@scope/pkg@^0.3.4` — so a
|
|
263
|
+
// string comparison never matches and every fresh `NpmControllerLoader`
|
|
264
|
+
// (one per `Telo.Definition.init`) would fall through to a no-op but ~200ms
|
|
247
265
|
// `npm install`. Reading the installed package.json sidesteps that
|
|
248
|
-
// entirely: if the requested PURL version equals what's on disk
|
|
249
|
-
// already have the right thing.
|
|
266
|
+
// entirely: if the requested PURL version equals what's on disk under this
|
|
267
|
+
// alias, we already have the right thing. Because the alias encodes the
|
|
268
|
+
// version, a present alias folder is always the requested version.
|
|
250
269
|
//
|
|
251
270
|
// Ranges (`^1.0.0`, `~2.3.0`) fall through to a real `npm install` —
|
|
252
271
|
// they're rare in PURLs (which typically pin) and a proper range check
|
|
@@ -259,30 +278,41 @@ export class NpmControllerLoader {
|
|
|
259
278
|
return "cache";
|
|
260
279
|
}
|
|
261
280
|
}
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
281
|
+
else {
|
|
282
|
+
// Local (`file:`) spec fast path: consult the in-process snapshot of the
|
|
283
|
+
// install root's `dependencies` map (seeded by `materializeInstallRoot`).
|
|
284
|
+
// Normalize because npm rewrites absolute `file:` deps to relative paths
|
|
285
|
+
// inside the install root's `package.json` — the loader passes the
|
|
286
|
+
// absolute path, the on-disk record is `file:../../foo`.
|
|
287
|
+
const cachedSpec = this.rootDeps[alias];
|
|
288
|
+
if (cachedSpec !== undefined &&
|
|
289
|
+
normalizeFileSpec(cachedSpec, installRoot) === normalizeFileSpec(spec, installRoot) &&
|
|
290
|
+
(await pathExists(targetPath))) {
|
|
291
|
+
this.installedSpecs.add(cacheKey);
|
|
292
|
+
return "cache";
|
|
293
|
+
}
|
|
273
294
|
}
|
|
274
295
|
const work = (async () => {
|
|
275
296
|
await withInstallLock(installRoot, async () => {
|
|
276
297
|
// Re-check inside the lock: a peer process may have installed the
|
|
277
|
-
// spec between the fast-path miss and our acquisition.
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
298
|
+
// spec between the fast-path miss and our acquisition.
|
|
299
|
+
if (kind === "registry") {
|
|
300
|
+
const installedVersion = await readInstalledVersion(targetPath);
|
|
301
|
+
if (installedVersion !== null &&
|
|
302
|
+
(requestedVersion === null || requestedVersion === installedVersion)) {
|
|
303
|
+
return;
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
else {
|
|
307
|
+
// Normalize the on-disk record to absolute form before comparing —
|
|
308
|
+
// npm rewrites `file:` deps to be relative to the install root.
|
|
309
|
+
const lockedSpec = await readDepSpec(installRoot, alias);
|
|
310
|
+
if (lockedSpec !== undefined &&
|
|
311
|
+
normalizeFileSpec(lockedSpec, installRoot) === normalizeFileSpec(spec, installRoot) &&
|
|
312
|
+
(await pathExists(targetPath))) {
|
|
313
|
+
this.rootDeps[alias] = lockedSpec;
|
|
314
|
+
return;
|
|
315
|
+
}
|
|
286
316
|
}
|
|
287
317
|
await runPackageManager(installRoot, [
|
|
288
318
|
"install",
|
|
@@ -291,16 +321,19 @@ export class NpmControllerLoader {
|
|
|
291
321
|
"--silent",
|
|
292
322
|
...PEER_INSTALL_FLAGS,
|
|
293
323
|
"--save",
|
|
294
|
-
spec
|
|
324
|
+
// `<alias>@<source-spec>` installs the package under the alias folder
|
|
325
|
+
// (`npm:` for registry, `file:` for local) so multiple versions of
|
|
326
|
+
// one package name coexist in the single install root.
|
|
327
|
+
`${alias}@${spec}`,
|
|
295
328
|
]);
|
|
296
329
|
// Re-read what npm actually wrote (it normalizes `file:` paths to
|
|
297
330
|
// be relative to the install root). Caching the spec in its on-disk
|
|
298
331
|
// form keeps subsequent fast-path comparisons stable.
|
|
299
|
-
const written = await readDepSpec(installRoot,
|
|
332
|
+
const written = await readDepSpec(installRoot, alias);
|
|
300
333
|
if (written !== undefined)
|
|
301
|
-
this.rootDeps[
|
|
334
|
+
this.rootDeps[alias] = written;
|
|
302
335
|
else
|
|
303
|
-
this.rootDeps[
|
|
336
|
+
this.rootDeps[alias] = spec;
|
|
304
337
|
});
|
|
305
338
|
})();
|
|
306
339
|
this.inFlight.set(cacheKey, work);
|
|
@@ -589,6 +622,34 @@ function computeInstallRoot(entryUrl) {
|
|
|
589
622
|
`loader. Supported schemes: file://, http://, https://, or a bare filesystem path. ` +
|
|
590
623
|
`(entryUrl: ${entryUrl})`);
|
|
591
624
|
}
|
|
625
|
+
/**
|
|
626
|
+
* Version-qualified install alias for a controller package. The kernel's single
|
|
627
|
+
* flat install root can hold only one folder per package name, but a manifest
|
|
628
|
+
* graph may legitimately reference the same package at multiple versions (e.g.
|
|
629
|
+
* a library pins `@telorun/mcp-client@0.3.1` while the app uses `0.4.0`).
|
|
630
|
+
* Installing each `name@version` under a distinct npm alias
|
|
631
|
+
* (`npm install <alias>@npm:<name>@<version>`) lets every version coexist in
|
|
632
|
+
* one `node_modules`, mirroring the per-(name, version) identity of a Telo
|
|
633
|
+
* module singleton. `@telorun/sdk` is intentionally NOT routed through here —
|
|
634
|
+
* it stays under its real name so realm-collapse hoists a single copy across
|
|
635
|
+
* the kernel/controller boundary (see REALM_COLLAPSE_NAMES).
|
|
636
|
+
*
|
|
637
|
+
* The result is a valid unscoped npm package name: the scope `@` is dropped,
|
|
638
|
+
* `/` becomes `__`, and any character outside npm's name grammar is replaced
|
|
639
|
+
* with `-`. Because that sanitization is lossy (e.g. build metadata `1.0.0+x`
|
|
640
|
+
* and prerelease `1.0.0-x` both fold to `1.0.0-x`, and a `__` already in a
|
|
641
|
+
* package name overlaps the scope separator), the alias ends with a short hash
|
|
642
|
+
* of the *exact* `name@version` — so two distinct pairs can never collide onto
|
|
643
|
+
* one folder regardless of how their readable prefixes sanitize. The readable
|
|
644
|
+
* prefix is kept purely so the install tree is greppable.
|
|
645
|
+
*/
|
|
646
|
+
function installAlias(packageName, version) {
|
|
647
|
+
const prefix = `${packageName.replace(/^@/, "").replace(/\//g, "__")}__${version ?? "latest"}`
|
|
648
|
+
.replace(/[^a-zA-Z0-9._-]/g, "-")
|
|
649
|
+
.toLowerCase();
|
|
650
|
+
const digest = sha256(`${packageName}@${version ?? ""}`).slice(0, 8);
|
|
651
|
+
return `${prefix}__${digest}`;
|
|
652
|
+
}
|
|
592
653
|
/**
|
|
593
654
|
* Normalize a `file:` spec to an absolute path so two specs that point at the
|
|
594
655
|
* same source — one absolute (what the loader synthesizes from `local_path`)
|
|
@@ -662,7 +723,10 @@ async function resolveInstallSpec(parsed, packageName, baseUri) {
|
|
|
662
723
|
return { kind: "local", spec: `file:${absolutePath}`, absolutePath };
|
|
663
724
|
}
|
|
664
725
|
}
|
|
665
|
-
|
|
726
|
+
// `npm:` source spec so the caller can install it under a version-scoped
|
|
727
|
+
// alias (`<alias>@npm:<name>@<version>`); both versions of one package name
|
|
728
|
+
// then coexist in the single flat install root.
|
|
729
|
+
const spec = parsed.version ? `npm:${packageName}@${parsed.version}` : `npm:${packageName}`;
|
|
666
730
|
return { kind: "registry", spec };
|
|
667
731
|
}
|
|
668
732
|
/**
|
|
@@ -671,8 +735,10 @@ async function resolveInstallSpec(parsed, packageName, baseUri) {
|
|
|
671
735
|
* `installPackage` decides whether work is needed, this function is pure
|
|
672
736
|
* resolve-and-import once the tree is in place.
|
|
673
737
|
*/
|
|
674
|
-
async function loadFromInstall(installRoot,
|
|
675
|
-
|
|
738
|
+
async function loadFromInstall(installRoot, alias, subpath, purl) {
|
|
739
|
+
// The package lives under its version-scoped alias folder (see installAlias),
|
|
740
|
+
// not its bare scoped name.
|
|
741
|
+
const packageRoot = path.join(installRoot, "node_modules", alias);
|
|
676
742
|
const entry = subpath ? `./${subpath}` : ".";
|
|
677
743
|
const entryFile = await resolvePackageEntry(packageRoot, entry);
|
|
678
744
|
// ESM dynamic `import()` accepts either a relative specifier or a `file://`
|
|
@@ -810,6 +876,7 @@ function resolveExportTargetValue(target, conditions, depth) {
|
|
|
810
876
|
* Not part of the kernel's public API — consumers should not import these.
|
|
811
877
|
*/
|
|
812
878
|
export const __testing__ = {
|
|
879
|
+
installAlias,
|
|
813
880
|
normalizeFileSpec,
|
|
814
881
|
resolvePackageExportTarget,
|
|
815
882
|
resolveExportTargetValue,
|