@twin.org/node-core 0.9.1-next.1 → 0.9.1-next.11

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 (62) hide show
  1. package/dist/es/builders/engineEnvBuilder.js +52 -7
  2. package/dist/es/builders/engineEnvBuilder.js.map +1 -1
  3. package/dist/es/cli.js +41 -12
  4. package/dist/es/cli.js.map +1 -1
  5. package/dist/es/commands/bootstrapLegacy.js +1 -1
  6. package/dist/es/commands/bootstrapLegacy.js.map +1 -1
  7. package/dist/es/commands/help.js +10 -1
  8. package/dist/es/commands/help.js.map +1 -1
  9. package/dist/es/commands/identityCreate.js +3 -3
  10. package/dist/es/commands/identityCreate.js.map +1 -1
  11. package/dist/es/commands/identityList.js +65 -0
  12. package/dist/es/commands/identityList.js.map +1 -0
  13. package/dist/es/commands/identityResolve.js +83 -0
  14. package/dist/es/commands/identityResolve.js.map +1 -0
  15. package/dist/es/commands/nodeIdentityGet.js +68 -0
  16. package/dist/es/commands/nodeIdentityGet.js.map +1 -0
  17. package/dist/es/commands/{nodeSetIdentity.js → nodeIdentitySet.js} +16 -15
  18. package/dist/es/commands/nodeIdentitySet.js.map +1 -0
  19. package/dist/es/commands/nodeOrgIdGet.js +55 -0
  20. package/dist/es/commands/nodeOrgIdGet.js.map +1 -0
  21. package/dist/es/commands/{setNodeOrgId.js → nodeOrgIdSet.js} +15 -13
  22. package/dist/es/commands/nodeOrgIdSet.js.map +1 -0
  23. package/dist/es/commands/orgUsersList.js +94 -0
  24. package/dist/es/commands/orgUsersList.js.map +1 -0
  25. package/dist/es/commands/tenantGet.js +68 -0
  26. package/dist/es/commands/tenantGet.js.map +1 -0
  27. package/dist/es/commands/tenantList.js +69 -0
  28. package/dist/es/commands/tenantList.js.map +1 -0
  29. package/dist/es/commands/tenantListByOrg.js +80 -0
  30. package/dist/es/commands/tenantListByOrg.js.map +1 -0
  31. package/dist/es/commands/{setTenantOrgId.js → tenantOrgIdSet.js} +16 -15
  32. package/dist/es/commands/tenantOrgIdSet.js.map +1 -0
  33. package/dist/es/commands/userGet.js +77 -0
  34. package/dist/es/commands/userGet.js.map +1 -0
  35. package/dist/es/models/ICliCommandDefinition.js.map +1 -1
  36. package/dist/es/models/IEngineEnvironmentVariables.js.map +1 -1
  37. package/dist/es/models/engineEnvironmentVariableKeys.js +13 -0
  38. package/dist/es/models/engineEnvironmentVariableKeys.js.map +1 -1
  39. package/dist/es/node.js +4 -35
  40. package/dist/es/node.js.map +1 -1
  41. package/dist/types/commands/identityList.d.ts +17 -0
  42. package/dist/types/commands/identityResolve.d.ts +24 -0
  43. package/dist/types/commands/nodeIdentityGet.d.ts +20 -0
  44. package/dist/types/commands/{nodeSetIdentity.d.ts → nodeIdentitySet.d.ts} +2 -2
  45. package/dist/types/commands/nodeOrgIdGet.d.ts +19 -0
  46. package/dist/types/commands/{setNodeOrgId.d.ts → nodeOrgIdSet.d.ts} +2 -2
  47. package/dist/types/commands/orgUsersList.d.ts +27 -0
  48. package/dist/types/commands/tenantGet.d.ts +22 -0
  49. package/dist/types/commands/tenantList.d.ts +22 -0
  50. package/dist/types/commands/tenantListByOrg.d.ts +22 -0
  51. package/dist/types/commands/{setTenantOrgId.d.ts → tenantOrgIdSet.d.ts} +2 -2
  52. package/dist/types/commands/userGet.d.ts +24 -0
  53. package/dist/types/models/ICliCommandDefinition.d.ts +8 -0
  54. package/dist/types/models/IEngineEnvironmentVariables.d.ts +73 -5
  55. package/docs/changelog.md +72 -0
  56. package/docs/reference/interfaces/ICliCommandDefinition.md +16 -0
  57. package/docs/reference/interfaces/IEngineEnvironmentVariables.md +145 -5
  58. package/locales/en.json +229 -14
  59. package/package.json +2 -3
  60. package/dist/es/commands/nodeSetIdentity.js.map +0 -1
  61. package/dist/es/commands/setNodeOrgId.js.map +0 -1
  62. package/dist/es/commands/setTenantOrgId.js.map +0 -1
@@ -0,0 +1,20 @@
1
+ import type { IEngineCore } from "@twin.org/engine-models";
2
+ import type { IDidDocument } from "@twin.org/standards-w3c-did";
3
+ import type { ICliCommandDefinition } from "../models/ICliCommandDefinition.js";
4
+ import type { IEnvironmentVariables } from "../models/IEnvironmentVariables.js";
5
+ import type { INodeEngineConfig } from "../models/INodeEngineConfig.js";
6
+ import type { INodeEngineState } from "../models/INodeEngineState.js";
7
+ /**
8
+ * Get the command definition parameters.
9
+ * @param commandDefinitions The registered command definitions.
10
+ */
11
+ export declare function getCommandDefinitionNodeIdentityGet(commandDefinitions: {
12
+ [id: string]: ICliCommandDefinition;
13
+ }): void;
14
+ /**
15
+ * Command for retrieving the identity currently assigned to the node.
16
+ * @param engineCore The engine core.
17
+ * @param envVars The environment variables for the node.
18
+ * @returns The node identity document.
19
+ */
20
+ export declare function nodeIdentityGet(engineCore: IEngineCore<INodeEngineConfig, INodeEngineState>, envVars: IEnvironmentVariables): Promise<IDidDocument>;
@@ -7,7 +7,7 @@ import type { INodeEngineState } from "../models/INodeEngineState.js";
7
7
  * Get the command definition parameters.
8
8
  * @param commandDefinitions The registered command definitions.
9
9
  */
10
- export declare function getCommandDefinitionNodeSetIdentity(commandDefinitions: {
10
+ export declare function getCommandDefinitionNodeIdentitySet(commandDefinitions: {
11
11
  [id: string]: ICliCommandDefinition;
12
12
  }): void;
13
13
  /**
@@ -18,6 +18,6 @@ export declare function getCommandDefinitionNodeSetIdentity(commandDefinitions:
18
18
  * @param params.identity The DID to set for the node.
19
19
  * @returns A promise that resolves when the node identity has been persisted.
20
20
  */
21
- export declare function nodeSetIdentity(engineCore: IEngineCore<INodeEngineConfig, INodeEngineState>, envVars: IEnvironmentVariables, params: {
21
+ export declare function nodeIdentitySet(engineCore: IEngineCore<INodeEngineConfig, INodeEngineState>, envVars: IEnvironmentVariables, params: {
22
22
  identity?: string;
23
23
  }): Promise<void>;
@@ -0,0 +1,19 @@
1
+ import type { IEngineCore } from "@twin.org/engine-models";
2
+ import type { ICliCommandDefinition } from "../models/ICliCommandDefinition.js";
3
+ import type { IEnvironmentVariables } from "../models/IEnvironmentVariables.js";
4
+ import type { INodeEngineConfig } from "../models/INodeEngineConfig.js";
5
+ import type { INodeEngineState } from "../models/INodeEngineState.js";
6
+ /**
7
+ * Get the command definition parameters.
8
+ * @param commandDefinitions The registered command definitions.
9
+ */
10
+ export declare function getCommandDefinitionNodeOrgIdGet(commandDefinitions: {
11
+ [id: string]: ICliCommandDefinition;
12
+ }): void;
13
+ /**
14
+ * Command for retrieving the organization ID currently assigned to the node.
15
+ * @param engineCore The engine core.
16
+ * @param envVars The environment variables for the node.
17
+ * @returns The node organization DID.
18
+ */
19
+ export declare function nodeOrgIdGet(engineCore: IEngineCore<INodeEngineConfig, INodeEngineState>, envVars: IEnvironmentVariables): Promise<string>;
@@ -7,7 +7,7 @@ import type { INodeEngineState } from "../models/INodeEngineState.js";
7
7
  * Get the command definition parameters.
8
8
  * @param commandDefinitions The registered command definitions.
9
9
  */
10
- export declare function getCommandDefinitionSetNodeOrgId(commandDefinitions: {
10
+ export declare function getCommandDefinitionNodeOrgIdSet(commandDefinitions: {
11
11
  [id: string]: ICliCommandDefinition;
12
12
  }): void;
13
13
  /**
@@ -19,6 +19,6 @@ export declare function getCommandDefinitionSetNodeOrgId(commandDefinitions: {
19
19
  * @returns A promise that resolves when the node organization ID has been persisted.
20
20
  * @throws GeneralError if called while multi-tenant mode is enabled.
21
21
  */
22
- export declare function setNodeOrgId(engineCore: IEngineCore<INodeEngineConfig, INodeEngineState>, envVars: IEnvironmentVariables, params: {
22
+ export declare function nodeOrgIdSet(engineCore: IEngineCore<INodeEngineConfig, INodeEngineState>, envVars: IEnvironmentVariables, params: {
23
23
  organizationId?: string;
24
24
  }): Promise<void>;
@@ -0,0 +1,27 @@
1
+ import type { IEngineCore } from "@twin.org/engine-models";
2
+ import type { ICliCommandDefinition } from "../models/ICliCommandDefinition.js";
3
+ import type { IEnvironmentVariables } from "../models/IEnvironmentVariables.js";
4
+ import type { INodeEngineConfig } from "../models/INodeEngineConfig.js";
5
+ import type { INodeEngineState } from "../models/INodeEngineState.js";
6
+ /**
7
+ * Get the command definition parameters.
8
+ * @param commandDefinitions The registered command definitions.
9
+ */
10
+ export declare function getCommandDefinitionOrgUsersList(commandDefinitions: {
11
+ [id: string]: ICliCommandDefinition;
12
+ }): void;
13
+ /**
14
+ * Command for listing all users belonging to a given organization DID.
15
+ * @param engineCore The engine core.
16
+ * @param envVars The environment variables for the node.
17
+ * @param params The parameters for the command.
18
+ * @param params.orgDid The organization DID to filter by. Defaults to the node organization ID in single-tenant mode.
19
+ * @returns The list of users for the organization.
20
+ */
21
+ export declare function orgUsersList(engineCore: IEngineCore<INodeEngineConfig, INodeEngineState>, envVars: IEnvironmentVariables, params: {
22
+ orgDid?: string;
23
+ }): Promise<{
24
+ email: string;
25
+ identity: string;
26
+ scope: string;
27
+ }[]>;
@@ -0,0 +1,22 @@
1
+ import type { ITenant } from "@twin.org/api-models";
2
+ import type { IEngineCore } from "@twin.org/engine-models";
3
+ import type { ICliCommandDefinition } from "../models/ICliCommandDefinition.js";
4
+ import type { IEnvironmentVariables } from "../models/IEnvironmentVariables.js";
5
+ /**
6
+ * Get the command definition parameters.
7
+ * @param commandDefinitions The registered command definitions.
8
+ */
9
+ export declare function getCommandDefinitionTenantGet(commandDefinitions: {
10
+ [id: string]: ICliCommandDefinition;
11
+ }): void;
12
+ /**
13
+ * Command for retrieving a single tenant by ID.
14
+ * @param engineCore The engine core.
15
+ * @param envVars The environment variables for the node.
16
+ * @param params The parameters for the command.
17
+ * @param params.tenantId The ID of the tenant to retrieve.
18
+ * @returns The tenant record.
19
+ */
20
+ export declare function tenantGet(engineCore: IEngineCore, envVars: IEnvironmentVariables, params: {
21
+ tenantId?: string;
22
+ }): Promise<ITenant>;
@@ -0,0 +1,22 @@
1
+ import type { IEngineCore } from "@twin.org/engine-models";
2
+ import type { ICliCommandDefinition } from "../models/ICliCommandDefinition.js";
3
+ import type { IEnvironmentVariables } from "../models/IEnvironmentVariables.js";
4
+ /**
5
+ * Get the command definition parameters.
6
+ * @param commandDefinitions The registered command definitions.
7
+ */
8
+ export declare function getCommandDefinitionTenantList(commandDefinitions: {
9
+ [id: string]: ICliCommandDefinition;
10
+ }): void;
11
+ /**
12
+ * Command for listing all tenants.
13
+ * @param engineCore The engine core.
14
+ * @param envVars The environment variables for the node.
15
+ * @returns The list of tenants.
16
+ */
17
+ export declare function tenantList(engineCore: IEngineCore, envVars: IEnvironmentVariables): Promise<{
18
+ id: string;
19
+ apiKey: string;
20
+ organizationId: string;
21
+ label: string;
22
+ }[]>;
@@ -0,0 +1,22 @@
1
+ import type { ITenant } from "@twin.org/api-models";
2
+ import type { IEngineCore } from "@twin.org/engine-models";
3
+ import type { ICliCommandDefinition } from "../models/ICliCommandDefinition.js";
4
+ import type { IEnvironmentVariables } from "../models/IEnvironmentVariables.js";
5
+ /**
6
+ * Get the command definition parameters.
7
+ * @param commandDefinitions The registered command definitions.
8
+ */
9
+ export declare function getCommandDefinitionTenantListByOrg(commandDefinitions: {
10
+ [id: string]: ICliCommandDefinition;
11
+ }): void;
12
+ /**
13
+ * Command for listing all tenants associated with an organization DID.
14
+ * @param engineCore The engine core.
15
+ * @param envVars The environment variables for the node.
16
+ * @param params The parameters for the command.
17
+ * @param params.orgId The organization DID to filter by.
18
+ * @returns The matching tenants.
19
+ */
20
+ export declare function tenantListByOrg(engineCore: IEngineCore, envVars: IEnvironmentVariables, params: {
21
+ orgId?: string;
22
+ }): Promise<ITenant[]>;
@@ -5,7 +5,7 @@ import type { IEnvironmentVariables } from "../models/IEnvironmentVariables.js";
5
5
  * Get the command definition parameters.
6
6
  * @param commandDefinitions The registered command definitions.
7
7
  */
8
- export declare function getCommandDefinitionSetTenantOrgId(commandDefinitions: {
8
+ export declare function getCommandDefinitionTenantOrgIdSet(commandDefinitions: {
9
9
  [id: string]: ICliCommandDefinition;
10
10
  }): void;
11
11
  /**
@@ -17,7 +17,7 @@ export declare function getCommandDefinitionSetTenantOrgId(commandDefinitions: {
17
17
  * @param params.organizationId The organization ID to set.
18
18
  * @returns A promise that resolves when the tenant organization ID has been stored.
19
19
  */
20
- export declare function setTenantOrgId(engineCore: IEngineCore, envVars: IEnvironmentVariables, params: {
20
+ export declare function tenantOrgIdSet(engineCore: IEngineCore, envVars: IEnvironmentVariables, params: {
21
21
  tenantId?: string;
22
22
  organizationId?: string;
23
23
  }): Promise<void>;
@@ -0,0 +1,24 @@
1
+ import type { IAuthenticationUser } from "@twin.org/api-auth-entity-storage-models";
2
+ import type { IEngineCore } from "@twin.org/engine-models";
3
+ import type { ICliCommandDefinition } from "../models/ICliCommandDefinition.js";
4
+ import type { IEnvironmentVariables } from "../models/IEnvironmentVariables.js";
5
+ /**
6
+ * Get the command definition parameters.
7
+ * @param commandDefinitions The registered command definitions.
8
+ */
9
+ export declare function getCommandDefinitionUserGet(commandDefinitions: {
10
+ [id: string]: ICliCommandDefinition;
11
+ }): void;
12
+ /**
13
+ * Command for retrieving a single user by email address.
14
+ * @param engineCore The engine core.
15
+ * @param envVars The environment variables for the node.
16
+ * @param params The parameters for the command.
17
+ * @param params.email The email address of the user to retrieve.
18
+ * @param params.tenantId The tenant ID (multi-tenant mode only).
19
+ * @returns The user record.
20
+ */
21
+ export declare function userGet(engineCore: IEngineCore, envVars: IEnvironmentVariables, params: {
22
+ email?: string;
23
+ tenantId?: string;
24
+ }): Promise<IAuthenticationUser>;
@@ -22,6 +22,10 @@ export interface ICliCommandDefinition {
22
22
  * The params available for the command.
23
23
  */
24
24
  params: ICliCommandDefinitionParam[];
25
+ /**
26
+ * Deprecated names that resolve to this command with a warning.
27
+ */
28
+ aliases?: string[];
25
29
  /**
26
30
  * The method to execute for the command.
27
31
  */
@@ -43,4 +47,8 @@ export interface ICliCommandDefinition {
43
47
  * @default true
44
48
  */
45
49
  requiresOrgIdentity?: boolean;
50
+ /**
51
+ * Indicates whether this command is only available in single-tenant mode.
52
+ */
53
+ singleTenantOnly?: boolean;
46
54
  }
@@ -38,6 +38,10 @@ export interface IEngineEnvironmentVariables {
38
38
  * Is multi-tenant support enabled, defaults to false.
39
39
  */
40
40
  tenantEnabled?: string;
41
+ /**
42
+ * Enable schema migration, defaults to true.
43
+ */
44
+ schemaMigrationEnabled?: string;
41
45
  /**
42
46
  * The type of the entity storage to create, comma separate for more than one connector.
43
47
  * values: file, memory, aws-dynamodb, azure-cosmosdb, gcp-firestoredb, scylladb, mysql, mongodb, postgresql
@@ -289,7 +293,7 @@ export interface IEngineEnvironmentVariables {
289
293
  */
290
294
  hashicorpVaultEndpoint?: string;
291
295
  /**
292
- * The type of logging task connector, can be a comma separated list: console, entity-storage.
296
+ * The type of logging task connector, can be a comma separated list: console, entity-storage, otel, file.
293
297
  */
294
298
  loggingConnector?: string;
295
299
  /**
@@ -300,10 +304,50 @@ export interface IEngineEnvironmentVariables {
300
304
  * The batch flush interval in seconds for the logging task, how often to flush the logs when using batching, defaults to 5 seconds.
301
305
  */
302
306
  loggingBatchFlushInterval?: string;
307
+ /**
308
+ * Delete log entries older than this many milliseconds for the entity-storage logging connector.
309
+ * Set to 0 to disable age-based retention.
310
+ * @default 172800000 (2 days)
311
+ */
312
+ loggingRetainForMs?: string;
313
+ /**
314
+ * Keep at most this many log entries for the entity-storage logging connector.
315
+ * Set to 0 to disable count-based retention.
316
+ * @default 10000
317
+ */
318
+ loggingMaxEntries?: string;
319
+ /**
320
+ * How often the retention cleanup task runs in milliseconds for the entity-storage logging connector.
321
+ * Set to 0 to disable periodic cleanup.
322
+ * @default 300000 (5 minutes)
323
+ */
324
+ loggingRetentionIntervalMs?: string;
325
+ /**
326
+ * Maximum number of entries deleted per cleanup batch for the entity-storage logging connector.
327
+ * Keeping this value smaller helps avoid spikes in database load.
328
+ * @default 1000
329
+ */
330
+ loggingRetentionBatchSize?: string;
303
331
  /**
304
332
  * A list of components to exclude from logging, can be a comma separated list of component Class names e.g. "ComponentA,ComponentB".
305
333
  */
306
334
  loggingSilentComponents?: string;
335
+ /**
336
+ * The directory to write log files into when using the file logging connector. Required when TWIN_LOGGING_CONNECTOR includes "file".
337
+ */
338
+ loggingFileDirectory?: string;
339
+ /**
340
+ * The log filename when using the file logging connector, defaults to "app.log".
341
+ */
342
+ loggingFileFilename?: string;
343
+ /**
344
+ * The maximum log file size in bytes before rotation when using the file logging connector, defaults to 10485760 (10 MB). Set to 0 or negative to disable rotation.
345
+ */
346
+ loggingFileMaxFileSizeBytes?: string;
347
+ /**
348
+ * The number of rotated log files to retain when using the file logging connector, defaults to 5. Set to 0 or negative to keep all rotated files.
349
+ */
350
+ loggingFileMaxRetainedFiles?: string;
307
351
  /**
308
352
  * The name of the OpenTelemetry logger, only required if using open-telemetry as logging connector, defaults to twin-logging.
309
353
  */
@@ -428,6 +472,10 @@ export interface IEngineEnvironmentVariables {
428
472
  * The index of the wallet address to use, defaults to 0.
429
473
  */
430
474
  identityWalletAddressIndex?: string;
475
+ /**
476
+ * The TTL in milliseconds for caching resolved DIDs when using the IOTA identity connector. Omit to use the connector default.
477
+ */
478
+ identityDidResolutionCacheTtlMs?: string;
431
479
  /**
432
480
  * The type of identity resolver connector: entity-storage, iota.
433
481
  */
@@ -448,6 +496,14 @@ export interface IEngineEnvironmentVariables {
448
496
  * IOTA coin type.
449
497
  */
450
498
  iotaCoinType?: string;
499
+ /**
500
+ * IOTA gas budget, in nanos.
501
+ */
502
+ iotaGasBudget?: string;
503
+ /**
504
+ * IOTA gas reservation duration, in seconds.
505
+ */
506
+ iotaGasReservationDuration?: string;
451
507
  /**
452
508
  * IOTA Explorer Endpoint.
453
509
  */
@@ -524,6 +580,10 @@ export interface IEngineEnvironmentVariables {
524
580
  * Federated catalog remote endpoint, if set will use a REST client instead of local service.
525
581
  */
526
582
  federatedCatalogueRemoteEndpoint?: string;
583
+ /**
584
+ * The path prefix used by the federated catalogue REST client when forwarding requests to the remote endpoint, defaults to "federated-catalogue".
585
+ */
586
+ federatedCatalogueRestClientPathPrefix?: string;
527
587
  /**
528
588
  * The trust generators to add to the factory, comma separated list.
529
589
  */
@@ -604,10 +664,18 @@ export interface IEngineEnvironmentVariables {
604
664
  */
605
665
  dataspaceActivityLogsCleanupInterval?: string;
606
666
  /**
607
- * The data plane path for PULL transfers (path only, not full URL).
608
- * Will be combined with public origin.
609
- * Required if PULL transfers should be supported.
610
- * Example: "dataspace/entities"
667
+ * Base route path for the data plane service (path only, not full URL).
668
+ * Combined with the public origin to form the `dataAddress.endpoint` sent to PULL consumers
669
+ * and the inbox URL sent to PUSH providers.
670
+ *
671
+ * This must be the mount-point prefix of the data plane routes, NOT a specific route path.
672
+ * Do NOT append sub-paths such as `/entities` or `/inbox` — those are appended automatically
673
+ * by each transfer handler and by the data plane REST client.
674
+ *
675
+ * REQUIRED if PULL or PUSH transfers are supported.
676
+ * If not specified, PULL and PUSH transfers will not be available.
677
+ *
678
+ * Example: "dataspace"
611
679
  */
612
680
  dataspaceDataPlanePath?: string;
613
681
  /**
package/docs/changelog.md CHANGED
@@ -1,5 +1,77 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.9.1-next.11](https://github.com/iotaledger/twin-node/compare/node-core-v0.9.1-next.10...node-core-v0.9.1-next.11) (2026-07-24)
4
+
5
+
6
+ ### Features
7
+
8
+ * migration options ([#293](https://github.com/iotaledger/twin-node/issues/293)) ([91acc88](https://github.com/iotaledger/twin-node/commit/91acc881f665be0177b2e895e2810dd4d6145105))
9
+
10
+ ## [0.9.1-next.10](https://github.com/iotaledger/twin-node/compare/node-core-v0.9.1-next.9...node-core-v0.9.1-next.10) (2026-07-21)
11
+
12
+
13
+ ### Features
14
+
15
+ * update dependencies ([64c8ea8](https://github.com/iotaledger/twin-node/commit/64c8ea8c8b5e918f7ad419c4e3b8d08faf5e3fdd))
16
+
17
+ ## [0.9.1-next.9](https://github.com/iotaledger/twin-node/compare/node-core-v0.9.1-next.8...node-core-v0.9.1-next.9) (2026-07-21)
18
+
19
+
20
+ ### Features
21
+
22
+ * enhanced cli commands ([#288](https://github.com/iotaledger/twin-node/issues/288)) ([479fb34](https://github.com/iotaledger/twin-node/commit/479fb3448c493a134aee35b69ae39458e493a4ad))
23
+ * expose gasBudget and gasReservationDuration as configurable env vars ([#286](https://github.com/iotaledger/twin-node/issues/286)) ([d678b27](https://github.com/iotaledger/twin-node/commit/d678b27d629930a6ce85eeab9caf89d1187c3461))
24
+ * file logging config ([#287](https://github.com/iotaledger/twin-node/issues/287)) ([a567b25](https://github.com/iotaledger/twin-node/commit/a567b253cbb8b9af872bb0e494c013212f4f55a2))
25
+
26
+ ## [0.9.1-next.8](https://github.com/iotaledger/twin-node/compare/node-core-v0.9.1-next.7...node-core-v0.9.1-next.8) (2026-07-10)
27
+
28
+
29
+ ### Miscellaneous Chores
30
+
31
+ * **node-core:** Synchronize repo versions
32
+
33
+ ## [0.9.1-next.7](https://github.com/iotaledger/twin-node/compare/node-core-v0.9.1-next.6...node-core-v0.9.1-next.7) (2026-07-08)
34
+
35
+
36
+ ### Bug Fixes
37
+
38
+ * update dependencies ([#279](https://github.com/iotaledger/twin-node/issues/279)) ([2c0de07](https://github.com/iotaledger/twin-node/commit/2c0de07a15541e73612ba5bd62f4f566e4efca34))
39
+
40
+ ## [0.9.1-next.6](https://github.com/iotaledger/twin-node/compare/node-core-v0.9.1-next.5...node-core-v0.9.1-next.6) (2026-07-03)
41
+
42
+
43
+ ### Features
44
+
45
+ * use core env helpers ([568fbc5](https://github.com/iotaledger/twin-node/commit/568fbc53906b022bc8465ffb941a160075d88e96))
46
+
47
+ ## [0.9.1-next.5](https://github.com/iotaledger/twin-node/compare/node-core-v0.9.1-next.4...node-core-v0.9.1-next.5) (2026-07-02)
48
+
49
+
50
+ ### Features
51
+
52
+ * dataspace plane path ([#272](https://github.com/iotaledger/twin-node/issues/272)) ([5998eeb](https://github.com/iotaledger/twin-node/commit/5998eeb6fa1392ae753eb6bafeccefa1fb690573))
53
+
54
+ ## [0.9.1-next.4](https://github.com/iotaledger/twin-node/compare/node-core-v0.9.1-next.3...node-core-v0.9.1-next.4) (2026-07-01)
55
+
56
+
57
+ ### Features
58
+
59
+ * additional cli commands ([#269](https://github.com/iotaledger/twin-node/issues/269)) ([c9e7c93](https://github.com/iotaledger/twin-node/commit/c9e7c939aedfceed9cbe501f2dc936e84289ed62))
60
+
61
+ ## [0.9.1-next.3](https://github.com/iotaledger/twin-node/compare/node-core-v0.9.1-next.2...node-core-v0.9.1-next.3) (2026-06-30)
62
+
63
+
64
+ ### Features
65
+
66
+ * add new endpoints ([cc6e30d](https://github.com/iotaledger/twin-node/commit/cc6e30d85f7ed8018697462a7100e5c2f4e8f407))
67
+
68
+ ## [0.9.1-next.2](https://github.com/iotaledger/twin-node/compare/node-core-v0.9.1-next.1...node-core-v0.9.1-next.2) (2026-06-29)
69
+
70
+
71
+ ### Features
72
+
73
+ * update components ([35cdfdc](https://github.com/iotaledger/twin-node/commit/35cdfdcba2b52599b4db3afd8c9e6dd17468b21e))
74
+
3
75
  ## [0.9.1-next.1](https://github.com/iotaledger/twin-node/compare/node-core-v0.9.1-next.0...node-core-v0.9.1-next.1) (2026-06-26)
4
76
 
5
77
 
@@ -36,6 +36,14 @@ The params available for the command.
36
36
 
37
37
  ***
38
38
 
39
+ ### aliases? {#aliases}
40
+
41
+ > `optional` **aliases?**: `string`[]
42
+
43
+ Deprecated names that resolve to this command with a warning.
44
+
45
+ ***
46
+
39
47
  ### action {#action}
40
48
 
41
49
  > **action**: (`engineCore`, `envVars`, `params`) => `Promise`\<`unknown`\>
@@ -99,3 +107,11 @@ Indicates whether the engine needs the organization identity to be set.
99
107
  ```ts
100
108
  true
101
109
  ```
110
+
111
+ ***
112
+
113
+ ### singleTenantOnly? {#singletenantonly}
114
+
115
+ > `optional` **singleTenantOnly?**: `boolean`
116
+
117
+ Indicates whether this command is only available in single-tenant mode.
@@ -73,6 +73,14 @@ Is multi-tenant support enabled, defaults to false.
73
73
 
74
74
  ***
75
75
 
76
+ ### schemaMigrationEnabled? {#schemamigrationenabled}
77
+
78
+ > `optional` **schemaMigrationEnabled?**: `string`
79
+
80
+ Enable schema migration, defaults to true.
81
+
82
+ ***
83
+
76
84
  ### entityStorageConnectorType? {#entitystorageconnectortype}
77
85
 
78
86
  > `optional` **entityStorageConnectorType?**: `string`
@@ -575,7 +583,7 @@ Hashicorp Vault endpoint.
575
583
 
576
584
  > `optional` **loggingConnector?**: `string`
577
585
 
578
- The type of logging task connector, can be a comma separated list: console, entity-storage.
586
+ The type of logging task connector, can be a comma separated list: console, entity-storage, otel, file.
579
587
 
580
588
  ***
581
589
 
@@ -595,6 +603,66 @@ The batch flush interval in seconds for the logging task, how often to flush the
595
603
 
596
604
  ***
597
605
 
606
+ ### loggingRetainForMs? {#loggingretainforms}
607
+
608
+ > `optional` **loggingRetainForMs?**: `string`
609
+
610
+ Delete log entries older than this many milliseconds for the entity-storage logging connector.
611
+ Set to 0 to disable age-based retention.
612
+
613
+ #### Default
614
+
615
+ ```ts
616
+ 172800000 (2 days)
617
+ ```
618
+
619
+ ***
620
+
621
+ ### loggingMaxEntries? {#loggingmaxentries}
622
+
623
+ > `optional` **loggingMaxEntries?**: `string`
624
+
625
+ Keep at most this many log entries for the entity-storage logging connector.
626
+ Set to 0 to disable count-based retention.
627
+
628
+ #### Default
629
+
630
+ ```ts
631
+ 10000
632
+ ```
633
+
634
+ ***
635
+
636
+ ### loggingRetentionIntervalMs? {#loggingretentionintervalms}
637
+
638
+ > `optional` **loggingRetentionIntervalMs?**: `string`
639
+
640
+ How often the retention cleanup task runs in milliseconds for the entity-storage logging connector.
641
+ Set to 0 to disable periodic cleanup.
642
+
643
+ #### Default
644
+
645
+ ```ts
646
+ 300000 (5 minutes)
647
+ ```
648
+
649
+ ***
650
+
651
+ ### loggingRetentionBatchSize? {#loggingretentionbatchsize}
652
+
653
+ > `optional` **loggingRetentionBatchSize?**: `string`
654
+
655
+ Maximum number of entries deleted per cleanup batch for the entity-storage logging connector.
656
+ Keeping this value smaller helps avoid spikes in database load.
657
+
658
+ #### Default
659
+
660
+ ```ts
661
+ 1000
662
+ ```
663
+
664
+ ***
665
+
598
666
  ### loggingSilentComponents? {#loggingsilentcomponents}
599
667
 
600
668
  > `optional` **loggingSilentComponents?**: `string`
@@ -603,6 +671,38 @@ A list of components to exclude from logging, can be a comma separated list of c
603
671
 
604
672
  ***
605
673
 
674
+ ### loggingFileDirectory? {#loggingfiledirectory}
675
+
676
+ > `optional` **loggingFileDirectory?**: `string`
677
+
678
+ The directory to write log files into when using the file logging connector. Required when TWIN_LOGGING_CONNECTOR includes "file".
679
+
680
+ ***
681
+
682
+ ### loggingFileFilename? {#loggingfilefilename}
683
+
684
+ > `optional` **loggingFileFilename?**: `string`
685
+
686
+ The log filename when using the file logging connector, defaults to "app.log".
687
+
688
+ ***
689
+
690
+ ### loggingFileMaxFileSizeBytes? {#loggingfilemaxfilesizebytes}
691
+
692
+ > `optional` **loggingFileMaxFileSizeBytes?**: `string`
693
+
694
+ The maximum log file size in bytes before rotation when using the file logging connector, defaults to 10485760 (10 MB). Set to 0 or negative to disable rotation.
695
+
696
+ ***
697
+
698
+ ### loggingFileMaxRetainedFiles? {#loggingfilemaxretainedfiles}
699
+
700
+ > `optional` **loggingFileMaxRetainedFiles?**: `string`
701
+
702
+ The number of rotated log files to retain when using the file logging connector, defaults to 5. Set to 0 or negative to keep all rotated files.
703
+
704
+ ***
705
+
606
706
  ### openTelemetryLoggingLoggerName? {#opentelemetryloggingloggername}
607
707
 
608
708
  > `optional` **openTelemetryLoggingLoggerName?**: `string`
@@ -851,6 +951,14 @@ The index of the wallet address to use, defaults to 0.
851
951
 
852
952
  ***
853
953
 
954
+ ### identityDidResolutionCacheTtlMs? {#identitydidresolutioncachettlms}
955
+
956
+ > `optional` **identityDidResolutionCacheTtlMs?**: `string`
957
+
958
+ The TTL in milliseconds for caching resolved DIDs when using the IOTA identity connector. Omit to use the connector default.
959
+
960
+ ***
961
+
854
962
  ### identityResolverConnector? {#identityresolverconnector}
855
963
 
856
964
  > `optional` **identityResolverConnector?**: `string`
@@ -891,6 +999,22 @@ IOTA coin type.
891
999
 
892
1000
  ***
893
1001
 
1002
+ ### iotaGasBudget? {#iotagasbudget}
1003
+
1004
+ > `optional` **iotaGasBudget?**: `string`
1005
+
1006
+ IOTA gas budget, in nanos.
1007
+
1008
+ ***
1009
+
1010
+ ### iotaGasReservationDuration? {#iotagasreservationduration}
1011
+
1012
+ > `optional` **iotaGasReservationDuration?**: `string`
1013
+
1014
+ IOTA gas reservation duration, in seconds.
1015
+
1016
+ ***
1017
+
894
1018
  ### iotaExplorerEndpoint? {#iotaexplorerendpoint}
895
1019
 
896
1020
  > `optional` **iotaExplorerEndpoint?**: `string`
@@ -1043,6 +1167,14 @@ Federated catalog remote endpoint, if set will use a REST client instead of loca
1043
1167
 
1044
1168
  ***
1045
1169
 
1170
+ ### federatedCatalogueRestClientPathPrefix? {#federatedcataloguerestclientpathprefix}
1171
+
1172
+ > `optional` **federatedCatalogueRestClientPathPrefix?**: `string`
1173
+
1174
+ The path prefix used by the federated catalogue REST client when forwarding requests to the remote endpoint, defaults to "federated-catalogue".
1175
+
1176
+ ***
1177
+
1046
1178
  ### trustGenerators? {#trustgenerators}
1047
1179
 
1048
1180
  > `optional` **trustGenerators?**: `string`
@@ -1204,10 +1336,18 @@ The interval in seconds for cleaning up the activity logs.
1204
1336
 
1205
1337
  > `optional` **dataspaceDataPlanePath?**: `string`
1206
1338
 
1207
- The data plane path for PULL transfers (path only, not full URL).
1208
- Will be combined with public origin.
1209
- Required if PULL transfers should be supported.
1210
- Example: "dataspace/entities"
1339
+ Base route path for the data plane service (path only, not full URL).
1340
+ Combined with the public origin to form the `dataAddress.endpoint` sent to PULL consumers
1341
+ and the inbox URL sent to PUSH providers.
1342
+
1343
+ This must be the mount-point prefix of the data plane routes, NOT a specific route path.
1344
+ Do NOT append sub-paths such as `/entities` or `/inbox` — those are appended automatically
1345
+ by each transfer handler and by the data plane REST client.
1346
+
1347
+ REQUIRED if PULL or PUSH transfers are supported.
1348
+ If not specified, PULL and PUSH transfers will not be available.
1349
+
1350
+ Example: "dataspace"
1211
1351
 
1212
1352
  ***
1213
1353