local-serverless-stack 0.17.1 → 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 (222) hide show
  1. package/CHANGELOG.md +327 -0
  2. package/README.md +1157 -224
  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 +164 -15
  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 +59 -35
  98. package/dist/server/services/config-manager.d.ts.map +1 -1
  99. package/dist/server/services/config-manager.js +787 -131
  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-C7JlCyW1.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 +12 -12
  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-9Lk0_ZLj.js +0 -1
  200. package/dist/ui/assets/BucketDetailPage-CdLGW5em.js +0 -1
  201. package/dist/ui/assets/BucketsPage-CDP95vp8.js +0 -1
  202. package/dist/ui/assets/DynamoPage-CV7omZpi.js +0 -1
  203. package/dist/ui/assets/DynamoTablePage-C8v42fy7.js +0 -3
  204. package/dist/ui/assets/LambdaDetailPage-DkGxePSD.js +0 -4
  205. package/dist/ui/assets/LambdasPage-Bg7_taxW.js +0 -1
  206. package/dist/ui/assets/OpenSearchCollectionPage-Ci1hHyy2.js +0 -1
  207. package/dist/ui/assets/OpenSearchPage-CBKqZeim.js +0 -1
  208. package/dist/ui/assets/OverviewPage-D8lrE9rQ.js +0 -1
  209. package/dist/ui/assets/QueueDetailPage-D0DSIGZ2.js +0 -1
  210. package/dist/ui/assets/QueuesPage-BXebf6st.js +0 -1
  211. package/dist/ui/assets/SecretsPage-Be2Nw9BM.js +0 -1
  212. package/dist/ui/assets/SecretsPage-D3XYogv-.css +0 -1
  213. package/dist/ui/assets/ServiceDetailPage-DZpczZ-G.js +0 -2
  214. package/dist/ui/assets/ServicesPage-CdzxEqs3.js +0 -2
  215. package/dist/ui/assets/_plugin-vue_export-helper-DlAUqK2U.js +0 -1
  216. package/dist/ui/assets/index-C1Wb35Y8.css +0 -1
  217. package/dist/ui/assets/index-CGpxa55R.js +0 -37
  218. package/packages/serverless-plugin/README.md +0 -115
  219. package/packages/serverless-plugin/dist/index.d.ts +0 -2
  220. package/packages/serverless-plugin/dist/index.d.ts.map +0 -1
  221. package/packages/serverless-plugin/dist/index.js +0 -107
  222. package/packages/serverless-plugin/dist/index.js.map +0 -1
@@ -1,36 +1,185 @@
1
1
  import { Router } from 'express';
2
- import { ConfigManager } from '../services/config-manager.js';
2
+ import { ConfigManager, ConfigValidationError, } from '../services/config-manager.js';
3
+ import { FunctionRegistry } from '../services/function-registry.js';
4
+ import { applyRegionToExplorers } from '../services/explorer-region.js';
3
5
  const router = Router();
4
- // Public-safe LSS configuration snapshot for the UI overview.
5
- // Never expose the LocalStack auth token — only whether it's set.
6
- router.get('/', (_req, res) => {
7
- const cm = ConfigManager.getInstance();
8
- res.json({
6
+ // Per-service packaging blocks may carry secret env VALUES (deploy keys,
7
+ // registry tokens) — expose key names only, mirroring printSummary().
8
+ function redactPackaging(map) {
9
+ return Object.fromEntries(Object.entries(map).map(([service, cfg]) => [
10
+ service,
11
+ {
12
+ packageCommand: cfg.packageCommand,
13
+ packageArgs: cfg.packageArgs,
14
+ packageTimeoutMs: cfg.packageTimeoutMs,
15
+ packageEnvKeys: Object.keys(cfg.packageEnv ?? {}),
16
+ },
17
+ ]));
18
+ }
19
+ // Public-safe LSS configuration snapshot — everything the dashboard shows and
20
+ // edits. Never expose secret VALUES: packageEnv maps collapse to their key
21
+ // names and the secrets seed map collapses to a count.
22
+ function buildConfigSnapshot(cm) {
23
+ const raw = cm.getConfig();
24
+ const selfEngine = cm.getSelfEngineConfig();
25
+ return {
9
26
  serverPort: cm.getServerPort(),
10
- localstack: {
11
- mode: cm.getMode(),
12
- endpoint: cm.getLocalStackEndpoint(),
13
- port: cm.getLocalStackPort(),
14
- edition: cm.getLocalStackEdition(),
15
- version: cm.getLocalStackVersion(),
16
- image: cm.getLocalStackImage(),
17
- hasAuthToken: Boolean(cm.getLocalStackAuthToken()),
27
+ engine: {
28
+ kind: 'self',
29
+ endpoint: cm.getEngineEndpoint(),
30
+ },
31
+ selfEngine: {
32
+ port: selfEngine.port,
33
+ dataDir: selfEngine.dataDir,
34
+ account: selfEngine.account,
35
+ idleUnloadMs: selfEngine.idleUnloadMs,
36
+ memoryBudgetMb: selfEngine.memoryBudgetMb,
37
+ fsync: selfEngine.fsync,
38
+ fallbackEndpoint: selfEngine.fallbackEndpoint,
18
39
  },
19
40
  dynamoProxy: {
20
41
  enabled: cm.isEnableDynamoProxy(),
21
42
  port: cm.getDynamoProxyPort(),
22
43
  },
23
44
  region: cm.getRegion(),
24
- services: cm.getServices(),
25
45
  persistence: cm.isPersistence(),
26
46
  debug: cm.isDebug(),
27
47
  seedsDir: cm.getSeedsDir(),
48
+ stateDir: cm.getStateDir() ?? null,
28
49
  autoPackage: cm.isAutoPackage(),
29
50
  packageCommand: cm.getPackageCommand(),
30
51
  packageTimeoutMs: cm.getPackageTimeoutMs(),
52
+ packageArgs: raw.packageArgs ?? [],
53
+ packageEnvKeys: Object.keys(raw.packageEnv ?? {}),
54
+ servicePackaging: redactPackaging(raw.servicePackaging ?? {}),
55
+ lambdaRuntime: {
56
+ enabled: cm.isLambdaRuntimeEnabled(),
57
+ execution: cm.getLambdaExecutionMode(),
58
+ // Raw tri-state: null = mode-dependent default (source→on, artifact→off).
59
+ watch: raw.lambdaRuntime?.watch ?? null,
60
+ invokePortOffset: cm.getInvokePortOffset(),
61
+ invokeHost: cm.getInvokeHost(),
62
+ // Residency policy: how many worker processes this stack may hold and for
63
+ // how long. Resolved (not raw) because maxWarmWorkers' default is derived
64
+ // from the host's RAM — the number that matters is the effective one.
65
+ lazy: cm.isLambdaRuntimeLazy(),
66
+ idleTimeoutMs: cm.getLambdaIdleTimeoutMs(),
67
+ maxWarmWorkers: cm.getLambdaMaxWarmWorkers(),
68
+ },
69
+ serviceRuntime: raw.serviceRuntime ?? {},
70
+ secretSeedCount: Object.keys(cm.getSecretSeeds()).length,
71
+ // Keys whose file value is masked by an env var right now — the UI flags
72
+ // these fields so an edit that "doesn't stick" is explained.
73
+ envOverrides: cm.getEnvOverriddenKeys(),
31
74
  configPath: cm.getConfigPath(),
75
+ projectRoot: cm.getProjectRoot(),
32
76
  branding: cm.getBranding(),
77
+ };
78
+ }
79
+ router.get('/', (_req, res) => {
80
+ res.json(buildConfigSnapshot(ConfigManager.getInstance()));
81
+ });
82
+ // Persist a partial config patch into the loaded config file (creating
83
+ // lss.config.json in the project root when none is loaded) and hot-reload the
84
+ // in-memory config. The human reviews and commits the file — LSS never
85
+ // touches git. Boot-materialized keys come back in restartRequired.
86
+ router.put('/', (req, res) => {
87
+ const cm = ConfigManager.getInstance();
88
+ try {
89
+ const result = cm.updateConfig(req.body);
90
+ // `region` is lazily consumed, so a patch that changes it takes effect at
91
+ // once — the explorers' default has to follow or they keep answering for
92
+ // the previous region.
93
+ applyRegionToExplorers(cm.getRegion());
94
+ res.json({
95
+ config: buildConfigSnapshot(cm),
96
+ configPath: result.path,
97
+ restartRequired: result.restartRequired,
98
+ envOverridden: result.envOverridden,
99
+ });
100
+ }
101
+ catch (error) {
102
+ if (error instanceof ConfigValidationError) {
103
+ res.status(400).json({ error: error.message, details: error.details });
104
+ return;
105
+ }
106
+ res.status(500).json({ error: error instanceof Error ? error.message : 'Failed to update config' });
107
+ }
108
+ });
109
+ // Re-read the config file from disk after a hand edit, without restarting the
110
+ // orchestrator. Lazily-consumed keys take effect immediately; the rest come
111
+ // back in restartRequired. A file that no longer parses answers 400 and keeps
112
+ // the working in-memory config untouched.
113
+ router.post('/reload', (_req, res) => {
114
+ const cm = ConfigManager.getInstance();
115
+ try {
116
+ const result = cm.reloadFromDisk();
117
+ applyRegionToExplorers(cm.getRegion());
118
+ res.json({
119
+ config: buildConfigSnapshot(cm),
120
+ configPath: result.path,
121
+ restartRequired: result.restartRequired,
122
+ });
123
+ }
124
+ catch (error) {
125
+ if (error instanceof ConfigValidationError) {
126
+ res.status(400).json({ error: error.message, details: error.details });
127
+ return;
128
+ }
129
+ res.status(500).json({ error: error instanceof Error ? error.message : 'Failed to reload config' });
130
+ }
131
+ });
132
+ // Every local port the stack exposes, so "what do I point my SDK/browser at?"
133
+ // has one answer: orchestrator, engine, DynamoDB proxy, plus each registered
134
+ // service's HTTP API and Lambda invoke listeners.
135
+ router.get('/ports', (_req, res) => {
136
+ const cm = ConfigManager.getInstance();
137
+ const ports = [];
138
+ ports.push({
139
+ name: 'Orchestrator',
140
+ kind: 'orchestrator',
141
+ port: cm.getServerPort(),
142
+ url: cm.getOrchestratorUrl(),
143
+ description: 'Dashboard UI + REST API (register, explorers, seeds)',
144
+ });
145
+ const selfEngine = cm.getSelfEngineConfig();
146
+ ports.push({
147
+ name: 'Self engine',
148
+ kind: 'engine',
149
+ port: selfEngine.port,
150
+ url: `http://localhost:${selfEngine.port}`,
151
+ description: 'In-process AWS emulator — point SDK endpoints here',
33
152
  });
153
+ if (cm.isEnableDynamoProxy()) {
154
+ ports.push({
155
+ name: 'DynamoDB proxy',
156
+ kind: 'proxy',
157
+ port: cm.getDynamoProxyPort(),
158
+ url: `http://localhost:${cm.getDynamoProxyPort()}`,
159
+ description: 'Reverse proxy for tools that expect DynamoDB on a fixed port',
160
+ });
161
+ }
162
+ for (const service of FunctionRegistry.getInstance().listServices()) {
163
+ if (service.apiPort) {
164
+ ports.push({
165
+ name: service.name,
166
+ kind: 'service-api',
167
+ port: service.apiPort,
168
+ url: `http://localhost:${service.apiPort}`,
169
+ description: 'HTTP API (API Gateway emulation)',
170
+ });
171
+ }
172
+ if (service.invokePort) {
173
+ ports.push({
174
+ name: service.name,
175
+ kind: 'service-invoke',
176
+ port: service.invokePort,
177
+ url: `http://localhost:${service.invokePort}`,
178
+ description: 'Lambda invoke listener (AWS SDK Invoke)',
179
+ });
180
+ }
181
+ }
182
+ res.json({ ports });
34
183
  });
35
184
  // Branding only — what the UI needs on boot (title, logo, theme colors).
36
185
  router.get('/branding', (_req, res) => {
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/server/routes/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAqB,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,aAAa,EAAqB,MAAM,+BAA+B,CAAC;AAEjF,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC;AAExB,8DAA8D;AAC9D,kEAAkE;AAClE,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAa,EAAE,GAAa,EAAE,EAAE;IAC/C,MAAM,EAAE,GAAG,aAAa,CAAC,WAAW,EAAE,CAAC;IACvC,GAAG,CAAC,IAAI,CAAC;QACP,UAAU,EAAE,EAAE,CAAC,aAAa,EAAE;QAC9B,UAAU,EAAE;YACV,IAAI,EAAE,EAAE,CAAC,OAAO,EAAE;YAClB,QAAQ,EAAE,EAAE,CAAC,qBAAqB,EAAE;YACpC,IAAI,EAAE,EAAE,CAAC,iBAAiB,EAAE;YAC5B,OAAO,EAAE,EAAE,CAAC,oBAAoB,EAAE;YAClC,OAAO,EAAE,EAAE,CAAC,oBAAoB,EAAE;YAClC,KAAK,EAAE,EAAE,CAAC,kBAAkB,EAAE;YAC9B,YAAY,EAAE,OAAO,CAAC,EAAE,CAAC,sBAAsB,EAAE,CAAC;SACnD;QACD,WAAW,EAAE;YACX,OAAO,EAAE,EAAE,CAAC,mBAAmB,EAAE;YACjC,IAAI,EAAE,EAAE,CAAC,kBAAkB,EAAE;SAC9B;QACD,MAAM,EAAE,EAAE,CAAC,SAAS,EAAE;QACtB,QAAQ,EAAE,EAAE,CAAC,WAAW,EAAE;QAC1B,WAAW,EAAE,EAAE,CAAC,aAAa,EAAE;QAC/B,KAAK,EAAE,EAAE,CAAC,OAAO,EAAE;QACnB,QAAQ,EAAE,EAAE,CAAC,WAAW,EAAE;QAC1B,WAAW,EAAE,EAAE,CAAC,aAAa,EAAE;QAC/B,cAAc,EAAE,EAAE,CAAC,iBAAiB,EAAE;QACtC,gBAAgB,EAAE,EAAE,CAAC,mBAAmB,EAAE;QAC1C,UAAU,EAAE,EAAE,CAAC,aAAa,EAAE;QAC9B,QAAQ,EAAE,EAAE,CAAC,WAAW,EAAE;KAC3B,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,yEAAyE;AACzE,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,IAAa,EAAE,GAAa,EAAE,EAAE;IACvD,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;AACtD,CAAC,CAAC,CAAC;AAEH,yEAAyE;AACzE,yEAAyE;AACzE,MAAM,CAAC,GAAG,CAAC,gCAAgC,EAAE,CAAC,GAAY,EAAE,GAAa,EAAE,EAAE;IAC3E,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,KAA0B,CAAC;IACnD,MAAM,IAAI,GAAG,aAAa,CAAC,WAAW,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;IACpE,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,YAAY,IAAI,kBAAkB,EAAE,CAAC,CAAC;QACpE,OAAO;IACT,CAAC;IACD,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACrB,CAAC,CAAC,CAAC;AAEH,OAAO,EAAE,MAAM,IAAI,YAAY,EAAE,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/server/routes/config.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"lambdas.d.ts","sourceRoot":"","sources":["../../../src/server/routes/lambdas.ts"],"names":[],"mappings":"AAIA,QAAA,MAAM,MAAM,4CAAW,CAAC;AAuFxB,OAAO,EAAE,MAAM,IAAI,aAAa,EAAE,CAAC"}
1
+ {"version":3,"file":"lambdas.d.ts","sourceRoot":"","sources":["../../../src/server/routes/lambdas.ts"],"names":[],"mappings":"AAOA,QAAA,MAAM,MAAM,4CAAW,CAAC;AAyJxB,OAAO,EAAE,MAAM,IAAI,aAAa,EAAE,CAAC"}
@@ -1,6 +1,9 @@
1
1
  import { Router } from 'express';
2
+ import os from 'os';
2
3
  import { FunctionRegistry } from '../services/function-registry.js';
3
4
  import { LambdaRuntimeManager } from '../services/lambda-runtime-manager.js';
5
+ import { ConfigManager } from '../services/config-manager.js';
6
+ import { InvocationActivity } from '../services/invocation-activity.js';
4
7
  const router = Router();
5
8
  function describeFunction(ref) {
6
9
  const runtimeManager = LambdaRuntimeManager.getInstance();
@@ -18,6 +21,10 @@ function describeFunction(ref) {
18
21
  triggers: ref.fn.triggers,
19
22
  invokePort: ref.service.invokePort,
20
23
  status: info.status,
24
+ // False while the service's worker has not been forked yet (lazy start or
25
+ // idle unload) — the function is still invocable, the first call just pays
26
+ // a cold start.
27
+ warm: info.warm ?? false,
21
28
  executionMode: info.resolvedMode,
22
29
  invocations: history.length,
23
30
  errors: history.filter(h => !h.ok).length,
@@ -32,6 +39,64 @@ router.get('/', (_req, res) => {
32
39
  return res.json(refs.map(describeFunction));
33
40
  });
34
41
  // Function detail — accepts the short or fully qualified name.
42
+ // What the stack is actually doing right now: which workers are resident, what
43
+ // ran recently, how much of it overlapped, and what that costs the host.
44
+ // Registered BEFORE /:name — the path would otherwise match a function called
45
+ // "activity".
46
+ router.get('/activity', (req, res) => {
47
+ const runtimeManager = LambdaRuntimeManager.getInstance();
48
+ const cm = ConfigManager.getInstance();
49
+ const snapshot = InvocationActivity.getInstance().snapshot({
50
+ windowMs: numeric(req.query.windowMs),
51
+ buckets: numeric(req.query.buckets),
52
+ });
53
+ // One row per registered service: a worker is a whole OS process, so this is
54
+ // the unit that actually costs memory — not the function count.
55
+ const workers = FunctionRegistry.getInstance().listServices().map(service => {
56
+ const info = runtimeManager.getRuntimeInfo(service.name);
57
+ return {
58
+ service: service.name,
59
+ status: info.status,
60
+ warm: info.warm ?? false,
61
+ pid: info.pid,
62
+ startedAt: info.startedAt,
63
+ lastInvokedAt: info.lastInvokedAt,
64
+ invocations: info.invocations,
65
+ errors: info.errors,
66
+ functions: service.functions.length,
67
+ executionMode: info.resolvedMode,
68
+ };
69
+ });
70
+ const memory = process.memoryUsage();
71
+ return res.json({
72
+ ...snapshot,
73
+ workers,
74
+ residency: {
75
+ // The policy that bounds the whole thing, so the numbers above can be
76
+ // read against their ceiling instead of in the abstract.
77
+ warm: workers.filter(w => w.warm).length,
78
+ maxWarmWorkers: cm.getLambdaMaxWarmWorkers(),
79
+ lazy: cm.isLambdaRuntimeLazy(),
80
+ idleTimeoutMs: cm.getLambdaIdleTimeoutMs(),
81
+ },
82
+ host: {
83
+ // Resident set of the orchestrator process — with in-process emulation
84
+ // and forked workers, this plus the workers IS the stack's footprint.
85
+ rssBytes: memory.rss,
86
+ heapUsedBytes: memory.heapUsed,
87
+ totalMemBytes: os.totalmem(),
88
+ freeMemBytes: os.freemem(),
89
+ cpuCount: os.cpus().length,
90
+ // 1-minute load average; 0 on platforms that do not report it.
91
+ loadAvg1m: os.loadavg()[0],
92
+ uptimeMs: Math.round(process.uptime() * 1000),
93
+ },
94
+ });
95
+ });
96
+ function numeric(value) {
97
+ const parsed = typeof value === 'string' ? Number.parseInt(value, 10) : Number.NaN;
98
+ return Number.isFinite(parsed) ? parsed : undefined;
99
+ }
35
100
  router.get('/:name', (req, res) => {
36
101
  const ref = FunctionRegistry.getInstance().resolve(String(req.params.name));
37
102
  if (!ref) {
@@ -1 +1 @@
1
- {"version":3,"file":"lambdas.js","sourceRoot":"","sources":["../../../src/server/routes/lambdas.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lambdas.js","sourceRoot":"","sources":["../../../src/server/routes/lambdas.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"services.d.ts","sourceRoot":"","sources":["../../../src/server/routes/services.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAOhE,QAAA,MAAM,MAAM,4CAAW,CAAC;AAIxB,QAAA,MAAM,cAAc,gBAAuB,CAAC;AAqV5C,OAAO,EAAE,MAAM,IAAI,cAAc,EAAE,cAAc,EAAE,CAAC"}
1
+ {"version":3,"file":"services.d.ts","sourceRoot":"","sources":["../../../src/server/routes/services.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAQhE,QAAA,MAAM,MAAM,4CAAW,CAAC;AAIxB,QAAA,MAAM,cAAc,gBAAuB,CAAC;AAmlB5C,OAAO,EAAE,MAAM,IAAI,cAAc,EAAE,cAAc,EAAE,CAAC"}