local-serverless-stack 0.17.2 → 1.0.1

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 (228) hide show
  1. package/CHANGELOG.md +327 -0
  2. package/README.md +1155 -221
  3. package/assets/icon.svg +37 -0
  4. package/assets/logo.svg +38 -0
  5. package/bin/cli.js +519 -228
  6. package/bin/i18n.js +525 -0
  7. package/dist/client/config-discovery.d.ts.map +1 -1
  8. package/dist/client/config-discovery.js +2 -1
  9. package/dist/client/config-discovery.js.map +1 -1
  10. package/dist/client/http.d.ts +7 -0
  11. package/dist/client/http.d.ts.map +1 -1
  12. package/dist/client/http.js +3 -2
  13. package/dist/client/http.js.map +1 -1
  14. package/dist/client/lifecycle.d.ts +1 -4
  15. package/dist/client/lifecycle.d.ts.map +1 -1
  16. package/dist/client/lifecycle.js +2 -8
  17. package/dist/client/lifecycle.js.map +1 -1
  18. package/dist/client/namespaces/health.d.ts +1 -1
  19. package/dist/client/namespaces/health.d.ts.map +1 -1
  20. package/dist/client/namespaces/queues.d.ts.map +1 -1
  21. package/dist/client/namespaces/queues.js +9 -0
  22. package/dist/client/namespaces/queues.js.map +1 -1
  23. package/dist/client/namespaces/seeds.d.ts +1 -1
  24. package/dist/client/namespaces/services.d.ts +34 -0
  25. package/dist/client/namespaces/services.d.ts.map +1 -1
  26. package/dist/client/namespaces/services.js +3 -0
  27. package/dist/client/namespaces/services.js.map +1 -1
  28. package/dist/client/types.d.ts +17 -5
  29. package/dist/client/types.d.ts.map +1 -1
  30. package/dist/mcp/http.d.ts +15 -0
  31. package/dist/mcp/http.d.ts.map +1 -0
  32. package/dist/mcp/http.js +86 -0
  33. package/dist/mcp/http.js.map +1 -0
  34. package/dist/mcp/protocol.d.ts +36 -0
  35. package/dist/mcp/protocol.d.ts.map +1 -0
  36. package/dist/mcp/protocol.js +96 -0
  37. package/dist/mcp/protocol.js.map +1 -0
  38. package/dist/mcp/server.d.ts +7 -0
  39. package/dist/mcp/server.d.ts.map +1 -0
  40. package/dist/mcp/server.js +41 -0
  41. package/dist/mcp/server.js.map +1 -0
  42. package/dist/mcp/tools.d.ts +18 -0
  43. package/dist/mcp/tools.d.ts.map +1 -0
  44. package/dist/mcp/tools.js +323 -0
  45. package/dist/mcp/tools.js.map +1 -0
  46. package/dist/server/dev/dynamo-proxy.d.ts.map +1 -1
  47. package/dist/server/dev/dynamo-proxy.js +16 -2
  48. package/dist/server/dev/dynamo-proxy.js.map +1 -1
  49. package/dist/server/engine/backends/self-backend.d.ts +11 -2
  50. package/dist/server/engine/backends/self-backend.d.ts.map +1 -1
  51. package/dist/server/engine/backends/self-backend.js +42 -1
  52. package/dist/server/engine/backends/self-backend.js.map +1 -1
  53. package/dist/server/engine/dispatch/dispatcher.js +2 -2
  54. package/dist/server/engine/dispatch/dispatcher.js.map +1 -1
  55. package/dist/server/engine/engine-manager.d.ts +6 -1
  56. package/dist/server/engine/engine-manager.d.ts.map +1 -1
  57. package/dist/server/engine/engine-manager.js +30 -27
  58. package/dist/server/engine/engine-manager.js.map +1 -1
  59. package/dist/server/engine/http/errors.js +1 -1
  60. package/dist/server/engine/http/errors.js.map +1 -1
  61. package/dist/server/engine/http/is-aws-request.d.ts +8 -0
  62. package/dist/server/engine/http/is-aws-request.d.ts.map +1 -0
  63. package/dist/server/engine/http/is-aws-request.js +53 -0
  64. package/dist/server/engine/http/is-aws-request.js.map +1 -0
  65. package/dist/server/engine/http/router.d.ts.map +1 -1
  66. package/dist/server/engine/http/router.js +7 -1
  67. package/dist/server/engine/http/router.js.map +1 -1
  68. package/dist/server/engine/store/engine-store.d.ts +1 -0
  69. package/dist/server/engine/store/engine-store.d.ts.map +1 -1
  70. package/dist/server/engine/store/engine-store.js +2 -1
  71. package/dist/server/engine/store/engine-store.js.map +1 -1
  72. package/dist/server/engine/store/memory-store.d.ts +16 -0
  73. package/dist/server/engine/store/memory-store.d.ts.map +1 -0
  74. package/dist/server/engine/store/memory-store.js +167 -0
  75. package/dist/server/engine/store/memory-store.js.map +1 -0
  76. package/dist/server/engine/store/wal.d.ts +3 -0
  77. package/dist/server/engine/store/wal.d.ts.map +1 -1
  78. package/dist/server/engine/store/wal.js +35 -1
  79. package/dist/server/engine/store/wal.js.map +1 -1
  80. package/dist/server/index.js +159 -44
  81. package/dist/server/index.js.map +1 -1
  82. package/dist/server/routes/config.d.ts.map +1 -1
  83. package/dist/server/routes/config.js +31 -52
  84. package/dist/server/routes/config.js.map +1 -1
  85. package/dist/server/routes/lambdas.d.ts.map +1 -1
  86. package/dist/server/routes/lambdas.js +77 -0
  87. package/dist/server/routes/lambdas.js.map +1 -1
  88. package/dist/server/routes/services.d.ts.map +1 -1
  89. package/dist/server/routes/services.js +288 -24
  90. package/dist/server/routes/services.js.map +1 -1
  91. package/dist/server/runtime/runtime-worker.js +7 -0
  92. package/dist/server/runtime/runtime-worker.js.map +1 -1
  93. package/dist/server/services/bind-host.d.ts +30 -0
  94. package/dist/server/services/bind-host.d.ts.map +1 -0
  95. package/dist/server/services/bind-host.js +182 -0
  96. package/dist/server/services/bind-host.js.map +1 -0
  97. package/dist/server/services/cache-manager.d.ts +7 -1
  98. package/dist/server/services/cache-manager.d.ts.map +1 -1
  99. package/dist/server/services/cache-manager.js +4 -14
  100. package/dist/server/services/cache-manager.js.map +1 -1
  101. package/dist/server/services/cloudformation-parser.js +3 -3
  102. package/dist/server/services/cloudformation-parser.js.map +1 -1
  103. package/dist/server/services/config-manager.d.ts +53 -35
  104. package/dist/server/services/config-manager.d.ts.map +1 -1
  105. package/dist/server/services/config-manager.js +600 -185
  106. package/dist/server/services/config-manager.js.map +1 -1
  107. package/dist/server/services/dynamo-explorer.d.ts +1 -0
  108. package/dist/server/services/dynamo-explorer.d.ts.map +1 -1
  109. package/dist/server/services/dynamo-explorer.js +28 -6
  110. package/dist/server/services/dynamo-explorer.js.map +1 -1
  111. package/dist/server/services/explorer-region.d.ts +2 -0
  112. package/dist/server/services/explorer-region.d.ts.map +1 -0
  113. package/dist/server/services/explorer-region.js +23 -0
  114. package/dist/server/services/explorer-region.js.map +1 -0
  115. package/dist/server/services/gateway-manager.d.ts.map +1 -1
  116. package/dist/server/services/gateway-manager.js +18 -5
  117. package/dist/server/services/gateway-manager.js.map +1 -1
  118. package/dist/server/services/invocation-activity.d.ts +45 -0
  119. package/dist/server/services/invocation-activity.d.ts.map +1 -0
  120. package/dist/server/services/invocation-activity.js +102 -0
  121. package/dist/server/services/invocation-activity.js.map +1 -0
  122. package/dist/server/services/lambda-runtime-manager.d.ts +8 -1
  123. package/dist/server/services/lambda-runtime-manager.d.ts.map +1 -1
  124. package/dist/server/services/lambda-runtime-manager.js +131 -11
  125. package/dist/server/services/lambda-runtime-manager.js.map +1 -1
  126. package/dist/server/services/opensearch-explorer.d.ts.map +1 -1
  127. package/dist/server/services/opensearch-explorer.js +14 -10
  128. package/dist/server/services/opensearch-explorer.js.map +1 -1
  129. package/dist/server/services/project-scope.d.ts +2 -0
  130. package/dist/server/services/project-scope.d.ts.map +1 -0
  131. package/dist/server/services/project-scope.js +23 -0
  132. package/dist/server/services/project-scope.js.map +1 -0
  133. package/dist/server/services/queue-inspector.d.ts.map +1 -1
  134. package/dist/server/services/queue-inspector.js +15 -6
  135. package/dist/server/services/queue-inspector.js.map +1 -1
  136. package/dist/server/services/resource-provisioner.d.ts +19 -3
  137. package/dist/server/services/resource-provisioner.d.ts.map +1 -1
  138. package/dist/server/services/resource-provisioner.js +153 -26
  139. package/dist/server/services/resource-provisioner.js.map +1 -1
  140. package/dist/server/services/s3-explorer.js +4 -4
  141. package/dist/server/services/s3-explorer.js.map +1 -1
  142. package/dist/server/services/secrets-explorer.d.ts.map +1 -1
  143. package/dist/server/services/secrets-explorer.js +10 -3
  144. package/dist/server/services/secrets-explorer.js.map +1 -1
  145. package/dist/server/services/seed-manager.d.ts.map +1 -1
  146. package/dist/server/services/seed-manager.js +28 -14
  147. package/dist/server/services/seed-manager.js.map +1 -1
  148. package/dist/server/services/serverless-state-parser.d.ts +10 -0
  149. package/dist/server/services/serverless-state-parser.d.ts.map +1 -1
  150. package/dist/server/services/serverless-state-parser.js +20 -1
  151. package/dist/server/services/serverless-state-parser.js.map +1 -1
  152. package/dist/server/services/service-registrar.d.ts +13 -1
  153. package/dist/server/services/service-registrar.d.ts.map +1 -1
  154. package/dist/server/services/service-registrar.js +80 -16
  155. package/dist/server/services/service-registrar.js.map +1 -1
  156. package/dist/server/services/service-scanner.d.ts +25 -0
  157. package/dist/server/services/service-scanner.d.ts.map +1 -0
  158. package/dist/server/services/service-scanner.js +219 -0
  159. package/dist/server/services/service-scanner.js.map +1 -0
  160. package/dist/server/services/source-watcher.d.ts.map +1 -1
  161. package/dist/server/services/source-watcher.js +31 -6
  162. package/dist/server/services/source-watcher.js.map +1 -1
  163. package/dist/ui/assets/ApisPage-CTOcNna-.js +1 -0
  164. package/dist/ui/assets/BucketDetailPage-BXW8-FrE.js +1 -0
  165. package/dist/ui/assets/BucketsPage-DY_ITepb.js +1 -0
  166. package/dist/ui/assets/DynamoPage-BnFFKnIU.js +1 -0
  167. package/dist/ui/assets/DynamoTablePage-BLCuyJHU.js +3 -0
  168. package/dist/ui/assets/LambdaDetailPage-D4rZNLRT.js +4 -0
  169. package/dist/ui/assets/LambdasPage-Bg-MWFBb.js +1 -0
  170. package/dist/ui/assets/OnboardingPage-nnl313Fm.js +1 -0
  171. package/dist/ui/assets/OpenSearchCollectionPage-Dn15lH_F.js +1 -0
  172. package/dist/ui/assets/OpenSearchPage-CgD5isok.js +1 -0
  173. package/dist/ui/assets/{OverviewPage-DS6XJ7kG.css → OverviewPage-CSWY71vZ.css} +1 -1
  174. package/dist/ui/assets/OverviewPage-m5sUr8IN.js +1 -0
  175. package/dist/ui/assets/QueueDetailPage-Ch_FDDoN.js +1 -0
  176. package/dist/ui/assets/QueuesPage-C_yDuGDu.js +1 -0
  177. package/dist/ui/assets/SecretsPage-BSGMSoqy.js +1 -0
  178. package/dist/ui/assets/ServiceDetailPage-6KyohyjI.js +2 -0
  179. package/dist/ui/assets/ServicesPage-BbSetOMo.js +2 -0
  180. package/dist/ui/assets/SettingsPage-BgF1jFr6.js +1 -0
  181. package/dist/ui/assets/engine-D0mFFNbL.js +1 -0
  182. package/dist/ui/assets/index-D627ZyYU.css +1 -0
  183. package/dist/ui/assets/index-DuSPnI19.js +37 -0
  184. package/dist/ui/assets/onboarding-DQmlvyWU.js +1 -0
  185. package/dist/ui/assets/resourceIcons-baecADXA.js +1 -0
  186. package/dist/ui/assets/triggerIcons-DIPWQkJ3.js +1 -0
  187. package/dist/ui/favicon.svg +37 -0
  188. package/dist/ui/index.html +5 -3
  189. package/package.json +11 -11
  190. package/dist/server/engine/aoss-sidecar.d.ts +0 -13
  191. package/dist/server/engine/aoss-sidecar.d.ts.map +0 -1
  192. package/dist/server/engine/aoss-sidecar.js +0 -93
  193. package/dist/server/engine/aoss-sidecar.js.map +0 -1
  194. package/dist/server/engine/backends/localstack-backend.d.ts +0 -25
  195. package/dist/server/engine/backends/localstack-backend.d.ts.map +0 -1
  196. package/dist/server/engine/backends/localstack-backend.js +0 -199
  197. package/dist/server/engine/backends/localstack-backend.js.map +0 -1
  198. package/dist/server/engine/engine-backend.d.ts +0 -17
  199. package/dist/server/engine/engine-backend.d.ts.map +0 -1
  200. package/dist/server/engine/engine-backend.js +0 -7
  201. package/dist/server/engine/engine-backend.js.map +0 -1
  202. package/dist/server/services/localstack-manager.d.ts +0 -17
  203. package/dist/server/services/localstack-manager.d.ts.map +0 -1
  204. package/dist/server/services/localstack-manager.js +0 -31
  205. package/dist/server/services/localstack-manager.js.map +0 -1
  206. package/dist/ui/assets/ApisPage-CXYcWDhm.js +0 -1
  207. package/dist/ui/assets/BucketDetailPage-BwS2--Pe.js +0 -1
  208. package/dist/ui/assets/BucketsPage-khuiYc9C.js +0 -1
  209. package/dist/ui/assets/DynamoPage-aYo0QC0N.js +0 -1
  210. package/dist/ui/assets/DynamoTablePage-rFuV2pgd.js +0 -3
  211. package/dist/ui/assets/LambdaDetailPage-CJmu8M_N.js +0 -4
  212. package/dist/ui/assets/LambdasPage-DniNyKMe.js +0 -1
  213. package/dist/ui/assets/OpenSearchCollectionPage-BBwjgbB9.js +0 -1
  214. package/dist/ui/assets/OpenSearchPage-D5RxJGRo.js +0 -1
  215. package/dist/ui/assets/OverviewPage-Cyt1Xdp8.js +0 -1
  216. package/dist/ui/assets/QueueDetailPage-3FPsowIp.js +0 -1
  217. package/dist/ui/assets/QueuesPage-CUoDDgHr.js +0 -1
  218. package/dist/ui/assets/SecretsPage-B_mTnUf3.js +0 -1
  219. package/dist/ui/assets/ServiceDetailPage-BcdSjA6e.js +0 -2
  220. package/dist/ui/assets/ServicesPage-CU6fb3f8.js +0 -2
  221. package/dist/ui/assets/SettingsPage-BG8cYxgC.js +0 -1
  222. package/dist/ui/assets/index-BxwA-UT0.css +0 -1
  223. package/dist/ui/assets/index-DGsXIPJ-.js +0 -37
  224. package/packages/serverless-plugin/README.md +0 -115
  225. package/packages/serverless-plugin/dist/index.d.ts +0 -2
  226. package/packages/serverless-plugin/dist/index.d.ts.map +0 -1
  227. package/packages/serverless-plugin/dist/index.js +0 -107
  228. package/packages/serverless-plugin/dist/index.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":";AACA,yCAAyC;AACzC,EAAE;AACF,8EAA8E;AAC9E,gFAAgF;AAChF,sEAAsE;AACtE,EAAE;AACF,+EAA+E;AAC/E,wCAAwC;AAExC,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,UAAU,EAAsB,MAAM,eAAe,CAAC;AAE/D,MAAM,UAAU,gBAAgB,CAC9B,GAAkB,EAClB,KAA4B,EAC5B,MAAyC;IAEzC,MAAM,KAAK,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;IAC1D,wEAAwE;IACxE,iEAAiE;IACjE,yEAAyE;IACzE,IAAI,KAAK,GAAkB,OAAO,CAAC,OAAO,EAAE,CAAC;IAE7C,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE;QACtB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO;YAAE,OAAO;QACrB,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;YAC5B,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YAChD,IAAI,QAAQ;gBAAE,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC9D,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;YACf,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACzG,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;QACrB,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,IAAI,CAAC,OAAe;IAClC,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;IACjC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,2BAA2B,OAAO,IAAI,CAAC,CAAC;IAC7D,gBAAgB,CACd,EAAE,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,EACxE,OAAO,CAAC,KAAK,EACb,OAAO,CAAC,MAAM,CACf,CAAC;AACJ,CAAC"}
@@ -0,0 +1,18 @@
1
+ export interface HttpLike {
2
+ (method: string, path: string, body?: unknown): Promise<unknown>;
3
+ }
4
+ export interface ToolDefinition {
5
+ name: string;
6
+ description: string;
7
+ inputSchema: {
8
+ type: 'object';
9
+ properties: Record<string, unknown>;
10
+ required?: string[];
11
+ };
12
+ mutates?: boolean;
13
+ run: (args: Record<string, unknown>, http: HttpLike) => Promise<unknown>;
14
+ }
15
+ export declare const TOOLS: ToolDefinition[];
16
+ export declare const TOOLS_BY_NAME: Map<string, ToolDefinition>;
17
+ export declare function toolListPayload(): unknown[];
18
+ //# sourceMappingURL=tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,QAAQ;IACvB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAClE;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ,CAAC;QACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACpC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;IAEF,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1E;AAoBD,eAAO,MAAM,KAAK,EAAE,cAAc,EAqSjC,CAAC;AAEF,eAAO,MAAM,aAAa,6BAAgD,CAAC;AAG3E,wBAAgB,eAAe,IAAI,OAAO,EAAE,CAM3C"}
@@ -0,0 +1,323 @@
1
+ // The tool surface an MCP client (Claude Code) gets over the running
2
+ // orchestrator. Everything here is a thin, typed wrapper over the same REST API
3
+ // the dashboard and the LssClient use — no second source of truth, and no AWS
4
+ // SDK in this process.
5
+ //
6
+ // Design rules for this file:
7
+ // - Read-only tools first; anything that mutates says so in its description,
8
+ // because the client shows those descriptions to a human before approving.
9
+ // - Every tool answers TEXT (JSON, pretty-printed). MCP clients render text
10
+ // reliably; structured content is optional in the spec and unevenly
11
+ // supported.
12
+ // - Errors come back as `isError` results, not JSON-RPC errors: a failed tool
13
+ // call is a normal outcome the model should read and react to, not a
14
+ // transport fault.
15
+ const str = (description) => ({ type: 'string', description });
16
+ const num = (description) => ({ type: 'number', description });
17
+ const obj = (description) => ({ type: 'object', description });
18
+ function region(args) {
19
+ return typeof args.region === 'string' && args.region ? `?region=${encodeURIComponent(args.region)}` : '';
20
+ }
21
+ function name(args, key = 'name') {
22
+ const value = args[key];
23
+ if (typeof value !== 'string' || !value)
24
+ throw new Error(`"${key}" is required`);
25
+ return encodeURIComponent(value);
26
+ }
27
+ const REGION_PROP = {
28
+ region: str('AWS region. Defaults to the region the orchestrator is configured with.'),
29
+ };
30
+ export const TOOLS = [
31
+ {
32
+ name: 'lss_health',
33
+ description: 'Orchestrator and engine health: the engine endpoint, the AWS services it answers for, '
34
+ + 'how many event-source loops and schedule rules are armed. Use this first to confirm a stack is up.',
35
+ inputSchema: { type: 'object', properties: {} },
36
+ run: (_a, http) => http('GET', '/api/health'),
37
+ },
38
+ {
39
+ name: 'lss_config',
40
+ description: 'Effective LSS configuration (secret values never included): ports, engine, region, seeds dir, '
41
+ + 'lambda runtime residency policy, and which keys are currently masked by an environment variable.',
42
+ inputSchema: { type: 'object', properties: {} },
43
+ run: (_a, http) => http('GET', '/api/config'),
44
+ },
45
+ {
46
+ name: 'lss_ports',
47
+ description: 'Every local port this stack exposes: orchestrator, engine, and each service\'s HTTP API and invoke listener.',
48
+ inputSchema: { type: 'object', properties: {} },
49
+ run: (_a, http) => http('GET', '/api/config/ports'),
50
+ },
51
+ {
52
+ name: 'lss_services',
53
+ description: 'Registered services with their resource breakdown, HTTP routes, runtime status and ports. '
54
+ + '`runtimeWarm: false` means the service is ready but its worker has not been forked yet.',
55
+ inputSchema: { type: 'object', properties: {} },
56
+ run: (_a, http) => http('GET', '/api/services'),
57
+ },
58
+ {
59
+ name: 'lss_scan_services',
60
+ description: 'Discover Serverless Framework / osls services under the project root that could be registered: '
61
+ + 'name, path, installed/packaged/registered flags, effective ports and package command. '
62
+ + 'Use before lss_register_service.',
63
+ inputSchema: { type: 'object', properties: {} },
64
+ run: (_a, http) => http('GET', '/api/services/scan'),
65
+ },
66
+ {
67
+ name: 'lss_register_service',
68
+ description: 'MUTATES. Register a service with the orchestrator by its directory path. Packaging runs on demand '
69
+ + '(autoPackage) and name/region/ports resolve from the packaged serverless-state.json — a bare path is enough. '
70
+ + 'This provisions the service\'s AWS resources on the engine.',
71
+ mutates: true,
72
+ inputSchema: {
73
+ type: 'object',
74
+ properties: {
75
+ servicePath: str('Absolute path of the service directory (from lss_scan_services `root`).'),
76
+ apiPort: num('Override the HTTP API port. Optional.'),
77
+ invokePort: num('Override the Lambda invoke port. Optional.'),
78
+ region: str('Override the AWS region. Optional.'),
79
+ },
80
+ required: ['servicePath'],
81
+ },
82
+ run: (a, http) => {
83
+ if (typeof a.servicePath !== 'string' || !a.servicePath)
84
+ throw new Error('"servicePath" is required');
85
+ return http('POST', '/api/services/register', {
86
+ servicePath: a.servicePath,
87
+ apiPort: a.apiPort,
88
+ invokePort: a.invokePort,
89
+ region: a.region,
90
+ });
91
+ },
92
+ },
93
+ {
94
+ name: 'lss_resources',
95
+ description: 'Provisioned AWS resources (DynamoDB tables, SQS queues, SNS topics, S3 buckets, OpenSearch collections).',
96
+ inputSchema: { type: 'object', properties: { ...REGION_PROP } },
97
+ run: (a, http) => http('GET', `/api/resources${region(a)}`),
98
+ },
99
+ {
100
+ name: 'lss_resource_owners',
101
+ description: 'Maps each provisioned resource to the service that declared it — use it to find who owns a table or queue.',
102
+ inputSchema: { type: 'object', properties: { ...REGION_PROP } },
103
+ run: (a, http) => http('GET', `/api/resources/owners${region(a)}`),
104
+ },
105
+ {
106
+ name: 'lss_lambdas',
107
+ description: 'Every registered function with its triggers, execution mode, invocation counters and warm state.',
108
+ inputSchema: { type: 'object', properties: {} },
109
+ run: (_a, http) => http('GET', '/api/lambdas'),
110
+ },
111
+ {
112
+ name: 'lss_lambda_logs',
113
+ description: 'Invocation history for one function: duration, ok/error, HTTP status and the captured log lines per call.',
114
+ inputSchema: {
115
+ type: 'object',
116
+ properties: { name: str('Function name (short name or fully qualified).') },
117
+ required: ['name'],
118
+ },
119
+ run: (a, http) => http('GET', `/api/lambdas/${name(a)}/logs`),
120
+ },
121
+ {
122
+ name: 'lss_invoke',
123
+ description: 'MUTATES. Invoke a Lambda with a JSON payload and return its result plus captured logs. '
124
+ + 'This runs the real handler against the real local AWS state.',
125
+ mutates: true,
126
+ inputSchema: {
127
+ type: 'object',
128
+ properties: {
129
+ name: str('Function name (short name or fully qualified).'),
130
+ payload: obj('Event object passed to the handler. Defaults to {}.'),
131
+ async: { type: 'boolean', description: 'Fire and forget (Event invocation type). Defaults to false.' },
132
+ },
133
+ required: ['name'],
134
+ },
135
+ run: (a, http) => http('POST', `/api/lambdas/${name(a)}/invoke`, {
136
+ payload: a.payload ?? {},
137
+ invocationType: a.async ? 'Event' : 'RequestResponse',
138
+ }),
139
+ },
140
+ {
141
+ name: 'lss_apis',
142
+ description: 'HTTP routes served per service: method, path, target function, payload version, authorizer and listener status.',
143
+ inputSchema: { type: 'object', properties: {} },
144
+ run: (_a, http) => http('GET', '/api/apis'),
145
+ },
146
+ {
147
+ name: 'lss_dynamo_tables',
148
+ description: 'DynamoDB tables with key schema, GSI/LSI, stream and TTL state. Paginated internally — all tables are returned.',
149
+ inputSchema: { type: 'object', properties: { ...REGION_PROP } },
150
+ run: (a, http) => http('GET', `/api/dynamo/tables${region(a)}`),
151
+ },
152
+ {
153
+ name: 'lss_dynamo_scan',
154
+ description: 'Scan a DynamoDB table. Supports filterExpression / projectionExpression / expressionAttributeNames / '
155
+ + 'expressionAttributeValues / indexName / limit / exclusiveStartKey, exactly like the AWS SDK.',
156
+ inputSchema: {
157
+ type: 'object',
158
+ properties: {
159
+ table: str('Table name.'),
160
+ input: obj('ScanInput fields (filterExpression, limit, indexName, ...). Optional.'),
161
+ ...REGION_PROP,
162
+ },
163
+ required: ['table'],
164
+ },
165
+ run: (a, http) => http('POST', `/api/dynamo/tables/${name(a, 'table')}/scan${region(a)}`, a.input ?? {}),
166
+ },
167
+ {
168
+ name: 'lss_dynamo_query',
169
+ description: 'Query a DynamoDB table or index. Requires keyConditionExpression in `input`.',
170
+ inputSchema: {
171
+ type: 'object',
172
+ properties: {
173
+ table: str('Table name.'),
174
+ input: obj('QueryInput fields — keyConditionExpression is required.'),
175
+ ...REGION_PROP,
176
+ },
177
+ required: ['table', 'input'],
178
+ },
179
+ run: (a, http) => http('POST', `/api/dynamo/tables/${name(a, 'table')}/query${region(a)}`, a.input ?? {}),
180
+ },
181
+ {
182
+ name: 'lss_dynamo_put_item',
183
+ description: 'MUTATES. Write one item into a DynamoDB table. `item` is a plain JSON object (not AttributeValue-typed).',
184
+ mutates: true,
185
+ inputSchema: {
186
+ type: 'object',
187
+ properties: { table: str('Table name.'), item: obj('Plain JSON item.'), ...REGION_PROP },
188
+ required: ['table', 'item'],
189
+ },
190
+ run: (a, http) => http('POST', `/api/dynamo/tables/${name(a, 'table')}/items${region(a)}`, { item: a.item }),
191
+ },
192
+ {
193
+ name: 'lss_queues',
194
+ description: 'SQS queues with live metrics (available, in flight, delayed, processed) and the Lambda consumers attached to each.',
195
+ inputSchema: { type: 'object', properties: { ...REGION_PROP } },
196
+ run: (a, http) => http('GET', `/api/queues${region(a)}`),
197
+ },
198
+ {
199
+ name: 'lss_queue_send',
200
+ description: 'MUTATES. Send a message to a queue. FIFO queues accept messageGroupId / messageDeduplicationId.',
201
+ mutates: true,
202
+ inputSchema: {
203
+ type: 'object',
204
+ properties: {
205
+ queue: str('Queue name (logical name, e.g. "orders-to-process").'),
206
+ body: str('Message body.'),
207
+ messageGroupId: str('FIFO group id.'),
208
+ messageDeduplicationId: str('FIFO dedup id.'),
209
+ delaySeconds: num('Delivery delay in seconds.'),
210
+ ...REGION_PROP,
211
+ },
212
+ required: ['queue', 'body'],
213
+ },
214
+ run: (a, http) => http('POST', `/api/queues/${name(a, 'queue')}/messages${region(a)}`, {
215
+ body: a.body,
216
+ messageGroupId: a.messageGroupId,
217
+ messageDeduplicationId: a.messageDeduplicationId,
218
+ delaySeconds: a.delaySeconds,
219
+ }),
220
+ },
221
+ {
222
+ name: 'lss_queue_await_idle',
223
+ description: 'Block until a queue drains (available and in-flight both zero), then return. The reliable way to wait for an '
224
+ + 'async pipeline to finish before asserting. Pass `sinceProcessed` to also require a minimum processed count. '
225
+ + 'Answers even on timeout — check the `drained` field.',
226
+ inputSchema: {
227
+ type: 'object',
228
+ properties: {
229
+ queue: str('Queue name.'),
230
+ timeoutMs: num('How long to wait. Server clamps to 100..120000. Default 15000.'),
231
+ sinceProcessed: num('Also require at least this many messages processed.'),
232
+ ...REGION_PROP,
233
+ },
234
+ required: ['queue'],
235
+ },
236
+ run: (a, http) => http('POST', `/api/queues/${name(a, 'queue')}/await-idle${region(a)}`, {
237
+ timeoutMs: a.timeoutMs,
238
+ sinceProcessed: a.sinceProcessed,
239
+ }),
240
+ },
241
+ {
242
+ name: 'lss_buckets',
243
+ description: 'S3 buckets with object count, total size, versioning and notification configuration.',
244
+ inputSchema: { type: 'object', properties: { ...REGION_PROP } },
245
+ run: (a, http) => http('GET', `/api/buckets${region(a)}`),
246
+ },
247
+ {
248
+ name: 'lss_bucket_objects',
249
+ description: 'List objects in a bucket. Supports prefix and delimiter.',
250
+ inputSchema: {
251
+ type: 'object',
252
+ properties: {
253
+ bucket: str('Bucket name.'),
254
+ prefix: str('Key prefix filter.'),
255
+ delimiter: str('Group keys by this delimiter (e.g. "/").'),
256
+ ...REGION_PROP,
257
+ },
258
+ required: ['bucket'],
259
+ },
260
+ run: (a, http) => {
261
+ const params = new URLSearchParams();
262
+ if (typeof a.prefix === 'string' && a.prefix)
263
+ params.set('prefix', a.prefix);
264
+ if (typeof a.delimiter === 'string' && a.delimiter)
265
+ params.set('delimiter', a.delimiter);
266
+ if (typeof a.region === 'string' && a.region)
267
+ params.set('region', a.region);
268
+ const query = params.toString();
269
+ return http('GET', `/api/buckets/${name(a, 'bucket')}/objects${query ? `?${query}` : ''}`);
270
+ },
271
+ },
272
+ {
273
+ name: 'lss_secrets',
274
+ description: 'Secrets Manager entries (names, ARNs, version stages, tags). Values are NOT included.',
275
+ inputSchema: { type: 'object', properties: { ...REGION_PROP } },
276
+ run: (a, http) => http('GET', `/api/secrets${region(a)}`),
277
+ },
278
+ {
279
+ name: 'lss_opensearch_search',
280
+ description: 'Run an OpenSearch query against a collection. `body` is the raw search DSL.',
281
+ inputSchema: {
282
+ type: 'object',
283
+ properties: {
284
+ collection: str('Collection name.'),
285
+ body: obj('OpenSearch query DSL (query, sort, size, aggs, ...).'),
286
+ index: str('Index to search. Defaults to the collection\'s only index when there is one.'),
287
+ ...REGION_PROP,
288
+ },
289
+ required: ['collection'],
290
+ },
291
+ run: (a, http) => http('POST', `/api/opensearch/collections/${name(a, 'collection')}/search${region(a)}`, {
292
+ index: a.index,
293
+ body: a.body ?? {},
294
+ }),
295
+ },
296
+ {
297
+ name: 'lss_seeds',
298
+ description: 'Seed files on disk and the live tables they map to — including the mismatch diagnostic.',
299
+ inputSchema: { type: 'object', properties: { ...REGION_PROP } },
300
+ run: (a, http) => http('GET', `/api/seeds${region(a)}`),
301
+ },
302
+ {
303
+ name: 'lss_seed_run',
304
+ description: 'MUTATES. Apply seed files into DynamoDB. Omit `table` to apply every seed file.',
305
+ mutates: true,
306
+ inputSchema: {
307
+ type: 'object',
308
+ properties: { table: str('Seed a single table. Omit for all.'), ...REGION_PROP },
309
+ required: [],
310
+ },
311
+ run: (a, http) => http('POST', `/api/seeds/run${region(a)}`, typeof a.table === 'string' && a.table ? { tableName: a.table } : {}),
312
+ },
313
+ ];
314
+ export const TOOLS_BY_NAME = new Map(TOOLS.map(tool => [tool.name, tool]));
315
+ // The wire shape a client sees — `run` is server-side only.
316
+ export function toolListPayload() {
317
+ return TOOLS.map(({ name: toolName, description, inputSchema }) => ({
318
+ name: toolName,
319
+ description,
320
+ inputSchema,
321
+ }));
322
+ }
323
+ //# sourceMappingURL=tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,gFAAgF;AAChF,8EAA8E;AAC9E,uBAAuB;AACvB,EAAE;AACF,8BAA8B;AAC9B,+EAA+E;AAC/E,+EAA+E;AAC/E,8EAA8E;AAC9E,wEAAwE;AACxE,iBAAiB;AACjB,gFAAgF;AAChF,yEAAyE;AACzE,uBAAuB;AAmBvB,MAAM,GAAG,GAAG,CAAC,WAAmB,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAC;AACvE,MAAM,GAAG,GAAG,CAAC,WAAmB,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAC;AACvE,MAAM,GAAG,GAAG,CAAC,WAAmB,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAC;AAEvE,SAAS,MAAM,CAAC,IAA6B;IAC3C,OAAO,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AAC5G,CAAC;AAED,SAAS,IAAI,CAAC,IAA6B,EAAE,GAAG,GAAG,MAAM;IACvD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;IACxB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,IAAI,GAAG,eAAe,CAAC,CAAC;IACjF,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,WAAW,GAAG;IAClB,MAAM,EAAE,GAAG,CAAC,yEAAyE,CAAC;CACvF,CAAC;AAEF,MAAM,CAAC,MAAM,KAAK,GAAqB;IACrC;QACE,IAAI,EAAE,YAAY;QAClB,WAAW,EACT,wFAAwF;cACtF,oGAAoG;QACxG,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE;QAC/C,GAAG,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,aAAa,CAAC;KAC9C;IACD;QACE,IAAI,EAAE,YAAY;QAClB,WAAW,EACT,gGAAgG;cAC9F,kGAAkG;QACtG,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE;QAC/C,GAAG,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,aAAa,CAAC;KAC9C;IACD;QACE,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,8GAA8G;QAC3H,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE;QAC/C,GAAG,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,mBAAmB,CAAC;KACpD;IACD;QACE,IAAI,EAAE,cAAc;QACpB,WAAW,EACT,4FAA4F;cAC1F,yFAAyF;QAC7F,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE;QAC/C,GAAG,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,eAAe,CAAC;KAChD;IACD;QACE,IAAI,EAAE,mBAAmB;QACzB,WAAW,EACT,iGAAiG;cAC/F,wFAAwF;cACxF,kCAAkC;QACtC,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE;QAC/C,GAAG,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,oBAAoB,CAAC;KACrD;IACD;QACE,IAAI,EAAE,sBAAsB;QAC5B,WAAW,EACT,oGAAoG;cAClG,+GAA+G;cAC/G,6DAA6D;QACjE,OAAO,EAAE,IAAI;QACb,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,WAAW,EAAE,GAAG,CAAC,yEAAyE,CAAC;gBAC3F,OAAO,EAAE,GAAG,CAAC,uCAAuC,CAAC;gBACrD,UAAU,EAAE,GAAG,CAAC,4CAA4C,CAAC;gBAC7D,MAAM,EAAE,GAAG,CAAC,oCAAoC,CAAC;aAClD;YACD,QAAQ,EAAE,CAAC,aAAa,CAAC;SAC1B;QACD,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE;YACf,IAAI,OAAO,CAAC,CAAC,WAAW,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,WAAW;gBAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;YACtG,OAAO,IAAI,CAAC,MAAM,EAAE,wBAAwB,EAAE;gBAC5C,WAAW,EAAE,CAAC,CAAC,WAAW;gBAC1B,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,UAAU,EAAE,CAAC,CAAC,UAAU;gBACxB,MAAM,EAAE,CAAC,CAAC,MAAM;aACjB,CAAC,CAAC;QACL,CAAC;KACF;IACD;QACE,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,0GAA0G;QACvH,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,GAAG,WAAW,EAAE,EAAE;QAC/D,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,iBAAiB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;KAC5D;IACD;QACE,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EAAE,4GAA4G;QACzH,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,GAAG,WAAW,EAAE,EAAE;QAC/D,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,wBAAwB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;KACnE;IACD;QACE,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,kGAAkG;QAC/G,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE;QAC/C,GAAG,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,cAAc,CAAC;KAC/C;IACD;QACE,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,2GAA2G;QACxH,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,gDAAgD,CAAC,EAAE;YAC3E,QAAQ,EAAE,CAAC,MAAM,CAAC;SACnB;QACD,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,gBAAgB,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;KAC9D;IACD;QACE,IAAI,EAAE,YAAY;QAClB,WAAW,EACT,yFAAyF;cACvF,8DAA8D;QAClE,OAAO,EAAE,IAAI;QACb,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,IAAI,EAAE,GAAG,CAAC,gDAAgD,CAAC;gBAC3D,OAAO,EAAE,GAAG,CAAC,qDAAqD,CAAC;gBACnE,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,6DAA6D,EAAE;aACvG;YACD,QAAQ,EAAE,CAAC,MAAM,CAAC;SACnB;QACD,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CACf,IAAI,CAAC,MAAM,EAAE,gBAAgB,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE;YAC7C,OAAO,EAAE,CAAC,CAAC,OAAO,IAAI,EAAE;YACxB,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,iBAAiB;SACtD,CAAC;KACL;IACD;QACE,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,iHAAiH;QAC9H,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE;QAC/C,GAAG,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC;KAC5C;IACD;QACE,IAAI,EAAE,mBAAmB;QACzB,WAAW,EAAE,iHAAiH;QAC9H,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,GAAG,WAAW,EAAE,EAAE;QAC/D,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,qBAAqB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;KAChE;IACD;QACE,IAAI,EAAE,iBAAiB;QACvB,WAAW,EACT,uGAAuG;cACrG,8FAA8F;QAClG,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,KAAK,EAAE,GAAG,CAAC,aAAa,CAAC;gBACzB,KAAK,EAAE,GAAG,CAAC,uEAAuE,CAAC;gBACnF,GAAG,WAAW;aACf;YACD,QAAQ,EAAE,CAAC,OAAO,CAAC;SACpB;QACD,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,sBAAsB,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,QAAQ,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;KACzG;IACD;QACE,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE,8EAA8E;QAC3F,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,KAAK,EAAE,GAAG,CAAC,aAAa,CAAC;gBACzB,KAAK,EAAE,GAAG,CAAC,yDAAyD,CAAC;gBACrE,GAAG,WAAW;aACf;YACD,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;SAC7B;QACD,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,sBAAsB,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;KAC1G;IACD;QACE,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EAAE,0GAA0G;QACvH,OAAO,EAAE,IAAI;QACb,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,kBAAkB,CAAC,EAAE,GAAG,WAAW,EAAE;YACxF,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;SAC5B;QACD,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,sBAAsB,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;KAC7G;IACD;QACE,IAAI,EAAE,YAAY;QAClB,WAAW,EACT,oHAAoH;QACtH,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,GAAG,WAAW,EAAE,EAAE;QAC/D,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,cAAc,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;KACzD;IACD;QACE,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,iGAAiG;QAC9G,OAAO,EAAE,IAAI;QACb,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,KAAK,EAAE,GAAG,CAAC,sDAAsD,CAAC;gBAClE,IAAI,EAAE,GAAG,CAAC,eAAe,CAAC;gBAC1B,cAAc,EAAE,GAAG,CAAC,gBAAgB,CAAC;gBACrC,sBAAsB,EAAE,GAAG,CAAC,gBAAgB,CAAC;gBAC7C,YAAY,EAAE,GAAG,CAAC,4BAA4B,CAAC;gBAC/C,GAAG,WAAW;aACf;YACD,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;SAC5B;QACD,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CACf,IAAI,CAAC,MAAM,EAAE,eAAe,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,YAAY,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;YACnE,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,cAAc,EAAE,CAAC,CAAC,cAAc;YAChC,sBAAsB,EAAE,CAAC,CAAC,sBAAsB;YAChD,YAAY,EAAE,CAAC,CAAC,YAAY;SAC7B,CAAC;KACL;IACD;QACE,IAAI,EAAE,sBAAsB;QAC5B,WAAW,EACT,+GAA+G;cAC7G,8GAA8G;cAC9G,sDAAsD;QAC1D,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,KAAK,EAAE,GAAG,CAAC,aAAa,CAAC;gBACzB,SAAS,EAAE,GAAG,CAAC,gEAAgE,CAAC;gBAChF,cAAc,EAAE,GAAG,CAAC,qDAAqD,CAAC;gBAC1E,GAAG,WAAW;aACf;YACD,QAAQ,EAAE,CAAC,OAAO,CAAC;SACpB;QACD,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CACf,IAAI,CAAC,MAAM,EAAE,eAAe,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,cAAc,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;YACrE,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,cAAc,EAAE,CAAC,CAAC,cAAc;SACjC,CAAC;KACL;IACD;QACE,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,sFAAsF;QACnG,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,GAAG,WAAW,EAAE,EAAE;QAC/D,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,eAAe,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;KAC1D;IACD;QACE,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EAAE,0DAA0D;QACvE,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,MAAM,EAAE,GAAG,CAAC,cAAc,CAAC;gBAC3B,MAAM,EAAE,GAAG,CAAC,oBAAoB,CAAC;gBACjC,SAAS,EAAE,GAAG,CAAC,0CAA0C,CAAC;gBAC1D,GAAG,WAAW;aACf;YACD,QAAQ,EAAE,CAAC,QAAQ,CAAC;SACrB;QACD,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE;YACf,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;YACrC,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM;gBAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;YAC7E,IAAI,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ,IAAI,CAAC,CAAC,SAAS;gBAAE,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC;YACzF,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM;gBAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;YAC7E,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;YAChC,OAAO,IAAI,CAAC,KAAK,EAAE,gBAAgB,IAAI,CAAC,CAAC,EAAE,QAAQ,CAAC,WAAW,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC7F,CAAC;KACF;IACD;QACE,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,uFAAuF;QACpG,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,GAAG,WAAW,EAAE,EAAE;QAC/D,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,eAAe,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;KAC1D;IACD;QACE,IAAI,EAAE,uBAAuB;QAC7B,WAAW,EAAE,6EAA6E;QAC1F,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,UAAU,EAAE,GAAG,CAAC,kBAAkB,CAAC;gBACnC,IAAI,EAAE,GAAG,CAAC,sDAAsD,CAAC;gBACjE,KAAK,EAAE,GAAG,CAAC,8EAA8E,CAAC;gBAC1F,GAAG,WAAW;aACf;YACD,QAAQ,EAAE,CAAC,YAAY,CAAC;SACzB;QACD,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CACf,IAAI,CAAC,MAAM,EAAE,+BAA+B,IAAI,CAAC,CAAC,EAAE,YAAY,CAAC,UAAU,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;YACtF,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,EAAE;SACnB,CAAC;KACL;IACD;QACE,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,yFAAyF;QACtG,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,GAAG,WAAW,EAAE,EAAE;QAC/D,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,aAAa,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;KACxD;IACD;QACE,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,iFAAiF;QAC9F,OAAO,EAAE,IAAI;QACb,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,oCAAoC,CAAC,EAAE,GAAG,WAAW,EAAE;YAChF,QAAQ,EAAE,EAAE;SACb;QACD,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CACf,IAAI,CAAC,MAAM,EAAE,iBAAiB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACnH;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AAE3E,4DAA4D;AAC5D,MAAM,UAAU,eAAe;IAC7B,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC;QAClE,IAAI,EAAE,QAAQ;QACd,WAAW;QACX,WAAW;KACZ,CAAC,CAAC,CAAC;AACN,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"dynamo-proxy.d.ts","sourceRoot":"","sources":["../../../src/server/dev/dynamo-proxy.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAIxB,wBAAgB,gBAAgB,CAAC,cAAc,EAAE,MAAM,EAAE,IAAI,SAAO,wEA4CnE"}
1
+ {"version":3,"file":"dynamo-proxy.d.ts","sourceRoot":"","sources":["../../../src/server/dev/dynamo-proxy.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAKxB,wBAAgB,gBAAgB,CAAC,cAAc,EAAE,MAAM,EAAE,IAAI,SAAO,wEA0DnE"}
@@ -1,5 +1,6 @@
1
1
  import http from 'http';
2
- // Temporary DynamoDB proxy: forwards http://localhost:8000 -> LocalStack (e.g., http://localhost:4566)
2
+ import { getBindHost } from '../services/bind-host.js';
3
+ // Temporary DynamoDB proxy: forwards http://localhost:8000 -> the engine (e.g., http://localhost:14566)
3
4
  // Controlled by ENABLE_DYNAMO_PROXY env var; remove when no longer needed.
4
5
  export function startDynamoProxy(targetEndpoint, port = 8000) {
5
6
  const targetBase = targetEndpoint.replace(/\/$/, '');
@@ -31,9 +32,22 @@ export function startDynamoProxy(targetEndpoint, port = 8000) {
31
32
  });
32
33
  req.pipe(upstream);
33
34
  });
34
- server.listen(port, () => {
35
+ // Same bind host as every other listener (services/bind-host.ts). This is a
36
+ // credential-free, unauthenticated pass-through to the engine's DynamoDB
37
+ // surface, so a bare `listen(port)` — which binds `::` — republished every
38
+ // table on the network the moment `enableDynamoProxy` was turned on, however
39
+ // carefully the orchestrator itself was fenced.
40
+ server.listen(port, getBindHost(), () => {
35
41
  console.log(`✅ DynamoDB proxy listening on http://localhost:${port} -> ${targetBase}`);
36
42
  });
43
+ // The proxy is an optional convenience: a busy port must degrade to a warning,
44
+ // never take the orchestrator down with an unhandled 'error' event.
45
+ server.on('error', (error) => {
46
+ const detail = error.code === 'EADDRINUSE'
47
+ ? `port ${port} is already in use — set dynamoProxyPort to a free port or disable enableDynamoProxy`
48
+ : error.message;
49
+ console.warn(`⚠️ DynamoDB proxy disabled: ${detail}`);
50
+ });
37
51
  return server;
38
52
  }
39
53
  //# sourceMappingURL=dynamo-proxy.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dynamo-proxy.js","sourceRoot":"","sources":["../../../src/server/dev/dynamo-proxy.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,uGAAuG;AACvG,2EAA2E;AAC3E,MAAM,UAAU,gBAAgB,CAAC,cAAsB,EAAE,IAAI,GAAG,IAAI;IAClE,MAAM,UAAU,GAAG,cAAc,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAErD,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAC5C,6FAA6F;QAC7F,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;YACrB,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YACvB,OAAO;QACT,CAAC;QAED,MAAM,GAAG,GAAG,GAAG,UAAU,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC;QACtC,iFAAiF;QACjF,MAAM,OAAO,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,EAA8B,CAAC;QACvE,OAAQ,OAAe,CAAC,MAAM,CAAC,CAAC;QAEhC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAC3B,GAAG,EACH;YACE,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,OAAO;SACR,EACD,WAAW,CAAC,EAAE;YACZ,gFAAgF;YAChF,GAAG,CAAC,SAAS,CAAC,WAAW,CAAC,UAAU,IAAI,GAAG,EAAE,WAAW,CAAC,OAAmC,CAAC,CAAC;YAC9F,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACxB,CAAC,CACF,CAAC;QAEF,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE;YACzB,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;YACnC,uFAAuF;YACvF,IAAI,CAAC,GAAG,CAAC,WAAW;gBAAE,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACzC,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;QACvB,OAAO,CAAC,GAAG,CAAC,kDAAkD,IAAI,OAAO,UAAU,EAAE,CAAC,CAAC;IACzF,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"dynamo-proxy.js","sourceRoot":"","sources":["../../../src/server/dev/dynamo-proxy.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD,wGAAwG;AACxG,2EAA2E;AAC3E,MAAM,UAAU,gBAAgB,CAAC,cAAsB,EAAE,IAAI,GAAG,IAAI;IAClE,MAAM,UAAU,GAAG,cAAc,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAErD,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAC5C,6FAA6F;QAC7F,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;YACrB,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YACvB,OAAO;QACT,CAAC;QAED,MAAM,GAAG,GAAG,GAAG,UAAU,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC;QACtC,iFAAiF;QACjF,MAAM,OAAO,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,EAA8B,CAAC;QACvE,OAAQ,OAAe,CAAC,MAAM,CAAC,CAAC;QAEhC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAC3B,GAAG,EACH;YACE,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,OAAO;SACR,EACD,WAAW,CAAC,EAAE;YACZ,gFAAgF;YAChF,GAAG,CAAC,SAAS,CAAC,WAAW,CAAC,UAAU,IAAI,GAAG,EAAE,WAAW,CAAC,OAAmC,CAAC,CAAC;YAC9F,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACxB,CAAC,CACF,CAAC;QAEF,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE;YACzB,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;YACnC,uFAAuF;YACvF,IAAI,CAAC,GAAG,CAAC,WAAW;gBAAE,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACzC,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,4EAA4E;IAC5E,yEAAyE;IACzE,2EAA2E;IAC3E,6EAA6E;IAC7E,gDAAgD;IAChD,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,GAAG,EAAE;QACtC,OAAO,CAAC,GAAG,CAAC,kDAAkD,IAAI,OAAO,UAAU,EAAE,CAAC,CAAC;IACzF,CAAC,CAAC,CAAC;IAEH,+EAA+E;IAC/E,oEAAoE;IACpE,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAA4B,EAAE,EAAE;QAClD,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,KAAK,YAAY;YACxC,CAAC,CAAC,QAAQ,IAAI,sFAAsF;YACpG,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;QAClB,OAAO,CAAC,IAAI,CAAC,gCAAgC,MAAM,EAAE,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -1,8 +1,10 @@
1
- import type { EngineBackend } from '../engine-backend.js';
1
+ import http from 'http';
2
2
  import { type ResolvedSelfEngineConfig } from '../../services/config-manager.js';
3
- export declare class SelfEngineBackend implements EngineBackend {
3
+ export declare class SelfEngineBackend {
4
4
  readonly kind: "self";
5
5
  private readonly overrides;
6
+ private embedded;
7
+ private handler;
6
8
  private config;
7
9
  private store;
8
10
  private sqs;
@@ -13,10 +15,17 @@ export declare class SelfEngineBackend implements EngineBackend {
13
15
  private boundPort;
14
16
  private running;
15
17
  constructor(overrides?: Partial<ResolvedSelfEngineConfig>);
18
+ /**
19
+ * Build the engine without binding a port. The returned handler answers the
20
+ * AWS wire; the caller decides which requests reach it (see is-aws-request).
21
+ */
22
+ startEmbedded(): Promise<(req: http.IncomingMessage, res: http.ServerResponse) => void>;
16
23
  start(): Promise<void>;
17
24
  stop(): Promise<void>;
18
25
  isRunning(): boolean;
19
26
  getEndpoint(): string;
27
+ /** The AWS wire handler — non-null once start()/startEmbedded() resolved. */
28
+ getRequestHandler(): ((req: http.IncomingMessage, res: http.ServerResponse) => void) | null;
20
29
  getConfig(): {
21
30
  endpoint: string;
22
31
  region: string;
@@ -1 +1 @@
1
- {"version":3,"file":"self-backend.d.ts","sourceRoot":"","sources":["../../../../src/server/engine/backends/self-backend.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAiB,KAAK,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAqBhG,qBAAa,iBAAkB,YAAW,aAAa;IACrD,QAAQ,CAAC,IAAI,EAAG,MAAM,CAAU;IAEhC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAoC;IAC9D,OAAO,CAAC,MAAM,CAAyC;IACvD,OAAO,CAAC,KAAK,CAA4B;IACzC,OAAO,CAAC,GAAG,CAA4B;IACvC,OAAO,CAAC,UAAU,CAAiC;IACnD,OAAO,CAAC,SAAS,CAAgC;IACjD,OAAO,CAAC,MAAM,CAA4B;IAE1C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,OAAO,CAAS;gBAIZ,SAAS,GAAE,OAAO,CAAC,wBAAwB,CAAM;IAIvD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAwFtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAkC3B,SAAS,IAAI,OAAO;IAIpB,WAAW,IAAI,MAAM;IAIrB,SAAS,IAAI;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE;YAAE,WAAW,EAAE,MAAM,CAAC;YAAC,eAAe,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE;IAQhH,YAAY,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAYvC,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,kBAAkB;CAU3B"}
1
+ {"version":3,"file":"self-backend.d.ts","sourceRoot":"","sources":["../../../../src/server/engine/backends/self-backend.ts"],"names":[],"mappings":"AAMA,OAAO,IAAI,MAAM,MAAM,CAAC;AAKxB,OAAO,EAAiB,KAAK,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAsBhG,qBAAa,iBAAiB;IAC5B,QAAQ,CAAC,IAAI,EAAG,MAAM,CAAU;IAEhC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAoC;IAI9D,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,OAAO,CAAgF;IAC/F,OAAO,CAAC,MAAM,CAAyC;IACvD,OAAO,CAAC,KAAK,CAA4B;IACzC,OAAO,CAAC,GAAG,CAA4B;IACvC,OAAO,CAAC,UAAU,CAAiC;IACnD,OAAO,CAAC,SAAS,CAAgC;IACjD,OAAO,CAAC,MAAM,CAA4B;IAE1C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,OAAO,CAAS;gBAIZ,SAAS,GAAE,OAAO,CAAC,wBAAwB,CAAM;IAI7D;;;OAGG;IACG,aAAa,IAAI,OAAO,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,eAAe,EAAE,GAAG,EAAE,IAAI,CAAC,cAAc,KAAK,IAAI,CAAC;IAOvF,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA+GtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAkC3B,SAAS,IAAI,OAAO;IAIpB,WAAW,IAAI,MAAM;IAIrB,6EAA6E;IAC7E,iBAAiB,IAAI,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,eAAe,EAAE,GAAG,EAAE,IAAI,CAAC,cAAc,KAAK,IAAI,CAAC,GAAG,IAAI;IAI3F,SAAS,IAAI;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE;YAAE,WAAW,EAAE,MAAM,CAAC;YAAC,eAAe,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE;IAQhH,YAAY,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAYvC,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,kBAAkB;CAU3B"}
@@ -7,6 +7,7 @@ import http from 'http';
7
7
  import fs from 'fs';
8
8
  import path from 'path';
9
9
  import { ConfigManager } from '../../services/config-manager.js';
10
+ import { getBindHost } from '../../services/bind-host.js';
10
11
  import { EngineBus } from '../bus.js';
11
12
  import { createEngineStore } from '../store/engine-store.js';
12
13
  import { createEngineRequestHandler } from '../http/router.js';
@@ -26,6 +27,11 @@ const SQS_SNAPSHOT_FILE = 'sqs-messages.snapshot.json';
26
27
  export class SelfEngineBackend {
27
28
  kind = 'self';
28
29
  overrides;
30
+ // Set when the engine shares the orchestrator's listener instead of binding
31
+ // its own: start() builds everything but skips listen(), and the caller
32
+ // mounts getRequestHandler() behind its own server.
33
+ embedded = false;
34
+ handler = null;
29
35
  config = null;
30
36
  store = null;
31
37
  sqs = null;
@@ -41,6 +47,16 @@ export class SelfEngineBackend {
41
47
  constructor(overrides = {}) {
42
48
  this.overrides = overrides;
43
49
  }
50
+ /**
51
+ * Build the engine without binding a port. The returned handler answers the
52
+ * AWS wire; the caller decides which requests reach it (see is-aws-request).
53
+ */
54
+ async startEmbedded() {
55
+ this.embedded = true;
56
+ await this.start();
57
+ // start() always assigns the handler before returning.
58
+ return this.handler;
59
+ }
44
60
  async start() {
45
61
  if (this.running)
46
62
  return;
@@ -51,6 +67,10 @@ export class SelfEngineBackend {
51
67
  idleUnloadMs: config.idleUnloadMs,
52
68
  memoryBudgetMb: config.memoryBudgetMb,
53
69
  fsync: config.fsync,
70
+ // `persistence: false` must mean it: no dataDir, no catalogs, no WAL —
71
+ // otherwise tables and queues survive a restart and the run leaves a
72
+ // `.lss/engine/` tree behind.
73
+ persistence: config.persistence,
54
74
  });
55
75
  this.store = store;
56
76
  const bus = new EngineBus();
@@ -94,6 +114,12 @@ export class SelfEngineBackend {
94
114
  ctx,
95
115
  emulators: [dynamo, sqs, s3, events, sns, sts, secretsManager, lambdaCtl, opensearch],
96
116
  });
117
+ this.handler = handler;
118
+ if (this.embedded) {
119
+ // The orchestrator owns the listener; everything above is already live.
120
+ this.running = true;
121
+ return;
122
+ }
97
123
  const server = http.createServer(handler);
98
124
  server.on('connection', socket => {
99
125
  this.sockets.add(socket);
@@ -118,7 +144,18 @@ export class SelfEngineBackend {
118
144
  };
119
145
  server.once('error', onError);
120
146
  server.once('listening', onListening);
121
- server.listen(config.port, '0.0.0.0');
147
+ // Split-listener mode only: `startEmbedded()` returns above and the
148
+ // orchestrator's own socket carries the wire instead.
149
+ //
150
+ // This asked for '0.0.0.0' outright, which put the *entire* AWS data
151
+ // plane — Scan/PutItem on any table, ReceiveMessage on any queue,
152
+ // GetObject on any bucket, GetSecretValue on any secret, all
153
+ // unauthenticated, since SigV4 here is parsed for the region and never
154
+ // verified — on every interface the moment `serverPort` and
155
+ // `selfEngine.port` were given different values, even while the dashboard
156
+ // sat on loopback. It reads the same bind host as every other listener
157
+ // now, so splitting the ports splits nothing else.
158
+ server.listen(config.port, getBindHost());
122
159
  });
123
160
  this.boundPort = server.address().port;
124
161
  this.running = true;
@@ -161,6 +198,10 @@ export class SelfEngineBackend {
161
198
  getEndpoint() {
162
199
  return `http://localhost:${this.boundPort ?? this.resolveConfig().port}`;
163
200
  }
201
+ /** The AWS wire handler — non-null once start()/startEmbedded() resolved. */
202
+ getRequestHandler() {
203
+ return this.handler;
204
+ }
164
205
  getConfig() {
165
206
  return {
166
207
  endpoint: this.getEndpoint(),
@@ -1 +1 @@
1
- {"version":3,"file":"self-backend.js","sourceRoot":"","sources":["../../../../src/server/engine/backends/self-backend.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"self-backend.js","sourceRoot":"","sources":["../../../../src/server/engine/backends/self-backend.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@
3
3
  // 1. FunctionRegistry → LambdaRuntimeManager.invoke() in-process (the LSS
4
4
  // native runtime — no HTTP hop);
5
5
  // 2. engine-absorbed function metadata with an INVOKE_URL env → HTTP POST in
6
- // the AWS Invoke shape (serverless-offline holdouts keep working);
6
+ // the AWS Invoke shape (any HTTP invoke endpoint works);
7
7
  // 3. a failed EngineInvokeResult (never a throw) + one warn per function.
8
8
  // Also owns the bus consumers: S3 notification fan-out and EventBridge
9
9
  // rule-matched target delivery, plus the SQS/stream delivery loop sets.
@@ -267,7 +267,7 @@ function buildS3NotificationPayload(config, event) {
267
267
  };
268
268
  }
269
269
  // ---------------------------------------------------------------------------
270
- // INVOKE_URL HTTP fallback (absorbed LocalStack proxies / serverless-offline)
270
+ // INVOKE_URL HTTP fallback (functions registered with an HTTP invoke endpoint)
271
271
  // ---------------------------------------------------------------------------
272
272
  function httpInvoke(invokeUrl, functionName, event) {
273
273
  return new Promise(resolve => {