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.
- package/CHANGELOG.md +327 -0
- package/README.md +1155 -221
- package/assets/icon.svg +37 -0
- package/assets/logo.svg +38 -0
- package/bin/cli.js +519 -228
- package/bin/i18n.js +525 -0
- package/dist/client/config-discovery.d.ts.map +1 -1
- package/dist/client/config-discovery.js +2 -1
- package/dist/client/config-discovery.js.map +1 -1
- package/dist/client/http.d.ts +7 -0
- package/dist/client/http.d.ts.map +1 -1
- package/dist/client/http.js +3 -2
- package/dist/client/http.js.map +1 -1
- package/dist/client/lifecycle.d.ts +1 -4
- package/dist/client/lifecycle.d.ts.map +1 -1
- package/dist/client/lifecycle.js +2 -8
- package/dist/client/lifecycle.js.map +1 -1
- package/dist/client/namespaces/health.d.ts +1 -1
- package/dist/client/namespaces/health.d.ts.map +1 -1
- package/dist/client/namespaces/queues.d.ts.map +1 -1
- package/dist/client/namespaces/queues.js +9 -0
- package/dist/client/namespaces/queues.js.map +1 -1
- package/dist/client/namespaces/seeds.d.ts +1 -1
- package/dist/client/namespaces/services.d.ts +34 -0
- package/dist/client/namespaces/services.d.ts.map +1 -1
- package/dist/client/namespaces/services.js +3 -0
- package/dist/client/namespaces/services.js.map +1 -1
- package/dist/client/types.d.ts +17 -5
- package/dist/client/types.d.ts.map +1 -1
- package/dist/mcp/http.d.ts +15 -0
- package/dist/mcp/http.d.ts.map +1 -0
- package/dist/mcp/http.js +86 -0
- package/dist/mcp/http.js.map +1 -0
- package/dist/mcp/protocol.d.ts +36 -0
- package/dist/mcp/protocol.d.ts.map +1 -0
- package/dist/mcp/protocol.js +96 -0
- package/dist/mcp/protocol.js.map +1 -0
- package/dist/mcp/server.d.ts +7 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +41 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/tools.d.ts +18 -0
- package/dist/mcp/tools.d.ts.map +1 -0
- package/dist/mcp/tools.js +323 -0
- package/dist/mcp/tools.js.map +1 -0
- package/dist/server/dev/dynamo-proxy.d.ts.map +1 -1
- package/dist/server/dev/dynamo-proxy.js +16 -2
- package/dist/server/dev/dynamo-proxy.js.map +1 -1
- package/dist/server/engine/backends/self-backend.d.ts +11 -2
- package/dist/server/engine/backends/self-backend.d.ts.map +1 -1
- package/dist/server/engine/backends/self-backend.js +42 -1
- package/dist/server/engine/backends/self-backend.js.map +1 -1
- package/dist/server/engine/dispatch/dispatcher.js +2 -2
- package/dist/server/engine/dispatch/dispatcher.js.map +1 -1
- package/dist/server/engine/engine-manager.d.ts +6 -1
- package/dist/server/engine/engine-manager.d.ts.map +1 -1
- package/dist/server/engine/engine-manager.js +30 -27
- package/dist/server/engine/engine-manager.js.map +1 -1
- package/dist/server/engine/http/errors.js +1 -1
- package/dist/server/engine/http/errors.js.map +1 -1
- package/dist/server/engine/http/is-aws-request.d.ts +8 -0
- package/dist/server/engine/http/is-aws-request.d.ts.map +1 -0
- package/dist/server/engine/http/is-aws-request.js +53 -0
- package/dist/server/engine/http/is-aws-request.js.map +1 -0
- package/dist/server/engine/http/router.d.ts.map +1 -1
- package/dist/server/engine/http/router.js +7 -1
- package/dist/server/engine/http/router.js.map +1 -1
- package/dist/server/engine/store/engine-store.d.ts +1 -0
- package/dist/server/engine/store/engine-store.d.ts.map +1 -1
- package/dist/server/engine/store/engine-store.js +2 -1
- package/dist/server/engine/store/engine-store.js.map +1 -1
- package/dist/server/engine/store/memory-store.d.ts +16 -0
- package/dist/server/engine/store/memory-store.d.ts.map +1 -0
- package/dist/server/engine/store/memory-store.js +167 -0
- package/dist/server/engine/store/memory-store.js.map +1 -0
- package/dist/server/engine/store/wal.d.ts +3 -0
- package/dist/server/engine/store/wal.d.ts.map +1 -1
- package/dist/server/engine/store/wal.js +35 -1
- package/dist/server/engine/store/wal.js.map +1 -1
- package/dist/server/index.js +159 -44
- package/dist/server/index.js.map +1 -1
- package/dist/server/routes/config.d.ts.map +1 -1
- package/dist/server/routes/config.js +31 -52
- package/dist/server/routes/config.js.map +1 -1
- package/dist/server/routes/lambdas.d.ts.map +1 -1
- package/dist/server/routes/lambdas.js +77 -0
- package/dist/server/routes/lambdas.js.map +1 -1
- package/dist/server/routes/services.d.ts.map +1 -1
- package/dist/server/routes/services.js +288 -24
- package/dist/server/routes/services.js.map +1 -1
- package/dist/server/runtime/runtime-worker.js +7 -0
- package/dist/server/runtime/runtime-worker.js.map +1 -1
- package/dist/server/services/bind-host.d.ts +30 -0
- package/dist/server/services/bind-host.d.ts.map +1 -0
- package/dist/server/services/bind-host.js +182 -0
- package/dist/server/services/bind-host.js.map +1 -0
- package/dist/server/services/cache-manager.d.ts +7 -1
- package/dist/server/services/cache-manager.d.ts.map +1 -1
- package/dist/server/services/cache-manager.js +4 -14
- package/dist/server/services/cache-manager.js.map +1 -1
- package/dist/server/services/cloudformation-parser.js +3 -3
- package/dist/server/services/cloudformation-parser.js.map +1 -1
- package/dist/server/services/config-manager.d.ts +53 -35
- package/dist/server/services/config-manager.d.ts.map +1 -1
- package/dist/server/services/config-manager.js +600 -185
- package/dist/server/services/config-manager.js.map +1 -1
- package/dist/server/services/dynamo-explorer.d.ts +1 -0
- package/dist/server/services/dynamo-explorer.d.ts.map +1 -1
- package/dist/server/services/dynamo-explorer.js +28 -6
- package/dist/server/services/dynamo-explorer.js.map +1 -1
- package/dist/server/services/explorer-region.d.ts +2 -0
- package/dist/server/services/explorer-region.d.ts.map +1 -0
- package/dist/server/services/explorer-region.js +23 -0
- package/dist/server/services/explorer-region.js.map +1 -0
- package/dist/server/services/gateway-manager.d.ts.map +1 -1
- package/dist/server/services/gateway-manager.js +18 -5
- package/dist/server/services/gateway-manager.js.map +1 -1
- package/dist/server/services/invocation-activity.d.ts +45 -0
- package/dist/server/services/invocation-activity.d.ts.map +1 -0
- package/dist/server/services/invocation-activity.js +102 -0
- package/dist/server/services/invocation-activity.js.map +1 -0
- package/dist/server/services/lambda-runtime-manager.d.ts +8 -1
- package/dist/server/services/lambda-runtime-manager.d.ts.map +1 -1
- package/dist/server/services/lambda-runtime-manager.js +131 -11
- package/dist/server/services/lambda-runtime-manager.js.map +1 -1
- package/dist/server/services/opensearch-explorer.d.ts.map +1 -1
- package/dist/server/services/opensearch-explorer.js +14 -10
- package/dist/server/services/opensearch-explorer.js.map +1 -1
- package/dist/server/services/project-scope.d.ts +2 -0
- package/dist/server/services/project-scope.d.ts.map +1 -0
- package/dist/server/services/project-scope.js +23 -0
- package/dist/server/services/project-scope.js.map +1 -0
- package/dist/server/services/queue-inspector.d.ts.map +1 -1
- package/dist/server/services/queue-inspector.js +15 -6
- package/dist/server/services/queue-inspector.js.map +1 -1
- package/dist/server/services/resource-provisioner.d.ts +19 -3
- package/dist/server/services/resource-provisioner.d.ts.map +1 -1
- package/dist/server/services/resource-provisioner.js +153 -26
- package/dist/server/services/resource-provisioner.js.map +1 -1
- package/dist/server/services/s3-explorer.js +4 -4
- package/dist/server/services/s3-explorer.js.map +1 -1
- package/dist/server/services/secrets-explorer.d.ts.map +1 -1
- package/dist/server/services/secrets-explorer.js +10 -3
- package/dist/server/services/secrets-explorer.js.map +1 -1
- package/dist/server/services/seed-manager.d.ts.map +1 -1
- package/dist/server/services/seed-manager.js +28 -14
- package/dist/server/services/seed-manager.js.map +1 -1
- package/dist/server/services/serverless-state-parser.d.ts +10 -0
- package/dist/server/services/serverless-state-parser.d.ts.map +1 -1
- package/dist/server/services/serverless-state-parser.js +20 -1
- package/dist/server/services/serverless-state-parser.js.map +1 -1
- package/dist/server/services/service-registrar.d.ts +13 -1
- package/dist/server/services/service-registrar.d.ts.map +1 -1
- package/dist/server/services/service-registrar.js +80 -16
- package/dist/server/services/service-registrar.js.map +1 -1
- package/dist/server/services/service-scanner.d.ts +25 -0
- package/dist/server/services/service-scanner.d.ts.map +1 -0
- package/dist/server/services/service-scanner.js +219 -0
- package/dist/server/services/service-scanner.js.map +1 -0
- package/dist/server/services/source-watcher.d.ts.map +1 -1
- package/dist/server/services/source-watcher.js +31 -6
- package/dist/server/services/source-watcher.js.map +1 -1
- package/dist/ui/assets/ApisPage-CTOcNna-.js +1 -0
- package/dist/ui/assets/BucketDetailPage-BXW8-FrE.js +1 -0
- package/dist/ui/assets/BucketsPage-DY_ITepb.js +1 -0
- package/dist/ui/assets/DynamoPage-BnFFKnIU.js +1 -0
- package/dist/ui/assets/DynamoTablePage-BLCuyJHU.js +3 -0
- package/dist/ui/assets/LambdaDetailPage-D4rZNLRT.js +4 -0
- package/dist/ui/assets/LambdasPage-Bg-MWFBb.js +1 -0
- package/dist/ui/assets/OnboardingPage-nnl313Fm.js +1 -0
- package/dist/ui/assets/OpenSearchCollectionPage-Dn15lH_F.js +1 -0
- package/dist/ui/assets/OpenSearchPage-CgD5isok.js +1 -0
- package/dist/ui/assets/{OverviewPage-DS6XJ7kG.css → OverviewPage-CSWY71vZ.css} +1 -1
- package/dist/ui/assets/OverviewPage-m5sUr8IN.js +1 -0
- package/dist/ui/assets/QueueDetailPage-Ch_FDDoN.js +1 -0
- package/dist/ui/assets/QueuesPage-C_yDuGDu.js +1 -0
- package/dist/ui/assets/SecretsPage-BSGMSoqy.js +1 -0
- package/dist/ui/assets/ServiceDetailPage-6KyohyjI.js +2 -0
- package/dist/ui/assets/ServicesPage-BbSetOMo.js +2 -0
- package/dist/ui/assets/SettingsPage-BgF1jFr6.js +1 -0
- package/dist/ui/assets/engine-D0mFFNbL.js +1 -0
- package/dist/ui/assets/index-D627ZyYU.css +1 -0
- package/dist/ui/assets/index-DuSPnI19.js +37 -0
- package/dist/ui/assets/onboarding-DQmlvyWU.js +1 -0
- package/dist/ui/assets/resourceIcons-baecADXA.js +1 -0
- package/dist/ui/assets/triggerIcons-DIPWQkJ3.js +1 -0
- package/dist/ui/favicon.svg +37 -0
- package/dist/ui/index.html +5 -3
- package/package.json +11 -11
- package/dist/server/engine/aoss-sidecar.d.ts +0 -13
- package/dist/server/engine/aoss-sidecar.d.ts.map +0 -1
- package/dist/server/engine/aoss-sidecar.js +0 -93
- package/dist/server/engine/aoss-sidecar.js.map +0 -1
- package/dist/server/engine/backends/localstack-backend.d.ts +0 -25
- package/dist/server/engine/backends/localstack-backend.d.ts.map +0 -1
- package/dist/server/engine/backends/localstack-backend.js +0 -199
- package/dist/server/engine/backends/localstack-backend.js.map +0 -1
- package/dist/server/engine/engine-backend.d.ts +0 -17
- package/dist/server/engine/engine-backend.d.ts.map +0 -1
- package/dist/server/engine/engine-backend.js +0 -7
- package/dist/server/engine/engine-backend.js.map +0 -1
- package/dist/server/services/localstack-manager.d.ts +0 -17
- package/dist/server/services/localstack-manager.d.ts.map +0 -1
- package/dist/server/services/localstack-manager.js +0 -31
- package/dist/server/services/localstack-manager.js.map +0 -1
- package/dist/ui/assets/ApisPage-CXYcWDhm.js +0 -1
- package/dist/ui/assets/BucketDetailPage-BwS2--Pe.js +0 -1
- package/dist/ui/assets/BucketsPage-khuiYc9C.js +0 -1
- package/dist/ui/assets/DynamoPage-aYo0QC0N.js +0 -1
- package/dist/ui/assets/DynamoTablePage-rFuV2pgd.js +0 -3
- package/dist/ui/assets/LambdaDetailPage-CJmu8M_N.js +0 -4
- package/dist/ui/assets/LambdasPage-DniNyKMe.js +0 -1
- package/dist/ui/assets/OpenSearchCollectionPage-BBwjgbB9.js +0 -1
- package/dist/ui/assets/OpenSearchPage-D5RxJGRo.js +0 -1
- package/dist/ui/assets/OverviewPage-Cyt1Xdp8.js +0 -1
- package/dist/ui/assets/QueueDetailPage-3FPsowIp.js +0 -1
- package/dist/ui/assets/QueuesPage-CUoDDgHr.js +0 -1
- package/dist/ui/assets/SecretsPage-B_mTnUf3.js +0 -1
- package/dist/ui/assets/ServiceDetailPage-BcdSjA6e.js +0 -2
- package/dist/ui/assets/ServicesPage-CU6fb3f8.js +0 -2
- package/dist/ui/assets/SettingsPage-BG8cYxgC.js +0 -1
- package/dist/ui/assets/index-BxwA-UT0.css +0 -1
- package/dist/ui/assets/index-DGsXIPJ-.js +0 -37
- package/packages/serverless-plugin/README.md +0 -115
- package/packages/serverless-plugin/dist/index.d.ts +0 -2
- package/packages/serverless-plugin/dist/index.d.ts.map +0 -1
- package/packages/serverless-plugin/dist/index.js +0 -107
- 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":"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"}
|
|
@@ -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;
|
|
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
|
-
|
|
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
|
-
|
|
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;
|
|
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
|
|
1
|
+
import http from 'http';
|
|
2
2
|
import { type ResolvedSelfEngineConfig } from '../../services/config-manager.js';
|
|
3
|
-
export declare class SelfEngineBackend
|
|
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":"
|
|
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
|
-
|
|
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":"AAAA,wEAAwE;AACxE,yEAAyE;AACzE,8EAA8E;AAC9E,8EAA8E;AAC9E,4DAA4D;AAE5D,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;
|
|
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 (
|
|
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 (
|
|
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 => {
|