local-serverless-stack 0.17.2 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (221) hide show
  1. package/CHANGELOG.md +327 -0
  2. package/README.md +1150 -221
  3. package/assets/icon.svg +37 -0
  4. package/assets/logo.svg +38 -0
  5. package/bin/cli.js +384 -217
  6. package/bin/i18n.js +498 -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/is-aws-request.d.ts +8 -0
  60. package/dist/server/engine/http/is-aws-request.d.ts.map +1 -0
  61. package/dist/server/engine/http/is-aws-request.js +53 -0
  62. package/dist/server/engine/http/is-aws-request.js.map +1 -0
  63. package/dist/server/engine/http/router.d.ts.map +1 -1
  64. package/dist/server/engine/http/router.js +7 -1
  65. package/dist/server/engine/http/router.js.map +1 -1
  66. package/dist/server/engine/store/engine-store.d.ts +1 -0
  67. package/dist/server/engine/store/engine-store.d.ts.map +1 -1
  68. package/dist/server/engine/store/engine-store.js +2 -1
  69. package/dist/server/engine/store/engine-store.js.map +1 -1
  70. package/dist/server/engine/store/memory-store.d.ts +16 -0
  71. package/dist/server/engine/store/memory-store.d.ts.map +1 -0
  72. package/dist/server/engine/store/memory-store.js +167 -0
  73. package/dist/server/engine/store/memory-store.js.map +1 -0
  74. package/dist/server/engine/store/wal.d.ts +3 -0
  75. package/dist/server/engine/store/wal.d.ts.map +1 -1
  76. package/dist/server/engine/store/wal.js +35 -1
  77. package/dist/server/engine/store/wal.js.map +1 -1
  78. package/dist/server/index.js +159 -44
  79. package/dist/server/index.js.map +1 -1
  80. package/dist/server/routes/config.d.ts.map +1 -1
  81. package/dist/server/routes/config.js +25 -52
  82. package/dist/server/routes/config.js.map +1 -1
  83. package/dist/server/routes/lambdas.d.ts.map +1 -1
  84. package/dist/server/routes/lambdas.js +65 -0
  85. package/dist/server/routes/lambdas.js.map +1 -1
  86. package/dist/server/routes/services.d.ts.map +1 -1
  87. package/dist/server/routes/services.js +275 -24
  88. package/dist/server/routes/services.js.map +1 -1
  89. package/dist/server/services/bind-host.d.ts +30 -0
  90. package/dist/server/services/bind-host.d.ts.map +1 -0
  91. package/dist/server/services/bind-host.js +182 -0
  92. package/dist/server/services/bind-host.js.map +1 -0
  93. package/dist/server/services/cache-manager.d.ts +2 -1
  94. package/dist/server/services/cache-manager.d.ts.map +1 -1
  95. package/dist/server/services/cache-manager.js +4 -14
  96. package/dist/server/services/cache-manager.js.map +1 -1
  97. package/dist/server/services/config-manager.d.ts +28 -35
  98. package/dist/server/services/config-manager.d.ts.map +1 -1
  99. package/dist/server/services/config-manager.js +475 -189
  100. package/dist/server/services/config-manager.js.map +1 -1
  101. package/dist/server/services/dynamo-explorer.d.ts +1 -0
  102. package/dist/server/services/dynamo-explorer.d.ts.map +1 -1
  103. package/dist/server/services/dynamo-explorer.js +28 -6
  104. package/dist/server/services/dynamo-explorer.js.map +1 -1
  105. package/dist/server/services/explorer-region.d.ts +2 -0
  106. package/dist/server/services/explorer-region.d.ts.map +1 -0
  107. package/dist/server/services/explorer-region.js +23 -0
  108. package/dist/server/services/explorer-region.js.map +1 -0
  109. package/dist/server/services/gateway-manager.d.ts.map +1 -1
  110. package/dist/server/services/gateway-manager.js +18 -5
  111. package/dist/server/services/gateway-manager.js.map +1 -1
  112. package/dist/server/services/invocation-activity.d.ts +45 -0
  113. package/dist/server/services/invocation-activity.d.ts.map +1 -0
  114. package/dist/server/services/invocation-activity.js +102 -0
  115. package/dist/server/services/invocation-activity.js.map +1 -0
  116. package/dist/server/services/lambda-runtime-manager.d.ts +7 -1
  117. package/dist/server/services/lambda-runtime-manager.d.ts.map +1 -1
  118. package/dist/server/services/lambda-runtime-manager.js +118 -10
  119. package/dist/server/services/lambda-runtime-manager.js.map +1 -1
  120. package/dist/server/services/opensearch-explorer.d.ts.map +1 -1
  121. package/dist/server/services/opensearch-explorer.js +14 -10
  122. package/dist/server/services/opensearch-explorer.js.map +1 -1
  123. package/dist/server/services/project-scope.d.ts +2 -0
  124. package/dist/server/services/project-scope.d.ts.map +1 -0
  125. package/dist/server/services/project-scope.js +23 -0
  126. package/dist/server/services/project-scope.js.map +1 -0
  127. package/dist/server/services/queue-inspector.d.ts.map +1 -1
  128. package/dist/server/services/queue-inspector.js +15 -6
  129. package/dist/server/services/queue-inspector.js.map +1 -1
  130. package/dist/server/services/resource-provisioner.d.ts +0 -2
  131. package/dist/server/services/resource-provisioner.d.ts.map +1 -1
  132. package/dist/server/services/resource-provisioner.js +24 -14
  133. package/dist/server/services/resource-provisioner.js.map +1 -1
  134. package/dist/server/services/s3-explorer.js +3 -3
  135. package/dist/server/services/s3-explorer.js.map +1 -1
  136. package/dist/server/services/secrets-explorer.d.ts.map +1 -1
  137. package/dist/server/services/secrets-explorer.js +10 -3
  138. package/dist/server/services/secrets-explorer.js.map +1 -1
  139. package/dist/server/services/seed-manager.d.ts.map +1 -1
  140. package/dist/server/services/seed-manager.js +17 -8
  141. package/dist/server/services/seed-manager.js.map +1 -1
  142. package/dist/server/services/serverless-state-parser.d.ts +10 -0
  143. package/dist/server/services/serverless-state-parser.d.ts.map +1 -1
  144. package/dist/server/services/serverless-state-parser.js +20 -1
  145. package/dist/server/services/serverless-state-parser.js.map +1 -1
  146. package/dist/server/services/service-registrar.d.ts.map +1 -1
  147. package/dist/server/services/service-registrar.js +19 -5
  148. package/dist/server/services/service-registrar.js.map +1 -1
  149. package/dist/server/services/service-scanner.d.ts +20 -0
  150. package/dist/server/services/service-scanner.d.ts.map +1 -0
  151. package/dist/server/services/service-scanner.js +173 -0
  152. package/dist/server/services/service-scanner.js.map +1 -0
  153. package/dist/server/services/source-watcher.d.ts.map +1 -1
  154. package/dist/server/services/source-watcher.js +31 -6
  155. package/dist/server/services/source-watcher.js.map +1 -1
  156. package/dist/ui/assets/ApisPage-BOuimwWz.js +1 -0
  157. package/dist/ui/assets/BucketDetailPage-vLYwhoQt.js +1 -0
  158. package/dist/ui/assets/BucketsPage-Cu5lU1Hp.js +1 -0
  159. package/dist/ui/assets/DynamoPage-y3TTEPUL.js +1 -0
  160. package/dist/ui/assets/DynamoTablePage-BnmSRZjc.js +3 -0
  161. package/dist/ui/assets/LambdaDetailPage-B5q_d27t.js +4 -0
  162. package/dist/ui/assets/LambdasPage-CJpRoEDx.js +1 -0
  163. package/dist/ui/assets/OnboardingPage-D02dymQi.js +1 -0
  164. package/dist/ui/assets/OpenSearchCollectionPage-B_wWTlfL.js +1 -0
  165. package/dist/ui/assets/OpenSearchPage-BLEgfF_g.js +1 -0
  166. package/dist/ui/assets/{OverviewPage-DS6XJ7kG.css → OverviewPage-C1pBJ8aP.css} +1 -1
  167. package/dist/ui/assets/OverviewPage-EdJWiAt6.js +1 -0
  168. package/dist/ui/assets/QueueDetailPage-ByEYHvHe.js +1 -0
  169. package/dist/ui/assets/QueuesPage-CvwYHSll.js +1 -0
  170. package/dist/ui/assets/SecretsPage-DASw8Ntf.js +1 -0
  171. package/dist/ui/assets/ServiceDetailPage-BMsUDg6L.js +2 -0
  172. package/dist/ui/assets/ServicesPage-2JuiIiRr.js +2 -0
  173. package/dist/ui/assets/SettingsPage-DStO4bgN.js +1 -0
  174. package/dist/ui/assets/engine-D0mFFNbL.js +1 -0
  175. package/dist/ui/assets/index-BIEznsi4.js +37 -0
  176. package/dist/ui/assets/index-BRMvNP3Y.css +1 -0
  177. package/dist/ui/assets/onboarding-DQmlvyWU.js +1 -0
  178. package/dist/ui/assets/resourceIcons-baecADXA.js +1 -0
  179. package/dist/ui/assets/triggerIcons-DIPWQkJ3.js +1 -0
  180. package/dist/ui/favicon.svg +37 -0
  181. package/dist/ui/index.html +5 -3
  182. package/package.json +11 -11
  183. package/dist/server/engine/aoss-sidecar.d.ts +0 -13
  184. package/dist/server/engine/aoss-sidecar.d.ts.map +0 -1
  185. package/dist/server/engine/aoss-sidecar.js +0 -93
  186. package/dist/server/engine/aoss-sidecar.js.map +0 -1
  187. package/dist/server/engine/backends/localstack-backend.d.ts +0 -25
  188. package/dist/server/engine/backends/localstack-backend.d.ts.map +0 -1
  189. package/dist/server/engine/backends/localstack-backend.js +0 -199
  190. package/dist/server/engine/backends/localstack-backend.js.map +0 -1
  191. package/dist/server/engine/engine-backend.d.ts +0 -17
  192. package/dist/server/engine/engine-backend.d.ts.map +0 -1
  193. package/dist/server/engine/engine-backend.js +0 -7
  194. package/dist/server/engine/engine-backend.js.map +0 -1
  195. package/dist/server/services/localstack-manager.d.ts +0 -17
  196. package/dist/server/services/localstack-manager.d.ts.map +0 -1
  197. package/dist/server/services/localstack-manager.js +0 -31
  198. package/dist/server/services/localstack-manager.js.map +0 -1
  199. package/dist/ui/assets/ApisPage-CXYcWDhm.js +0 -1
  200. package/dist/ui/assets/BucketDetailPage-BwS2--Pe.js +0 -1
  201. package/dist/ui/assets/BucketsPage-khuiYc9C.js +0 -1
  202. package/dist/ui/assets/DynamoPage-aYo0QC0N.js +0 -1
  203. package/dist/ui/assets/DynamoTablePage-rFuV2pgd.js +0 -3
  204. package/dist/ui/assets/LambdaDetailPage-CJmu8M_N.js +0 -4
  205. package/dist/ui/assets/LambdasPage-DniNyKMe.js +0 -1
  206. package/dist/ui/assets/OpenSearchCollectionPage-BBwjgbB9.js +0 -1
  207. package/dist/ui/assets/OpenSearchPage-D5RxJGRo.js +0 -1
  208. package/dist/ui/assets/OverviewPage-Cyt1Xdp8.js +0 -1
  209. package/dist/ui/assets/QueueDetailPage-3FPsowIp.js +0 -1
  210. package/dist/ui/assets/QueuesPage-CUoDDgHr.js +0 -1
  211. package/dist/ui/assets/SecretsPage-B_mTnUf3.js +0 -1
  212. package/dist/ui/assets/ServiceDetailPage-BcdSjA6e.js +0 -2
  213. package/dist/ui/assets/ServicesPage-CU6fb3f8.js +0 -2
  214. package/dist/ui/assets/SettingsPage-BG8cYxgC.js +0 -1
  215. package/dist/ui/assets/index-BxwA-UT0.css +0 -1
  216. package/dist/ui/assets/index-DGsXIPJ-.js +0 -37
  217. package/packages/serverless-plugin/README.md +0 -115
  218. package/packages/serverless-plugin/dist/index.d.ts +0 -2
  219. package/packages/serverless-plugin/dist/index.d.ts.map +0 -1
  220. package/packages/serverless-plugin/dist/index.js +0 -107
  221. package/packages/serverless-plugin/dist/index.js.map +0 -1
@@ -0,0 +1,182 @@
1
+ // The network posture of the whole process: which interface **every** listener
2
+ // binds to (`LSS_BIND_HOST`), and which browser origins the REST API answers
3
+ // (`LSS_CORS_ORIGINS`). Both are env-only, both default to "this machine only",
4
+ // and both are resolved here so no caller can hold a different opinion.
5
+ //
6
+ // `LSS_BIND_HOST` governs **every socket this process opens** — one variable,
7
+ // one posture, no listener left behind. LSS opens far more than one, and each of
8
+ // them is an unauthenticated surface that executes code or moves data on this
9
+ // host. The complete list (a listener that is not here is a listener that
10
+ // forgot to ask):
11
+ //
12
+ // - the orchestrator itself — dashboard, REST API and (in the default
13
+ // single-listener layout) the embedded AWS wire (`src/server/index.ts`);
14
+ // - per registered service, an API Gateway listener on its apiPort and an
15
+ // **AWS Lambda Invoke API** listener on its invokePort
16
+ // (`services/gateway-manager.ts`) — the invoke port runs any registered
17
+ // handler with the request body as the event, and `FunctionRegistry.resolve()`
18
+ // falls back to the global registry, so one port reaches every service;
19
+ // - the self engine's own front door when `serverPort` and `selfEngine.port`
20
+ // differ (`engine/backends/self-backend.ts`) — read/write access to every
21
+ // table, queue, topic, bucket and secret;
22
+ // - the optional DynamoDB proxy (`dev/dynamo-proxy.ts`).
23
+ //
24
+ // So "which interface do we bind" is a security decision, and it has to be the
25
+ // SAME decision for all of them. It was not. Only `index.ts` honoured
26
+ // `LSS_BIND_HOST`; the others called `server.listen(port)` with no host (or
27
+ // asked for `'0.0.0.0'` outright), and a bare `listen(port)` binds `::` — a
28
+ // dual-stack wildcard. Verified empirically: `address()` reports `'::'` and the
29
+ // port answers on this host's LAN address, while a `listen(port, '127.0.0.1')`
30
+ // socket refuses that same connection with ECONNREFUSED. The result was a
31
+ // loopback-bound dashboard that still shipped every service's invoke port — and,
32
+ // in split-listener mode, the whole AWS data plane — to anything on the network.
33
+ // Centralising the answer here is what makes "LSS listens on loopback" a
34
+ // statement about the process rather than about one file.
35
+ //
36
+ // Related but deliberately NOT unified here: `lambdaRuntime.invokeHost`
37
+ // (`ConfigManager.getInvokeHost()`) only builds the callback URL the engine's
38
+ // Lambda proxy records as `INVOKE_URL`. Pointing it at a non-loopback address
39
+ // (the documented container case) now also requires `LSS_BIND_HOST`, because
40
+ // the listener that URL names is the one fenced above — naming an address is
41
+ // not the same act as offering the port on it, and only the second one is an
42
+ // exposure.
43
+ /** Loopback: reachable only from processes running on this machine. */
44
+ const DEFAULT_BIND_HOST = '127.0.0.1';
45
+ // Resolved ONCE, at module load, on purpose.
46
+ //
47
+ // Listeners are opened at very different moments — the orchestrator at boot,
48
+ // gateway/invoke listeners on every service registration and hot reload, the
49
+ // DynamoDB proxy at the end of boot — and they must not be able to disagree
50
+ // about how exposed this process is. A single frozen answer means a listener
51
+ // that comes up an hour into the session is bound exactly like the one that
52
+ // came up at boot.
53
+ //
54
+ // It is read straight from the environment rather than through `ConfigManager`
55
+ // for the same reason it has no `lss.config.json` key and no `PUT /api/config`
56
+ // spelling: widening the bind *through* the very API the bind protects would
57
+ // hand the exposure straight back to whoever already reached the API.
58
+ const BIND_HOST = process.env.LSS_BIND_HOST?.trim() || DEFAULT_BIND_HOST;
59
+ /**
60
+ * The address to pass as the `host` argument of every `server.listen()` in this
61
+ * process. Never omit that argument — omitting it is what binds every
62
+ * interface.
63
+ */
64
+ export function getBindHost() {
65
+ return BIND_HOST;
66
+ }
67
+ /**
68
+ * True when `host` can only accept connections that originate on this machine.
69
+ * Everything else — `0.0.0.0`, `::`, a LAN address, a routable hostname — is
70
+ * reachable from the network. The whole `127.0.0.0/8` block is loopback, and
71
+ * `::ffff:127.x.x.x` is that same address seen through a dual-stack socket.
72
+ */
73
+ export function isLoopbackBind(host) {
74
+ // `[::1]` is the bracketed spelling a URL or a `--host` value carries.
75
+ const normalized = host.toLowerCase().replace(/^\[(.*)\]$/, '$1').replace(/^::ffff:/, '');
76
+ return normalized === 'localhost' || normalized === '::1' || /^127\./.test(normalized);
77
+ }
78
+ // ---------------------------------------------------------------------------
79
+ // Which browser ORIGINS the REST API answers
80
+ // ---------------------------------------------------------------------------
81
+ //
82
+ // The bind decides which machines can open the socket; CORS decides which
83
+ // *pages* a browser will let read the answer once the socket is open. They are
84
+ // two halves of the same question, so they live in the same module and move
85
+ // together: a bind that is reachable from another machine is usually reached by
86
+ // a browser running on it.
87
+ //
88
+ // The default is the loopback allowlist below, which is what the previous
89
+ // hardening shipped: `cors()` with no options answered every preflight with
90
+ // `Access-Control-Allow-Origin: *`, which is what made an unauthenticated,
91
+ // command-running API drive-by reachable from any page the developer happened to
92
+ // have open.
93
+ //
94
+ // But loopback-only is wrong for a real, documented LSS layout: the stack runs
95
+ // in a container and is reached from a browser OUTSIDE it, and the developer's
96
+ // own frontends — served from `http://app.localhost:5173`, from the host's LAN
97
+ // address, from a preview URL — call LSS directly to inspect a queue, hit the
98
+ // emulated API Gateway or invoke a Lambda. Those are the intended callers, and a
99
+ // hardcoded regexp turns them into a support ticket. Hence `LSS_CORS_ORIGINS`:
100
+ // a comma-separated allowlist, with `*` for "any origin, I know what that
101
+ // means". Unset or empty keeps the loopback default, so nobody who did not ask
102
+ // gets a wider answer.
103
+ //
104
+ // Env-only, exactly like the bind: a CORS list editable through `PUT /api/config`
105
+ // would let whoever already reached the API widen the set of pages that may
106
+ // reach it next.
107
+ /**
108
+ * Origins the API answers when `LSS_CORS_ORIGINS` says nothing: any port on a
109
+ * loopback name, http only. That is every caller of a default install — the
110
+ * built dashboard is served by this same process (same-origin, so CORS never
111
+ * applies to it) and the Vite dev dashboard on :3101 calls :14566 cross-origin.
112
+ */
113
+ const LOOPBACK_ORIGIN = /^http:\/\/(localhost|127\.0\.0\.1|\[::1\])(:\d+)?$/;
114
+ /** Any origin at all — the deliberate wildcard spelling of `LSS_CORS_ORIGINS`. */
115
+ const ANY_ORIGIN = '*';
116
+ /**
117
+ * Comparable spelling of an origin. Browsers send the scheme and host
118
+ * lowercased and never send a trailing slash; an operator typing the env var by
119
+ * hand does neither reliably, and `LSS_CORS_ORIGINS=https://App.Example.com/`
120
+ * silently matching nothing is the worst possible failure mode for a knob whose
121
+ * whole job is to unblock a frontend.
122
+ */
123
+ function normalizeOrigin(value) {
124
+ return value.trim().toLowerCase().replace(/\/+$/, '');
125
+ }
126
+ const CORS_ORIGINS = (process.env.LSS_CORS_ORIGINS ?? '')
127
+ .split(',')
128
+ .map(normalizeOrigin)
129
+ .filter(entry => entry.length > 0);
130
+ /** True when the operator asked for the wildcard, explicitly and in writing. */
131
+ const CORS_ALLOWS_ANY = CORS_ORIGINS.includes(ANY_ORIGIN);
132
+ /**
133
+ * Whether a browser origin may call this API cross-origin — the predicate the
134
+ * `cors` middleware in `src/server/index.ts` consults.
135
+ */
136
+ export function isOriginAllowed(origin) {
137
+ // No Origin header: same-origin browser requests, curl, the CLI, LssClient,
138
+ // the MCP server, an AWS SDK, the Vite proxy. None of them is a cross-origin
139
+ // browser request, so none of them is what this list is defending against —
140
+ // and rejecting them would break every non-browser caller LSS has.
141
+ if (!origin)
142
+ return true;
143
+ if (CORS_ALLOWS_ANY)
144
+ return true;
145
+ const candidate = normalizeOrigin(origin);
146
+ // An empty list is "unset", not "deny everything": the default posture.
147
+ if (CORS_ORIGINS.length === 0)
148
+ return LOOPBACK_ORIGIN.test(candidate);
149
+ return CORS_ORIGINS.includes(candidate);
150
+ }
151
+ /**
152
+ * The boot banner's exposure warning, or `null` when the process is in the safe
153
+ * default posture (loopback bind + loopback-only CORS).
154
+ *
155
+ * Widening either half must never be something you did and did not notice: this
156
+ * API has no authentication and runs commands on this host, so the operator sees
157
+ * exactly what they opened on **every** boot, not once in a changelog. One
158
+ * warning covers the whole process — the bind it names is the one every listener
159
+ * uses, resolved above.
160
+ */
161
+ export function getExposureWarning() {
162
+ const networkBind = !isLoopbackBind(BIND_HOST);
163
+ if (!networkBind && !CORS_ALLOWS_ANY)
164
+ return null;
165
+ const exposures = [];
166
+ const knobs = [];
167
+ if (networkBind) {
168
+ exposures.push(`LSS_BIND_HOST=${BIND_HOST} — the dashboard, the REST API, the AWS wire and every ` +
169
+ "service's API/invoke port are reachable from the network");
170
+ knobs.push('LSS_BIND_HOST');
171
+ }
172
+ if (CORS_ALLOWS_ANY) {
173
+ exposures.push('LSS_CORS_ORIGINS=* — any web page open in a browser that can reach this port may call ' +
174
+ 'the API cross-origin and read the answer');
175
+ knobs.push('LSS_CORS_ORIGINS');
176
+ }
177
+ return (`⚠️ ${exposures.join('; ')}. This API has no authentication and can run commands on this ` +
178
+ 'host (starting a service spawns a process, packaging one runs a build command) — use it ' +
179
+ `only where you trust every caller, and unset ${knobs.join(' and ')} to go back to the ` +
180
+ 'default (127.0.0.1, loopback origins only).');
181
+ }
182
+ //# sourceMappingURL=bind-host.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bind-host.js","sourceRoot":"","sources":["../../../src/server/services/bind-host.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,6 @@
1
+ import { projectCacheSegment } from './project-scope.js';
1
2
  import type { RegisteredFunction, HttpRoute, AuthorizerConfig } from './serverless-state-parser.js';
3
+ export { projectCacheSegment };
2
4
  export interface ServiceMetadata {
3
5
  name: string;
4
6
  root: string;
@@ -14,7 +16,6 @@ export interface ServiceMetadata {
14
16
  routes?: HttpRoute[];
15
17
  authorizers?: AuthorizerConfig[];
16
18
  }
17
- export declare function projectCacheSegment(projectRoot: string): string;
18
19
  export declare class CacheManager {
19
20
  private cacheDir;
20
21
  constructor(projectRoot?: string);
@@ -1 +1 @@
1
- {"version":3,"file":"cache-manager.d.ts","sourceRoot":"","sources":["../../../src/server/services/cache-manager.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,kBAAkB,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAEpG,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,YAAY,GAAG,SAAS,GAAG,SAAS,CAAC;IAC7C,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,kBAAkB,EAAE,CAAC;IACjC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;IACrB,WAAW,CAAC,EAAE,gBAAgB,EAAE,CAAC;CAClC;AAKD,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAS/D;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAS;gBAOb,WAAW,GAAE,MAAqD;IAOxE,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrB,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAcxG,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC;IAUrD,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IAUjE,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAYrF,YAAY,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;IAoB1C,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAIxD"}
1
+ {"version":3,"file":"cache-manager.d.ts","sourceRoot":"","sources":["../../../src/server/services/cache-manager.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAIpG,OAAO,EAAE,mBAAmB,EAAE,CAAC;AAE/B,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,YAAY,GAAG,SAAS,GAAG,SAAS,CAAC;IAC7C,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,kBAAkB,EAAE,CAAC;IACjC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;IACrB,WAAW,CAAC,EAAE,gBAAgB,EAAE,CAAC;CAClC;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAS;gBAOb,WAAW,GAAE,MAAqD;IAOxE,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrB,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAcxG,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC;IAUrD,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IAUjE,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAYrF,YAAY,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;IAoB1C,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAIxD"}
@@ -1,21 +1,11 @@
1
1
  import fs from 'fs/promises';
2
2
  import path from 'path';
3
3
  import os from 'os';
4
- import crypto from 'crypto';
5
4
  import { ConfigManager } from './config-manager.js';
6
- // Stable, filesystem-safe cache segment for one project root: a readable slug
7
- // from the directory basename plus a short hash of the absolute path, so two
8
- // projects whose directories share a basename still get distinct namespaces.
9
- export function projectCacheSegment(projectRoot) {
10
- const absoluteRoot = path.resolve(projectRoot);
11
- const slug = path.basename(absoluteRoot)
12
- .toLowerCase()
13
- .replace(/[^a-z0-9]+/g, '-')
14
- .replace(/^-+|-+$/g, '')
15
- .slice(0, 40) || 'project';
16
- const hash = crypto.createHash('sha256').update(absoluteRoot).digest('hex').slice(0, 8);
17
- return `${slug}-${hash}`;
18
- }
5
+ import { projectCacheSegment } from './project-scope.js';
6
+ // Re-exported for the existing importers (the segment itself now lives in
7
+ // project-scope.ts, which config-manager can import without a cycle).
8
+ export { projectCacheSegment };
19
9
  export class CacheManager {
20
10
  cacheDir;
21
11
  // The registered-services cache is scoped per project (the directory this
@@ -1 +1 @@
1
- {"version":3,"file":"cache-manager.js","sourceRoot":"","sources":["../../../src/server/services/cache-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cache-manager.js","sourceRoot":"","sources":["../../../src/server/services/cache-manager.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,4 @@
1
1
  import type { SecretSeedValue } from './secret-value.js';
2
- export type LocalStackMode = 'managed' | 'external';
3
- export type LocalStackEdition = 'community' | 'pro';
4
- export type EngineKind = 'localstack' | 'self';
5
2
  export interface SelfEngineConfig {
6
3
  port?: number;
7
4
  dataDir?: string;
@@ -22,16 +19,6 @@ export interface ResolvedSelfEngineConfig {
22
19
  persistence: boolean;
23
20
  region: string;
24
21
  }
25
- export interface AossSidecarConfig {
26
- enabled?: boolean;
27
- port?: number;
28
- }
29
- export interface ResolvedAossSidecarConfig {
30
- enabled: boolean;
31
- port: number;
32
- endpoint: string;
33
- dataDir: string;
34
- }
35
22
  export interface ServicePackageConfig {
36
23
  packageCommand?: string;
37
24
  packageArgs?: string[];
@@ -51,6 +38,9 @@ export interface LambdaRuntimeConfig {
51
38
  watch?: boolean;
52
39
  invokePortOffset?: number;
53
40
  invokeHost?: string;
41
+ lazy?: boolean;
42
+ idleTimeoutMs?: number;
43
+ maxWarmWorkers?: number;
54
44
  }
55
45
  export interface ServiceRuntimeConfig {
56
46
  enabled?: boolean;
@@ -93,17 +83,9 @@ export interface ResolvedBranding {
93
83
  export type BrandingAssetKind = 'logo' | 'favicon';
94
84
  export interface LSSConfig {
95
85
  serverPort?: number;
96
- localstackPort?: number;
97
- localstackEndpoint?: string;
98
- mode?: LocalStackMode;
99
- localstackEdition?: LocalStackEdition;
100
- localstackVersion?: string;
101
- localstackImage?: string;
102
- localstackAuthToken?: string;
103
86
  enableDynamoProxy?: boolean;
104
87
  dynamoProxyPort?: number;
105
88
  region?: string;
106
- services?: string[];
107
89
  persistence?: boolean;
108
90
  debug?: boolean;
109
91
  seedsDir?: string;
@@ -117,9 +99,7 @@ export interface LSSConfig {
117
99
  packageTimeoutMs?: number;
118
100
  lambdaRuntime?: LambdaRuntimeConfig;
119
101
  serviceRuntime?: Record<string, ServiceRuntimeConfig>;
120
- engine?: EngineKind;
121
102
  selfEngine?: SelfEngineConfig;
122
- aossSidecar?: AossSidecarConfig;
123
103
  branding?: BrandingConfig;
124
104
  }
125
105
  export declare class ConfigValidationError extends Error {
@@ -144,18 +124,9 @@ export declare class ConfigManager {
144
124
  getConfig(): LSSConfig;
145
125
  getServerPort(): number;
146
126
  getDashboardPort(): number;
147
- getLocalStackPort(): number;
148
- getLocalStackEndpoint(): string;
149
- getMode(): LocalStackMode;
150
- isExternal(): boolean;
151
- getLocalStackEdition(): LocalStackEdition;
152
- getLocalStackVersion(): string;
153
- getLocalStackImage(): string;
154
- getLocalStackAuthToken(): string | undefined;
155
127
  isEnableDynamoProxy(): boolean;
156
128
  getDynamoProxyPort(): number;
157
129
  getRegion(): string;
158
- getServices(): string[];
159
130
  isPersistence(): boolean;
160
131
  isDebug(): boolean;
161
132
  getSeedsDir(): string;
@@ -173,9 +144,27 @@ export declare class ConfigManager {
173
144
  * as the global baseline.
174
145
  */
175
146
  getPackageConfigForService(servicePath: string): ResolvedPackageConfig;
147
+ /**
148
+ * The keys a `servicePackaging`/`serviceRuntime` entry may be written under,
149
+ * most specific first: the path relative to the config file's directory, the
150
+ * path relative to the project root, then the directory basename.
151
+ *
152
+ * The two relative forms are usually the same string — but not always, and
153
+ * the difference used to silently drop overrides: `getProjectRoot()`
154
+ * realpath-resolves (and falls back to the cwd for a home-directory config),
155
+ * while a raw `dirname(configPath)` does not. A checkout reached through a
156
+ * symlink, or a config loaded from `~`, made the key the dashboard writes
157
+ * (project-root relative, from the scan) unreachable by the lookup. Both
158
+ * spellings resolve here so a written override always applies.
159
+ */
160
+ private serviceEntryKeys;
161
+ private lookupServiceEntry;
176
162
  isLambdaRuntimeEnabled(): boolean;
177
163
  getLambdaExecutionMode(): LambdaExecutionMode;
178
164
  getInvokePortOffset(): number;
165
+ isLambdaRuntimeLazy(): boolean;
166
+ getLambdaIdleTimeoutMs(): number;
167
+ getLambdaMaxWarmWorkers(): number;
179
168
  getInvokeHost(): string;
180
169
  /**
181
170
  * Resolve the effective runtime settings for one service, merging the global
@@ -185,11 +174,15 @@ export declare class ConfigManager {
185
174
  * (true for source, false for artifact).
186
175
  */
187
176
  getRuntimeConfigForService(servicePath: string): ResolvedRuntimeConfig;
188
- getEngineKind(): EngineKind;
189
- isSelfEngine(): boolean;
190
177
  getSelfEngineConfig(): ResolvedSelfEngineConfig;
191
- getAossSidecarConfig(): ResolvedAossSidecarConfig;
178
+ private homeStateDir;
192
179
  getEngineEndpoint(): string;
180
+ /**
181
+ * True when the orchestrator and the engine share one listener — the default,
182
+ * since both ports default to the same value. Give them different values to
183
+ * go back to two listeners.
184
+ */
185
+ isSingleListener(): boolean;
193
186
  getConfigPath(): string;
194
187
  /**
195
188
  * Absolute root of the project this orchestrator serves. Anchored on the
@@ -1 +1 @@
1
- {"version":3,"file":"config-manager.d.ts","sourceRoot":"","sources":["../../../src/server/services/config-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config-manager.d.ts","sourceRoot":"","sources":["../../../src/server/services/config-manager.ts"],"names":[],"mappings":"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"}