@jupiterone/jupiterone-mcp 0.0.1

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 (67) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +89 -0
  3. package/dist/client/graphql/mutations.d.ts +11 -0
  4. package/dist/client/graphql/mutations.d.ts.map +1 -0
  5. package/dist/client/graphql/mutations.js +315 -0
  6. package/dist/client/graphql/mutations.js.map +1 -0
  7. package/dist/client/graphql/queries.d.ts +15 -0
  8. package/dist/client/graphql/queries.d.ts.map +1 -0
  9. package/dist/client/graphql/queries.js +692 -0
  10. package/dist/client/graphql/queries.js.map +1 -0
  11. package/dist/client/jupiterone-client.d.ts +106 -0
  12. package/dist/client/jupiterone-client.d.ts.map +1 -0
  13. package/dist/client/jupiterone-client.js +137 -0
  14. package/dist/client/jupiterone-client.js.map +1 -0
  15. package/dist/client/services/account-service.d.ts +17 -0
  16. package/dist/client/services/account-service.d.ts.map +1 -0
  17. package/dist/client/services/account-service.js +37 -0
  18. package/dist/client/services/account-service.js.map +1 -0
  19. package/dist/client/services/alert-service.d.ts +15 -0
  20. package/dist/client/services/alert-service.d.ts.map +1 -0
  21. package/dist/client/services/alert-service.js +56 -0
  22. package/dist/client/services/alert-service.js.map +1 -0
  23. package/dist/client/services/dashboard-service.d.ts +123 -0
  24. package/dist/client/services/dashboard-service.d.ts.map +1 -0
  25. package/dist/client/services/dashboard-service.js +74 -0
  26. package/dist/client/services/dashboard-service.js.map +1 -0
  27. package/dist/client/services/integration-service.d.ts +45 -0
  28. package/dist/client/services/integration-service.d.ts.map +1 -0
  29. package/dist/client/services/integration-service.js +114 -0
  30. package/dist/client/services/integration-service.js.map +1 -0
  31. package/dist/client/services/j1ql-service.d.ts +21 -0
  32. package/dist/client/services/j1ql-service.d.ts.map +1 -0
  33. package/dist/client/services/j1ql-service.js +29 -0
  34. package/dist/client/services/j1ql-service.js.map +1 -0
  35. package/dist/client/services/rule-service.d.ts +61 -0
  36. package/dist/client/services/rule-service.d.ts.map +1 -0
  37. package/dist/client/services/rule-service.js +140 -0
  38. package/dist/client/services/rule-service.js.map +1 -0
  39. package/dist/descriptions/create-dashboard-widget.md +325 -0
  40. package/dist/descriptions/create-dashboard.md +12 -0
  41. package/dist/descriptions/create-inline-question-rule.md +357 -0
  42. package/dist/descriptions/create-j1ql-from-natural-language.md +7 -0
  43. package/dist/descriptions/execute-j1ql-query.md +426 -0
  44. package/dist/descriptions/list-alerts.md +14 -0
  45. package/dist/descriptions/list-rules.md +14 -0
  46. package/dist/descriptions/update-dashboard.md +467 -0
  47. package/dist/index.d.ts +3 -0
  48. package/dist/index.d.ts.map +1 -0
  49. package/dist/index.js +48 -0
  50. package/dist/index.js.map +1 -0
  51. package/dist/server/mcp-server.d.ts +10 -0
  52. package/dist/server/mcp-server.d.ts.map +1 -0
  53. package/dist/server/mcp-server.js +1496 -0
  54. package/dist/server/mcp-server.js.map +1 -0
  55. package/dist/types/jupiterone.d.ts +752 -0
  56. package/dist/types/jupiterone.d.ts.map +1 -0
  57. package/dist/types/jupiterone.js +2 -0
  58. package/dist/types/jupiterone.js.map +1 -0
  59. package/dist/utils/description-loader.d.ts +2 -0
  60. package/dist/utils/description-loader.d.ts.map +1 -0
  61. package/dist/utils/description-loader.js +14 -0
  62. package/dist/utils/description-loader.js.map +1 -0
  63. package/dist/utils/load-description.d.ts +2 -0
  64. package/dist/utils/load-description.d.ts.map +1 -0
  65. package/dist/utils/load-description.js +9 -0
  66. package/dist/utils/load-description.js.map +1 -0
  67. package/package.json +64 -0
@@ -0,0 +1,45 @@
1
+ import { GraphQLClient } from 'graphql-request';
2
+ import { IntegrationDefinitionsResponse, IntegrationInstancesResponse, IntegrationJobsResponse, IntegrationJobResponse, IntegrationEventsResponse, ListIntegrationInstancesSearchFilter, IntegrationJobStatus } from '../../types/jupiterone.js';
3
+ export declare class IntegrationService {
4
+ private client;
5
+ constructor(client: GraphQLClient);
6
+ /**
7
+ * Get integration definitions
8
+ * @param cursor Optional cursor for pagination
9
+ * @param includeConfig Whether to include configuration fields
10
+ */
11
+ getIntegrationDefinitions(cursor?: string, includeConfig?: boolean): Promise<IntegrationDefinitionsResponse['integrationDefinitions']>;
12
+ /**
13
+ * Get integration instances
14
+ * @param definitionId Optional ID to filter instances by definition
15
+ * @param cursor Optional cursor for pagination
16
+ * @param limit Optional limit for number of instances to return
17
+ * @param filter Optional search filter
18
+ */
19
+ getIntegrationInstances(definitionId?: string, cursor?: string, limit?: number, filter?: ListIntegrationInstancesSearchFilter): Promise<IntegrationInstancesResponse['integrationInstancesV2']>;
20
+ /**
21
+ * Get integration jobs
22
+ * @param status Optional status to filter jobs
23
+ * @param integrationInstanceId Optional ID to filter jobs by instance
24
+ * @param integrationDefinitionId Optional ID to filter jobs by definition
25
+ * @param integrationInstanceIds Optional array of instance IDs to filter jobs
26
+ * @param cursor Optional cursor for pagination
27
+ * @param size Optional size limit for number of jobs to return
28
+ */
29
+ getIntegrationJobs(status?: IntegrationJobStatus, integrationInstanceId?: string, integrationDefinitionId?: string, integrationInstanceIds?: string[], cursor?: string, size?: number): Promise<IntegrationJobsResponse['integrationJobs']>;
30
+ /**
31
+ * Get details for a specific integration job
32
+ * @param integrationJobId ID of the job to get
33
+ * @param integrationInstanceId ID of the instance the job belongs to
34
+ */
35
+ getIntegrationJob(integrationJobId: string, integrationInstanceId: string): Promise<IntegrationJobResponse['integrationJob']>;
36
+ /**
37
+ * Get events for a specific integration job
38
+ * @param jobId ID of the job to get events for
39
+ * @param integrationInstanceId ID of the instance the job belongs to
40
+ * @param cursor Optional cursor for pagination
41
+ * @param size Optional size limit for number of events to return
42
+ */
43
+ getIntegrationEvents(jobId: string, integrationInstanceId: string, cursor?: string, size?: number): Promise<IntegrationEventsResponse['integrationEvents']>;
44
+ }
45
+ //# sourceMappingURL=integration-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integration-service.d.ts","sourceRoot":"","sources":["../../../src/client/services/integration-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EACL,8BAA8B,EAC9B,4BAA4B,EAC5B,uBAAuB,EACvB,sBAAsB,EACtB,yBAAyB,EACzB,oCAAoC,EACpC,oBAAoB,EACrB,MAAM,2BAA2B,CAAC;AASnC,qBAAa,kBAAkB;IACjB,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,aAAa;IAEzC;;;;OAIG;IACG,yBAAyB,CAC7B,MAAM,CAAC,EAAE,MAAM,EACf,aAAa,GAAE,OAAe,GAC7B,OAAO,CAAC,8BAA8B,CAAC,wBAAwB,CAAC,CAAC;IAgBpE;;;;;;OAMG;IACG,uBAAuB,CAC3B,YAAY,CAAC,EAAE,MAAM,EACrB,MAAM,CAAC,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,oCAAoC,GAC5C,OAAO,CAAC,4BAA4B,CAAC,wBAAwB,CAAC,CAAC;IAkBlE;;;;;;;;OAQG;IACG,kBAAkB,CACtB,MAAM,CAAC,EAAE,oBAAoB,EAC7B,qBAAqB,CAAC,EAAE,MAAM,EAC9B,uBAAuB,CAAC,EAAE,MAAM,EAChC,sBAAsB,CAAC,EAAE,MAAM,EAAE,EACjC,MAAM,CAAC,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,CAAC;IAoBtD;;;;OAIG;IACG,iBAAiB,CACrB,gBAAgB,EAAE,MAAM,EACxB,qBAAqB,EAAE,MAAM,GAC5B,OAAO,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,CAAC;IAgBpD;;;;;;OAMG;IACG,oBAAoB,CACxB,KAAK,EAAE,MAAM,EACb,qBAAqB,EAAE,MAAM,EAC7B,MAAM,CAAC,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,yBAAyB,CAAC,mBAAmB,CAAC,CAAC;CAiB3D"}
@@ -0,0 +1,114 @@
1
+ import { GET_INTEGRATION_DEFINITIONS, GET_INTEGRATION_INSTANCES, GET_INTEGRATION_JOBS, GET_INTEGRATION_JOB, GET_INTEGRATION_EVENTS } from '../graphql/queries.js';
2
+ export class IntegrationService {
3
+ client;
4
+ constructor(client) {
5
+ this.client = client;
6
+ }
7
+ /**
8
+ * Get integration definitions
9
+ * @param cursor Optional cursor for pagination
10
+ * @param includeConfig Whether to include configuration fields
11
+ */
12
+ async getIntegrationDefinitions(cursor, includeConfig = false) {
13
+ try {
14
+ const response = await this.client.request(GET_INTEGRATION_DEFINITIONS, {
15
+ cursor,
16
+ includeConfig,
17
+ });
18
+ return response.integrationDefinitions;
19
+ }
20
+ catch (error) {
21
+ console.error('Error getting integration definitions:', error);
22
+ throw error;
23
+ }
24
+ }
25
+ /**
26
+ * Get integration instances
27
+ * @param definitionId Optional ID to filter instances by definition
28
+ * @param cursor Optional cursor for pagination
29
+ * @param limit Optional limit for number of instances to return
30
+ * @param filter Optional search filter
31
+ */
32
+ async getIntegrationInstances(definitionId, cursor, limit, filter) {
33
+ try {
34
+ const response = await this.client.request(GET_INTEGRATION_INSTANCES, {
35
+ definitionId,
36
+ cursor,
37
+ limit,
38
+ filter,
39
+ });
40
+ return response.integrationInstancesV2;
41
+ }
42
+ catch (error) {
43
+ console.error('Error getting integration instances:', error);
44
+ throw error;
45
+ }
46
+ }
47
+ /**
48
+ * Get integration jobs
49
+ * @param status Optional status to filter jobs
50
+ * @param integrationInstanceId Optional ID to filter jobs by instance
51
+ * @param integrationDefinitionId Optional ID to filter jobs by definition
52
+ * @param integrationInstanceIds Optional array of instance IDs to filter jobs
53
+ * @param cursor Optional cursor for pagination
54
+ * @param size Optional size limit for number of jobs to return
55
+ */
56
+ async getIntegrationJobs(status, integrationInstanceId, integrationDefinitionId, integrationInstanceIds, cursor, size) {
57
+ try {
58
+ const response = await this.client.request(GET_INTEGRATION_JOBS, {
59
+ status,
60
+ integrationInstanceId,
61
+ integrationDefinitionId,
62
+ integrationInstanceIds,
63
+ cursor,
64
+ size,
65
+ });
66
+ return response.integrationJobs;
67
+ }
68
+ catch (error) {
69
+ console.error('Error getting integration jobs:', error);
70
+ throw error;
71
+ }
72
+ }
73
+ /**
74
+ * Get details for a specific integration job
75
+ * @param integrationJobId ID of the job to get
76
+ * @param integrationInstanceId ID of the instance the job belongs to
77
+ */
78
+ async getIntegrationJob(integrationJobId, integrationInstanceId) {
79
+ try {
80
+ const response = await this.client.request(GET_INTEGRATION_JOB, {
81
+ integrationJobId,
82
+ integrationInstanceId,
83
+ });
84
+ return response.integrationJob;
85
+ }
86
+ catch (error) {
87
+ console.error('Error getting integration job:', error);
88
+ throw error;
89
+ }
90
+ }
91
+ /**
92
+ * Get events for a specific integration job
93
+ * @param jobId ID of the job to get events for
94
+ * @param integrationInstanceId ID of the instance the job belongs to
95
+ * @param cursor Optional cursor for pagination
96
+ * @param size Optional size limit for number of events to return
97
+ */
98
+ async getIntegrationEvents(jobId, integrationInstanceId, cursor, size) {
99
+ try {
100
+ const response = await this.client.request(GET_INTEGRATION_EVENTS, {
101
+ jobId,
102
+ integrationInstanceId,
103
+ cursor,
104
+ size,
105
+ });
106
+ return response.integrationEvents;
107
+ }
108
+ catch (error) {
109
+ console.error('Error getting integration events:', error);
110
+ throw error;
111
+ }
112
+ }
113
+ }
114
+ //# sourceMappingURL=integration-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integration-service.js","sourceRoot":"","sources":["../../../src/client/services/integration-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import { GraphQLClient } from 'graphql-request';
2
+ import { CreateJ1qlFromNaturalLanguageResponse } from '../../types/jupiterone.js';
3
+ export declare class J1qlService {
4
+ private client;
5
+ constructor(client: GraphQLClient);
6
+ /**
7
+ * Convert natural language to J1QL query
8
+ */
9
+ createJ1qlFromNaturalLanguage(naturalLanguage: string): Promise<CreateJ1qlFromNaturalLanguageResponse['createJ1qlFromNaturalLanguage']>;
10
+ /**
11
+ * Execute a J1QL query
12
+ */
13
+ executeJ1qlQuery({ query, variables, cursor, scopeFilters, flags, }: {
14
+ query: string;
15
+ variables?: Record<string, any>;
16
+ cursor?: string;
17
+ scopeFilters?: Record<string, any>[];
18
+ flags?: Record<string, any>;
19
+ }): Promise<any>;
20
+ }
21
+ //# sourceMappingURL=j1ql-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"j1ql-service.d.ts","sourceRoot":"","sources":["../../../src/client/services/j1ql-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,qCAAqC,EAAE,MAAM,2BAA2B,CAAC;AAIlF,qBAAa,WAAW;IACV,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,aAAa;IAEzC;;OAEG;IACG,6BAA6B,CACjC,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC,qCAAqC,CAAC,+BAA+B,CAAC,CAAC;IAQlF;;OAEG;IACG,gBAAgB,CAAC,EACrB,KAAK,EACL,SAAS,EACT,MAAM,EACN,YAAY,EACZ,KAAK,GACN,EAAE;QACD,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAChC,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;QACrC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;KAC7B,GAAG,OAAO,CAAC,GAAG,CAAC;CAajB"}
@@ -0,0 +1,29 @@
1
+ import { CREATE_J1QL_FROM_NATURAL_LANGUAGE } from '../graphql/mutations.js';
2
+ import { QUERY_V1 } from '../graphql/queries.js';
3
+ export class J1qlService {
4
+ client;
5
+ constructor(client) {
6
+ this.client = client;
7
+ }
8
+ /**
9
+ * Convert natural language to J1QL query
10
+ */
11
+ async createJ1qlFromNaturalLanguage(naturalLanguage) {
12
+ const response = await this.client.request(CREATE_J1QL_FROM_NATURAL_LANGUAGE, { naturalLanguage });
13
+ return response.createJ1qlFromNaturalLanguage;
14
+ }
15
+ /**
16
+ * Execute a J1QL query
17
+ */
18
+ async executeJ1qlQuery({ query, variables, cursor, scopeFilters, flags, }) {
19
+ const response = await this.client.request(QUERY_V1, {
20
+ query,
21
+ variables,
22
+ cursor,
23
+ scopeFilters,
24
+ flags,
25
+ });
26
+ return response.queryV1;
27
+ }
28
+ }
29
+ //# sourceMappingURL=j1ql-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"j1ql-service.js","sourceRoot":"","sources":["../../../src/client/services/j1ql-service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iCAAiC,EAAE,MAAM,yBAAyB,CAAC;AAC5E,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjD,MAAM,OAAO,WAAW;IACF;IAApB,YAAoB,MAAqB;QAArB,WAAM,GAAN,MAAM,CAAe;IAAG,CAAC;IAE7C;;OAEG;IACH,KAAK,CAAC,6BAA6B,CACjC,eAAuB;QAEvB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CACxC,iCAAiC,EACjC,EAAE,eAAe,EAAE,CACpB,CAAC;QACF,OAAO,QAAQ,CAAC,6BAA6B,CAAC;IAChD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB,CAAC,EACrB,KAAK,EACL,SAAS,EACT,MAAM,EACN,YAAY,EACZ,KAAK,GAON;QACC,MAAM,QAAQ,GAAQ,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAC7C,QAAQ,EACR;YACE,KAAK;YACL,SAAS;YACT,MAAM;YACN,YAAY;YACZ,KAAK;SACN,CACF,CAAC;QACF,OAAO,QAAQ,CAAC,OAAO,CAAC;IAC1B,CAAC;CACF"}
@@ -0,0 +1,61 @@
1
+ import { GraphQLClient } from 'graphql-request';
2
+ import { ListRuleInstancesResponse, ListRuleInstancesFilters, QuestionRuleInstance, InlineQuestionRuleInstance, ReferencedQuestionRuleInstance, CreateInlineQuestionRuleInstanceInput, UpdateInlineQuestionRuleInstanceInput, CreateReferencedQuestionRuleInstanceInput, UpdateReferencedQuestionRuleInstanceInput, ListRuleEvaluationsResponse, ListRuleEvaluationsFilters, RuleEvaluation, RuleEvaluationDetailsResponse, RuleEvaluationDetailsInput } from '../../types/jupiterone.js';
3
+ export declare class RuleService {
4
+ private client;
5
+ constructor(client: GraphQLClient);
6
+ /**
7
+ * List rule instances using the new GraphQL query
8
+ */
9
+ listRuleInstances(limit?: number, cursor?: string, filters?: ListRuleInstancesFilters): Promise<ListRuleInstancesResponse['listRuleInstances']>;
10
+ /**
11
+ * Get all rule instances by paginating through all pages
12
+ */
13
+ getAllRuleInstances(filters?: ListRuleInstancesFilters): Promise<QuestionRuleInstance[]>;
14
+ /**
15
+ * Create an inline question rule instance
16
+ */
17
+ createInlineQuestionRuleInstance(instance: CreateInlineQuestionRuleInstanceInput): Promise<InlineQuestionRuleInstance>;
18
+ /**
19
+ * Update an inline question rule instance
20
+ */
21
+ updateInlineQuestionRuleInstance(instance: UpdateInlineQuestionRuleInstanceInput): Promise<InlineQuestionRuleInstance>;
22
+ /**
23
+ * Create a referenced question rule instance
24
+ */
25
+ createReferencedQuestionRuleInstance(instance: CreateReferencedQuestionRuleInstanceInput): Promise<ReferencedQuestionRuleInstance>;
26
+ /**
27
+ * Update a referenced question rule instance
28
+ */
29
+ updateReferencedQuestionRuleInstance(instance: UpdateReferencedQuestionRuleInstanceInput): Promise<ReferencedQuestionRuleInstance>;
30
+ /**
31
+ * Delete a rule instance
32
+ */
33
+ deleteRuleInstance(id: string): Promise<{
34
+ id: string;
35
+ }>;
36
+ /**
37
+ * Trigger an alert rule on demand
38
+ */
39
+ evaluateRuleInstance(id: string): Promise<{
40
+ id: string;
41
+ __typename: string;
42
+ }>;
43
+ /**
44
+ * List rule evaluations for a specific rule instance
45
+ */
46
+ listRuleEvaluations(filters: ListRuleEvaluationsFilters): Promise<ListRuleEvaluationsResponse['listCollectionResults']>;
47
+ /**
48
+ * Get all rule evaluations for a specific rule instance by paginating through all pages
49
+ */
50
+ getAllRuleEvaluations(filters: Omit<ListRuleEvaluationsFilters, 'cursor'>): Promise<RuleEvaluation[]>;
51
+ /**
52
+ * Get detailed information about a specific rule evaluation
53
+ */
54
+ getRuleEvaluationDetails(input: RuleEvaluationDetailsInput): Promise<RuleEvaluationDetailsResponse['ruleEvaluationDetails']>;
55
+ /**
56
+ * Get a download URL for raw data associated with a rule evaluation
57
+ */
58
+ getRawDataDownloadUrl(rawDataKey: string): Promise<string>;
59
+ getRawDataResults(rawDataKey: string): Promise<any>;
60
+ }
61
+ //# sourceMappingURL=rule-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rule-service.d.ts","sourceRoot":"","sources":["../../../src/client/services/rule-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EACL,yBAAyB,EACzB,wBAAwB,EACxB,oBAAoB,EACpB,0BAA0B,EAC1B,8BAA8B,EAC9B,qCAAqC,EACrC,qCAAqC,EACrC,yCAAyC,EACzC,yCAAyC,EACzC,2BAA2B,EAC3B,0BAA0B,EAC1B,cAAc,EACd,6BAA6B,EAC7B,0BAA0B,EAC3B,MAAM,2BAA2B,CAAC;AAgBnC,qBAAa,WAAW;IACV,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,aAAa;IAEzC;;OAEG;IACG,iBAAiB,CACrB,KAAK,CAAC,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,wBAAwB,GACjC,OAAO,CAAC,yBAAyB,CAAC,mBAAmB,CAAC,CAAC;IAY1D;;OAEG;IACG,mBAAmB,CAAC,OAAO,CAAC,EAAE,wBAAwB,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAoB9F;;OAEG;IACG,gCAAgC,CACpC,QAAQ,EAAE,qCAAqC,GAC9C,OAAO,CAAC,0BAA0B,CAAC;IAOtC;;OAEG;IACG,gCAAgC,CACpC,QAAQ,EAAE,qCAAqC,GAC9C,OAAO,CAAC,0BAA0B,CAAC;IAOtC;;OAEG;IACG,oCAAoC,CACxC,QAAQ,EAAE,yCAAyC,GAClD,OAAO,CAAC,8BAA8B,CAAC;IAO1C;;OAEG;IACG,oCAAoC,CACxC,QAAQ,EAAE,yCAAyC,GAClD,OAAO,CAAC,8BAA8B,CAAC;IAO1C;;OAEG;IACG,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IAQ7D;;OAEG;IACG,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IAOnF;;OAEG;IACG,mBAAmB,CACvB,OAAO,EAAE,0BAA0B,GAClC,OAAO,CAAC,2BAA2B,CAAC,uBAAuB,CAAC,CAAC;IAOhE;;OAEG;IACG,qBAAqB,CACzB,OAAO,EAAE,IAAI,CAAC,0BAA0B,EAAE,QAAQ,CAAC,GAClD,OAAO,CAAC,cAAc,EAAE,CAAC;IA4B5B;;OAEG;IACG,wBAAwB,CAC5B,KAAK,EAAE,0BAA0B,GAChC,OAAO,CAAC,6BAA6B,CAAC,uBAAuB,CAAC,CAAC;IAOlE;;OAEG;IACG,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAQ1D,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;CAQ1D"}
@@ -0,0 +1,140 @@
1
+ import { LIST_RULE_INSTANCES, LIST_RULE_EVALUATIONS, GET_RULE_EVALUATION_DETAILS, GET_RAW_DATA_DOWNLOAD_URL, } from '../graphql/queries.js';
2
+ import { CREATE_INLINE_QUESTION_RULE, UPDATE_INLINE_QUESTION_RULE, CREATE_REFERENCED_QUESTION_RULE, UPDATE_REFERENCED_QUESTION_RULE, DELETE_RULE, EVALUATE_RULE, } from '../graphql/mutations.js';
3
+ export class RuleService {
4
+ client;
5
+ constructor(client) {
6
+ this.client = client;
7
+ }
8
+ /**
9
+ * List rule instances using the new GraphQL query
10
+ */
11
+ async listRuleInstances(limit, cursor, filters) {
12
+ const variables = {};
13
+ if (limit)
14
+ variables.limit = limit;
15
+ if (cursor)
16
+ variables.cursor = cursor;
17
+ if (filters)
18
+ variables.filters = filters;
19
+ const response = await this.client.request(LIST_RULE_INSTANCES, variables);
20
+ return response.listRuleInstances;
21
+ }
22
+ /**
23
+ * Get all rule instances by paginating through all pages
24
+ */
25
+ async getAllRuleInstances(filters) {
26
+ const allInstances = [];
27
+ let cursor = null;
28
+ let hasNextPage = true;
29
+ while (hasNextPage) {
30
+ const response = await this.listRuleInstances(100, cursor || undefined, filters);
31
+ if (!response?.questionInstances) {
32
+ console.error('Unexpected response structure:', response);
33
+ break;
34
+ }
35
+ allInstances.push(...response.questionInstances);
36
+ cursor = response.pageInfo.endCursor;
37
+ hasNextPage = response.pageInfo.hasNextPage;
38
+ }
39
+ return allInstances;
40
+ }
41
+ /**
42
+ * Create an inline question rule instance
43
+ */
44
+ async createInlineQuestionRuleInstance(instance) {
45
+ const response = await this.client.request(CREATE_INLINE_QUESTION_RULE, { instance });
46
+ return response.createInlineQuestionRuleInstance;
47
+ }
48
+ /**
49
+ * Update an inline question rule instance
50
+ */
51
+ async updateInlineQuestionRuleInstance(instance) {
52
+ const response = await this.client.request(UPDATE_INLINE_QUESTION_RULE, { instance });
53
+ return response.updateInlineQuestionRuleInstance;
54
+ }
55
+ /**
56
+ * Create a referenced question rule instance
57
+ */
58
+ async createReferencedQuestionRuleInstance(instance) {
59
+ const response = await this.client.request(CREATE_REFERENCED_QUESTION_RULE, { instance });
60
+ return response.createReferencedQuestionRuleInstance;
61
+ }
62
+ /**
63
+ * Update a referenced question rule instance
64
+ */
65
+ async updateReferencedQuestionRuleInstance(instance) {
66
+ const response = await this.client.request(UPDATE_REFERENCED_QUESTION_RULE, { instance });
67
+ return response.updateReferencedQuestionRuleInstance;
68
+ }
69
+ /**
70
+ * Delete a rule instance
71
+ */
72
+ async deleteRuleInstance(id) {
73
+ const response = await this.client.request(DELETE_RULE, { id });
74
+ return response.deleteRuleInstance;
75
+ }
76
+ /**
77
+ * Trigger an alert rule on demand
78
+ */
79
+ async evaluateRuleInstance(id) {
80
+ const response = await this.client.request(EVALUATE_RULE, { id });
81
+ return response.evaluateRuleInstance;
82
+ }
83
+ /**
84
+ * List rule evaluations for a specific rule instance
85
+ */
86
+ async listRuleEvaluations(filters) {
87
+ const response = await this.client.request(LIST_RULE_EVALUATIONS, filters);
88
+ return response.listCollectionResults;
89
+ }
90
+ /**
91
+ * Get all rule evaluations for a specific rule instance by paginating through all pages
92
+ */
93
+ async getAllRuleEvaluations(filters) {
94
+ const allEvaluations = [];
95
+ let cursor = null;
96
+ let hasNextPage = true;
97
+ while (hasNextPage) {
98
+ const response = await this.listRuleEvaluations({
99
+ collectionType: filters.collectionType,
100
+ collectionOwnerId: filters.collectionOwnerId,
101
+ beginTimestamp: filters.beginTimestamp,
102
+ endTimestamp: filters.endTimestamp,
103
+ limit: filters.limit,
104
+ tag: filters.tag,
105
+ cursor: cursor || undefined,
106
+ });
107
+ if (!response?.results) {
108
+ console.error('Unexpected response structure:', response);
109
+ break;
110
+ }
111
+ allEvaluations.push(...response.results);
112
+ cursor = response.pageInfo.endCursor;
113
+ hasNextPage = response.pageInfo.hasNextPage;
114
+ }
115
+ return allEvaluations;
116
+ }
117
+ /**
118
+ * Get detailed information about a specific rule evaluation
119
+ */
120
+ async getRuleEvaluationDetails(input) {
121
+ const response = await this.client.request(GET_RULE_EVALUATION_DETAILS, { ruleEvaluationDetailsInput: input });
122
+ return response.ruleEvaluationDetails;
123
+ }
124
+ /**
125
+ * Get a download URL for raw data associated with a rule evaluation
126
+ */
127
+ async getRawDataDownloadUrl(rawDataKey) {
128
+ const response = await this.client.request(GET_RAW_DATA_DOWNLOAD_URL, { rawDataKey });
129
+ return response.getRawDataDownloadUrl;
130
+ }
131
+ async getRawDataResults(rawDataKey) {
132
+ const downloadUrl = await this.getRawDataDownloadUrl(rawDataKey);
133
+ const response = await fetch(downloadUrl);
134
+ if (!response.ok) {
135
+ throw new Error(`Failed to fetch query results: ${response.statusText}`);
136
+ }
137
+ return response.json();
138
+ }
139
+ }
140
+ //# sourceMappingURL=rule-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rule-service.js","sourceRoot":"","sources":["../../../src/client/services/rule-service.ts"],"names":[],"mappings":"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"}