@alneas/eaos-server 0.0.0-stage → 0.2.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 (360) hide show
  1. package/CHANGELOG.md +41 -0
  2. package/LICENSE +21 -0
  3. package/README.ja.md +49 -0
  4. package/README.md +46 -2
  5. package/dist/agentic/agent-jobs.d.ts +333 -0
  6. package/dist/agentic/agent-jobs.js +15 -0
  7. package/dist/agentic/agent-jobs.js.map +1 -0
  8. package/dist/agentic/agent-node.d.ts +40 -0
  9. package/dist/agentic/agent-node.js +7 -0
  10. package/dist/agentic/agent-node.js.map +1 -0
  11. package/dist/agentic/agent-runner.d.ts +33 -0
  12. package/dist/agentic/agent-runner.js +7 -0
  13. package/dist/agentic/agent-runner.js.map +1 -0
  14. package/dist/agentic/ai-broker.d.ts +169 -0
  15. package/dist/agentic/ai-broker.js +8 -0
  16. package/dist/agentic/ai-broker.js.map +1 -0
  17. package/dist/agentic/atomic-checkpointer.d.ts +137 -0
  18. package/dist/agentic/atomic-checkpointer.js +9 -0
  19. package/dist/agentic/atomic-checkpointer.js.map +1 -0
  20. package/dist/agentic/autonomous-worker.d.ts +122 -0
  21. package/dist/agentic/autonomous-worker.js +10 -0
  22. package/dist/agentic/autonomous-worker.js.map +1 -0
  23. package/dist/agentic/event-bridge.d.ts +350 -0
  24. package/dist/agentic/event-bridge.js +9 -0
  25. package/dist/agentic/event-bridge.js.map +1 -0
  26. package/dist/agentic/executor.d.ts +91 -0
  27. package/dist/agentic/executor.js +12 -0
  28. package/dist/agentic/executor.js.map +1 -0
  29. package/dist/agentic/graph-projection.d.ts +119 -0
  30. package/dist/agentic/graph-projection.js +7 -0
  31. package/dist/agentic/graph-projection.js.map +1 -0
  32. package/dist/agentic/graph.d.ts +524 -0
  33. package/dist/agentic/graph.js +7 -0
  34. package/dist/agentic/graph.js.map +1 -0
  35. package/dist/agentic/index.d.ts +28 -0
  36. package/dist/agentic/index.js +87 -0
  37. package/dist/agentic/index.js.map +1 -0
  38. package/dist/agentic/local-runner.d.ts +106 -0
  39. package/dist/agentic/local-runner.js +7 -0
  40. package/dist/agentic/local-runner.js.map +1 -0
  41. package/dist/agentic/remote-executor.d.ts +67 -0
  42. package/dist/agentic/remote-executor.js +8 -0
  43. package/dist/agentic/remote-executor.js.map +1 -0
  44. package/dist/agentic/types.d.ts +157 -0
  45. package/dist/agentic/types.js +7 -0
  46. package/dist/agentic/types.js.map +1 -0
  47. package/dist/agentic/workflow-catalog.d.ts +152 -0
  48. package/dist/agentic/workflow-catalog.js +7 -0
  49. package/dist/agentic/workflow-catalog.js.map +1 -0
  50. package/dist/agentic/workflow-compiler.d.ts +44 -0
  51. package/dist/agentic/workflow-compiler.js +8 -0
  52. package/dist/agentic/workflow-compiler.js.map +1 -0
  53. package/dist/agentic/workflow-coordinator.d.ts +170 -0
  54. package/dist/agentic/workflow-coordinator.js +8 -0
  55. package/dist/agentic/workflow-coordinator.js.map +1 -0
  56. package/dist/agentic/workflow-manager.d.ts +91 -0
  57. package/dist/agentic/workflow-manager.js +7 -0
  58. package/dist/agentic/workflow-manager.js.map +1 -0
  59. package/dist/agentic/workflow-registry.d.ts +334 -0
  60. package/dist/agentic/workflow-registry.js +7 -0
  61. package/dist/agentic/workflow-registry.js.map +1 -0
  62. package/dist/artifacts-CteHmCMI.d.ts +614 -0
  63. package/dist/auth-hooks/api-key.d.ts +75 -0
  64. package/dist/auth-hooks/api-key.js +7 -0
  65. package/dist/auth-hooks/api-key.js.map +1 -0
  66. package/dist/auth-hooks/index.d.ts +80 -0
  67. package/dist/auth-hooks/index.js +28 -0
  68. package/dist/auth-hooks/index.js.map +1 -0
  69. package/dist/browser-auth/account-memberships.d.ts +213 -0
  70. package/dist/browser-auth/account-memberships.js +13 -0
  71. package/dist/browser-auth/account-memberships.js.map +1 -0
  72. package/dist/browser-auth/index.d.ts +8 -0
  73. package/dist/browser-auth/index.js +59 -0
  74. package/dist/browser-auth/index.js.map +1 -0
  75. package/dist/browser-auth/kratos-session.d.ts +37 -0
  76. package/dist/browser-auth/kratos-session.js +7 -0
  77. package/dist/browser-auth/kratos-session.js.map +1 -0
  78. package/dist/browser-auth/platform-session.d.ts +120 -0
  79. package/dist/browser-auth/platform-session.js +7 -0
  80. package/dist/browser-auth/platform-session.js.map +1 -0
  81. package/dist/browser-auth/public-memberships.d.ts +22 -0
  82. package/dist/browser-auth/public-memberships.js +7 -0
  83. package/dist/browser-auth/public-memberships.js.map +1 -0
  84. package/dist/cache/index.d.ts +181 -0
  85. package/dist/cache/index.js +197 -0
  86. package/dist/cache/index.js.map +1 -0
  87. package/dist/chunk-32746UQZ.js +131 -0
  88. package/dist/chunk-32746UQZ.js.map +1 -0
  89. package/dist/chunk-3NLSWP2Y.js +223 -0
  90. package/dist/chunk-3NLSWP2Y.js.map +1 -0
  91. package/dist/chunk-3P4XTTQH.js +346 -0
  92. package/dist/chunk-3P4XTTQH.js.map +1 -0
  93. package/dist/chunk-3VITSHN3.js +15 -0
  94. package/dist/chunk-3VITSHN3.js.map +1 -0
  95. package/dist/chunk-46UWPEW2.js +226 -0
  96. package/dist/chunk-46UWPEW2.js.map +1 -0
  97. package/dist/chunk-4BARRLJR.js +180 -0
  98. package/dist/chunk-4BARRLJR.js.map +1 -0
  99. package/dist/chunk-4VORUFKR.js +45 -0
  100. package/dist/chunk-4VORUFKR.js.map +1 -0
  101. package/dist/chunk-55D4ERWO.js +1 -0
  102. package/dist/chunk-55D4ERWO.js.map +1 -0
  103. package/dist/chunk-5TBBZIND.js +18 -0
  104. package/dist/chunk-5TBBZIND.js.map +1 -0
  105. package/dist/chunk-5WOZWPZA.js +211 -0
  106. package/dist/chunk-5WOZWPZA.js.map +1 -0
  107. package/dist/chunk-6CBVZ6CT.js +168 -0
  108. package/dist/chunk-6CBVZ6CT.js.map +1 -0
  109. package/dist/chunk-6XZXYNJR.js +74 -0
  110. package/dist/chunk-6XZXYNJR.js.map +1 -0
  111. package/dist/chunk-753HWDSC.js +222 -0
  112. package/dist/chunk-753HWDSC.js.map +1 -0
  113. package/dist/chunk-7AHSS7SO.js +81 -0
  114. package/dist/chunk-7AHSS7SO.js.map +1 -0
  115. package/dist/chunk-7FTJN4SA.js +1 -0
  116. package/dist/chunk-7FTJN4SA.js.map +1 -0
  117. package/dist/chunk-AVDMLTPF.js +24 -0
  118. package/dist/chunk-AVDMLTPF.js.map +1 -0
  119. package/dist/chunk-BKAHUEIT.js +95 -0
  120. package/dist/chunk-BKAHUEIT.js.map +1 -0
  121. package/dist/chunk-CJ7OFEF7.js +134 -0
  122. package/dist/chunk-CJ7OFEF7.js.map +1 -0
  123. package/dist/chunk-EJKWDZIU.js +111 -0
  124. package/dist/chunk-EJKWDZIU.js.map +1 -0
  125. package/dist/chunk-F2J6IQ6I.js +247 -0
  126. package/dist/chunk-F2J6IQ6I.js.map +1 -0
  127. package/dist/chunk-F3O7CELI.js +23 -0
  128. package/dist/chunk-F3O7CELI.js.map +1 -0
  129. package/dist/chunk-F4IITPGX.js +221 -0
  130. package/dist/chunk-F4IITPGX.js.map +1 -0
  131. package/dist/chunk-FD6VC2NA.js +66 -0
  132. package/dist/chunk-FD6VC2NA.js.map +1 -0
  133. package/dist/chunk-FRRRWAHO.js +14 -0
  134. package/dist/chunk-FRRRWAHO.js.map +1 -0
  135. package/dist/chunk-HCKAGLLB.js +17 -0
  136. package/dist/chunk-HCKAGLLB.js.map +1 -0
  137. package/dist/chunk-HVC7FG6B.js +191 -0
  138. package/dist/chunk-HVC7FG6B.js.map +1 -0
  139. package/dist/chunk-HXFVOR7Z.js +496 -0
  140. package/dist/chunk-HXFVOR7Z.js.map +1 -0
  141. package/dist/chunk-IJWYS2PF.js +122 -0
  142. package/dist/chunk-IJWYS2PF.js.map +1 -0
  143. package/dist/chunk-INCHXAFK.js +1395 -0
  144. package/dist/chunk-INCHXAFK.js.map +1 -0
  145. package/dist/chunk-JT6BRGQM.js +1 -0
  146. package/dist/chunk-JT6BRGQM.js.map +1 -0
  147. package/dist/chunk-L6PMAEMB.js +115 -0
  148. package/dist/chunk-L6PMAEMB.js.map +1 -0
  149. package/dist/chunk-LOUGW6MU.js +126 -0
  150. package/dist/chunk-LOUGW6MU.js.map +1 -0
  151. package/dist/chunk-LYPZPE53.js +129 -0
  152. package/dist/chunk-LYPZPE53.js.map +1 -0
  153. package/dist/chunk-NNCCN7JP.js +186 -0
  154. package/dist/chunk-NNCCN7JP.js.map +1 -0
  155. package/dist/chunk-PBC3MZUL.js +212 -0
  156. package/dist/chunk-PBC3MZUL.js.map +1 -0
  157. package/dist/chunk-R4ADP2DC.js +20 -0
  158. package/dist/chunk-R4ADP2DC.js.map +1 -0
  159. package/dist/chunk-RHN4Y6VS.js +44 -0
  160. package/dist/chunk-RHN4Y6VS.js.map +1 -0
  161. package/dist/chunk-SDJNYPYK.js +770 -0
  162. package/dist/chunk-SDJNYPYK.js.map +1 -0
  163. package/dist/chunk-UGNTCOVR.js +28 -0
  164. package/dist/chunk-UGNTCOVR.js.map +1 -0
  165. package/dist/chunk-VC2PCK2S.js +31 -0
  166. package/dist/chunk-VC2PCK2S.js.map +1 -0
  167. package/dist/chunk-VF5YDZJC.js +305 -0
  168. package/dist/chunk-VF5YDZJC.js.map +1 -0
  169. package/dist/chunk-VISRDVTK.js +675 -0
  170. package/dist/chunk-VISRDVTK.js.map +1 -0
  171. package/dist/chunk-W6O3LVBY.js +102 -0
  172. package/dist/chunk-W6O3LVBY.js.map +1 -0
  173. package/dist/chunk-WFEAKJLR.js +47 -0
  174. package/dist/chunk-WFEAKJLR.js.map +1 -0
  175. package/dist/chunk-XIEY2OF4.js +67 -0
  176. package/dist/chunk-XIEY2OF4.js.map +1 -0
  177. package/dist/chunk-XITLHDG3.js +37 -0
  178. package/dist/chunk-XITLHDG3.js.map +1 -0
  179. package/dist/chunk-XMWPYZWZ.js +61 -0
  180. package/dist/chunk-XMWPYZWZ.js.map +1 -0
  181. package/dist/chunk-XUP6CNOM.js +34 -0
  182. package/dist/chunk-XUP6CNOM.js.map +1 -0
  183. package/dist/chunk-YABTQZDJ.js +25 -0
  184. package/dist/chunk-YABTQZDJ.js.map +1 -0
  185. package/dist/chunk-YMHVRBUU.js +199 -0
  186. package/dist/chunk-YMHVRBUU.js.map +1 -0
  187. package/dist/chunk-YMJ7BRKU.js +510 -0
  188. package/dist/chunk-YMJ7BRKU.js.map +1 -0
  189. package/dist/chunk-ZC3XWU7B.js +28 -0
  190. package/dist/chunk-ZC3XWU7B.js.map +1 -0
  191. package/dist/chunk-ZHMTD5KV.js +90 -0
  192. package/dist/chunk-ZHMTD5KV.js.map +1 -0
  193. package/dist/chunk-ZWZDLOE7.js +160 -0
  194. package/dist/chunk-ZWZDLOE7.js.map +1 -0
  195. package/dist/db-package/db/local-first-sqlite-adapter.d.ts +432 -0
  196. package/dist/db-package/db/local-first-sqlite-adapter.js +7 -0
  197. package/dist/db-package/db/local-first-sqlite-adapter.js.map +1 -0
  198. package/dist/db-package/index.d.ts +7 -0
  199. package/dist/db-package/index.js +16 -0
  200. package/dist/db-package/index.js.map +1 -0
  201. package/dist/db-package/migration/aggregator.d.ts +86 -0
  202. package/dist/db-package/migration/aggregator.js +7 -0
  203. package/dist/db-package/migration/aggregator.js.map +1 -0
  204. package/dist/db-package/migration/index.d.ts +3 -0
  205. package/dist/db-package/migration/index.js +8 -0
  206. package/dist/db-package/migration/index.js.map +1 -0
  207. package/dist/engine.d.ts +205 -0
  208. package/dist/engine.js +20 -0
  209. package/dist/engine.js.map +1 -0
  210. package/dist/entitlements/index.d.ts +313 -0
  211. package/dist/entitlements/index.js +23 -0
  212. package/dist/entitlements/index.js.map +1 -0
  213. package/dist/execution/chat.d.ts +7 -0
  214. package/dist/execution/chat.js +7 -0
  215. package/dist/execution/chat.js.map +1 -0
  216. package/dist/execution/index.d.ts +342 -0
  217. package/dist/execution/index.js +66 -0
  218. package/dist/execution/index.js.map +1 -0
  219. package/dist/execution/tool-agent.d.ts +7 -0
  220. package/dist/execution/tool-agent.js +8 -0
  221. package/dist/execution/tool-agent.js.map +1 -0
  222. package/dist/extensions/index.d.ts +172 -0
  223. package/dist/extensions/index.js +95 -0
  224. package/dist/extensions/index.js.map +1 -0
  225. package/dist/health/index.d.ts +35 -0
  226. package/dist/health/index.js +7 -0
  227. package/dist/health/index.js.map +1 -0
  228. package/dist/index.d.ts +43 -0
  229. package/dist/index.js +161 -0
  230. package/dist/index.js.map +1 -0
  231. package/dist/lifecycle/index.d.ts +133 -0
  232. package/dist/lifecycle/index.js +13 -0
  233. package/dist/lifecycle/index.js.map +1 -0
  234. package/dist/lifecycle-engine/backend-migration.d.ts +2 -0
  235. package/dist/lifecycle-engine/backend-migration.js +11 -0
  236. package/dist/lifecycle-engine/backend-migration.js.map +1 -0
  237. package/dist/lifecycle-engine/baseline.d.ts +2 -0
  238. package/dist/lifecycle-engine/baseline.js +9 -0
  239. package/dist/lifecycle-engine/baseline.js.map +1 -0
  240. package/dist/lifecycle-engine/index.d.ts +1497 -0
  241. package/dist/lifecycle-engine/index.js +41 -0
  242. package/dist/lifecycle-engine/index.js.map +1 -0
  243. package/dist/lifecycle-engine/platform/artifacts.d.ts +4 -0
  244. package/dist/lifecycle-engine/platform/artifacts.js +7 -0
  245. package/dist/lifecycle-engine/platform/artifacts.js.map +1 -0
  246. package/dist/lifecycle-engine/platform/control-plane.d.ts +12 -0
  247. package/dist/lifecycle-engine/platform/control-plane.js +2 -0
  248. package/dist/lifecycle-engine/platform/control-plane.js.map +1 -0
  249. package/dist/lifecycle-engine/platform/database-router.d.ts +118 -0
  250. package/dist/lifecycle-engine/platform/database-router.js +7 -0
  251. package/dist/lifecycle-engine/platform/database-router.js.map +1 -0
  252. package/dist/lifecycle-engine/platform/deployment-placements.d.ts +464 -0
  253. package/dist/lifecycle-engine/platform/deployment-placements.js +16 -0
  254. package/dist/lifecycle-engine/platform/deployment-placements.js.map +1 -0
  255. package/dist/lifecycle-engine/platform/deployment.d.ts +4 -0
  256. package/dist/lifecycle-engine/platform/deployment.js +17 -0
  257. package/dist/lifecycle-engine/platform/deployment.js.map +1 -0
  258. package/dist/lifecycle-engine/platform/index.d.ts +737 -0
  259. package/dist/lifecycle-engine/platform/index.js +60 -0
  260. package/dist/lifecycle-engine/platform/index.js.map +1 -0
  261. package/dist/lifecycle-engine/platform/runtime.d.ts +80 -0
  262. package/dist/lifecycle-engine/platform/runtime.js +11 -0
  263. package/dist/lifecycle-engine/platform/runtime.js.map +1 -0
  264. package/dist/lifecycle-engine/platform/site-publication.d.ts +102 -0
  265. package/dist/lifecycle-engine/platform/site-publication.js +7 -0
  266. package/dist/lifecycle-engine/platform/site-publication.js.map +1 -0
  267. package/dist/lifecycle-engine/platform/user-directory.d.ts +139 -0
  268. package/dist/lifecycle-engine/platform/user-directory.js +13 -0
  269. package/dist/lifecycle-engine/platform/user-directory.js.map +1 -0
  270. package/dist/mcp.d.ts +92 -0
  271. package/dist/mcp.js +10 -0
  272. package/dist/mcp.js.map +1 -0
  273. package/dist/middleware/auth.d.ts +118 -0
  274. package/dist/middleware/auth.js +7 -0
  275. package/dist/middleware/auth.js.map +1 -0
  276. package/dist/middleware/error-handler.d.ts +35 -0
  277. package/dist/middleware/error-handler.js +7 -0
  278. package/dist/middleware/error-handler.js.map +1 -0
  279. package/dist/middleware/module-guard.d.ts +33 -0
  280. package/dist/middleware/module-guard.js +7 -0
  281. package/dist/middleware/module-guard.js.map +1 -0
  282. package/dist/platform-admin/index.d.ts +37 -0
  283. package/dist/platform-admin/index.js +11 -0
  284. package/dist/platform-admin/index.js.map +1 -0
  285. package/dist/platform-admin/store.d.ts +346 -0
  286. package/dist/platform-admin/store.js +7 -0
  287. package/dist/platform-admin/store.js.map +1 -0
  288. package/dist/plugin-data/annotations.d.ts +6 -0
  289. package/dist/plugin-data/annotations.js +12 -0
  290. package/dist/plugin-data/annotations.js.map +1 -0
  291. package/dist/plugin-data/atomic-context.d.ts +41 -0
  292. package/dist/plugin-data/atomic-context.js +9 -0
  293. package/dist/plugin-data/atomic-context.js.map +1 -0
  294. package/dist/plugin-data/atomic.d.ts +6 -0
  295. package/dist/plugin-data/atomic.js +26 -0
  296. package/dist/plugin-data/atomic.js.map +1 -0
  297. package/dist/plugin-data/audit.d.ts +6 -0
  298. package/dist/plugin-data/audit.js +12 -0
  299. package/dist/plugin-data/audit.js.map +1 -0
  300. package/dist/plugin-data/commands.d.ts +6 -0
  301. package/dist/plugin-data/commands.js +8 -0
  302. package/dist/plugin-data/commands.js.map +1 -0
  303. package/dist/plugin-data/composite.d.ts +6 -0
  304. package/dist/plugin-data/composite.js +8 -0
  305. package/dist/plugin-data/composite.js.map +1 -0
  306. package/dist/plugin-data/delivery.d.ts +6 -0
  307. package/dist/plugin-data/delivery.js +16 -0
  308. package/dist/plugin-data/delivery.js.map +1 -0
  309. package/dist/plugin-data/index.d.ts +2798 -0
  310. package/dist/plugin-data/index.js +102 -0
  311. package/dist/plugin-data/index.js.map +1 -0
  312. package/dist/plugin-data/json-documents.d.ts +6 -0
  313. package/dist/plugin-data/json-documents.js +16 -0
  314. package/dist/plugin-data/json-documents.js.map +1 -0
  315. package/dist/plugin-data/outbox.d.ts +6 -0
  316. package/dist/plugin-data/outbox.js +16 -0
  317. package/dist/plugin-data/outbox.js.map +1 -0
  318. package/dist/plugin-data/scoped-records.d.ts +6 -0
  319. package/dist/plugin-data/scoped-records.js +10 -0
  320. package/dist/plugin-data/scoped-records.js.map +1 -0
  321. package/dist/plugin-sdk.d.ts +41 -0
  322. package/dist/plugin-sdk.js +10 -0
  323. package/dist/plugin-sdk.js.map +1 -0
  324. package/dist/sql-lifecycle/index.d.ts +138 -0
  325. package/dist/sql-lifecycle/index.js +167 -0
  326. package/dist/sql-lifecycle/index.js.map +1 -0
  327. package/dist/storage/index.d.ts +2 -0
  328. package/dist/storage/index.js +13 -0
  329. package/dist/storage/index.js.map +1 -0
  330. package/dist/storage/s3-compatible.d.ts +139 -0
  331. package/dist/storage/s3-compatible.js +11 -0
  332. package/dist/storage/s3-compatible.js.map +1 -0
  333. package/dist/tenant.d.ts +108 -0
  334. package/dist/tenant.js +9 -0
  335. package/dist/tenant.js.map +1 -0
  336. package/dist/workspace-context.d.ts +119 -0
  337. package/dist/workspace-context.js +9 -0
  338. package/dist/workspace-context.js.map +1 -0
  339. package/docs/api.md +30560 -0
  340. package/docs/db/README.md +49 -0
  341. package/docs/db/docs/api.md +1613 -0
  342. package/docs/db/docs/guide.md +47 -0
  343. package/docs/entitlements.md +60 -0
  344. package/docs/guide.md +92 -0
  345. package/docs/index.md +57 -0
  346. package/docs/ja/db/README.md +46 -0
  347. package/docs/ja/db/docs/guide.md +53 -0
  348. package/docs/ja/guide.md +46 -0
  349. package/docs/ja/lifecycle/README.md +46 -0
  350. package/docs/ja/lifecycle/docs/guide.md +45 -0
  351. package/docs/ja/storage/README.md +46 -0
  352. package/docs/ja/storage/docs/guide.md +43 -0
  353. package/docs/lifecycle/README.md +49 -0
  354. package/docs/lifecycle/docs/api.md +3770 -0
  355. package/docs/lifecycle/docs/baseline.md +50 -0
  356. package/docs/lifecycle/docs/guide.md +47 -0
  357. package/docs/storage/README.md +49 -0
  358. package/docs/storage/docs/api.md +470 -0
  359. package/docs/storage/docs/guide.md +47 -0
  360. package/package.json +354 -4
@@ -0,0 +1,95 @@
1
+ // src/extensions/index.ts
2
+ import { Hono } from "hono";
3
+ function validateExtensions(values) {
4
+ const ids = /* @__PURE__ */ new Set();
5
+ const plugins = /* @__PURE__ */ new Set();
6
+ const tenants = /* @__PURE__ */ new Set();
7
+ return values.map((value) => {
8
+ const item = value;
9
+ if (!item || item.apiVersion !== 1 || typeof item.id !== "string" || !item.id.trim() || !Array.isArray(item.tenantIds) || !item.tenantIds.length || item.tenantIds.some((id) => typeof id !== "string" || !id.trim() || id !== id.trim() || id === "*") || item.manifests !== void 0 && !Array.isArray(item.manifests) || item.lifecycle !== void 0 && !Array.isArray(item.lifecycle) || item.routes !== void 0 && !Array.isArray(item.routes)) {
10
+ throw new Error("Invalid platform extension: version, id and explicit tenantIds are required");
11
+ }
12
+ if (ids.has(item.id)) throw new Error(`Duplicate extension: ${item.id}`);
13
+ ids.add(item.id);
14
+ for (const tenant of item.userContext ? item.tenantIds : []) {
15
+ if (tenants.has(tenant)) throw new Error(`Conflicting extension tenant: ${tenant}`);
16
+ tenants.add(tenant);
17
+ }
18
+ for (const route of item.routes ?? []) {
19
+ if (typeof route.prefix !== "string" || !route.prefix.startsWith("/") || route.prefix.includes("*") || typeof route.moduleId !== "string" || !route.moduleId.trim() || typeof route.router?.fetch !== "function") throw new Error("Invalid extension route");
20
+ }
21
+ for (const manifest of item.manifests ?? []) {
22
+ if (plugins.has(manifest.id)) throw new Error(`Duplicate extension plugin: ${manifest.id}`);
23
+ plugins.add(manifest.id);
24
+ if (typeof item.routeFactories?.[manifest.id] !== "function") throw new Error(`Extension route factory required: ${manifest.id}`);
25
+ }
26
+ for (const id of Object.keys(item.routeFactories ?? {})) {
27
+ if (!(item.manifests ?? []).some((manifest) => manifest.id === id)) throw new Error(`Extension cannot override an official route factory: ${id}`);
28
+ }
29
+ return item;
30
+ });
31
+ }
32
+ function scopeExtensionFactories(item) {
33
+ return { ...item, routeFactories: Object.fromEntries(Object.entries(item.routeFactories ?? {}).map(([id, factory]) => [id, (...args) => {
34
+ const router = new Hono();
35
+ router.use("*", async (context, next) => {
36
+ if (!item.tenantIds.includes(String(context.get("tenantId") ?? ""))) return context.json({ error: "Tenant unavailable" }, 403);
37
+ return next();
38
+ });
39
+ return router.route("/", factory(...args));
40
+ }])) };
41
+ }
42
+ function scopeExtensionRoutes(extension, requireModule) {
43
+ return (extension.routes ?? []).map((route) => {
44
+ const router = new Hono();
45
+ router.use("*", async (context, next) => {
46
+ if (!extension.tenantIds.includes(String(context.get("tenantId") ?? ""))) return context.json({ error: "Tenant unavailable" }, 403);
47
+ return next();
48
+ });
49
+ router.use("*", requireModule(route.moduleId));
50
+ router.route("/", route.router);
51
+ return { prefix: route.prefix, router };
52
+ });
53
+ }
54
+ function mountExtensionRoutes(app, extensions, requireModule) {
55
+ const groups = /* @__PURE__ */ new Map();
56
+ for (const extension of extensions) for (const route of scopeExtensionRoutes(extension, requireModule)) {
57
+ const group = groups.get(route.prefix) ?? [];
58
+ if (group.some((item) => item.tenantIds.some((tenant) => extension.tenantIds.includes(tenant)))) throw new Error("Conflicting extension API prefix for tenant");
59
+ group.push({ tenantIds: extension.tenantIds, router: route.router });
60
+ groups.set(route.prefix, group);
61
+ }
62
+ for (const [prefix, candidates] of groups) {
63
+ const dispatch = async (context) => {
64
+ const tenantId = String(context.get("tenantId") ?? "");
65
+ const selected = candidates.find((item) => item.tenantIds.includes(tenantId));
66
+ if (!selected) return context.json({ error: "Tenant unavailable" }, 403);
67
+ const child = new Hono();
68
+ child.use("*", async (nested, next) => {
69
+ for (const [key, value] of Object.entries(context.var)) nested.set(key, value);
70
+ return next();
71
+ });
72
+ child.route(prefix, selected.router);
73
+ return child.fetch(context.req.raw, context.env);
74
+ };
75
+ app.all(prefix, dispatch);
76
+ app.all(prefix.replace(/\/$/, "") + "/*", dispatch);
77
+ }
78
+ }
79
+ var PLATFORM_PLUGIN_AUTHORIZATION = "eaosPlatformPluginAuthorization";
80
+ function getPlatformPluginAuthorization(context) {
81
+ const c = context;
82
+ const binding = c?.get?.(PLATFORM_PLUGIN_AUTHORIZATION) ?? c?.env?.[PLATFORM_PLUGIN_AUTHORIZATION];
83
+ if (!binding || typeof binding !== "object") return void 0;
84
+ const port = binding;
85
+ return typeof port.resolvePrincipal === "function" && typeof port.isPluginEnabled === "function" ? port : void 0;
86
+ }
87
+ export {
88
+ PLATFORM_PLUGIN_AUTHORIZATION,
89
+ getPlatformPluginAuthorization,
90
+ mountExtensionRoutes,
91
+ scopeExtensionFactories,
92
+ scopeExtensionRoutes,
93
+ validateExtensions
94
+ };
95
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/extensions/index.ts"],"sourcesContent":["import { Hono, type Context, type MiddlewareHandler } from 'hono'\nimport type { PluginManifest } from '@alneas/eaos-core'\nimport type { PlatformContribution } from '@alneas/eaos-server/platform'\n/**\n * Plugin-manifest route factory supplied by trusted deployment composition.\n * @see PlatformExtension.\n */\nexport type HostRouteFactory = NonNullable<PluginManifest['createRoutes']>\n\n/**\n * Adds host route composition to a trusted platform contribution with explicit tenant scope.\n * @remarks Never populate this object from request input.\n * @see validateExtensions for a complete composition example.\n */\nexport interface PlatformExtension extends PlatformContribution {\n /** Plugin-ID factories for every contributed manifest; may not override plugins absent from this contribution. */\n routeFactories?: Record<string, HostRouteFactory>\n /** Optional host API routes with an absolute, wildcard-free prefix, nonblank moduleId, and Hono router. */\n routes?: Array<{\n /** Absolute wildcard-free mount prefix; overlapping tenant contributions may not claim the same prefix. */\n prefix: string\n /** Nonblank module identity passed to the host requireModule factory after the extension tenant-scope check. */\n moduleId: string\n /** Trusted Hono child router wrapped with tenant-scope and live host module middleware during extension composition. */\n router: Hono\n }>\n /** Optional request context resolver; contributions using it may not overlap tenant scope. Its result/authorization semantics belong to the host. */\n userContext?: (context: Context) => Promise<unknown>\n}\n\n/**\n * Checks trusted extension shapes, IDs, route factories, and conflicting tenant/user-context contributions.\n * @param values - Deployment module values to validate; request input must not supply implementations.\n * @returns A new array containing the original validated objects; no deep clone or sandboxing occurs.\n * @throws For invalid version/ID/explicit tenant scopes, duplicate extension/plugin IDs, overlapping userContext tenant scopes, invalid routes, or missing/unauthorized route factories.\n * @remarks Independent plugins can share tenants. This validates composition constraints, not manifest internals or implementation safety.\n * @example\n * ```typescript\n * import { validateExtensions } from \"@alneas/eaos-server/extensions\";\n * const extensions = validateExtensions([{ apiVersion: 1, id: \"example\", tenantIds: [\"example\"] }]);\n * console.log(extensions.length); // 1\n * ```\n */\nexport function validateExtensions(values: unknown[]): PlatformExtension[] {\n const ids = new Set<string>()\n const plugins = new Set<string>()\n const tenants = new Set<string>()\n return values.map(value => {\n const item = value as PlatformExtension\n if (!item || item.apiVersion !== 1 || typeof item.id !== 'string' || !item.id.trim()\n || !Array.isArray(item.tenantIds) || !item.tenantIds.length\n || item.tenantIds.some(id => typeof id !== 'string' || !id.trim() || id !== id.trim() || id === '*')\n || (item.manifests !== undefined && !Array.isArray(item.manifests))\n || (item.lifecycle !== undefined && !Array.isArray(item.lifecycle))\n || (item.routes !== undefined && !Array.isArray(item.routes))) {\n throw new Error('Invalid platform extension: version, id and explicit tenantIds are required')\n }\n if (ids.has(item.id)) throw new Error(`Duplicate extension: ${item.id}`)\n ids.add(item.id)\n // Product identity overrides must remain unambiguous; independent plugins may share tenants.\n for (const tenant of item.userContext ? item.tenantIds : []) {\n if (tenants.has(tenant)) throw new Error(`Conflicting extension tenant: ${tenant}`)\n tenants.add(tenant)\n }\n for (const route of item.routes ?? []) {\n if (typeof route.prefix !== 'string' || !route.prefix.startsWith('/') || route.prefix.includes('*') || typeof route.moduleId !== 'string' || !route.moduleId.trim() || typeof route.router?.fetch !== 'function') throw new Error('Invalid extension route')\n }\n for (const manifest of item.manifests ?? []) {\n if (plugins.has(manifest.id)) throw new Error(`Duplicate extension plugin: ${manifest.id}`)\n plugins.add(manifest.id)\n if (typeof item.routeFactories?.[manifest.id] !== 'function') throw new Error(`Extension route factory required: ${manifest.id}`)\n }\n for (const id of Object.keys(item.routeFactories ?? {})) {\n if (!(item.manifests ?? []).some(manifest => manifest.id === id)) throw new Error(`Extension cannot override an official route factory: ${id}`)\n }\n return item\n })\n}\n\n/**\n * Wraps each contributed plugin route factory with an explicit tenant-scope middleware.\n * @param item - Trusted validated extension; tenantIds is consulted at request time.\n * @returns A shallow copy with fresh route factory wrappers; each wrapper invokes the original factory with unchanged arguments.\n * @throws Calling a wrapped factory propagates the original route-factory errors.\n * @remarks Set trusted tenantId context before handling requests. Out-of-scope or missing tenantId returns 403. This wrapper performs no membership or module authorization.\n * @example\n * ```typescript\n * import { scopeExtensionFactories, validateExtensions } from \"@alneas/eaos-server/extensions\";\n * const [extension] = validateExtensions([{ apiVersion: 1, id: \"example\", tenantIds: [\"example\"] }]);\n * const scoped = scopeExtensionFactories(extension);\n * console.log(scoped.id);\n * ```\n */\nexport function scopeExtensionFactories(item: PlatformExtension): PlatformExtension {\n return { ...item, routeFactories: Object.fromEntries(Object.entries(item.routeFactories ?? {}).map(([id, factory]) => [id, (...args: Parameters<HostRouteFactory>) => {\n const router = new Hono()\n router.use('*', async (context: Context, next) => {\n if (!item.tenantIds.includes(String(context.get('tenantId') ?? ''))) return context.json({ error: 'Tenant unavailable' }, 403)\n return next()\n })\n return router.route('/', factory(...args))\n }])) }\n}\n\n/**\n * Wraps contributed host routers with tenant-scope checks followed by host module authorization.\n * @param extension - Trusted validated contribution; omitted routes produce an empty array.\n * @param requireModule - Called once per route with moduleId during composition; returns middleware enforcing current module permissions.\n * @returns New prefix/router pairs preserving original route order and mounting original routers beneath their guards.\n * @throws Propagates module middleware factory or route composition errors; request execution propagates downstream failures.\n * @remarks Requires a verified tenantId in Hono context. No authentication is installed here.\n * @example\n * ```typescript\n * import { scopeExtensionRoutes, validateExtensions } from \"@alneas/eaos-server/extensions\";\n * import { createModuleGuard } from \"@alneas/eaos-server/middleware/module-guard\";\n * const [extension] = validateExtensions([{ apiVersion: 1, id: \"example\", tenantIds: [\"example\"] }]);\n * console.log(scopeExtensionRoutes(extension, id => createModuleGuard(id, { isDev: false }))); // []\n * ```\n */\nexport function scopeExtensionRoutes(\n extension: PlatformExtension,\n requireModule: (moduleId: string) => MiddlewareHandler,\n): Array<{\n /**\n * Original host route prefix preserved for subsequent mounting.\n */\nprefix: string;\n /**\n * Fresh Hono wrapper enforcing tenant scope and host module authorization before forwarding to the original router.\n */\nrouter: Hono }> {\n return (extension.routes ?? []).map(route => {\n const router = new Hono()\n router.use('*', async (context: Context, next) => {\n if (!extension.tenantIds.includes(String(context.get('tenantId') ?? ''))) return context.json({ error: 'Tenant unavailable' }, 403)\n return next()\n })\n router.use('*', requireModule(route.moduleId))\n router.route('/', route.router)\n return { prefix: route.prefix, router }\n })\n}\n\n\n/**\n * Mounts tenant-dispatched extension routes, allowing a shared prefix across disjoint tenant scopes.\n * @param app - Host Hono app mutated with exact-prefix and descendant dispatch routes.\n * @param extensions - Trusted validated extensions with explicit tenant IDs.\n * @param requireModule - Host factory producing current module authorization middleware for each route moduleId.\n * @returns No value; completes after mounting all route groups.\n * @throws For an overlapping tenant at the same prefix, or propagated route/middleware composition errors.\n * @remarks Install verified identity/tenant middleware before these routes. Dispatch copies parent context variables into the selected child and forwards server environment; missing tenant scope returns 403. There is no automatic route unmount or per-request persistence.\n * @example\n * ```typescript\n * import { Hono } from \"hono\";\n * import { mountExtensionRoutes, type PlatformExtension } from \"@alneas/eaos-server/extensions\";\n * import { createModuleGuard } from \"@alneas/eaos-server/middleware/module-guard\";\n * export function mount(app: Hono, extensions: PlatformExtension[]) {\n * mountExtensionRoutes(app, extensions, id => createModuleGuard(id, { isDev: false }));\n * }\n * ```\n */\nexport function mountExtensionRoutes(app: Hono, extensions: PlatformExtension[], requireModule: (id: string) => MiddlewareHandler): void {\n const groups = new Map<string, Array<{ tenantIds: string[]; router: Hono }>>()\n for (const extension of extensions) for (const route of scopeExtensionRoutes(extension, requireModule)) {\n const group = groups.get(route.prefix) ?? []\n if (group.some(item => item.tenantIds.some(tenant => extension.tenantIds.includes(tenant)))) throw new Error('Conflicting extension API prefix for tenant')\n group.push({ tenantIds: extension.tenantIds, router: route.router })\n groups.set(route.prefix, group)\n }\n for (const [prefix, candidates] of groups) {\n const dispatch: MiddlewareHandler = async context => {\n const tenantId = String(context.get('tenantId') ?? '')\n const selected = candidates.find(item => item.tenantIds.includes(tenantId))\n if (!selected) return context.json({ error: 'Tenant unavailable' }, 403)\n const child = new Hono<{ Variables: Record<string, unknown> }>()\n child.use('*', async (nested, next) => {\n // Preserve verified parent state without putting it in client-controlled headers/body.\n for (const [key, value] of Object.entries(context.var)) nested.set(key, value)\n return next()\n })\n child.route(prefix, selected.router)\n return child.fetch(context.req.raw, context.env)\n }\n app.all(prefix, dispatch)\n app.all(prefix.replace(/\\/$/, '') + '/*', dispatch)\n }\n}\n\n/** Request-scoped host authorization supplied after verified membership middleware.\n * @see getPlatformPluginAuthorization for binding lookup and a usage example.\n */\nexport interface PlatformPluginAuthorization {\n /**\n * Resolves the current verified principal after host authentication/membership checks.\n * @returns Tenant/user identity, verified roles, and current enabled plugin IDs, or null to deny.\n * @throws Host authentication or persistence failures propagate to callers.\n \n * @example\n * ```typescript\n * import type { PlatformPluginAuthorization } from \"@alneas/eaos-server/extensions\";\n * export async function readHostPrincipal(authorization: PlatformPluginAuthorization) {\n * const principal = await authorization.resolvePrincipal();\n * return principal; // Null denies access; never replace it with request-supplied claims.\n * }\n * ```\n */\n resolvePrincipal(): Promise<{ \n /** Tenant identity established by trusted host authentication/membership resolution; request-supplied headers/body must not define this claim. */\n tenantId: string; \n /** Authenticated user identity within the resolved tenant scope. */\n userId: string; \n /** Verified host role claims used for downstream authorization; tenant roles must not fabricate platform authority. */\n roles: string[]; \n /** Current plugin activation identities visible to this verified principal; the host supplies live lifecycle data. */\n enabledPluginIds: string[] } | null>\n /**\n * Checks live plugin activation for a verified tenant.\n * @param tenantId - Verified tenant ID.\n * @param pluginId - Exact installed plugin ID.\n * @returns True only when the plugin is currently enabled for this tenant.\n * @throws Host lifecycle/persistence failures propagate to callers.\n \n * @example\n * ```typescript\n * import type { PlatformPluginAuthorization } from \"@alneas/eaos-server/extensions\";\n * export async function checkCurrentPlugin(\n * authorization: PlatformPluginAuthorization, verifiedTenantId: string, installedPluginId: string,\n * ) {\n * return await authorization.isPluginEnabled(verifiedTenantId, installedPluginId);\n * }\n * ```\n */\n isPluginEnabled(tenantId: string, pluginId: string): Promise<boolean>\n}\n/**\n * Hono variable/environment key for the host-only {@link PlatformPluginAuthorization} binding.\n * @see getPlatformPluginAuthorization for access behavior.\n */\nexport const PLATFORM_PLUGIN_AUTHORIZATION = 'eaosPlatformPluginAuthorization'\n\n/**\n * Reads a structurally valid host authorization port from Hono context or server environment.\n * @param context - Hono-like context; get(bindingKey) takes precedence over env[bindingKey] when nonnull. Missing contexts return undefined.\n * @returns The original port when both required members are functions, or undefined otherwise.\n * @throws Propagates errors thrown by the context get accessor.\n * @remarks Hono environment forwarding is internal-only; HTTP headers never supply this binding. Structural validation does not establish trust: only host middleware may install it.\n * @example\n * ```typescript\n * import { Hono } from \"hono\";\n * import { getPlatformPluginAuthorization } from \"@alneas/eaos-server/extensions\";\n * const app = new Hono();\n * app.get(\"/authorization-state\", c => c.json({ configured: !!getPlatformPluginAuthorization(c) }));\n * ```\n */\nexport function getPlatformPluginAuthorization(context: unknown): PlatformPluginAuthorization | undefined {\n const c = context as { get?: (key: string) => unknown; env?: Record<string, unknown> } | undefined\n const binding = c?.get?.(PLATFORM_PLUGIN_AUTHORIZATION) ?? c?.env?.[PLATFORM_PLUGIN_AUTHORIZATION]\n if (!binding || typeof binding !== 'object') return undefined\n const port = binding as PlatformPluginAuthorization\n return typeof port.resolvePrincipal === 'function' && typeof port.isPluginEnabled === 'function' ? port : undefined\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,35 @@
1
+ import { Hono } from 'hono';
2
+ import { HealthCheck } from '@alneas/eaos-core';
3
+
4
+ /**
5
+ * Host inputs for the unauthenticated liveness and readiness routes.
6
+ * @see createHealthRouter for a complete usage example.
7
+ */
8
+ interface HealthRouterOptions {
9
+ /** Nonblank application label included in every response. */
10
+ appName: string;
11
+ /** Readiness checks run on each readiness request; defaults to no checks. */
12
+ checks?: readonly HealthCheck[];
13
+ /** Clock read separately for each request; defaults to the current Date. */
14
+ now?: () => Date;
15
+ }
16
+ /**
17
+ * Creates public /health, /health/live, and /health/ready routes.
18
+ * @param options - Application label, readiness checks, and optional clock.
19
+ * @returns A new Hono router; liveness returns 200 and readiness returns 503 only for a not_ready report.
20
+ * @throws If appName is missing, not a string, or blank. Request handling may reject if the supplied clock throws.
21
+ * @remarks Check implementations and credentials remain host-owned. These routes install no authentication; mount them where public health status is appropriate. Checks run for every readiness request with no caching by this router.
22
+ * @example
23
+ * ```typescript
24
+ * import { Hono } from "hono";
25
+ * import { createHealthRouter } from "@alneas/eaos-server/health";
26
+ * const app = new Hono();
27
+ * app.route("/", createHealthRouter({ appName: "example-service" }));
28
+ * const response = await app.request("/health/live");
29
+ * console.log(response.status); // 200
30
+ * ```
31
+ */
32
+ declare function createHealthRouter(options: HealthRouterOptions): Hono;
33
+
34
+ export { createHealthRouter };
35
+ export type { HealthRouterOptions };
@@ -0,0 +1,7 @@
1
+ import {
2
+ createHealthRouter
3
+ } from "../chunk-R4ADP2DC.js";
4
+ export {
5
+ createHealthRouter
6
+ };
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,43 @@
1
+ export { ModuleGuardOptions, createModuleGuard } from './middleware/module-guard.js';
2
+ export { AuthMiddlewareOptions, AuthSessionVerifier, createAuthMiddleware } from './middleware/auth.js';
3
+ export { ErrorHandlerOptions, createErrorHandler } from './middleware/error-handler.js';
4
+ export { CreateAppOptions, EaosConfig, ErpEngine, createErpEngine, defineConfig } from './engine.js';
5
+ export { EntitlementError, EntitlementPrincipalResolver, EntitlementRuntimeOptions, PluginEntitlementRuntime, ProtectedPluginAsset, createPluginAssetRouter, createPluginEntitlementGuard, createSqlTenantEntitlementLoader, requiresEntitlementRuntime, resolveEngineEntitlementPrincipal, tenantEntitlementContract } from './entitlements/index.js';
6
+ export { PluginSdkHost, createSdkPluginRouter } from './plugin-sdk.js';
7
+ export { McpPrincipal, McpRouterOptions, McpRuntime, createMcpRouter } from './mcp.js';
8
+ export { TenantResolver, TenantResolverOptions, createTenantResolver } from './tenant.js';
9
+ export { HealthRouterOptions, createHealthRouter } from './health/index.js';
10
+ export { PlatformAdminRouterOptions, createPlatformAdminRouter } from './platform-admin/index.js';
11
+ export { ServerAgentDispatchMode, ServerAgentExecutionContext, ServerAgentExecutionError, ServerAgentExecutor, ServerAgentTaskRequest, ServerAgentTaskResult, ServerAgentWorkerType, ServerApprovalCallbackPayload } from './agentic/types.js';
12
+ export { ServerAutonomousWorker, ServerRuntimeRole, ServerWorkerChatOptions, ServerWorkerOptions } from './agentic/autonomous-worker.js';
13
+ export { CommandAgentExecutorOptions, CommandAgentSandboxMode, CommandAgentSandboxOptions, buildSystemdRunArgs, createCommandAgentExecutor, validateAgentRuntimePolicy } from './agentic/executor.js';
14
+ export { ServerWorkflowAgentRunnerOptions, createWorkflowAgentRunner } from './agentic/agent-runner.js';
15
+ export { WorkflowAgentNodeOptions, createWorkflowAgentNode } from './agentic/agent-node.js';
16
+ export { ServerWorkflowManager, ServerWorkflowOptions } from './agentic/workflow-manager.js';
17
+ export { AgentGraphEngine, AgentGraphEngineOptions, AgentGraphState, GraphApprovalDecision, GraphConditionalEdgeOptions, GraphEdgeOptions, GraphNodeHandler, GraphNodeOptions, GraphRouter, GraphSubgraph, GraphSubgraphOptions } from './agentic/graph.js';
18
+ export { AgentJobClaimFilter, AgentJobDispatchResult, AgentJobDispatcherOptions, AgentJobStore, AtomicAgentJobStoreOptions, DurableAgentJobDispatcher, cancelAgentJob, createAgentJob, createAtomicAgentJobStore, enqueueAgentJob } from './agentic/agent-jobs.js';
19
+ export { LocalRunnerIdentity, LocalRunnerJobKind, LocalRunnerPullCoordinator, LocalRunnerPullCoordinatorOptions } from './agentic/local-runner.js';
20
+ export { AIJobPlan, AIJobSubmission, AIJobTaskInput, DurableAIExecutionBroker, ServerAIExecutionRoute } from './agentic/ai-broker.js';
21
+ export { GraphProjectionCoordinator, GraphProjectionCoordinatorOptions, ProjectionCursorStore } from './agentic/graph-projection.js';
22
+ export { DurableWorkflowCoordinator, DurableWorkflowCoordinatorOptions, StoredWorkflowInstance, WorkflowInstanceStore } from './agentic/workflow-coordinator.js';
23
+ export { EventAgentBridge, EventAgentBridgeError, EventAgentBridgeOptions, EventAgentPendingApproval, EventAgentRule, EventAgentTaskStore, InMemoryEventAgentTaskStore, QueuedEventTask } from './agentic/event-bridge.js';
24
+ export { HttpAgentExecutorOptions, HttpAgentRuntimeRequest, HttpAgentRuntimeResponse, createHttpAgentExecutor } from './agentic/remote-executor.js';
25
+ export { WorkflowNodeCatalog, WorkflowNodeDescriptor, WorkflowNodeRegistration, WorkflowNodeResolverInput } from './agentic/workflow-catalog.js';
26
+ export { CompiledWorkflow, WorkflowCompilerOptions, compileWorkflowDefinition } from './agentic/workflow-compiler.js';
27
+ export { InMemoryWorkflowDefinitionRegistry, WorkflowDefinitionRecord, WorkflowDefinitionRegistry } from './agentic/workflow-registry.js';
28
+ export { WorkspaceContext, WorkspaceContextError, WorkspaceContextStore, WorkspaceIdentity, createWorkspaceContextResolver } from './workspace-context.js';
29
+ export { AtomicCheckpointSaver } from './agentic/atomic-checkpointer.js';
30
+ import 'hono';
31
+ import '@alneas/eaos-core';
32
+ import './lifecycle/index.js';
33
+ import '@alneas/eaos-server/lifecycle-engine';
34
+ import 'hono/types';
35
+ import './plugin-data/index.js';
36
+ import '@alneas/eaos-core/plugin-sdk';
37
+ import '@alneas/eaos-server/platform';
38
+ import './platform-admin/store.js';
39
+ import '@alneas/appkit-core/ai/ai-chat';
40
+ import './execution/index.js';
41
+ import '@alneas/appkit-core/ai/action';
42
+ import '@alneas/appkit-core/ai';
43
+ import '@langchain/langgraph';
package/dist/index.js ADDED
@@ -0,0 +1,161 @@
1
+ import {
2
+ createPlatformAdminRouter
3
+ } from "./chunk-753HWDSC.js";
4
+ import "./chunk-YMJ7BRKU.js";
5
+ import "./chunk-7FTJN4SA.js";
6
+ import {
7
+ InMemoryWorkflowDefinitionRegistry
8
+ } from "./chunk-HVC7FG6B.js";
9
+ import {
10
+ LocalRunnerPullCoordinator
11
+ } from "./chunk-ZHMTD5KV.js";
12
+ import {
13
+ createHttpAgentExecutor
14
+ } from "./chunk-IJWYS2PF.js";
15
+ import {
16
+ WorkflowNodeCatalog
17
+ } from "./chunk-7AHSS7SO.js";
18
+ import {
19
+ compileWorkflowDefinition
20
+ } from "./chunk-CJ7OFEF7.js";
21
+ import {
22
+ DurableWorkflowCoordinator
23
+ } from "./chunk-EJKWDZIU.js";
24
+ import {
25
+ ServerWorkflowManager
26
+ } from "./chunk-FD6VC2NA.js";
27
+ import {
28
+ createWorkflowAgentRunner
29
+ } from "./chunk-6XZXYNJR.js";
30
+ import {
31
+ DurableAIExecutionBroker
32
+ } from "./chunk-LYPZPE53.js";
33
+ import {
34
+ AtomicCheckpointSaver
35
+ } from "./chunk-3NLSWP2Y.js";
36
+ import {
37
+ ServerAutonomousWorker
38
+ } from "./chunk-F2J6IQ6I.js";
39
+ import "./chunk-YMHVRBUU.js";
40
+ import {
41
+ EventAgentBridge,
42
+ InMemoryEventAgentTaskStore
43
+ } from "./chunk-3P4XTTQH.js";
44
+ import {
45
+ buildSystemdRunArgs,
46
+ createCommandAgentExecutor,
47
+ validateAgentRuntimePolicy
48
+ } from "./chunk-32746UQZ.js";
49
+ import {
50
+ ServerAgentExecutionError
51
+ } from "./chunk-YABTQZDJ.js";
52
+ import {
53
+ GraphProjectionCoordinator
54
+ } from "./chunk-W6O3LVBY.js";
55
+ import {
56
+ AgentGraphEngine
57
+ } from "./chunk-HXFVOR7Z.js";
58
+ import {
59
+ ErpEngine,
60
+ createErpEngine,
61
+ defineConfig
62
+ } from "./chunk-F4IITPGX.js";
63
+ import "./chunk-L6PMAEMB.js";
64
+ import {
65
+ createAuthMiddleware
66
+ } from "./chunk-XIEY2OF4.js";
67
+ import {
68
+ createErrorHandler
69
+ } from "./chunk-AVDMLTPF.js";
70
+ import {
71
+ createModuleGuard
72
+ } from "./chunk-VC2PCK2S.js";
73
+ import {
74
+ createHealthRouter
75
+ } from "./chunk-R4ADP2DC.js";
76
+ import {
77
+ createMcpRouter
78
+ } from "./chunk-VF5YDZJC.js";
79
+ import {
80
+ createSdkPluginRouter
81
+ } from "./chunk-4VORUFKR.js";
82
+ import {
83
+ EntitlementError,
84
+ PluginEntitlementRuntime,
85
+ createPluginAssetRouter,
86
+ createPluginEntitlementGuard,
87
+ createSqlTenantEntitlementLoader,
88
+ requiresEntitlementRuntime,
89
+ resolveEngineEntitlementPrincipal,
90
+ tenantEntitlementContract
91
+ } from "./chunk-46UWPEW2.js";
92
+ import "./chunk-INCHXAFK.js";
93
+ import "./chunk-3VITSHN3.js";
94
+ import {
95
+ TenantResolver,
96
+ createTenantResolver
97
+ } from "./chunk-BKAHUEIT.js";
98
+ import {
99
+ WorkspaceContextError,
100
+ createWorkspaceContextResolver
101
+ } from "./chunk-WFEAKJLR.js";
102
+ import {
103
+ DurableAgentJobDispatcher,
104
+ cancelAgentJob,
105
+ createAgentJob,
106
+ createAtomicAgentJobStore,
107
+ enqueueAgentJob
108
+ } from "./chunk-PBC3MZUL.js";
109
+ import {
110
+ createWorkflowAgentNode
111
+ } from "./chunk-UGNTCOVR.js";
112
+ export {
113
+ AgentGraphEngine,
114
+ AtomicCheckpointSaver,
115
+ DurableAIExecutionBroker,
116
+ DurableAgentJobDispatcher,
117
+ DurableWorkflowCoordinator,
118
+ EntitlementError,
119
+ ErpEngine,
120
+ EventAgentBridge,
121
+ GraphProjectionCoordinator,
122
+ InMemoryEventAgentTaskStore,
123
+ InMemoryWorkflowDefinitionRegistry,
124
+ LocalRunnerPullCoordinator,
125
+ PluginEntitlementRuntime,
126
+ ServerAgentExecutionError,
127
+ ServerAutonomousWorker,
128
+ ServerWorkflowManager,
129
+ TenantResolver,
130
+ WorkflowNodeCatalog,
131
+ WorkspaceContextError,
132
+ buildSystemdRunArgs,
133
+ cancelAgentJob,
134
+ compileWorkflowDefinition,
135
+ createAgentJob,
136
+ createAtomicAgentJobStore,
137
+ createAuthMiddleware,
138
+ createCommandAgentExecutor,
139
+ createErpEngine,
140
+ createErrorHandler,
141
+ createHealthRouter,
142
+ createHttpAgentExecutor,
143
+ createMcpRouter,
144
+ createModuleGuard,
145
+ createPlatformAdminRouter,
146
+ createPluginAssetRouter,
147
+ createPluginEntitlementGuard,
148
+ createSdkPluginRouter,
149
+ createSqlTenantEntitlementLoader,
150
+ createTenantResolver,
151
+ createWorkflowAgentNode,
152
+ createWorkflowAgentRunner,
153
+ createWorkspaceContextResolver,
154
+ defineConfig,
155
+ enqueueAgentJob,
156
+ requiresEntitlementRuntime,
157
+ resolveEngineEntitlementPrincipal,
158
+ tenantEntitlementContract,
159
+ validateAgentRuntimePolicy
160
+ };
161
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,133 @@
1
+ import * as hono from 'hono';
2
+ import { Context } from 'hono';
3
+ import { PluginLifecycle, LifecycleStore, LifecycleState, LifecycleWriter } from '@alneas/eaos-server/lifecycle-engine';
4
+
5
+ /** Single control-plane filesystem. All backend processes must read the same ledger.
6
+ * A crashed writer leaves its lock in place: reconcile DB/infra before operator recovery.
7
+ * For independent hosts, implement LifecycleStore using a shared transactional control DB.
8
+ * @example
9
+ * ```typescript
10
+ * import { FileLifecycleStore } from "@alneas/eaos-server/lifecycle";
11
+ * const store = new FileLifecycleStore("./state/lifecycle.json");
12
+ * console.log((await store.read()).platform);
13
+ * ```
14
+ */
15
+ declare class FileLifecycleStore implements LifecycleStore {
16
+ /** Absolute ledger path resolved at construction; lock directory is path + ".lock". */
17
+ readonly path: string;
18
+ /**
19
+ * Resolves a host-selected ledger filename without reading or creating it.
20
+ * @param path - Ledger filename, resolved relative to the current process directory.
21
+ */
22
+ constructor(path: string);
23
+ /**
24
+ * Reads and normalizes the JSON lifecycle ledger.
25
+ * @returns Stored lifecycle state, or a fresh empty state if the file does not exist.
26
+ * @throws Rejects filesystem, JSON parsing, or state-normalization failures other than ENOENT.
27
+ * @example
28
+ * ```typescript
29
+ * import { FileLifecycleStore } from "@alneas/eaos-server/lifecycle";
30
+ * const state = await new FileLifecycleStore("./state/lifecycle.json").read();
31
+ * console.log(state.platform);
32
+ * ```
33
+ */
34
+ read(): Promise<LifecycleState>;
35
+ /**
36
+ * Runs one writer callback under an exclusive filesystem lock directory.
37
+ * @typeParam T - Callback result passed through unchanged.
38
+ * @param fn - Called after lock acquisition with ledger read and durable write operations; must await its writes before returning.
39
+ * @returns The callback result after lock directory removal. Writer.write resolves without a value after temporary-file fsync, rename, and directory fsync.
40
+ * @throws Rejects an existing lock, filesystem failures, callback failures, or final lock-removal failures.
41
+ * @remarks Lock acquisition does not wait or retry. Ordinary callback failure removes the lock; a process crash can leave it behind and requires operator reconciliation. Writes may have committed before a later failure. The store does not enforce that all external writers use this lock.
42
+ * @example
43
+ * ```typescript
44
+ * import { FileLifecycleStore } from "@alneas/eaos-server/lifecycle";
45
+ * const store = new FileLifecycleStore("./state/lifecycle.json");
46
+ * const state = await store.withLock(async writer => writer.read());
47
+ * console.log(state.platform);
48
+ * ```
49
+ */
50
+ withLock<T>(fn: (writer: LifecycleWriter) => Promise<T>): Promise<T>;
51
+ private write;
52
+ }
53
+ /**
54
+ * Host identity, backend routing, and lifecycle admission used by jobs and HTTP guards.
55
+ * @see createLifecycleGuard.
56
+ */
57
+ interface LifecycleRuntime {
58
+ /** Lifecycle engine consulted for current plugin admission. */
59
+ lifecycle: PluginLifecycle;
60
+ /** Fallback registered backend ID used only when resolveBackend is absent. */
61
+ backendId: string;
62
+ /** Resolve the registered target for a verified tenant; null denies admission without fallback. */
63
+ resolveBackend?: (tenantId: string) => Promise<string | null>;
64
+ /** Must resolve authenticated identity / verified webhook signature, never a raw tenant header alone. */
65
+ resolveTenant: (context: Context) => Promise<string | null>;
66
+ }
67
+ /**
68
+ * Resolves the host-selected backend for a verified tenant without falling back after a resolver denial.
69
+ * @param runtime - Lifecycle runtime with either a backend resolver or fixed backend ID.
70
+ * @param tenantId - Verified tenant whose placement is being resolved.
71
+ * @returns Nonempty resolved backend ID, or runtime.backendId when no callback exists.
72
+ * @throws Rejects an empty/null backend result or propagated resolver errors.
73
+ * @example
74
+ * ```typescript
75
+ * import { resolveLifecycleBackend, type LifecycleRuntime } from "@alneas/eaos-server/lifecycle";
76
+ * export async function backend(runtime: LifecycleRuntime, tenantId: string) {
77
+ * return resolveLifecycleBackend(runtime, tenantId);
78
+ * }
79
+ * ```
80
+ */
81
+ declare function resolveLifecycleBackend(runtime: LifecycleRuntime, tenantId: string): Promise<string>;
82
+ /**
83
+ * Runs a host job through lifecycle admission for its verified tenant and plugin.
84
+ * @typeParam T - Result resolved by the admitted callback.
85
+ * @param runtime - Backend routing and lifecycle engine.
86
+ * @param job - Trusted tenantId/pluginId binding of the queued job.
87
+ * @param callback - Invoked without arguments by lifecycle.run after admission; resolves the job result.
88
+ * @returns The callback result after lifecycle.run completes.
89
+ * @throws Rejects unavailable backend, lifecycle admission/store failure, or callback failure.
90
+ * @remarks Persistence, retries, and idempotency of the job body belong to the host. This wrapper delegates concurrency/drain behavior to lifecycle.run.
91
+ * @example
92
+ * ```typescript
93
+ * import { runLifecycleJob, type LifecycleRuntime } from "@alneas/eaos-server/lifecycle";
94
+ * export async function runJob<T>(runtime: LifecycleRuntime, tenantId: string, pluginId: string, execute: () => Promise<T>) {
95
+ * return runLifecycleJob(runtime, { tenantId, pluginId }, execute);
96
+ * }
97
+ * ```
98
+ */
99
+ declare function runLifecycleJob<T>(runtime: LifecycleRuntime, job: {
100
+ /**
101
+ * Verified tenant identity of the queued job, used to select its lifecycle backend.
102
+ */
103
+ tenantId: string;
104
+ /**
105
+ * Exact plugin ID whose current lifecycle admission gates this job body.
106
+ */
107
+ pluginId: string;
108
+ }, callback: () => Promise<T>): Promise<T>;
109
+ /**
110
+ * Creates a request guard requiring a verified tenant and currently enabled plugin placement.
111
+ * @param runtime - Host tenant verification, backend routing, and lifecycle engine.
112
+ * @param pluginId - Exact installed plugin ID required by the route.
113
+ * @returns Hono middleware returning 401 for absent tenant, 403 for unavailable backend/inactive plugin, or completing downstream handling without a value after setting tenantId.
114
+ * @throws Request handling propagates host resolver, lifecycle store, and downstream failures.
115
+ * @remarks Authenticate webhook signatures or browser identity in resolveTenant; a raw header is insufficient. This guard performs a point-in-time isEnabled check and does not hold a lifecycle.run execution lease across downstream work.
116
+ * @example
117
+ * ```typescript
118
+ * import { Hono } from "hono";
119
+ * import { createLifecycleGuard, type LifecycleRuntime } from "@alneas/eaos-server/lifecycle";
120
+ * export function pluginRoutes(runtime: LifecycleRuntime) {
121
+ * const app = new Hono();
122
+ * app.use("*", createLifecycleGuard(runtime, "example-plugin"));
123
+ * app.get("/", c => c.json({ available: true }));
124
+ * return app;
125
+ * }
126
+ * ```
127
+ */
128
+ declare function createLifecycleGuard(runtime: LifecycleRuntime, pluginId: string): hono.MiddlewareHandler<any, string, {}, Response | (Response & hono.TypedResponse<{
129
+ error: string;
130
+ }, 401, "json">)>;
131
+
132
+ export { FileLifecycleStore, createLifecycleGuard, resolveLifecycleBackend, runLifecycleJob };
133
+ export type { LifecycleRuntime };
@@ -0,0 +1,13 @@
1
+ import {
2
+ FileLifecycleStore,
3
+ createLifecycleGuard,
4
+ resolveLifecycleBackend,
5
+ runLifecycleJob
6
+ } from "../chunk-L6PMAEMB.js";
7
+ export {
8
+ FileLifecycleStore,
9
+ createLifecycleGuard,
10
+ resolveLifecycleBackend,
11
+ runLifecycleJob
12
+ };
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,2 @@
1
+ export { BackendMigrationCutover, BackendMigrationExecutor, BackendMigrationPlan, BackendMigrationRequest, BackendMigrationScope, BackendMigrationVerification, BackendMigrationVerificationReport, assertBackendMigrationCutover, assertBackendMigrationVerification, planBackendMigration } from './index.js';
2
+ import '@alneas/eaos-core/contracts/data-contracts';
@@ -0,0 +1,11 @@
1
+ import {
2
+ assertBackendMigrationCutover,
3
+ assertBackendMigrationVerification,
4
+ planBackendMigration
5
+ } from "../chunk-SDJNYPYK.js";
6
+ export {
7
+ assertBackendMigrationCutover,
8
+ assertBackendMigrationVerification,
9
+ planBackendMigration
10
+ };
11
+ //# sourceMappingURL=backend-migration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,2 @@
1
+ export { DataContractBaseline, createDataContractBaseline, rebaseDataContractBaseline } from './index.js';
2
+ import '@alneas/eaos-core/contracts/data-contracts';
@@ -0,0 +1,9 @@
1
+ import {
2
+ createDataContractBaseline,
3
+ rebaseDataContractBaseline
4
+ } from "../chunk-SDJNYPYK.js";
5
+ export {
6
+ createDataContractBaseline,
7
+ rebaseDataContractBaseline
8
+ };
9
+ //# sourceMappingURL=baseline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}