@squidcloud/client 1.0.489 → 1.0.491
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/index.js +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/internal-common/src/public-types/ai-agent.public-types.d.ts +57 -3
- package/dist/internal-common/src/public-types/ai-common.public-types.d.ts +7 -7
- package/dist/internal-common/src/public-types/ai-knowledge-base.public-types.d.ts +248 -4
- package/dist/internal-common/src/public-types/connector.public-types.d.ts +1 -1
- package/dist/internal-common/src/public-types/extraction.public-types.d.ts +15 -1
- package/dist/internal-common/src/public-types/integration.public-types.d.ts +10 -2
- package/dist/internal-common/src/public-types/source-code.public-types.d.ts +12 -0
- package/dist/typescript-client/src/ai-knowledge-base/ai-knowledge-base-client-reference.d.ts +31 -3
- package/dist/typescript-client/src/integration-client.d.ts +30 -3
- package/dist/typescript-client/src/query-utils.d.ts +14 -2
- package/dist/typescript-client/src/version.d.ts +1 -1
- package/package.json +1 -1
|
@@ -479,8 +479,24 @@ export interface BaseAiChatOptions {
|
|
|
479
479
|
legacyKnowledgeBaseContext?: boolean;
|
|
480
480
|
/** Rewrite prompt for RAG - defaults to false */
|
|
481
481
|
enablePromptRewriteForRag?: boolean;
|
|
482
|
-
/**
|
|
482
|
+
/**
|
|
483
|
+
* Whether to include references from the source context in the response. Default to false.
|
|
484
|
+
* @deprecated Use citation instead. Kept for compatibility; renders the legacy Quote/Source format
|
|
485
|
+
* on the legacy upfront-RAG path only.
|
|
486
|
+
*/
|
|
483
487
|
includeReference?: boolean;
|
|
488
|
+
/**
|
|
489
|
+
* When true, the agent cites the sources behind its statements: source name, plus a download link
|
|
490
|
+
* when the agent's stored options set `allowSourceDownloads`. Takes precedence over the deprecated
|
|
491
|
+
* `includeReference`. Default to false.
|
|
492
|
+
*/
|
|
493
|
+
citation?: boolean;
|
|
494
|
+
/**
|
|
495
|
+
* Allows citation links to the original source files (presigned, 1h expiry). Honored ONLY from the
|
|
496
|
+
* agent's stored options — the per-request value is ignored, so callers of public agents can never
|
|
497
|
+
* enable downloads. Default to false (citations render source names only).
|
|
498
|
+
*/
|
|
499
|
+
allowSourceDownloads?: boolean;
|
|
484
500
|
/**
|
|
485
501
|
* The format of the response from the AI model. Defaults to 'text'. A `json_schema` format is
|
|
486
502
|
* refused for a model whose provider has no way to carry a schema — see
|
|
@@ -625,8 +641,21 @@ export interface BaseAiChatOptions {
|
|
|
625
641
|
* Files are attached to the conversation and can be read/analyzed by the AI.
|
|
626
642
|
*/
|
|
627
643
|
fileIds?: string[];
|
|
628
|
-
/**
|
|
644
|
+
/**
|
|
645
|
+
* Timeout in milliseconds for one model-call attempt of the chat (a single provider call,
|
|
646
|
+
* covering that call's tool loop). An attempt that produced nothing by this deadline is treated
|
|
647
|
+
* as a stalled provider connection and retried per `retriesOnStall`, each retry getting this
|
|
648
|
+
* full budget again — so the provider phase of a chat may take up to
|
|
649
|
+
* `(1 + retriesOnStall) * timeoutMs` in the worst case. Defaults to 240,000 (4 minutes).
|
|
650
|
+
*/
|
|
629
651
|
timeoutMs?: number;
|
|
652
|
+
/**
|
|
653
|
+
* How many times a stalled model-call attempt is reissued. A retry happens only when the
|
|
654
|
+
* attempt hit `timeoutMs` having produced nothing AND no AI function has executed in the turn,
|
|
655
|
+
* so a retry can never repeat a side effect; aborting the stalled attempt destroys its
|
|
656
|
+
* connection, so the retry cannot reuse it. `0` disables stall retries. Defaults to 1.
|
|
657
|
+
*/
|
|
658
|
+
retriesOnStall?: number;
|
|
630
659
|
/** Maximum number of tool-call iterations the model may perform in a single chat turn. Defaults to 50. */
|
|
631
660
|
maxToolIterations?: number;
|
|
632
661
|
}
|
|
@@ -673,6 +702,11 @@ export type { CanonicalReasoningEffort } from './ai-common.public-types';
|
|
|
673
702
|
* - unknown string the model cannot place on the axis -> dropped, so the model's own default applies,
|
|
674
703
|
* with a warning;
|
|
675
704
|
* - model without a reasoning knob -> ignored, with a warning.
|
|
705
|
+
*
|
|
706
|
+
* A model served through an `openai_compatible` integration is the exception: the value is sent to
|
|
707
|
+
* that endpoint exactly as written, with none of the resolution above, since the endpoint's model is
|
|
708
|
+
* the app's own choice and this registry cannot describe it. That is also how to reach a level the
|
|
709
|
+
* canonical set has no name for.
|
|
676
710
|
* @category AI
|
|
677
711
|
*/
|
|
678
712
|
export type AiReasoningEffort = CanonicalReasoningEffort | (string & {});
|
|
@@ -984,6 +1018,18 @@ export interface BaseUpsertContextStatus {
|
|
|
984
1018
|
/** The name of the context item, typically the title or filename. */
|
|
985
1019
|
name: string;
|
|
986
1020
|
}
|
|
1021
|
+
/**
|
|
1022
|
+
* An image whose description failed during ingestion: the context is stored without that image's chunk.
|
|
1023
|
+
* @category AI
|
|
1024
|
+
*/
|
|
1025
|
+
export interface ContextImageFailure {
|
|
1026
|
+
/** Zero-based index of the page carrying the image. */
|
|
1027
|
+
pageIndex: number;
|
|
1028
|
+
/** Extraction-assigned id of the image within the document. */
|
|
1029
|
+
imageId: string;
|
|
1030
|
+
/** Why describing the image failed. */
|
|
1031
|
+
errorMessage: string;
|
|
1032
|
+
}
|
|
987
1033
|
/**
|
|
988
1034
|
* Status of an individual context item after successfully upserting it.
|
|
989
1035
|
* @category AI
|
|
@@ -997,6 +1043,10 @@ export interface UpsertContextStatusSuccess extends BaseUpsertContextStatus {
|
|
|
997
1043
|
* surfaced so bulk operations can report which contexts fell outside the graph.
|
|
998
1044
|
*/
|
|
999
1045
|
graphIndexingSkipped?: boolean;
|
|
1046
|
+
/** First failed images (capped); absent when every image succeeded. `imageFailureCount` is the total. */
|
|
1047
|
+
imageFailures?: Array<ContextImageFailure>;
|
|
1048
|
+
/** Total number of failed images, which exceeds `imageFailures.length` when the list was capped. */
|
|
1049
|
+
imageFailureCount?: number;
|
|
1000
1050
|
}
|
|
1001
1051
|
/**
|
|
1002
1052
|
* Machine-readable code identifying a specific upsert failure reason.
|
|
@@ -1042,6 +1092,10 @@ export interface UpsertContextStatusError extends BaseUpsertContextStatus {
|
|
|
1042
1092
|
* rejection. `reference`/`folderPath` are present when the existing context carries them.
|
|
1043
1093
|
*/
|
|
1044
1094
|
duplicateOf?: UpsertContextDuplicateOf;
|
|
1095
|
+
/** First failed images (capped) when every image failed and the document had no text; otherwise absent. */
|
|
1096
|
+
imageFailures?: Array<ContextImageFailure>;
|
|
1097
|
+
/** Total number of failed images, which exceeds `imageFailures.length` when the list was capped. */
|
|
1098
|
+
imageFailureCount?: number;
|
|
1045
1099
|
}
|
|
1046
1100
|
/**
|
|
1047
1101
|
* Status of an individual context item after attempting to upsert it.
|
|
@@ -1234,7 +1288,7 @@ export interface UserAiChatOptions extends BaseAiChatOptions {
|
|
|
1234
1288
|
export interface UserAiAskResponse {
|
|
1235
1289
|
/** The response from the AI agent. */
|
|
1236
1290
|
response?: string;
|
|
1237
|
-
/**
|
|
1291
|
+
/** Prompt tokens used by the request, including any the prompt cache served. */
|
|
1238
1292
|
inputTokens?: number;
|
|
1239
1293
|
/** The number of output tokens generated by the AI agent. */
|
|
1240
1294
|
outputTokens?: number;
|
|
@@ -2,7 +2,7 @@ import { UserAiChatModelName } from './backend.public-types';
|
|
|
2
2
|
/**
|
|
3
3
|
* @category AI
|
|
4
4
|
*/
|
|
5
|
-
export declare const RERANK_PROVIDERS: readonly ["cohere", "none"];
|
|
5
|
+
export declare const RERANK_PROVIDERS: readonly ["cohere", "voyage", "none"];
|
|
6
6
|
/**
|
|
7
7
|
* @category AI
|
|
8
8
|
*/
|
|
@@ -41,12 +41,12 @@ export declare function isFileCapableProviderType(type: AiProviderType): type is
|
|
|
41
41
|
* Public OpenAI chat model names (active models only).
|
|
42
42
|
* @category AI
|
|
43
43
|
*/
|
|
44
|
-
export declare const OPENAI_CHAT_MODEL_NAMES: readonly ["gpt-5.
|
|
44
|
+
export declare const OPENAI_CHAT_MODEL_NAMES: readonly ["gpt-5.6-sol", "gpt-5.6-terra", "gpt-5.6-luna", "gpt-6-astra"];
|
|
45
45
|
/**
|
|
46
46
|
* Public Gemini chat model names (active models only).
|
|
47
47
|
* @category AI
|
|
48
48
|
*/
|
|
49
|
-
export declare const GEMINI_CHAT_MODEL_NAMES: readonly ["gemini-3.1-pro", "gemini-3.
|
|
49
|
+
export declare const GEMINI_CHAT_MODEL_NAMES: readonly ["gemini-3.1-pro", "gemini-3.8-flash", "gemini-3.5-flash-lite"];
|
|
50
50
|
/**
|
|
51
51
|
* Public Grok chat model names (active models only).
|
|
52
52
|
* @category AI
|
|
@@ -56,12 +56,12 @@ export declare const GROK_CHAT_MODEL_NAMES: readonly ["grok-4.6", "grok-4-1-fast
|
|
|
56
56
|
* Public Anthropic chat model names (active models only).
|
|
57
57
|
* @category AI
|
|
58
58
|
*/
|
|
59
|
-
export declare const ANTHROPIC_CHAT_MODEL_NAMES: readonly ["claude-fable-5", "claude-haiku-4-5-20251001", "claude-opus-5", "claude-sonnet-5"];
|
|
59
|
+
export declare const ANTHROPIC_CHAT_MODEL_NAMES: readonly ["claude-fable-5", "claude-fable-5-1", "claude-haiku-4-5-20251001", "claude-opus-5", "claude-sonnet-5"];
|
|
60
60
|
/**
|
|
61
61
|
* The supported AI model names.
|
|
62
62
|
* @category AI
|
|
63
63
|
*/
|
|
64
|
-
export declare const VENDOR_AI_CHAT_MODEL_NAMES: readonly ["gpt-5.
|
|
64
|
+
export declare const VENDOR_AI_CHAT_MODEL_NAMES: readonly ["gpt-5.6-sol", "gpt-5.6-terra", "gpt-5.6-luna", "gpt-6-astra", "claude-fable-5", "claude-fable-5-1", "claude-haiku-4-5-20251001", "claude-opus-5", "claude-sonnet-5", "gemini-3.1-pro", "gemini-3.8-flash", "gemini-3.5-flash-lite", "grok-4.6", "grok-4-1-fast-reasoning", "grok-4-1-fast-non-reasoning"];
|
|
65
65
|
/** Checks if the given model name is a global AI chat model name. */
|
|
66
66
|
export declare function isVendorAiChatModelName(modelName: unknown): modelName is VendorAiChatModelName;
|
|
67
67
|
/**
|
|
@@ -71,7 +71,7 @@ export declare const OPENAI_EMBEDDINGS_MODEL_NAMES: readonly ["text-embedding-3-
|
|
|
71
71
|
/**
|
|
72
72
|
* @category AI
|
|
73
73
|
*/
|
|
74
|
-
export declare const VOYAGE_EMBEDDING_MODEL_NAMES: readonly ["voyage-3-large"];
|
|
74
|
+
export declare const VOYAGE_EMBEDDING_MODEL_NAMES: readonly ["voyage-3-large", "voyage-4-large", "voyage-4"];
|
|
75
75
|
/**
|
|
76
76
|
* @category AI
|
|
77
77
|
*/
|
|
@@ -79,7 +79,7 @@ export declare const BEDROCK_EMBEDDING_MODEL_NAMES: readonly ["titan-embed-text-
|
|
|
79
79
|
/**
|
|
80
80
|
* @category AI
|
|
81
81
|
*/
|
|
82
|
-
export declare const AI_EMBEDDINGS_MODEL_NAMES: readonly ["text-embedding-3-small", "voyage-3-large", "titan-embed-text-v2"];
|
|
82
|
+
export declare const AI_EMBEDDINGS_MODEL_NAMES: readonly ["text-embedding-3-small", "voyage-3-large", "voyage-4-large", "voyage-4", "titan-embed-text-v2"];
|
|
83
83
|
/**
|
|
84
84
|
* Checks if the given model name is a valid AI embeddings model name.
|
|
85
85
|
* @category AI
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AgentContextRequest, AiChatModelSelection, UpsertContextStatusError } from './ai-agent.public-types';
|
|
1
|
+
import { AgentContextRequest, AiChatModelSelection, AiReasoningEffort, ContextImageFailure, UpsertContextStatusError } from './ai-agent.public-types';
|
|
2
2
|
import { AiEmbeddingsModelSelection, AiRerankProvider } from './ai-common.public-types';
|
|
3
3
|
import { AiContextId, AiKnowledgeBaseId, AppId } from './communication.public-types';
|
|
4
4
|
import { DocumentExtractionMethod } from './extraction.public-types';
|
|
@@ -44,8 +44,8 @@ export interface AiKnowledgeBase {
|
|
|
44
44
|
graphRag?: AiKnowledgeBaseGraphConfig;
|
|
45
45
|
/**
|
|
46
46
|
* Default RAG strategy for newly ingested contexts; a per-request `options.ragType` overrides it.
|
|
47
|
-
* Omitted ⇒ the server default (`'
|
|
48
|
-
* are not re-processed.
|
|
47
|
+
* Omitted ⇒ the server default (`'contextual'`). Changing it affects future ingests only — existing
|
|
48
|
+
* chunks are not re-processed.
|
|
49
49
|
*/
|
|
50
50
|
ragType?: AiRagType;
|
|
51
51
|
/**
|
|
@@ -54,9 +54,56 @@ export interface AiKnowledgeBase {
|
|
|
54
54
|
* store. Under the combined-ingest strategy this stays ≈0 — growth is a visible fallback-rate signal.
|
|
55
55
|
*/
|
|
56
56
|
contextualIngestUsage?: KnowledgeBaseGraphUsage;
|
|
57
|
+
/**
|
|
58
|
+
* Per-caller access control over retrieval. Omitted ⇒ `'none'`: stored scopes are ignored and every
|
|
59
|
+
* caller sees every chunk.
|
|
60
|
+
*/
|
|
61
|
+
accessControl?: AiKnowledgeBaseAccessControl;
|
|
57
62
|
/** The timestamp the knowledge base was last updated */
|
|
58
63
|
updatedAt: Date;
|
|
59
64
|
}
|
|
65
|
+
/**
|
|
66
|
+
* The access-control modes a knowledge base can be in. See {@link AiKnowledgeBaseAccessControl}.
|
|
67
|
+
* @category AI
|
|
68
|
+
*/
|
|
69
|
+
export declare const AI_KB_ACCESS_CONTROL_MODES: readonly ["none", "enforced"];
|
|
70
|
+
/**
|
|
71
|
+
* A knowledge base access-control mode. See {@link AI_KB_ACCESS_CONTROL_MODES}.
|
|
72
|
+
* @category AI
|
|
73
|
+
*/
|
|
74
|
+
export type AiKnowledgeBaseAccessControlMode = (typeof AI_KB_ACCESS_CONTROL_MODES)[number];
|
|
75
|
+
/**
|
|
76
|
+
* Restricts what a search returns to the content its caller is entitled to.
|
|
77
|
+
*
|
|
78
|
+
* Under `'enforced'`, every chunk carries the access scopes of the context it came from, the caller is
|
|
79
|
+
* resolved to the scopes they hold, and the two are intersected inside the vector query — so a caller
|
|
80
|
+
* never retrieves a chunk they hold no scope for. A chunk stamped as public is visible to everyone; a
|
|
81
|
+
* chunk with no scopes at all (ingested before access control was enabled) is visible to no one.
|
|
82
|
+
*
|
|
83
|
+
* Enforcement covers retrieval channels that can apply the scope predicate. The raw-text scan (`grep`)
|
|
84
|
+
* and knowledge-graph (`queryGraph`, `searchMode: 'graph'`) channels read stores that carry no scopes,
|
|
85
|
+
* so an enforced knowledge base refuses them rather than answering unfiltered.
|
|
86
|
+
*
|
|
87
|
+
* Mutable, but enabling it on a populated knowledge base hides everything already ingested until those
|
|
88
|
+
* contexts are re-ingested with scopes.
|
|
89
|
+
*
|
|
90
|
+
* @category AI
|
|
91
|
+
*/
|
|
92
|
+
export interface AiKnowledgeBaseAccessControl {
|
|
93
|
+
/** `'none'` (the default) ignores stored scopes entirely; `'enforced'` intersects them per caller. */
|
|
94
|
+
mode: AiKnowledgeBaseAccessControlMode;
|
|
95
|
+
/**
|
|
96
|
+
* The backend function that resolves a caller into the access scopes they hold, as
|
|
97
|
+
* `'ServiceName:functionName'`. It runs once per search, receives a `ResolveKbScopesContext` and
|
|
98
|
+
* returns the scopes as an array of strings. Required under `'enforced'`.
|
|
99
|
+
*
|
|
100
|
+
* An `'enforced'` knowledge base whose function is not deployed fails every search rather than
|
|
101
|
+
* falling back to an unfiltered one.
|
|
102
|
+
*
|
|
103
|
+
* @pattern ^[^:]+:[^:]+$
|
|
104
|
+
*/
|
|
105
|
+
scopeResolver?: string;
|
|
106
|
+
}
|
|
60
107
|
/**
|
|
61
108
|
* Represents a field in an AI knowledge base metadata.
|
|
62
109
|
*/
|
|
@@ -225,6 +272,13 @@ export interface AiKnowledgeBaseGraphPathFacetConfig {
|
|
|
225
272
|
/** Path segment separator. Defaults to `'/'`. */
|
|
226
273
|
separator?: string;
|
|
227
274
|
}
|
|
275
|
+
/**
|
|
276
|
+
* The canonical declaration of {@link FOLDER_PATH_METADATA_FIELD_NAME}, shared by every writer that
|
|
277
|
+
* declares it on a knowledge base. `llmExtraction` is off, so a missing folder path stays absent
|
|
278
|
+
* instead of being guessed from document content.
|
|
279
|
+
* @category AI
|
|
280
|
+
*/
|
|
281
|
+
export declare const FOLDER_PATH_METADATA_FIELD: AiKnowledgeBaseMetadataField;
|
|
228
282
|
/** A single entity surfaced in a graph search's {@link AiKnowledgeBaseGraphContext}. @category AI */
|
|
229
283
|
export interface AiKnowledgeBaseGraphContextEntity {
|
|
230
284
|
/** Canonical display name of the entity. */
|
|
@@ -271,6 +325,11 @@ export interface AiKnowledgeBaseChatOptions {
|
|
|
271
325
|
includeMetadata?: boolean;
|
|
272
326
|
/** Which provider's reranker to use for reranking the context. Defaults to 'cohere'. */
|
|
273
327
|
rerankProvider?: AiRerankProvider;
|
|
328
|
+
/**
|
|
329
|
+
* Minimum reranker relevance score a chunk must reach to stay once at least 10 chunks are already kept.
|
|
330
|
+
* Defaults to 0.2. Lets an eval tune the drop threshold per reranker, whose score ranges differ.
|
|
331
|
+
*/
|
|
332
|
+
rerankScoreThreshold?: number;
|
|
274
333
|
/** The maximum number of results to return. Defaults to 30 */
|
|
275
334
|
limit?: number;
|
|
276
335
|
/** How many chunks to look over. Defaults to 100 */
|
|
@@ -452,6 +511,18 @@ export interface BaseAiKnowledgeBaseContextRequest {
|
|
|
452
511
|
type: AiKnowledgeBaseContextType;
|
|
453
512
|
/** Optional metadata associated with the context item. */
|
|
454
513
|
metadata?: AiContextMetadata;
|
|
514
|
+
/**
|
|
515
|
+
* Access scopes granting read access to this context, stamped onto every chunk it produces. Only
|
|
516
|
+
* meaningful on a knowledge base with `accessControl.mode: 'enforced'`, where a caller retrieves the
|
|
517
|
+
* context only if they hold at least one of these scopes.
|
|
518
|
+
*
|
|
519
|
+
* Supplied here rather than through a follow-up call so a restricted context is never briefly
|
|
520
|
+
* readable by everyone between being indexed and being scoped. Omitted on a re-ingest keeps whatever
|
|
521
|
+
* scopes the context already had; an empty array makes it visible to every caller.
|
|
522
|
+
*
|
|
523
|
+
* Scopes are opaque strings the resolver and the ingest side agree on. The `__` prefix is reserved.
|
|
524
|
+
*/
|
|
525
|
+
scopes?: Array<string>;
|
|
455
526
|
}
|
|
456
527
|
/**
|
|
457
528
|
* Base options for upserting text content into the AI agent's context.
|
|
@@ -571,6 +642,34 @@ export interface AiKnowledgeBaseFileContextRequest extends BaseAiKnowledgeBaseCo
|
|
|
571
642
|
* @category AI
|
|
572
643
|
*/
|
|
573
644
|
export declare const BULK_INGESTION_MAX_MULTIPART_FILE_BYTES: number;
|
|
645
|
+
/**
|
|
646
|
+
* Largest single file the platform's upload endpoints accept, per file: the multer limit core applies
|
|
647
|
+
* to every file-upload route (`COMMON_FILE_UPLOAD_OPTIONS`). By definition it also caps a bulk-ingestion
|
|
648
|
+
* source object, whichever way its bytes arrive: core re-enforces it on every staged object — rejecting
|
|
649
|
+
* the whole staging batch with the oversized object — so a staging caller pre-parks larger files.
|
|
650
|
+
* @category AI
|
|
651
|
+
*/
|
|
652
|
+
export declare const MAX_UPLOAD_FILE_BYTES: number;
|
|
653
|
+
/**
|
|
654
|
+
* Embedding models the bulk-ingestion (batch embeddings) lane admits. A model needs a provider batch
|
|
655
|
+
* adapter to be listed here, but an adapter alone is not enough: a route is listed only once every core
|
|
656
|
+
* pod can take it, because a pod on an older image routes a job it cannot place to the wrong provider.
|
|
657
|
+
* This list IS that switch — adding a model here opens its route everywhere at once.
|
|
658
|
+
*
|
|
659
|
+
* Public and shared deliberately: `bulkUpsertContexts` answers a batch-transport job on any other model
|
|
660
|
+
* with a 501, but `createBulkUploadUrls` resolves no base at all, so a caller that stages before it upserts
|
|
661
|
+
* learns of the refusal only once the bytes are already uploaded. A caller that knows this bound can check
|
|
662
|
+
* the base up front and refuse the request instead — which only works while this list says what the
|
|
663
|
+
* deployment will really take. A base on an unlisted model keeps ingesting on the sync transport.
|
|
664
|
+
* @category AI
|
|
665
|
+
*/
|
|
666
|
+
export declare const BULK_INGESTION_EMBEDDING_MODELS: readonly ["text-embedding-3-small", "voyage-3-large", "voyage-4-large", "voyage-4"];
|
|
667
|
+
/**
|
|
668
|
+
* Whether `model` is one of {@link BULK_INGESTION_EMBEDDING_MODELS}. Takes any embedding model selection
|
|
669
|
+
* (an integration-backed model spec is an object and is never supported).
|
|
670
|
+
* @category AI
|
|
671
|
+
*/
|
|
672
|
+
export declare function isBulkIngestionEmbeddingModel(model: unknown): model is (typeof BULK_INGESTION_EMBEDDING_MODELS)[number];
|
|
574
673
|
/**
|
|
575
674
|
* @category AI
|
|
576
675
|
*/
|
|
@@ -600,6 +699,11 @@ export interface AiKnowledgeBaseSearchOptions {
|
|
|
600
699
|
limit?: number;
|
|
601
700
|
/** Which provider's reranker to use for reranking the context. Defaults to 'cohere'. */
|
|
602
701
|
rerankProvider?: AiRerankProvider;
|
|
702
|
+
/**
|
|
703
|
+
* Minimum reranker relevance score a chunk must reach to stay once at least 10 chunks are already kept.
|
|
704
|
+
* Defaults to 0.2. Lets an eval tune the drop threshold per reranker, whose score ranges differ.
|
|
705
|
+
*/
|
|
706
|
+
rerankScoreThreshold?: number;
|
|
603
707
|
/** How many chunks to look over. Defaults to 100 */
|
|
604
708
|
chunkLimit?: number;
|
|
605
709
|
/** Which chat model to use when asking the question */
|
|
@@ -668,6 +772,25 @@ export interface UpsertKnowledgeBaseContextResponse {
|
|
|
668
772
|
* singular counterpart of {@link UpsertKnowledgeBaseContextsResponse.graphIndexingSkippedContextIds}.
|
|
669
773
|
*/
|
|
670
774
|
graphIndexingSkipped?: boolean;
|
|
775
|
+
/**
|
|
776
|
+
* First images (capped) the context lacks a description for because describing them failed; the context
|
|
777
|
+
* is otherwise fully ingested. Absent when every image succeeded. `imageFailureCount` is the total.
|
|
778
|
+
*/
|
|
779
|
+
imageFailures?: Array<ContextImageFailure>;
|
|
780
|
+
/** Total number of failed images, which exceeds `imageFailures.length` when the list was capped. */
|
|
781
|
+
imageFailureCount?: number;
|
|
782
|
+
}
|
|
783
|
+
/**
|
|
784
|
+
* The failed images of one context in a multi-context upsert.
|
|
785
|
+
* @category AI
|
|
786
|
+
*/
|
|
787
|
+
export interface UpsertContextImageFailures {
|
|
788
|
+
/** The context the images belong to. */
|
|
789
|
+
contextId: AiContextId;
|
|
790
|
+
/** First failed images (capped); `imageFailureCount` is the total. */
|
|
791
|
+
imageFailures: Array<ContextImageFailure>;
|
|
792
|
+
/** Total number of failed images, which exceeds `imageFailures.length` when the list was capped. */
|
|
793
|
+
imageFailureCount: number;
|
|
671
794
|
}
|
|
672
795
|
/**
|
|
673
796
|
* Response structure for upserting contexts for an AiKnowledgeBase
|
|
@@ -692,6 +815,12 @@ export interface UpsertKnowledgeBaseContextsResponse {
|
|
|
692
815
|
* caller can report the graph-coverage gap. Absent/empty when nothing was skipped or graph is disabled.
|
|
693
816
|
*/
|
|
694
817
|
graphIndexingSkippedContextIds?: Array<AiContextId>;
|
|
818
|
+
/**
|
|
819
|
+
* Per stored context, the images that lack a description because describing them failed; each such
|
|
820
|
+
* context is otherwise fully ingested. A context that failed outright lists its images on its entry in
|
|
821
|
+
* `failures` instead. Absent when every image succeeded.
|
|
822
|
+
*/
|
|
823
|
+
imageFailures?: Array<UpsertContextImageFailures>;
|
|
695
824
|
}
|
|
696
825
|
/**
|
|
697
826
|
* Request structure for searching an AiKnowledgeBase
|
|
@@ -848,6 +977,11 @@ export interface BaseAiKnowledgeBaseSearchContextsRequest {
|
|
|
848
977
|
rerank?: boolean;
|
|
849
978
|
/** Which chat model to use when doing reranking */
|
|
850
979
|
chatModel?: AiChatModelSelection;
|
|
980
|
+
/**
|
|
981
|
+
* Reasoning effort of the reranking model. A score needs little thought, so `'low'` is the usual
|
|
982
|
+
* choice; when unset the model applies its own default.
|
|
983
|
+
*/
|
|
984
|
+
rerankReasoningEffort?: AiReasoningEffort;
|
|
851
985
|
}
|
|
852
986
|
/**
|
|
853
987
|
* Request structure for searching AI contexts in the AiKnowledgeBase with prompt.
|
|
@@ -1099,6 +1233,14 @@ export interface GetKnowledgeBaseGraphStatusResponse {
|
|
|
1099
1233
|
* is pending. Recomputed per poll — it moves forward while ingest activity continues.
|
|
1100
1234
|
*/
|
|
1101
1235
|
nextAutoBuildAt?: number;
|
|
1236
|
+
/**
|
|
1237
|
+
* True when graph-scoped search (`graphFilter.underConcept`) runs on the index-native denormalized
|
|
1238
|
+
* `conceptIds` pre-filter: the backend's search indexes serve the field AND the chunk copies are in
|
|
1239
|
+
* sync with the doc nodes. False while either half is not ready (index still building, or a rebuild
|
|
1240
|
+
* is in flight — a rebuild drops the sync gate for its duration); scoped search then uses the
|
|
1241
|
+
* capped contextId-closure fallback. Absent when GraphRAG is disabled.
|
|
1242
|
+
*/
|
|
1243
|
+
conceptScopeReady?: boolean;
|
|
1102
1244
|
}
|
|
1103
1245
|
/** The most recent graph backfill/rebuild job of a knowledge base. @category AI */
|
|
1104
1246
|
export interface KnowledgeBaseGraphBuildJob {
|
|
@@ -1291,6 +1433,8 @@ export interface KnowledgeBaseGraphTopic {
|
|
|
1291
1433
|
parentId?: string;
|
|
1292
1434
|
/** Documents under the topic, when tracked. */
|
|
1293
1435
|
docCount?: number;
|
|
1436
|
+
/** Members of the topic: entities at level 0, child topics at higher levels. */
|
|
1437
|
+
memberCount?: number;
|
|
1294
1438
|
}
|
|
1295
1439
|
/**
|
|
1296
1440
|
* An aggregated relationship edge between two leaf topics: how many entity relationships cross
|
|
@@ -1359,6 +1503,8 @@ export interface KnowledgeBaseGraphQueryMatch {
|
|
|
1359
1503
|
description?: string;
|
|
1360
1504
|
/** Documents under the node, where tracked (topics and facet nodes). */
|
|
1361
1505
|
docCount?: number;
|
|
1506
|
+
/** Topics: members of the node (entities at level 0, child topics at higher levels). */
|
|
1507
|
+
memberCount?: number;
|
|
1362
1508
|
}
|
|
1363
1509
|
/** A node in a `subtree` response: the resolved node with its children, recursively. @category AI */
|
|
1364
1510
|
export interface KnowledgeBaseGraphQuerySubtreeNode {
|
|
@@ -1463,6 +1609,16 @@ export interface QueryKnowledgeBaseGraphResponse {
|
|
|
1463
1609
|
* @category AI
|
|
1464
1610
|
*/
|
|
1465
1611
|
export interface BulkIngestionContext {
|
|
1612
|
+
/**
|
|
1613
|
+
* The id of the context. Optional: when omitted, the server generates one and rejects the upload if
|
|
1614
|
+
* another context in the knowledge base already holds identical content (content-level dedup). Provide
|
|
1615
|
+
* an explicit id to address a specific context — that overwrites it unconditionally and allows duplicate
|
|
1616
|
+
* content across different ids, exactly as the synchronous `upsertContexts` treats a supplied id. Must
|
|
1617
|
+
* be unique within one request (each staged context becomes one per-file row keyed by this id), at most
|
|
1618
|
+
* 512 UTF-8 bytes of letters, digits, `_`, `.`, `:`, `@` or `-` only, and the overwrite lands
|
|
1619
|
+
* asynchronously when the job finalizes the file.
|
|
1620
|
+
*/
|
|
1621
|
+
contextId?: AiContextId;
|
|
1466
1622
|
/** `'text'` (the default) stages a text context; `'file'` consumes the next uploaded file positionally. */
|
|
1467
1623
|
type?: 'text' | 'file';
|
|
1468
1624
|
/** Title for a text context (required); optional display title for a file context. */
|
|
@@ -1489,6 +1645,14 @@ export interface BulkIngestionContext {
|
|
|
1489
1645
|
* knowledge base's `metadataFields` schema when one is declared.
|
|
1490
1646
|
*/
|
|
1491
1647
|
metadata?: Record<string, unknown>;
|
|
1648
|
+
/**
|
|
1649
|
+
* Access scopes granting read access to this context, stamped onto every chunk it produces when the
|
|
1650
|
+
* job finalizes; mirrors {@link BaseAiKnowledgeBaseContextRequest.scopes}, with the same semantics:
|
|
1651
|
+
* omitted keeps whatever scopes the context already had, an empty array makes it visible to every
|
|
1652
|
+
* caller. On a knowledge base with `accessControl.mode: 'enforced'`, a context whose scopes resolve
|
|
1653
|
+
* to nothing at finalize is stamped unreadable rather than public.
|
|
1654
|
+
*/
|
|
1655
|
+
scopes?: Array<string>;
|
|
1492
1656
|
}
|
|
1493
1657
|
/**
|
|
1494
1658
|
* Request structure for staging contexts through bulk ingestion: a durable, asynchronous lane that
|
|
@@ -1575,6 +1739,41 @@ export interface BulkIngestionFileStatus {
|
|
|
1575
1739
|
* Additive; absent for ordinary failures.
|
|
1576
1740
|
*/
|
|
1577
1741
|
errorCode?: 'DUPLICATE_CONTENT';
|
|
1742
|
+
/**
|
|
1743
|
+
* First images (capped) the context lacks a description for because describing them failed; a
|
|
1744
|
+
* `completed` file is otherwise fully ingested. Absent when every image succeeded.
|
|
1745
|
+
*/
|
|
1746
|
+
imageFailures?: Array<ContextImageFailure>;
|
|
1747
|
+
/** Total number of failed images, which exceeds `imageFailures.length` when the list was capped. */
|
|
1748
|
+
imageFailureCount?: number;
|
|
1749
|
+
}
|
|
1750
|
+
/**
|
|
1751
|
+
* One provider batch created for a bulk-ingestion job, so a caller can tell a job waiting on a
|
|
1752
|
+
* submitted provider batch (healthy — the designed cost/latency tradeoff of the batch lane, with
|
|
1753
|
+
* turnaround up to 24 hours) from a job that is actually stuck, and see since when.
|
|
1754
|
+
* @category AI
|
|
1755
|
+
*/
|
|
1756
|
+
export interface BulkIngestionProviderBatchStatus {
|
|
1757
|
+
/** The provider running the batch. Mirrors the core batch row's union, like {@link state}. */
|
|
1758
|
+
provider: 'openai' | 'anthropic' | 'mistral' | 'voyage';
|
|
1759
|
+
/** The provider API the batch rides. Mirrors the core batch row's union, like {@link state}. */
|
|
1760
|
+
endpoint: '/v1/embeddings' | '/v1/messages/batches' | '/v1/chat/completions' | '/v1/ocr';
|
|
1761
|
+
/**
|
|
1762
|
+
* The batch's lifecycle state: `intent` (created, not yet submitted), `submitted` (waiting on the
|
|
1763
|
+
* provider), `ended` (provider finished, results not yet absorbed), or terminal
|
|
1764
|
+
* (`reconciled`/`cancelled`/`failed`).
|
|
1765
|
+
*/
|
|
1766
|
+
state: 'intent' | 'submitted' | 'ended' | 'reconciled' | 'cancelled' | 'failed';
|
|
1767
|
+
/** The provider's own batch id; absent until the batch is submitted. */
|
|
1768
|
+
providerBatchId?: string;
|
|
1769
|
+
/** When the batch was created — the "since when has this been waiting" clock for an in-flight batch. */
|
|
1770
|
+
createdAt: Date;
|
|
1771
|
+
/**
|
|
1772
|
+
* When the batch row was last written. NOT a state-transition time: the poller refreshes it on every
|
|
1773
|
+
* poll of an in-flight batch, so on a healthy job it is always recent — it freezing means polling
|
|
1774
|
+
* stopped, not that the batch is waiting. Read wait duration off {@link createdAt}.
|
|
1775
|
+
*/
|
|
1776
|
+
updatedAt: Date;
|
|
1578
1777
|
}
|
|
1579
1778
|
/**
|
|
1580
1779
|
* Response describing a bulk-ingestion job's current state and progress counts.
|
|
@@ -1583,10 +1782,55 @@ export interface BulkIngestionFileStatus {
|
|
|
1583
1782
|
export interface BulkIngestionJobStatusResponse {
|
|
1584
1783
|
/** The job's lifecycle state (e.g. running, completed, failed, cancelled). */
|
|
1585
1784
|
state: string;
|
|
1785
|
+
/**
|
|
1786
|
+
* The job's execution transport: `'batch'` rides provider batches (half price, tails up to 24
|
|
1787
|
+
* hours), `'sync'` executes inline within minutes. Decided at staging from the job's size, with one
|
|
1788
|
+
* transition — a defer-eligible job whose OCR routing lands on the provider batch is promoted
|
|
1789
|
+
* `'sync'` to `'batch'` — and held from then on. Descriptive metadata ONLY: it says how the job
|
|
1790
|
+
* runs, never whether a batch is draining right now, so it must not gate any wait/timeout policy;
|
|
1791
|
+
* that is {@link activeProviderBatchCount}. Optional on the wire: consumers must tolerate its
|
|
1792
|
+
* absence.
|
|
1793
|
+
*/
|
|
1794
|
+
transport?: 'batch' | 'sync';
|
|
1795
|
+
/**
|
|
1796
|
+
* The lanes a `'batch'` job ROUTES inline — at the synchronous price, within minutes — rather than onto a
|
|
1797
|
+
* provider batch: `embeddings`, whose batches are too small for the discount to beat the queue tail.
|
|
1798
|
+
* Absent when every lane batches, and on a `'sync'` job (every lane of which runs inline). The job's
|
|
1799
|
+
* routing policy, not a record of what ran: a lane handed to the inline transport by a cancelled
|
|
1800
|
+
* provider-batch tail executes inline without being named here. Descriptive metadata, like {@link transport}.
|
|
1801
|
+
*/
|
|
1802
|
+
inlineLanes?: Array<'embeddings' | 'imageDescription' | 'spreadsheetSummary' | 'metadataExtraction'>;
|
|
1586
1803
|
/** Progress counters aggregated from the job's files and logical requests. */
|
|
1587
1804
|
counts: BulkIngestionJobStatusCounts;
|
|
1588
|
-
/** Provider batch ids
|
|
1805
|
+
/** Provider batch ids created for this job, across every batch state — including already-drained ones. */
|
|
1589
1806
|
providerBatchIds: Array<string>;
|
|
1807
|
+
/**
|
|
1808
|
+
* Number of provider batches still in flight (created, submitted, or awaiting result reconciliation).
|
|
1809
|
+
* THE deferral signal: work is draining through a provider batch right now exactly when this is
|
|
1810
|
+
* positive — unlike {@link providerBatchIds}, which keeps terminal batches, and unlike
|
|
1811
|
+
* {@link transport}, which is descriptive metadata. Optional on the wire: consumers must tolerate
|
|
1812
|
+
* its absence.
|
|
1813
|
+
*/
|
|
1814
|
+
activeProviderBatchCount?: number;
|
|
1815
|
+
/**
|
|
1816
|
+
* Per-batch detail for every provider batch of the job, so a caller can tell a healthy wait on a
|
|
1817
|
+
* submitted provider batch from a stall — and see since when. A SUPERSET of
|
|
1818
|
+
* {@link providerBatchIds}, not index-aligned with it: an `intent` batch appears here with no
|
|
1819
|
+
* `providerBatchId` while that list omits it. Optional on the wire: consumers must tolerate its
|
|
1820
|
+
* absence.
|
|
1821
|
+
*/
|
|
1822
|
+
providerBatches?: Array<BulkIngestionProviderBatchStatus>;
|
|
1823
|
+
/**
|
|
1824
|
+
* Coarse answer to "what is this job doing right now": `awaiting-provider-batch` while the
|
|
1825
|
+
* PROVIDER is working — an `intent` or `submitted` batch (deferred OCR included; it wins whatever stage the
|
|
1826
|
+
* files carry) or batch-route work still queued for submission — `extracting` while files still
|
|
1827
|
+
* await or undergo extraction with no submitted batch, and `indexing` otherwise (inline/flex
|
|
1828
|
+
* requests executing, `ended` batches' results being absorbed, contexts being written — our own
|
|
1829
|
+
* work, however long it takes). Present only while the job {@link state} is `running`; the other
|
|
1830
|
+
* non-terminal states (`finalizing`, `cancelling`) already name what the job is doing. Optional on
|
|
1831
|
+
* the wire: consumers must tolerate its absence.
|
|
1832
|
+
*/
|
|
1833
|
+
phase?: 'extracting' | 'awaiting-provider-batch' | 'indexing';
|
|
1590
1834
|
/** Per-file status, one entry per staged context (bounded by the job's file cap). */
|
|
1591
1835
|
files: Array<BulkIngestionFileStatus>;
|
|
1592
1836
|
}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* 'CONNECTOR_PACKAGES_TO_EXCLUDE_FROM_AUTO_SYNC' in ConnectorsService (console-backend).
|
|
5
5
|
* @category Platform
|
|
6
6
|
*/
|
|
7
|
-
export declare const CONNECTOR_IDS: readonly ["bitbucket", "confluence", "cotomi", "essentials", "freshdesk", "github", "google_calendar", "google_drive", "hubspot", "sharepoint", "jira", "jira_jsm", "linear", "mail", "onedrive", "outlook", "salesforce", "servicenow_csm", "slack", "teams", "ticketmind_companion", "zendesk"];
|
|
7
|
+
export declare const CONNECTOR_IDS: readonly ["bitbucket", "confluence", "cotomi", "essentials", "freshdesk", "generic_site_ingester", "github", "google_calendar", "google_drive", "hubspot", "sharepoint", "jira", "jira_jsm", "linear", "mail", "onedrive", "outlook", "salesforce", "servicenow_csm", "slack", "teams", "ticketmind_companion", "zendesk"];
|
|
8
8
|
/**
|
|
9
9
|
* Unique connector package name.
|
|
10
10
|
* @category Platform
|
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* The extraction method to use for processing documents.
|
|
3
|
+
*
|
|
4
|
+
* `legacy` extracts text and embedded images in-process without any external model call.
|
|
5
|
+
* `legacy_with_llm` extracts the same text, and additionally renders each page to a screenshot that is
|
|
6
|
+
* described by a vision model — covering content the text layer cannot carry (figures, layout, scanned
|
|
7
|
+
* regions) at the cost of one model call per page. Both run with no external OCR provider.
|
|
3
8
|
*/
|
|
4
|
-
export type DocumentExtractionMethod = 'mistral_ocr' | 'legacy' | 'amazon_textract' | 'azure_document_intelligence';
|
|
9
|
+
export type DocumentExtractionMethod = 'mistral_ocr' | 'legacy' | 'legacy_with_llm' | 'amazon_textract' | 'azure_document_intelligence';
|
|
5
10
|
/**
|
|
6
11
|
* Options for customizing how data is extracted from a document.
|
|
7
12
|
*/
|
|
@@ -82,6 +87,10 @@ export interface ExtractDataFromDocumentFileRequest {
|
|
|
82
87
|
*/
|
|
83
88
|
options?: ExtractDataFromDocumentOptions;
|
|
84
89
|
}
|
|
90
|
+
/**
|
|
91
|
+
* What an extracted image depicts: an image embedded in the page, or a full-page screenshot.
|
|
92
|
+
*/
|
|
93
|
+
export type ExtractedImageKind = 'embedded' | 'fullPage';
|
|
85
94
|
/**
|
|
86
95
|
* Representation of an image extracted from a document, for use in generated content.
|
|
87
96
|
*/
|
|
@@ -98,6 +107,11 @@ export interface ExtractDataFromDocumentImage {
|
|
|
98
107
|
* The base64-encoded image data, prefixed with its MIME type (e.g., data:image/png;base64,...).
|
|
99
108
|
*/
|
|
100
109
|
imageBase64Url: string;
|
|
110
|
+
/**
|
|
111
|
+
* What the image depicts. Absent means `embedded`. Selects the description prompt — a page
|
|
112
|
+
* screenshot is described as a complement to the page's stored text, an embedded image in full.
|
|
113
|
+
*/
|
|
114
|
+
kind?: ExtractedImageKind;
|
|
101
115
|
}
|
|
102
116
|
/**
|
|
103
117
|
* A single extracted page from the document, including structured content and images.
|
|
@@ -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_blob", "azure_cosmosdb", "azure_postgresql", "azure_sql", "bigquery", "bitbucket", "built_in_azure_blob", "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", "azure-entra-external-id", "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", "outlook", "oracledb", "pinecone", "postgres", "redis", "s3", "salesforce", "sap_hana", "sentry", "snowflake", "spanner", "xata", "zendesk", "servicenow_csm", "freshdesk", "mail", "slack", "mcp", "a2a", "legend", "teams", "openai_compatible", "openai_compatible_embedding", "sharepoint", "vertex"];
|
|
3
|
+
export declare const INTEGRATION_TYPES: readonly ["active_directory", "ai_agents", "ai_chatbot", "algolia", "alloydb", "api", "auth0", "bedrock", "azure_blob", "azure_cosmosdb", "azure_postgresql", "azure_sql", "bigquery", "bitbucket", "built_in_azure_blob", "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", "azure-entra-external-id", "azure-entra-id", "dynamodb", "elasticsearch", "firebase_auth", "firestore", "gcs", "generic_site_ingester", "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", "outlook", "oracledb", "pinecone", "postgres", "redis", "s3", "salesforce", "sap_hana", "sentry", "snowflake", "spanner", "xata", "zendesk", "servicenow_csm", "freshdesk", "mail", "slack", "mcp", "a2a", "legend", "teams", "openai_compatible", "openai_compatible_embedding", "sharepoint", "vertex"];
|
|
4
4
|
/**
|
|
5
5
|
* @category Database
|
|
6
6
|
*/
|
|
@@ -8,7 +8,7 @@ export declare const DATA_INTEGRATION_TYPES: readonly ["bigquery", "built_in_db"
|
|
|
8
8
|
/**
|
|
9
9
|
* @category Auth
|
|
10
10
|
*/
|
|
11
|
-
export declare const AUTH_INTEGRATION_TYPES: readonly ["auth0", "jwt_rsa", "jwt_hmac", "cognito", "okta", "keycloak", "descope", "firebase_auth", "azure-entra-external-id"];
|
|
11
|
+
export declare const AUTH_INTEGRATION_TYPES: readonly ["auth0", "jwt_rsa", "jwt_hmac", "cognito", "okta", "keycloak", "descope", "firebase_auth", "azure-entra-external-id", "azure-entra-id"];
|
|
12
12
|
/**
|
|
13
13
|
* Auth integration types that can OAuth-protect an MCP server (see `McpOAuthOptions` and
|
|
14
14
|
* `AiAgentMcpServerConfig.oauthIntegrationId`). Kept in sync with the providers supported by the
|
|
@@ -48,9 +48,17 @@ export interface IntegrationInfo<ConfigurationType = Record<string, any> | undef
|
|
|
48
48
|
creationDate?: Date;
|
|
49
49
|
/** The date when the integration was last updated. */
|
|
50
50
|
updateDate?: Date;
|
|
51
|
+
/**
|
|
52
|
+
* When false, the integration is disabled: runtime access is rejected and sync jobs skip it.
|
|
53
|
+
* Absent means enabled on create; an update that omits it keeps the stored value, so re-enabling
|
|
54
|
+
* requires an explicit `enabled: true`.
|
|
55
|
+
*/
|
|
56
|
+
enabled?: boolean | null;
|
|
51
57
|
/** The configuration object for the integration, if any. */
|
|
52
58
|
configuration: ConfigurationType;
|
|
53
59
|
}
|
|
60
|
+
/** Returns true when the integration is explicitly disabled. An absent or null `enabled` means enabled. */
|
|
61
|
+
export declare function isIntegrationDisabled(integration: Pick<IntegrationInfo, 'enabled'>): boolean;
|
|
54
62
|
/** Integration IDs used for built-in integrations by Squid. */
|
|
55
63
|
export declare const SQUID_BUILT_IN_INTEGRATION_IDS: readonly [string, string, string];
|
|
56
64
|
/** Returns true if ID is a built-in integration ID in Squid. */
|