@reventlessdev/reventless-aws 3.0.0-alpha.221 → 3.0.0-alpha.222

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 CHANGED
@@ -3,6 +3,22 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # 3.0.0-alpha.222 (2026-07-22)
7
+
8
+ * refactor!: retire the stale "core" vocabulary for platform things ([34e7480](https://github.com/ReventlessDev/reventless-core/commit/34e7480992bd58906a250b0a1ce6ff2c5ba45260))
9
+
10
+ ### BREAKING CHANGES
11
+
12
+ * the built-in extension point is renamed Core.Plugin ->
13
+ Platform.Plugin. This replaces the CorePluginExtPointCmdTopic SQS queue
14
+ with PlatformPluginExtPointCmdTopic (a replacement, not an update) and
15
+ breaks every already-deployed plugin's connection until redeployed.
16
+ Wipe the alpha stack and redeploy fresh rather than migrating.
17
+
18
+ Build clean; 1349 tests green (interop 50, core 518, local 501, aws 280).
19
+
20
+
21
+
6
22
  # 3.0.0-alpha.221 (2026-07-22)
7
23
 
8
24
  ### Features
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@reventlessdev/reventless-aws",
3
- "version": "3.0.0-alpha.221",
3
+ "version": "3.0.0-alpha.222",
4
4
  "description": "AWS adapters for Reventless",
5
5
  "license": "Apache-2.0",
6
6
  "dependencies": {
@@ -8,17 +8,17 @@
8
8
  "@aws-sdk/client-cloudfront": "3.970.0",
9
9
  "sury": "11.0.0-alpha.4",
10
10
  "uuid": "^13.0.0",
11
- "@reventlessdev/rescript-effect": "0.1.0-alpha.30",
12
11
  "@reventlessdev/rescript-aws-sdk": "2.2.0-alpha.24",
13
- "@reventlessdev/rescript-jest": "1.0.0-alpha.9",
14
12
  "@reventlessdev/rescript-pulumi-aws": "2.4.0-alpha.57",
13
+ "@reventlessdev/rescript-effect": "0.1.0-alpha.30",
14
+ "@reventlessdev/rescript-jest": "1.0.0-alpha.9",
15
15
  "@reventlessdev/rescript-pulumi-pulumi": "2.3.0-alpha.17",
16
- "@reventlessdev/reventless-core": "3.0.0-alpha.175",
17
- "@reventlessdev/reventless-infra": "3.0.0-alpha.103",
18
- "@reventlessdev/reventless-postgres": "3.0.0-alpha.39",
19
- "@reventlessdev/reventless-spec": "3.0.0-alpha.80",
20
16
  "@reventlessdev/rescript-uuid": "1.1.0-alpha.17",
21
- "@reventlessdev/reventless-interop": "3.0.0-alpha.28"
17
+ "@reventlessdev/reventless-core": "3.0.0-alpha.176",
18
+ "@reventlessdev/reventless-postgres": "3.0.0-alpha.40",
19
+ "@reventlessdev/reventless-interop": "3.0.0-alpha.29",
20
+ "@reventlessdev/reventless-infra": "3.0.0-alpha.104",
21
+ "@reventlessdev/reventless-spec": "3.0.0-alpha.80"
22
22
  },
23
23
  "devDependencies": {
24
24
  "rescript": "12.3.0",
package/src/Platform.res CHANGED
@@ -234,7 +234,7 @@ module MakeWithConfig = (
234
234
 
235
235
  // Populate apiConfig with both domain and platform API references.
236
236
  // In platform/monolithic mode, platformApi starts as domainApi and is updated
237
- // by deployPlatform/makePlatform once the core API resource is created (split mode).
237
+ // by deployPlatform/makePlatform once the platform API resource is created (split mode).
238
238
  let () = apiConfigRef := Some({
239
239
  domainApi: domainApi,
240
240
  domainApiRole: domainApiRole,
@@ -980,7 +980,7 @@ module MakeWithConfig = (
980
980
  }
981
981
  }
982
982
 
983
- // In split mode, create a dedicated core AppSync API and push the core schema.
983
+ // In split mode, create a dedicated platform AppSync API and push the platform schema.
984
984
  // In unified mode, makePlatform is a no-op (schema stitching handled by events).
985
985
  let makePlatform = (~version, ~plugins: array<module(PluginMaker)>) => {
986
986
  log.info(~comp="Platform", `v${version}`)
@@ -102,11 +102,11 @@ let generateConfig = (
102
102
  {serverName, serverVersion, tools, resources, eventHistoryResources}
103
103
  }
104
104
 
105
- /** Generate the core-only MCP config for split mode.
106
- Contains only core administrative tools (Plugin_Activate, Plugin_Deactivate, Clone)
107
- and core resources (Plugin, Plugins). No plugin-contributed entries.
105
+ /** Generate the platform-only MCP config for split mode.
106
+ Contains only platform administrative tools (Plugin_Activate, Plugin_Deactivate, Clone)
107
+ and platform resources (Plugin, Plugins). No plugin-contributed entries.
108
108
 
109
- The commandTopicArns and queryDbTableNames must map core field names to their
109
+ The commandTopicArns and queryDbTableNames must map platform field names to their
110
110
  corresponding AWS resource ARNs/names. When Lambda Function URL deployment is
111
111
  available (Step 13), these will be wired from Pulumi stack outputs. */
112
112
  let generateAdminConfig = (
@@ -6,7 +6,7 @@
6
6
  //
7
7
  // {
8
8
  // "queueUrl": string // SQS URL of the EventCollector this Lambda drains
9
- // "pluginExtensionPointCmdTopicUrl":string // SQS URL of CorePluginExtPoint cmd topic (admin's Plugin EP)
9
+ // "pluginExtensionPointCmdTopicUrl":string // SQS URL of PlatformPluginExtPoint cmd topic (admin's Plugin EP)
10
10
  // "eventTopicArn": string // SNS ARN the EP's outgoing events publish to ("NOT_AVAILABLE" if none)
11
11
  // "pluginReadModelTableName": string // DynamoDB table for Plugin RM (used by QueryEngine.scan)
12
12
  // "pluginSchemaPersistenceTableName":string // DynamoDB table holding deploy-time SDL fragments
@@ -30,7 +30,7 @@
30
30
  // "connectExtension": { // The auto-included PluginConnectExtension entry; null for admin Lambda
31
31
  // "specModule": string,
32
32
  // "mappingsModule": string,
33
- // "extensionPointName": string // service key for incomingConnectExtensionEventHandlers (e.g. "Core.Plugin")
33
+ // "extensionPointName": string // service key for incomingConnectExtensionEventHandlers (e.g. "Platform.Plugin")
34
34
  // } | null,
35
35
  // "extensions": [ // User-declared extensions — wired into incoming/outgoing dicts at cold start
36
36
  // {
@@ -14,7 +14,7 @@ let make: ReventlessCore.Heartbeat_Adapter.runnerMaker<runtimeParts> = (
14
14
  EventRule.make(
15
15
  ~name=Pulumi.Pulumi.getStackName() ++ ("-" ++ name),
16
16
  ~args={
17
- description: "Send a heartbeat to the Core Plugin ExtensionPoint"->Pulumi.Input.make,
17
+ description: "Send a heartbeat to the Platform Plugin ExtensionPoint"->Pulumi.Input.make,
18
18
  scheduleExpression: EventRule.ScheduleExpression.every(timeout->Minutes),
19
19
  tags: AWS.Tags.make(
20
20
  ~name=Pulumi.Pulumi.getStackName() ++ ("-" ++ name),
@@ -29,14 +29,14 @@ let make: ReventlessCore.Heartbeat_Adapter.runnerMaker<runtimeParts> = (
29
29
 
30
30
  let lambda = runtime.parts.lambda
31
31
  let lambdaRole = runtime.parts.lambdaRole
32
- let coreSqsQueue = remoteChannel.resources->Util_SQS.findResolvedResource
32
+ let platformSqsQueue = remoteChannel.resources->Util_SQS.findResolvedResource
33
33
 
34
- // Grant sqs:SendMessage on the Core Plugin ExtensionPoint command topic at
35
- // TOP LEVEL. Previously this RolePolicy was created inside the
34
+ // Grant sqs:SendMessage on the Platform Plugin ExtensionPoint command topic
35
+ // at TOP LEVEL. Previously this RolePolicy was created inside the
36
36
  // `Pulumi.Output.apply` below — and a resource created inside an apply
37
37
  // callback does not reliably register with the engine, which intermittently
38
- // left the heartbeat Lambda without this grant (IAM AccessDenied:
39
- // `sqs:sendmessage on CorePluginExtPointCmdTopic`). `coreSqsQueue.urn` is an
38
+ // left the heartbeat Lambda without this grant (IAM AccessDenied on the
39
+ // extension point's command-topic queue). `platformSqsQueue.urn` is an
40
40
  // already-resolved ARN string from the remote channel and `lambdaRole.id` an
41
41
  // Output, so neither needs an apply. Mirrors the EC `pta` grant fix — see
42
42
  // docs/analysis/ec-publish-to-aggregates-grant-broken.md.
@@ -48,7 +48,7 @@ let make: ReventlessCore.Heartbeat_Adapter.runnerMaker<runtimeParts> = (
48
48
  sid: "AllowLambdaToSendSQS",
49
49
  effect: Allow,
50
50
  actions: Action("sqs:SendMessage"),
51
- resources: Resource(coreSqsQueue.urn),
51
+ resources: Resource(platformSqsQueue.urn),
52
52
  },
53
53
  ],
54
54
  )
@@ -20,7 +20,7 @@ import * as Cloudwatch_EventTarget$PulumiAws from "@reventlessdev/rescript-pulum
20
20
  function make(name, remoteChannel, timeout, runtime, opts) {
21
21
  let opts$1 = Util_Pulumi$ReventlessCore.ComponentResourceOptions.toCustomResourceOptions(opts);
22
22
  let cloudwatchEventRule = new (Aws.cloudwatch.EventRule)(Pulumi.getStack() + ("-" + name), {
23
- description: "Send a heartbeat to the Core Plugin ExtensionPoint",
23
+ description: "Send a heartbeat to the Platform Plugin ExtensionPoint",
24
24
  scheduleExpression: Primitive_option.some(Cloudwatch_EventRule$PulumiAws.ScheduleExpression.every({
25
25
  TAG: "Minutes",
26
26
  _0: timeout
@@ -29,12 +29,12 @@ function make(name, remoteChannel, timeout, runtime, opts) {
29
29
  }, opts$1);
30
30
  let lambda = runtime.parts.lambda;
31
31
  let lambdaRole = runtime.parts.lambdaRole;
32
- let coreSqsQueue = Util_SQS$ReventlessAws.findResolvedResource(remoteChannel.resources);
32
+ let platformSqsQueue = Util_SQS$ReventlessAws.findResolvedResource(remoteChannel.resources);
33
33
  let heartbeatLambdaSendMessagePolicyDocument = PolicyDocument$PulumiAws.make(undefined, undefined, [{
34
34
  Sid: "AllowLambdaToSendSQS",
35
35
  Effect: "Allow",
36
36
  Action: "sqs:SendMessage",
37
- Resource: coreSqsQueue.urn
37
+ Resource: platformSqsQueue.urn
38
38
  }]);
39
39
  new (Aws.iam.RolePolicy)(name + "RolePolicy", {
40
40
  policy: PolicyDocument$PulumiAws.mergePolicyDocuments(name + "Policy", [
@@ -608,7 +608,7 @@ module Make = (
608
608
 
609
609
  // Plugin EC sqs:SendMessage grants on the aggregate / StateChangeSlice
610
610
  // command-topic queues that user extensions publish to. The default
611
- // AllowLambdaSendSQS only covers CorePluginExtPointCmdTopic (added because
611
+ // AllowLambdaSendSQS only covers PlatformPluginExtPointCmdTopic (added because
612
612
  // the auto-included Connect extension publishes there), so without this
613
613
  // grant every cross-plugin extension's first command publish fails with
614
614
  // IAM AccessDenied (e.g. Catalog's Orders_Extension → RecordProductDemand).