@camunda8/cli 2.0.0-alpha.2

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 (79) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +387 -0
  3. package/dist/client.d.ts +9 -0
  4. package/dist/client.d.ts.map +1 -0
  5. package/dist/client.js +39 -0
  6. package/dist/client.js.map +1 -0
  7. package/dist/commands/deployments.d.ts +10 -0
  8. package/dist/commands/deployments.d.ts.map +1 -0
  9. package/dist/commands/deployments.js +221 -0
  10. package/dist/commands/deployments.js.map +1 -0
  11. package/dist/commands/help.d.ts +20 -0
  12. package/dist/commands/help.d.ts.map +1 -0
  13. package/dist/commands/help.js +116 -0
  14. package/dist/commands/help.js.map +1 -0
  15. package/dist/commands/incidents.d.ts +18 -0
  16. package/dist/commands/incidents.d.ts.map +1 -0
  17. package/dist/commands/incidents.js +62 -0
  18. package/dist/commands/incidents.js.map +1 -0
  19. package/dist/commands/jobs.d.ts +36 -0
  20. package/dist/commands/jobs.d.ts.map +1 -0
  21. package/dist/commands/jobs.js +129 -0
  22. package/dist/commands/jobs.js.map +1 -0
  23. package/dist/commands/messages.d.ts +22 -0
  24. package/dist/commands/messages.d.ts.map +1 -0
  25. package/dist/commands/messages.js +48 -0
  26. package/dist/commands/messages.js.map +1 -0
  27. package/dist/commands/plugins.d.ts +17 -0
  28. package/dist/commands/plugins.d.ts.map +1 -0
  29. package/dist/commands/plugins.js +113 -0
  30. package/dist/commands/plugins.js.map +1 -0
  31. package/dist/commands/process-instances.d.ts +34 -0
  32. package/dist/commands/process-instances.d.ts.map +1 -0
  33. package/dist/commands/process-instances.js +116 -0
  34. package/dist/commands/process-instances.js.map +1 -0
  35. package/dist/commands/profiles.d.ts +23 -0
  36. package/dist/commands/profiles.d.ts.map +1 -0
  37. package/dist/commands/profiles.js +76 -0
  38. package/dist/commands/profiles.js.map +1 -0
  39. package/dist/commands/run.d.ts +11 -0
  40. package/dist/commands/run.d.ts.map +1 -0
  41. package/dist/commands/run.js +61 -0
  42. package/dist/commands/run.js.map +1 -0
  43. package/dist/commands/session.d.ts +20 -0
  44. package/dist/commands/session.d.ts.map +1 -0
  45. package/dist/commands/session.js +54 -0
  46. package/dist/commands/session.js.map +1 -0
  47. package/dist/commands/topology.d.ts +10 -0
  48. package/dist/commands/topology.d.ts.map +1 -0
  49. package/dist/commands/topology.js +21 -0
  50. package/dist/commands/topology.js.map +1 -0
  51. package/dist/commands/user-tasks.d.ts +20 -0
  52. package/dist/commands/user-tasks.d.ts.map +1 -0
  53. package/dist/commands/user-tasks.js +78 -0
  54. package/dist/commands/user-tasks.js.map +1 -0
  55. package/dist/commands/watch.d.ts +10 -0
  56. package/dist/commands/watch.d.ts.map +1 -0
  57. package/dist/commands/watch.js +76 -0
  58. package/dist/commands/watch.js.map +1 -0
  59. package/dist/config.d.ts +129 -0
  60. package/dist/config.d.ts.map +1 -0
  61. package/dist/config.js +356 -0
  62. package/dist/config.js.map +1 -0
  63. package/dist/index.d.ts +7 -0
  64. package/dist/index.d.ts.map +1 -0
  65. package/dist/index.js +405 -0
  66. package/dist/index.js.map +1 -0
  67. package/dist/logger.d.ts +22 -0
  68. package/dist/logger.d.ts.map +1 -0
  69. package/dist/logger.js +132 -0
  70. package/dist/logger.js.map +1 -0
  71. package/dist/plugin-loader.d.ts +32 -0
  72. package/dist/plugin-loader.d.ts.map +1 -0
  73. package/dist/plugin-loader.js +104 -0
  74. package/dist/plugin-loader.js.map +1 -0
  75. package/dist/runtime.d.ts +20 -0
  76. package/dist/runtime.d.ts.map +1 -0
  77. package/dist/runtime.js +35 -0
  78. package/dist/runtime.js.map +1 -0
  79. package/package.json +61 -0
@@ -0,0 +1,221 @@
1
+ /**
2
+ * Deployment commands with building-block folder prioritization
3
+ */
4
+ import { getLogger } from "../logger.js";
5
+ import { createClient } from "../client.js";
6
+ import { resolveTenantId } from "../config.js";
7
+ import { readFileSync, readdirSync, statSync, existsSync } from 'node:fs';
8
+ import { join, dirname, extname, basename } from 'node:path';
9
+ const RESOURCE_EXTENSIONS = ['.bpmn', '.dmn', '.form'];
10
+ /**
11
+ * Extract process/decision IDs from BPMN/DMN files to detect duplicates
12
+ */
13
+ function extractDefinitionId(content, extension) {
14
+ const text = content.toString('utf-8');
15
+ if (extension === '.bpmn') {
16
+ // Extract bpmn:process id attribute
17
+ const match = text.match(/<bpmn\d?:process[^>]+id="([^"]+)"/);
18
+ return match ? match[1] : null;
19
+ }
20
+ else if (extension === '.dmn') {
21
+ // Extract decision id attribute
22
+ const match = text.match(/<decision[^>]+id="([^"]+)"/);
23
+ return match ? match[1] : null;
24
+ }
25
+ else if (extension === '.form') {
26
+ // Forms are identified by filename, not internal ID
27
+ return null;
28
+ }
29
+ return null;
30
+ }
31
+ /**
32
+ * Check if a path is a building block folder (contains _bb- in name)
33
+ */
34
+ function isBuildingBlockFolder(path) {
35
+ return basename(path).includes('_bb-');
36
+ }
37
+ /**
38
+ * Recursively collect resource files from a directory
39
+ */
40
+ function collectResourceFiles(dirPath, collected = []) {
41
+ if (!existsSync(dirPath)) {
42
+ return collected;
43
+ }
44
+ const stat = statSync(dirPath);
45
+ if (stat.isFile()) {
46
+ const ext = extname(dirPath);
47
+ if (RESOURCE_EXTENSIONS.includes(ext)) {
48
+ const parentDir = dirname(dirPath);
49
+ collected.push({
50
+ path: dirPath,
51
+ name: basename(dirPath),
52
+ content: readFileSync(dirPath),
53
+ isBuildingBlock: isBuildingBlockFolder(parentDir),
54
+ });
55
+ }
56
+ return collected;
57
+ }
58
+ if (stat.isDirectory()) {
59
+ const entries = readdirSync(dirPath);
60
+ // Separate building block folders from regular ones
61
+ const bbFolders = [];
62
+ const regularFolders = [];
63
+ const files = [];
64
+ entries.forEach(entry => {
65
+ const fullPath = join(dirPath, entry);
66
+ const entryStat = statSync(fullPath);
67
+ if (entryStat.isDirectory()) {
68
+ if (isBuildingBlockFolder(entry)) {
69
+ bbFolders.push(fullPath);
70
+ }
71
+ else {
72
+ regularFolders.push(fullPath);
73
+ }
74
+ }
75
+ else if (entryStat.isFile()) {
76
+ files.push(fullPath);
77
+ }
78
+ });
79
+ // Process files in current directory first
80
+ files.forEach(file => {
81
+ const ext = extname(file);
82
+ if (RESOURCE_EXTENSIONS.includes(ext)) {
83
+ collected.push({
84
+ path: file,
85
+ name: basename(file),
86
+ content: readFileSync(file),
87
+ isBuildingBlock: isBuildingBlockFolder(dirPath),
88
+ });
89
+ }
90
+ });
91
+ // Process building block folders first (prioritized)
92
+ bbFolders.forEach(bbFolder => {
93
+ collectResourceFiles(bbFolder, collected);
94
+ });
95
+ // Then process regular folders
96
+ regularFolders.forEach(regularFolder => {
97
+ collectResourceFiles(regularFolder, collected);
98
+ });
99
+ }
100
+ return collected;
101
+ }
102
+ /**
103
+ * Find duplicate process/decision IDs across resources
104
+ */
105
+ function findDuplicateDefinitionIds(resources) {
106
+ const idMap = resources.reduce((map, r) => {
107
+ const ext = extname(r.path);
108
+ if (ext === '.bpmn' || ext === '.dmn') {
109
+ const defId = extractDefinitionId(r.content, ext);
110
+ if (defId)
111
+ map.set(defId, [...(map.get(defId) ?? []), r.path]);
112
+ }
113
+ return map;
114
+ }, new Map());
115
+ return new Map([...idMap].filter(([, paths]) => paths.length > 1));
116
+ }
117
+ /**
118
+ * Deploy resources
119
+ */
120
+ export async function deploy(paths, options) {
121
+ const logger = getLogger();
122
+ const client = createClient(options.profile);
123
+ const tenantId = resolveTenantId(options.profile);
124
+ try {
125
+ const resources = [];
126
+ if (paths.length === 0) {
127
+ logger.error('No paths provided. Use: c8 deploy <path> or c8 deploy (for current directory)');
128
+ process.exit(1);
129
+ }
130
+ // Collect all resource files
131
+ paths.forEach(path => {
132
+ collectResourceFiles(path, resources);
133
+ });
134
+ if (resources.length === 0) {
135
+ logger.error('No BPMN/DMN/Form files found in the specified paths');
136
+ process.exit(1);
137
+ }
138
+ // Sort: building blocks first, then by path
139
+ resources.sort((a, b) => {
140
+ if (a.isBuildingBlock && !b.isBuildingBlock)
141
+ return -1;
142
+ if (!a.isBuildingBlock && b.isBuildingBlock)
143
+ return 1;
144
+ return a.path.localeCompare(b.path);
145
+ });
146
+ // Validate for duplicate process/decision IDs
147
+ const duplicates = findDuplicateDefinitionIds(resources);
148
+ if (duplicates.size > 0) {
149
+ logger.error('Cannot deploy: Multiple files with the same process/decision ID in one deployment');
150
+ duplicates.forEach((paths, id) => console.error(` Process/Decision ID "${id}" found in: ${paths.join(', ')}`));
151
+ console.error('\nCamunda does not allow deploying multiple resources with the same definition ID in a single deployment.');
152
+ console.error('Please deploy these files separately or ensure each process/decision has a unique ID.');
153
+ process.exit(1);
154
+ }
155
+ logger.info(`Deploying ${resources.length} resource(s)...`);
156
+ // Create deployment request - convert buffers to File objects with proper MIME types
157
+ const result = await client.createDeployment({
158
+ tenantId,
159
+ resources: resources.map(r => {
160
+ // Determine MIME type based on extension
161
+ const ext = r.name.split('.').pop()?.toLowerCase();
162
+ const mimeType = ext === 'bpmn' ? 'application/xml' :
163
+ ext === 'dmn' ? 'application/xml' :
164
+ ext === 'form' ? 'application/json' :
165
+ 'application/octet-stream';
166
+ return new File([r.content], r.name, { type: mimeType });
167
+ }),
168
+ });
169
+ logger.success('Deployment successful', result.deploymentKey.toString());
170
+ // Display deployed resources
171
+ const tableData = [];
172
+ result.processes.forEach(proc => {
173
+ tableData.push({
174
+ Type: 'Process',
175
+ ID: proc.processDefinitionId,
176
+ Version: proc.processDefinitionVersion,
177
+ Key: proc.processDefinitionKey.toString(),
178
+ });
179
+ });
180
+ result.decisions.forEach(dec => {
181
+ tableData.push({
182
+ Type: 'Decision',
183
+ ID: dec.decisionDefinitionId || '-',
184
+ Version: dec.version ?? '-',
185
+ Key: dec.decisionDefinitionKey?.toString() || '-',
186
+ });
187
+ });
188
+ result.forms.forEach(form => {
189
+ tableData.push({
190
+ Type: 'Form',
191
+ ID: form.formId || '-',
192
+ Version: form.version ?? '-',
193
+ Key: form.formKey?.toString() || '-',
194
+ });
195
+ });
196
+ if (tableData.length > 0) {
197
+ logger.table(tableData);
198
+ }
199
+ }
200
+ catch (error) {
201
+ // Log detailed error information
202
+ if (error && typeof error === 'object') {
203
+ const err = error;
204
+ logger.error('Failed to deploy resources', error);
205
+ if (err.response) {
206
+ console.error('API Response:', err.response);
207
+ }
208
+ if (err.message) {
209
+ console.error('Error message:', err.message);
210
+ }
211
+ if (err.cause) {
212
+ console.error('Error cause:', err.cause);
213
+ }
214
+ }
215
+ else {
216
+ logger.error('Failed to deploy resources', error);
217
+ }
218
+ process.exit(1);
219
+ }
220
+ }
221
+ //# sourceMappingURL=deployments.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deployments.js","sourceRoot":"","sources":["../../src/commands/deployments.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Help and version commands
3
+ */
4
+ /**
5
+ * Get package version
6
+ */
7
+ export declare function getVersion(): string;
8
+ /**
9
+ * Display version
10
+ */
11
+ export declare function showVersion(): void;
12
+ /**
13
+ * Display full help
14
+ */
15
+ export declare function showHelp(): void;
16
+ /**
17
+ * Show available resources for a verb
18
+ */
19
+ export declare function showVerbResources(verb: string): void;
20
+ //# sourceMappingURL=help.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../src/commands/help.ts"],"names":[],"mappings":"AAAA;;GAEG;AAUH;;GAEG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAInC;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,IAAI,CAGlC;AAED;;GAEG;AACH,wBAAgB,QAAQ,IAAI,IAAI,CAsD/B;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CA6BpD"}
@@ -0,0 +1,116 @@
1
+ /**
2
+ * Help and version commands
3
+ */
4
+ import { readFileSync } from 'node:fs';
5
+ import { join, dirname } from 'node:path';
6
+ import { fileURLToPath } from 'node:url';
7
+ import { getLogger } from "../logger.js";
8
+ const __filename = fileURLToPath(import.meta.url);
9
+ const __dirname = dirname(__filename);
10
+ /**
11
+ * Get package version
12
+ */
13
+ export function getVersion() {
14
+ const packagePath = join(__dirname, '../../package.json');
15
+ const packageJson = JSON.parse(readFileSync(packagePath, 'utf-8'));
16
+ return packageJson.version;
17
+ }
18
+ /**
19
+ * Display version
20
+ */
21
+ export function showVersion() {
22
+ const logger = getLogger();
23
+ logger.info(`c8ctl v${getVersion()}`);
24
+ }
25
+ /**
26
+ * Display full help
27
+ */
28
+ export function showHelp() {
29
+ const version = getVersion();
30
+ console.log(`
31
+ c8ctl - Camunda 8 CLI v${version}
32
+
33
+ Usage: c8ctl <command> [resource] [options]
34
+
35
+ Commands:
36
+ list <resource> List resources (pi, ut, inc, jobs, profiles)
37
+ get <resource> <key> Get resource by key (pi, topology)
38
+ create <resource> Create resource (pi)
39
+ cancel <resource> <key> Cancel resource (pi)
40
+ complete <resource> <key> Complete resource (ut, job)
41
+ fail job <key> Fail a job
42
+ activate jobs <type> Activate jobs by type
43
+ resolve inc <key> Resolve incident
44
+ publish msg <name> Publish message
45
+ correlate msg <name> Correlate message
46
+ deploy [path...] Deploy BPMN/DMN/forms
47
+ run <path> Deploy and start process
48
+ watch [path...] Watch files for changes and auto-deploy
49
+ add profile <name> Add a profile
50
+ remove profile <name> Remove a profile (alias: rm)
51
+ load plugin <name> Load a c8ctl plugin from npm registry
52
+ load plugin --from Load a c8ctl plugin from URL (file://, https://, git://)
53
+ unload plugin <name> Unload a c8ctl plugin (npm uninstall wrapper)
54
+ use profile|tenant Set active profile or tenant
55
+ output json|text Set output format
56
+ help Show this help
57
+
58
+ Flags:
59
+ --profile <name> Use specific profile for this command
60
+ --from <url> Load plugin from URL (use with 'load plugin')
61
+ --version, -v Show version
62
+ --help, -h Show help
63
+
64
+ Resource Aliases:
65
+ pi = process-instance(s)
66
+ ut = user-task(s)
67
+ inc = incident(s)
68
+ msg = message
69
+
70
+ Examples:
71
+ c8ctl list pi List process instances
72
+ c8ctl get pi 123456 Get process instance by key
73
+ c8ctl create pi --bpmnProcessId=myProcess
74
+ c8ctl deploy ./my-process.bpmn Deploy a BPMN file
75
+ c8ctl run ./my-process.bpmn Deploy and start process
76
+ c8ctl watch ./src Watch directory for changes
77
+ c8ctl use profile prod Set active profile
78
+ c8ctl output json Switch to JSON output
79
+ c8ctl load plugin my-plugin Load plugin from npm registry
80
+ c8ctl load plugin --from file:///path/to/plugin Load plugin from file URL
81
+ `.trim());
82
+ }
83
+ /**
84
+ * Show available resources for a verb
85
+ */
86
+ export function showVerbResources(verb) {
87
+ const resources = {
88
+ list: 'process-instances (pi), user-tasks (ut), incidents (inc), jobs, profiles, plugins',
89
+ get: 'process-instance (pi), topology',
90
+ create: 'process-instance (pi)',
91
+ complete: 'user-task (ut), job',
92
+ cancel: 'process-instance (pi)',
93
+ resolve: 'incident (inc)',
94
+ activate: 'jobs',
95
+ fail: 'job',
96
+ publish: 'message (msg)',
97
+ correlate: 'message (msg)',
98
+ add: 'profile',
99
+ remove: 'profile',
100
+ rm: 'profile',
101
+ load: 'plugin',
102
+ unload: 'plugin',
103
+ use: 'profile, tenant',
104
+ output: 'json, text',
105
+ };
106
+ const available = resources[verb];
107
+ if (available) {
108
+ console.log(`\nUsage: c8ctl ${verb} <resource>\n`);
109
+ console.log(`Available resources:\n ${available}`);
110
+ }
111
+ else {
112
+ console.log(`\nUnknown command: ${verb}`);
113
+ console.log('Run "c8ctl help" for usage information.');
114
+ }
115
+ }
116
+ //# sourceMappingURL=help.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/commands/help.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEtC;;GAEG;AACH,MAAM,UAAU,UAAU;IACxB,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;IAC1D,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;IACnE,OAAO,WAAW,CAAC,OAAO,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW;IACzB,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,CAAC,IAAI,CAAC,UAAU,UAAU,EAAE,EAAE,CAAC,CAAC;AACxC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ;IACtB,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,OAAO,CAAC,GAAG,CAAC;yBACW,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkD/B,CAAC,IAAI,EAAE,CAAC,CAAC;AACV,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,MAAM,SAAS,GAA2B;QACxC,IAAI,EAAE,mFAAmF;QACzF,GAAG,EAAE,iCAAiC;QACtC,MAAM,EAAE,uBAAuB;QAC/B,QAAQ,EAAE,qBAAqB;QAC/B,MAAM,EAAE,uBAAuB;QAC/B,OAAO,EAAE,gBAAgB;QACzB,QAAQ,EAAE,MAAM;QAChB,IAAI,EAAE,KAAK;QACX,OAAO,EAAE,eAAe;QACxB,SAAS,EAAE,eAAe;QAC1B,GAAG,EAAE,SAAS;QACd,MAAM,EAAE,SAAS;QACjB,EAAE,EAAE,SAAS;QACb,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE,QAAQ;QAChB,GAAG,EAAE,iBAAiB;QACtB,MAAM,EAAE,YAAY;KACrB,CAAC;IAEF,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAClC,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,eAAe,CAAC,CAAC;QACnD,OAAO,CAAC,GAAG,CAAC,2BAA2B,SAAS,EAAE,CAAC,CAAC;IACtD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,EAAE,CAAC,CAAC;QAC1C,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;IACzD,CAAC;AACH,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Incident commands
3
+ */
4
+ /**
5
+ * List incidents
6
+ */
7
+ export declare function listIncidents(options: {
8
+ profile?: string;
9
+ state?: string;
10
+ processInstanceKey?: string;
11
+ }): Promise<void>;
12
+ /**
13
+ * Resolve incident
14
+ */
15
+ export declare function resolveIncident(key: string, options: {
16
+ profile?: string;
17
+ }): Promise<void>;
18
+ //# sourceMappingURL=incidents.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"incidents.d.ts","sourceRoot":"","sources":["../../src/commands/incidents.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH;;GAEG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE;IAC3C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B,GAAG,OAAO,CAAC,IAAI,CAAC,CAuChB;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE;IAC1D,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,OAAO,CAAC,IAAI,CAAC,CAWhB"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Incident commands
3
+ */
4
+ import { getLogger } from "../logger.js";
5
+ import { createClient } from "../client.js";
6
+ import { resolveTenantId } from "../config.js";
7
+ /**
8
+ * List incidents
9
+ */
10
+ export async function listIncidents(options) {
11
+ const logger = getLogger();
12
+ const client = createClient(options.profile);
13
+ const tenantId = resolveTenantId(options.profile);
14
+ try {
15
+ const filter = {
16
+ filter: {
17
+ tenantId,
18
+ },
19
+ };
20
+ if (options.state) {
21
+ filter.filter.state = options.state;
22
+ }
23
+ if (options.processInstanceKey) {
24
+ filter.filter.processInstanceKey = options.processInstanceKey;
25
+ }
26
+ const result = await client.searchIncidents(filter, { consistency: { waitUpToMs: 0 } });
27
+ if (result.items && result.items.length > 0) {
28
+ const tableData = result.items.map((incident) => ({
29
+ Key: incident.incidentKey || incident.key,
30
+ Type: incident.errorType,
31
+ Message: incident.errorMessage?.substring(0, 50) || '',
32
+ State: incident.state,
33
+ 'Process Instance': incident.processInstanceKey,
34
+ 'Tenant ID': incident.tenantId,
35
+ }));
36
+ logger.table(tableData);
37
+ }
38
+ else {
39
+ logger.info('No incidents found');
40
+ }
41
+ }
42
+ catch (error) {
43
+ logger.error('Failed to list incidents', error);
44
+ process.exit(1);
45
+ }
46
+ }
47
+ /**
48
+ * Resolve incident
49
+ */
50
+ export async function resolveIncident(key, options) {
51
+ const logger = getLogger();
52
+ const client = createClient(options.profile);
53
+ try {
54
+ await client.resolveIncident({ incidentKey: key });
55
+ logger.success(`Incident ${key} resolved`);
56
+ }
57
+ catch (error) {
58
+ logger.error(`Failed to resolve incident ${key}`, error);
59
+ process.exit(1);
60
+ }
61
+ }
62
+ //# sourceMappingURL=incidents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"incidents.js","sourceRoot":"","sources":["../../src/commands/incidents.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAInC;IACC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAElD,IAAI,CAAC;QACH,MAAM,MAAM,GAAQ;YAClB,MAAM,EAAE;gBACN,QAAQ;aACT;SACF,CAAC;QAEF,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QACtC,CAAC;QAED,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;YAC/B,MAAM,CAAC,MAAM,CAAC,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC;QAChE,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAExF,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5C,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,QAAa,EAAE,EAAE,CAAC,CAAC;gBACrD,GAAG,EAAE,QAAQ,CAAC,WAAW,IAAI,QAAQ,CAAC,GAAG;gBACzC,IAAI,EAAE,QAAQ,CAAC,SAAS;gBACxB,OAAO,EAAE,QAAQ,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE;gBACtD,KAAK,EAAE,QAAQ,CAAC,KAAK;gBACrB,kBAAkB,EAAE,QAAQ,CAAC,kBAAkB;gBAC/C,WAAW,EAAE,QAAQ,CAAC,QAAQ;aAC/B,CAAC,CAAC,CAAC;YACJ,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC1B,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,0BAA0B,EAAE,KAAc,CAAC,CAAC;QACzD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,GAAW,EAAE,OAElD;IACC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAE7C,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,eAAe,CAAC,EAAE,WAAW,EAAE,GAAU,EAAE,CAAC,CAAC;QAC1D,MAAM,CAAC,OAAO,CAAC,YAAY,GAAG,WAAW,CAAC,CAAC;IAC7C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,8BAA8B,GAAG,EAAE,EAAE,KAAc,CAAC,CAAC;QAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Job commands
3
+ */
4
+ /**
5
+ * List jobs
6
+ */
7
+ export declare function listJobs(options: {
8
+ profile?: string;
9
+ state?: string;
10
+ type?: string;
11
+ }): Promise<void>;
12
+ /**
13
+ * Activate jobs
14
+ */
15
+ export declare function activateJobs(type: string, options: {
16
+ profile?: string;
17
+ maxJobsToActivate?: number;
18
+ timeout?: number;
19
+ worker?: string;
20
+ }): Promise<void>;
21
+ /**
22
+ * Complete job
23
+ */
24
+ export declare function completeJob(key: string, options: {
25
+ profile?: string;
26
+ variables?: string;
27
+ }): Promise<void>;
28
+ /**
29
+ * Fail job
30
+ */
31
+ export declare function failJob(key: string, options: {
32
+ profile?: string;
33
+ retries?: number;
34
+ errorMessage?: string;
35
+ }): Promise<void>;
36
+ //# sourceMappingURL=jobs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jobs.d.ts","sourceRoot":"","sources":["../../src/commands/jobs.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH;;GAEG;AACH,wBAAsB,QAAQ,CAAC,OAAO,EAAE;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,GAAG,OAAO,CAAC,IAAI,CAAC,CAuChB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE;IACxD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgChB;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE;IACtD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC,IAAI,CAAC,CAwBhB;AAED;;GAEG;AACH,wBAAsB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE;IAClD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBhB"}
@@ -0,0 +1,129 @@
1
+ /**
2
+ * Job commands
3
+ */
4
+ import { getLogger } from "../logger.js";
5
+ import { createClient } from "../client.js";
6
+ import { resolveTenantId } from "../config.js";
7
+ /**
8
+ * List jobs
9
+ */
10
+ export async function listJobs(options) {
11
+ const logger = getLogger();
12
+ const client = createClient(options.profile);
13
+ const tenantId = resolveTenantId(options.profile);
14
+ try {
15
+ const filter = {
16
+ filter: {
17
+ tenantId,
18
+ },
19
+ };
20
+ if (options.state) {
21
+ filter.filter.state = options.state;
22
+ }
23
+ if (options.type) {
24
+ filter.filter.type = options.type;
25
+ }
26
+ const result = await client.searchJobs(filter, { consistency: { waitUpToMs: 0 } });
27
+ if (result.items && result.items.length > 0) {
28
+ const tableData = result.items.map((job) => ({
29
+ Key: job.jobKey || job.key,
30
+ Type: job.type,
31
+ State: job.state,
32
+ Retries: job.retries,
33
+ 'Process Instance': job.processInstanceKey,
34
+ 'Tenant ID': job.tenantId,
35
+ }));
36
+ logger.table(tableData);
37
+ }
38
+ else {
39
+ logger.info('No jobs found');
40
+ }
41
+ }
42
+ catch (error) {
43
+ logger.error('Failed to list jobs', error);
44
+ process.exit(1);
45
+ }
46
+ }
47
+ /**
48
+ * Activate jobs
49
+ */
50
+ export async function activateJobs(type, options) {
51
+ const logger = getLogger();
52
+ const client = createClient(options.profile);
53
+ const tenantId = resolveTenantId(options.profile);
54
+ try {
55
+ const request = {
56
+ type,
57
+ tenantIds: [tenantId],
58
+ maxJobsToActivate: options.maxJobsToActivate || 10,
59
+ timeout: options.timeout || 60000,
60
+ worker: options.worker || 'c8ctl',
61
+ };
62
+ const result = await client.activateJobs(request);
63
+ if (result.jobs && result.jobs.length > 0) {
64
+ logger.success(`Activated ${result.jobs.length} jobs of type '${type}'`);
65
+ const tableData = result.jobs.map((job) => ({
66
+ Key: job.jobKey || job.key,
67
+ Type: job.type,
68
+ Retries: job.retries,
69
+ 'Process Instance': job.processInstanceKey,
70
+ }));
71
+ logger.table(tableData);
72
+ }
73
+ else {
74
+ logger.info(`No jobs of type '${type}' available to activate`);
75
+ }
76
+ }
77
+ catch (error) {
78
+ logger.error(`Failed to activate jobs of type '${type}'`, error);
79
+ process.exit(1);
80
+ }
81
+ }
82
+ /**
83
+ * Complete job
84
+ */
85
+ export async function completeJob(key, options) {
86
+ const logger = getLogger();
87
+ const client = createClient(options.profile);
88
+ try {
89
+ const request = {
90
+ jobKey: key,
91
+ };
92
+ if (options.variables) {
93
+ try {
94
+ request.variables = JSON.parse(options.variables);
95
+ }
96
+ catch (error) {
97
+ logger.error('Invalid JSON for variables', error);
98
+ process.exit(1);
99
+ }
100
+ }
101
+ await client.completeJob(request);
102
+ logger.success(`Job ${key} completed`);
103
+ }
104
+ catch (error) {
105
+ logger.error(`Failed to complete job ${key}`, error);
106
+ process.exit(1);
107
+ }
108
+ }
109
+ /**
110
+ * Fail job
111
+ */
112
+ export async function failJob(key, options) {
113
+ const logger = getLogger();
114
+ const client = createClient(options.profile);
115
+ try {
116
+ const request = {
117
+ jobKey: key,
118
+ retries: options.retries !== undefined ? options.retries : 0,
119
+ errorMessage: options.errorMessage || 'Job failed via c8ctl',
120
+ };
121
+ await client.failJob(request);
122
+ logger.success(`Job ${key} failed`);
123
+ }
124
+ catch (error) {
125
+ logger.error(`Failed to fail job ${key}`, error);
126
+ process.exit(1);
127
+ }
128
+ }
129
+ //# sourceMappingURL=jobs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jobs.js","sourceRoot":"","sources":["../../src/commands/jobs.ts"],"names":[],"mappings":"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"}