@ultrst-armada/krnl 1.0.2 → 1.0.3
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 +67 -65
- package/package.json +12 -8
- package/packages/cli/dist/bin/krnl.cjs +793 -330
- package/packages/cli/dist/bin/krnl.js +50 -65
- package/packages/cli/dist/chunk-6SHSECXR.js +1628 -0
- package/packages/cli/dist/index.cjs +746 -262
- package/packages/cli/dist/index.d.cts +45 -2
- package/packages/cli/dist/index.d.ts +45 -2
- package/packages/cli/dist/index.js +5 -1
- package/packages/cli/package.json +17 -10
- package/packages/core/dist/index.cjs +2905 -139
- package/packages/core/dist/index.d.cts +611 -27
- package/packages/core/dist/index.d.ts +611 -27
- package/packages/core/dist/index.js +2897 -139
- package/packages/core/package.json +14 -6
- package/packages/create-krnl/dist/index.cjs +102 -65
- package/packages/create-krnl/dist/index.js +102 -65
- package/packages/create-krnl/package.json +5 -3
- package/packages/eslint-plugin/dist/index.cjs +17 -55
- package/packages/eslint-plugin/dist/index.d.cts +8 -43
- package/packages/eslint-plugin/dist/index.d.ts +8 -43
- package/packages/eslint-plugin/dist/index.js +17 -55
- package/packages/eslint-plugin/package.json +5 -4
- package/packages/validate/dist/index.cjs +378 -85
- package/packages/validate/dist/index.d.cts +11 -1
- package/packages/validate/dist/index.d.ts +11 -1
- package/packages/validate/dist/index.js +375 -82
- package/packages/validate/package.json +14 -7
- package/packages/cli/dist/K_ENT_Entity-PQ5MURQY-ZG6FZXXX.js +0 -13
- package/packages/cli/dist/K_LIB_Krnl_Aiko_Client-OPZAVZCW-K4CRQYA5.js +0 -8
- package/packages/cli/dist/K_LIB_Krnl_Ep_Tools-ROOE2TQF-LNPXZYOE.js +0 -110
- package/packages/cli/dist/K_LIB_Krnl_Frontend_Builder-2ZDUH6PF-3ALZPNX4.js +0 -11
- package/packages/cli/dist/K_LIB_Krnl_Frontend_Generator-UYNRNX2X-PJTICYSW.js +0 -11
- package/packages/cli/dist/K_LIB_Krnl_Registry_Client-NXV6D2QW-M5TYU55O.js +0 -8
- package/packages/cli/dist/K_LIB_Krnl_SubApp_Engine-7HR5HWW2-H6STOXRK.js +0 -20
- package/packages/cli/dist/K_LIB_Krnl_SubApp_Registry-7XYGDKJK-XPJXSF7D.js +0 -19
- package/packages/cli/dist/K_LIB_Krnl_SubApp_Worker_Host-CQVTGGG7-CUYGTWOW.js +0 -7
- package/packages/cli/dist/K_LIB_Krnl_System_App_Adapter-M6FJKLGU-VR6T4N6J.js +0 -17
- package/packages/cli/dist/K_LIB_Krnl_System_Base_Functionality_APIs-ZZUZ6ZG5-RLJ4QWDP.js +0 -58
- package/packages/cli/dist/K_LIB_Krnl_System_Magnetic_Loader-XBQO2KXF-BOQGUASC.js +0 -22
- package/packages/cli/dist/K_LIB_Krnl_System_Unified_Http_Adapter-RCEGP3OG-XJI7KIT5.js +0 -8
- package/packages/cli/dist/K_LIB_Krnl_Telemetry-77FRZ3KV-K5VCWAFW.js +0 -9
- package/packages/cli/dist/chunk-3TRM6CYL.js +0 -152
- package/packages/cli/dist/chunk-5JDK35TG.js +0 -3872
- package/packages/cli/dist/chunk-63PTK33I.js +0 -997
- package/packages/cli/dist/chunk-6NIKAMUZ.js +0 -82
- package/packages/cli/dist/chunk-BOXWWXQG.js +0 -400
- package/packages/cli/dist/chunk-EEKLK7QJ.js +0 -565
- package/packages/cli/dist/chunk-EG7T2IAD.js +0 -107
- package/packages/cli/dist/chunk-ESTKOQ7T.js +0 -1146
- package/packages/cli/dist/chunk-F5EHXE2O.js +0 -1036
- package/packages/cli/dist/chunk-F65ANSQG.js +0 -269
- package/packages/cli/dist/chunk-FDNCADFE.js +0 -71
- package/packages/cli/dist/chunk-FZ6X7PHR.js +0 -1146
- package/packages/cli/dist/chunk-GDLRMDAN.js +0 -127
- package/packages/cli/dist/chunk-HWMTCMOS.js +0 -656
- package/packages/cli/dist/chunk-I74QIQOD.js +0 -5536
- package/packages/cli/dist/chunk-JTLSTO25.js +0 -71
- package/packages/cli/dist/chunk-JULBBJ27.js +0 -1033
- package/packages/cli/dist/chunk-OHVMVRBP.js +0 -117
- package/packages/cli/dist/chunk-P2PCLEKX.js +0 -666
- package/packages/cli/dist/chunk-PJQIUOX2.js +0 -7767
- package/packages/cli/dist/chunk-PPOF3DJW.js +0 -471
- package/packages/cli/dist/chunk-Q45257P6.js +0 -173
- package/packages/cli/dist/chunk-QNROWGBI.js +0 -1036
- package/packages/cli/dist/chunk-RJNYUXZD.js +0 -977
- package/packages/cli/dist/chunk-SRTOPJ5W.js +0 -104
- package/packages/cli/dist/chunk-TCEX3MPS.js +0 -702
- package/packages/cli/dist/chunk-TNOAJO2J.js +0 -675
- package/packages/cli/dist/chunk-UR2SUCSF.js +0 -701
- package/packages/cli/dist/chunk-X5LOIFM7.js +0 -68
- package/packages/cli/dist/chunk-XIRFOO3H.js +0 -589
- package/packages/cli/dist/chunk-ZAAV3JXQ.js +0 -809
- package/packages/core/dist/K_ENT_Entity-4MB7CU4A.js +0 -12
- package/packages/core/dist/K_ENT_Entity-DEJGIDGH.js +0 -12
- package/packages/core/dist/K_ENT_Entity-FXZO5UZ2.js +0 -12
- package/packages/core/dist/K_ENT_Entity-HDSCXC5F.js +0 -12
- package/packages/core/dist/K_ENT_Entity-JILABHLW.js +0 -12
- package/packages/core/dist/K_ENT_Entity-PQ5MURQY.js +0 -13
- package/packages/core/dist/K_ENT_Entity-ROAKDIHW.js +0 -12
- package/packages/core/dist/K_ENT_Entity-TBVFSKDV.js +0 -12
- package/packages/core/dist/K_ENT_Entity-ZFLKG3JO.js +0 -12
- package/packages/core/dist/K_LIB_Krnl_Aiko_Client-OPZAVZCW.js +0 -8
- package/packages/core/dist/K_LIB_Krnl_Ep_Tools-ROOE2TQF.js +0 -110
- package/packages/core/dist/K_LIB_Krnl_Frontend_Builder-2ZDUH6PF.js +0 -9
- package/packages/core/dist/K_LIB_Krnl_Frontend_Generator-UYNRNX2X.js +0 -9
- package/packages/core/dist/K_LIB_Krnl_Registry_Client-NXV6D2QW.js +0 -8
- package/packages/core/dist/K_LIB_Krnl_SubApp_Engine-7HR5HWW2.js +0 -20
- package/packages/core/dist/K_LIB_Krnl_SubApp_Registry-4C6GBQAG.js +0 -18
- package/packages/core/dist/K_LIB_Krnl_SubApp_Registry-6V23A6F6.js +0 -18
- package/packages/core/dist/K_LIB_Krnl_SubApp_Registry-7XYGDKJK.js +0 -19
- package/packages/core/dist/K_LIB_Krnl_SubApp_Registry-DYLLC5G2.js +0 -18
- package/packages/core/dist/K_LIB_Krnl_SubApp_Registry-F4FOFAUP.js +0 -18
- package/packages/core/dist/K_LIB_Krnl_SubApp_Registry-FBOXXMI3.js +0 -18
- package/packages/core/dist/K_LIB_Krnl_SubApp_Registry-Q73BWLNP.js +0 -18
- package/packages/core/dist/K_LIB_Krnl_SubApp_Registry-QM2C4MVA.js +0 -18
- package/packages/core/dist/K_LIB_Krnl_SubApp_Registry-QUGI6SMP.js +0 -18
- package/packages/core/dist/K_LIB_Krnl_SubApp_Registry-RGMTBHNP.js +0 -18
- package/packages/core/dist/K_LIB_Krnl_SubApp_Registry-RWR7UNDW.js +0 -18
- package/packages/core/dist/K_LIB_Krnl_SubApp_Worker_Host-CQVTGGG7.js +0 -7
- package/packages/core/dist/K_LIB_Krnl_System_App_Adapter-32MFJJ5Z.js +0 -17
- package/packages/core/dist/K_LIB_Krnl_System_App_Adapter-4J4CEWRY.js +0 -17
- package/packages/core/dist/K_LIB_Krnl_System_App_Adapter-A366YHF2.js +0 -17
- package/packages/core/dist/K_LIB_Krnl_System_App_Adapter-LK4LYJHI.js +0 -17
- package/packages/core/dist/K_LIB_Krnl_System_App_Adapter-M6FJKLGU.js +0 -17
- package/packages/core/dist/K_LIB_Krnl_System_App_Adapter-NW3K63II.js +0 -17
- package/packages/core/dist/K_LIB_Krnl_System_App_Adapter-QDHTI5ZV.js +0 -17
- package/packages/core/dist/K_LIB_Krnl_System_App_Adapter-VHCT6VIW.js +0 -17
- package/packages/core/dist/K_LIB_Krnl_System_App_Adapter-WBRKF24R.js +0 -17
- package/packages/core/dist/K_LIB_Krnl_System_App_Adapter-XKYQYT6Q.js +0 -17
- package/packages/core/dist/K_LIB_Krnl_System_App_Adapter-Z2PWZYDZ.js +0 -17
- package/packages/core/dist/K_LIB_Krnl_System_Base_Functionality_APIs-ZZUZ6ZG5.js +0 -58
- package/packages/core/dist/K_LIB_Krnl_System_Magnetic_Loader-2EZU7QF4.js +0 -21
- package/packages/core/dist/K_LIB_Krnl_System_Magnetic_Loader-6G3AQNAV.js +0 -21
- package/packages/core/dist/K_LIB_Krnl_System_Magnetic_Loader-B2NZMQUG.js +0 -21
- package/packages/core/dist/K_LIB_Krnl_System_Magnetic_Loader-C2RABMZP.js +0 -21
- package/packages/core/dist/K_LIB_Krnl_System_Magnetic_Loader-HHE3NZ4F.js +0 -21
- package/packages/core/dist/K_LIB_Krnl_System_Magnetic_Loader-LHFGR6WK.js +0 -21
- package/packages/core/dist/K_LIB_Krnl_System_Magnetic_Loader-M74BLM3N.js +0 -21
- package/packages/core/dist/K_LIB_Krnl_System_Magnetic_Loader-PT6ZA6EA.js +0 -21
- package/packages/core/dist/K_LIB_Krnl_System_Magnetic_Loader-SP52V3CX.js +0 -21
- package/packages/core/dist/K_LIB_Krnl_System_Magnetic_Loader-XBQO2KXF.js +0 -22
- package/packages/core/dist/K_LIB_Krnl_System_Magnetic_Loader-YNSEUHJJ.js +0 -21
- package/packages/core/dist/K_LIB_Krnl_System_Unified_Http_Adapter-M6SBHIVA.js +0 -8
- package/packages/core/dist/K_LIB_Krnl_System_Unified_Http_Adapter-RCEGP3OG.js +0 -8
- package/packages/core/dist/K_LIB_Krnl_Telemetry-77FRZ3KV.js +0 -9
- package/packages/core/dist/chunk-33L2J7V7.js +0 -82
- package/packages/core/dist/chunk-3ES4K2ZP.js +0 -817
- package/packages/core/dist/chunk-3SMHVVLL.js +0 -82
- package/packages/core/dist/chunk-3UEZ7JQA.js +0 -4877
- package/packages/core/dist/chunk-3XIE6KBD.js +0 -4877
- package/packages/core/dist/chunk-46ZLCML6.js +0 -107
- package/packages/core/dist/chunk-4UEL3DWJ.js +0 -107
- package/packages/core/dist/chunk-54GWZ5PC.js +0 -82
- package/packages/core/dist/chunk-6QCYRS5L.js +0 -127
- package/packages/core/dist/chunk-6ULMHNXR.js +0 -104
- package/packages/core/dist/chunk-7WUETJEV.js +0 -117
- package/packages/core/dist/chunk-A5KRAYDB.js +0 -107
- package/packages/core/dist/chunk-ANEAZ3PO.js +0 -107
- package/packages/core/dist/chunk-BE76RL6F.js +0 -82
- package/packages/core/dist/chunk-CIARVYDO.js +0 -107
- package/packages/core/dist/chunk-CR2ANE62.js +0 -107
- package/packages/core/dist/chunk-DI27MOR7.js +0 -173
- package/packages/core/dist/chunk-E6RLFHM5.js +0 -596
- package/packages/core/dist/chunk-EELAPMNV.js +0 -4877
- package/packages/core/dist/chunk-ENZ2RQVJ.js +0 -107
- package/packages/core/dist/chunk-F2U6CX4F.js +0 -4877
- package/packages/core/dist/chunk-FKG64OHL.js +0 -82
- package/packages/core/dist/chunk-FYAZJYM5.js +0 -772
- package/packages/core/dist/chunk-G4NP4RDQ.js +0 -82
- package/packages/core/dist/chunk-GADIRLRS.js +0 -473
- package/packages/core/dist/chunk-GR6CSLQJ.js +0 -772
- package/packages/core/dist/chunk-HDS7AT6O.js +0 -772
- package/packages/core/dist/chunk-HIMEZUU2.js +0 -71
- package/packages/core/dist/chunk-IB4UHG5I.js +0 -596
- package/packages/core/dist/chunk-J7ZYNVRS.js +0 -772
- package/packages/core/dist/chunk-JVLZU4K7.js +0 -604
- package/packages/core/dist/chunk-JYXXI7Q3.js +0 -82
- package/packages/core/dist/chunk-K54K2KZW.js +0 -192
- package/packages/core/dist/chunk-K6VHLBNH.js +0 -3316
- package/packages/core/dist/chunk-KCBP7ZYA.js +0 -596
- package/packages/core/dist/chunk-KFQGP6VL.js +0 -33
- package/packages/core/dist/chunk-KIUEUI7K.js +0 -82
- package/packages/core/dist/chunk-LB67NIZP.js +0 -949
- package/packages/core/dist/chunk-LDTYFUNW.js +0 -596
- package/packages/core/dist/chunk-MLVWARD4.js +0 -596
- package/packages/core/dist/chunk-MPYVXHKO.js +0 -2777
- package/packages/core/dist/chunk-MRQ3MITU.js +0 -772
- package/packages/core/dist/chunk-MVUN7I7O.js +0 -107
- package/packages/core/dist/chunk-NDDOIRW7.js +0 -596
- package/packages/core/dist/chunk-O3KDB5MH.js +0 -3330
- package/packages/core/dist/chunk-OEINUDSE.js +0 -400
- package/packages/core/dist/chunk-OPDENPT4.js +0 -4877
- package/packages/core/dist/chunk-P6XEM2LA.js +0 -429
- package/packages/core/dist/chunk-QKMRSQV4.js +0 -82
- package/packages/core/dist/chunk-R6CCWALL.js +0 -4877
- package/packages/core/dist/chunk-RAMMOO73.js +0 -774
- package/packages/core/dist/chunk-S3FTZFG6.js +0 -772
- package/packages/core/dist/chunk-T2ZVN434.js +0 -4877
- package/packages/core/dist/chunk-TFHLDMIA.js +0 -107
- package/packages/core/dist/chunk-TI3QUCIJ.js +0 -107
- package/packages/core/dist/chunk-TR2BAIGI.js +0 -107
- package/packages/core/dist/chunk-UGVVJKC6.js +0 -4877
- package/packages/core/dist/chunk-V2DX7YIU.js +0 -984
- package/packages/core/dist/chunk-W4IHYUYD.js +0 -772
- package/packages/core/dist/chunk-W6WBG5OY.js +0 -4877
- package/packages/core/dist/chunk-WN3M7O7H.js +0 -3312
- package/packages/core/dist/chunk-WR3NCU7U.js +0 -4877
- package/packages/core/dist/chunk-XC6B6L27.js +0 -82
- package/packages/core/dist/chunk-XNSE64ZY.js +0 -3316
- package/packages/core/dist/chunk-XROES2WN.js +0 -634
- package/packages/core/dist/chunk-XSCKNRCZ.js +0 -5020
- package/packages/core/dist/chunk-XVABPAUZ.js +0 -82
- package/packages/core/dist/chunk-YOBCB5C5.js +0 -596
- package/packages/core/dist/chunk-YUK6Q563.js +0 -666
- package/packages/core/dist/chunk-YXGL3ZEU.js +0 -1030
- package/packages/core/dist/chunk-ZINJ5OUX.js +0 -596
- package/packages/core/dist/chunk-ZPFD4BIQ.js +0 -604
- package/packages/core/dist/chunk-ZQZBFG6F.js +0 -4826
- package/packages/core/dist/chunk-ZZFRJGXM.js +0 -4877
- package/packages/create-krnl/dist/K_ENT_Entity-PQ5MURQY-R2OH4VXE.js +0 -14
- package/packages/create-krnl/dist/K_LIB_Krnl_Aiko_Client-OPZAVZCW-AZM5HF4M.js +0 -9
- package/packages/create-krnl/dist/K_LIB_Krnl_Ep_Tools-ROOE2TQF-X5N6SV2S.js +0 -111
- package/packages/create-krnl/dist/K_LIB_Krnl_Frontend_Builder-2ZDUH6PF-5PFHF4JU.js +0 -12
- package/packages/create-krnl/dist/K_LIB_Krnl_Frontend_Generator-UYNRNX2X-ED33OQPH.js +0 -12
- package/packages/create-krnl/dist/K_LIB_Krnl_Registry_Client-NXV6D2QW-YGQLVR4P.js +0 -9
- package/packages/create-krnl/dist/K_LIB_Krnl_SubApp_Engine-7HR5HWW2-VM7CTU2L.js +0 -21
- package/packages/create-krnl/dist/K_LIB_Krnl_SubApp_Registry-7XYGDKJK-Y2GQFJ7I.js +0 -21
- package/packages/create-krnl/dist/K_LIB_Krnl_SubApp_Worker_Host-CQVTGGG7-L3JQWO54.js +0 -8
- package/packages/create-krnl/dist/K_LIB_Krnl_System_App_Adapter-M6FJKLGU-KQARASPR.js +0 -19
- package/packages/create-krnl/dist/K_LIB_Krnl_System_Base_Functionality_APIs-ZZUZ6ZG5-OF3IGLVL.js +0 -59
- package/packages/create-krnl/dist/K_LIB_Krnl_System_Magnetic_Loader-XBQO2KXF-JOLHKOEX.js +0 -24
- package/packages/create-krnl/dist/K_LIB_Krnl_System_Unified_Http_Adapter-RCEGP3OG-L46LSHKQ.js +0 -10
- package/packages/create-krnl/dist/K_LIB_Krnl_Telemetry-77FRZ3KV-4JUPRR3X.js +0 -10
- package/packages/create-krnl/dist/chunk-3TRM6CYL.js +0 -152
- package/packages/create-krnl/dist/chunk-3URCB3QS.js +0 -127
- package/packages/create-krnl/dist/chunk-5JDK35TG.js +0 -3872
- package/packages/create-krnl/dist/chunk-A2XAXDOW.js +0 -812
- package/packages/create-krnl/dist/chunk-AN6TMQHG.js +0 -1033
- package/packages/create-krnl/dist/chunk-BOXWWXQG.js +0 -400
- package/packages/create-krnl/dist/chunk-BPTBREBG.js +0 -38
- package/packages/create-krnl/dist/chunk-FDNCADFE.js +0 -71
- package/packages/create-krnl/dist/chunk-JTLSTO25.js +0 -71
- package/packages/create-krnl/dist/chunk-M3NCUIPL.js +0 -107
- package/packages/create-krnl/dist/chunk-N2EONSOC.js +0 -7769
- package/packages/create-krnl/dist/chunk-OHVMVRBP.js +0 -117
- package/packages/create-krnl/dist/chunk-Q45257P6.js +0 -173
- package/packages/create-krnl/dist/chunk-QGM4M3NI.js +0 -37
- package/packages/create-krnl/dist/chunk-RJNYUXZD.js +0 -977
- package/packages/create-krnl/dist/chunk-SRTOPJ5W.js +0 -104
- package/packages/create-krnl/dist/chunk-UPBIGEC3.js +0 -666
- package/packages/create-krnl/dist/chunk-V2DB7UD7.js +0 -82
- package/packages/create-krnl/dist/chunk-WMHLIUI6.js +0 -3644
- package/packages/create-krnl/dist/chunk-XIRFOO3H.js +0 -589
- package/packages/create-krnl/dist/chunk-Y2CEEVZP.js +0 -5536
- package/packages/create-krnl/dist/main-DXUMPBND.js +0 -2217
- package/packages/create-krnl/dist/wrapper-SDF2VKX3.js +0 -31
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
subappLocalStorage
|
|
3
|
-
} from "./chunk-P2PCLEKX.js";
|
|
4
|
-
|
|
5
|
-
// ../core/dist/chunk-BE76RL6F.js
|
|
6
|
-
import path from "path";
|
|
7
|
-
import { pathToFileURL } from "url";
|
|
8
|
-
var KrnlSubAppLoader = class {
|
|
9
|
-
/**
|
|
10
|
-
* Loads a single sub-app into the parent entity's _subAppRegistry.
|
|
11
|
-
*
|
|
12
|
-
* For 'local' mode the sub-app class is instantiated directly in the parent process.
|
|
13
|
-
* Networking is suppressed automatically because the entity is constructed inside the
|
|
14
|
-
* subappLocalStorage async context (sets _isSubApp = true) and _startSharedServer()
|
|
15
|
-
* returns early for sub-app entities.
|
|
16
|
-
*
|
|
17
|
-
* For 'worker' mode a worker_thread is spawned and a KrnlSubAppWorkerHost proxy is
|
|
18
|
-
* registered in its place. All calls transit via MessagePort — no TCP/HTTP involved.
|
|
19
|
-
*/
|
|
20
|
-
static async load(parent, config) {
|
|
21
|
-
const mode = config.executionMode ?? "local";
|
|
22
|
-
const prefix = config.prefix.toLowerCase();
|
|
23
|
-
if (parent._subAppRegistry.has(prefix)) {
|
|
24
|
-
console.log(`[SubAppRegistry] Sub-app '${prefix}' already registered. Skipping.`);
|
|
25
|
-
return;
|
|
26
|
-
}
|
|
27
|
-
let entry;
|
|
28
|
-
if (mode === "local") {
|
|
29
|
-
const appDir = config.entryPath ? path.dirname(config.entryPath) : "";
|
|
30
|
-
let entity;
|
|
31
|
-
if (config.isKrnl === false || !config.ServiceClass) {
|
|
32
|
-
const { KrnlNonKrnlAppAdapter } = await import("./K_LIB_Krnl_System_App_Adapter-M6FJKLGU-VR6T4N6J.js");
|
|
33
|
-
const adapter = new KrnlNonKrnlAppAdapter(config.prefix, config.entryPath || "");
|
|
34
|
-
await adapter.startApp();
|
|
35
|
-
entity = adapter;
|
|
36
|
-
} else {
|
|
37
|
-
const options = { host: "0.0.0.0" };
|
|
38
|
-
if (config.entryPath) options.sourcePath = pathToFileURL(config.entryPath).href;
|
|
39
|
-
entity = await subappLocalStorage.run({ appPath: appDir }, async () => {
|
|
40
|
-
const inst = new config.ServiceClass(-1, options, ...config.constructorArgs ?? []);
|
|
41
|
-
if (typeof inst.boot === "function") {
|
|
42
|
-
try {
|
|
43
|
-
await inst.boot();
|
|
44
|
-
} catch (bootErr) {
|
|
45
|
-
console.warn(`[SubAppRegistry] Auto-boot warning on sub-app '${prefix}':`, bootErr.message || bootErr);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
if (inst._magneticLoadPromise) {
|
|
49
|
-
await inst._magneticLoadPromise;
|
|
50
|
-
}
|
|
51
|
-
return inst;
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
if (typeof entity._resolveReady === "function") {
|
|
55
|
-
entity._resolveReady();
|
|
56
|
-
}
|
|
57
|
-
parent.hierarchyManager.addComponentEntityInstance(entity);
|
|
58
|
-
entry = {
|
|
59
|
-
prefix,
|
|
60
|
-
executionMode: "local",
|
|
61
|
-
entity,
|
|
62
|
-
addedAt: Date.now()
|
|
63
|
-
};
|
|
64
|
-
console.log(`[SubAppRegistry] Loaded sub-app '${prefix}' in LOCAL mode (in-process).`);
|
|
65
|
-
} else {
|
|
66
|
-
const { KrnlSubAppWorkerHost } = await import("./K_LIB_Krnl_SubApp_Worker_Host-CQVTGGG7-CUYGTWOW.js");
|
|
67
|
-
const host = await KrnlSubAppWorkerHost.create(config);
|
|
68
|
-
entry = {
|
|
69
|
-
prefix,
|
|
70
|
-
executionMode: "worker",
|
|
71
|
-
entity: host,
|
|
72
|
-
addedAt: Date.now()
|
|
73
|
-
};
|
|
74
|
-
console.log(`[SubAppRegistry] Loaded sub-app '${prefix}' in WORKER mode (isolated thread).`);
|
|
75
|
-
}
|
|
76
|
-
parent._subAppRegistry.set(prefix, entry);
|
|
77
|
-
}
|
|
78
|
-
};
|
|
79
|
-
|
|
80
|
-
export {
|
|
81
|
-
KrnlSubAppLoader
|
|
82
|
-
};
|
|
@@ -1,400 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
Logger
|
|
3
|
-
} from "./chunk-JTLSTO25.js";
|
|
4
|
-
|
|
5
|
-
// ../core/dist/chunk-OEINUDSE.js
|
|
6
|
-
import fs from "fs";
|
|
7
|
-
import path from "path";
|
|
8
|
-
import { pathToFileURL } from "url";
|
|
9
|
-
var DefaultServiceContainer = class {
|
|
10
|
-
services = /* @__PURE__ */ new Map();
|
|
11
|
-
constructor(initialServices = {}) {
|
|
12
|
-
for (const [k, v] of Object.entries(initialServices)) {
|
|
13
|
-
this.services.set(k, v);
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
get(serviceName) {
|
|
17
|
-
return this.services.get(serviceName);
|
|
18
|
-
}
|
|
19
|
-
has(serviceName) {
|
|
20
|
-
return this.services.has(serviceName);
|
|
21
|
-
}
|
|
22
|
-
register(serviceName, serviceInstance) {
|
|
23
|
-
this.services.set(serviceName, serviceInstance);
|
|
24
|
-
}
|
|
25
|
-
list() {
|
|
26
|
-
return Array.from(this.services.keys());
|
|
27
|
-
}
|
|
28
|
-
};
|
|
29
|
-
var DefaultOperationRegistrar = class {
|
|
30
|
-
ops = /* @__PURE__ */ new Map();
|
|
31
|
-
register(op) {
|
|
32
|
-
if (!op || !op.name) {
|
|
33
|
-
throw new Error(`[OperationRegistrar] Cannot register operation without a valid name.`);
|
|
34
|
-
}
|
|
35
|
-
this.ops.set(op.name, op);
|
|
36
|
-
}
|
|
37
|
-
registerBatch(ops) {
|
|
38
|
-
if (!Array.isArray(ops)) return;
|
|
39
|
-
for (const op of ops) {
|
|
40
|
-
this.register(op);
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
get(opName) {
|
|
44
|
-
return this.ops.get(opName);
|
|
45
|
-
}
|
|
46
|
-
list() {
|
|
47
|
-
return Array.from(this.ops.values());
|
|
48
|
-
}
|
|
49
|
-
};
|
|
50
|
-
var DefaultEventRegistrar = class {
|
|
51
|
-
hostEntity;
|
|
52
|
-
constructor(hostEntity) {
|
|
53
|
-
this.hostEntity = hostEntity;
|
|
54
|
-
}
|
|
55
|
-
emit(eventName, data) {
|
|
56
|
-
if (this.hostEntity && this.hostEntity.interface) {
|
|
57
|
-
const emitter = this.hostEntity.interface.getEmitter(eventName);
|
|
58
|
-
if (emitter && typeof emitter.pushDataStreamToEmitter === "function") {
|
|
59
|
-
emitter.pushDataStreamToEmitter(data);
|
|
60
|
-
return;
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
on(eventName, listener) {
|
|
65
|
-
if (this.hostEntity && this.hostEntity.interface) {
|
|
66
|
-
const emitter = this.hostEntity.interface.getEmitter(eventName);
|
|
67
|
-
if (emitter && typeof emitter.subscribe === "function") {
|
|
68
|
-
return emitter.subscribe((msg) => listener(msg.data || msg));
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
return () => {
|
|
72
|
-
};
|
|
73
|
-
}
|
|
74
|
-
};
|
|
75
|
-
var KrnlSubAppDiscovery = class {
|
|
76
|
-
/**
|
|
77
|
-
* Deterministically scans searchDir for sub-apps and builds typed SubAppDescriptor instances.
|
|
78
|
-
*/
|
|
79
|
-
static async discoverSubApps(searchDir) {
|
|
80
|
-
const descriptors = [];
|
|
81
|
-
if (!fs.existsSync(searchDir)) {
|
|
82
|
-
return descriptors;
|
|
83
|
-
}
|
|
84
|
-
const entries = await fs.promises.readdir(searchDir, { withFileTypes: true });
|
|
85
|
-
for (const dirent of entries) {
|
|
86
|
-
if (dirent.isDirectory()) {
|
|
87
|
-
const subAppDir = path.join(searchDir, dirent.name);
|
|
88
|
-
const desc = await this.locateDescriptor(subAppDir, dirent.name);
|
|
89
|
-
if (desc) {
|
|
90
|
-
descriptors.push(desc);
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
return descriptors;
|
|
95
|
-
}
|
|
96
|
-
/**
|
|
97
|
-
* Inspects a specific directory to see if it represents a valid sub-app.
|
|
98
|
-
*/
|
|
99
|
-
static async locateDescriptor(subAppDir, fallbackId) {
|
|
100
|
-
if (!fs.existsSync(subAppDir)) return null;
|
|
101
|
-
let id = fallbackId || path.basename(subAppDir);
|
|
102
|
-
let manifestPath;
|
|
103
|
-
let manifest;
|
|
104
|
-
const subappJsonPath = path.join(subAppDir, "subapp.json");
|
|
105
|
-
if (fs.existsSync(subappJsonPath)) {
|
|
106
|
-
try {
|
|
107
|
-
manifest = JSON.parse(fs.readFileSync(subappJsonPath, "utf-8"));
|
|
108
|
-
manifestPath = subappJsonPath;
|
|
109
|
-
if (manifest?.name) id = manifest.name;
|
|
110
|
-
} catch (e) {
|
|
111
|
-
console.warn(`[SubAppDiscovery] Failed to parse subapp.json in ${subAppDir}:`, e.message);
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
if (!manifest) {
|
|
115
|
-
const manifestJsonPath = path.join(subAppDir, "manifest.json");
|
|
116
|
-
if (fs.existsSync(manifestJsonPath)) {
|
|
117
|
-
try {
|
|
118
|
-
manifest = JSON.parse(fs.readFileSync(manifestJsonPath, "utf-8"));
|
|
119
|
-
manifestPath = manifestJsonPath;
|
|
120
|
-
if (manifest?.name) id = manifest.name;
|
|
121
|
-
} catch (_) {
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
if (!manifest) {
|
|
126
|
-
const packageJsonPath = path.join(subAppDir, "package.json");
|
|
127
|
-
if (fs.existsSync(packageJsonPath)) {
|
|
128
|
-
try {
|
|
129
|
-
const pkg = JSON.parse(fs.readFileSync(packageJsonPath, "utf-8"));
|
|
130
|
-
id = pkg.name || id;
|
|
131
|
-
manifest = {
|
|
132
|
-
name: pkg.name || id,
|
|
133
|
-
version: pkg.version || "1.0.0",
|
|
134
|
-
description: pkg.description,
|
|
135
|
-
dependencies: pkg.dependencies,
|
|
136
|
-
devDependencies: pkg.devDependencies
|
|
137
|
-
};
|
|
138
|
-
manifestPath = packageJsonPath;
|
|
139
|
-
} catch (_) {
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
const candidateEntries = [
|
|
144
|
-
manifest?.registrationEntry,
|
|
145
|
-
"register.ts",
|
|
146
|
-
"register.js",
|
|
147
|
-
"src/register.ts",
|
|
148
|
-
"src/register.js",
|
|
149
|
-
"subapp.ts",
|
|
150
|
-
"subapp.js",
|
|
151
|
-
"src/subapp.ts",
|
|
152
|
-
"src/subapp.js",
|
|
153
|
-
"index.ts",
|
|
154
|
-
"index.js",
|
|
155
|
-
"src/index.ts",
|
|
156
|
-
"src/index.js"
|
|
157
|
-
].filter(Boolean);
|
|
158
|
-
let registrationPath = null;
|
|
159
|
-
for (const cand of candidateEntries) {
|
|
160
|
-
const candPath = path.resolve(subAppDir, cand);
|
|
161
|
-
if (fs.existsSync(candPath)) {
|
|
162
|
-
registrationPath = candPath;
|
|
163
|
-
break;
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
if (!registrationPath) {
|
|
167
|
-
return null;
|
|
168
|
-
}
|
|
169
|
-
return {
|
|
170
|
-
id,
|
|
171
|
-
path: subAppDir,
|
|
172
|
-
manifestPath,
|
|
173
|
-
registrationPath,
|
|
174
|
-
manifest: manifest || { name: id, version: "1.0.0" }
|
|
175
|
-
};
|
|
176
|
-
}
|
|
177
|
-
};
|
|
178
|
-
var KrnlSubAppValidator = class {
|
|
179
|
-
/**
|
|
180
|
-
* Validates a sub-app manifest.
|
|
181
|
-
*/
|
|
182
|
-
static validateManifest(manifest) {
|
|
183
|
-
const errors = [];
|
|
184
|
-
if (!manifest || typeof manifest !== "object") {
|
|
185
|
-
errors.push({ code: "INVALID_MANIFEST", message: "Manifest must be an object" });
|
|
186
|
-
return { valid: false, errors };
|
|
187
|
-
}
|
|
188
|
-
if (!manifest.name || typeof manifest.name !== "string" || manifest.name.trim().length === 0) {
|
|
189
|
-
errors.push({ code: "INVALID_NAME", message: "Manifest requires a non-empty name string", field: "name" });
|
|
190
|
-
}
|
|
191
|
-
if (manifest.version && typeof manifest.version !== "string") {
|
|
192
|
-
errors.push({ code: "INVALID_VERSION", message: "Manifest version must be a string", field: "version" });
|
|
193
|
-
}
|
|
194
|
-
if (manifest.dependencies && typeof manifest.dependencies !== "object") {
|
|
195
|
-
errors.push({ code: "INVALID_DEPENDENCIES", message: "dependencies must be a key-value record", field: "dependencies" });
|
|
196
|
-
}
|
|
197
|
-
return { valid: errors.length === 0, errors };
|
|
198
|
-
}
|
|
199
|
-
/**
|
|
200
|
-
* Validates operation definitions and checks for collisions.
|
|
201
|
-
*/
|
|
202
|
-
static validateRegistration(registration, existingOperations, subAppId) {
|
|
203
|
-
const errors = [];
|
|
204
|
-
if (!registration || typeof registration !== "object") {
|
|
205
|
-
errors.push({ code: "INVALID_REGISTRATION", message: "Registration must return an object with operations", subAppId });
|
|
206
|
-
return { valid: false, errors };
|
|
207
|
-
}
|
|
208
|
-
if (!Array.isArray(registration.operations)) {
|
|
209
|
-
errors.push({ code: "INVALID_OPERATIONS_ARRAY", message: "Registration operations must be an array", subAppId });
|
|
210
|
-
return { valid: false, errors };
|
|
211
|
-
}
|
|
212
|
-
const seenInBatch = /* @__PURE__ */ new Set();
|
|
213
|
-
for (const op of registration.operations) {
|
|
214
|
-
if (!op || typeof op !== "object") {
|
|
215
|
-
errors.push({ code: "INVALID_OPERATION", message: "Operation definition must be an object", subAppId });
|
|
216
|
-
continue;
|
|
217
|
-
}
|
|
218
|
-
if (!op.name || typeof op.name !== "string" || op.name.trim().length === 0) {
|
|
219
|
-
errors.push({ code: "INVALID_OP_NAME", message: "Operation requires a non-empty name", subAppId });
|
|
220
|
-
continue;
|
|
221
|
-
}
|
|
222
|
-
if (typeof op.handler !== "function") {
|
|
223
|
-
errors.push({
|
|
224
|
-
code: "INVALID_OP_HANDLER",
|
|
225
|
-
message: `Operation '${op.name}' must have a callable handler function`,
|
|
226
|
-
subAppId,
|
|
227
|
-
operationName: op.name
|
|
228
|
-
});
|
|
229
|
-
}
|
|
230
|
-
if (seenInBatch.has(op.name)) {
|
|
231
|
-
errors.push({
|
|
232
|
-
code: "DUPLICATE_OP_NAME",
|
|
233
|
-
message: `Duplicate operation name '${op.name}' inside sub-app registration`,
|
|
234
|
-
subAppId,
|
|
235
|
-
operationName: op.name
|
|
236
|
-
});
|
|
237
|
-
}
|
|
238
|
-
seenInBatch.add(op.name);
|
|
239
|
-
const qualifiedName = `${subAppId}.${op.name}`;
|
|
240
|
-
if (existingOperations.has(op.name) || existingOperations.has(qualifiedName)) {
|
|
241
|
-
errors.push({
|
|
242
|
-
code: "OPERATION_COLLISION",
|
|
243
|
-
message: `Operation '${op.name}' collides with an existing capability on the host Entity`,
|
|
244
|
-
subAppId,
|
|
245
|
-
operationName: op.name
|
|
246
|
-
});
|
|
247
|
-
}
|
|
248
|
-
}
|
|
249
|
-
return { valid: errors.length === 0, errors };
|
|
250
|
-
}
|
|
251
|
-
};
|
|
252
|
-
var KrnlSubAppLifecycle = class {
|
|
253
|
-
/**
|
|
254
|
-
* Loads, validates, registers, and initializes a sub-app onto an Entity.
|
|
255
|
-
*/
|
|
256
|
-
static async loadAndRegister(entity, descriptor, config = {}) {
|
|
257
|
-
const subAppId = descriptor.id;
|
|
258
|
-
const instance = {
|
|
259
|
-
id: subAppId,
|
|
260
|
-
state: "DISCOVERED",
|
|
261
|
-
manifest: descriptor.manifest || { name: subAppId, version: "1.0.0" },
|
|
262
|
-
descriptor,
|
|
263
|
-
operations: /* @__PURE__ */ new Map(),
|
|
264
|
-
error: null,
|
|
265
|
-
errorDetails: [],
|
|
266
|
-
loadedAt: Date.now()
|
|
267
|
-
};
|
|
268
|
-
try {
|
|
269
|
-
instance.state = "VALIDATING";
|
|
270
|
-
const manifestCheck = KrnlSubAppValidator.validateManifest(instance.manifest);
|
|
271
|
-
if (!manifestCheck.valid) {
|
|
272
|
-
instance.state = "ERROR";
|
|
273
|
-
instance.errorDetails = manifestCheck.errors;
|
|
274
|
-
instance.error = new Error(`[SubApp:${subAppId}] Manifest validation failed: ${manifestCheck.errors.map((e) => e.message).join(", ")}`);
|
|
275
|
-
return instance;
|
|
276
|
-
}
|
|
277
|
-
instance.state = "LOADING";
|
|
278
|
-
const fileUrl = pathToFileURL(descriptor.registrationPath).href;
|
|
279
|
-
const mod = await import(fileUrl);
|
|
280
|
-
const registerFn = typeof mod.register === "function" ? mod.register : typeof mod.default === "function" ? mod.default : typeof mod.default?.register === "function" ? mod.default.register : null;
|
|
281
|
-
if (!registerFn) {
|
|
282
|
-
instance.state = "ERROR";
|
|
283
|
-
const err = { code: "NO_REGISTER_FUNCTION", message: `No callable register() function exported by ${descriptor.registrationPath}`, subAppId };
|
|
284
|
-
instance.errorDetails = [err];
|
|
285
|
-
instance.error = new Error(`[SubApp:${subAppId}] ${err.message}`);
|
|
286
|
-
return instance;
|
|
287
|
-
}
|
|
288
|
-
const serviceContainer = new DefaultServiceContainer({
|
|
289
|
-
runtimeStore: entity._runtimeStore || null,
|
|
290
|
-
aiOrchestrator: entity._aiOrchestrator || null
|
|
291
|
-
});
|
|
292
|
-
const operationRegistrar = new DefaultOperationRegistrar();
|
|
293
|
-
const eventRegistrar = new DefaultEventRegistrar(entity);
|
|
294
|
-
const regContext = {
|
|
295
|
-
entity,
|
|
296
|
-
services: serviceContainer,
|
|
297
|
-
operations: operationRegistrar,
|
|
298
|
-
events: eventRegistrar,
|
|
299
|
-
config,
|
|
300
|
-
logger: Logger
|
|
301
|
-
};
|
|
302
|
-
const registrationResult = await registerFn(regContext);
|
|
303
|
-
const allOps = [
|
|
304
|
-
...registrationResult?.operations || [],
|
|
305
|
-
...operationRegistrar.list()
|
|
306
|
-
];
|
|
307
|
-
const uniqueOpsMap = /* @__PURE__ */ new Map();
|
|
308
|
-
for (const op of allOps) {
|
|
309
|
-
uniqueOpsMap.set(op.name, op);
|
|
310
|
-
}
|
|
311
|
-
const uniqueOps = Array.from(uniqueOpsMap.values());
|
|
312
|
-
const finalRegistration = {
|
|
313
|
-
...registrationResult,
|
|
314
|
-
operations: uniqueOps
|
|
315
|
-
};
|
|
316
|
-
const existingCaps = /* @__PURE__ */ new Set();
|
|
317
|
-
if (entity.localFunctionalities) {
|
|
318
|
-
for (const k of entity.localFunctionalities.keys()) existingCaps.add(k);
|
|
319
|
-
}
|
|
320
|
-
if (entity.remoteFunctionalities) {
|
|
321
|
-
for (const k of entity.remoteFunctionalities.keys()) existingCaps.add(k);
|
|
322
|
-
}
|
|
323
|
-
const opCheck = KrnlSubAppValidator.validateRegistration(finalRegistration, existingCaps, subAppId);
|
|
324
|
-
if (!opCheck.valid) {
|
|
325
|
-
instance.state = "ERROR";
|
|
326
|
-
instance.errorDetails = opCheck.errors;
|
|
327
|
-
instance.error = new Error(`[SubApp:${subAppId}] Operations validation failed: ${opCheck.errors.map((e) => e.message).join(", ")}`);
|
|
328
|
-
return instance;
|
|
329
|
-
}
|
|
330
|
-
instance.state = "REGISTERED";
|
|
331
|
-
instance.registration = finalRegistration;
|
|
332
|
-
for (const op of finalRegistration.operations) {
|
|
333
|
-
instance.operations.set(op.name, op);
|
|
334
|
-
}
|
|
335
|
-
instance.state = "INITIALIZING";
|
|
336
|
-
if (typeof finalRegistration.onInitialize === "function") {
|
|
337
|
-
await finalRegistration.onInitialize(regContext);
|
|
338
|
-
}
|
|
339
|
-
instance.state = "READY";
|
|
340
|
-
instance.readyAt = Date.now();
|
|
341
|
-
return instance;
|
|
342
|
-
} catch (err) {
|
|
343
|
-
instance.state = "ERROR";
|
|
344
|
-
instance.error = err;
|
|
345
|
-
instance.errorDetails = [{
|
|
346
|
-
code: "LIFECYCLE_ERROR",
|
|
347
|
-
message: err.message || String(err),
|
|
348
|
-
subAppId
|
|
349
|
-
}];
|
|
350
|
-
return instance;
|
|
351
|
-
}
|
|
352
|
-
}
|
|
353
|
-
/**
|
|
354
|
-
* Gracefully unregisters and disposes of a sub-app instance.
|
|
355
|
-
*/
|
|
356
|
-
static async dispose(instance) {
|
|
357
|
-
if (instance.state === "DISPOSED") return;
|
|
358
|
-
instance.state = "UNREGISTERING";
|
|
359
|
-
try {
|
|
360
|
-
if (instance.registration && typeof instance.registration.onDispose === "function") {
|
|
361
|
-
await instance.registration.onDispose();
|
|
362
|
-
}
|
|
363
|
-
} catch (e) {
|
|
364
|
-
console.warn(`[SubApp:${instance.id}] Warning during onDispose():`, e.message);
|
|
365
|
-
} finally {
|
|
366
|
-
instance.operations.clear();
|
|
367
|
-
instance.state = "DISPOSED";
|
|
368
|
-
}
|
|
369
|
-
}
|
|
370
|
-
};
|
|
371
|
-
function createHttpsAppAdapter(options) {
|
|
372
|
-
const operations = options.endpoints.map((ep) => {
|
|
373
|
-
const cleanName = ep.path.replace(/^\//, "").replace(/^api\//, "").replace(/\//g, "_").replace(/:/g, "") || "root";
|
|
374
|
-
return {
|
|
375
|
-
name: cleanName,
|
|
376
|
-
description: ep.description || `Mapped HTTPS endpoint: ${ep.method || "POST"} ${ep.path}`,
|
|
377
|
-
method: ep.method || "POST",
|
|
378
|
-
input: ep.inputSchema,
|
|
379
|
-
output: ep.outputSchema,
|
|
380
|
-
metadata: { originalPath: ep.path, originalMethod: ep.method || "POST" },
|
|
381
|
-
handler: async (input, ctx) => {
|
|
382
|
-
return await ep.handler(input, ctx);
|
|
383
|
-
}
|
|
384
|
-
};
|
|
385
|
-
});
|
|
386
|
-
return {
|
|
387
|
-
name: options.name,
|
|
388
|
-
operations
|
|
389
|
-
};
|
|
390
|
-
}
|
|
391
|
-
|
|
392
|
-
export {
|
|
393
|
-
DefaultServiceContainer,
|
|
394
|
-
DefaultOperationRegistrar,
|
|
395
|
-
DefaultEventRegistrar,
|
|
396
|
-
KrnlSubAppDiscovery,
|
|
397
|
-
KrnlSubAppValidator,
|
|
398
|
-
KrnlSubAppLifecycle,
|
|
399
|
-
createHttpsAppAdapter
|
|
400
|
-
};
|