@ultrst-armada/krnl 0.0.0-stage → 1.0.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.
Files changed (236) hide show
  1. package/README.md +84 -2
  2. package/package.json +75 -4
  3. package/packages/cli/dist/K_ENT_Entity-PQ5MURQY-ZG6FZXXX.js +13 -0
  4. package/packages/cli/dist/K_LIB_Krnl_Aiko_Client-OPZAVZCW-K4CRQYA5.js +8 -0
  5. package/packages/cli/dist/K_LIB_Krnl_Ep_Tools-ROOE2TQF-LNPXZYOE.js +110 -0
  6. package/packages/cli/dist/K_LIB_Krnl_Frontend_Builder-2ZDUH6PF-3ALZPNX4.js +11 -0
  7. package/packages/cli/dist/K_LIB_Krnl_Frontend_Generator-UYNRNX2X-PJTICYSW.js +11 -0
  8. package/packages/cli/dist/K_LIB_Krnl_Registry_Client-NXV6D2QW-M5TYU55O.js +8 -0
  9. package/packages/cli/dist/K_LIB_Krnl_SubApp_Engine-7HR5HWW2-H6STOXRK.js +20 -0
  10. package/packages/cli/dist/K_LIB_Krnl_SubApp_Registry-7XYGDKJK-XPJXSF7D.js +19 -0
  11. package/packages/cli/dist/K_LIB_Krnl_SubApp_Worker_Host-CQVTGGG7-CUYGTWOW.js +7 -0
  12. package/packages/cli/dist/K_LIB_Krnl_System_App_Adapter-M6FJKLGU-VR6T4N6J.js +17 -0
  13. package/packages/cli/dist/K_LIB_Krnl_System_Base_Functionality_APIs-ZZUZ6ZG5-RLJ4QWDP.js +58 -0
  14. package/packages/cli/dist/K_LIB_Krnl_System_Magnetic_Loader-XBQO2KXF-BOQGUASC.js +22 -0
  15. package/packages/cli/dist/K_LIB_Krnl_System_Unified_Http_Adapter-RCEGP3OG-XJI7KIT5.js +8 -0
  16. package/packages/cli/dist/K_LIB_Krnl_Telemetry-77FRZ3KV-K5VCWAFW.js +9 -0
  17. package/packages/cli/dist/bin/krnl.cjs +9758 -0
  18. package/packages/cli/dist/bin/krnl.d.cts +1 -0
  19. package/packages/cli/dist/bin/krnl.d.ts +1 -0
  20. package/packages/cli/dist/bin/krnl.js +2006 -0
  21. package/packages/cli/dist/chunk-3TRM6CYL.js +152 -0
  22. package/packages/cli/dist/chunk-5JDK35TG.js +3872 -0
  23. package/packages/cli/dist/chunk-63PTK33I.js +997 -0
  24. package/packages/cli/dist/chunk-6NIKAMUZ.js +82 -0
  25. package/packages/cli/dist/chunk-BOXWWXQG.js +400 -0
  26. package/packages/cli/dist/chunk-EEKLK7QJ.js +565 -0
  27. package/packages/cli/dist/chunk-EG7T2IAD.js +107 -0
  28. package/packages/cli/dist/chunk-F5EHXE2O.js +1036 -0
  29. package/packages/cli/dist/chunk-F65ANSQG.js +269 -0
  30. package/packages/cli/dist/chunk-FDNCADFE.js +71 -0
  31. package/packages/cli/dist/chunk-GDLRMDAN.js +127 -0
  32. package/packages/cli/dist/chunk-HWMTCMOS.js +656 -0
  33. package/packages/cli/dist/chunk-I74QIQOD.js +5536 -0
  34. package/packages/cli/dist/chunk-JTLSTO25.js +71 -0
  35. package/packages/cli/dist/chunk-JULBBJ27.js +1033 -0
  36. package/packages/cli/dist/chunk-OHVMVRBP.js +117 -0
  37. package/packages/cli/dist/chunk-P2PCLEKX.js +666 -0
  38. package/packages/cli/dist/chunk-PJQIUOX2.js +7767 -0
  39. package/packages/cli/dist/chunk-PPOF3DJW.js +471 -0
  40. package/packages/cli/dist/chunk-Q45257P6.js +173 -0
  41. package/packages/cli/dist/chunk-QNROWGBI.js +1036 -0
  42. package/packages/cli/dist/chunk-RJNYUXZD.js +977 -0
  43. package/packages/cli/dist/chunk-SRTOPJ5W.js +104 -0
  44. package/packages/cli/dist/chunk-TCEX3MPS.js +702 -0
  45. package/packages/cli/dist/chunk-TNOAJO2J.js +675 -0
  46. package/packages/cli/dist/chunk-UR2SUCSF.js +701 -0
  47. package/packages/cli/dist/chunk-X5LOIFM7.js +68 -0
  48. package/packages/cli/dist/chunk-XIRFOO3H.js +589 -0
  49. package/packages/cli/dist/chunk-ZAAV3JXQ.js +809 -0
  50. package/packages/cli/dist/index.cjs +7798 -0
  51. package/packages/cli/dist/index.d.cts +7 -0
  52. package/packages/cli/dist/index.d.ts +7 -0
  53. package/packages/cli/dist/index.js +29 -0
  54. package/packages/cli/package.json +34 -0
  55. package/packages/core/dist/K_ENT_Entity-4MB7CU4A.js +12 -0
  56. package/packages/core/dist/K_ENT_Entity-DEJGIDGH.js +12 -0
  57. package/packages/core/dist/K_ENT_Entity-FXZO5UZ2.js +12 -0
  58. package/packages/core/dist/K_ENT_Entity-HDSCXC5F.js +12 -0
  59. package/packages/core/dist/K_ENT_Entity-JILABHLW.js +12 -0
  60. package/packages/core/dist/K_ENT_Entity-PQ5MURQY.js +13 -0
  61. package/packages/core/dist/K_ENT_Entity-ROAKDIHW.js +12 -0
  62. package/packages/core/dist/K_ENT_Entity-TBVFSKDV.js +12 -0
  63. package/packages/core/dist/K_ENT_Entity-ZFLKG3JO.js +12 -0
  64. package/packages/core/dist/K_LIB_Krnl_Aiko_Client-OPZAVZCW.js +8 -0
  65. package/packages/core/dist/K_LIB_Krnl_Ep_Tools-ROOE2TQF.js +110 -0
  66. package/packages/core/dist/K_LIB_Krnl_Frontend_Builder-2ZDUH6PF.js +9 -0
  67. package/packages/core/dist/K_LIB_Krnl_Frontend_Generator-UYNRNX2X.js +9 -0
  68. package/packages/core/dist/K_LIB_Krnl_Registry_Client-NXV6D2QW.js +8 -0
  69. package/packages/core/dist/K_LIB_Krnl_SubApp_Engine-7HR5HWW2.js +20 -0
  70. package/packages/core/dist/K_LIB_Krnl_SubApp_Registry-4C6GBQAG.js +18 -0
  71. package/packages/core/dist/K_LIB_Krnl_SubApp_Registry-6V23A6F6.js +18 -0
  72. package/packages/core/dist/K_LIB_Krnl_SubApp_Registry-7XYGDKJK.js +19 -0
  73. package/packages/core/dist/K_LIB_Krnl_SubApp_Registry-DYLLC5G2.js +18 -0
  74. package/packages/core/dist/K_LIB_Krnl_SubApp_Registry-F4FOFAUP.js +18 -0
  75. package/packages/core/dist/K_LIB_Krnl_SubApp_Registry-FBOXXMI3.js +18 -0
  76. package/packages/core/dist/K_LIB_Krnl_SubApp_Registry-Q73BWLNP.js +18 -0
  77. package/packages/core/dist/K_LIB_Krnl_SubApp_Registry-QM2C4MVA.js +18 -0
  78. package/packages/core/dist/K_LIB_Krnl_SubApp_Registry-QUGI6SMP.js +18 -0
  79. package/packages/core/dist/K_LIB_Krnl_SubApp_Registry-RGMTBHNP.js +18 -0
  80. package/packages/core/dist/K_LIB_Krnl_SubApp_Registry-RWR7UNDW.js +18 -0
  81. package/packages/core/dist/K_LIB_Krnl_SubApp_Worker_Host-CQVTGGG7.js +7 -0
  82. package/packages/core/dist/K_LIB_Krnl_System_App_Adapter-32MFJJ5Z.js +17 -0
  83. package/packages/core/dist/K_LIB_Krnl_System_App_Adapter-4J4CEWRY.js +17 -0
  84. package/packages/core/dist/K_LIB_Krnl_System_App_Adapter-A366YHF2.js +17 -0
  85. package/packages/core/dist/K_LIB_Krnl_System_App_Adapter-LK4LYJHI.js +17 -0
  86. package/packages/core/dist/K_LIB_Krnl_System_App_Adapter-M6FJKLGU.js +17 -0
  87. package/packages/core/dist/K_LIB_Krnl_System_App_Adapter-NW3K63II.js +17 -0
  88. package/packages/core/dist/K_LIB_Krnl_System_App_Adapter-QDHTI5ZV.js +17 -0
  89. package/packages/core/dist/K_LIB_Krnl_System_App_Adapter-VHCT6VIW.js +17 -0
  90. package/packages/core/dist/K_LIB_Krnl_System_App_Adapter-WBRKF24R.js +17 -0
  91. package/packages/core/dist/K_LIB_Krnl_System_App_Adapter-XKYQYT6Q.js +17 -0
  92. package/packages/core/dist/K_LIB_Krnl_System_App_Adapter-Z2PWZYDZ.js +17 -0
  93. package/packages/core/dist/K_LIB_Krnl_System_Base_Functionality_APIs-ZZUZ6ZG5.js +58 -0
  94. package/packages/core/dist/K_LIB_Krnl_System_Magnetic_Loader-2EZU7QF4.js +21 -0
  95. package/packages/core/dist/K_LIB_Krnl_System_Magnetic_Loader-6G3AQNAV.js +21 -0
  96. package/packages/core/dist/K_LIB_Krnl_System_Magnetic_Loader-B2NZMQUG.js +21 -0
  97. package/packages/core/dist/K_LIB_Krnl_System_Magnetic_Loader-C2RABMZP.js +21 -0
  98. package/packages/core/dist/K_LIB_Krnl_System_Magnetic_Loader-HHE3NZ4F.js +21 -0
  99. package/packages/core/dist/K_LIB_Krnl_System_Magnetic_Loader-LHFGR6WK.js +21 -0
  100. package/packages/core/dist/K_LIB_Krnl_System_Magnetic_Loader-M74BLM3N.js +21 -0
  101. package/packages/core/dist/K_LIB_Krnl_System_Magnetic_Loader-PT6ZA6EA.js +21 -0
  102. package/packages/core/dist/K_LIB_Krnl_System_Magnetic_Loader-SP52V3CX.js +21 -0
  103. package/packages/core/dist/K_LIB_Krnl_System_Magnetic_Loader-XBQO2KXF.js +22 -0
  104. package/packages/core/dist/K_LIB_Krnl_System_Magnetic_Loader-YNSEUHJJ.js +21 -0
  105. package/packages/core/dist/K_LIB_Krnl_System_Unified_Http_Adapter-M6SBHIVA.js +8 -0
  106. package/packages/core/dist/K_LIB_Krnl_System_Unified_Http_Adapter-RCEGP3OG.js +8 -0
  107. package/packages/core/dist/K_LIB_Krnl_Telemetry-77FRZ3KV.js +9 -0
  108. package/packages/core/dist/chunk-33L2J7V7.js +82 -0
  109. package/packages/core/dist/chunk-3ES4K2ZP.js +817 -0
  110. package/packages/core/dist/chunk-3SMHVVLL.js +82 -0
  111. package/packages/core/dist/chunk-3UEZ7JQA.js +4877 -0
  112. package/packages/core/dist/chunk-3XIE6KBD.js +4877 -0
  113. package/packages/core/dist/chunk-46ZLCML6.js +107 -0
  114. package/packages/core/dist/chunk-4UEL3DWJ.js +107 -0
  115. package/packages/core/dist/chunk-54GWZ5PC.js +82 -0
  116. package/packages/core/dist/chunk-6QCYRS5L.js +127 -0
  117. package/packages/core/dist/chunk-6ULMHNXR.js +104 -0
  118. package/packages/core/dist/chunk-7WUETJEV.js +117 -0
  119. package/packages/core/dist/chunk-A5KRAYDB.js +107 -0
  120. package/packages/core/dist/chunk-ANEAZ3PO.js +107 -0
  121. package/packages/core/dist/chunk-BE76RL6F.js +82 -0
  122. package/packages/core/dist/chunk-CIARVYDO.js +107 -0
  123. package/packages/core/dist/chunk-CR2ANE62.js +107 -0
  124. package/packages/core/dist/chunk-DI27MOR7.js +173 -0
  125. package/packages/core/dist/chunk-E6RLFHM5.js +596 -0
  126. package/packages/core/dist/chunk-EELAPMNV.js +4877 -0
  127. package/packages/core/dist/chunk-ENZ2RQVJ.js +107 -0
  128. package/packages/core/dist/chunk-F2U6CX4F.js +4877 -0
  129. package/packages/core/dist/chunk-FKG64OHL.js +82 -0
  130. package/packages/core/dist/chunk-FYAZJYM5.js +772 -0
  131. package/packages/core/dist/chunk-G4NP4RDQ.js +82 -0
  132. package/packages/core/dist/chunk-GADIRLRS.js +473 -0
  133. package/packages/core/dist/chunk-GR6CSLQJ.js +772 -0
  134. package/packages/core/dist/chunk-HDS7AT6O.js +772 -0
  135. package/packages/core/dist/chunk-HIMEZUU2.js +71 -0
  136. package/packages/core/dist/chunk-IB4UHG5I.js +596 -0
  137. package/packages/core/dist/chunk-J7ZYNVRS.js +772 -0
  138. package/packages/core/dist/chunk-JVLZU4K7.js +604 -0
  139. package/packages/core/dist/chunk-JYXXI7Q3.js +82 -0
  140. package/packages/core/dist/chunk-K54K2KZW.js +192 -0
  141. package/packages/core/dist/chunk-K6VHLBNH.js +3316 -0
  142. package/packages/core/dist/chunk-KCBP7ZYA.js +596 -0
  143. package/packages/core/dist/chunk-KFQGP6VL.js +33 -0
  144. package/packages/core/dist/chunk-KIUEUI7K.js +82 -0
  145. package/packages/core/dist/chunk-LB67NIZP.js +949 -0
  146. package/packages/core/dist/chunk-LDTYFUNW.js +596 -0
  147. package/packages/core/dist/chunk-MLVWARD4.js +596 -0
  148. package/packages/core/dist/chunk-MPYVXHKO.js +2777 -0
  149. package/packages/core/dist/chunk-MRQ3MITU.js +772 -0
  150. package/packages/core/dist/chunk-MVUN7I7O.js +107 -0
  151. package/packages/core/dist/chunk-NDDOIRW7.js +596 -0
  152. package/packages/core/dist/chunk-O3KDB5MH.js +3330 -0
  153. package/packages/core/dist/chunk-OEINUDSE.js +400 -0
  154. package/packages/core/dist/chunk-OPDENPT4.js +4877 -0
  155. package/packages/core/dist/chunk-P6XEM2LA.js +429 -0
  156. package/packages/core/dist/chunk-QKMRSQV4.js +82 -0
  157. package/packages/core/dist/chunk-R6CCWALL.js +4877 -0
  158. package/packages/core/dist/chunk-RAMMOO73.js +774 -0
  159. package/packages/core/dist/chunk-S3FTZFG6.js +772 -0
  160. package/packages/core/dist/chunk-T2ZVN434.js +4877 -0
  161. package/packages/core/dist/chunk-TFHLDMIA.js +107 -0
  162. package/packages/core/dist/chunk-TI3QUCIJ.js +107 -0
  163. package/packages/core/dist/chunk-TR2BAIGI.js +107 -0
  164. package/packages/core/dist/chunk-UGVVJKC6.js +4877 -0
  165. package/packages/core/dist/chunk-V2DX7YIU.js +984 -0
  166. package/packages/core/dist/chunk-W4IHYUYD.js +772 -0
  167. package/packages/core/dist/chunk-W6WBG5OY.js +4877 -0
  168. package/packages/core/dist/chunk-WN3M7O7H.js +3312 -0
  169. package/packages/core/dist/chunk-WR3NCU7U.js +4877 -0
  170. package/packages/core/dist/chunk-XC6B6L27.js +82 -0
  171. package/packages/core/dist/chunk-XNSE64ZY.js +3316 -0
  172. package/packages/core/dist/chunk-XROES2WN.js +634 -0
  173. package/packages/core/dist/chunk-XSCKNRCZ.js +5020 -0
  174. package/packages/core/dist/chunk-XVABPAUZ.js +82 -0
  175. package/packages/core/dist/chunk-YOBCB5C5.js +596 -0
  176. package/packages/core/dist/chunk-YUK6Q563.js +666 -0
  177. package/packages/core/dist/chunk-YXGL3ZEU.js +1030 -0
  178. package/packages/core/dist/chunk-ZINJ5OUX.js +596 -0
  179. package/packages/core/dist/chunk-ZPFD4BIQ.js +604 -0
  180. package/packages/core/dist/chunk-ZQZBFG6F.js +4826 -0
  181. package/packages/core/dist/chunk-ZZFRJGXM.js +4877 -0
  182. package/packages/core/dist/index.cjs +757 -0
  183. package/packages/core/dist/index.d.cts +360 -0
  184. package/packages/core/dist/index.d.ts +360 -0
  185. package/packages/core/dist/index.js +704 -0
  186. package/packages/core/package.json +34 -0
  187. package/packages/create-krnl/dist/K_ENT_Entity-PQ5MURQY-R2OH4VXE.js +14 -0
  188. package/packages/create-krnl/dist/K_LIB_Krnl_Aiko_Client-OPZAVZCW-AZM5HF4M.js +9 -0
  189. package/packages/create-krnl/dist/K_LIB_Krnl_Ep_Tools-ROOE2TQF-X5N6SV2S.js +111 -0
  190. package/packages/create-krnl/dist/K_LIB_Krnl_Frontend_Builder-2ZDUH6PF-5PFHF4JU.js +12 -0
  191. package/packages/create-krnl/dist/K_LIB_Krnl_Frontend_Generator-UYNRNX2X-ED33OQPH.js +12 -0
  192. package/packages/create-krnl/dist/K_LIB_Krnl_Registry_Client-NXV6D2QW-YGQLVR4P.js +9 -0
  193. package/packages/create-krnl/dist/K_LIB_Krnl_SubApp_Engine-7HR5HWW2-VM7CTU2L.js +21 -0
  194. package/packages/create-krnl/dist/K_LIB_Krnl_SubApp_Registry-7XYGDKJK-Y2GQFJ7I.js +21 -0
  195. package/packages/create-krnl/dist/K_LIB_Krnl_SubApp_Worker_Host-CQVTGGG7-L3JQWO54.js +8 -0
  196. package/packages/create-krnl/dist/K_LIB_Krnl_System_App_Adapter-M6FJKLGU-KQARASPR.js +19 -0
  197. package/packages/create-krnl/dist/K_LIB_Krnl_System_Base_Functionality_APIs-ZZUZ6ZG5-OF3IGLVL.js +59 -0
  198. package/packages/create-krnl/dist/K_LIB_Krnl_System_Magnetic_Loader-XBQO2KXF-JOLHKOEX.js +24 -0
  199. package/packages/create-krnl/dist/K_LIB_Krnl_System_Unified_Http_Adapter-RCEGP3OG-L46LSHKQ.js +10 -0
  200. package/packages/create-krnl/dist/K_LIB_Krnl_Telemetry-77FRZ3KV-4JUPRR3X.js +10 -0
  201. package/packages/create-krnl/dist/chunk-3TRM6CYL.js +152 -0
  202. package/packages/create-krnl/dist/chunk-3URCB3QS.js +127 -0
  203. package/packages/create-krnl/dist/chunk-5JDK35TG.js +3872 -0
  204. package/packages/create-krnl/dist/chunk-A2XAXDOW.js +812 -0
  205. package/packages/create-krnl/dist/chunk-AN6TMQHG.js +1033 -0
  206. package/packages/create-krnl/dist/chunk-BOXWWXQG.js +400 -0
  207. package/packages/create-krnl/dist/chunk-BPTBREBG.js +38 -0
  208. package/packages/create-krnl/dist/chunk-FDNCADFE.js +71 -0
  209. package/packages/create-krnl/dist/chunk-JTLSTO25.js +71 -0
  210. package/packages/create-krnl/dist/chunk-M3NCUIPL.js +107 -0
  211. package/packages/create-krnl/dist/chunk-N2EONSOC.js +7769 -0
  212. package/packages/create-krnl/dist/chunk-OHVMVRBP.js +117 -0
  213. package/packages/create-krnl/dist/chunk-Q45257P6.js +173 -0
  214. package/packages/create-krnl/dist/chunk-QGM4M3NI.js +37 -0
  215. package/packages/create-krnl/dist/chunk-RJNYUXZD.js +977 -0
  216. package/packages/create-krnl/dist/chunk-SRTOPJ5W.js +104 -0
  217. package/packages/create-krnl/dist/chunk-UPBIGEC3.js +666 -0
  218. package/packages/create-krnl/dist/chunk-V2DB7UD7.js +82 -0
  219. package/packages/create-krnl/dist/chunk-WMHLIUI6.js +3644 -0
  220. package/packages/create-krnl/dist/chunk-XIRFOO3H.js +589 -0
  221. package/packages/create-krnl/dist/chunk-Y2CEEVZP.js +5536 -0
  222. package/packages/create-krnl/dist/index.cjs +395 -0
  223. package/packages/create-krnl/dist/index.js +372 -0
  224. package/packages/create-krnl/dist/main-DXUMPBND.js +2217 -0
  225. package/packages/create-krnl/dist/wrapper-SDF2VKX3.js +31 -0
  226. package/packages/create-krnl/package.json +23 -0
  227. package/packages/eslint-plugin/dist/index.cjs +439 -0
  228. package/packages/eslint-plugin/dist/index.d.cts +336 -0
  229. package/packages/eslint-plugin/dist/index.d.ts +336 -0
  230. package/packages/eslint-plugin/dist/index.js +416 -0
  231. package/packages/eslint-plugin/package.json +24 -0
  232. package/packages/validate/dist/index.cjs +499 -0
  233. package/packages/validate/dist/index.d.cts +49 -0
  234. package/packages/validate/dist/index.d.ts +49 -0
  235. package/packages/validate/dist/index.js +462 -0
  236. package/packages/validate/package.json +27 -0
@@ -0,0 +1,704 @@
1
+ // src/state/ServiceStateStore.ts
2
+ var ServiceStateStore = class {
3
+ state;
4
+ listeners = /* @__PURE__ */ new Set();
5
+ constructor(initialState) {
6
+ this.state = { ...initialState };
7
+ }
8
+ getState() {
9
+ return Object.freeze({ ...this.state });
10
+ }
11
+ setState(mutation) {
12
+ this.state = { ...this.state, ...mutation };
13
+ const snapshot = this.getState();
14
+ for (const listener of this.listeners) {
15
+ listener(snapshot, mutation);
16
+ }
17
+ }
18
+ subscribe(listener) {
19
+ this.listeners.add(listener);
20
+ return () => {
21
+ this.listeners.delete(listener);
22
+ };
23
+ }
24
+ reset(newState) {
25
+ this.state = { ...newState || {} };
26
+ }
27
+ };
28
+
29
+ // src/events/ServiceEventBus.ts
30
+ var ServiceEventBus = class {
31
+ handlers = /* @__PURE__ */ new Map();
32
+ on(event, handler) {
33
+ if (!this.handlers.has(event)) {
34
+ this.handlers.set(event, /* @__PURE__ */ new Set());
35
+ }
36
+ const set = this.handlers.get(event);
37
+ set.add(handler);
38
+ return () => {
39
+ set.delete(handler);
40
+ };
41
+ }
42
+ emit(event, payload) {
43
+ const set = this.handlers.get(event);
44
+ if (!set) return;
45
+ for (const handler of Array.from(set)) {
46
+ try {
47
+ handler(payload);
48
+ } catch (err) {
49
+ console.error(`[ServiceEventBus] Handler error for '${event}':`, err);
50
+ }
51
+ }
52
+ }
53
+ clear() {
54
+ this.handlers.clear();
55
+ }
56
+ };
57
+
58
+ // src/lifecycle/LifecycleManager.ts
59
+ var LifecycleManager = class {
60
+ status = "uninitialized";
61
+ getStatus() {
62
+ return this.status;
63
+ }
64
+ setStatus(next) {
65
+ this.status = next;
66
+ }
67
+ assertRunning(serviceName) {
68
+ if (this.status !== "running") {
69
+ throw new Error(`[Service:${serviceName}] Cannot invoke operation while status is '${this.status}' (expected 'running').`);
70
+ }
71
+ }
72
+ };
73
+
74
+ // src/services/ServiceInstance.ts
75
+ var ServiceInstance = class {
76
+ constructor(definition) {
77
+ this.definition = definition;
78
+ this.id = definition.id;
79
+ this.name = definition.name;
80
+ this.version = definition.version;
81
+ this.lifecycle = new LifecycleManager();
82
+ this.eventBus = new ServiceEventBus();
83
+ if (definition.state?.initial) {
84
+ this.stateStore = new ServiceStateStore(definition.state.initial);
85
+ }
86
+ }
87
+ definition;
88
+ id;
89
+ name;
90
+ version;
91
+ stateStore;
92
+ eventBus;
93
+ lifecycle;
94
+ getDefinition() {
95
+ return this.definition;
96
+ }
97
+ async start() {
98
+ this.lifecycle.setStatus("starting");
99
+ if (this.definition.lifecycle?.onInit) {
100
+ await this.definition.lifecycle.onInit();
101
+ }
102
+ if (this.definition.lifecycle?.onStart) {
103
+ await this.definition.lifecycle.onStart();
104
+ }
105
+ this.lifecycle.setStatus("running");
106
+ }
107
+ async stop() {
108
+ this.lifecycle.setStatus("stopping");
109
+ if (this.definition.lifecycle?.onStop) {
110
+ await this.definition.lifecycle.onStop();
111
+ }
112
+ if (this.definition.lifecycle?.onDispose) {
113
+ await this.definition.lifecycle.onDispose();
114
+ }
115
+ this.lifecycle.setStatus("stopped");
116
+ }
117
+ async call(op, input, ctx = {}) {
118
+ this.lifecycle.assertRunning(this.name);
119
+ const operation = this.definition.operations[op];
120
+ if (!operation) {
121
+ throw new Error(`[Service:${this.name}] Operation '${op}' not found.`);
122
+ }
123
+ return await operation.handler(input, ctx);
124
+ }
125
+ getState() {
126
+ if (!this.stateStore) {
127
+ return Object.freeze({});
128
+ }
129
+ return this.stateStore.getState();
130
+ }
131
+ setState(mutation) {
132
+ if (!this.stateStore) {
133
+ this.stateStore = new ServiceStateStore(mutation);
134
+ return;
135
+ }
136
+ this.stateStore.setState(mutation);
137
+ }
138
+ on(event, handler) {
139
+ return this.eventBus.on(event, handler);
140
+ }
141
+ emit(event, payload) {
142
+ this.eventBus.emit(event, payload);
143
+ }
144
+ };
145
+
146
+ // src/services/ServiceProxy.ts
147
+ var ServiceProxy = class {
148
+ constructor(definition, adapter, endpoint) {
149
+ this.definition = definition;
150
+ this.adapter = adapter;
151
+ this.endpoint = endpoint;
152
+ this.id = definition.id;
153
+ this.name = definition.name;
154
+ this.version = definition.version;
155
+ this.stateCache = definition.state?.initial || {};
156
+ }
157
+ definition;
158
+ adapter;
159
+ endpoint;
160
+ id;
161
+ name;
162
+ version;
163
+ stateCache;
164
+ eventHandlers = /* @__PURE__ */ new Map();
165
+ getDefinition() {
166
+ return this.definition;
167
+ }
168
+ async start() {
169
+ }
170
+ async stop() {
171
+ }
172
+ async call(op, input, ctx = {}) {
173
+ if (!this.adapter.send) {
174
+ throw new Error(`[ServiceProxy:${this.name}] Adapter does not support send().`);
175
+ }
176
+ const envelope = {
177
+ id: `req-${Date.now()}-${Math.random().toString(36).slice(2, 7)}`,
178
+ type: "request",
179
+ operation: op,
180
+ payload: input,
181
+ timestamp: Date.now()
182
+ };
183
+ const response = await this.adapter.send(this.endpoint, envelope);
184
+ if (response.error) {
185
+ throw new Error(`[ServiceProxy:${this.name}] Remote error: ${response.error}`);
186
+ }
187
+ return response.payload;
188
+ }
189
+ getState() {
190
+ return Object.freeze({ ...this.stateCache });
191
+ }
192
+ setState(mutation) {
193
+ this.stateCache = { ...this.stateCache, ...mutation };
194
+ }
195
+ on(event, handler) {
196
+ if (!this.eventHandlers.has(event)) {
197
+ this.eventHandlers.set(event, /* @__PURE__ */ new Set());
198
+ }
199
+ const handlers = this.eventHandlers.get(event);
200
+ handlers.add(handler);
201
+ return () => {
202
+ handlers.delete(handler);
203
+ };
204
+ }
205
+ emit(event, payload) {
206
+ const handlers = this.eventHandlers.get(event);
207
+ if (handlers) {
208
+ for (const handler of Array.from(handlers)) {
209
+ handler(payload);
210
+ }
211
+ }
212
+ }
213
+ };
214
+
215
+ // src/services/ServiceGenerators.ts
216
+ function createServiceDefinition(definition) {
217
+ return definition;
218
+ }
219
+ function createService(definition) {
220
+ return new ServiceInstance(definition);
221
+ }
222
+ function createServiceProxy(definition, adapter, endpoint) {
223
+ return new ServiceProxy(definition, adapter, endpoint);
224
+ }
225
+
226
+ // src/protocols/HttpProtocolAdapter.ts
227
+ import http from "http";
228
+ var HttpProtocolAdapter = class {
229
+ protocol = "http";
230
+ capabilities = {
231
+ requestResponse: true,
232
+ streaming: true,
233
+ pubSub: false,
234
+ datagram: false,
235
+ peerToPeer: false,
236
+ signaling: false,
237
+ discovery: false
238
+ };
239
+ server;
240
+ listeningPort;
241
+ async listen(port, host = "127.0.0.1") {
242
+ this.server = http.createServer();
243
+ await new Promise((resolve, reject) => {
244
+ this.server.listen(port, host, () => {
245
+ const addr = this.server.address();
246
+ this.listeningPort = addr.port;
247
+ resolve();
248
+ });
249
+ this.server.on("error", reject);
250
+ });
251
+ return {
252
+ protocol: "http",
253
+ address: host,
254
+ port: this.listeningPort,
255
+ capabilities: ["requestResponse", "streaming"]
256
+ };
257
+ }
258
+ async expose(service, port = 0) {
259
+ this.server = http.createServer(async (req, res) => {
260
+ res.setHeader("Content-Type", "application/json");
261
+ const url = new URL(req.url || "/", `http://${req.headers.host || "localhost"}`);
262
+ if (url.pathname === "/manifest") {
263
+ res.writeHead(200);
264
+ res.end(JSON.stringify(service.getDefinition()));
265
+ return;
266
+ }
267
+ if (url.pathname === "/health") {
268
+ res.writeHead(200);
269
+ res.end(JSON.stringify({ status: "ok", service: service.name }));
270
+ return;
271
+ }
272
+ if (url.pathname.startsWith("/call/")) {
273
+ const op = url.pathname.slice("/call/".length);
274
+ let body = "";
275
+ req.on("data", (c) => body += c);
276
+ req.on("end", async () => {
277
+ try {
278
+ const parsed = body ? JSON.parse(body) : {};
279
+ const result = await service.call(op, parsed);
280
+ res.writeHead(200);
281
+ res.end(JSON.stringify({ status: "success", payload: result }));
282
+ } catch (err) {
283
+ res.writeHead(500);
284
+ res.end(JSON.stringify({ status: "error", error: err.message || String(err) }));
285
+ }
286
+ });
287
+ return;
288
+ }
289
+ res.writeHead(404);
290
+ res.end(JSON.stringify({ error: "Route not found" }));
291
+ });
292
+ await new Promise((resolve, reject) => {
293
+ this.server.listen(port, "127.0.0.1", () => {
294
+ const addr = this.server.address();
295
+ this.listeningPort = addr.port;
296
+ resolve();
297
+ });
298
+ this.server.on("error", reject);
299
+ });
300
+ return {
301
+ protocol: "http",
302
+ address: "127.0.0.1",
303
+ port: this.listeningPort,
304
+ capabilities: ["requestResponse", "streaming"]
305
+ };
306
+ }
307
+ async send(endpoint, envelope) {
308
+ const url = `http://${endpoint.address}:${endpoint.port}/call/${envelope.operation}`;
309
+ const res = await fetch(url, {
310
+ method: "POST",
311
+ headers: { "Content-Type": "application/json" },
312
+ body: JSON.stringify(envelope.payload || {})
313
+ });
314
+ const json = await res.json();
315
+ return {
316
+ id: `res-${Date.now()}`,
317
+ type: "response",
318
+ correlationId: envelope.id,
319
+ payload: json.payload,
320
+ error: json.error,
321
+ timestamp: Date.now()
322
+ };
323
+ }
324
+ async stop() {
325
+ if (this.server) {
326
+ await new Promise((resolve) => this.server.close(() => resolve()));
327
+ this.server = void 0;
328
+ }
329
+ }
330
+ };
331
+
332
+ // src/protocols/WebSocketProtocolAdapter.ts
333
+ import http2 from "http";
334
+ import { WebSocketServer, WebSocket } from "ws";
335
+ var WebSocketProtocolAdapter = class {
336
+ protocol = "ws";
337
+ capabilities = {
338
+ requestResponse: true,
339
+ streaming: true,
340
+ pubSub: true,
341
+ datagram: false,
342
+ peerToPeer: false,
343
+ signaling: false,
344
+ discovery: false
345
+ };
346
+ server;
347
+ wss;
348
+ port;
349
+ async expose(service, port = 0) {
350
+ this.server = http2.createServer();
351
+ this.wss = new WebSocketServer({ server: this.server });
352
+ this.wss.on("connection", (ws) => {
353
+ ws.on("message", async (raw) => {
354
+ try {
355
+ const envelope = JSON.parse(raw.toString());
356
+ if (envelope.type === "request" && envelope.operation) {
357
+ try {
358
+ const res = await service.call(envelope.operation, envelope.payload);
359
+ ws.send(JSON.stringify({
360
+ id: `res-${Date.now()}`,
361
+ type: "response",
362
+ correlationId: envelope.id,
363
+ payload: res,
364
+ timestamp: Date.now()
365
+ }));
366
+ } catch (err) {
367
+ ws.send(JSON.stringify({
368
+ id: `res-${Date.now()}`,
369
+ type: "response",
370
+ correlationId: envelope.id,
371
+ error: err.message || String(err),
372
+ timestamp: Date.now()
373
+ }));
374
+ }
375
+ }
376
+ } catch (_) {
377
+ }
378
+ });
379
+ });
380
+ await new Promise((resolve, reject) => {
381
+ this.server.listen(port, "127.0.0.1", () => {
382
+ const addr = this.server.address();
383
+ this.port = addr.port;
384
+ resolve();
385
+ });
386
+ this.server.on("error", reject);
387
+ });
388
+ return {
389
+ protocol: "ws",
390
+ address: "127.0.0.1",
391
+ port: this.port,
392
+ capabilities: ["requestResponse", "pubSub", "streaming"]
393
+ };
394
+ }
395
+ async send(endpoint, envelope) {
396
+ return new Promise((resolve, reject) => {
397
+ const ws = new WebSocket(`ws://${endpoint.address}:${endpoint.port}`);
398
+ ws.on("open", () => {
399
+ ws.send(JSON.stringify(envelope));
400
+ });
401
+ ws.on("message", (data) => {
402
+ try {
403
+ const res = JSON.parse(data.toString());
404
+ ws.close();
405
+ resolve(res);
406
+ } catch (e) {
407
+ ws.close();
408
+ reject(e);
409
+ }
410
+ });
411
+ ws.on("error", (err) => {
412
+ reject(err);
413
+ });
414
+ });
415
+ }
416
+ async stop() {
417
+ if (this.wss) {
418
+ await new Promise((r) => this.wss.close(() => r()));
419
+ this.wss = void 0;
420
+ }
421
+ if (this.server) {
422
+ await new Promise((r) => this.server.close(() => r()));
423
+ this.server = void 0;
424
+ }
425
+ }
426
+ };
427
+
428
+ // src/protocols/UdpProtocolAdapter.ts
429
+ import dgram from "dgram";
430
+ var UdpProtocolAdapter = class {
431
+ protocol = "udp";
432
+ capabilities = {
433
+ requestResponse: true,
434
+ streaming: false,
435
+ pubSub: false,
436
+ datagram: true,
437
+ peerToPeer: false,
438
+ signaling: false,
439
+ discovery: true
440
+ };
441
+ socket;
442
+ port;
443
+ async expose(service, port = 0) {
444
+ this.socket = dgram.createSocket("udp4");
445
+ this.socket.on("message", async (msg, rinfo) => {
446
+ try {
447
+ const envelope = JSON.parse(msg.toString());
448
+ if (envelope.type === "request" && envelope.operation) {
449
+ try {
450
+ const res = await service.call(envelope.operation, envelope.payload);
451
+ const resp = JSON.stringify({
452
+ id: `res-${Date.now()}`,
453
+ type: "response",
454
+ correlationId: envelope.id,
455
+ payload: res,
456
+ timestamp: Date.now()
457
+ });
458
+ this.socket.send(resp, rinfo.port, rinfo.address);
459
+ } catch (err) {
460
+ const resp = JSON.stringify({
461
+ id: `res-${Date.now()}`,
462
+ type: "response",
463
+ correlationId: envelope.id,
464
+ error: err.message || String(err),
465
+ timestamp: Date.now()
466
+ });
467
+ this.socket.send(resp, rinfo.port, rinfo.address);
468
+ }
469
+ }
470
+ } catch (_) {
471
+ }
472
+ });
473
+ await new Promise((resolve) => {
474
+ this.socket.bind(port, "127.0.0.1", () => {
475
+ this.port = this.socket.address().port;
476
+ resolve();
477
+ });
478
+ });
479
+ return {
480
+ protocol: "udp",
481
+ address: "127.0.0.1",
482
+ port: this.port,
483
+ capabilities: ["datagram", "requestResponse"]
484
+ };
485
+ }
486
+ async send(endpoint, envelope) {
487
+ return new Promise((resolve, reject) => {
488
+ const client = dgram.createSocket("udp4");
489
+ const payload = Buffer.from(JSON.stringify(envelope));
490
+ client.on("message", (msg) => {
491
+ try {
492
+ const res = JSON.parse(msg.toString());
493
+ client.close();
494
+ resolve(res);
495
+ } catch (e) {
496
+ client.close();
497
+ reject(e);
498
+ }
499
+ });
500
+ client.on("error", (err) => {
501
+ client.close();
502
+ reject(err);
503
+ });
504
+ client.send(payload, endpoint.port, endpoint.address);
505
+ });
506
+ }
507
+ async stop() {
508
+ if (this.socket) {
509
+ await new Promise((r) => this.socket.close(() => r()));
510
+ this.socket = void 0;
511
+ }
512
+ }
513
+ };
514
+
515
+ // src/protocols/P2PProtocolAdapter.ts
516
+ var P2PProtocolAdapter = class _P2PProtocolAdapter {
517
+ protocol = "p2p";
518
+ capabilities = {
519
+ requestResponse: true,
520
+ streaming: true,
521
+ pubSub: true,
522
+ datagram: false,
523
+ peerToPeer: true,
524
+ signaling: true,
525
+ discovery: true
526
+ };
527
+ static peerHub = /* @__PURE__ */ new Map();
528
+ async expose(service) {
529
+ _P2PProtocolAdapter.peerHub.set(service.id, service);
530
+ return {
531
+ protocol: "p2p",
532
+ address: `p2p://${service.id}`,
533
+ capabilities: ["peerToPeer", "requestResponse", "pubSub"]
534
+ };
535
+ }
536
+ async send(endpoint, envelope) {
537
+ const peerId = endpoint.address.replace("p2p://", "");
538
+ const service = _P2PProtocolAdapter.peerHub.get(peerId);
539
+ if (!service) {
540
+ return {
541
+ id: `res-${Date.now()}`,
542
+ type: "response",
543
+ correlationId: envelope.id,
544
+ error: `Peer '${peerId}' not discovered or offline.`,
545
+ timestamp: Date.now()
546
+ };
547
+ }
548
+ try {
549
+ const res = await service.call(envelope.operation || "", envelope.payload);
550
+ return {
551
+ id: `res-${Date.now()}`,
552
+ type: "response",
553
+ correlationId: envelope.id,
554
+ payload: res,
555
+ timestamp: Date.now()
556
+ };
557
+ } catch (err) {
558
+ return {
559
+ id: `res-${Date.now()}`,
560
+ type: "response",
561
+ correlationId: envelope.id,
562
+ error: err.message || String(err),
563
+ timestamp: Date.now()
564
+ };
565
+ }
566
+ }
567
+ async stop() {
568
+ _P2PProtocolAdapter.peerHub.clear();
569
+ }
570
+ };
571
+
572
+ // src/transports/MemoryTransport.ts
573
+ var MemoryTransport = class {
574
+ handlers = /* @__PURE__ */ new Set();
575
+ onMessage(handler) {
576
+ this.handlers.add(handler);
577
+ return () => {
578
+ this.handlers.delete(handler);
579
+ };
580
+ }
581
+ async send(envelope) {
582
+ for (const handler of this.handlers) {
583
+ const res = await handler(envelope);
584
+ if (res) return res;
585
+ }
586
+ return {
587
+ id: `res-${Date.now()}`,
588
+ type: "response",
589
+ correlationId: envelope.id,
590
+ payload: null,
591
+ timestamp: Date.now()
592
+ };
593
+ }
594
+ };
595
+
596
+ // src/registry/ServiceRegistry.ts
597
+ var ServiceRegistry = class {
598
+ services = /* @__PURE__ */ new Map();
599
+ register(definition, endpoints = []) {
600
+ this.services.set(definition.id, {
601
+ definition,
602
+ endpoints,
603
+ registeredAt: Date.now()
604
+ });
605
+ }
606
+ unregister(serviceId) {
607
+ this.services.delete(serviceId);
608
+ }
609
+ get(serviceId) {
610
+ return this.services.get(serviceId);
611
+ }
612
+ list() {
613
+ return Array.from(this.services.values());
614
+ }
615
+ findByCapability(capabilityName) {
616
+ return this.list().filter(
617
+ (record) => record.definition.capabilities?.some((cap) => cap.name === capabilityName)
618
+ );
619
+ }
620
+ };
621
+
622
+ // src/runtime/ServiceRuntime.ts
623
+ var ServiceRuntime = class {
624
+ instances = /* @__PURE__ */ new Map();
625
+ registry;
626
+ constructor(registry) {
627
+ this.registry = registry || new ServiceRegistry();
628
+ }
629
+ register(service) {
630
+ this.instances.set(service.id, service);
631
+ this.registry.register(service.getDefinition());
632
+ return this;
633
+ }
634
+ get(serviceId) {
635
+ return this.instances.get(serviceId);
636
+ }
637
+ async execute(target, operation, input, ctx) {
638
+ const service = this.instances.get(target);
639
+ if (!service) {
640
+ throw new Error(`[ServiceRuntime] Target service '${target}' not found.`);
641
+ }
642
+ return await service.call(operation, input, ctx);
643
+ }
644
+ async startAll() {
645
+ for (const service of this.instances.values()) {
646
+ await service.start();
647
+ }
648
+ }
649
+ async stopAll() {
650
+ for (const service of this.instances.values()) {
651
+ await service.stop();
652
+ }
653
+ }
654
+ };
655
+
656
+ // src/discovery/ServiceDiscovery.ts
657
+ var ServiceDiscovery = class {
658
+ peers = /* @__PURE__ */ new Map();
659
+ registerPeer(id, name, endpoints) {
660
+ this.peers.set(id, {
661
+ id,
662
+ name,
663
+ endpoints,
664
+ lastSeen: Date.now()
665
+ });
666
+ }
667
+ getPeers() {
668
+ return Array.from(this.peers.values());
669
+ }
670
+ findPeer(id) {
671
+ return this.peers.get(id);
672
+ }
673
+ };
674
+
675
+ // src/connectivity/ProtocolResolver.ts
676
+ var ProtocolResolver = class {
677
+ static selectProtocol(requiredCapabilities, availableEndpoints) {
678
+ return availableEndpoints.find(
679
+ (ep) => requiredCapabilities.every((req) => ep.capabilities.includes(req))
680
+ );
681
+ }
682
+ static getSupportedProtocols(definition) {
683
+ return definition.protocols || ["http"];
684
+ }
685
+ };
686
+ export {
687
+ HttpProtocolAdapter,
688
+ LifecycleManager,
689
+ MemoryTransport,
690
+ P2PProtocolAdapter,
691
+ ProtocolResolver,
692
+ ServiceDiscovery,
693
+ ServiceEventBus,
694
+ ServiceInstance,
695
+ ServiceProxy,
696
+ ServiceRegistry,
697
+ ServiceRuntime,
698
+ ServiceStateStore,
699
+ UdpProtocolAdapter,
700
+ WebSocketProtocolAdapter,
701
+ createService,
702
+ createServiceDefinition,
703
+ createServiceProxy
704
+ };