@squidcloud/client 1.0.435 → 1.0.436

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 (49) hide show
  1. package/dist/cjs/index.js +1 -1
  2. package/dist/esm/index.js +1 -1
  3. package/dist/internal-common/src/metric-name.d.ts +9 -0
  4. package/dist/internal-common/src/public-types/ai-agent-integrations.public-types.d.ts +4 -0
  5. package/dist/internal-common/src/public-types/ai-agent.public-types.d.ts +9 -2
  6. package/dist/internal-common/src/public-types/ai-query.public-types.d.ts +22 -37
  7. package/dist/internal-common/src/public-types/integration.public-types.d.ts +1 -1
  8. package/dist/internal-common/src/public-types-backend/api-call.public-context.d.ts +30 -0
  9. package/dist/internal-common/src/public-types-backend/mutation.public-context.d.ts +148 -0
  10. package/dist/internal-common/src/public-types-backend/native-query.public-context.d.ts +72 -0
  11. package/dist/internal-common/src/public-types-backend/query.public-context.d.ts +177 -0
  12. package/dist/internal-common/src/types/ai-agent.types.d.ts +191 -0
  13. package/dist/internal-common/src/types/ai-knowledge-base.types.d.ts +202 -0
  14. package/dist/internal-common/src/types/ai-matchmaking.types.d.ts +59 -0
  15. package/dist/internal-common/src/types/backend-function.types.d.ts +1 -0
  16. package/dist/internal-common/src/types/communication.types.d.ts +1 -0
  17. package/dist/internal-common/src/types/document.types.d.ts +1 -0
  18. package/dist/internal-common/src/types/file.types.d.ts +6 -0
  19. package/dist/internal-common/src/types/headers.types.d.ts +17 -0
  20. package/dist/internal-common/src/types/management-api-key.types.d.ts +92 -0
  21. package/dist/internal-common/src/types/mutation.types.d.ts +1 -0
  22. package/dist/internal-common/src/types/notification.types.d.ts +5 -0
  23. package/dist/internal-common/src/types/observability.types.d.ts +101 -0
  24. package/dist/internal-common/src/types/query.types.d.ts +13 -0
  25. package/dist/internal-common/src/types/secret.types.d.ts +7 -0
  26. package/dist/internal-common/src/types/socket.types.d.ts +1 -0
  27. package/dist/internal-common/src/types/stage.d.ts +9 -0
  28. package/dist/internal-common/src/types/time-units.d.ts +1 -0
  29. package/dist/internal-common/src/types/url-shortener.types.d.ts +45 -0
  30. package/dist/internal-common/src/utils/array.d.ts +7 -0
  31. package/dist/internal-common/src/utils/e2e-test-utils.d.ts +2 -0
  32. package/dist/internal-common/src/utils/file-utils.d.ts +2 -0
  33. package/dist/internal-common/src/utils/global.utils.d.ts +1 -0
  34. package/dist/internal-common/src/utils/http.d.ts +5 -0
  35. package/dist/internal-common/src/utils/lock.manager.d.ts +14 -0
  36. package/dist/internal-common/src/utils/metric-utils.d.ts +4 -0
  37. package/dist/internal-common/src/utils/metrics.types.d.ts +7 -0
  38. package/dist/internal-common/src/utils/object.d.ts +86 -0
  39. package/dist/internal-common/src/utils/serialization.d.ts +18 -0
  40. package/dist/internal-common/src/utils/squid.constants.d.ts +1 -0
  41. package/dist/internal-common/src/utils/trace-id-generator.d.ts +1 -0
  42. package/dist/internal-common/src/utils/validation.d.ts +19 -0
  43. package/dist/internal-common/src/websocket.impl.d.ts +26 -0
  44. package/dist/typescript-client/src/agent/ai-agent-client-reference.d.ts +2 -1
  45. package/dist/typescript-client/src/ai-client.d.ts +7 -1
  46. package/dist/typescript-client/src/index.d.ts +1 -0
  47. package/dist/typescript-client/src/management-client.d.ts +129 -0
  48. package/dist/typescript-client/src/version.d.ts +1 -1
  49. package/package.json +1 -1
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Names of the Squid metrics.
3
+ * Should be in sync with MetricName.kt.
4
+ * See MetricName.kt for documentation on each value.
5
+ */
6
+ export declare const ALL_SQUID_METRIC_NAMES: readonly ["squid_functionExecution_count", "squid_functionExecution_time", "squid_aiChatbotContext_size", "squid_aiChatbotChatInputTokens_count", "squid_aiChatbotChatOutputTokens_count", "squid_aiChatbotChatOutcome_count", "squid_aiImageGeneration_count", "squid_aiImageGeneration_time", "squid_aiRemoveBackground_count", "squid_aiRemoveBackground_time", "squid_aiAudioTranscribe_count", "squid_aiAudioTranscribe_time", "squid_aiAudioCreateSpeech_count", "squid_aiAudioCreateSpeech_time", "squid_aiIntegrationData_count", "squid_aiIntegrationData_time", "squid_aiIntegrationApi_count", "squid_aiIntegrationApi_time", "squid_apiControllerCall_count", "squid_apiControllerCall_time", "squid_aiContextUpsert_count", "squid_aiContextDelete_count", "squid_codeInitialization_count", "squid_codeInitialization_time", "squid_deleteApiKey_count", "squid_deleteApiKey_time", "squid_deleteSecret_count", "squid_deleteSecret_time", "squid_discoverGraphQLConnectionSchema_count", "squid_discoverGraphQLConnectionSchema_time", "squid_discoverOpenApiSchema_count", "squid_discoverOpenApiSchema_time", "squid_discoverOpenApiSchemaFromFile_count", "squid_discoverOpenApiSchemaFromFile_time", "squid_executeBackendFunction_count", "squid_executeBackendFunction_time", "squid_getAiChatbotProfiles_count", "squid_getAiChatbotProfiles_time", "squid_getAllApiKeys_count", "squid_getAllApiKeys_time", "squid_getAllSecrets_count", "squid_getAllSecrets_time", "squid_getAppApiKey_count", "squid_getAppApiKey_time", "squid_getSecret_count", "squid_getSecret_time", "squid_graphql_count", "squid_graphql_time", "squid_graphqlQuery_count", "squid_graphqlQuery_time", "squid_integrationCount_value", "squid_acquireLock_count", "squid_releaseLock_count", "squid_mutate_count", "squid_mutate_time", "squid_metricQuery_count", "squid_metricQuery_time", "squid_metricReport_count", "squid_metricReport_time", "squid_nativeQuery_count", "squid_nativeQuery_time", "squid_openapi_count", "squid_openapi_time", "squid_produceTopicMessage_count", "squid_produceTopicMessage_time", "squid_query_count", "squid_query_time", "squid_registerQuery_count", "squid_registerQuery_time", "squid_rerankChunks_count", "squid_rerankChunks_time", "squid_schedulerJob_count", "squid_schedulerJob_time", "squid_schema_size", "squid_secrets_entries", "squid_storageDeleteFiles_count", "squid_storageDeleteFiles_time", "squid_storageGetDownloadUrl_count", "squid_storageGetDownloadUrl_time", "squid_storageGetFileMetadata_count", "squid_storageGetFileMetadata_time", "squid_storageListDirectoryContents_count", "squid_storageListDirectoryContents_time", "squid_storageUploadFile_count", "squid_storageUploadFile_time", "squid_subscribeToTopic_count", "squid_subscribeToTopic_time", "squid_testGraphQLConnection_count", "squid_testGraphQLConnection_time", "squid_testAgentProtocolConnection_count", "squid_testAgentProtocolConnection_time", "squid_trigger_count", "squid_trigger_time", "squid_upsertApiKey_count", "squid_upsertApiKey_time", "squid_upsertSecret_count", "squid_upsertSecret_time", "squid_vectorChunks_count", "squid_vectorChunks_time", "squid_webhook_count", "squid_webhook_time"];
7
+ export type MetricName = (typeof ALL_SQUID_METRIC_NAMES)[number];
8
+ /** Common prefix for all Squid metrics. */
9
+ export declare const SQUID_METRIC_NAME_PREFIX = "squid_";
@@ -14,6 +14,10 @@ export interface AiAgentDatabaseIntegrationOptions {
14
14
  collectionsToUse?: string[];
15
15
  /** If true, disables the code interpreter when analyzing query results. Default: false. */
16
16
  disableCodeInterpreter?: boolean;
17
+ /** Disables the whole analyze stage (includes code interpreter). */
18
+ disableAnalyzeStage?: boolean;
19
+ /** Enables raw results in the response. */
20
+ enableRawResults?: boolean;
17
21
  /** If true, provides more detailed status updates during AI query execution. Default: false. */
18
22
  verboseStatusUpdates?: boolean;
19
23
  /** If provided, this agent will be used to generate the query. */
@@ -239,7 +239,14 @@ export interface AiFileUrl {
239
239
  /** The file name, can be used in the prompt to reference the file. */
240
240
  fileName?: string;
241
241
  }
242
- /** The purpose of the AI file, used to determine how the file should be processed or utilized. */
242
+ /**
243
+ * The purpose of the AI file, used to determine how the file should be processed or utilized.
244
+ *
245
+ * - `'context'` - The file is included directly in the AI prompt as contextual content (e.g., images, PDFs).
246
+ * Use this for files that the AI should reference when generating a response.
247
+ * - `'tools'` - The file is returned as part of a tool/function call result (e.g., query results, generated documents).
248
+ * Use this for files produced by AI tools or integrations that should be delivered to the caller alongside the response.
249
+ */
243
250
  export type AiFilePurpose = 'context' | 'tools';
244
251
  /**
245
252
  * Metadata for an AI agent connected to an integration.
@@ -593,7 +600,7 @@ export interface AiStatusMessage {
593
600
  /** ID of the status update message. */
594
601
  messageId: string;
595
602
  /** The ID of the agent generating the status message. */
596
- agentId: AiAgentId;
603
+ agentId?: AiAgentId;
597
604
  /** An optional chat ID associated with the status message. */
598
605
  chatId?: string;
599
606
  /** The title or summary of the status message. */
@@ -1,6 +1,7 @@
1
- import { AiChatOptions, AiSessionContext } from './ai-agent.public-types';
1
+ import { AiAgentMemoryOptions, AiChatOptions, AiFileUrl, AiSessionContext } from './ai-agent.public-types';
2
2
  import { ApiOptions } from './api-client.public-types';
3
3
  import { AiAgentId, IntegrationId } from './communication.public-types';
4
+ import { PartialBy } from './typescript.public-types';
4
5
  /**
5
6
  * Options for configuring AI query execution.
6
7
  * @category AI
@@ -13,16 +14,16 @@ export interface AiQueryOptions {
13
14
  instructions?: string;
14
15
  /** Whether to enable raw results output. */
15
16
  enableRawResults?: boolean;
16
- /** Whether to generate a step-by-step walkthrough for the response. */
17
- generateWalkthrough?: boolean;
18
17
  /** Options for the collection selection stage. */
19
18
  selectCollectionsOptions?: AiQuerySelectCollectionsOptions;
20
19
  /** Options for the query generation stage. */
21
20
  generateQueryOptions?: AiQueryGenerateQueryOptions;
22
- /** Options specify how to query result should be analyzed (processed) before returning it to user. */
21
+ /** Options to specify how the query result should be analyzed (processed) before returning it to the user. */
23
22
  analyzeResultsOptions?: AiQueryAnalyzeResultsOptions;
24
23
  /** Session information for the AI query execution. */
25
- sessionContext?: AiSessionContext;
24
+ sessionContext?: PartialBy<AiSessionContext, 'agentId'>;
25
+ /** memory options */
26
+ memoryOptions?: AiAgentMemoryOptions;
26
27
  }
27
28
  /**
28
29
  * Request to execute an AI query using a specific integration.
@@ -85,6 +86,12 @@ export interface AiQueryGenerateQueryOptions {
85
86
  }
86
87
  /** Options for the query result analysis. */
87
88
  export interface AiQueryAnalyzeResultsOptions {
89
+ /**
90
+ * When set to true, the stage is disabled.
91
+ * The response will contain generated queries, raw results, and a hardcoded text in the answer
92
+ * to check the result files.
93
+ */
94
+ disabled?: boolean;
88
95
  /** Enables or disables code interpreter mode. Default: 'false'. */
89
96
  enableCodeInterpreter?: boolean;
90
97
  /** Customizes AI agent behavior used by the stage. */
@@ -105,6 +112,8 @@ export interface ExecutedQueryInfo {
105
112
  purpose?: string;
106
113
  /** Whether this specific query executed successfully. */
107
114
  success: boolean;
115
+ /** Raw result file information. Undefined if upload failed or raw results are not enabled. */
116
+ rawResult?: AiFileUrl;
108
117
  }
109
118
  /**
110
119
  * Response from an AI query execution.
@@ -116,50 +125,26 @@ export interface AiQueryResponse {
116
125
  answer: string;
117
126
  /** Optional explanation for the AI-generated answer. */
118
127
  explanation?: string;
119
- /** All executed queries with their details. */
120
- executedQueries?: ExecutedQueryInfo[];
128
+ /** Executed queries with their details and raw result URLs. */
129
+ executedQueries: ExecutedQueryInfo[];
121
130
  /** Markdown format type of the executed query response. */
122
131
  queryMarkdownType?: string;
123
- /** URL to access raw results from the query execution. */
132
+ /**
133
+ * @deprecated Use {@link ExecutedQueryInfo.rawResult} in {@link executedQueries} instead.
134
+ * URL to access raw results from the first executed query. Populated for backward compatibility.
135
+ */
124
136
  rawResultsUrl?: string;
125
137
  /** Indicates whether the query execution was successful. */
126
138
  success: boolean;
127
- /** Indicates whether code interpreter was used to analyze the results. */
139
+ /** Indicates whether a code interpreter was used to analyze the results. */
128
140
  usedCodeInterpreter?: boolean;
129
141
  /**
130
142
  * When the AI needs clarification to generate a query, this field contains the clarification question.
131
- * Only populated when `generateQueryOptions.allowClarification` is enabled and the AI determines
143
+ * Only populated when `generateQueryOptions.allowClarification` is enabled, and the AI determines
132
144
  * it cannot generate a valid query without more information.
133
145
  */
134
146
  clarificationQuestion?: string;
135
147
  }
136
- /**
137
- * Details of an executed query, including the query text and result type.
138
- * @category AI
139
- */
140
- export interface ExecutedQuery {
141
- /** Text of the executed query. */
142
- query: string;
143
- /** The Markdown type of the result (sql, mongo, etc.). */
144
- markdownType: string;
145
- /** URL to access raw results from the query execution. */
146
- rawResultsUrl?: string;
147
- }
148
- /**
149
- * Response from executing an AI query across multiple integrations.
150
- * Includes answers and explanations for each executed query.
151
- * @category AI
152
- */
153
- export interface ExecuteAiQueryMultiResponse {
154
- /** AI-generated answer for the multi-integration query. */
155
- answer: string;
156
- /** Optional explanation for the AI-generated response. */
157
- explanation?: string;
158
- /** List of executed queries with details. */
159
- executedQueries: Array<ExecutedQuery>;
160
- /** Indicates whether the query execution was successful. */
161
- success: boolean;
162
- }
163
148
  /**
164
149
  * The AI API call response
165
150
  * @category AI
@@ -1,6 +1,6 @@
1
1
  import { IntegrationId } from './communication.public-types';
2
2
  /** List of all integration types supported by Squid. */
3
- export declare const INTEGRATION_TYPES: readonly ["active_directory", "ai_agents", "ai_chatbot", "algolia", "alloydb", "api", "auth0", "bedrock", "azure_cosmosdb", "azure_postgresql", "azure_sql", "bigquery", "built_in_db", "built_in_gcs", "built_in_queue", "built_in_s3", "cassandra", "clickhouse", "cloudsql", "cockroach", "cognito", "connected_knowledgebases", "confluence", "confluent", "datadog", "db2", "descope", "documentdb", "dynamodb", "elasticsearch", "firebase_auth", "firestore", "gcs", "github", "google_calendar", "google_docs", "google_drive", "graphql", "hubspot", "jira", "jira_jsm", "jwt_hmac", "jwt_rsa", "kafka", "keycloak", "linear", "mariadb", "monday", "mongo", "mssql", "databricks", "mysql", "newrelic", "okta", "onedrive", "oracledb", "pinecone", "postgres", "redis", "s3", "salesforce_crm", "sap_hana", "sentry", "servicenow", "snowflake", "spanner", "xata", "zendesk", "freshdesk", "mail", "slack", "mcp", "a2a", "legend", "teams", "openai_compatible"];
3
+ export declare const INTEGRATION_TYPES: readonly ["active_directory", "ai_agents", "ai_chatbot", "algolia", "alloydb", "api", "auth0", "bedrock", "azure_cosmosdb", "azure_postgresql", "azure_sql", "bigquery", "built_in_db", "built_in_gcs", "built_in_queue", "built_in_s3", "cassandra", "clickhouse", "cloudsql", "cockroach", "cognito", "connected_knowledgebases", "confluence", "confluent", "datadog", "db2", "descope", "documentdb", "dynamodb", "elasticsearch", "firebase_auth", "firestore", "gcs", "github", "google_calendar", "google_docs", "google_drive", "graphql", "hubspot", "jira", "jira_jsm", "jwt_hmac", "jwt_rsa", "kafka", "keycloak", "linear", "mariadb", "monday", "mongo", "mssql", "databricks", "mysql", "newrelic", "okta", "onedrive", "oracledb", "pinecone", "postgres", "redis", "s3", "salesforce_crm", "sap_hana", "sentry", "snowflake", "spanner", "xata", "zendesk", "servicenow_csm", "freshdesk", "mail", "slack", "mcp", "a2a", "legend", "teams", "openai_compatible"];
4
4
  /**
5
5
  * @category Database
6
6
  */
@@ -0,0 +1,30 @@
1
+ import { ApiOptions } from '../public-types/api-client.public-types';
2
+ import { ApiEndpointId, HttpMethod } from '../public-types/api.public-types';
3
+ import { IntegrationId } from '../public-types/communication.public-types';
4
+ /** The headers of an API call. */
5
+ export type ApiHeaders = Record<string, string | number | boolean>;
6
+ /** The context of an API call. */
7
+ export declare class ApiCallContext {
8
+ readonly integrationId: IntegrationId;
9
+ readonly endpointId: ApiEndpointId;
10
+ readonly url: string;
11
+ readonly method: HttpMethod;
12
+ readonly body: unknown;
13
+ readonly options: ApiOptions;
14
+ }
15
+ /**
16
+ * Represents a request to call an API through a specified integration and endpoint.
17
+ * Includes optional method override and additional request options.
18
+ */
19
+ export interface CallApiRequest<BodyType = any> {
20
+ /** The identifier of the integration through which the API is called. */
21
+ integrationId: IntegrationId;
22
+ /** Target API endpoint to invoke. */
23
+ endpointId: ApiEndpointId;
24
+ /** Optional request payload. */
25
+ body?: BodyType;
26
+ /** Optional HTTP method override. Default is POST. */
27
+ overrideMethod?: HttpMethod;
28
+ /** Additional request options. */
29
+ options: ApiOptions;
30
+ }
@@ -0,0 +1,148 @@
1
+ import { SquidDocIdObj, SquidDocument } from '../public-types/document.public-types';
2
+ import { Paths } from '../public-types/typescript.public-types';
3
+ /**
4
+ * The mutation type.
5
+ * @category Database
6
+ */
7
+ export declare const MUTATION_TYPES: readonly ["insert", "update", "delete"];
8
+ /**
9
+ * @category Database
10
+ */
11
+ export type MutationType = (typeof MUTATION_TYPES)[number];
12
+ interface BaseMutation {
13
+ type: MutationType;
14
+ squidDocIdObj: SquidDocIdObj;
15
+ }
16
+ /**
17
+ * A mutation on a document.
18
+ * @category Database
19
+ */
20
+ export type Mutation<T = any> = UpdateMutation<T> | InsertMutation<T> | DeleteMutation;
21
+ /**
22
+ * Represents a delete mutation on a document.
23
+ * @category Database
24
+ */
25
+ export interface DeleteMutation extends BaseMutation {
26
+ /** Specifies that the mutation is a deletion. */
27
+ type: 'delete';
28
+ }
29
+ /**
30
+ * Represents an update mutation on a document.
31
+ * @category Database
32
+ */
33
+ export interface UpdateMutation<T = any> extends BaseMutation {
34
+ /** Specifies that the mutation is an update. */
35
+ type: 'update';
36
+ /** The updated properties */
37
+ properties: {
38
+ [key in keyof T & string]?: Array<PropertyMutation<T[key]>>;
39
+ };
40
+ }
41
+ /**
42
+ * Represents an insert mutation on a document.
43
+ * @category Database
44
+ */
45
+ export interface InsertMutation<T = any> extends BaseMutation {
46
+ /** Specifies that the mutation is an insertion. */
47
+ type: 'insert';
48
+ /** The inserted document */
49
+ properties: T;
50
+ }
51
+ /**
52
+ * A representation of a single property update.
53
+ * @category Database
54
+ */
55
+ export type PropertyMutation<Value = any> = ApplyNumericFnPropertyMutation | ApplyStringFnPropertyMutation | ValueUpdatePropertyMutation<Value> | RemovePropertyMutation;
56
+ /**
57
+ * A value update property mutation.
58
+ * @category Database
59
+ */
60
+ export interface ValueUpdatePropertyMutation<Value = any> {
61
+ /** Specifies that the mutation updates a value. */
62
+ type: 'update';
63
+ /** New value to be set. */
64
+ value: Value;
65
+ }
66
+ /**
67
+ * Applying a numeric function to a property.
68
+ * @category Database
69
+ */
70
+ export interface ApplyNumericFnPropertyMutation {
71
+ /** Specifies that the mutation applies a numeric function. */
72
+ type: 'applyNumericFn';
73
+ /** Numeric function to apply. */
74
+ fn: 'increment';
75
+ /** Value to use in the numeric function. */
76
+ value: number;
77
+ }
78
+ /**
79
+ * A property update that removes a property from a document.
80
+ * @category Database
81
+ */
82
+ export interface RemovePropertyMutation {
83
+ /** Specifies that the mutation removes a property. */
84
+ type: 'removeProperty';
85
+ }
86
+ interface ApplyExtendString {
87
+ /** Specifies that the mutation applies a string function. */
88
+ type: 'applyStringFn';
89
+ /** String function to extend the existing string. */
90
+ fn: 'extendString';
91
+ /** String value to append. */
92
+ value: string;
93
+ }
94
+ interface ApplyTrimString {
95
+ /** Specifies that the mutation applies a string function. */
96
+ type: 'applyStringFn';
97
+ /** String function to trim the existing string. */
98
+ fn: 'trim';
99
+ }
100
+ /**
101
+ * A property mutation that modifies a string.
102
+ * @category Database
103
+ */
104
+ export type ApplyStringFnPropertyMutation = ApplyExtendString | ApplyTrimString;
105
+ /**
106
+ * The before and after documents of a document change.
107
+ * @category Database
108
+ */
109
+ export interface BeforeAndAfterDocs<T = SquidDocument> {
110
+ /** Document state before the mutation. */
111
+ before: T | undefined;
112
+ /** Document state after the mutation. */
113
+ after: T | undefined;
114
+ }
115
+ /**
116
+ * The mutation context that will be provided to the security function.
117
+ * @category Database
118
+ */
119
+ export declare class MutationContext<T = any> {
120
+ readonly mutation: Mutation<T>;
121
+ readonly beforeAndAfterDocs: BeforeAndAfterDocs<T>;
122
+ readonly serverTimeStamp: Date;
123
+ /**
124
+ * Returns the state of the document before the mutation was applied.
125
+ */
126
+ get before(): T | undefined;
127
+ /**
128
+ * Returns the state of the document after the mutation was applied.
129
+ */
130
+ get after(): T | undefined;
131
+ /**
132
+ * Returns the type of the mutation (insert, update, or delete).
133
+ */
134
+ getMutationType(): MutationType;
135
+ /** Returns true if the mutation affects the provided path. */
136
+ affectsPath(path: Paths<T>): boolean;
137
+ /**
138
+ * Find all affected paths starting from a root path.
139
+ *
140
+ * @example
141
+ * doc before - { a: { b: 1, c: 2 }, d: 3 }
142
+ * doc after - { a: { b: 1, c: 3 }, d: 4 }
143
+ * doc.affectedPaths('a') // ['a.c']
144
+ */
145
+ affectedPaths(startingRoot?: Paths<T> | string): Array<Paths<T>>;
146
+ private checkPath;
147
+ }
148
+ export {};
@@ -0,0 +1,72 @@
1
+ import { IntegrationId } from '../public-types/communication.public-types';
2
+ /**
3
+ * Represents the type of native query request, either relational, elastic or MongoDB.
4
+ * @category Database
5
+ */
6
+ export type NativeQueryRequestType = 'relational' | 'mongo' | 'elasticsearch' | 'pure';
7
+ interface BaseNativeQueryContext {
8
+ /** Type of the native query request. */
9
+ type: NativeQueryRequestType;
10
+ /** Identifier for the integration. */
11
+ integrationId: IntegrationId;
12
+ }
13
+ /**
14
+ * Context for executing a relational database query.
15
+ * @category Database
16
+ */
17
+ export interface RelationalNativeQueryContext extends BaseNativeQueryContext {
18
+ /** Specifies that the query is for a relational database. */
19
+ type: 'relational';
20
+ /** SQL query string to be executed. */
21
+ query: string;
22
+ /** Parameters to be used in the query. */
23
+ params: Record<string, any>;
24
+ }
25
+ /**
26
+ * Context for executing a MongoDB query.
27
+ * @category Database
28
+ */
29
+ export interface MongoNativeQueryContext extends BaseNativeQueryContext {
30
+ /** Specifies that the query is for a Mongo database. */
31
+ type: 'mongo';
32
+ /** Name of the MongoDB collection to query. */
33
+ collectionName: string;
34
+ /** Array of aggregation pipeline stages. */
35
+ aggregationPipeline: Array<any | undefined>;
36
+ }
37
+ /**
38
+ * Context for executing an Elasticsearch query.
39
+ * @category Database
40
+ */
41
+ export interface ElasticsearchNativeQueryContext {
42
+ /** Specifies that the query is for an Elasticsearch database. */
43
+ type: 'elasticsearch';
44
+ /** Elasticsearch index to query. */
45
+ index: string;
46
+ /** Elasticsearch query string. */
47
+ endpoint?: string;
48
+ /** HTTP method to use for the request. */
49
+ method?: 'GET' | 'POST';
50
+ /** Body of the request. */
51
+ body: Record<string, any>;
52
+ /** Headers to include in the request. */
53
+ integrationId: IntegrationId;
54
+ }
55
+ /**
56
+ * Context for executing a pure database query.
57
+ * @category Database
58
+ */
59
+ export interface PureNativeQueryContext extends BaseNativeQueryContext {
60
+ /** Specifies that the query is for a relational database. */
61
+ type: 'pure';
62
+ /** SQL query string to be executed. */
63
+ query: string;
64
+ /** Parameters to be used in the query. */
65
+ params: Record<string, any>;
66
+ }
67
+ /**
68
+ * Union type representing either a relational or MongoDB native query context.
69
+ * @category Database
70
+ */
71
+ export type NativeQueryContext = RelationalNativeQueryContext | MongoNativeQueryContext | ElasticsearchNativeQueryContext | PureNativeQueryContext;
72
+ export {};
@@ -0,0 +1,177 @@
1
+ import { AiQueryOptions } from '../public-types/ai-query.public-types';
2
+ import { IntegrationId } from '../public-types/communication.public-types';
3
+ import { CollectionName, DocumentData } from '../public-types/document.public-types';
4
+ import { FieldSort, Operator, Query, SimpleCondition } from '../public-types/query.public-types';
5
+ import { DeepRecord, FieldOf, PartialBy, Paths } from '../public-types/typescript.public-types';
6
+ /**
7
+ * The information provided to the secureAiQuery function about the AI query being executed.
8
+ * @category AI
9
+ */
10
+ export interface AiQueryContext {
11
+ /** The prompt provided for the AI query. */
12
+ prompt: string;
13
+ /** The options used for executing the AI query. */
14
+ options: AiQueryOptions;
15
+ }
16
+ /**
17
+ * Represents the Squid query context.
18
+ * Passed to methods that require query details, such as those annotated with the `@secureCollection` annotation.
19
+ * @category Database
20
+ */
21
+ export declare class QueryContext<T extends DocumentData = any> {
22
+ readonly query: Query<T>;
23
+ /**
24
+ * The ID of the integration being queried.
25
+ */
26
+ get integrationId(): IntegrationId;
27
+ /**
28
+ * The name of the collection being queried.
29
+ */
30
+ get collectionName(): CollectionName;
31
+ /**
32
+ * The query limit if one exists, -1 otherwise.
33
+ */
34
+ get limit(): number;
35
+ /**
36
+ * Verifies that the query's sort order aligns with the provided field sorts. The fields specified in the `sorts`
37
+ * parameter must appear in the exact order at the beginning of the query's sort sequence. The query can include
38
+ * additional fields in its sort order, but only after the specified sorts.
39
+ *
40
+ * @param sorts An array of field sorts.
41
+ * @returns Whether the query's sorts matches the provided field sorts.
42
+ */
43
+ sortedBy(sorts: Array<PartialBy<FieldSort<T>, 'asc'>>): boolean;
44
+ /**
45
+ * Verifies that the query's sort order exactly matches the provided field sorts. The fields specified in the
46
+ * `sorts` parameter must appear in the exact order in the query's sort sequence. No additional sorts may be present
47
+ * in the query.
48
+ *
49
+ * @param sorts An array of field sorts.
50
+ * @returns Whether the query's sorts exactly match the provided field sorts.
51
+ */
52
+ sortedByExact(sorts: Array<PartialBy<FieldSort<T>, 'asc'>>): boolean;
53
+ /**
54
+ * Verifies that the query is a subquery of the specified condition. A subquery is defined as a query that evaluates
55
+ * to a subset of the results that would be obtained by applying the parent condition. The subquery may also include
56
+ * additional conditions, as these only narrow the result set.
57
+ *
58
+ * @param fieldName The name of the field for the condition.
59
+ * @param operator The operator of the condition.
60
+ * @param value The value of the condition.
61
+ * @returns Whether the query is a subquery of the parent condition.
62
+ */
63
+ isSubqueryOf<F extends Paths<T>, O extends AllOperators>(fieldName: F, operator: O, value: GenericValue<T, F, O> | null): boolean;
64
+ /**
65
+ * Verifies that the query is a subquery of the specified condition. A subquery is defined as a query that evaluates
66
+ * to a subset of the results that would be obtained by applying the parent condition. The subquery may also include
67
+ * additional conditions, as these only narrow the result set.
68
+ *
69
+ * @param condition The condition to validate.
70
+ * @returns Whether the query is a subquery of the parent condition.
71
+ */
72
+ isSubqueryOfCondition(condition: GeneralCondition<T>): boolean;
73
+ /**
74
+ * Verifies that the query is a subquery of the specified conditions. A subquery is defined as a query that evaluates
75
+ * to a subset of the results that would be obtained by applying the parent conditions. The subquery may also include
76
+ * additional conditions, as these only narrow the result set.
77
+ *
78
+ * @param conditions The conditions to validate.
79
+ * @returns Whether the query includes subquery of the parent conditions.
80
+ */
81
+ isSubqueryOfConditions(conditions: GeneralConditions<T>): boolean;
82
+ /**
83
+ * Verifies that the query is a subquery of the specified query. A subquery is defined as a query that evaluates
84
+ * to a subset of the results that obtained for the parent query, including sorts and limits.
85
+ *
86
+ * @param query The query to validate.
87
+ * @returns Whether the query is a subquery of the parent query.
88
+ */
89
+ isSubqueryOfQuery(query: Query<T>): boolean;
90
+ /**
91
+ * Returns all conditions that apply to any of the specified field names. This method
92
+ * provides a convenient way to retrieve all conditions that involve a specific set of fields.
93
+ *
94
+ * @param fieldNames The field names for which to retrieve conditions.
95
+ * @returns An array of conditions that involve any of the specified field names.
96
+ */
97
+ getConditionsFor<K extends Paths<T>>(...fieldNames: Array<K>): ContextConditions<T, K>;
98
+ /**
99
+ * Returns all conditions that apply to the specified field name. This method provides
100
+ * a convenient way to retrieve all conditions that involve a specific field.
101
+ *
102
+ * @param fieldName The field name for which to retrieve conditions.
103
+ * @returns An array of conditions that involve the specified field name.
104
+ */
105
+ getConditionsForField<K extends Paths<T>>(fieldName: K): ContextConditions<T>;
106
+ /**
107
+ * Returns true if the given document can be a result of the query.
108
+ * The method does not account for limit and sort order.
109
+ */
110
+ documentMatchesQuery(doc: DocumentData): boolean;
111
+ }
112
+ /**
113
+ * A list of context conditions.
114
+ * @category Database
115
+ */
116
+ export type ContextConditions<Doc extends DocumentData = any, F extends Paths<Doc> = Paths<Doc>> = Array<ContextCondition<Doc, F>>;
117
+ /**
118
+ * A Context condition - a condition that replaces multiple '==' or '!=' conditions with 'in' and 'not in'.
119
+ * @category Database
120
+ */
121
+ export type ContextCondition<Doc extends DocumentData = any, F extends Paths<Doc> = Paths<Doc>> = InContextCondition<Doc, F> | NotInContextCondition<Doc, F> | OtherContextCondition<Doc, F>;
122
+ /**
123
+ * A condition using the 'in' operator to match values within a set.
124
+ * @category Database
125
+ */
126
+ export interface InContextCondition<Doc extends DocumentData = any, F extends Paths<Doc> = Paths<Doc>> extends SimpleCondition<Doc, F, 'in'> {
127
+ /** Specifies the 'in' operator to check if a value exists within an array. */
128
+ operator: 'in';
129
+ /** An array of values to match against the field. */
130
+ value: Array<FieldOf<DeepRecord<Doc>, Paths<Doc>> | any>;
131
+ }
132
+ /**
133
+ * A condition using the 'not in' operator to exclude values within a set.
134
+ * @category Database
135
+ */
136
+ export interface NotInContextCondition<Doc extends DocumentData = any, F extends Paths<Doc> = Paths<Doc>> extends SimpleCondition<Doc, F, 'not in'> {
137
+ /** Specifies the 'not in' operator to check if a value does not exist within an array. */
138
+ operator: 'not in';
139
+ /** An array of values to exclude from the field. */
140
+ value: Array<FieldOf<DeepRecord<Doc>, Paths<Doc>> | any>;
141
+ }
142
+ /**
143
+ * A condition using operators other than 'in' or 'not in' for field comparisons.
144
+ * @category Database
145
+ */
146
+ export interface OtherContextCondition<Doc extends DocumentData = any, F extends Paths<Doc> = Paths<Doc>> extends SimpleCondition<Doc, F, Exclude<ContextOperator, 'in' | 'not in'>> {
147
+ /** The operator to use for the comparison, excluding 'in' and 'not in'. */
148
+ operator: Exclude<ContextOperator, 'in' | 'not in'>;
149
+ /** The value to compare against the field. */
150
+ value: FieldOf<DeepRecord<Doc>, Paths<Doc>> | any;
151
+ }
152
+ /**
153
+ * A condition that includes all operators, including 'in' and 'not in', for general use.
154
+ * @category Database
155
+ */
156
+ export interface GeneralCondition<Doc extends DocumentData = any, F extends Paths<Doc> = Paths<Doc>> extends SimpleCondition<Doc, F, AllOperators> {
157
+ /** The operator to apply to the condition, including all possible operators. */
158
+ operator: AllOperators;
159
+ /** The value to use in the condition comparison. */
160
+ value: any;
161
+ }
162
+ /**
163
+ * A list of general conditions.
164
+ * @category Database
165
+ */
166
+ export type GeneralConditions<Doc extends DocumentData = any, F extends Paths<Doc> = Paths<Doc>> = Array<GeneralCondition<Doc, F>>;
167
+ /**
168
+ * @category Database
169
+ */
170
+ export type ContextOperator = Exclude<Operator, '==' | '!='> | 'in' | 'not in';
171
+ type AllOperators = Operator | 'in' | 'not in';
172
+ /**
173
+ * A generic value that can exist in a query.
174
+ * @category Database
175
+ */
176
+ export type GenericValue<Doc = any, F extends Paths<Doc> = Paths<Doc>, O extends AllOperators = any> = O extends 'in' ? Array<DeepRecord<Doc>[F]> | null : O extends 'not in' ? Array<DeepRecord<Doc>[F]> | null : DeepRecord<Doc>[F] | null;
177
+ export {};