@aws-amplify/graphql-api-construct 1.14.0 → 1.15.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (140) hide show
  1. package/.jsii +91 -34
  2. package/CHANGELOG.md +11 -0
  3. package/lib/amplify-dynamodb-table-wrapper.js +1 -1
  4. package/lib/amplify-graphql-api.js +1 -1
  5. package/lib/amplify-graphql-definition.js +1 -1
  6. package/lib/internal/authorization-modes.js +3 -3
  7. package/lib/sql-model-datasource-strategy.js +1 -1
  8. package/node_modules/@aws-amplify/ai-constructs/lib/conversation/runtime/bedrock_converse_adapter.d.ts +3 -1
  9. package/node_modules/@aws-amplify/ai-constructs/lib/conversation/runtime/bedrock_converse_adapter.js +8 -5
  10. package/node_modules/@aws-amplify/ai-constructs/lib/conversation/runtime/conversation_message_history_retriever.d.ts +44 -0
  11. package/node_modules/@aws-amplify/ai-constructs/lib/conversation/runtime/conversation_message_history_retriever.js +173 -0
  12. package/node_modules/@aws-amplify/ai-constructs/lib/conversation/runtime/conversation_turn_response_sender.d.ts +10 -3
  13. package/node_modules/@aws-amplify/ai-constructs/lib/conversation/runtime/conversation_turn_response_sender.js +10 -23
  14. package/node_modules/@aws-amplify/ai-constructs/lib/conversation/runtime/event-tools-provider/graphql_tool.d.ts +5 -5
  15. package/node_modules/@aws-amplify/ai-constructs/lib/conversation/runtime/event-tools-provider/graphql_tool.js +9 -24
  16. package/node_modules/@aws-amplify/ai-constructs/lib/conversation/runtime/graphql_request_executor.d.ts +21 -0
  17. package/node_modules/@aws-amplify/ai-constructs/lib/conversation/runtime/graphql_request_executor.js +45 -0
  18. package/node_modules/@aws-amplify/ai-constructs/lib/conversation/runtime/types.d.ts +11 -1
  19. package/node_modules/@aws-amplify/ai-constructs/lib/conversation/runtime/types.js +1 -1
  20. package/node_modules/@aws-amplify/ai-constructs/package.json +1 -1
  21. package/node_modules/@aws-amplify/graphql-auth-transformer/API.md +2 -0
  22. package/node_modules/@aws-amplify/graphql-auth-transformer/CHANGELOG.md +6 -0
  23. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/graphql-auth-transformer.d.ts +1 -0
  24. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/graphql-auth-transformer.d.ts.map +1 -1
  25. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/graphql-auth-transformer.js +18 -0
  26. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/graphql-auth-transformer.js.map +1 -1
  27. package/node_modules/@aws-amplify/graphql-auth-transformer/package.json +13 -13
  28. package/node_modules/@aws-amplify/graphql-conversation-transformer/API.md +2 -1
  29. package/node_modules/@aws-amplify/graphql-conversation-transformer/CHANGELOG.md +11 -0
  30. package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/graphql-types/message-model.js +2 -2
  31. package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/graphql-types/message-model.js.map +1 -1
  32. package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/grapqhl-conversation-transformer.d.ts +2 -1
  33. package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/grapqhl-conversation-transformer.d.ts.map +1 -1
  34. package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/grapqhl-conversation-transformer.js +2 -2
  35. package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/grapqhl-conversation-transformer.js.map +1 -1
  36. package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/resolvers/assistant-mutation-resolver-fn.template.js +16 -33
  37. package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/resolvers/assistant-mutation-resolver.d.ts.map +1 -1
  38. package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/resolvers/assistant-mutation-resolver.js +10 -1
  39. package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/resolvers/assistant-mutation-resolver.js.map +1 -1
  40. package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/resolvers/init-resolver-fn.template.js +1 -0
  41. package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/resolvers/init-resolver.d.ts +2 -3
  42. package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/resolvers/init-resolver.d.ts.map +1 -1
  43. package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/resolvers/init-resolver.js +10 -4
  44. package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/resolvers/init-resolver.js.map +1 -1
  45. package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/resolvers/invoke-lambda-resolver-fn.template.js +14 -4
  46. package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/resolvers/invoke-lambda-resolver.d.ts +2 -2
  47. package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/resolvers/invoke-lambda-resolver.d.ts.map +1 -1
  48. package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/resolvers/invoke-lambda-resolver.js +15 -4
  49. package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/resolvers/invoke-lambda-resolver.js.map +1 -1
  50. package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/resolvers/list-messages-init-resolver-fn.template.js +8 -0
  51. package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/resolvers/list-messages-init-resolver.d.ts +4 -0
  52. package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/resolvers/list-messages-init-resolver.d.ts.map +1 -0
  53. package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/resolvers/{message-history-resolver.js → list-messages-init-resolver.js} +6 -6
  54. package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/resolvers/list-messages-init-resolver.js.map +1 -0
  55. package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/resolvers/verify-session-owner-resolver-fn.template.js +2 -1
  56. package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/resolvers/verify-session-owner-resolver.d.ts +2 -1
  57. package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/resolvers/verify-session-owner-resolver.d.ts.map +1 -1
  58. package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/resolvers/verify-session-owner-resolver.js +23 -5
  59. package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/resolvers/verify-session-owner-resolver.js.map +1 -1
  60. package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/resolvers/write-message-to-table-resolver.d.ts +2 -1
  61. package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/resolvers/write-message-to-table-resolver.d.ts.map +1 -1
  62. package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/resolvers/write-message-to-table-resolver.js +4 -2
  63. package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/resolvers/write-message-to-table-resolver.js.map +1 -1
  64. package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/transformer-steps/conversation-resolver-generator.d.ts +4 -1
  65. package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/transformer-steps/conversation-resolver-generator.d.ts.map +1 -1
  66. package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/transformer-steps/conversation-resolver-generator.js +50 -30
  67. package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/transformer-steps/conversation-resolver-generator.js.map +1 -1
  68. package/node_modules/@aws-amplify/graphql-conversation-transformer/package.json +12 -11
  69. package/node_modules/@aws-amplify/graphql-default-value-transformer/CHANGELOG.md +6 -0
  70. package/node_modules/@aws-amplify/graphql-default-value-transformer/lib/graphql-default-value-transformer.d.ts.map +1 -1
  71. package/node_modules/@aws-amplify/graphql-default-value-transformer/lib/graphql-default-value-transformer.js +19 -7
  72. package/node_modules/@aws-amplify/graphql-default-value-transformer/lib/graphql-default-value-transformer.js.map +1 -1
  73. package/node_modules/@aws-amplify/graphql-default-value-transformer/package.json +9 -8
  74. package/node_modules/@aws-amplify/graphql-directives/CHANGELOG.md +6 -0
  75. package/node_modules/@aws-amplify/graphql-directives/LICENSE +201 -0
  76. package/node_modules/@aws-amplify/graphql-directives/lib/directives/default.js +1 -1
  77. package/node_modules/@aws-amplify/graphql-directives/package.json +3 -2
  78. package/node_modules/@aws-amplify/graphql-function-transformer/CHANGELOG.md +4 -0
  79. package/node_modules/@aws-amplify/graphql-function-transformer/package.json +7 -7
  80. package/node_modules/@aws-amplify/graphql-generation-transformer/CHANGELOG.md +7 -0
  81. package/node_modules/@aws-amplify/graphql-generation-transformer/lib/resolvers/invoke-bedrock-resolver-fn.template.js +24 -9
  82. package/node_modules/@aws-amplify/graphql-generation-transformer/lib/resolvers/invoke-bedrock.d.ts.map +1 -1
  83. package/node_modules/@aws-amplify/graphql-generation-transformer/lib/resolvers/invoke-bedrock.js +11 -1
  84. package/node_modules/@aws-amplify/graphql-generation-transformer/lib/resolvers/invoke-bedrock.js.map +1 -1
  85. package/node_modules/@aws-amplify/graphql-generation-transformer/lib/utils/tools.d.ts.map +1 -1
  86. package/node_modules/@aws-amplify/graphql-generation-transformer/lib/utils/tools.js +2 -1
  87. package/node_modules/@aws-amplify/graphql-generation-transformer/lib/utils/tools.js.map +1 -1
  88. package/node_modules/@aws-amplify/graphql-generation-transformer/package.json +7 -7
  89. package/node_modules/@aws-amplify/graphql-http-transformer/CHANGELOG.md +4 -0
  90. package/node_modules/@aws-amplify/graphql-http-transformer/package.json +7 -7
  91. package/node_modules/@aws-amplify/graphql-index-transformer/CHANGELOG.md +4 -0
  92. package/node_modules/@aws-amplify/graphql-index-transformer/package.json +8 -8
  93. package/node_modules/@aws-amplify/graphql-maps-to-transformer/CHANGELOG.md +4 -0
  94. package/node_modules/@aws-amplify/graphql-maps-to-transformer/lib/assets/mapping-lambda.zip +0 -0
  95. package/node_modules/@aws-amplify/graphql-maps-to-transformer/package.json +11 -11
  96. package/node_modules/@aws-amplify/graphql-model-transformer/CHANGELOG.md +4 -0
  97. package/node_modules/@aws-amplify/graphql-model-transformer/lib/rds-lambda.zip +0 -0
  98. package/node_modules/@aws-amplify/graphql-model-transformer/lib/rds-notification-lambda.zip +0 -0
  99. package/node_modules/@aws-amplify/graphql-model-transformer/lib/rds-patching-lambda.zip +0 -0
  100. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resolvers/dynamodb/query.js +1 -1
  101. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resolvers/dynamodb/query.js.map +1 -1
  102. package/node_modules/@aws-amplify/graphql-model-transformer/package.json +7 -7
  103. package/node_modules/@aws-amplify/graphql-predictions-transformer/CHANGELOG.md +4 -0
  104. package/node_modules/@aws-amplify/graphql-predictions-transformer/lib/predictionsLambdaFunction.zip +0 -0
  105. package/node_modules/@aws-amplify/graphql-predictions-transformer/package.json +7 -7
  106. package/node_modules/@aws-amplify/graphql-relational-transformer/CHANGELOG.md +4 -0
  107. package/node_modules/@aws-amplify/graphql-relational-transformer/package.json +9 -9
  108. package/node_modules/@aws-amplify/graphql-searchable-transformer/CHANGELOG.md +4 -0
  109. package/node_modules/@aws-amplify/graphql-searchable-transformer/lib/streaming-lambda.zip +0 -0
  110. package/node_modules/@aws-amplify/graphql-searchable-transformer/package.json +8 -8
  111. package/node_modules/@aws-amplify/graphql-sql-transformer/CHANGELOG.md +4 -0
  112. package/node_modules/@aws-amplify/graphql-sql-transformer/package.json +8 -8
  113. package/node_modules/@aws-amplify/graphql-transformer/CHANGELOG.md +6 -0
  114. package/node_modules/@aws-amplify/graphql-transformer/lib/graphql-transformer.js +1 -1
  115. package/node_modules/@aws-amplify/graphql-transformer/lib/graphql-transformer.js.map +1 -1
  116. package/node_modules/@aws-amplify/graphql-transformer/package.json +19 -19
  117. package/node_modules/@aws-amplify/graphql-transformer/src/graphql-transformer.ts +1 -1
  118. package/node_modules/@aws-amplify/graphql-transformer-core/API.md +13 -7
  119. package/node_modules/@aws-amplify/graphql-transformer-core/CHANGELOG.md +10 -0
  120. package/node_modules/@aws-amplify/graphql-transformer-core/lib/index.d.ts +1 -1
  121. package/node_modules/@aws-amplify/graphql-transformer-core/lib/index.d.ts.map +1 -1
  122. package/node_modules/@aws-amplify/graphql-transformer-core/lib/index.js +4 -2
  123. package/node_modules/@aws-amplify/graphql-transformer-core/lib/index.js.map +1 -1
  124. package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/graphql-utils.d.ts +9 -9
  125. package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/graphql-utils.d.ts.map +1 -1
  126. package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/graphql-utils.js.map +1 -1
  127. package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/model-datasource-strategy-utils.d.ts +2 -0
  128. package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/model-datasource-strategy-utils.d.ts.map +1 -1
  129. package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/model-datasource-strategy-utils.js +13 -1
  130. package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/model-datasource-strategy-utils.js.map +1 -1
  131. package/node_modules/@aws-amplify/graphql-transformer-core/package.json +5 -5
  132. package/node_modules/@aws-amplify/graphql-transformer-interfaces/CHANGELOG.md +4 -0
  133. package/node_modules/@aws-amplify/graphql-transformer-interfaces/package.json +3 -3
  134. package/node_modules/@aws-amplify/graphql-transformer-interfaces/tsconfig.tsbuildinfo +1 -1
  135. package/package.json +23 -23
  136. package/src/internal/authorization-modes.ts +2 -2
  137. package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/resolvers/message-history-resolver-fn.template.js +0 -40
  138. package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/resolvers/message-history-resolver.d.ts +0 -4
  139. package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/resolvers/message-history-resolver.d.ts.map +0 -1
  140. package/node_modules/@aws-amplify/graphql-conversation-transformer/lib/resolvers/message-history-resolver.js.map +0 -1
@@ -0,0 +1,173 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ConversationMessageHistoryRetriever = void 0;
4
+ const graphql_request_executor_1 = require("./graphql_request_executor");
5
+ /**
6
+ * These are all properties we have to pull.
7
+ * Unfortunately, GQL doesn't support wildcards.
8
+ * https://github.com/graphql/graphql-spec/issues/127
9
+ */
10
+ const messageItemSelectionSet = `
11
+ id
12
+ conversationId
13
+ associatedUserMessageId
14
+ aiContext
15
+ role
16
+ content {
17
+ text
18
+ document {
19
+ source {
20
+ bytes
21
+ }
22
+ format
23
+ name
24
+ }
25
+ image {
26
+ format
27
+ source {
28
+ bytes
29
+ }
30
+ }
31
+ toolResult {
32
+ content {
33
+ document {
34
+ format
35
+ name
36
+ source {
37
+ bytes
38
+ }
39
+ }
40
+ image {
41
+ format
42
+ source {
43
+ bytes
44
+ }
45
+ }
46
+ json
47
+ text
48
+ }
49
+ status
50
+ toolUseId
51
+ }
52
+ toolUse {
53
+ input
54
+ name
55
+ toolUseId
56
+ }
57
+ }
58
+ `;
59
+ /**
60
+ * This class is responsible for retrieving message history that belongs to conversation turn event.
61
+ * It queries AppSync to list messages that belong to conversation.
62
+ * Additionally, it looks up a current message in case it's missing in the list due to eventual consistency.
63
+ */
64
+ class ConversationMessageHistoryRetriever {
65
+ /**
66
+ * Creates conversation message history retriever.
67
+ */
68
+ constructor(event, graphqlRequestExecutor = new graphql_request_executor_1.GraphqlRequestExecutor(event.graphqlApiEndpoint, event.request.headers.authorization)) {
69
+ this.event = event;
70
+ this.graphqlRequestExecutor = graphqlRequestExecutor;
71
+ this.getMessageHistory = async () => {
72
+ var _a;
73
+ if ((_a = this.event.messages) === null || _a === void 0 ? void 0 : _a.length) {
74
+ // This is for backwards compatibility and should be removed with messages property.
75
+ return this.event.messages;
76
+ }
77
+ const messages = await this.listMessages();
78
+ let currentMessage = messages.find((m) => m.id === this.event.currentMessageId);
79
+ // This is a fallback in case current message is not available in the message list.
80
+ // I.e. in a situation when freshly written message is not yet visible in
81
+ // eventually consistent reads.
82
+ if (!currentMessage) {
83
+ currentMessage = await this.getCurrentMessage();
84
+ messages.push(currentMessage);
85
+ }
86
+ // Index assistant messages by corresponding user message.
87
+ const assistantMessageByUserMessageId = new Map();
88
+ messages.forEach((message) => {
89
+ if (message.role === 'assistant' && message.associatedUserMessageId) {
90
+ assistantMessageByUserMessageId.set(message.associatedUserMessageId, message);
91
+ }
92
+ });
93
+ // Reconcile history and inject aiContext
94
+ return messages.reduce((acc, current) => {
95
+ // Bedrock expects that message history is user->assistant->user->assistant->... and so on.
96
+ // The chronological order doesn't assure this ordering if there were any concurrent messages sent.
97
+ // Therefore, conversation is ordered by user's messages only and corresponding assistant messages are inserted
98
+ // into right place regardless of their createdAt value.
99
+ // This algorithm assumes that GQL query returns messages sorted by createdAt.
100
+ if (current.role === 'assistant') {
101
+ // Initially, skip assistant messages, these might be out of chronological order.
102
+ return acc;
103
+ }
104
+ if (current.role === 'user' &&
105
+ !assistantMessageByUserMessageId.has(current.id) &&
106
+ current.id !== this.event.currentMessageId) {
107
+ // Skip user messages that didn't get answer from assistant yet.
108
+ // These might be still "in-flight", i.e. assistant is still working on them in separate invocation.
109
+ // Except current message, we want to process that one.
110
+ return acc;
111
+ }
112
+ const aiContext = current.aiContext;
113
+ const content = aiContext
114
+ ? [...current.content, { text: JSON.stringify(aiContext) }]
115
+ : current.content;
116
+ acc.push({ role: current.role, content });
117
+ // Find and insert corresponding assistant message.
118
+ const correspondingAssistantMessage = assistantMessageByUserMessageId.get(current.id);
119
+ if (correspondingAssistantMessage) {
120
+ acc.push({
121
+ role: correspondingAssistantMessage.role,
122
+ content: correspondingAssistantMessage.content,
123
+ });
124
+ }
125
+ return acc;
126
+ }, []);
127
+ };
128
+ this.getCurrentMessage = async () => {
129
+ const query = `
130
+ query GetMessage($id: ${this.event.messageHistoryQuery.getQueryInputTypeName}!) {
131
+ ${this.event.messageHistoryQuery.getQueryName}(id: $id) {
132
+ ${messageItemSelectionSet}
133
+ }
134
+ }
135
+ `;
136
+ const variables = {
137
+ id: this.event.currentMessageId,
138
+ };
139
+ const response = await this.graphqlRequestExecutor.executeGraphql({
140
+ query,
141
+ variables,
142
+ });
143
+ return response.data[this.event.messageHistoryQuery.getQueryName];
144
+ };
145
+ this.listMessages = async () => {
146
+ var _a;
147
+ const query = `
148
+ query ListMessages($filter: ${this.event.messageHistoryQuery.listQueryInputTypeName}!, $limit: Int) {
149
+ ${this.event.messageHistoryQuery.listQueryName}(filter: $filter, limit: $limit) {
150
+ items {
151
+ ${messageItemSelectionSet}
152
+ }
153
+ }
154
+ }
155
+ `;
156
+ const variables = {
157
+ filter: {
158
+ conversationId: {
159
+ eq: this.event.conversationId,
160
+ },
161
+ },
162
+ limit: (_a = this.event.messageHistoryQuery.listQueryLimit) !== null && _a !== void 0 ? _a : 1000,
163
+ };
164
+ const response = await this.graphqlRequestExecutor.executeGraphql({
165
+ query,
166
+ variables,
167
+ });
168
+ return response.data[this.event.messageHistoryQuery.listQueryName].items;
169
+ };
170
+ }
171
+ }
172
+ exports.ConversationMessageHistoryRetriever = ConversationMessageHistoryRetriever;
173
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9uX21lc3NhZ2VfaGlzdG9yeV9yZXRyaWV2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29udmVyc2F0aW9uL3J1bnRpbWUvY29udmVyc2F0aW9uX21lc3NhZ2VfaGlzdG9yeV9yZXRyaWV2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EseUVBQW9FO0FBbUNwRTs7OztHQUlHO0FBQ0gsTUFBTSx1QkFBdUIsR0FBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBZ0QvQixDQUFDO0FBRUY7Ozs7R0FJRztBQUNILE1BQWEsbUNBQW1DO0lBQzlDOztPQUVHO0lBQ0gsWUFDbUIsS0FBNEIsRUFDNUIseUJBQXlCLElBQUksaURBQXNCLENBQ2xFLEtBQUssQ0FBQyxrQkFBa0IsRUFDeEIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUNwQztRQUpnQixVQUFLLEdBQUwsS0FBSyxDQUF1QjtRQUM1QiwyQkFBc0IsR0FBdEIsc0JBQXNCLENBR3RDO1FBR0gsc0JBQWlCLEdBQUcsS0FBSyxJQUF5QyxFQUFFOztZQUNsRSxJQUFJLE1BQUEsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLDBDQUFFLE1BQU0sRUFBRTtnQkFDL0Isb0ZBQW9GO2dCQUNwRixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDO2FBQzVCO1lBQ0QsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFFM0MsSUFBSSxjQUFjLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FDaEMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FDNUMsQ0FBQztZQUVGLG1GQUFtRjtZQUNuRix5RUFBeUU7WUFDekUsK0JBQStCO1lBQy9CLElBQUksQ0FBQyxj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WSxDQUFDLENBQUM7UUFDcEUsQ0FBQyxDQUFDO1FBRUksaUJBQVksR0FBRyxLQUFLLElBRTFCLEVBQUU7O1lBQ0YsTUFBTSxLQUFLLEdBQUc7c0NBQ29CLElBQUksQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUMsc0JBQXNCO2NBQzdFLElBQUksQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUMsYUFBYTs7a0JBRXhDLHVCQUF1Qjs7OztLQUlwQyxDQUFDO1lBQ0YsTUFBTSxTQUFTLEdBQW1CO2dCQUNoQyxNQUFNLEVBQUU7b0JBQ04sY0FBYyxFQUFFO3dCQUNkLEVBQUUsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWM7cUJBQzlCO2lCQUNGO2dCQUNELEtBQUssRUFBRSxNQUFBLElBQUksQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUMsY0FBYyxtQ0FBSSxJQUFJO2FBQzdELENBQUM7WUFFRixNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxjQUFjLENBRy9EO2dCQUNBLEtBQUs7Z0JBQ0wsU0FBUzthQUNWLENBQUMsQ0FBQztZQUVILE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLGFBQWEsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUMzRSxDQUFDLENBQUM7SUFuSUMsQ0FBQztDQW9JTDtBQTlJRCxrRkE4SUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb252ZXJzYXRpb25NZXNzYWdlLCBDb252ZXJzYXRpb25UdXJuRXZlbnQgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IEdyYXBocWxSZXF1ZXN0RXhlY3V0b3IgfSBmcm9tICcuL2dyYXBocWxfcmVxdWVzdF9leGVjdXRvcic7XG5cbmV4cG9ydCB0eXBlIENvbnZlcnNhdGlvbkhpc3RvcnlNZXNzYWdlSXRlbSA9IENvbnZlcnNhdGlvbk1lc3NhZ2UgJiB7XG4gIGlkOiBzdHJpbmc7XG4gIGNvbnZlcnNhdGlvbklkOiBzdHJpbmc7XG4gIGFzc29jaWF0ZWRVc2VyTWVzc2FnZUlkPzogc3RyaW5nO1xuICBhaUNvbnRleHQ/OiB1bmtub3duO1xufTtcblxuZXhwb3J0IHR5cGUgR2V0UXVlcnlJbnB1dCA9IHtcbiAgaWQ6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIEdldFF1ZXJ5T3V0cHV0ID0ge1xuICBkYXRhOiBSZWNvcmQ8c3RyaW5nLCBDb252ZXJzYXRpb25IaXN0b3J5TWVzc2FnZUl0ZW0+O1xufTtcblxuZXhwb3J0IHR5cGUgTGlzdFF1ZXJ5SW5wdXQgPSB7XG4gIGZpbHRlcjoge1xuICAgIGNvbnZlcnNhdGlvbklkOiB7XG4gICAgICBlcTogc3RyaW5nO1xuICAgIH07XG4gIH07XG4gIGxpbWl0OiBudW1iZXI7XG59O1xuXG5leHBvcnQgdHlwZSBMaXN0UXVlcnlPdXRwdXQgPSB7XG4gIGRhdGE6IFJlY29yZDxcbiAgICBzdHJpbmcsXG4gICAge1xuICAgICAgaXRlbXM6IEFycmF5PENvbnZlcnNhdGlvbkhpc3RvcnlNZXNzYWdlSXRlbT47XG4gICAgfVxuICA+O1xufTtcblxuLyoqXG4gKiBUaGVzZSBhcmUgYWxsIHByb3BlcnRpZXMgd2UgaGF2ZSB0byBwdWxsLlxuICogVW5mb3J0dW5hdGVseSwgR1FMIGRvZXNuJ3Qgc3VwcG9ydCB3aWxkY2FyZHMuXG4gKiBodHRwczovL2dpdGh1Yi5jb20vZ3JhcGhxbC9ncmFwaHFsLXNwZWMvaXNzdWVzLzEyN1xuICovXG5jb25zdCBtZXNzYWdlSXRlbVNlbGVjdGlvblNldCA9IGBcbiAgICAgICAgICAgICAgICBpZFxuICAgICAgICAgICAgICAgIGNvbnZlcnNhdGlvbklkXG4gICAgICAgICAgICAgICAgYXNzb2NpYXRlZFVzZXJNZXNzYWdlSWRcbiAgICAgICAgICAgICAgICBhaUNvbnRleHRcbiAgICAgICAgICAgICAgICByb2xlXG4gICAgICAgICAgICAgICAgY29udGVudCB7XG4gICAgICAgICAgICAgICAgICB0ZXh0XG4gICAgICAgICAgICAgICAgICBkb2N1bWVudCB7XG4gICAgICAgICAgICAgICAgICAgIHNvdXJjZSB7XG4gICAgICAgICAgICAgICAgICAgICAgYnl0ZXNcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBmb3JtYXRcbiAgICAgICAgICAgICAgICAgICAgbmFtZVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgaW1hZ2Uge1xuICAgICAgICAgICAgICAgICAgICBmb3JtYXRcbiAgICAgICAgICAgICAgICAgICAgc291cmNlIHtcbiAgICAgICAgICAgICAgICAgICAgICBieXRlc1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB0b29sUmVzdWx0IHtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudCB7XG4gICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBieXRlc1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBpbWFnZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXRcbiAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVzXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIGpzb25cbiAgICAgICAgICAgICAgICAgICAgICB0ZXh0XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzXG4gICAgICAgICAgICAgICAgICAgIHRvb2xVc2VJZFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgdG9vbFVzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlucHV0XG4gICAgICAgICAgICAgICAgICAgIG5hbWVcbiAgICAgICAgICAgICAgICAgICAgdG9vbFVzZUlkXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuYDtcblxuLyoqXG4gKiBUaGlzIGNsYXNzIGlzIHJlc3BvbnNpYmxlIGZvciByZXRyaWV2aW5nIG1lc3NhZ2UgaGlzdG9yeSB0aGF0IGJlbG9uZ3MgdG8gY29udmVyc2F0aW9uIHR1cm4gZXZlbnQuXG4gKiBJdCBxdWVyaWVzIEFwcFN5bmMgdG8gbGlzdCBtZXNzYWdlcyB0aGF0IGJlbG9uZyB0byBjb252ZXJzYXRpb24uXG4gKiBBZGRpdGlvbmFsbHksIGl0IGxvb2tzIHVwIGEgY3VycmVudCBtZXNzYWdlIGluIGNhc2UgaXQncyBtaXNzaW5nIGluIHRoZSBsaXN0IGR1ZSB0byBldmVudHVhbCBjb25zaXN0ZW5jeS5cbiAqL1xuZXhwb3J0IGNsYXNzIENvbnZlcnNhdGlvbk1lc3NhZ2VIaXN0b3J5UmV0cmlldmVyIHtcbiAgLyoqXG4gICAqIENyZWF0ZXMgY29udmVyc2F0aW9uIG1lc3NhZ2UgaGlzdG9yeSByZXRyaWV2ZXIuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGV2ZW50OiBDb252ZXJzYXRpb25UdXJuRXZlbnQsXG4gICAgcHJpdmF0ZSByZWFkb25seSBncmFwaHFsUmVxdWVzdEV4ZWN1dG9yID0gbmV3IEdyYXBocWxSZXF1ZXN0RXhlY3V0b3IoXG4gICAgICBldmVudC5ncmFwaHFsQXBpRW5kcG9pbnQsXG4gICAgICBldmVudC5yZXF1ZXN0LmhlYWRlcnMuYXV0aG9yaXphdGlvblxuICAgIClcbiAgKSB7fVxuXG4gIGdldE1lc3NhZ2VIaXN0b3J5ID0gYXN5bmMgKCk6IFByb21pc2U8QXJyYXk8Q29udmVyc2F0aW9uTWVzc2FnZT4+ID0+IHtcbiAgICBpZiAodGhpcy5ldmVudC5tZXNzYWdlcz8ubGVuZ3RoKSB7XG4gICAgICAvLyBUaGlzIGlzIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSBhbmQgc2hvdWxkIGJlIHJlbW92ZWQgd2l0aCBtZXNzYWdlcyBwcm9wZXJ0eS5cbiAgICAgIHJldHVybiB0aGlzLmV2ZW50Lm1lc3NhZ2VzO1xuICAgIH1cbiAgICBjb25zdCBtZXNzYWdlcyA9IGF3YWl0IHRoaXMubGlzdE1lc3NhZ2VzKCk7XG5cbiAgICBsZXQgY3VycmVudE1lc3NhZ2UgPSBtZXNzYWdlcy5maW5kKFxuICAgICAgKG0pID0+IG0uaWQgPT09IHRoaXMuZXZlbnQuY3VycmVudE1lc3NhZ2VJZFxuICAgICk7XG5cbiAgICAvLyBUaGlzIGlzIGEgZmFsbGJhY2sgaW4gY2FzZSBjdXJyZW50IG1lc3NhZ2UgaXMgbm90IGF2YWlsYWJsZSBpbiB0aGUgbWVzc2FnZSBsaXN0LlxuICAgIC8vIEkuZS4gaW4gYSBzaXR1YXRpb24gd2hlbiBmcmVzaGx5IHdyaXR0ZW4gbWVzc2FnZSBpcyBub3QgeWV0IHZpc2libGUgaW5cbiAgICAvLyBldmVudHVhbGx5IGNvbnNpc3RlbnQgcmVhZHMuXG4gICAgaWYgKCFjdXJyZW50TWVzc2FnZSkge1xuICAgICAgY3VycmVudE1lc3NhZ2UgPSBhd2FpdCB0aGlzLmdldEN1cnJlbnRNZXNzYWdlKCk7XG4gICAgICBtZXNzYWdlcy5wdXNoKGN1cnJlbnRNZXNzYWdlKTtcbiAgICB9XG5cbiAgICAvLyBJbmRleCBhc3Npc3RhbnQgbWVzc2FnZXMgYnkgY29ycmVzcG9uZGluZyB1c2VyIG1lc3NhZ2UuXG4gICAgY29uc3QgYXNzaXN0YW50TWVzc2FnZUJ5VXNlck1lc3NhZ2VJZDogTWFwPFxuICAgICAgc3RyaW5nLFxuICAgICAgQ29udmVyc2F0aW9uSGlzdG9yeU1lc3NhZ2VJdGVtXG4gICAgPiA9IG5ldyBNYXAoKTtcbiAgICBtZXNzYWdlcy5mb3JFYWNoKChtZXNzYWdlKSA9PiB7XG4gICAgICBpZiAobWVzc2FnZS5yb2xlID09PSAnYXNzaXN0YW50JyAmJiBtZXNzYWdlLmFzc29jaWF0ZWRVc2VyTWVzc2FnZUlkKSB7XG4gICAgICAgIGFzc2lzdGFudE1lc3NhZ2VCeVVzZXJNZXNzYWdlSWQuc2V0KFxuICAgICAgICAgIG1lc3NhZ2UuYXNzb2NpYXRlZFVzZXJNZXNzYWdlSWQsXG4gICAgICAgICAgbWVzc2FnZVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gUmVjb25jaWxlIGhpc3RvcnkgYW5kIGluamVjdCBhaUNvbnRleHRcbiAgICByZXR1cm4gbWVzc2FnZXMucmVkdWNlKChhY2MsIGN1cnJlbnQpID0+IHtcbiAgICAgIC8vIEJlZHJvY2sgZXhwZWN0cyB0aGF0IG1lc3NhZ2UgaGlzdG9yeSBpcyB1c2VyLT5hc3Npc3RhbnQtPnVzZXItPmFzc2lzdGFudC0+Li4uIGFuZCBzbyBvbi5cbiAgICAgIC8vIFRoZSBjaHJvbm9sb2dpY2FsIG9yZGVyIGRvZXNuJ3QgYXNzdXJlIHRoaXMgb3JkZXJpbmcgaWYgdGhlcmUgd2VyZSBhbnkgY29uY3VycmVudCBtZXNzYWdlcyBzZW50LlxuICAgICAgLy8gVGhlcmVmb3JlLCBjb252ZXJzYXRpb24gaXMgb3JkZXJlZCBieSB1c2VyJ3MgbWVzc2FnZXMgb25seSBhbmQgY29ycmVzcG9uZGluZyBhc3Npc3RhbnQgbWVzc2FnZXMgYXJlIGluc2VydGVkXG4gICAgICAvLyBpbnRvIHJpZ2h0IHBsYWNlIHJlZ2FyZGxlc3Mgb2YgdGhlaXIgY3JlYXRlZEF0IHZhbHVlLlxuICAgICAgLy8gVGhpcyBhbGdvcml0aG0gYXNzdW1lcyB0aGF0IEdRTCBxdWVyeSByZXR1cm5zIG1lc3NhZ2VzIHNvcnRlZCBieSBjcmVhdGVkQXQuXG4gICAgICBpZiAoY3VycmVudC5yb2xlID09PSAnYXNzaXN0YW50Jykge1xuICAgICAgICAvLyBJbml0aWFsbHksIHNraXAgYXNzaXN0YW50IG1lc3NhZ2VzLCB0aGVzZSBtaWdodCBiZSBvdXQgb2YgY2hyb25vbG9naWNhbCBvcmRlci5cbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgY3VycmVudC5yb2xlID09PSAndXNlcicgJiZcbiAgICAgICAgIWFzc2lzdGFudE1lc3NhZ2VCeVVzZXJNZXNzYWdlSWQuaGFzKGN1cnJlbnQuaWQpICYmXG4gICAgICAgIGN1cnJlbnQuaWQgIT09IHRoaXMuZXZlbnQuY3VycmVudE1lc3NhZ2VJZFxuICAgICAgKSB7XG4gICAgICAgIC8vIFNraXAgdXNlciBtZXNzYWdlcyB0aGF0IGRpZG4ndCBnZXQgYW5zd2VyIGZyb20gYXNzaXN0YW50IHlldC5cbiAgICAgICAgLy8gVGhlc2UgbWlnaHQgYmUgc3RpbGwgXCJpbi1mbGlnaHRcIiwgaS5lLiBhc3Npc3RhbnQgaXMgc3RpbGwgd29ya2luZyBvbiB0aGVtIGluIHNlcGFyYXRlIGludm9jYXRpb24uXG4gICAgICAgIC8vIEV4Y2VwdCBjdXJyZW50IG1lc3NhZ2UsIHdlIHdhbnQgdG8gcHJvY2VzcyB0aGF0IG9uZS5cbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH1cbiAgICAgIGNvbnN0IGFpQ29udGV4dCA9IGN1cnJlbnQuYWlDb250ZXh0O1xuICAgICAgY29uc3QgY29udGVudCA9IGFpQ29udGV4dFxuICAgICAgICA/IFsuLi5jdXJyZW50LmNvbnRlbnQsIHsgdGV4dDogSlNPTi5zdHJpbmdpZnkoYWlDb250ZXh0KSB9XVxuICAgICAgICA6IGN1cnJlbnQuY29udGVudDtcblxuICAgICAgYWNjLnB1c2goeyByb2xlOiBjdXJyZW50LnJvbGUsIGNvbnRlbnQgfSk7XG5cbiAgICAgIC8vIEZpbmQgYW5kIGluc2VydCBjb3JyZXNwb25kaW5nIGFzc2lzdGFudCBtZXNzYWdlLlxuICAgICAgY29uc3QgY29ycmVzcG9uZGluZ0Fzc2lzdGFudE1lc3NhZ2UgPSBhc3Npc3RhbnRNZXNzYWdlQnlVc2VyTWVzc2FnZUlkLmdldChcbiAgICAgICAgY3VycmVudC5pZFxuICAgICAgKTtcbiAgICAgIGlmIChjb3JyZXNwb25kaW5nQXNzaXN0YW50TWVzc2FnZSkge1xuICAgICAgICBhY2MucHVzaCh7XG4gICAgICAgICAgcm9sZTogY29ycmVzcG9uZGluZ0Fzc2lzdGFudE1lc3NhZ2Uucm9sZSxcbiAgICAgICAgICBjb250ZW50OiBjb3JyZXNwb25kaW5nQXNzaXN0YW50TWVzc2FnZS5jb250ZW50LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwgW10gYXMgQXJyYXk8Q29udmVyc2F0aW9uTWVzc2FnZT4pO1xuICB9O1xuXG4gIHByaXZhdGUgZ2V0Q3VycmVudE1lc3NhZ2UgPVxuICAgIGFzeW5jICgpOiBQcm9taXNlPENvbnZlcnNhdGlvbkhpc3RvcnlNZXNzYWdlSXRlbT4gPT4ge1xuICAgICAgY29uc3QgcXVlcnkgPSBgXG4gICAgICAgIHF1ZXJ5IEdldE1lc3NhZ2UoJGlkOiAke3RoaXMuZXZlbnQubWVzc2FnZUhpc3RvcnlRdWVyeS5nZXRRdWVyeUlucHV0VHlwZU5hbWV9ISkge1xuICAgICAgICAgICAgJHt0aGlzLmV2ZW50Lm1lc3NhZ2VIaXN0b3J5UXVlcnkuZ2V0UXVlcnlOYW1lfShpZDogJGlkKSB7XG4gICAgICAgICAgICAgICR7bWVzc2FnZUl0ZW1TZWxlY3Rpb25TZXR9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICBgO1xuICAgICAgY29uc3QgdmFyaWFibGVzOiBHZXRRdWVyeUlucHV0ID0ge1xuICAgICAgICBpZDogdGhpcy5ldmVudC5jdXJyZW50TWVzc2FnZUlkLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmdyYXBocWxSZXF1ZXN0RXhlY3V0b3IuZXhlY3V0ZUdyYXBocWw8XG4gICAgICAgIEdldFF1ZXJ5SW5wdXQsXG4gICAgICAgIEdldFF1ZXJ5T3V0cHV0XG4gICAgICA+KHtcbiAgICAgICAgcXVlcnksXG4gICAgICAgIHZhcmlhYmxlcyxcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YVt0aGlzLmV2ZW50Lm1lc3NhZ2VIaXN0b3J5UXVlcnkuZ2V0UXVlcnlOYW1lXTtcbiAgICB9O1xuXG4gIHByaXZhdGUgbGlzdE1lc3NhZ2VzID0gYXN5bmMgKCk6IFByb21pc2U8XG4gICAgQXJyYXk8Q29udmVyc2F0aW9uSGlzdG9yeU1lc3NhZ2VJdGVtPlxuICA+ID0+IHtcbiAgICBjb25zdCBxdWVyeSA9IGBcbiAgICAgICAgcXVlcnkgTGlzdE1lc3NhZ2VzKCRmaWx0ZXI6ICR7dGhpcy5ldmVudC5tZXNzYWdlSGlzdG9yeVF1ZXJ5Lmxpc3RRdWVyeUlucHV0VHlwZU5hbWV9ISwgJGxpbWl0OiBJbnQpIHtcbiAgICAgICAgICAgICR7dGhpcy5ldmVudC5tZXNzYWdlSGlzdG9yeVF1ZXJ5Lmxpc3RRdWVyeU5hbWV9KGZpbHRlcjogJGZpbHRlciwgbGltaXQ6ICRsaW1pdCkge1xuICAgICAgICAgICAgICBpdGVtcyB7XG4gICAgICAgICAgICAgICAgJHttZXNzYWdlSXRlbVNlbGVjdGlvblNldH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgYDtcbiAgICBjb25zdCB2YXJpYWJsZXM6IExpc3RRdWVyeUlucHV0ID0ge1xuICAgICAgZmlsdGVyOiB7XG4gICAgICAgIGNvbnZlcnNhdGlvbklkOiB7XG4gICAgICAgICAgZXE6IHRoaXMuZXZlbnQuY29udmVyc2F0aW9uSWQsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgbGltaXQ6IHRoaXMuZXZlbnQubWVzc2FnZUhpc3RvcnlRdWVyeS5saXN0UXVlcnlMaW1pdCA/PyAxMDAwLFxuICAgIH07XG5cbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuZ3JhcGhxbFJlcXVlc3RFeGVjdXRvci5leGVjdXRlR3JhcGhxbDxcbiAgICAgIExpc3RRdWVyeUlucHV0LFxuICAgICAgTGlzdFF1ZXJ5T3V0cHV0XG4gICAgPih7XG4gICAgICBxdWVyeSxcbiAgICAgIHZhcmlhYmxlcyxcbiAgICB9KTtcblxuICAgIHJldHVybiByZXNwb25zZS5kYXRhW3RoaXMuZXZlbnQubWVzc2FnZUhpc3RvcnlRdWVyeS5saXN0UXVlcnlOYW1lXS5pdGVtcztcbiAgfTtcbn1cbiJdfQ==
@@ -1,17 +1,24 @@
1
- /// <reference types="node" />
2
1
  import { ConversationTurnEvent } from './types.js';
3
2
  import type { ContentBlock } from '@aws-sdk/client-bedrock-runtime';
3
+ import { GraphqlRequestExecutor } from './graphql_request_executor';
4
+ export type MutationResponseInput = {
5
+ input: {
6
+ conversationId: string;
7
+ content: ContentBlock[];
8
+ associatedUserMessageId: string;
9
+ };
10
+ };
4
11
  /**
5
12
  * This class is responsible for sending a response produced by Bedrock back to AppSync
6
13
  * in a form of mutation.
7
14
  */
8
15
  export declare class ConversationTurnResponseSender {
9
16
  private readonly event;
10
- private readonly _fetch;
17
+ private readonly graphqlRequestExecutor;
11
18
  /**
12
19
  * Creates conversation turn response sender.
13
20
  */
14
- constructor(event: ConversationTurnEvent, _fetch?: typeof fetch);
21
+ constructor(event: ConversationTurnEvent, graphqlRequestExecutor?: GraphqlRequestExecutor);
15
22
  sendResponse: (message: ContentBlock[]) => Promise<void>;
16
23
  private createMutationRequest;
17
24
  }
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ConversationTurnResponseSender = void 0;
4
+ const graphql_request_executor_1 = require("./graphql_request_executor");
4
5
  /**
5
6
  * This class is responsible for sending a response produced by Bedrock back to AppSync
6
7
  * in a form of mutation.
@@ -9,22 +10,15 @@ class ConversationTurnResponseSender {
9
10
  /**
10
11
  * Creates conversation turn response sender.
11
12
  */
12
- constructor(event, _fetch = fetch) {
13
+ constructor(event, graphqlRequestExecutor = new graphql_request_executor_1.GraphqlRequestExecutor(event.graphqlApiEndpoint, event.request.headers.authorization)) {
13
14
  this.event = event;
14
- this._fetch = _fetch;
15
+ this.graphqlRequestExecutor = graphqlRequestExecutor;
15
16
  this.sendResponse = async (message) => {
16
- const request = this.createMutationRequest(message);
17
- const res = await this._fetch(request);
18
- const responseHeaders = {};
19
- res.headers.forEach((value, key) => (responseHeaders[key] = value));
20
- if (!res.ok) {
21
- const body = await res.text();
22
- throw new Error(`Assistant response mutation request was not successful, response headers=${JSON.stringify(responseHeaders)}, body=${body}`);
23
- }
24
- const body = await res.json();
25
- if (body && typeof body === 'object' && 'errors' in body) {
26
- throw new Error(`Assistant response mutation request was not successful, response headers=${JSON.stringify(responseHeaders)}, body=${JSON.stringify(body)}`);
27
- }
17
+ const { query, variables } = this.createMutationRequest(message);
18
+ await this.graphqlRequestExecutor.executeGraphql({
19
+ query,
20
+ variables,
21
+ });
28
22
  };
29
23
  this.createMutationRequest = (content) => {
30
24
  const query = `
@@ -51,16 +45,9 @@ class ConversationTurnResponseSender {
51
45
  associatedUserMessageId: this.event.currentMessageId,
52
46
  },
53
47
  };
54
- return new Request(this.event.graphqlApiEndpoint, {
55
- method: 'POST',
56
- headers: {
57
- 'Content-Type': 'application/graphql',
58
- Authorization: this.event.request.headers.authorization,
59
- },
60
- body: JSON.stringify({ query, variables }),
61
- });
48
+ return { query, variables };
62
49
  };
63
50
  }
64
51
  }
65
52
  exports.ConversationTurnResponseSender = ConversationTurnResponseSender;
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9uX3R1cm5fcmVzcG9uc2Vfc2VuZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbnZlcnNhdGlvbi9ydW50aW1lL2NvbnZlcnNhdGlvbl90dXJuX3Jlc3BvbnNlX3NlbmRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFXQTs7O0dBR0c7QUFDSCxNQUFhLDhCQUE4QjtJQUN6Qzs7T0FFRztJQUNILFlBQ21CLEtBQTRCLEVBQzVCLFNBQVMsS0FBSztRQURkLFVBQUssR0FBTCxLQUFLLENBQXVCO1FBQzVCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFHakMsaUJBQVksR0FBRyxLQUFLLEVBQUUsT0FBdUIsRUFBRSxFQUFFO1lBQy9DLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNwRCxNQUFNLEdBQUcsR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdkMsTUFBTSxlQUFlLEdBQTJCLEVBQUUsQ0FBQztZQUNuRCxHQUFHLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDcEUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUU7Z0JBQ1gsTUFBTSxJQUFJLEdBQUcsTUFBTSxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQzlCLE1BQU0sSUFBSSxLQUFLLENBQ2IsNEVBQTRFLElBQUksQ0FBQyxTQUFTLENBQ3hGLGVBQWUsQ0FDaEIsVUFBVSxJQUFJLEVBQUUsQ0FDbEIsQ0FBQzthQUNIO1lBQ0QsTUFBTSxJQUFJLEdBQUcsTUFBTSxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDOUIsSUFBSSxJQUFJLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxJQUFJLFFBQVEsSUFBSSxJQUFJLEVBQUU7Z0JBQ3hELE1BQU0sSUFBSSxLQUFLLENBQ2IsNEVBQTRFLElBQUksQ0FBQyxTQUFTLENBQ3hGLGVBQWUsQ0FDaEIsVUFBVSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQ2xDLENBQUM7YUFDSDtRQUNILENBQUMsQ0FBQztRQUVNLDBCQUFxQixHQUFHLENBQUMsT0FBdUIsRUFBRSxFQUFFO1lBQzFELE1BQU0sS0FBSyxHQUFHO2dEQUM4QixJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLGFBQWE7Y0FDM0UsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJO2tCQUM1QixJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLFlBQVk7OztLQUdyRCxDQUFDO1lBQ0YsT0FBTyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDOUIsSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFO29CQUNqQix1RkFBdUY7b0JBQ3ZGLHlCQUF5QjtvQkFDekIsK0VBQStFO29CQUMvRSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQ2xELE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxHQUFHLEtBQUssQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQztpQkFDakQ7Z0JBQ0QsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDLENBQUMsQ0FBQztZQUNILE1BQU0sU0FBUyxHQUEwQjtnQkFDdkMsS0FBSyxFQUFFO29CQUNMLGNBQWMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWM7b0JBQ3pDLE9BQU87b0JBQ1AsdUJBQXVCLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0I7aUJBQ3JEO2FBQ0YsQ0FBQztZQUNGLE9BQU8sSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsRUFBRTtnQkFDaEQsTUFBTSxFQUFFLE1BQU07Z0JBQ2QsT0FBTyxFQUFFO29CQUNQLGNBQWMsRUFBRSxxQkFBcUI7b0JBQ3JDLGFBQWEsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsYUFBYTtpQkFDeEQ7Z0JBQ0QsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLENBQUM7YUFDM0MsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDO0lBMURDLENBQUM7Q0EyREw7QUFsRUQsd0VBa0VDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29udmVyc2F0aW9uVHVybkV2ZW50IH0gZnJvbSAnLi90eXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7IENvbnRlbnRCbG9jayB9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1iZWRyb2NrLXJ1bnRpbWUnO1xuXG50eXBlIE11dGF0aW9uUmVzcG9uc2VJbnB1dCA9IHtcbiAgaW5wdXQ6IHtcbiAgICBjb252ZXJzYXRpb25JZDogc3RyaW5nO1xuICAgIGNvbnRlbnQ6IENvbnRlbnRCbG9ja1tdO1xuICAgIGFzc29jaWF0ZWRVc2VyTWVzc2FnZUlkOiBzdHJpbmc7XG4gIH07XG59O1xuXG4vKipcbiAqIFRoaXMgY2xhc3MgaXMgcmVzcG9uc2libGUgZm9yIHNlbmRpbmcgYSByZXNwb25zZSBwcm9kdWNlZCBieSBCZWRyb2NrIGJhY2sgdG8gQXBwU3luY1xuICogaW4gYSBmb3JtIG9mIG11dGF0aW9uLlxuICovXG5leHBvcnQgY2xhc3MgQ29udmVyc2F0aW9uVHVyblJlc3BvbnNlU2VuZGVyIHtcbiAgLyoqXG4gICAqIENyZWF0ZXMgY29udmVyc2F0aW9uIHR1cm4gcmVzcG9uc2Ugc2VuZGVyLlxuICAgKi9cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBldmVudDogQ29udmVyc2F0aW9uVHVybkV2ZW50LFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2ZldGNoID0gZmV0Y2hcbiAgKSB7fVxuXG4gIHNlbmRSZXNwb25zZSA9IGFzeW5jIChtZXNzYWdlOiBDb250ZW50QmxvY2tbXSkgPT4ge1xuICAgIGNvbnN0IHJlcXVlc3QgPSB0aGlzLmNyZWF0ZU11dGF0aW9uUmVxdWVzdChtZXNzYWdlKTtcbiAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLl9mZXRjaChyZXF1ZXN0KTtcbiAgICBjb25zdCByZXNwb25zZUhlYWRlcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbiAgICByZXMuaGVhZGVycy5mb3JFYWNoKCh2YWx1ZSwga2V5KSA9PiAocmVzcG9uc2VIZWFkZXJzW2tleV0gPSB2YWx1ZSkpO1xuICAgIGlmICghcmVzLm9rKSB7XG4gICAgICBjb25zdCBib2R5ID0gYXdhaXQgcmVzLnRleHQoKTtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYEFzc2lzdGFudCByZXNwb25zZSBtdXRhdGlvbiByZXF1ZXN0IHdhcyBub3Qgc3VjY2Vzc2Z1bCwgcmVzcG9uc2UgaGVhZGVycz0ke0pTT04uc3RyaW5naWZ5KFxuICAgICAgICAgIHJlc3BvbnNlSGVhZGVyc1xuICAgICAgICApfSwgYm9keT0ke2JvZHl9YFxuICAgICAgKTtcbiAgICB9XG4gICAgY29uc3QgYm9keSA9IGF3YWl0IHJlcy5qc29uKCk7XG4gICAgaWYgKGJvZHkgJiYgdHlwZW9mIGJvZHkgPT09ICdvYmplY3QnICYmICdlcnJvcnMnIGluIGJvZHkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYEFzc2lzdGFudCByZXNwb25zZSBtdXRhdGlvbiByZXF1ZXN0IHdhcyBub3Qgc3VjY2Vzc2Z1bCwgcmVzcG9uc2UgaGVhZGVycz0ke0pTT04uc3RyaW5naWZ5KFxuICAgICAgICAgIHJlc3BvbnNlSGVhZGVyc1xuICAgICAgICApfSwgYm9keT0ke0pTT04uc3RyaW5naWZ5KGJvZHkpfWBcbiAgICAgICk7XG4gICAgfVxuICB9O1xuXG4gIHByaXZhdGUgY3JlYXRlTXV0YXRpb25SZXF1ZXN0ID0gKGNvbnRlbnQ6IENvbnRlbnRCbG9ja1tdKSA9PiB7XG4gICAgY29uc3QgcXVlcnkgPSBgXG4gICAgICAgIG11dGF0aW9uIFB1Ymxpc2hNb2RlbFJlc3BvbnNlKCRpbnB1dDogJHt0aGlzLmV2ZW50LnJlc3BvbnNlTXV0YXRpb24uaW5wdXRUeXBlTmFtZX0hKSB7XG4gICAgICAgICAgICAke3RoaXMuZXZlbnQucmVzcG9uc2VNdXRhdGlvbi5uYW1lfShpbnB1dDogJGlucHV0KSB7XG4gICAgICAgICAgICAgICAgJHt0aGlzLmV2ZW50LnJlc3BvbnNlTXV0YXRpb24uc2VsZWN0aW9uU2V0fVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgYDtcbiAgICBjb250ZW50ID0gY29udGVudC5tYXAoKGJsb2NrKSA9PiB7XG4gICAgICBpZiAoYmxvY2sudG9vbFVzZSkge1xuICAgICAgICAvLyBUaGUgYGlucHV0YCBmaWVsZCBpcyB0eXBlZCBhcyBgQVdTIEpTT05gIGluIHRoZSBHcmFwaFFMIEFQSSBiZWNhdXNlIGl0IGNhbiByZXByZXNlbnRcbiAgICAgICAgLy8gYXJiaXRyYXJ5IEpTT04gdmFsdWVzLlxuICAgICAgICAvLyBXZSBuZWVkIHRvIHN0cmluZ2lmeSBpdCBiZWZvcmUgc2VuZGluZyBpdCB0byBBcHBTeW5jIHRvIHByZXZlbnQgdHlwZSBlcnJvcnMuXG4gICAgICAgIGNvbnN0IGlucHV0ID0gSlNPTi5zdHJpbmdpZnkoYmxvY2sudG9vbFVzZS5pbnB1dCk7XG4gICAgICAgIHJldHVybiB7IHRvb2xVc2U6IHsgLi4uYmxvY2sudG9vbFVzZSwgaW5wdXQgfSB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJsb2NrO1xuICAgIH0pO1xuICAgIGNvbnN0IHZhcmlhYmxlczogTXV0YXRpb25SZXNwb25zZUlucHV0ID0ge1xuICAgICAgaW5wdXQ6IHtcbiAgICAgICAgY29udmVyc2F0aW9uSWQ6IHRoaXMuZXZlbnQuY29udmVyc2F0aW9uSWQsXG4gICAgICAgIGNvbnRlbnQsXG4gICAgICAgIGFzc29jaWF0ZWRVc2VyTWVzc2FnZUlkOiB0aGlzLmV2ZW50LmN1cnJlbnRNZXNzYWdlSWQsXG4gICAgICB9LFxuICAgIH07XG4gICAgcmV0dXJuIG5ldyBSZXF1ZXN0KHRoaXMuZXZlbnQuZ3JhcGhxbEFwaUVuZHBvaW50LCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9ncmFwaHFsJyxcbiAgICAgICAgQXV0aG9yaXphdGlvbjogdGhpcy5ldmVudC5yZXF1ZXN0LmhlYWRlcnMuYXV0aG9yaXphdGlvbixcbiAgICAgIH0sXG4gICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IHF1ZXJ5LCB2YXJpYWJsZXMgfSksXG4gICAgfSk7XG4gIH07XG59XG4iXX0=
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9uX3R1cm5fcmVzcG9uc2Vfc2VuZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbnZlcnNhdGlvbi9ydW50aW1lL2NvbnZlcnNhdGlvbl90dXJuX3Jlc3BvbnNlX3NlbmRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSx5RUFBb0U7QUFVcEU7OztHQUdHO0FBQ0gsTUFBYSw4QkFBOEI7SUFDekM7O09BRUc7SUFDSCxZQUNtQixLQUE0QixFQUM1Qix5QkFBeUIsSUFBSSxpREFBc0IsQ0FDbEUsS0FBSyxDQUFDLGtCQUFrQixFQUN4QixLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQ3BDO1FBSmdCLFVBQUssR0FBTCxLQUFLLENBQXVCO1FBQzVCLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FHdEM7UUFHSCxpQkFBWSxHQUFHLEtBQUssRUFBRSxPQUF1QixFQUFFLEVBQUU7WUFDL0MsTUFBTSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDakUsTUFBTSxJQUFJLENBQUMsc0JBQXNCLENBQUMsY0FBYyxDQUc5QztnQkFDQSxLQUFLO2dCQUNMLFNBQVM7YUFDVixDQUFDLENBQUM7UUFDTCxDQUFDLENBQUM7UUFFTSwwQkFBcUIsR0FBRyxDQUFDLE9BQXVCLEVBQUUsRUFBRTtZQUMxRCxNQUFNLEtBQUssR0FBRztnREFDOEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhO2NBQzNFLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsSUFBSTtrQkFDNUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZOzs7S0FHckQsQ0FBQztZQUNGLE9BQU8sR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQzlCLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRTtvQkFDakIsdUZBQXVGO29CQUN2Rix5QkFBeUI7b0JBQ3pCLCtFQUErRTtvQkFDL0UsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUNsRCxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsR0FBRyxLQUFLLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUM7aUJBQ2pEO2dCQUNELE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQyxDQUFDLENBQUM7WUFDSCxNQUFNLFNBQVMsR0FBMEI7Z0JBQ3ZDLEtBQUssRUFBRTtvQkFDTCxjQUFjLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjO29CQUN6QyxPQUFPO29CQUNQLHVCQUF1QixFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCO2lCQUNyRDthQUNGLENBQUM7WUFDRixPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxDQUFDO1FBQzlCLENBQUMsQ0FBQztJQXZDQyxDQUFDO0NBd0NMO0FBbERELHdFQWtEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnZlcnNhdGlvblR1cm5FdmVudCB9IGZyb20gJy4vdHlwZXMuanMnO1xuaW1wb3J0IHR5cGUgeyBDb250ZW50QmxvY2sgfSBmcm9tICdAYXdzLXNkay9jbGllbnQtYmVkcm9jay1ydW50aW1lJztcbmltcG9ydCB7IEdyYXBocWxSZXF1ZXN0RXhlY3V0b3IgfSBmcm9tICcuL2dyYXBocWxfcmVxdWVzdF9leGVjdXRvcic7XG5cbmV4cG9ydCB0eXBlIE11dGF0aW9uUmVzcG9uc2VJbnB1dCA9IHtcbiAgaW5wdXQ6IHtcbiAgICBjb252ZXJzYXRpb25JZDogc3RyaW5nO1xuICAgIGNvbnRlbnQ6IENvbnRlbnRCbG9ja1tdO1xuICAgIGFzc29jaWF0ZWRVc2VyTWVzc2FnZUlkOiBzdHJpbmc7XG4gIH07XG59O1xuXG4vKipcbiAqIFRoaXMgY2xhc3MgaXMgcmVzcG9uc2libGUgZm9yIHNlbmRpbmcgYSByZXNwb25zZSBwcm9kdWNlZCBieSBCZWRyb2NrIGJhY2sgdG8gQXBwU3luY1xuICogaW4gYSBmb3JtIG9mIG11dGF0aW9uLlxuICovXG5leHBvcnQgY2xhc3MgQ29udmVyc2F0aW9uVHVyblJlc3BvbnNlU2VuZGVyIHtcbiAgLyoqXG4gICAqIENyZWF0ZXMgY29udmVyc2F0aW9uIHR1cm4gcmVzcG9uc2Ugc2VuZGVyLlxuICAgKi9cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBldmVudDogQ29udmVyc2F0aW9uVHVybkV2ZW50LFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZ3JhcGhxbFJlcXVlc3RFeGVjdXRvciA9IG5ldyBHcmFwaHFsUmVxdWVzdEV4ZWN1dG9yKFxuICAgICAgZXZlbnQuZ3JhcGhxbEFwaUVuZHBvaW50LFxuICAgICAgZXZlbnQucmVxdWVzdC5oZWFkZXJzLmF1dGhvcml6YXRpb25cbiAgICApXG4gICkge31cblxuICBzZW5kUmVzcG9uc2UgPSBhc3luYyAobWVzc2FnZTogQ29udGVudEJsb2NrW10pID0+IHtcbiAgICBjb25zdCB7IHF1ZXJ5LCB2YXJpYWJsZXMgfSA9IHRoaXMuY3JlYXRlTXV0YXRpb25SZXF1ZXN0KG1lc3NhZ2UpO1xuICAgIGF3YWl0IHRoaXMuZ3JhcGhxbFJlcXVlc3RFeGVjdXRvci5leGVjdXRlR3JhcGhxbDxcbiAgICAgIE11dGF0aW9uUmVzcG9uc2VJbnB1dCxcbiAgICAgIHZvaWRcbiAgICA+KHtcbiAgICAgIHF1ZXJ5LFxuICAgICAgdmFyaWFibGVzLFxuICAgIH0pO1xuICB9O1xuXG4gIHByaXZhdGUgY3JlYXRlTXV0YXRpb25SZXF1ZXN0ID0gKGNvbnRlbnQ6IENvbnRlbnRCbG9ja1tdKSA9PiB7XG4gICAgY29uc3QgcXVlcnkgPSBgXG4gICAgICAgIG11dGF0aW9uIFB1Ymxpc2hNb2RlbFJlc3BvbnNlKCRpbnB1dDogJHt0aGlzLmV2ZW50LnJlc3BvbnNlTXV0YXRpb24uaW5wdXRUeXBlTmFtZX0hKSB7XG4gICAgICAgICAgICAke3RoaXMuZXZlbnQucmVzcG9uc2VNdXRhdGlvbi5uYW1lfShpbnB1dDogJGlucHV0KSB7XG4gICAgICAgICAgICAgICAgJHt0aGlzLmV2ZW50LnJlc3BvbnNlTXV0YXRpb24uc2VsZWN0aW9uU2V0fVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgYDtcbiAgICBjb250ZW50ID0gY29udGVudC5tYXAoKGJsb2NrKSA9PiB7XG4gICAgICBpZiAoYmxvY2sudG9vbFVzZSkge1xuICAgICAgICAvLyBUaGUgYGlucHV0YCBmaWVsZCBpcyB0eXBlZCBhcyBgQVdTIEpTT05gIGluIHRoZSBHcmFwaFFMIEFQSSBiZWNhdXNlIGl0IGNhbiByZXByZXNlbnRcbiAgICAgICAgLy8gYXJiaXRyYXJ5IEpTT04gdmFsdWVzLlxuICAgICAgICAvLyBXZSBuZWVkIHRvIHN0cmluZ2lmeSBpdCBiZWZvcmUgc2VuZGluZyBpdCB0byBBcHBTeW5jIHRvIHByZXZlbnQgdHlwZSBlcnJvcnMuXG4gICAgICAgIGNvbnN0IGlucHV0ID0gSlNPTi5zdHJpbmdpZnkoYmxvY2sudG9vbFVzZS5pbnB1dCk7XG4gICAgICAgIHJldHVybiB7IHRvb2xVc2U6IHsgLi4uYmxvY2sudG9vbFVzZSwgaW5wdXQgfSB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJsb2NrO1xuICAgIH0pO1xuICAgIGNvbnN0IHZhcmlhYmxlczogTXV0YXRpb25SZXNwb25zZUlucHV0ID0ge1xuICAgICAgaW5wdXQ6IHtcbiAgICAgICAgY29udmVyc2F0aW9uSWQ6IHRoaXMuZXZlbnQuY29udmVyc2F0aW9uSWQsXG4gICAgICAgIGNvbnRlbnQsXG4gICAgICAgIGFzc29jaWF0ZWRVc2VyTWVzc2FnZUlkOiB0aGlzLmV2ZW50LmN1cnJlbnRNZXNzYWdlSWQsXG4gICAgICB9LFxuICAgIH07XG4gICAgcmV0dXJuIHsgcXVlcnksIHZhcmlhYmxlcyB9O1xuICB9O1xufVxuIl19
@@ -1,7 +1,7 @@
1
- /// <reference types="node" />
2
1
  import { ExecutableTool } from '../types';
3
2
  import type { ToolInputSchema, ToolResultContentBlock } from '@aws-sdk/client-bedrock-runtime';
4
3
  import { DocumentType } from '@smithy/types';
4
+ import { GraphqlRequestExecutor } from '../graphql_request_executor';
5
5
  /**
6
6
  * A tool that use GraphQl queries.
7
7
  */
@@ -9,14 +9,14 @@ export declare class GraphQlTool implements ExecutableTool {
9
9
  name: string;
10
10
  description: string;
11
11
  inputSchema: ToolInputSchema;
12
- private readonly graphQlEndpoint;
12
+ readonly graphQlEndpoint: string;
13
13
  private readonly query;
14
- private readonly accessToken;
15
- private readonly _fetch;
14
+ readonly accessToken: string;
15
+ private readonly graphqlRequestExecutor;
16
16
  /**
17
17
  * Creates GraphQl Tool
18
18
  */
19
- constructor(name: string, description: string, inputSchema: ToolInputSchema, graphQlEndpoint: string, query: string, accessToken: string, _fetch?: typeof fetch);
19
+ constructor(name: string, description: string, inputSchema: ToolInputSchema, graphQlEndpoint: string, query: string, accessToken: string, graphqlRequestExecutor?: GraphqlRequestExecutor);
20
20
  execute: (input: DocumentType | undefined) => Promise<ToolResultContentBlock>;
21
21
  }
22
22
  //# sourceMappingURL=graphql_tool.d.ts.map
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.GraphQlTool = void 0;
4
+ const graphql_request_executor_1 = require("../graphql_request_executor");
4
5
  /**
5
6
  * A tool that use GraphQl queries.
6
7
  */
@@ -8,41 +9,25 @@ class GraphQlTool {
8
9
  /**
9
10
  * Creates GraphQl Tool
10
11
  */
11
- constructor(name, description, inputSchema, graphQlEndpoint, query, accessToken, _fetch = fetch) {
12
+ constructor(name, description, inputSchema, graphQlEndpoint, query, accessToken, graphqlRequestExecutor = new graphql_request_executor_1.GraphqlRequestExecutor(graphQlEndpoint, accessToken)) {
12
13
  this.name = name;
13
14
  this.description = description;
14
15
  this.inputSchema = inputSchema;
15
16
  this.graphQlEndpoint = graphQlEndpoint;
16
17
  this.query = query;
17
18
  this.accessToken = accessToken;
18
- this._fetch = _fetch;
19
+ this.graphqlRequestExecutor = graphqlRequestExecutor;
19
20
  this.execute = async (input) => {
20
21
  if (!input) {
21
22
  throw Error(`GraphQl tool '${this.name}' requires input to execute.`);
22
23
  }
23
- const options = {
24
- method: 'POST',
25
- headers: {
26
- 'Content-Type': 'application/graphql',
27
- Authorization: this.accessToken,
28
- },
29
- body: JSON.stringify({ query: this.query, variables: input }),
30
- };
31
- const req = new Request(this.graphQlEndpoint, options);
32
- const res = await this._fetch(req);
33
- const responseHeaders = {};
34
- res.headers.forEach((value, key) => (responseHeaders[key] = value));
35
- if (!res.ok) {
36
- const body = await res.text();
37
- throw new Error(`GraphQl tool '${this.name}' failed, response headers=${JSON.stringify(responseHeaders)}, body=${body}`);
38
- }
39
- const body = await res.json();
40
- if (body && typeof body === 'object' && 'errors' in body) {
41
- throw new Error(`GraphQl tool '${this.name}' failed, response headers=${JSON.stringify(responseHeaders)}, body=${JSON.stringify(body)}`);
42
- }
43
- return { json: body };
24
+ const response = await this.graphqlRequestExecutor.executeGraphql({
25
+ query: this.query,
26
+ variables: input,
27
+ });
28
+ return { json: response };
44
29
  };
45
30
  }
46
31
  }
47
32
  exports.GraphQlTool = GraphQlTool;
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGhxbF90b29sLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbnZlcnNhdGlvbi9ydW50aW1lL2V2ZW50LXRvb2xzLXByb3ZpZGVyL2dyYXBocWxfdG9vbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFPQTs7R0FFRztBQUNILE1BQWEsV0FBVztJQUN0Qjs7T0FFRztJQUNILFlBQ1MsSUFBWSxFQUNaLFdBQW1CLEVBQ25CLFdBQTRCLEVBQ2xCLGVBQXVCLEVBQ3ZCLEtBQWEsRUFDYixXQUFtQixFQUNuQixTQUFTLEtBQUs7UUFOeEIsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUNaLGdCQUFXLEdBQVgsV0FBVyxDQUFRO1FBQ25CLGdCQUFXLEdBQVgsV0FBVyxDQUFpQjtRQUNsQixvQkFBZSxHQUFmLGVBQWUsQ0FBUTtRQUN2QixVQUFLLEdBQUwsS0FBSyxDQUFRO1FBQ2IsZ0JBQVcsR0FBWCxXQUFXLENBQVE7UUFDbkIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUdqQyxZQUFPLEdBQUcsS0FBSyxFQUNiLEtBQStCLEVBQ0UsRUFBRTtZQUNuQyxJQUFJLENBQUMsS0FBSyxFQUFFO2dCQUNWLE1BQU0sS0FBSyxDQUFDLGlCQUFpQixJQUFJLENBQUMsSUFBSSw4QkFBOEIsQ0FBQyxDQUFDO2FBQ3ZFO1lBRUQsTUFBTSxPQUFPLEdBQWdCO2dCQUMzQixNQUFNLEVBQUUsTUFBTTtnQkFDZCxPQUFPLEVBQUU7b0JBQ1AsY0FBYyxFQUFFLHFCQUFxQjtvQkFDckMsYUFBYSxFQUFFLElBQUksQ0FBQyxXQUFXO2lCQUNoQztnQkFDRCxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQzthQUM5RCxDQUFDO1lBRUYsTUFBTSxHQUFHLEdBQUcsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUN2RCxNQUFNLEdBQUcsR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7WUFFbkMsTUFBTSxlQUFlLEdBQTJCLEVBQUUsQ0FBQztZQUNuRCxHQUFHLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDcEUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUU7Z0JBQ1gsTUFBTSxJQUFJLEdBQUcsTUFBTSxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQzlCLE1BQU0sSUFBSSxLQUFLLENBQ2IsaUJBQWlCLElBQUksQ0FBQyxJQUFJLDhCQUE4QixJQUFJLENBQUMsU0FBUyxDQUNwRSxlQUFlLENBQ2hCLFVBQVUsSUFBSSxFQUFFLENBQ2xCLENBQUM7YUFDSDtZQUNELE1BQU0sSUFBSSxHQUFHLE1BQU0sR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzlCLElBQUksSUFBSSxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsSUFBSSxRQUFRLElBQUksSUFBSSxFQUFFO2dCQUN4RCxNQUFNLElBQUksS0FBSyxDQUNiLGlCQUFpQixJQUFJLENBQUMsSUFBSSw4QkFBOEIsSUFBSSxDQUFDLFNBQVMsQ0FDcEUsZUFBZSxDQUNoQixVQUFVLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FDbEMsQ0FBQzthQUNIO1lBRUQsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFvQixFQUFFLENBQUM7UUFDeEMsQ0FBQyxDQUFDO0lBekNDLENBQUM7Q0EwQ0w7QUF0REQsa0NBc0RDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXhlY3V0YWJsZVRvb2wgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgdHlwZSB7XG4gIFRvb2xJbnB1dFNjaGVtYSxcbiAgVG9vbFJlc3VsdENvbnRlbnRCbG9jayxcbn0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LWJlZHJvY2stcnVudGltZSc7XG5pbXBvcnQgeyBEb2N1bWVudFR5cGUgfSBmcm9tICdAc21pdGh5L3R5cGVzJztcblxuLyoqXG4gKiBBIHRvb2wgdGhhdCB1c2UgR3JhcGhRbCBxdWVyaWVzLlxuICovXG5leHBvcnQgY2xhc3MgR3JhcGhRbFRvb2wgaW1wbGVtZW50cyBFeGVjdXRhYmxlVG9vbCB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIEdyYXBoUWwgVG9vbFxuICAgKi9cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIG5hbWU6IHN0cmluZyxcbiAgICBwdWJsaWMgZGVzY3JpcHRpb246IHN0cmluZyxcbiAgICBwdWJsaWMgaW5wdXRTY2hlbWE6IFRvb2xJbnB1dFNjaGVtYSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGdyYXBoUWxFbmRwb2ludDogc3RyaW5nLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcXVlcnk6IHN0cmluZyxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFjY2Vzc1Rva2VuOiBzdHJpbmcsXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZmV0Y2ggPSBmZXRjaFxuICApIHt9XG5cbiAgZXhlY3V0ZSA9IGFzeW5jIChcbiAgICBpbnB1dDogRG9jdW1lbnRUeXBlIHwgdW5kZWZpbmVkXG4gICk6IFByb21pc2U8VG9vbFJlc3VsdENvbnRlbnRCbG9jaz4gPT4ge1xuICAgIGlmICghaW5wdXQpIHtcbiAgICAgIHRocm93IEVycm9yKGBHcmFwaFFsIHRvb2wgJyR7dGhpcy5uYW1lfScgcmVxdWlyZXMgaW5wdXQgdG8gZXhlY3V0ZS5gKTtcbiAgICB9XG5cbiAgICBjb25zdCBvcHRpb25zOiBSZXF1ZXN0SW5pdCA9IHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgaGVhZGVyczoge1xuICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2dyYXBocWwnLFxuICAgICAgICBBdXRob3JpemF0aW9uOiB0aGlzLmFjY2Vzc1Rva2VuLFxuICAgICAgfSxcbiAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHsgcXVlcnk6IHRoaXMucXVlcnksIHZhcmlhYmxlczogaW5wdXQgfSksXG4gICAgfTtcblxuICAgIGNvbnN0IHJlcSA9IG5ldyBSZXF1ZXN0KHRoaXMuZ3JhcGhRbEVuZHBvaW50LCBvcHRpb25zKTtcbiAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLl9mZXRjaChyZXEpO1xuXG4gICAgY29uc3QgcmVzcG9uc2VIZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG4gICAgcmVzLmhlYWRlcnMuZm9yRWFjaCgodmFsdWUsIGtleSkgPT4gKHJlc3BvbnNlSGVhZGVyc1trZXldID0gdmFsdWUpKTtcbiAgICBpZiAoIXJlcy5vaykge1xuICAgICAgY29uc3QgYm9keSA9IGF3YWl0IHJlcy50ZXh0KCk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBHcmFwaFFsIHRvb2wgJyR7dGhpcy5uYW1lfScgZmFpbGVkLCByZXNwb25zZSBoZWFkZXJzPSR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICAgICAgcmVzcG9uc2VIZWFkZXJzXG4gICAgICAgICl9LCBib2R5PSR7Ym9keX1gXG4gICAgICApO1xuICAgIH1cbiAgICBjb25zdCBib2R5ID0gYXdhaXQgcmVzLmpzb24oKTtcbiAgICBpZiAoYm9keSAmJiB0eXBlb2YgYm9keSA9PT0gJ29iamVjdCcgJiYgJ2Vycm9ycycgaW4gYm9keSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgR3JhcGhRbCB0b29sICcke3RoaXMubmFtZX0nIGZhaWxlZCwgcmVzcG9uc2UgaGVhZGVycz0ke0pTT04uc3RyaW5naWZ5KFxuICAgICAgICAgIHJlc3BvbnNlSGVhZGVyc1xuICAgICAgICApfSwgYm9keT0ke0pTT04uc3RyaW5naWZ5KGJvZHkpfWBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHsganNvbjogYm9keSBhcyBEb2N1bWVudFR5cGUgfTtcbiAgfTtcbn1cbiJdfQ==
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGhxbF90b29sLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbnZlcnNhdGlvbi9ydW50aW1lL2V2ZW50LXRvb2xzLXByb3ZpZGVyL2dyYXBocWxfdG9vbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFNQSwwRUFBcUU7QUFFckU7O0dBRUc7QUFDSCxNQUFhLFdBQVc7SUFDdEI7O09BRUc7SUFDSCxZQUNTLElBQVksRUFDWixXQUFtQixFQUNuQixXQUE0QixFQUMxQixlQUF1QixFQUNmLEtBQWEsRUFDckIsV0FBbUIsRUFDWCx5QkFBeUIsSUFBSSxpREFBc0IsQ0FDbEUsZUFBZSxFQUNmLFdBQVcsQ0FDWjtRQVRNLFNBQUksR0FBSixJQUFJLENBQVE7UUFDWixnQkFBVyxHQUFYLFdBQVcsQ0FBUTtRQUNuQixnQkFBVyxHQUFYLFdBQVcsQ0FBaUI7UUFDMUIsb0JBQWUsR0FBZixlQUFlLENBQVE7UUFDZixVQUFLLEdBQUwsS0FBSyxDQUFRO1FBQ3JCLGdCQUFXLEdBQVgsV0FBVyxDQUFRO1FBQ1gsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUd0QztRQUdILFlBQU8sR0FBRyxLQUFLLEVBQ2IsS0FBK0IsRUFDRSxFQUFFO1lBQ25DLElBQUksQ0FBQyxLQUFLLEVBQUU7Z0JBQ1YsTUFBTSxLQUFLLENBQUMsaUJBQWlCLElBQUksQ0FBQyxJQUFJLDhCQUE4QixDQUFDLENBQUM7YUFDdkU7WUFFRCxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxjQUFjLENBRy9EO2dCQUNBLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztnQkFDakIsU0FBUyxFQUFFLEtBQUs7YUFDakIsQ0FBQyxDQUFDO1lBQ0gsT0FBTyxFQUFFLElBQUksRUFBRSxRQUF3QixFQUFFLENBQUM7UUFDNUMsQ0FBQyxDQUFDO0lBakJDLENBQUM7Q0FrQkw7QUFqQ0Qsa0NBaUNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXhlY3V0YWJsZVRvb2wgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgdHlwZSB7XG4gIFRvb2xJbnB1dFNjaGVtYSxcbiAgVG9vbFJlc3VsdENvbnRlbnRCbG9jayxcbn0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LWJlZHJvY2stcnVudGltZSc7XG5pbXBvcnQgeyBEb2N1bWVudFR5cGUgfSBmcm9tICdAc21pdGh5L3R5cGVzJztcbmltcG9ydCB7IEdyYXBocWxSZXF1ZXN0RXhlY3V0b3IgfSBmcm9tICcuLi9ncmFwaHFsX3JlcXVlc3RfZXhlY3V0b3InO1xuXG4vKipcbiAqIEEgdG9vbCB0aGF0IHVzZSBHcmFwaFFsIHF1ZXJpZXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBHcmFwaFFsVG9vbCBpbXBsZW1lbnRzIEV4ZWN1dGFibGVUb29sIHtcbiAgLyoqXG4gICAqIENyZWF0ZXMgR3JhcGhRbCBUb29sXG4gICAqL1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgbmFtZTogc3RyaW5nLFxuICAgIHB1YmxpYyBkZXNjcmlwdGlvbjogc3RyaW5nLFxuICAgIHB1YmxpYyBpbnB1dFNjaGVtYTogVG9vbElucHV0U2NoZW1hLFxuICAgIHJlYWRvbmx5IGdyYXBoUWxFbmRwb2ludDogc3RyaW5nLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcXVlcnk6IHN0cmluZyxcbiAgICByZWFkb25seSBhY2Nlc3NUb2tlbjogc3RyaW5nLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZ3JhcGhxbFJlcXVlc3RFeGVjdXRvciA9IG5ldyBHcmFwaHFsUmVxdWVzdEV4ZWN1dG9yKFxuICAgICAgZ3JhcGhRbEVuZHBvaW50LFxuICAgICAgYWNjZXNzVG9rZW5cbiAgICApXG4gICkge31cblxuICBleGVjdXRlID0gYXN5bmMgKFxuICAgIGlucHV0OiBEb2N1bWVudFR5cGUgfCB1bmRlZmluZWRcbiAgKTogUHJvbWlzZTxUb29sUmVzdWx0Q29udGVudEJsb2NrPiA9PiB7XG4gICAgaWYgKCFpbnB1dCkge1xuICAgICAgdGhyb3cgRXJyb3IoYEdyYXBoUWwgdG9vbCAnJHt0aGlzLm5hbWV9JyByZXF1aXJlcyBpbnB1dCB0byBleGVjdXRlLmApO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5ncmFwaHFsUmVxdWVzdEV4ZWN1dG9yLmV4ZWN1dGVHcmFwaHFsPFxuICAgICAgRG9jdW1lbnRUeXBlLFxuICAgICAgRG9jdW1lbnRUeXBlXG4gICAgPih7XG4gICAgICBxdWVyeTogdGhpcy5xdWVyeSxcbiAgICAgIHZhcmlhYmxlczogaW5wdXQsXG4gICAgfSk7XG4gICAgcmV0dXJuIHsganNvbjogcmVzcG9uc2UgYXMgRG9jdW1lbnRUeXBlIH07XG4gIH07XG59XG4iXX0=
@@ -0,0 +1,21 @@
1
+ /// <reference types="node" />
2
+ export type GraphqlRequest<TVariables> = {
3
+ query: string;
4
+ variables: TVariables;
5
+ };
6
+ /**
7
+ * This class is responsible for executing GraphQL requests.
8
+ * Serializing query and it's inputs, adding authorization headers,
9
+ * inspecting response for errors and de-serializing output.
10
+ */
11
+ export declare class GraphqlRequestExecutor {
12
+ private readonly graphQlEndpoint;
13
+ private readonly accessToken;
14
+ private readonly _fetch;
15
+ /**
16
+ * Creates GraphQL request executor.
17
+ */
18
+ constructor(graphQlEndpoint: string, accessToken: string, _fetch?: typeof fetch);
19
+ executeGraphql: <TVariables, TReturn>(request: GraphqlRequest<TVariables>) => Promise<TReturn>;
20
+ }
21
+ //# sourceMappingURL=graphql_request_executor.d.ts.map
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GraphqlRequestExecutor = void 0;
4
+ /**
5
+ * This class is responsible for executing GraphQL requests.
6
+ * Serializing query and it's inputs, adding authorization headers,
7
+ * inspecting response for errors and de-serializing output.
8
+ */
9
+ class GraphqlRequestExecutor {
10
+ /**
11
+ * Creates GraphQL request executor.
12
+ */
13
+ constructor(graphQlEndpoint, accessToken, _fetch = fetch) {
14
+ this.graphQlEndpoint = graphQlEndpoint;
15
+ this.accessToken = accessToken;
16
+ this._fetch = _fetch;
17
+ this.executeGraphql = async (request) => {
18
+ const httpRequest = new Request(this.graphQlEndpoint, {
19
+ method: 'POST',
20
+ headers: {
21
+ 'Content-Type': 'application/graphql',
22
+ Authorization: this.accessToken,
23
+ },
24
+ body: JSON.stringify({
25
+ query: request.query,
26
+ variables: request.variables,
27
+ }),
28
+ });
29
+ const res = await this._fetch(httpRequest);
30
+ const responseHeaders = {};
31
+ res.headers.forEach((value, key) => (responseHeaders[key] = value));
32
+ if (!res.ok) {
33
+ const body = await res.text();
34
+ throw new Error(`GraphQL request failed, response headers=${JSON.stringify(responseHeaders)}, body=${body}`);
35
+ }
36
+ const body = await res.json();
37
+ if (body && typeof body === 'object' && 'errors' in body) {
38
+ throw new Error(`GraphQL request failed, response headers=${JSON.stringify(responseHeaders)}, body=${JSON.stringify(body)}`);
39
+ }
40
+ return body;
41
+ };
42
+ }
43
+ }
44
+ exports.GraphqlRequestExecutor = GraphqlRequestExecutor;
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGhxbF9yZXF1ZXN0X2V4ZWN1dG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbnZlcnNhdGlvbi9ydW50aW1lL2dyYXBocWxfcmVxdWVzdF9leGVjdXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFLQTs7OztHQUlHO0FBQ0gsTUFBYSxzQkFBc0I7SUFDakM7O09BRUc7SUFDSCxZQUNtQixlQUF1QixFQUN2QixXQUFtQixFQUNuQixTQUFTLEtBQUs7UUFGZCxvQkFBZSxHQUFmLGVBQWUsQ0FBUTtRQUN2QixnQkFBVyxHQUFYLFdBQVcsQ0FBUTtRQUNuQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBR2pDLG1CQUFjLEdBQUcsS0FBSyxFQUNwQixPQUFtQyxFQUNqQixFQUFFO1lBQ3BCLE1BQU0sV0FBVyxHQUFHLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUU7Z0JBQ3BELE1BQU0sRUFBRSxNQUFNO2dCQUNkLE9BQU8sRUFBRTtvQkFDUCxjQUFjLEVBQUUscUJBQXFCO29CQUNyQyxhQUFhLEVBQUUsSUFBSSxDQUFDLFdBQVc7aUJBQ2hDO2dCQUNELElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDO29CQUNuQixLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUs7b0JBQ3BCLFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUztpQkFDN0IsQ0FBQzthQUNILENBQUMsQ0FBQztZQUVILE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUMzQyxNQUFNLGVBQWUsR0FBMkIsRUFBRSxDQUFDO1lBQ25ELEdBQUcsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUNwRSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRTtnQkFDWCxNQUFNLElBQUksR0FBRyxNQUFNLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDOUIsTUFBTSxJQUFJLEtBQUssQ0FDYiw0Q0FBNEMsSUFBSSxDQUFDLFNBQVMsQ0FDeEQsZUFBZSxDQUNoQixVQUFVLElBQUksRUFBRSxDQUNsQixDQUFDO2FBQ0g7WUFDRCxNQUFNLElBQUksR0FBRyxNQUFNLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUM5QixJQUFJLElBQUksSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLElBQUksUUFBUSxJQUFJLElBQUksRUFBRTtnQkFDeEQsTUFBTSxJQUFJLEtBQUssQ0FDYiw0Q0FBNEMsSUFBSSxDQUFDLFNBQVMsQ0FDeEQsZUFBZSxDQUNoQixVQUFVLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FDbEMsQ0FBQzthQUNIO1lBQ0QsT0FBTyxJQUFlLENBQUM7UUFDekIsQ0FBQyxDQUFDO0lBckNDLENBQUM7Q0FzQ0w7QUE5Q0Qsd0RBOENDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgR3JhcGhxbFJlcXVlc3Q8VFZhcmlhYmxlcz4gPSB7XG4gIHF1ZXJ5OiBzdHJpbmc7XG4gIHZhcmlhYmxlczogVFZhcmlhYmxlcztcbn07XG5cbi8qKlxuICogVGhpcyBjbGFzcyBpcyByZXNwb25zaWJsZSBmb3IgZXhlY3V0aW5nIEdyYXBoUUwgcmVxdWVzdHMuXG4gKiBTZXJpYWxpemluZyBxdWVyeSBhbmQgaXQncyBpbnB1dHMsIGFkZGluZyBhdXRob3JpemF0aW9uIGhlYWRlcnMsXG4gKiBpbnNwZWN0aW5nIHJlc3BvbnNlIGZvciBlcnJvcnMgYW5kIGRlLXNlcmlhbGl6aW5nIG91dHB1dC5cbiAqL1xuZXhwb3J0IGNsYXNzIEdyYXBocWxSZXF1ZXN0RXhlY3V0b3Ige1xuICAvKipcbiAgICogQ3JlYXRlcyBHcmFwaFFMIHJlcXVlc3QgZXhlY3V0b3IuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGdyYXBoUWxFbmRwb2ludDogc3RyaW5nLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYWNjZXNzVG9rZW46IHN0cmluZyxcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9mZXRjaCA9IGZldGNoXG4gICkge31cblxuICBleGVjdXRlR3JhcGhxbCA9IGFzeW5jIDxUVmFyaWFibGVzLCBUUmV0dXJuPihcbiAgICByZXF1ZXN0OiBHcmFwaHFsUmVxdWVzdDxUVmFyaWFibGVzPlxuICApOiBQcm9taXNlPFRSZXR1cm4+ID0+IHtcbiAgICBjb25zdCBodHRwUmVxdWVzdCA9IG5ldyBSZXF1ZXN0KHRoaXMuZ3JhcGhRbEVuZHBvaW50LCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9ncmFwaHFsJyxcbiAgICAgICAgQXV0aG9yaXphdGlvbjogdGhpcy5hY2Nlc3NUb2tlbixcbiAgICAgIH0sXG4gICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIHF1ZXJ5OiByZXF1ZXN0LnF1ZXJ5LFxuICAgICAgICB2YXJpYWJsZXM6IHJlcXVlc3QudmFyaWFibGVzLFxuICAgICAgfSksXG4gICAgfSk7XG5cbiAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLl9mZXRjaChodHRwUmVxdWVzdCk7XG4gICAgY29uc3QgcmVzcG9uc2VIZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG4gICAgcmVzLmhlYWRlcnMuZm9yRWFjaCgodmFsdWUsIGtleSkgPT4gKHJlc3BvbnNlSGVhZGVyc1trZXldID0gdmFsdWUpKTtcbiAgICBpZiAoIXJlcy5vaykge1xuICAgICAgY29uc3QgYm9keSA9IGF3YWl0IHJlcy50ZXh0KCk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBHcmFwaFFMIHJlcXVlc3QgZmFpbGVkLCByZXNwb25zZSBoZWFkZXJzPSR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICAgICAgcmVzcG9uc2VIZWFkZXJzXG4gICAgICAgICl9LCBib2R5PSR7Ym9keX1gXG4gICAgICApO1xuICAgIH1cbiAgICBjb25zdCBib2R5ID0gYXdhaXQgcmVzLmpzb24oKTtcbiAgICBpZiAoYm9keSAmJiB0eXBlb2YgYm9keSA9PT0gJ29iamVjdCcgJiYgJ2Vycm9ycycgaW4gYm9keSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgR3JhcGhRTCByZXF1ZXN0IGZhaWxlZCwgcmVzcG9uc2UgaGVhZGVycz0ke0pTT04uc3RyaW5naWZ5KFxuICAgICAgICAgIHJlc3BvbnNlSGVhZGVyc1xuICAgICAgICApfSwgYm9keT0ke0pTT04uc3RyaW5naWZ5KGJvZHkpfWBcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBib2R5IGFzIFRSZXR1cm47XG4gIH07XG59XG4iXX0=
@@ -43,7 +43,17 @@ export type ConversationTurnEvent = {
43
43
  authorization: string;
44
44
  };
45
45
  };
46
- messages: Array<ConversationMessage>;
46
+ /**
47
+ * @deprecated This field is going to be removed in upcoming releases.
48
+ */
49
+ messages?: Array<ConversationMessage>;
50
+ messageHistoryQuery: {
51
+ getQueryName: string;
52
+ getQueryInputTypeName: string;
53
+ listQueryName: string;
54
+ listQueryInputTypeName: string;
55
+ listQueryLimit?: number;
56
+ };
47
57
  toolsConfiguration?: {
48
58
  dataTools?: Array<ToolDefinition & {
49
59
  graphqlRequestInputDescriptor: {
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29udmVyc2F0aW9uL3J1bnRpbWUvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGJlZHJvY2sgZnJvbSAnQGF3cy1zZGsvY2xpZW50LWJlZHJvY2stcnVudGltZSc7XG5pbXBvcnQgKiBhcyBzbWl0aHkgZnJvbSAnQHNtaXRoeS90eXBlcyc7XG5cbi8qXG4gIE5vdGljZTogVGhpcyBmaWxlIGNvbnRhaW5zIHR5cGVzIHRoYXQgYXJlIGV4cG9zZWQgcHVibGljbHkuXG4gIFRoZXJlZm9yZSwgd2UgYXZvaWQgZWFnZXIgaW50cm9kdWN0aW9uIG9mIHR5cGVzIHRoYXQgd291bGRuJ3QgYmUgdXNlZnVsIGZvclxuICBwdWJsaWMgQVBJIGNvbnN1bWVyIGFuZCBwb3RlbnRpYWxseSBwb2xsdXRlIHN5bnRheCBhc3Npc3QgaW4gSURFcy5cbiAqL1xuXG5leHBvcnQgdHlwZSBUb29sSW5wdXRTY2hlbWEgPSBiZWRyb2NrLlRvb2xJbnB1dFNjaGVtYTtcbmV4cG9ydCB0eXBlIFRvb2xSZXN1bHRDb250ZW50QmxvY2sgPSBiZWRyb2NrLlRvb2xSZXN1bHRDb250ZW50QmxvY2s7XG5leHBvcnQgdHlwZSBUb29sRXhlY3V0aW9uSW5wdXQgPSBzbWl0aHkuRG9jdW1lbnRUeXBlO1xuXG5leHBvcnQgdHlwZSBDb252ZXJzYXRpb25NZXNzYWdlID0ge1xuICByb2xlOiAndXNlcicgfCAnYXNzaXN0YW50JztcbiAgY29udGVudDogQXJyYXk8Q29udmVyc2F0aW9uTWVzc2FnZUNvbnRlbnRCbG9jaz47XG59O1xuXG5leHBvcnQgdHlwZSBDb252ZXJzYXRpb25NZXNzYWdlQ29udGVudEJsb2NrID1cbiAgfCBiZWRyb2NrLkNvbnRlbnRCbG9ja1xuICB8IHtcbiAgICAgIGltYWdlOiBPbWl0PGJlZHJvY2suSW1hZ2VCbG9jaywgJ3NvdXJjZSc+ICYge1xuICAgICAgICAvLyBVcHN0cmVhbSAoQXBwc3luYykgbWF5IHNlbmQgaW1hZ2VzIGluIGEgZm9ybSBvZiBCYXNlNjQgZW5jb2RlZCBzdHJpbmdzXG4gICAgICAgIHNvdXJjZTogeyBieXRlczogc3RyaW5nIH07XG4gICAgICB9O1xuICAgIH07XG5cbmV4cG9ydCB0eXBlIFRvb2xEZWZpbml0aW9uID0ge1xuICBuYW1lOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIGlucHV0U2NoZW1hOiBUb29sSW5wdXRTY2hlbWE7XG59O1xuXG4vLyBDdXN0b21lcnMgYXJlIG5vdCBleHBlY3RlZCB0byBjcmVhdGUgZXZlbnRzIHRoZW1zZWx2ZXMsIHRoZXJlZm9yZVxuLy8gZGVmaW5pdGlvbiBvZiBuZXN0ZWQgcHJvcGVydGllcyBpcyBpbmxpbmUuXG5leHBvcnQgdHlwZSBDb252ZXJzYXRpb25UdXJuRXZlbnQgPSB7XG4gIGNvbnZlcnNhdGlvbklkOiBzdHJpbmc7XG4gIGN1cnJlbnRNZXNzYWdlSWQ6IHN0cmluZztcbiAgcmVzcG9uc2VNdXRhdGlvbjoge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBpbnB1dFR5cGVOYW1lOiBzdHJpbmc7XG4gICAgc2VsZWN0aW9uU2V0OiBzdHJpbmc7XG4gIH07XG4gIGdyYXBocWxBcGlFbmRwb2ludDogc3RyaW5nO1xuICBtb2RlbENvbmZpZ3VyYXRpb246IHtcbiAgICBtb2RlbElkOiBzdHJpbmc7XG4gICAgc3lzdGVtUHJvbXB0OiBzdHJpbmc7XG4gICAgcmVnaW9uPzogc3RyaW5nO1xuICAgIGluZmVyZW5jZUNvbmZpZ3VyYXRpb24/OiB7XG4gICAgICBtYXhUb2tlbnM/OiBudW1iZXI7XG4gICAgICB0ZW1wZXJhdHVyZT86IG51bWJlcjtcbiAgICAgIHRvcFA/OiBudW1iZXI7XG4gICAgfTtcbiAgfTtcbiAgcmVxdWVzdDoge1xuICAgIGhlYWRlcnM6IHtcbiAgICAgIGF1dGhvcml6YXRpb246IHN0cmluZztcbiAgICB9O1xuICB9O1xuICBtZXNzYWdlczogQXJyYXk8Q29udmVyc2F0aW9uTWVzc2FnZT47XG4gIHRvb2xzQ29uZmlndXJhdGlvbj86IHtcbiAgICBkYXRhVG9vbHM/OiBBcnJheTxcbiAgICAgIFRvb2xEZWZpbml0aW9uICYge1xuICAgICAgICBncmFwaHFsUmVxdWVzdElucHV0RGVzY3JpcHRvcjoge1xuICAgICAgICAgIHF1ZXJ5TmFtZTogc3RyaW5nO1xuICAgICAgICAgIHNlbGVjdGlvblNldDogc3RyaW5nO1xuICAgICAgICAgIHByb3BlcnR5VHlwZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgPjtcbiAgICBjbGllbnRUb29scz86IEFycmF5PFRvb2xEZWZpbml0aW9uPjtcbiAgfTtcbn07XG5cbmV4cG9ydCB0eXBlIEV4ZWN1dGFibGVUb29sID0gVG9vbERlZmluaXRpb24gJiB7XG4gIGV4ZWN1dGU6IChcbiAgICBpbnB1dDogVG9vbEV4ZWN1dGlvbklucHV0IHwgdW5kZWZpbmVkXG4gICkgPT4gUHJvbWlzZTxUb29sUmVzdWx0Q29udGVudEJsb2NrPjtcbn07XG4iXX0=
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29udmVyc2F0aW9uL3J1bnRpbWUvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGJlZHJvY2sgZnJvbSAnQGF3cy1zZGsvY2xpZW50LWJlZHJvY2stcnVudGltZSc7XG5pbXBvcnQgKiBhcyBzbWl0aHkgZnJvbSAnQHNtaXRoeS90eXBlcyc7XG5cbi8qXG4gIE5vdGljZTogVGhpcyBmaWxlIGNvbnRhaW5zIHR5cGVzIHRoYXQgYXJlIGV4cG9zZWQgcHVibGljbHkuXG4gIFRoZXJlZm9yZSwgd2UgYXZvaWQgZWFnZXIgaW50cm9kdWN0aW9uIG9mIHR5cGVzIHRoYXQgd291bGRuJ3QgYmUgdXNlZnVsIGZvclxuICBwdWJsaWMgQVBJIGNvbnN1bWVyIGFuZCBwb3RlbnRpYWxseSBwb2xsdXRlIHN5bnRheCBhc3Npc3QgaW4gSURFcy5cbiAqL1xuXG5leHBvcnQgdHlwZSBUb29sSW5wdXRTY2hlbWEgPSBiZWRyb2NrLlRvb2xJbnB1dFNjaGVtYTtcbmV4cG9ydCB0eXBlIFRvb2xSZXN1bHRDb250ZW50QmxvY2sgPSBiZWRyb2NrLlRvb2xSZXN1bHRDb250ZW50QmxvY2s7XG5leHBvcnQgdHlwZSBUb29sRXhlY3V0aW9uSW5wdXQgPSBzbWl0aHkuRG9jdW1lbnRUeXBlO1xuXG5leHBvcnQgdHlwZSBDb252ZXJzYXRpb25NZXNzYWdlID0ge1xuICByb2xlOiAndXNlcicgfCAnYXNzaXN0YW50JztcbiAgY29udGVudDogQXJyYXk8Q29udmVyc2F0aW9uTWVzc2FnZUNvbnRlbnRCbG9jaz47XG59O1xuXG5leHBvcnQgdHlwZSBDb252ZXJzYXRpb25NZXNzYWdlQ29udGVudEJsb2NrID1cbiAgfCBiZWRyb2NrLkNvbnRlbnRCbG9ja1xuICB8IHtcbiAgICAgIGltYWdlOiBPbWl0PGJlZHJvY2suSW1hZ2VCbG9jaywgJ3NvdXJjZSc+ICYge1xuICAgICAgICAvLyBVcHN0cmVhbSAoQXBwc3luYykgbWF5IHNlbmQgaW1hZ2VzIGluIGEgZm9ybSBvZiBCYXNlNjQgZW5jb2RlZCBzdHJpbmdzXG4gICAgICAgIHNvdXJjZTogeyBieXRlczogc3RyaW5nIH07XG4gICAgICB9O1xuICAgIH07XG5cbmV4cG9ydCB0eXBlIFRvb2xEZWZpbml0aW9uID0ge1xuICBuYW1lOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIGlucHV0U2NoZW1hOiBUb29sSW5wdXRTY2hlbWE7XG59O1xuXG4vLyBDdXN0b21lcnMgYXJlIG5vdCBleHBlY3RlZCB0byBjcmVhdGUgZXZlbnRzIHRoZW1zZWx2ZXMsIHRoZXJlZm9yZVxuLy8gZGVmaW5pdGlvbiBvZiBuZXN0ZWQgcHJvcGVydGllcyBpcyBpbmxpbmUuXG5leHBvcnQgdHlwZSBDb252ZXJzYXRpb25UdXJuRXZlbnQgPSB7XG4gIGNvbnZlcnNhdGlvbklkOiBzdHJpbmc7XG4gIGN1cnJlbnRNZXNzYWdlSWQ6IHN0cmluZztcbiAgcmVzcG9uc2VNdXRhdGlvbjoge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBpbnB1dFR5cGVOYW1lOiBzdHJpbmc7XG4gICAgc2VsZWN0aW9uU2V0OiBzdHJpbmc7XG4gIH07XG4gIGdyYXBocWxBcGlFbmRwb2ludDogc3RyaW5nO1xuICBtb2RlbENvbmZpZ3VyYXRpb246IHtcbiAgICBtb2RlbElkOiBzdHJpbmc7XG4gICAgc3lzdGVtUHJvbXB0OiBzdHJpbmc7XG4gICAgcmVnaW9uPzogc3RyaW5nO1xuICAgIGluZmVyZW5jZUNvbmZpZ3VyYXRpb24/OiB7XG4gICAgICBtYXhUb2tlbnM/OiBudW1iZXI7XG4gICAgICB0ZW1wZXJhdHVyZT86IG51bWJlcjtcbiAgICAgIHRvcFA/OiBudW1iZXI7XG4gICAgfTtcbiAgfTtcbiAgcmVxdWVzdDoge1xuICAgIGhlYWRlcnM6IHtcbiAgICAgIGF1dGhvcml6YXRpb246IHN0cmluZztcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVGhpcyBmaWVsZCBpcyBnb2luZyB0byBiZSByZW1vdmVkIGluIHVwY29taW5nIHJlbGVhc2VzLlxuICAgKi9cbiAgbWVzc2FnZXM/OiBBcnJheTxDb252ZXJzYXRpb25NZXNzYWdlPjtcbiAgbWVzc2FnZUhpc3RvcnlRdWVyeToge1xuICAgIGdldFF1ZXJ5TmFtZTogc3RyaW5nO1xuICAgIGdldFF1ZXJ5SW5wdXRUeXBlTmFtZTogc3RyaW5nO1xuICAgIGxpc3RRdWVyeU5hbWU6IHN0cmluZztcbiAgICBsaXN0UXVlcnlJbnB1dFR5cGVOYW1lOiBzdHJpbmc7XG4gICAgbGlzdFF1ZXJ5TGltaXQ/OiBudW1iZXI7XG4gIH07XG4gIHRvb2xzQ29uZmlndXJhdGlvbj86IHtcbiAgICBkYXRhVG9vbHM/OiBBcnJheTxcbiAgICAgIFRvb2xEZWZpbml0aW9uICYge1xuICAgICAgICBncmFwaHFsUmVxdWVzdElucHV0RGVzY3JpcHRvcjoge1xuICAgICAgICAgIHF1ZXJ5TmFtZTogc3RyaW5nO1xuICAgICAgICAgIHNlbGVjdGlvblNldDogc3RyaW5nO1xuICAgICAgICAgIHByb3BlcnR5VHlwZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgPjtcbiAgICBjbGllbnRUb29scz86IEFycmF5PFRvb2xEZWZpbml0aW9uPjtcbiAgfTtcbn07XG5cbmV4cG9ydCB0eXBlIEV4ZWN1dGFibGVUb29sID0gVG9vbERlZmluaXRpb24gJiB7XG4gIGV4ZWN1dGU6IChcbiAgICBpbnB1dDogVG9vbEV4ZWN1dGlvbklucHV0IHwgdW5kZWZpbmVkXG4gICkgPT4gUHJvbWlzZTxUb29sUmVzdWx0Q29udGVudEJsb2NrPjtcbn07XG4iXX0=
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aws-amplify/ai-constructs",
3
- "version": "0.1.4",
3
+ "version": "0.2.0",
4
4
  "type": "commonjs",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -110,6 +110,8 @@ export class AuthTransformer extends TransformerAuthBase implements TransformerA
110
110
  // (undocumented)
111
111
  addAutoGeneratedRelationalFields: (ctx: TransformerContextProvider, def: ObjectTypeDefinitionNode, allowedFields: Set<string>, fields: readonly string[]) => void;
112
112
  // (undocumented)
113
+ addCustomOperationFieldsToAuthNonModelConfig: (ctx: TransformerTransformSchemaStepContextProvider) => void;
114
+ // (undocumented)
113
115
  addFieldResolverForDynamicAuth: (ctx: TransformerContextProvider, def: ObjectTypeDefinitionNode, typeName: string, fieldName: string) => void;
114
116
  // (undocumented)
115
117
  addFieldsToObject: (ctx: TransformerTransformSchemaStepContextProvider, modelName: string, ownerFields: Array<string>) => void;
@@ -3,6 +3,12 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [4.1.3](https://github.com/aws-amplify/amplify-category-api/compare/@aws-amplify/graphql-auth-transformer@4.1.2...@aws-amplify/graphql-auth-transformer@4.1.3) (2024-10-10)
7
+
8
+ ### Bug Fixes
9
+
10
+ - add aws_iam to custom operations when enableIamAuthorization is enabled; fix graphql type utils ([#2921](https://github.com/aws-amplify/amplify-category-api/issues/2921)) ([5cb5a2b](https://github.com/aws-amplify/amplify-category-api/commit/5cb5a2bcacf30ca9ff0f29fe32be57d1ffb6c1cf))
11
+
6
12
  ## [4.1.2](https://github.com/aws-amplify/amplify-category-api/compare/@aws-amplify/graphql-auth-transformer@4.1.1...@aws-amplify/graphql-auth-transformer@4.1.2) (2024-10-01)
7
13
 
8
14
  **Note:** Version bump only for package @aws-amplify/graphql-auth-transformer
@@ -21,6 +21,7 @@ export declare class AuthTransformer extends TransformerAuthBase implements Tran
21
21
  object: (def: ObjectTypeDefinitionNode, directive: DirectiveNode, context: TransformerSchemaVisitStepContextProvider) => void;
22
22
  after: (context: TransformerContextProvider) => void;
23
23
  field: (parent: ObjectTypeDefinitionNode | InterfaceTypeDefinitionNode, field: FieldDefinitionNode, directive: DirectiveNode, context: TransformerSchemaVisitStepContextProvider) => void;
24
+ addCustomOperationFieldsToAuthNonModelConfig: (ctx: TransformerTransformSchemaStepContextProvider) => void;
24
25
  transformSchema: (context: TransformerTransformSchemaStepContextProvider) => void;
25
26
  generateResolvers: (context: TransformerContextProvider) => void;
26
27
  removeAuthFieldsFromSubscriptionFilter: (context: TransformerTransformSchemaStepContextProvider) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"graphql-auth-transformer.d.ts","sourceRoot":"","sources":["../src/graphql-auth-transformer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"graphql-auth-transformer.d.ts","sourceRoot":"","sources":["../src/graphql-auth-transformer.ts"],"names":[],"mappings":"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"}
@@ -165,7 +165,25 @@ class AuthTransformer extends graphql_transformer_core_1.TransformerAuthBase {
165
165
  this.authNonModelConfig.set(typeFieldName, acm);
166
166
  }
167
167
  };
168
+ this.addCustomOperationFieldsToAuthNonModelConfig = (ctx) => {
169
+ if (!ctx.transformParameters.sandboxModeEnabled && !ctx.synthParameters.enableIamAccess) {
170
+ return;
171
+ }
172
+ const hasAwsIamDirective = (field) => {
173
+ var _a;
174
+ return (_a = field.directives) === null || _a === void 0 ? void 0 : _a.some((dir) => dir.name.value === 'aws_iam');
175
+ };
176
+ const allObjects = ctx.inputDocument.definitions.filter(graphql_transformer_core_1.isBuiltInGraphqlNode);
177
+ allObjects.forEach((object) => {
178
+ const typeName = object.name.value;
179
+ const fieldsWithoutIamDirective = object.fields.filter((field) => !hasAwsIamDirective(field));
180
+ fieldsWithoutIamDirective.forEach((field) => {
181
+ (0, utils_1.addDirectivesToField)(ctx, typeName, field.name.value, [(0, graphql_transformer_common_1.makeDirective)('aws_iam', [])]);
182
+ });
183
+ });
184
+ };
168
185
  this.transformSchema = (context) => {
186
+ this.addCustomOperationFieldsToAuthNonModelConfig(context);
169
187
  const searchableAggregateServiceDirectives = new Set();
170
188
  const getOwnerFields = (acm) => acm.getRoles().reduce((prev, role) => {
171
189
  if (this.roleMap.get(role).strategy === 'owner')