auth0-deploy-cli 8.26.0 → 8.28.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -7,6 +7,26 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [8.28.0] - 2026-02-20
11
+
12
+ ### Added
13
+
14
+ - Add support for managing `action-modules`.(EA) [#1302]
15
+ - Add support for managing `modules` in `actions`.(EA) [#1302]
16
+
17
+ ## [8.27.0] - 2026-02-13
18
+
19
+ ### Added
20
+
21
+ - Add support for `custom_password_hash.action_id` in `databases` (Universal Custom Password Hash EA). [#1288]
22
+ - Add support for `allowed_strategies` in `selfServiceProfiles`. [#1298]
23
+
24
+ ### Fixed
25
+
26
+ - Fix validation handling for `authentication_methods.password.enabled` and `disable_self_service_change_password` in `databases`. [#1297]
27
+ - Fix stripping deprecated `enabled_clients` for `connections` with enhanced client management. [#1294]
28
+ - Fix exclude third-party `clientGrants` when `AUTH0_EXCLUDE_THIRD_PARTY_CLIENTS` is enabled. [#1289]
29
+
10
30
  ## [8.26.0] - 2026-01-30
11
31
 
12
32
  ### Added
@@ -1634,7 +1654,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1634
1654
  [#1282]: https://github.com/auth0/auth0-deploy-cli/issues/1282
1635
1655
  [#1283]: https://github.com/auth0/auth0-deploy-cli/issues/1283
1636
1656
  [#1284]: https://github.com/auth0/auth0-deploy-cli/issues/1284
1637
- [Unreleased]: https://github.com/auth0/auth0-deploy-cli/compare/v8.26.0...HEAD
1657
+ [#1288]: https://github.com/auth0/auth0-deploy-cli/issues/1288
1658
+ [#1289]: https://github.com/auth0/auth0-deploy-cli/issues/1289
1659
+ [#1294]: https://github.com/auth0/auth0-deploy-cli/issues/1294
1660
+ [#1297]: https://github.com/auth0/auth0-deploy-cli/issues/1297
1661
+ [#1298]: https://github.com/auth0/auth0-deploy-cli/issues/1298
1662
+ [#1302]: https://github.com/auth0/auth0-deploy-cli/issues/1302
1663
+ [Unreleased]: https://github.com/auth0/auth0-deploy-cli/compare/v8.28.0...HEAD
1664
+ [8.28.0]: https://github.com/auth0/auth0-deploy-cli/compare/v8.27.0...v8.28.0
1665
+ [8.27.0]: https://github.com/auth0/auth0-deploy-cli/compare/v8.26.0...v8.27.0
1638
1666
  [8.26.0]: https://github.com/auth0/auth0-deploy-cli/compare/v8.25.0...v8.26.0
1639
1667
  [8.25.0]: https://github.com/auth0/auth0-deploy-cli/compare/v8.24.0...v8.25.0
1640
1668
  [8.24.0]: https://github.com/auth0/auth0-deploy-cli/compare/v8.23.2...v8.24.0
@@ -0,0 +1,5 @@
1
+ import { DirectoryHandler } from '.';
2
+ import { Asset, ParsedAsset } from '../../../types';
3
+ type ParsedActionModules = ParsedAsset<'actionModules', Asset[]>;
4
+ declare const actionModulesHandler: DirectoryHandler<ParsedActionModules>;
5
+ export default actionModulesHandler;
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const path_1 = __importDefault(require("path"));
7
+ const fs_extra_1 = __importDefault(require("fs-extra"));
8
+ const tools_1 = require("../../../tools");
9
+ const utils_1 = require("../../../utils");
10
+ const logger_1 = __importDefault(require("../../../logger"));
11
+ function parse(context) {
12
+ const modulesFolder = path_1.default.join(context.filePath, tools_1.constants.ACTION_MODULES_DIRECTORY);
13
+ if (!(0, utils_1.existsMustBeDir)(modulesFolder))
14
+ return { actionModules: null };
15
+ const files = (0, utils_1.getFiles)(modulesFolder, ['.json']);
16
+ const actionModules = files.map((file) => {
17
+ const module = {
18
+ ...(0, utils_1.loadJSON)(file, {
19
+ mappings: context.mappings,
20
+ disableKeywordReplacement: context.disableKeywordReplacement,
21
+ }),
22
+ };
23
+ const moduleFolder = path_1.default.join(tools_1.constants.ACTION_MODULES_DIRECTORY, `${module.name}`);
24
+ if (module.code) {
25
+ // The `module.code` can be a file path. It needs to be loaded.
26
+ // It can be a relative path, so we need to handle both cases.
27
+ const unixPath = module.code.replace(/[\\/]+/g, '/').replace(/^([a-zA-Z]+:|\.\/)/, '');
28
+ if (fs_extra_1.default.existsSync(unixPath)) {
29
+ module.code = context.loadFile(unixPath, moduleFolder);
30
+ }
31
+ else {
32
+ module.code = context.loadFile(path_1.default.join(context.filePath, module.code), moduleFolder);
33
+ }
34
+ }
35
+ return module;
36
+ });
37
+ return { actionModules };
38
+ }
39
+ function mapSecrets(secrets) {
40
+ if (typeof secrets === 'string') {
41
+ return secrets;
42
+ }
43
+ if (secrets && secrets.length > 0) {
44
+ return secrets.map((secret) => ({ name: secret.name, value: secret.value }));
45
+ }
46
+ return [];
47
+ }
48
+ function mapModuleCode(filePath, module) {
49
+ const { code } = module;
50
+ if (!code) {
51
+ return '';
52
+ }
53
+ const moduleName = (0, utils_1.sanitize)(module.name);
54
+ const moduleFolder = path_1.default.join(filePath, tools_1.constants.ACTION_MODULES_DIRECTORY, `${moduleName}`);
55
+ fs_extra_1.default.ensureDirSync(moduleFolder);
56
+ const codeFile = path_1.default.join(moduleFolder, 'code.js');
57
+ logger_1.default.info(`Writing ${codeFile}`);
58
+ fs_extra_1.default.writeFileSync(codeFile, code);
59
+ return `./${tools_1.constants.ACTION_MODULES_DIRECTORY}/${moduleName}/code.js`;
60
+ }
61
+ function mapToActionModule(filePath, module, includeIdentifiers) {
62
+ return {
63
+ ...(includeIdentifiers && module.id ? { id: module.id } : {}),
64
+ name: module.name,
65
+ code: mapModuleCode(filePath, module),
66
+ dependencies: module.dependencies,
67
+ secrets: mapSecrets(module.secrets),
68
+ actions_using_module_total: module.actions_using_module_total,
69
+ all_changes_published: module.all_changes_published,
70
+ latest_version_number: module.latest_version_number,
71
+ };
72
+ }
73
+ async function dump(context) {
74
+ const { actionModules } = context.assets;
75
+ if (!actionModules)
76
+ return;
77
+ // Create action modules folder
78
+ const modulesFolder = path_1.default.join(context.filePath, tools_1.constants.ACTION_MODULES_DIRECTORY);
79
+ fs_extra_1.default.ensureDirSync(modulesFolder);
80
+ const includeIdentifiers = Boolean(context.config.AUTH0_EXPORT_IDENTIFIERS);
81
+ actionModules.forEach((module) => {
82
+ const name = (0, utils_1.sanitize)(module.name);
83
+ const moduleFile = path_1.default.join(modulesFolder, `${name}.json`);
84
+ (0, utils_1.dumpJSON)(moduleFile, mapToActionModule(context.filePath, module, includeIdentifiers));
85
+ });
86
+ }
87
+ const actionModulesHandler = {
88
+ parse,
89
+ dump,
90
+ };
91
+ exports.default = actionModulesHandler;
@@ -73,6 +73,10 @@ function mapToAction(filePath, action, includeIdentifiers) {
73
73
  supported_triggers: action.supported_triggers,
74
74
  deployed: action.deployed || action.all_changes_deployed,
75
75
  installed_integration_id: action.installed_integration_id,
76
+ modules: action.modules?.map((module) => ({
77
+ module_name: module.module_name,
78
+ module_version_number: module.module_version_number,
79
+ })),
76
80
  };
77
81
  }
78
82
  async function dump(context) {
@@ -20,6 +20,7 @@ const guardianPhoneFactorSelectedProvider_1 = __importDefault(require("./guardia
20
20
  const guardianPolicies_1 = __importDefault(require("./guardianPolicies"));
21
21
  const roles_1 = __importDefault(require("./roles"));
22
22
  const actions_1 = __importDefault(require("./actions"));
23
+ const actionModules_1 = __importDefault(require("./actionModules"));
23
24
  const organizations_1 = __importDefault(require("./organizations"));
24
25
  const triggers_1 = __importDefault(require("./triggers"));
25
26
  const attackProtection_1 = __importDefault(require("./attackProtection"));
@@ -63,6 +64,7 @@ const directoryHandlers = {
63
64
  guardianPolicies: guardianPolicies_1.default,
64
65
  roles: roles_1.default,
65
66
  actions: actions_1.default,
67
+ actionModules: actionModules_1.default,
66
68
  organizations: organizations_1.default,
67
69
  triggers: triggers_1.default,
68
70
  attackProtection: attackProtection_1.default,
@@ -0,0 +1,6 @@
1
+ import { YAMLHandler } from '.';
2
+ import { ParsedAsset } from '../../../types';
3
+ import { ActionModule } from '../../../tools/auth0/handlers/actionModules';
4
+ type ParsedActionModules = ParsedAsset<'actionModules', Partial<ActionModule>[]>;
5
+ declare const ActionModulesHandler: YAMLHandler<ParsedActionModules>;
6
+ export default ActionModulesHandler;
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const path_1 = __importDefault(require("path"));
7
+ const fs_extra_1 = __importDefault(require("fs-extra"));
8
+ const tools_1 = require("../../../tools");
9
+ const utils_1 = require("../../../utils");
10
+ const logger_1 = __importDefault(require("../../../logger"));
11
+ async function parse(context) {
12
+ const { actionModules } = context.assets;
13
+ if (!actionModules)
14
+ return { actionModules: null };
15
+ return {
16
+ actionModules: [
17
+ ...actionModules.map((module) => ({
18
+ ...module,
19
+ code: context.loadFile(module.code || ''),
20
+ })),
21
+ ],
22
+ };
23
+ }
24
+ function mapSecrets(secrets) {
25
+ if (typeof secrets === 'string') {
26
+ return secrets;
27
+ }
28
+ if (secrets && secrets.length > 0) {
29
+ return secrets.map((secret) => ({ name: secret.name, value: secret.value }));
30
+ }
31
+ return [];
32
+ }
33
+ function mapModuleCode(basePath, module) {
34
+ const { code } = module;
35
+ if (!code) {
36
+ return '';
37
+ }
38
+ const moduleName = (0, utils_1.sanitize)(module.name);
39
+ const modulesFolder = path_1.default.join(basePath, tools_1.constants.ACTION_MODULES_DIRECTORY, moduleName);
40
+ fs_extra_1.default.ensureDirSync(modulesFolder);
41
+ const codeFile = path_1.default.join(modulesFolder, 'code.js');
42
+ logger_1.default.info(`Writing ${codeFile}`);
43
+ fs_extra_1.default.writeFileSync(codeFile, code);
44
+ return `./${tools_1.constants.ACTION_MODULES_DIRECTORY}/${moduleName}/code.js`;
45
+ }
46
+ async function dump(context) {
47
+ const { actionModules } = context.assets;
48
+ if (!actionModules || actionModules.length === 0)
49
+ return { actionModules: null };
50
+ const includeIdentifiers = Boolean(context.config.AUTH0_EXPORT_IDENTIFIERS);
51
+ return {
52
+ actionModules: actionModules?.map((module) => ({
53
+ ...(includeIdentifiers && module.id ? { id: module.id } : {}),
54
+ name: module.name,
55
+ code: mapModuleCode(context.basePath, module),
56
+ dependencies: module.dependencies || [],
57
+ secrets: mapSecrets(module.secrets),
58
+ actions_using_module_total: module.actions_using_module_total,
59
+ all_changes_published: module.all_changes_published,
60
+ latest_version_number: module.latest_version_number,
61
+ })),
62
+ };
63
+ }
64
+ const ActionModulesHandler = {
65
+ parse,
66
+ dump,
67
+ };
68
+ exports.default = ActionModulesHandler;
@@ -77,6 +77,10 @@ async function dump(context) {
77
77
  status: action.status,
78
78
  secrets: mapSecrets(action.secrets),
79
79
  supported_triggers: action.supported_triggers,
80
+ modules: action.modules?.map((module) => ({
81
+ module_name: module.module_name,
82
+ module_version_number: module.module_version_number,
83
+ })),
80
84
  })),
81
85
  };
82
86
  }
@@ -21,6 +21,7 @@ const guardianPolicies_1 = __importDefault(require("./guardianPolicies"));
21
21
  const roles_1 = __importDefault(require("./roles"));
22
22
  const organizations_1 = __importDefault(require("./organizations"));
23
23
  const actions_1 = __importDefault(require("./actions"));
24
+ const actionModules_1 = __importDefault(require("./actionModules"));
24
25
  const triggers_1 = __importDefault(require("./triggers"));
25
26
  const attackProtection_1 = __importDefault(require("./attackProtection"));
26
27
  const riskAssessment_1 = __importDefault(require("./riskAssessment"));
@@ -63,6 +64,7 @@ const yamlHandlers = {
63
64
  guardianPhoneFactorSelectedProvider: guardianPhoneFactorSelectedProvider_1.default,
64
65
  guardianPolicies: guardianPolicies_1.default,
65
66
  actions: actions_1.default,
67
+ actionModules: actionModules_1.default,
66
68
  organizations: organizations_1.default,
67
69
  triggers: triggers_1.default,
68
70
  attackProtection: attackProtection_1.default,
@@ -0,0 +1,64 @@
1
+ import DefaultAPIHandler from './default';
2
+ import { Asset, Assets } from '../../../types';
3
+ import { Management } from 'auth0';
4
+ export declare const schema: {
5
+ type: string;
6
+ items: {
7
+ type: string;
8
+ required: string[];
9
+ additionalProperties: boolean;
10
+ properties: {
11
+ name: {
12
+ type: string;
13
+ };
14
+ code: {
15
+ type: string;
16
+ };
17
+ dependencies: {
18
+ type: string;
19
+ items: {
20
+ type: string;
21
+ additionalProperties: boolean;
22
+ properties: {
23
+ name: {
24
+ type: string;
25
+ };
26
+ version: {
27
+ type: string;
28
+ };
29
+ };
30
+ };
31
+ };
32
+ secrets: {
33
+ type: string;
34
+ items: {
35
+ type: string;
36
+ properties: {
37
+ name: {
38
+ type: string;
39
+ };
40
+ value: {
41
+ type: string;
42
+ };
43
+ };
44
+ required: string[];
45
+ };
46
+ };
47
+ all_changes_published: {
48
+ type: string;
49
+ };
50
+ };
51
+ };
52
+ };
53
+ export type ActionModule = Management.ActionModuleListItem;
54
+ export default class ActionModulesHandler extends DefaultAPIHandler {
55
+ existing: ActionModule[] | null;
56
+ constructor(options: DefaultAPIHandler);
57
+ createModule(module: Management.CreateActionModuleRequestContent): Promise<Management.CreateActionModuleResponseContent>;
58
+ updateModule(moduleId: string, module: Management.UpdateActionModuleRequestContent): Promise<Management.UpdateActionModuleResponseContent>;
59
+ deleteModule(moduleId: string): Promise<void>;
60
+ objString(module: ActionModule): string;
61
+ publishActionModules(modules: ActionModule[]): Promise<void>;
62
+ getType(): Promise<Asset[] | null>;
63
+ processChanges(assets: Assets): Promise<void>;
64
+ }
@@ -0,0 +1,200 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
19
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
20
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
21
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
22
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
23
+ };
24
+ var __importStar = (this && this.__importStar) || (function () {
25
+ var ownKeys = function(o) {
26
+ ownKeys = Object.getOwnPropertyNames || function (o) {
27
+ var ar = [];
28
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
29
+ return ar;
30
+ };
31
+ return ownKeys(o);
32
+ };
33
+ return function (mod) {
34
+ if (mod && mod.__esModule) return mod;
35
+ var result = {};
36
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
37
+ __setModuleDefault(result, mod);
38
+ return result;
39
+ };
40
+ })();
41
+ var __importDefault = (this && this.__importDefault) || function (mod) {
42
+ return (mod && mod.__esModule) ? mod : { "default": mod };
43
+ };
44
+ Object.defineProperty(exports, "__esModule", { value: true });
45
+ exports.schema = void 0;
46
+ const default_1 = __importStar(require("./default"));
47
+ const logger_1 = __importDefault(require("../../../logger"));
48
+ const client_1 = require("../client");
49
+ exports.schema = {
50
+ type: 'array',
51
+ items: {
52
+ type: 'object',
53
+ required: ['name', 'code'],
54
+ additionalProperties: true,
55
+ properties: {
56
+ name: { type: 'string' },
57
+ code: { type: 'string' },
58
+ dependencies: {
59
+ type: 'array',
60
+ items: {
61
+ type: 'object',
62
+ additionalProperties: false,
63
+ properties: {
64
+ name: { type: 'string' },
65
+ version: { type: 'string' },
66
+ },
67
+ },
68
+ },
69
+ secrets: {
70
+ type: 'array',
71
+ items: {
72
+ type: 'object',
73
+ properties: {
74
+ name: { type: 'string' },
75
+ value: { type: 'string' },
76
+ },
77
+ required: ['name'],
78
+ },
79
+ },
80
+ all_changes_published: { type: 'boolean' },
81
+ },
82
+ },
83
+ };
84
+ class ActionModulesHandler extends default_1.default {
85
+ constructor(options) {
86
+ super({
87
+ ...options,
88
+ type: 'actionModules',
89
+ id: 'id',
90
+ identifiers: ['id', 'name'],
91
+ stripUpdateFields: [
92
+ 'name',
93
+ 'actions_using_module_total',
94
+ 'all_changes_published',
95
+ 'latest_version_number',
96
+ 'created_at',
97
+ 'updated_at',
98
+ ],
99
+ stripCreateFields: [
100
+ 'actions_using_module_total',
101
+ 'latest_version_number',
102
+ 'created_at',
103
+ 'updated_at',
104
+ ],
105
+ functions: {
106
+ create: (module) => this.createModule(module),
107
+ update: (id, module) => this.updateModule(id, module),
108
+ delete: (id) => this.deleteModule(id),
109
+ },
110
+ });
111
+ }
112
+ async createModule(module) {
113
+ if ('all_changes_published' in module) {
114
+ delete module.all_changes_published;
115
+ }
116
+ const createdModule = await this.client.actions.modules.create(module);
117
+ return createdModule;
118
+ }
119
+ async updateModule(moduleId, module) {
120
+ const updatableModule = {
121
+ code: module.code,
122
+ dependencies: module.dependencies,
123
+ secrets: module.secrets,
124
+ };
125
+ return this.client.actions.modules.update(moduleId, updatableModule);
126
+ }
127
+ async deleteModule(moduleId) {
128
+ return this.client.actions.modules.delete(moduleId);
129
+ }
130
+ objString(module) {
131
+ return super.objString({ id: module.id, name: module.name });
132
+ }
133
+ async publishActionModules(modules) {
134
+ await this.client.pool
135
+ .addEachTask({
136
+ data: modules || [],
137
+ generator: (module) => this.client.actions.modules.versions
138
+ .create(module.id)
139
+ .then(() => {
140
+ logger_1.default.info(`Published [${this.type}]: ${this.objString(module)}`);
141
+ })
142
+ .catch((err) => {
143
+ throw new Error(`Problem Publishing ${this.type} ${this.objString(module)}\n${err}`);
144
+ }),
145
+ })
146
+ .promise();
147
+ }
148
+ async getType() {
149
+ if (this.existing)
150
+ return this.existing;
151
+ try {
152
+ const modules = await (0, client_1.paginate)(this.client.actions.modules.list, {
153
+ paginate: true,
154
+ });
155
+ this.existing = modules;
156
+ return this.existing;
157
+ }
158
+ catch (err) {
159
+ if (err.statusCode === 404 || err.statusCode === 501) {
160
+ return null;
161
+ }
162
+ if (err.statusCode === 403 || err.errorCode === 'feature_not_enabled') {
163
+ logger_1.default.debug('Skipping action modules because it is not enabled.');
164
+ return null;
165
+ }
166
+ throw err;
167
+ }
168
+ }
169
+ // Before actions are processed
170
+ async processChanges(assets) {
171
+ const { actionModules } = assets;
172
+ // Do nothing if not set
173
+ if (!actionModules)
174
+ return;
175
+ const changes = await this.calcChanges(assets);
176
+ await super.processChanges(assets, changes);
177
+ // Refresh module list to get latest state with all_changes_published field
178
+ const postProcessedModules = await (async () => {
179
+ this.existing = null; // Clear the cache
180
+ return this.getType();
181
+ })();
182
+ // Publish modules that have unpublished changes
183
+ const modulesToPublish = [
184
+ ...changes.create
185
+ .filter((module) => module.all_changes_published === true)
186
+ .map((moduleWithoutId) => {
187
+ // Add IDs to just-created modules
188
+ const moduleId = postProcessedModules?.find((postProcessedModule) => postProcessedModule.name === moduleWithoutId.name)?.id;
189
+ const module = postProcessedModules?.find((postProcessedModule) => postProcessedModule.id === moduleId);
190
+ return module;
191
+ }),
192
+ ...changes.update.filter((module) => module.all_changes_published === true),
193
+ ].filter((module) => module !== undefined);
194
+ await this.publishActionModules(modulesToPublish);
195
+ }
196
+ }
197
+ exports.default = ActionModulesHandler;
198
+ __decorate([
199
+ (0, default_1.order)('50')
200
+ ], ActionModulesHandler.prototype, "processChanges", null);
@@ -1,6 +1,7 @@
1
1
  import { Management } from 'auth0';
2
2
  import DefaultAPIHandler from './default';
3
- import { Asset, Assets } from '../../../types';
3
+ import { Asset, Assets, CalculatedChanges } from '../../../types';
4
+ import { ActionModule } from './actionModules';
4
5
  export type Action = Management.Action & {
5
6
  deployed?: boolean;
6
7
  };
@@ -80,6 +81,21 @@ export declare const schema: {
80
81
  };
81
82
  };
82
83
  };
84
+ modules: {
85
+ type: string;
86
+ items: {
87
+ type: string;
88
+ required: string[];
89
+ properties: {
90
+ module_name: {
91
+ type: string;
92
+ };
93
+ module_version_number: {
94
+ type: string;
95
+ };
96
+ };
97
+ };
98
+ };
83
99
  deployed: {
84
100
  type: string;
85
101
  };
@@ -101,6 +117,8 @@ export default class ActionHandler extends DefaultAPIHandler {
101
117
  deployAction(action: any): Promise<void>;
102
118
  actionChanges(action: any, found: any): Promise<Asset>;
103
119
  getType(): Promise<Asset[] | null>;
120
+ calcChanges(assets: Assets): Promise<CalculatedChanges>;
121
+ enrichActionWithModuleIds(action: Action, modules: ActionModule[]): Promise<Action>;
104
122
  processChanges(assets: Assets): Promise<void>;
105
123
  }
106
124
  export {};