@sonisoft/now-sdk-ext-cli 2.0.0-alpha.0 → 2.1.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/README.md +2971 -313
- package/dist/commands/aggregate/count.d.ts +16 -0
- package/dist/commands/aggregate/count.d.ts.map +1 -0
- package/dist/commands/aggregate/count.js +67 -0
- package/dist/commands/aggregate/count.js.map +1 -0
- package/dist/commands/aggregate/group.d.ts +24 -0
- package/dist/commands/aggregate/group.d.ts.map +1 -0
- package/dist/commands/aggregate/group.js +120 -0
- package/dist/commands/aggregate/group.js.map +1 -0
- package/dist/commands/aggregate/query.d.ts +21 -0
- package/dist/commands/aggregate/query.d.ts.map +1 -0
- package/dist/commands/aggregate/query.js +100 -0
- package/dist/commands/aggregate/query.js.map +1 -0
- package/dist/commands/app/index.d.ts +0 -1
- package/dist/commands/app/index.d.ts.map +1 -1
- package/dist/commands/app/index.js +2 -2
- package/dist/commands/app/index.js.map +1 -1
- package/dist/commands/app/install.d.ts +0 -1
- package/dist/commands/app/install.d.ts.map +1 -1
- package/dist/commands/app/install.js +1 -2
- package/dist/commands/app/install.js.map +1 -1
- package/dist/commands/app/repo-install.d.ts +0 -1
- package/dist/commands/app/repo-install.d.ts.map +1 -1
- package/dist/commands/app/repo-install.js +1 -3
- package/dist/commands/app/repo-install.js.map +1 -1
- package/dist/commands/app/repo-list.d.ts +0 -1
- package/dist/commands/app/repo-list.d.ts.map +1 -1
- package/dist/commands/app/repo-list.js +1 -3
- package/dist/commands/app/repo-list.js.map +1 -1
- package/dist/commands/app/uninstall.d.ts +0 -1
- package/dist/commands/app/uninstall.d.ts.map +1 -1
- package/dist/commands/app/uninstall.js +1 -2
- package/dist/commands/app/uninstall.js.map +1 -1
- package/dist/commands/atf/index.d.ts +0 -46
- package/dist/commands/atf/index.d.ts.map +1 -1
- package/dist/commands/atf/index.js +48 -121
- package/dist/commands/atf/index.js.map +1 -1
- package/dist/commands/attachment/get.d.ts +14 -0
- package/dist/commands/attachment/get.d.ts.map +1 -0
- package/dist/commands/attachment/get.js +44 -0
- package/dist/commands/attachment/get.js.map +1 -0
- package/dist/commands/attachment/list.d.ts +16 -0
- package/dist/commands/attachment/list.d.ts.map +1 -0
- package/dist/commands/attachment/list.js +60 -0
- package/dist/commands/attachment/list.js.map +1 -0
- package/dist/commands/attachment/upload.d.ts +17 -0
- package/dist/commands/attachment/upload.d.ts.map +1 -0
- package/dist/commands/attachment/upload.js +71 -0
- package/dist/commands/attachment/upload.js.map +1 -0
- package/dist/commands/batch/create.d.ts +15 -0
- package/dist/commands/batch/create.d.ts.map +1 -0
- package/dist/commands/batch/create.js +56 -0
- package/dist/commands/batch/create.js.map +1 -0
- package/dist/commands/batch/update.d.ts +15 -0
- package/dist/commands/batch/update.d.ts.map +1 -0
- package/dist/commands/batch/update.js +56 -0
- package/dist/commands/batch/update.js.map +1 -0
- package/dist/commands/bulk/delete.d.ts +18 -0
- package/dist/commands/bulk/delete.d.ts.map +1 -0
- package/dist/commands/bulk/delete.js +95 -0
- package/dist/commands/bulk/delete.js.map +1 -0
- package/dist/commands/bulk/update.d.ts +19 -0
- package/dist/commands/bulk/update.d.ts.map +1 -0
- package/dist/commands/bulk/update.js +110 -0
- package/dist/commands/bulk/update.js.map +1 -0
- package/dist/commands/exec/index.d.ts +0 -1
- package/dist/commands/exec/index.d.ts.map +1 -1
- package/dist/commands/exec/index.js +12 -22
- package/dist/commands/exec/index.js.map +1 -1
- package/dist/commands/flow/action.d.ts +19 -0
- package/dist/commands/flow/action.d.ts.map +1 -0
- package/dist/commands/flow/action.js +88 -0
- package/dist/commands/flow/action.js.map +1 -0
- package/dist/commands/flow/cancel.d.ts +17 -0
- package/dist/commands/flow/cancel.d.ts.map +1 -0
- package/dist/commands/flow/cancel.js +60 -0
- package/dist/commands/flow/cancel.js.map +1 -0
- package/dist/commands/flow/error.d.ts +16 -0
- package/dist/commands/flow/error.d.ts.map +1 -0
- package/dist/commands/flow/error.js +51 -0
- package/dist/commands/flow/error.js.map +1 -0
- package/dist/commands/flow/message.d.ts +18 -0
- package/dist/commands/flow/message.d.ts.map +1 -0
- package/dist/commands/flow/message.js +66 -0
- package/dist/commands/flow/message.js.map +1 -0
- package/dist/commands/flow/outputs.d.ts +16 -0
- package/dist/commands/flow/outputs.d.ts.map +1 -0
- package/dist/commands/flow/outputs.js +55 -0
- package/dist/commands/flow/outputs.js.map +1 -0
- package/dist/commands/flow/run.d.ts +19 -0
- package/dist/commands/flow/run.d.ts.map +1 -0
- package/dist/commands/flow/run.js +100 -0
- package/dist/commands/flow/run.js.map +1 -0
- package/dist/commands/flow/status.d.ts +16 -0
- package/dist/commands/flow/status.d.ts.map +1 -0
- package/dist/commands/flow/status.js +52 -0
- package/dist/commands/flow/status.js.map +1 -0
- package/dist/commands/flow/subflow.d.ts +19 -0
- package/dist/commands/flow/subflow.d.ts.map +1 -0
- package/dist/commands/flow/subflow.js +94 -0
- package/dist/commands/flow/subflow.js.map +1 -0
- package/dist/commands/flow/test.d.ts +18 -0
- package/dist/commands/flow/test.d.ts.map +1 -0
- package/dist/commands/flow/test.js +91 -0
- package/dist/commands/flow/test.js.map +1 -0
- package/dist/commands/health/check.d.ts +20 -0
- package/dist/commands/health/check.d.ts.map +1 -0
- package/dist/commands/health/check.js +105 -0
- package/dist/commands/health/check.js.map +1 -0
- package/dist/commands/log/index.d.ts +2 -26
- package/dist/commands/log/index.d.ts.map +1 -1
- package/dist/commands/log/index.js +23 -251
- package/dist/commands/log/index.js.map +1 -1
- package/dist/commands/query/app.d.ts +17 -0
- package/dist/commands/query/app.d.ts.map +1 -0
- package/dist/commands/query/app.js +81 -0
- package/dist/commands/query/app.js.map +1 -0
- package/dist/commands/query/columns.d.ts +16 -0
- package/dist/commands/query/columns.d.ts.map +1 -0
- package/dist/commands/query/columns.js +76 -0
- package/dist/commands/query/columns.js.map +1 -0
- package/dist/commands/query/index.d.ts +19 -0
- package/dist/commands/query/index.d.ts.map +1 -0
- package/dist/commands/query/index.js +94 -0
- package/dist/commands/query/index.js.map +1 -0
- package/dist/commands/query/syslog.d.ts +16 -0
- package/dist/commands/query/syslog.d.ts.map +1 -0
- package/dist/commands/query/syslog.js +67 -0
- package/dist/commands/query/syslog.js.map +1 -0
- package/dist/commands/schema/field.d.ts +16 -0
- package/dist/commands/schema/field.d.ts.map +1 -0
- package/dist/commands/schema/field.js +62 -0
- package/dist/commands/schema/field.js.map +1 -0
- package/dist/commands/schema/index.d.ts +19 -0
- package/dist/commands/schema/index.d.ts.map +1 -0
- package/dist/commands/schema/index.js +90 -0
- package/dist/commands/schema/index.js.map +1 -0
- package/dist/commands/schema/validate-catalog.d.ts +15 -0
- package/dist/commands/schema/validate-catalog.d.ts.map +1 -0
- package/dist/commands/schema/validate-catalog.js +58 -0
- package/dist/commands/schema/validate-catalog.js.map +1 -0
- package/dist/commands/scope/index.d.ts +14 -0
- package/dist/commands/scope/index.d.ts.map +1 -0
- package/dist/commands/scope/index.js +58 -0
- package/dist/commands/scope/index.js.map +1 -0
- package/dist/commands/scope/set.d.ts +14 -0
- package/dist/commands/scope/set.d.ts.map +1 -0
- package/dist/commands/scope/set.js +44 -0
- package/dist/commands/scope/set.js.map +1 -0
- package/dist/commands/script-sync/pull.d.ts +16 -0
- package/dist/commands/script-sync/pull.d.ts.map +1 -0
- package/dist/commands/script-sync/pull.js +74 -0
- package/dist/commands/script-sync/pull.js.map +1 -0
- package/dist/commands/script-sync/push.d.ts +16 -0
- package/dist/commands/script-sync/push.d.ts.map +1 -0
- package/dist/commands/script-sync/push.js +73 -0
- package/dist/commands/script-sync/push.js.map +1 -0
- package/dist/commands/script-sync/sync.d.ts +15 -0
- package/dist/commands/script-sync/sync.d.ts.map +1 -0
- package/dist/commands/script-sync/sync.js +71 -0
- package/dist/commands/script-sync/sync.js.map +1 -0
- package/dist/commands/search/add-table.d.ts +16 -0
- package/dist/commands/search/add-table.d.ts.map +1 -0
- package/dist/commands/search/add-table.js +68 -0
- package/dist/commands/search/add-table.js.map +1 -0
- package/dist/commands/search/groups.d.ts +12 -0
- package/dist/commands/search/groups.d.ts.map +1 -0
- package/dist/commands/search/groups.js +42 -0
- package/dist/commands/search/groups.js.map +1 -0
- package/dist/commands/search/index.d.ts +18 -0
- package/dist/commands/search/index.d.ts.map +1 -0
- package/dist/commands/search/index.js +103 -0
- package/dist/commands/search/index.js.map +1 -0
- package/dist/commands/search/tables.d.ts +14 -0
- package/dist/commands/search/tables.d.ts.map +1 -0
- package/dist/commands/search/tables.js +50 -0
- package/dist/commands/search/tables.js.map +1 -0
- package/dist/commands/store/install.d.ts +19 -0
- package/dist/commands/store/install.d.ts.map +1 -0
- package/dist/commands/store/install.js +90 -0
- package/dist/commands/store/install.js.map +1 -0
- package/dist/commands/store/search.d.ts +16 -0
- package/dist/commands/store/search.d.ts.map +1 -0
- package/dist/commands/store/search.js +67 -0
- package/dist/commands/store/search.js.map +1 -0
- package/dist/commands/store/update.d.ts +18 -0
- package/dist/commands/store/update.d.ts.map +1 -0
- package/dist/commands/store/update.js +83 -0
- package/dist/commands/store/update.js.map +1 -0
- package/dist/commands/store/validate.d.ts +14 -0
- package/dist/commands/store/validate.d.ts.map +1 -0
- package/dist/commands/store/validate.js +43 -0
- package/dist/commands/store/validate.js.map +1 -0
- package/dist/commands/task/approve.d.ts +15 -0
- package/dist/commands/task/approve.d.ts.map +1 -0
- package/dist/commands/task/approve.js +66 -0
- package/dist/commands/task/approve.js.map +1 -0
- package/dist/commands/task/assign.d.ts +17 -0
- package/dist/commands/task/assign.d.ts.map +1 -0
- package/dist/commands/task/assign.js +86 -0
- package/dist/commands/task/assign.js.map +1 -0
- package/dist/commands/task/close.d.ts +16 -0
- package/dist/commands/task/close.d.ts.map +1 -0
- package/dist/commands/task/close.js +71 -0
- package/dist/commands/task/close.js.map +1 -0
- package/dist/commands/task/comment.d.ts +17 -0
- package/dist/commands/task/comment.d.ts.map +1 -0
- package/dist/commands/task/comment.js +86 -0
- package/dist/commands/task/comment.js.map +1 -0
- package/dist/commands/task/find.d.ts +15 -0
- package/dist/commands/task/find.d.ts.map +1 -0
- package/dist/commands/task/find.js +65 -0
- package/dist/commands/task/find.js.map +1 -0
- package/dist/commands/task/resolve.d.ts +16 -0
- package/dist/commands/task/resolve.d.ts.map +1 -0
- package/dist/commands/task/resolve.js +71 -0
- package/dist/commands/task/resolve.js.map +1 -0
- package/dist/commands/update-set/clone.d.ts +15 -0
- package/dist/commands/update-set/clone.d.ts.map +1 -0
- package/dist/commands/update-set/clone.js +50 -0
- package/dist/commands/update-set/clone.js.map +1 -0
- package/dist/commands/update-set/create.d.ts +16 -0
- package/dist/commands/update-set/create.d.ts.map +1 -0
- package/dist/commands/update-set/create.js +60 -0
- package/dist/commands/update-set/create.js.map +1 -0
- package/dist/commands/update-set/current.d.ts +14 -0
- package/dist/commands/update-set/current.d.ts.map +1 -0
- package/dist/commands/update-set/current.js +55 -0
- package/dist/commands/update-set/current.js.map +1 -0
- package/dist/commands/update-set/index.d.ts +15 -0
- package/dist/commands/update-set/index.d.ts.map +1 -0
- package/dist/commands/update-set/index.js +56 -0
- package/dist/commands/update-set/index.js.map +1 -0
- package/dist/commands/update-set/inspect.d.ts +14 -0
- package/dist/commands/update-set/inspect.d.ts.map +1 -0
- package/dist/commands/update-set/inspect.js +43 -0
- package/dist/commands/update-set/inspect.js.map +1 -0
- package/dist/commands/update-set/move.d.ts +16 -0
- package/dist/commands/update-set/move.d.ts.map +1 -0
- package/dist/commands/update-set/move.js +57 -0
- package/dist/commands/update-set/move.js.map +1 -0
- package/dist/commands/workflow/create.d.ts +14 -0
- package/dist/commands/workflow/create.d.ts.map +1 -0
- package/dist/commands/workflow/create.js +50 -0
- package/dist/commands/workflow/create.js.map +1 -0
- package/dist/commands/workflow/publish.d.ts +15 -0
- package/dist/commands/workflow/publish.d.ts.map +1 -0
- package/dist/commands/workflow/publish.js +53 -0
- package/dist/commands/workflow/publish.js.map +1 -0
- package/dist/commands/xml/export.d.ts +17 -0
- package/dist/commands/xml/export.d.ts.map +1 -0
- package/dist/commands/xml/export.js +87 -0
- package/dist/commands/xml/export.js.map +1 -0
- package/dist/commands/xml/import.d.ts +16 -0
- package/dist/commands/xml/import.d.ts.map +1 -0
- package/dist/commands/xml/import.js +69 -0
- package/dist/commands/xml/import.js.map +1 -0
- package/dist/common/authenticated-command.d.ts +5 -2
- package/dist/common/authenticated-command.d.ts.map +1 -1
- package/dist/common/authenticated-command.js +12 -3
- package/dist/common/authenticated-command.js.map +1 -1
- package/dist/common/base-command.d.ts +2 -2
- package/dist/common/base-command.d.ts.map +1 -1
- package/dist/common/base-command.js +0 -1
- package/dist/common/base-command.js.map +1 -1
- package/dist/common/scope-autocomplete.js +0 -1
- package/dist/common/scope-autocomplete.js.map +1 -1
- package/dist/services/aggregate-display.service.d.ts +18 -0
- package/dist/services/aggregate-display.service.d.ts.map +1 -0
- package/dist/services/aggregate-display.service.js +83 -0
- package/dist/services/aggregate-display.service.js.map +1 -0
- package/dist/services/app-display.service.d.ts +36 -0
- package/dist/services/app-display.service.d.ts.map +1 -0
- package/dist/services/app-display.service.js +101 -0
- package/dist/services/app-display.service.js.map +1 -0
- package/dist/services/atf-result-formatter.service.d.ts +64 -0
- package/dist/services/atf-result-formatter.service.d.ts.map +1 -0
- package/dist/services/atf-result-formatter.service.js +83 -0
- package/dist/services/atf-result-formatter.service.js.map +1 -0
- package/dist/services/attachment-display.service.d.ts +18 -0
- package/dist/services/attachment-display.service.d.ts.map +1 -0
- package/dist/services/attachment-display.service.js +93 -0
- package/dist/services/attachment-display.service.js.map +1 -0
- package/dist/services/batch-display.service.d.ts +11 -0
- package/dist/services/batch-display.service.d.ts.map +1 -0
- package/dist/services/batch-display.service.js +75 -0
- package/dist/services/batch-display.service.js.map +1 -0
- package/dist/services/bulk-display.service.d.ts +11 -0
- package/dist/services/bulk-display.service.d.ts.map +1 -0
- package/dist/services/bulk-display.service.js +85 -0
- package/dist/services/bulk-display.service.js.map +1 -0
- package/dist/services/code-search-display.service.d.ts +23 -0
- package/dist/services/code-search-display.service.d.ts.map +1 -0
- package/dist/services/code-search-display.service.js +130 -0
- package/dist/services/code-search-display.service.js.map +1 -0
- package/dist/services/flow-display.service.d.ts +19 -0
- package/dist/services/flow-display.service.d.ts.map +1 -0
- package/dist/services/flow-display.service.js +194 -0
- package/dist/services/flow-display.service.js.map +1 -0
- package/dist/services/health-display.service.d.ts +8 -0
- package/dist/services/health-display.service.d.ts.map +1 -0
- package/dist/services/health-display.service.js +91 -0
- package/dist/services/health-display.service.js.map +1 -0
- package/dist/services/log-filter.service.d.ts +31 -0
- package/dist/services/log-filter.service.d.ts.map +1 -0
- package/dist/services/log-filter.service.js +117 -0
- package/dist/services/log-filter.service.js.map +1 -0
- package/dist/services/log-formatter.service.d.ts +30 -0
- package/dist/services/log-formatter.service.d.ts.map +1 -0
- package/dist/services/log-formatter.service.js +122 -0
- package/dist/services/log-formatter.service.js.map +1 -0
- package/dist/services/query-display.service.d.ts +23 -0
- package/dist/services/query-display.service.d.ts.map +1 -0
- package/dist/services/query-display.service.js +152 -0
- package/dist/services/query-display.service.js.map +1 -0
- package/dist/services/schema-display.service.d.ts +18 -0
- package/dist/services/schema-display.service.d.ts.map +1 -0
- package/dist/services/schema-display.service.js +106 -0
- package/dist/services/schema-display.service.js.map +1 -0
- package/dist/services/scope-display.service.d.ts +18 -0
- package/dist/services/scope-display.service.d.ts.map +1 -0
- package/dist/services/scope-display.service.js +83 -0
- package/dist/services/scope-display.service.js.map +1 -0
- package/dist/services/script-parameter.service.d.ts +16 -0
- package/dist/services/script-parameter.service.d.ts.map +1 -0
- package/dist/services/script-parameter.service.js +34 -0
- package/dist/services/script-parameter.service.js.map +1 -0
- package/dist/services/script-sync-display.service.d.ts +13 -0
- package/dist/services/script-sync-display.service.d.ts.map +1 -0
- package/dist/services/script-sync-display.service.js +71 -0
- package/dist/services/script-sync-display.service.js.map +1 -0
- package/dist/services/store-app-display.service.d.ts +16 -0
- package/dist/services/store-app-display.service.d.ts.map +1 -0
- package/dist/services/store-app-display.service.js +114 -0
- package/dist/services/store-app-display.service.js.map +1 -0
- package/dist/services/task-display.service.d.ts +14 -0
- package/dist/services/task-display.service.d.ts.map +1 -0
- package/dist/services/task-display.service.js +86 -0
- package/dist/services/task-display.service.js.map +1 -0
- package/dist/services/update-set-display.service.d.ts +28 -0
- package/dist/services/update-set-display.service.d.ts.map +1 -0
- package/dist/services/update-set-display.service.js +150 -0
- package/dist/services/update-set-display.service.js.map +1 -0
- package/dist/services/workflow-display.service.d.ts +13 -0
- package/dist/services/workflow-display.service.d.ts.map +1 -0
- package/dist/services/workflow-display.service.js +53 -0
- package/dist/services/workflow-display.service.js.map +1 -0
- package/dist/services/xml-display.service.d.ts +11 -0
- package/dist/services/xml-display.service.d.ts.map +1 -0
- package/dist/services/xml-display.service.js +55 -0
- package/dist/services/xml-display.service.js.map +1 -0
- package/dist/util/log-factory.d.ts +5 -0
- package/dist/util/log-factory.d.ts.map +1 -0
- package/dist/util/log-factory.js +8 -0
- package/dist/util/log-factory.js.map +1 -0
- package/oclif.manifest.json +5608 -387
- package/package.json +83 -23
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/* eslint-disable perfectionist/sort-objects */
|
|
2
|
+
import { Flags } from '@oclif/core';
|
|
3
|
+
import { FlowManager } from '@sonisoft/now-sdk-ext-core';
|
|
4
|
+
import { AuthenticatedCommand } from '../../common/authenticated-command.js';
|
|
5
|
+
import { FlowDisplayService } from '../../services/flow-display.service.js';
|
|
6
|
+
export class FlowStatus extends AuthenticatedCommand {
|
|
7
|
+
static args = {};
|
|
8
|
+
static description = 'Get the status of a flow execution context.\n\n' +
|
|
9
|
+
'Queries sys_flow_context to retrieve the current state of a flow execution.\n\n' +
|
|
10
|
+
'Possible states: QUEUED, IN_PROGRESS, WAITING, COMPLETE, CANCELLED, ERROR';
|
|
11
|
+
static examples = [
|
|
12
|
+
{
|
|
13
|
+
description: 'Check flow execution status',
|
|
14
|
+
command: '<%= config.bin %> <%= command.id %> --context-id abc123def456 --auth dev',
|
|
15
|
+
},
|
|
16
|
+
];
|
|
17
|
+
static flags = {
|
|
18
|
+
'context-id': Flags.string({
|
|
19
|
+
char: 'c',
|
|
20
|
+
description: 'Flow execution context sys_id',
|
|
21
|
+
required: true,
|
|
22
|
+
}),
|
|
23
|
+
'scope': Flags.string({
|
|
24
|
+
description: 'Scope context for script execution',
|
|
25
|
+
required: false,
|
|
26
|
+
}),
|
|
27
|
+
'json': Flags.boolean({
|
|
28
|
+
char: 'j',
|
|
29
|
+
description: 'Output results as JSON',
|
|
30
|
+
required: false,
|
|
31
|
+
default: false,
|
|
32
|
+
}),
|
|
33
|
+
};
|
|
34
|
+
async run() {
|
|
35
|
+
const { flags } = await this.parse(FlowStatus);
|
|
36
|
+
const displayService = new FlowDisplayService();
|
|
37
|
+
try {
|
|
38
|
+
const flowManager = new FlowManager(this.instance, flags.scope);
|
|
39
|
+
this.log(`Checking flow context status: ${flags['context-id']}`);
|
|
40
|
+
const result = await flowManager.getFlowContextStatus(flags['context-id']);
|
|
41
|
+
const lines = displayService.formatStatusResult(result, flags.json ?? false);
|
|
42
|
+
for (const line of lines) {
|
|
43
|
+
(flags.json ?? false) ? console.log(line) : this.log(line);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
catch (error) {
|
|
47
|
+
this._logger.error("Error getting flow status.", error);
|
|
48
|
+
this.error(error);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/commands/flow/status.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAE/C,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAExD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAA;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAA;AAE3E,MAAM,OAAO,UAAW,SAAQ,oBAAuC;IAErE,MAAM,CAAC,IAAI,GAAG,EAAE,CAAA;IAClB,MAAM,CAAC,WAAW,GAAG,iDAAiD;QAClE,iFAAiF;QACjF,2EAA2E,CAAC;IAChF,MAAM,CAAC,QAAQ,GAAG;QACd;YACE,WAAW,EAAE,6BAA6B;YAC1C,OAAO,EAAE,0EAA0E;SACpF;KACF,CAAA;IACH,MAAM,CAAC,KAAK,GAAG;QACX,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC;YACzB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,+BAA+B;YAC5C,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC;YACpB,WAAW,EAAE,oCAAoC;YACjD,QAAQ,EAAE,KAAK;SAChB,CAAC;QACF,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;YACpB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,wBAAwB;YACrC,QAAQ,EAAE,KAAK;YACf,OAAO,EAAE,KAAK;SACf,CAAC;KACH,CAAA;IAED,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC/C,MAAM,cAAc,GAAG,IAAI,kBAAkB,EAAE,CAAC;QAEhD,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;YAEhE,IAAI,CAAC,GAAG,CAAC,iCAAiC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;YAEjE,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,oBAAoB,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;YAE3E,MAAM,KAAK,GAAG,cAAc,CAAC,kBAAkB,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC;YAC7E,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC7D,CAAC;QAEH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAc,CAAC,CAAC;YACjE,IAAI,CAAC,KAAK,CAAC,KAAc,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { AuthenticatedCommand } from '../../common/authenticated-command.js';
|
|
2
|
+
export declare class FlowSubflow extends AuthenticatedCommand<typeof FlowSubflow> {
|
|
3
|
+
static args: {};
|
|
4
|
+
static description: string;
|
|
5
|
+
static examples: {
|
|
6
|
+
description: string;
|
|
7
|
+
command: string;
|
|
8
|
+
}[];
|
|
9
|
+
static flags: {
|
|
10
|
+
name: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
11
|
+
inputs: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
12
|
+
mode: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
13
|
+
scope: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
14
|
+
quick: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
15
|
+
json: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
16
|
+
};
|
|
17
|
+
run(): Promise<void>;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=subflow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subflow.d.ts","sourceRoot":"","sources":["../../../src/commands/flow/subflow.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAA;AAG5E,qBAAa,WAAY,SAAQ,oBAAoB,CAAC,OAAO,WAAW,CAAC;IAEvE,MAAM,CAAC,IAAI,KAAK;IAClB,MAAM,CAAC,WAAW,SAQgD;IAClE,MAAM,CAAC,QAAQ;;;QASZ;IACH,MAAM,CAAC,KAAK;;;;;;;MAiCT;IAEK,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAoC3B"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/* eslint-disable perfectionist/sort-objects */
|
|
2
|
+
import { Flags } from '@oclif/core';
|
|
3
|
+
import { FlowManager } from '@sonisoft/now-sdk-ext-core';
|
|
4
|
+
import { AuthenticatedCommand } from '../../common/authenticated-command.js';
|
|
5
|
+
import { FlowDisplayService } from '../../services/flow-display.service.js';
|
|
6
|
+
export class FlowSubflow extends AuthenticatedCommand {
|
|
7
|
+
static args = {};
|
|
8
|
+
static description = 'Execute a published Flow Designer subflow by scoped name.\n\n' +
|
|
9
|
+
'Runs a subflow using the sn_fd.FlowAPI ScriptableFlowRunner.\n\n' +
|
|
10
|
+
'Note: This command requires the subflow to be published. For testing flows that ' +
|
|
11
|
+
'are not yet published (draft/saved state), use `flow test` instead.\n\n' +
|
|
12
|
+
'Features:\n' +
|
|
13
|
+
' \u2022 Execute subflows by scoped name\n' +
|
|
14
|
+
' \u2022 Pass input values as JSON\n' +
|
|
15
|
+
' \u2022 Foreground or background execution mode\n' +
|
|
16
|
+
' \u2022 Returns context ID, outputs, and debug information';
|
|
17
|
+
static examples = [
|
|
18
|
+
{
|
|
19
|
+
description: 'Run a subflow',
|
|
20
|
+
command: '<%= config.bin %> <%= command.id %> --name global.my_subflow --auth dev',
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
description: 'Run with inputs',
|
|
24
|
+
command: '<%= config.bin %> <%= command.id %> --name x_myapp.process_record --inputs \'{"table":"incident","sys_id":"abc123"}\' --auth dev',
|
|
25
|
+
},
|
|
26
|
+
];
|
|
27
|
+
static flags = {
|
|
28
|
+
'name': Flags.string({
|
|
29
|
+
char: 'n',
|
|
30
|
+
description: 'Scoped name of the subflow (e.g. global.my_subflow)',
|
|
31
|
+
required: true,
|
|
32
|
+
}),
|
|
33
|
+
'inputs': Flags.string({
|
|
34
|
+
char: 'i',
|
|
35
|
+
description: 'JSON object of input name-value pairs',
|
|
36
|
+
required: false,
|
|
37
|
+
}),
|
|
38
|
+
'mode': Flags.string({
|
|
39
|
+
char: 'm',
|
|
40
|
+
description: 'Execution mode',
|
|
41
|
+
required: false,
|
|
42
|
+
default: 'foreground',
|
|
43
|
+
options: ['foreground', 'background'],
|
|
44
|
+
}),
|
|
45
|
+
'scope': Flags.string({
|
|
46
|
+
description: 'Scope context for script execution',
|
|
47
|
+
required: false,
|
|
48
|
+
}),
|
|
49
|
+
'quick': Flags.boolean({
|
|
50
|
+
description: 'Skip execution detail records for better performance',
|
|
51
|
+
required: false,
|
|
52
|
+
default: false,
|
|
53
|
+
}),
|
|
54
|
+
'json': Flags.boolean({
|
|
55
|
+
char: 'j',
|
|
56
|
+
description: 'Output results as JSON',
|
|
57
|
+
required: false,
|
|
58
|
+
default: false,
|
|
59
|
+
}),
|
|
60
|
+
};
|
|
61
|
+
async run() {
|
|
62
|
+
const { flags } = await this.parse(FlowSubflow);
|
|
63
|
+
const displayService = new FlowDisplayService();
|
|
64
|
+
try {
|
|
65
|
+
let inputs;
|
|
66
|
+
if (flags.inputs) {
|
|
67
|
+
try {
|
|
68
|
+
inputs = JSON.parse(flags.inputs);
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
this.error('Invalid JSON in --inputs flag.');
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
const flowManager = new FlowManager(this.instance, flags.scope);
|
|
76
|
+
this.log(`Executing subflow: ${flags.name} (${flags.mode})`);
|
|
77
|
+
const result = await flowManager.executeSubflow({
|
|
78
|
+
scopedName: flags.name,
|
|
79
|
+
inputs,
|
|
80
|
+
mode: flags.mode,
|
|
81
|
+
quick: flags.quick,
|
|
82
|
+
});
|
|
83
|
+
const lines = displayService.formatExecutionResult(result, flags.json ?? false);
|
|
84
|
+
for (const line of lines) {
|
|
85
|
+
(flags.json ?? false) ? console.log(line) : this.log(line);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
catch (error) {
|
|
89
|
+
this._logger.error("Error executing subflow.", error);
|
|
90
|
+
this.error(error);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=subflow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subflow.js","sourceRoot":"","sources":["../../../src/commands/flow/subflow.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { AuthenticatedCommand } from '../../common/authenticated-command.js';
|
|
2
|
+
export declare class FlowTest extends AuthenticatedCommand<typeof FlowTest> {
|
|
3
|
+
static args: {};
|
|
4
|
+
static description: string;
|
|
5
|
+
static examples: {
|
|
6
|
+
description: string;
|
|
7
|
+
command: string;
|
|
8
|
+
}[];
|
|
9
|
+
static flags: {
|
|
10
|
+
'flow-id': import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
11
|
+
'output-map': import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
12
|
+
scope: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
13
|
+
synchronous: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
14
|
+
json: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
15
|
+
};
|
|
16
|
+
run(): Promise<void>;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../../src/commands/flow/test.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAA;AAG5E,qBAAa,QAAS,SAAQ,oBAAoB,CAAC,OAAO,QAAQ,CAAC;IAEjE,MAAM,CAAC,IAAI,KAAK;IAClB,MAAM,CAAC,WAAW,SASmC;IACrD,MAAM,CAAC,QAAQ;;;QAaZ;IACH,MAAM,CAAC,KAAK;;;;;;MA2BT;IAEK,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAkC3B"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/* eslint-disable perfectionist/sort-objects */
|
|
2
|
+
import { Flags } from '@oclif/core';
|
|
3
|
+
import { FlowManager } from '@sonisoft/now-sdk-ext-core';
|
|
4
|
+
import { AuthenticatedCommand } from '../../common/authenticated-command.js';
|
|
5
|
+
import { FlowDisplayService } from '../../services/flow-display.service.js';
|
|
6
|
+
export class FlowTest extends AuthenticatedCommand {
|
|
7
|
+
static args = {};
|
|
8
|
+
static description = 'Test a Flow Designer flow without requiring it to be published.\n\n' +
|
|
9
|
+
'Invokes the same API as the "Test" button in Flow Designer, running the flow ' +
|
|
10
|
+
'in its current saved (draft) state. Unlike `flow run` which requires a published ' +
|
|
11
|
+
'flow and uses sn_fd.FlowAPI, `flow test` works on unpublished drafts via the ' +
|
|
12
|
+
'ProcessFlow REST API.\n\n' +
|
|
13
|
+
'Features:\n' +
|
|
14
|
+
' \u2022 Test flows by sys_id or scoped name\n' +
|
|
15
|
+
' \u2022 Pass trigger output values as JSON via --output-map\n' +
|
|
16
|
+
' \u2022 Auto-resolves scope from flow definition if not provided\n' +
|
|
17
|
+
' \u2022 Synchronous or asynchronous execution';
|
|
18
|
+
static examples = [
|
|
19
|
+
{
|
|
20
|
+
description: 'Test a flow by sys_id',
|
|
21
|
+
command: '<%= config.bin %> <%= command.id %> --flow-id 887dda5583237210fdb8f7b6feaad32c --output-map \'{"current":"0ecd7552db252200a6a2b31be0b8f5e6","table_name":"change_request"}\' --auth dev',
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
description: 'Test a flow by scoped name with explicit scope',
|
|
25
|
+
command: '<%= config.bin %> <%= command.id %> -f x_myapp.my_flow -o \'{"current":"abc123","table_name":"incident"}\' --scope x_myapp --auth dev',
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
description: 'Test with JSON output',
|
|
29
|
+
command: '<%= config.bin %> <%= command.id %> -f 887dda5583237210fdb8f7b6feaad32c -o \'{"current":"abc123"}\' --json --auth dev',
|
|
30
|
+
},
|
|
31
|
+
];
|
|
32
|
+
static flags = {
|
|
33
|
+
'flow-id': Flags.string({
|
|
34
|
+
char: 'f',
|
|
35
|
+
description: 'Flow sys_id or scoped name (e.g. x_myapp.my_flow)',
|
|
36
|
+
required: true,
|
|
37
|
+
}),
|
|
38
|
+
'output-map': Flags.string({
|
|
39
|
+
char: 'o',
|
|
40
|
+
description: 'JSON mapping of trigger output variable names to test values (e.g. \'{"current":"<sys_id>","table_name":"change_request"}\')',
|
|
41
|
+
required: true,
|
|
42
|
+
}),
|
|
43
|
+
'scope': Flags.string({
|
|
44
|
+
description: 'Scope sys_id for transaction scope (auto-resolved from flow definition if omitted)',
|
|
45
|
+
required: false,
|
|
46
|
+
}),
|
|
47
|
+
'synchronous': Flags.boolean({
|
|
48
|
+
description: 'Run test synchronously (default: true)',
|
|
49
|
+
required: false,
|
|
50
|
+
default: true,
|
|
51
|
+
allowNo: true,
|
|
52
|
+
}),
|
|
53
|
+
'json': Flags.boolean({
|
|
54
|
+
char: 'j',
|
|
55
|
+
description: 'Output results as JSON',
|
|
56
|
+
required: false,
|
|
57
|
+
default: false,
|
|
58
|
+
}),
|
|
59
|
+
};
|
|
60
|
+
async run() {
|
|
61
|
+
const { flags } = await this.parse(FlowTest);
|
|
62
|
+
const displayService = new FlowDisplayService();
|
|
63
|
+
try {
|
|
64
|
+
let outputMap;
|
|
65
|
+
try {
|
|
66
|
+
outputMap = JSON.parse(flags['output-map']);
|
|
67
|
+
}
|
|
68
|
+
catch {
|
|
69
|
+
this.error('Invalid JSON in --output-map flag.');
|
|
70
|
+
}
|
|
71
|
+
// Constructor scope sets the auth/session context; testFlow scope sets the transaction scope
|
|
72
|
+
const flowManager = new FlowManager(this.instance, flags.scope);
|
|
73
|
+
this.log(`Testing flow: ${flags['flow-id']} (${flags.synchronous ? 'synchronous' : 'asynchronous'})`);
|
|
74
|
+
const result = await flowManager.testFlow({
|
|
75
|
+
flowId: flags['flow-id'],
|
|
76
|
+
outputMap,
|
|
77
|
+
scope: flags.scope,
|
|
78
|
+
runOnThread: flags.synchronous,
|
|
79
|
+
});
|
|
80
|
+
const lines = displayService.formatTestResult(result, flags.json ?? false);
|
|
81
|
+
for (const line of lines) {
|
|
82
|
+
(flags.json ?? false) ? console.log(line) : this.log(line);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
catch (error) {
|
|
86
|
+
this._logger.error("Error testing flow.", error);
|
|
87
|
+
this.error(error);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test.js","sourceRoot":"","sources":["../../../src/commands/flow/test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { AuthenticatedCommand } from '../../common/authenticated-command.js';
|
|
2
|
+
export declare class HealthCheck extends AuthenticatedCommand<typeof HealthCheck> {
|
|
3
|
+
static args: {};
|
|
4
|
+
static description: string;
|
|
5
|
+
static examples: {
|
|
6
|
+
description: string;
|
|
7
|
+
command: string;
|
|
8
|
+
}[];
|
|
9
|
+
static flags: {
|
|
10
|
+
'include-version': import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
11
|
+
'include-cluster': import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
12
|
+
'include-stuck-jobs': import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
13
|
+
'include-semaphores': import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
14
|
+
'include-operational-counts': import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
15
|
+
'stuck-job-threshold': import("@oclif/core/lib/interfaces/parser.js").OptionFlag<number, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
16
|
+
json: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
17
|
+
};
|
|
18
|
+
run(): Promise<void>;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=check.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../../src/commands/health/check.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAA;AAG5E,qBAAa,WAAY,SAAQ,oBAAoB,CAAC,OAAO,WAAW,CAAC;IAEvE,MAAM,CAAC,IAAI,KAAK;IAClB,MAAM,CAAC,WAAW,SAU8B;IAChD,MAAM,CAAC,QAAQ;;;QAiBZ;IACH,MAAM,CAAC,KAAK;;;;;;;;MA0CT;IAEK,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA4B3B"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/* eslint-disable perfectionist/sort-objects */
|
|
2
|
+
import { Flags } from '@oclif/core';
|
|
3
|
+
import { InstanceHealth } from '@sonisoft/now-sdk-ext-core';
|
|
4
|
+
import { AuthenticatedCommand } from '../../common/authenticated-command.js';
|
|
5
|
+
import { HealthDisplayService } from '../../services/health-display.service.js';
|
|
6
|
+
export class HealthCheck extends AuthenticatedCommand {
|
|
7
|
+
static args = {};
|
|
8
|
+
static description = 'Run a consolidated health check on a ServiceNow instance.\n\n' +
|
|
9
|
+
'Performs comprehensive diagnostics including version info, cluster status, stuck job detection, ' +
|
|
10
|
+
'semaphore counts, and operational record counts.\n\n' +
|
|
11
|
+
'Features:\n' +
|
|
12
|
+
' \u2022 Instance version and build information\n' +
|
|
13
|
+
' \u2022 Cluster node status\n' +
|
|
14
|
+
' \u2022 Stuck job detection with configurable threshold\n' +
|
|
15
|
+
' \u2022 Active semaphore count\n' +
|
|
16
|
+
' \u2022 Operational counts (incidents, changes, problems)\n' +
|
|
17
|
+
' \u2022 Color-coded status indicators\n' +
|
|
18
|
+
' \u2022 JSON output for CI/CD monitoring';
|
|
19
|
+
static examples = [
|
|
20
|
+
{
|
|
21
|
+
description: 'Run full health check',
|
|
22
|
+
command: '<%= config.bin %> <%= command.id %> --auth dev',
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
description: 'Check only version and stuck jobs',
|
|
26
|
+
command: '<%= config.bin %> <%= command.id %> --include-version --include-stuck-jobs --no-include-cluster --no-include-semaphores --no-include-operational-counts --auth dev',
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
description: 'Health check with custom stuck job threshold',
|
|
30
|
+
command: '<%= config.bin %> <%= command.id %> --stuck-job-threshold 60 --auth dev',
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
description: 'Health check as JSON',
|
|
34
|
+
command: '<%= config.bin %> <%= command.id %> --json --auth dev',
|
|
35
|
+
},
|
|
36
|
+
];
|
|
37
|
+
static flags = {
|
|
38
|
+
'include-version': Flags.boolean({
|
|
39
|
+
description: 'Include instance version information',
|
|
40
|
+
required: false,
|
|
41
|
+
default: true,
|
|
42
|
+
allowNo: true,
|
|
43
|
+
}),
|
|
44
|
+
'include-cluster': Flags.boolean({
|
|
45
|
+
description: 'Include cluster node status',
|
|
46
|
+
required: false,
|
|
47
|
+
default: true,
|
|
48
|
+
allowNo: true,
|
|
49
|
+
}),
|
|
50
|
+
'include-stuck-jobs': Flags.boolean({
|
|
51
|
+
description: 'Include stuck job detection',
|
|
52
|
+
required: false,
|
|
53
|
+
default: true,
|
|
54
|
+
allowNo: true,
|
|
55
|
+
}),
|
|
56
|
+
'include-semaphores': Flags.boolean({
|
|
57
|
+
description: 'Include active semaphore count',
|
|
58
|
+
required: false,
|
|
59
|
+
default: true,
|
|
60
|
+
allowNo: true,
|
|
61
|
+
}),
|
|
62
|
+
'include-operational-counts': Flags.boolean({
|
|
63
|
+
description: 'Include operational record counts (incidents, changes, problems)',
|
|
64
|
+
required: false,
|
|
65
|
+
default: true,
|
|
66
|
+
allowNo: true,
|
|
67
|
+
}),
|
|
68
|
+
'stuck-job-threshold': Flags.integer({
|
|
69
|
+
description: 'Minutes threshold for a job to be considered stuck',
|
|
70
|
+
required: false,
|
|
71
|
+
default: 30,
|
|
72
|
+
}),
|
|
73
|
+
'json': Flags.boolean({
|
|
74
|
+
char: 'j',
|
|
75
|
+
description: 'Output results as JSON',
|
|
76
|
+
required: false,
|
|
77
|
+
default: false,
|
|
78
|
+
}),
|
|
79
|
+
};
|
|
80
|
+
async run() {
|
|
81
|
+
const { flags } = await this.parse(HealthCheck);
|
|
82
|
+
const displayService = new HealthDisplayService();
|
|
83
|
+
try {
|
|
84
|
+
const instanceHealth = new InstanceHealth(this.instance);
|
|
85
|
+
this.log('Running instance health check...');
|
|
86
|
+
const result = await instanceHealth.checkHealth({
|
|
87
|
+
includeVersion: flags['include-version'],
|
|
88
|
+
includeCluster: flags['include-cluster'],
|
|
89
|
+
includeStuckJobs: flags['include-stuck-jobs'],
|
|
90
|
+
includeSemaphores: flags['include-semaphores'],
|
|
91
|
+
includeOperationalCounts: flags['include-operational-counts'],
|
|
92
|
+
stuckJobThresholdMinutes: flags['stuck-job-threshold'],
|
|
93
|
+
});
|
|
94
|
+
const lines = displayService.formatHealthResult(result, flags.json ?? false);
|
|
95
|
+
for (const line of lines) {
|
|
96
|
+
(flags.json ?? false) ? console.log(line) : this.log(line);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
catch (error) {
|
|
100
|
+
this._logger.error("Error occurred when running health check.", error);
|
|
101
|
+
this.error(error);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=check.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check.js","sourceRoot":"","sources":["../../../src/commands/health/check.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,35 +12,11 @@ export declare class Log extends AuthenticatedCommand<typeof Log> {
|
|
|
12
12
|
'no-color': import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
13
13
|
filter: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string[] | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
14
14
|
};
|
|
15
|
-
private _logger;
|
|
16
15
|
private filterRules;
|
|
16
|
+
private filterService;
|
|
17
|
+
private formatter;
|
|
17
18
|
private syslogReader?;
|
|
18
19
|
run(): Promise<void>;
|
|
19
|
-
private displayHeader;
|
|
20
|
-
private displayLog;
|
|
21
20
|
private handleExit;
|
|
22
|
-
private highlightKeywords;
|
|
23
|
-
/**
|
|
24
|
-
* Check if a log record matches a single filter rule
|
|
25
|
-
* @param log The log record to check
|
|
26
|
-
* @param rule The filter rule to apply
|
|
27
|
-
* @returns true if the log matches the filter, false otherwise
|
|
28
|
-
*/
|
|
29
|
-
private matchesFilter;
|
|
30
|
-
/**
|
|
31
|
-
* Check if a log record matches all filter rules
|
|
32
|
-
* @param log The log record to check
|
|
33
|
-
* @returns true if the log matches all filters (AND logic), false otherwise
|
|
34
|
-
*/
|
|
35
|
-
private matchesFilters;
|
|
36
|
-
/**
|
|
37
|
-
* Parse a filter string into a FilterRule object
|
|
38
|
-
* Supports formats:
|
|
39
|
-
* - "field OPERATOR value"
|
|
40
|
-
* - "OPERATOR value" (defaults to message field)
|
|
41
|
-
* @param filterStr The filter string to parse
|
|
42
|
-
* @returns A FilterRule object
|
|
43
|
-
*/
|
|
44
|
-
private parseFilter;
|
|
45
21
|
}
|
|
46
22
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/log/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/log/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAA;AAI5E,qBAAa,GAAI,SAAQ,oBAAoB,CAAC,OAAO,GAAG,CAAC;IAEvD,MAAM,CAAC,IAAI,KAAK;IAClB,MAAM,CAAC,WAAW,SAoCmD;IACrE,MAAM,CAAC,QAAQ;;;QAiCZ;IACH,MAAM,CAAC,KAAK;;;;;MA0BT;IACH,OAAO,CAAC,WAAW,CAAoB;IACrC,OAAO,CAAC,aAAa,CAAoB;IACzC,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,YAAY,CAAC,CAAe;IAE9B,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IAwE1B,OAAO,CAAC,UAAU;CAgBnB"}
|