@twin.org/node 0.0.3-next.40 → 0.0.3-next.41

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.
@@ -218,6 +218,12 @@
218
218
  "jsonHelper": {
219
219
  "failedPatch": "Failed to patch the JSON object, patch index \"{index}\" failed"
220
220
  },
221
+ "mutex": {
222
+ "lockNotFound": "The key \"{key}\" has no active lock",
223
+ "lockAlreadyReleased": "The key \"{key}\" is not currently locked",
224
+ "lockTimeout": "Failed to acquire lock for key \"{key}\" within the timeout of {timeout} milliseconds",
225
+ "bufferFetchFailed": "Failed to retrieve shared buffer for key \"{key}\" from the main thread"
226
+ },
221
227
  "fetchHelper": {
222
228
  "decodingJSON": "Decoding JSON failed for route \"{url}\"",
223
229
  "failureStatusText": "The request to the API failed: \"{statusText}\"",
@@ -589,8 +595,9 @@
589
595
  "agreementNotMatchingOffer": "Agreement \"{agreementId}\" does not match any Catalog Offer for dataset {datasetId}. Available Offers: {availableOffers}",
590
596
  "organizationContextMissing": "Organization context is missing. Cannot verify Agreement authorization for consumerPid: {consumerPid}",
591
597
  "organizationContextMissingProvider": "Organization context is missing. Cannot verify Agreement authorization for providerPid: {providerPid}",
592
- "agreementAssignerMismatch": "Agreement assigner does not match current organization. Agreement: {agreementId}, consumerPid: {consumerPid}, expected: {expectedOrgId}, actual: {actualAssigner}",
593
- "agreementAssignerMismatchProvider": "Agreement assigner does not match current organization. Agreement: {agreementId}, providerPid: {providerPid}, expected: {expectedOrgId}, actual: {actualAssigner}",
598
+ "agreementAssignerMismatch": "Agreement assigner does not match current caller identity. Agreement: {agreementId}, consumerPid: {consumerPid}, expected: {expectedComposite}, actual: {actualAssigner}",
599
+ "agreementAssignerMismatchProvider": "Agreement assigner does not match current caller identity. Agreement: {agreementId}, providerPid: {providerPid}, expected: {expectedComposite}, actual: {actualAssigner}",
600
+ "invalidCompositeIdentifier": "Composite tenant identifier is not in a recognised shape (expected `nodeDid` or `nodeDid:tenantIdHash`, where `nodeDid` starts with `did:`). Got: \"{composite}\"",
594
601
  "agreementAssigneeMismatch": "Agreement assignee does not match expected consumer identity. Agreement: {agreementId}, providerPid: {providerPid}, expected: {expectedConsumerIdentity}, actual: {actualAssignee}",
595
602
  "negotiationInitiationFailed": "Failed to initiate contract negotiation",
596
603
  "datasetNotFoundInCatalog": "Dataset/Offer \"{offerId}\" not found in Federated Catalogue. Cannot initiate negotiation for non-existent offer.",
@@ -607,11 +614,15 @@
607
614
  "callerNotAuthorizedAsProvider": "The caller's verified identity does not match the provider for this transfer process",
608
615
  "callerNotAuthorizedForTransfer": "The caller's verified identity does not match the consumer or provider for this transfer process",
609
616
  "multipleAssignersNotSupported": "Multiple assigners found in agreement, which is not supported. Only single assigner agreements are supported.",
617
+ "invalidPushDataAddress": "PUSH transfer cannot start: consumer dataAddress is missing endpoint or endpointType (consumerPid: {consumerPid})",
618
+ "pushTransferDataPathNotConfigured": "PUSH transfer cannot start: dataPlanePath is not configured (consumerPid: {consumerPid})",
619
+ "dataPlaneNotRegistered": "Push-mode transfer requires the data plane component to be registered (factory key: \"dataspace-data-plane\"). This deployment was configured without a data plane — register one to enable push, or use pull-mode transfers only.",
610
620
  "datasetPublishFailed": "Failed to publish dataset {datasetRecordId} for app {appId} (tenant: {tenantId})",
611
621
  "datasetNodeContextRequired": "A node context is required to register a dataset.",
612
622
  "datasetAlreadyExists": "A dataset with id \"{id}\" already exists.",
613
623
  "datasetNotFound": "Dataset not found",
614
- "datasetWrongTenant": "The calling tenant does not own this dataset."
624
+ "datasetWrongTenant": "The calling tenant does not own this dataset.",
625
+ "transferWrongTenant": "The calling tenant does not own this transfer."
615
626
  },
616
627
  "dataspaceControlPlanePolicyRequester": {},
617
628
  "odrlPolicyHelper": {
@@ -637,10 +648,17 @@
637
648
  "transferProcessNotFound": "Transfer Process not found for consumerPid \"{notFoundId}\"",
638
649
  "transferNotInStartedState": "Transfer Process is not in STARTED state. Current state: \"{currentState}\"",
639
650
  "transferMissingDatasetId": "Transfer Process is missing datasetId",
651
+ "transferMissingDataAddress": "Transfer Process is missing a valid push dataAddress endpoint (consumerPid: {consumerPid})",
652
+ "pushSubscriptionMissingTenantToken": "Push subscription setup rejected: consumer endpoint does not carry an `x-enc-tenant-token` query parameter (consumerPid: {consumerPid}, endpoint: {endpoint}). On multi-tenant publishers the consumer must bake its tenant token before sending the dataAddress.",
653
+ "pushSubscriptionStorageNotRegistered": "Push-mode transfer requires push-subscription storage to be registered (entity-storage key: \"push-subscription\"). This deployment was configured without it — register the storage to enable push, or use pull-mode transfers only.",
640
654
  "schemaNotFound": "Schema \"{schemaId}\" not found",
641
655
  "cleanupFailed": "Error occurred during cleanup of activity logs",
642
656
  "invalidProcessingGroupId": "Invalid processing group id \"{processingGroupId}\" specified in activity query",
643
- "missingHandleActivity": "Handler App \"{dataspaceAppId}\" does not export a \"handleActivity\" function"
657
+ "missingHandleActivity": "Handler App \"{dataspaceAppId}\" does not export a \"handleActivity\" function",
658
+ "pushSubscriptionNotFound": "Push subscription not found for consumerPid \"{notFoundId}\"",
659
+ "pushActivityNotAuthorized": "Unauthorized push activity — no matching STARTED transfer found for the activity generator",
660
+ "processOutboxActivityMultipleTo": "processOutboxActivity does not support multiple recipients — activity.to contains {count} values, expected exactly one consumerPid",
661
+ "pushSubscriptionCompensationFailed": "Compensating unsubscribeToData failed after push-subscription storage write failed (consumerPid: {consumerPid}, providerPid: {providerPid}) — app may be left with a dangling Follow until orphan cleanup runs"
644
662
  },
645
663
  "dataspaceDataPlaneSocketClient": {
646
664
  "socketConnect": "Failure during socket connect",
@@ -1184,7 +1202,6 @@
1184
1202
  "offerNotAccepted": "Offer with id: \"{offerId}\" was not accepted by the requester",
1185
1203
  "agreementNotAccepted": "Agreement with id: \"{agreementId}\" was not accepted by the requester",
1186
1204
  "noAgreementCreated": "No agreement was created for offer with id: \"{offerId}\"",
1187
- "assignerNotIdentity": "The assigner in the offer is not a single identity",
1188
1205
  "providerInitiatedNotSupported": "Provider initiated negotiations are currently not supported as the consumer identity is required to be set as the trust identity in the negotiation",
1189
1206
  "callerNotAuthorizedForNegotiation": "The caller's verified identity does not match any authorized party in this negotiation"
1190
1207
  },
@@ -1941,7 +1958,6 @@
1941
1958
  },
1942
1959
  "dataspaceControlPlaneService": {
1943
1960
  "catalogDatasetHasNoOffers": "Dataset has no Offers (odrl:hasPolicy) in Federated Catalogue",
1944
- "pushTransferModeNotImplemented": "PUSH transfer mode requested but not implemented. Consumer provided dataAddress endpoint but data push is not yet supported.",
1945
1961
  "stalledNegotiationCleanedUp": "Stalled negotiation cleaned up (negotiationId: {negotiationId})"
1946
1962
  },
1947
1963
  "dataspaceControlPlanePolicyRequester": {
@@ -1949,6 +1965,10 @@
1949
1965
  "negotiationTerminated": "Negotiation terminated by provider (negotiationId: {negotiationId})",
1950
1966
  "unknownNegotiationTerminated": "Unknown negotiation terminated (negotiationId: {negotiationId})"
1951
1967
  },
1968
+ "dataspaceDataPlaneService": {
1969
+ "pushSubscriptionNotFoundOnTeardown": "Push subscription not found for consumerPid \"{consumerPid}\" during teardown — treating as no-op",
1970
+ "pushSubscriptionNotFoundForActivity": "Push subscription not found for outbound activity (consumerPid: {consumerPid})"
1971
+ },
1952
1972
  "policyNegotiationAdminPointService": {
1953
1973
  "sendTerminateFailed": "Failed to send terminate to consumer for negotiation id: \"{id}\", correlation id: \"{correlationId}\""
1954
1974
  },
@@ -2105,7 +2125,8 @@
2105
2125
  "negotiationStateRetrieved": "Negotiation state retrieved successfully",
2106
2126
  "getNegotiationHistory": "Retrieving negotiation history",
2107
2127
  "negotiationHistoryRetrieved": "Negotiation history retrieved successfully",
2108
- "stalledNegotiationsCleanupComplete": "Stalled negotiations cleanup completed (cleanedUp: {cleanedUp})"
2128
+ "stalledNegotiationsCleanupComplete": "Stalled negotiations cleanup completed (cleanedUp: {cleanedUp})",
2129
+ "pushTransferStarted": "PUSH transfer started (consumerPid: {consumerPid}, providerPid: {providerPid}, endpoint: {endpoint})"
2109
2130
  },
2110
2131
  "dataspaceControlPlanePolicyRequester": {
2111
2132
  "offerReceived": "Offer received from provider (negotiationId: {negotiationId}, offerId: {offerId})",
@@ -2116,7 +2137,12 @@
2116
2137
  },
2117
2138
  "dataspaceDataPlaneService": {
2118
2139
  "scheduledTask": "\"{taskId}\": Task scheduled for Dataspace App \"{dataspaceAppId}\" (isRetry: {isRetry})",
2119
- "policyObligationTriggered": "Policy obligation triggered for agreement \"{agreementId}\": action=\"{action}\", target=\"{target}\""
2140
+ "policyObligationTriggered": "Policy obligation triggered for agreement \"{agreementId}\": action=\"{action}\", target=\"{target}\"",
2141
+ "pushSubscriptionCreated": "Push subscription created (consumerPid: {consumerPid}, providerPid: {providerPid})",
2142
+ "pushSubscriptionSuspended": "Push subscription suspended (consumerPid: {consumerPid})",
2143
+ "pushSubscriptionResumed": "Push subscription resumed (consumerPid: {consumerPid})",
2144
+ "pushSubscriptionTornDown": "Push subscription torn down (consumerPid: {consumerPid}, providerPid: {providerPid})",
2145
+ "pushDeliveryTaskScheduled": "Push delivery task scheduled (taskId: {taskId}, consumerPid: {consumerPid})"
2120
2146
  },
2121
2147
  "dataspaceDataPlaneSocketClient": {
2122
2148
  "subscribeActivityLogs": "Subscription created for topic activity logs with id \"{subscriptionId}\"",
@@ -2494,7 +2520,9 @@
2494
2520
  "engineCloneStart": "'start' method has been called from an engine clone. No task scheduler created",
2495
2521
  "cleanUpOngoing": "There is an ongoing clean up of activity logs. Skipping",
2496
2522
  "activityLogCleanedUp": "Activity Log has been cleaned up. \"{numRecordsDeleted}\" records deleted",
2497
- "replacingFailedTasks": "Retrying apps \"{appsToRetry}\" (successful: \"{successfulApps}\") for activity \"{activityLogEntryId}\""
2523
+ "pushSubscriptionsCleanedUp": "Orphaned push subscriptions cleaned up. \"{numDeleted}\" records deleted",
2524
+ "replacingFailedTasks": "Retrying apps \"{appsToRetry}\" (successful: \"{successfulApps}\") for activity \"{activityLogEntryId}\"",
2525
+ "pushDeliverySkippedPaused": "Push delivery skipped — subscription is paused (consumerPid: {consumerPid})"
2498
2526
  },
2499
2527
  "dataspaceDataPlaneSocketRoutes": {
2500
2528
  "activityLogStatusConnected": "Web Socket Connected: Socket Id: \"{socketId}\"",
package/docs/changelog.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.0.3-next.41](https://github.com/iotaledger/twin-node/compare/node-v0.0.3-next.40...node-v0.0.3-next.41) (2026-05-27)
4
+
5
+
6
+ ### Miscellaneous Chores
7
+
8
+ * **node:** Synchronize repo versions
9
+
10
+
11
+ ### Dependencies
12
+
13
+ * The following workspace dependencies were updated
14
+ * dependencies
15
+ * @twin.org/node-core bumped from 0.0.3-next.40 to 0.0.3-next.41
16
+
3
17
  ## [0.0.3-next.40](https://github.com/iotaledger/twin-node/compare/node-v0.0.3-next.39...node-v0.0.3-next.40) (2026-05-22)
4
18
 
5
19
 
@@ -16168,18 +16168,13 @@
16168
16168
  }
16169
16169
  }
16170
16170
  },
16171
- "/dataspace-data-plane/notify": {
16171
+ "/dataspace-data-plane/inbox": {
16172
16172
  "post": {
16173
16173
  "operationId": "activityStreamNotify",
16174
16174
  "summary": "Notify of a new Activity",
16175
16175
  "tags": [
16176
16176
  "Dataspace Data Plane"
16177
16177
  ],
16178
- "security": [
16179
- {
16180
- "jwtBearerAuthScheme": []
16181
- }
16182
- ],
16183
16178
  "requestBody": {
16184
16179
  "description": "Activity Stream Notify Request.",
16185
16180
  "required": true,
@@ -16240,24 +16235,6 @@
16240
16235
  }
16241
16236
  }
16242
16237
  },
16243
- "401": {
16244
- "description": "You are not authorized to use the API or no credentials were supplied, see the content for more details.",
16245
- "content": {
16246
- "application/json": {
16247
- "schema": {
16248
- "$ref": "#/components/schemas/Error"
16249
- },
16250
- "examples": {
16251
- "exampleResponse": {
16252
- "value": {
16253
- "name": "UnauthorizedError",
16254
- "message": "errorMessage"
16255
- }
16256
- }
16257
- }
16258
- }
16259
- }
16260
- },
16261
16238
  "422": {
16262
16239
  "description": "The server cannot process the request, see the content for more details.",
16263
16240
  "content": {
@@ -19835,6 +19812,7 @@
19835
19812
  "correlationId": "cid",
19836
19813
  "dateCreated": "2025-09-03T00:00:00.000Z",
19837
19814
  "state": "REQUESTED",
19815
+ "nodeIdentity": "did:iota:nodexyz",
19838
19816
  "organizationIdentity": "did:iota:123456789abcdefghi"
19839
19817
  }
19840
19818
  }
@@ -19940,6 +19918,7 @@
19940
19918
  "correlationId": "cid",
19941
19919
  "dateCreated": "2025-09-03T00:00:00.000Z",
19942
19920
  "state": "REQUESTED",
19921
+ "nodeIdentity": "did:iota:nodexyz",
19943
19922
  "organizationIdentity": "did:iota:123456789abcdefghi"
19944
19923
  }
19945
19924
  }
@@ -20148,6 +20127,7 @@
20148
20127
  "correlationId": "cid",
20149
20128
  "dateCreated": "2025-09-03T00:00:00.000Z",
20150
20129
  "state": "REQUESTED",
20130
+ "nodeIdentity": "did:iota:nodexyz",
20151
20131
  "organizationIdentity": "did:iota:123456789abcdefghi"
20152
20132
  }
20153
20133
  ]
@@ -22600,9 +22580,13 @@
22600
22580
  "type": "string",
22601
22581
  "description": "The tenant id this negotiation belongs to."
22602
22582
  },
22583
+ "nodeIdentity": {
22584
+ "type": "string",
22585
+ "description": "The node identity (DID) used to sign trust payloads."
22586
+ },
22603
22587
  "organizationIdentity": {
22604
22588
  "type": "string",
22605
- "description": "Organization identity to be used when sending trust payloads."
22589
+ "description": "Organization identity (the org DID of the user who initiated or received\nthe negotiation, when a user context was available)."
22606
22590
  },
22607
22591
  "offer": {
22608
22592
  "$ref": "https://schema.twindev.org/dataspace-protocol/DataspaceProtocolOffer"
@@ -22670,7 +22654,7 @@
22670
22654
  "correlationId",
22671
22655
  "dateCreated",
22672
22656
  "state",
22673
- "organizationIdentity"
22657
+ "nodeIdentity"
22674
22658
  ]
22675
22659
  },
22676
22660
  "RefreshTokenRequest": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@twin.org/node",
3
- "version": "0.0.3-next.40",
3
+ "version": "0.0.3-next.41",
4
4
  "description": "TWIN Node serving APIs using the specified configuration",
5
5
  "repository": {
6
6
  "type": "git",
@@ -14,7 +14,7 @@
14
14
  "node": ">=20.0.0"
15
15
  },
16
16
  "dependencies": {
17
- "@twin.org/node-core": "0.0.3-next.40"
17
+ "@twin.org/node-core": "0.0.3-next.41"
18
18
  },
19
19
  "bugs": {
20
20
  "url": "git+https://github.com/iotaledger/node/issues"