@squidcloud/client 1.0.482 → 1.0.483

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.
@@ -1,3 +1,4 @@
1
+ import { AiAgentMemoryOptions } from './ai-agent.public-types';
1
2
  import { AiQueryOptions } from './ai-query.public-types';
2
3
  import { AiAgentId } from './communication.public-types';
3
4
  /**
@@ -41,6 +42,12 @@ export interface AiApiOptions {
41
42
  * user prompt. Default 4.
42
43
  */
43
44
  maxIterations?: number;
45
+ /**
46
+ * Conversation memory configuration. When provided, prior user prompts and AI answers under the same `memoryId`
47
+ * are provided as additional context to the AI, enabling cross-prompt follow-ups
48
+ * Defaults to no memory.
49
+ */
50
+ memoryOptions?: AiAgentMemoryOptions;
44
51
  }
45
52
  /**
46
53
  * Configuration options for AI agent MCP integration.
@@ -843,6 +843,12 @@ export interface BaseUpsertContextStatus {
843
843
  export interface UpsertContextStatusSuccess extends BaseUpsertContextStatus {
844
844
  /** Whether the context upsert was successful or got an error. */
845
845
  status: 'success';
846
+ /**
847
+ * Set when the context was stored and is fully searchable (vector/keyword), but was NOT graph-indexed
848
+ * because the knowledge base is over its per-KB graph chunk cap. Only GraphRAG coverage is absent;
849
+ * surfaced so bulk operations can report which contexts fell outside the graph.
850
+ */
851
+ graphIndexingSkipped?: boolean;
846
852
  }
847
853
  /**
848
854
  * Machine-readable code identifying a specific upsert failure reason.
@@ -8,7 +8,7 @@ export declare const RERANK_PROVIDERS: readonly ["cohere", "none"];
8
8
  */
9
9
  export type AiRerankProvider = (typeof RERANK_PROVIDERS)[number];
10
10
  /** List of available AI provider types. See AiProviderType. */
11
- export declare const AI_PROVIDER_TYPES: readonly ["anthropic", "bedrock", "claude-code", "codex", "cohere", "flux", "gemini", "openai", "grok", "stability", "voyage", "mistral", "textract", "vertex", "external"];
11
+ export declare const AI_PROVIDER_TYPES: readonly ["anthropic", "bedrock", "claude-code", "codex", "cohere", "flux", "gemini", "openai", "openai-compatible", "grok", "stability", "voyage", "mistral", "textract", "vertex", "external"];
12
12
  /**
13
13
  * Type of the AI provider.
14
14
  * References a single AI service, regardless of the model or other AI function it provides (like
@@ -29,7 +29,7 @@ export declare const OPENAI_CHAT_MODEL_NAMES: readonly ["gpt-5.4-mini", "gpt-5.4
29
29
  * Public Gemini chat model names (active models only).
30
30
  * @category AI
31
31
  */
32
- export declare const GEMINI_CHAT_MODEL_NAMES: readonly ["gemini-3.1-pro", "gemini-3.5-flash", "gemini-3.1-flash-lite"];
32
+ export declare const GEMINI_CHAT_MODEL_NAMES: readonly ["gemini-3.1-pro", "gemini-3.6-flash", "gemini-3.5-flash-lite"];
33
33
  /**
34
34
  * Public Grok chat model names (active models only).
35
35
  * @category AI
@@ -39,12 +39,12 @@ export declare const GROK_CHAT_MODEL_NAMES: readonly ["grok-4.3", "grok-4-1-fast
39
39
  * Public Anthropic chat model names (active models only).
40
40
  * @category AI
41
41
  */
42
- export declare const ANTHROPIC_CHAT_MODEL_NAMES: readonly ["claude-haiku-4-5-20251001", "claude-opus-4-8", "claude-sonnet-5"];
42
+ export declare const ANTHROPIC_CHAT_MODEL_NAMES: readonly ["claude-haiku-4-5-20251001", "claude-opus-5", "claude-sonnet-5"];
43
43
  /**
44
44
  * The supported AI model names.
45
45
  * @category AI
46
46
  */
47
- export declare const VENDOR_AI_CHAT_MODEL_NAMES: readonly ["gpt-5.4-mini", "gpt-5.4-nano", "gpt-5.5", "gpt-5.5-pro", "gpt-5.6-sol", "gpt-5.6-terra", "gpt-5.6-luna", "claude-haiku-4-5-20251001", "claude-opus-4-8", "claude-sonnet-5", "gemini-3.1-pro", "gemini-3.5-flash", "gemini-3.1-flash-lite", "grok-4.3", "grok-4-1-fast-reasoning", "grok-4-1-fast-non-reasoning"];
47
+ export declare const VENDOR_AI_CHAT_MODEL_NAMES: readonly ["gpt-5.4-mini", "gpt-5.4-nano", "gpt-5.5", "gpt-5.5-pro", "gpt-5.6-sol", "gpt-5.6-terra", "gpt-5.6-luna", "claude-haiku-4-5-20251001", "claude-opus-5", "claude-sonnet-5", "gemini-3.1-pro", "gemini-3.6-flash", "gemini-3.5-flash-lite", "grok-4.3", "grok-4-1-fast-reasoning", "grok-4-1-fast-non-reasoning"];
48
48
  /** Checks if the given model name is a global AI chat model name. */
49
49
  export declare function isVendorAiChatModelName(modelName: unknown): modelName is VendorAiChatModelName;
50
50
  /**
@@ -634,6 +634,12 @@ export interface AiKnowledgeBaseSearchResultChunk {
634
634
  export interface UpsertKnowledgeBaseContextResponse {
635
635
  /** List of the upsert status of each item sent in the request. */
636
636
  failure?: UpsertContextStatusError;
637
+ /**
638
+ * Set when the context was stored (and is fully searchable via vector/keyword) but NOT graph-indexed
639
+ * because the knowledge base is over its per-KB graph chunk cap. Only GraphRAG coverage is absent; the
640
+ * singular counterpart of {@link UpsertKnowledgeBaseContextsResponse.graphIndexingSkippedContextIds}.
641
+ */
642
+ graphIndexingSkipped?: boolean;
637
643
  }
638
644
  /**
639
645
  * Response structure for upserting contexts for an AiKnowledgeBase
@@ -652,6 +658,12 @@ export interface UpsertKnowledgeBaseContextsResponse {
652
658
  * `undefined` at runtime — callers must handle its absence rather than trust it is always populated.
653
659
  */
654
660
  contextIds?: Array<AiContextId>;
661
+ /**
662
+ * Contexts that were stored (and are fully searchable via vector/keyword) but NOT graph-indexed because
663
+ * the knowledge base is over its per-KB graph chunk cap. Only GraphRAG coverage is absent; surfaced so a
664
+ * caller can report the graph-coverage gap. Absent/empty when nothing was skipped or graph is disabled.
665
+ */
666
+ graphIndexingSkippedContextIds?: Array<AiContextId>;
655
667
  }
656
668
  /**
657
669
  * Request structure for searching an AiKnowledgeBase
@@ -214,6 +214,12 @@ export interface AiSpreadsheetQueryOptions {
214
214
  instructions?: string;
215
215
  /** Overrides the model used to answer the query. */
216
216
  model?: AiChatModelName;
217
+ /**
218
+ * Background gathered by the calling agent (facts from retrieved chunks, chat history, or earlier
219
+ * spreadsheet queries in the same conversation). Injected into the sub-agent's prompt as reference
220
+ * data — not as instructions — so it starts oriented instead of rediscovering the caller's context.
221
+ */
222
+ context?: string;
217
223
  }
218
224
  /**
219
225
  * Request for executing an AI-powered query over spreadsheet files.
@@ -121,6 +121,116 @@ export interface SpreadsheetSheetInfo {
121
121
  * Number of columns in the sheet.
122
122
  */
123
123
  columnCount: number;
124
+ /**
125
+ * Present and true when the sheet is hidden (or very-hidden) in the workbook. Hidden sheets are
126
+ * extracted like visible ones; the flag lets downstream surfaces say so. Omitted for visible
127
+ * sheets to keep the stored inventory JSON compact.
128
+ */
129
+ hidden?: boolean;
130
+ /** Cells whose value is computed by a formula. Omitted when zero, keeping the stored JSON compact. */
131
+ formulaCellCount?: number;
132
+ /** Merged ranges declared on the sheet. Omitted when zero. */
133
+ mergedRangeCount?: number;
134
+ /**
135
+ * Sheet-qualified references to this sheet from formulas on OTHER VISIBLE sheets. Omitted when
136
+ * zero. Raw evidence of "a live sheet reads this one", which is why references from hidden sheets
137
+ * are excluded — those are reported through {@link disconnected}, which walks them transitively.
138
+ */
139
+ inboundRefCount?: number;
140
+ /**
141
+ * Sheet-qualified references from this sheet's formulas to other sheets OF THIS WORKBOOK. Omitted
142
+ * when zero. External references (`[Book.xlsx]Sheet1!A1`) are not counted — except in a legacy
143
+ * .xls, whose formula text does not mark them (see {@link disconnected}), so a reference into
144
+ * another workbook's same-named sheet counts here.
145
+ */
146
+ outboundRefCount?: number;
147
+ /** Formulas on the sheet containing a `#REF!` error, the signature of deleted precedents. Omitted when zero. */
148
+ refErrorCount?: number;
149
+ /**
150
+ * Present and true when the sheet is hidden AND takes no part in the workbook's live dependency
151
+ * graph: nothing the live model reads leads to it, and it reads no visible sheet itself.
152
+ *
153
+ * Reachability, not adjacency: a hidden sheet read by another hidden sheet that a visible sheet
154
+ * reads is live, and the walk crosses as many hidden hops as the workbook has. It follows the READ
155
+ * direction only. A hidden staging or print sheet that merely reads the live model — downstream of
156
+ * it, not orphaned from it — is spared by that second clause, but sparing it does not spare what
157
+ * feeds IT: were liveness to flow backwards, one legacy tab still pointing at the current dashboard
158
+ * would carry its whole cluster of stale detail sheets back into the live set.
159
+ *
160
+ * Deliberately conservative on two further counts. It is never asserted for visible sheets, which
161
+ * are orphaned by design far more often than not (cover pages, chart tabs, mapping tables). And it
162
+ * remains a heuristic for "legacy", not a proof: `INDIRECT()`, defined-name and VBA/Power Query
163
+ * references are all invisible to a formula scan, so a hidden sheet reached only that way is a
164
+ * false positive. Consumers should present it as the evidence it is, never as a verdict.
165
+ *
166
+ * It is also under-reported in the legacy .xls container, where a parsed external reference keeps
167
+ * only the other workbook's sheet NAME: a link to the model this file was copied from can be
168
+ * credited to that file's own leftover copy of the sheet and spare it the flag. Missing orphans
169
+ * that way, never inventing them, is the direction this signal can afford to be wrong in.
170
+ */
171
+ disconnected?: boolean;
172
+ /**
173
+ * Up to a few representative formulas ("C5=SUM(B2:B4)") for the summary preview. NOT persisted in
174
+ * the bounded inventory JSON — preview-time only.
175
+ */
176
+ formulaSample?: Array<string>;
177
+ }
178
+ /**
179
+ * Workbook-level parts the per-sheet CSV dump cannot express, counted from the container index so
180
+ * the summary can SAY what it cannot show (chart-locked figures, pivot views, staleness of
181
+ * external-workbook cached values). Every field is omitted when zero/false.
182
+ */
183
+ export interface SpreadsheetWorkbookFeatures {
184
+ /** Charts embedded in the workbook; chart data is not extracted. */
185
+ chartCount?: number;
186
+ /** Pivot tables; their computed views are not extracted. */
187
+ pivotTableCount?: number;
188
+ /** External-link parts (other workbooks, DDE, or OLE); linked cells carry last-cached values that may be stale. */
189
+ externalLinkCount?: number;
190
+ /** Sheets carrying cell comments/notes (not extracted). */
191
+ commentPartCount?: number;
192
+ /** The workbook contains VBA macros. */
193
+ hasVbaMacros?: boolean;
194
+ }
195
+ /** One data series of a chart, with its cached categories and values. */
196
+ export interface SpreadsheetChartSeries {
197
+ /** The series name. */
198
+ name?: string;
199
+ /** The categories (x-axis labels) for the series. */
200
+ categories: Array<string>;
201
+ /** The numeric values for the series. */
202
+ values: Array<number>;
203
+ /**
204
+ * The series' true cached point count, present ONLY when extraction retained fewer points than the
205
+ * series actually declares. Without it, a consumer cannot tell a complete 8-point series apart from
206
+ * the first 8 points of a 12-point one, and would describe a January-December series as ending in
207
+ * August.
208
+ */
209
+ totalPointCount?: number;
210
+ }
211
+ /** One chart's cached content. Cached values are what the chart last rendered; formulas are not evaluated. */
212
+ export interface SpreadsheetChartInfo {
213
+ /** The chart's title, when it declares one. */
214
+ title?: string;
215
+ /** The worksheet the chart is anchored to, when the relationship graph resolves it. */
216
+ sheetName?: string;
217
+ /** The chart's data series, in declaration order. */
218
+ series: Array<SpreadsheetChartSeries>;
219
+ /**
220
+ * The chart's true series count, present ONLY when extraction retained fewer series than the chart
221
+ * actually declares — so an omitted-series count is computed against what the chart HAS, not against
222
+ * what survived extraction's own cap.
223
+ */
224
+ totalSeriesCount?: number;
225
+ }
226
+ /** One pivot table's identity and fields. Displayed aggregates are NOT extracted — only what it is built from. */
227
+ export interface SpreadsheetPivotInfo {
228
+ /** The pivot table name. */
229
+ name?: string;
230
+ /** The worksheet the pivot table is anchored to. */
231
+ sheetName?: string;
232
+ /** The field names used in the pivot table. */
233
+ fields: Array<string>;
124
234
  }
125
235
  /**
126
236
  * Structural information about a parseable spreadsheet document.
@@ -130,6 +240,12 @@ export interface SpreadsheetDocumentInfo {
130
240
  * The sheets of the spreadsheet, in workbook order.
131
241
  */
132
242
  sheets: Array<SpreadsheetSheetInfo>;
243
+ /** Workbook-level parts the CSV dump cannot express (best-effort; absent for CSV/TSV and .xls). */
244
+ features?: SpreadsheetWorkbookFeatures;
245
+ /** Charts with their cached series (best-effort; absent for .xls and when none exist). */
246
+ charts?: Array<SpreadsheetChartInfo>;
247
+ /** Pivot tables with their field names (best-effort; absent for .xls/.xlsb and when none exist). */
248
+ pivots?: Array<SpreadsheetPivotInfo>;
133
249
  }
134
250
  /**
135
251
  * The full result of extracting data from a document, including all pages and any extracted images.
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Options for starting a new LangGraph run.
3
+ * @category AI
4
+ */
5
+ export interface InvokeLangGraphOptions {
6
+ /** If provided, the run executes against this thread. If omitted, a new thread is created. */
7
+ threadId?: string;
8
+ /** Initial state for the run. */
9
+ input?: Record<string, unknown>;
10
+ }
11
+ /**
12
+ * Successful result of a LangGraph invocation.
13
+ * @category AI
14
+ */
15
+ export interface InvokeLangGraphSuccessResult {
16
+ /** Always `true` on success. */
17
+ ok: true;
18
+ /** Thread the run executed against. */
19
+ threadId: string;
20
+ /** `completed` when the graph finished, `interrupted` when awaiting a resume. */
21
+ status: 'completed' | 'interrupted';
22
+ /** Final (or paused) state values. */
23
+ state: Record<string, unknown> | null;
24
+ /** Next nodes to execute. Empty when `status` is `completed`. */
25
+ next: string[];
26
+ }
27
+ /**
28
+ * Successful result of a getState call.
29
+ * @category AI
30
+ */
31
+ export interface GetLangGraphStateSuccessResult {
32
+ /** Always `true` on success. */
33
+ ok: true;
34
+ /** Thread the state belongs to. */
35
+ threadId: string;
36
+ /** Current state values. */
37
+ state: Record<string, unknown> | null;
38
+ /** Next nodes to execute. Empty if the graph has completed. */
39
+ next: string[];
40
+ }
@@ -4,6 +4,11 @@
4
4
  export interface WebAiSearchRequest {
5
5
  /** The search query. */
6
6
  query: string;
7
+ /**
8
+ * When provided, restricts the web search to these domains (subdomains are included).
9
+ * Cited URLs in the response are guaranteed to belong to one of the listed domains.
10
+ */
11
+ allowedDomains?: Array<string>;
7
12
  }
8
13
  /**
9
14
  * Represents a cited URL in the search response.
@@ -33,6 +33,7 @@ export * from './extraction-client';
33
33
  export * from './file-args-transformer';
34
34
  export * from './integration-client';
35
35
  export * from './job-client';
36
+ export * from './langgraph-client';
36
37
  export * from './management-client';
37
38
  export * from './mutation/mutation-sender';
38
39
  export * from './native-query-manager';
@@ -0,0 +1,62 @@
1
+ import { JobId } from '../../internal-common/src/public-types/job.public-types';
2
+ import { GetLangGraphStateSuccessResult, InvokeLangGraphOptions, InvokeLangGraphSuccessResult } from '../../internal-common/src/public-types/langgraph.public-types';
3
+ /**
4
+ * Reference to a specific LangGraph.
5
+ * @category AI
6
+ */
7
+ export declare class LangGraphReference {
8
+ private readonly graphId;
9
+ private readonly rpcManager;
10
+ private readonly jobClient;
11
+ /**
12
+ * Starts a new LangGraph run and waits for the result.
13
+ *
14
+ * For very long graphs where you don't want to hold a Promise, use `invokeAsync()` instead.
15
+ *
16
+ * Note: graph execution caps at the tenant IPC timeout (currently 4 minutes).
17
+ *
18
+ * @param options Initial state and optional thread to run against.
19
+ */
20
+ invoke(options?: InvokeLangGraphOptions): Promise<InvokeLangGraphSuccessResult>;
21
+ /**
22
+ * Starts a new LangGraph run without waiting for the result.
23
+ * Returns a jobId — pass it to `squid.job().awaitJob(jobId)` or `getJob(jobId)` to retrieve the result later.
24
+ *
25
+ * Use this for graphs that may run longer than is comfortable to hold a Promise for.
26
+ *
27
+ * Note: the underlying graph execution still caps at the tenant IPC timeout (currently 4 minutes)
28
+ *
29
+ * @param options Initial state and optional thread to run against.
30
+ */
31
+ invokeAsync(options?: InvokeLangGraphOptions): Promise<JobId>;
32
+ /**
33
+ * Resumes an interrupted LangGraph thread and waits for the result.
34
+ * The thread must currently be in `interrupted` status.
35
+ *
36
+ * Note: graph execution caps at the tenant IPC timeout (currently 4 minutes).
37
+ *
38
+ * @param threadId The thread to resume.
39
+ * @param resumePayload Value passed to the `interrupt()` call inside the graph.
40
+ */
41
+ resume(threadId: string, resumePayload: unknown): Promise<InvokeLangGraphSuccessResult>;
42
+ /**
43
+ * Resumes an interrupted LangGraph thread without waiting for the result.
44
+ * Returns a jobId — pass it to `squid.job().awaitJob(jobId)` or `getJob(jobId)` to retrieve the result later.
45
+ *
46
+ * Note: graph execution caps at the tenant IPC timeout (currently 4 minutes)
47
+ *
48
+ * @param threadId The thread to resume.
49
+ * @param resumePayload Value passed to the `interrupt()` call inside the graph.
50
+ */
51
+ resumeAsync(threadId: string, resumePayload: unknown): Promise<JobId>;
52
+ /** Returns the current state of a LangGraph thread. */
53
+ getState(threadId: string): Promise<GetLangGraphStateSuccessResult>;
54
+ /**
55
+ * Deletes all checkpoints for the given thread on this graph. Idempotent — succeeds on a
56
+ * nonexistent thread. After deletion, `getState(threadId)` returns an empty state and any
57
+ * subsequent `invoke`/`resume` on the same threadId starts fresh with no prior history.
58
+ *
59
+ * @param threadId The thread to delete.
60
+ */
61
+ deleteThread(threadId: string): Promise<void>;
62
+ }
@@ -20,6 +20,7 @@ export * from '../../internal-common/src/public-types/extraction.public-types';
20
20
  export * from '../../internal-common/src/public-types/http-status.public-types';
21
21
  export * from '../../internal-common/src/public-types/integration.public-types';
22
22
  export * from '../../internal-common/src/public-types/job.public-types';
23
+ export * from '../../internal-common/src/public-types/langgraph.public-types';
23
24
  export * from '../../internal-common/src/public-types/metadata-filter.public-types';
24
25
  export * from '../../internal-common/src/public-types/metric.public-types';
25
26
  export * from '../../internal-common/src/public-types/openapi.public-types';
@@ -9,6 +9,7 @@ import { ExecuteFunctionOptions } from './execute-function-options';
9
9
  import { ExternalAuthClient } from './external-auth-client';
10
10
  import { ExtractionClient } from './extraction-client';
11
11
  import { JobClient } from './job-client';
12
+ import { LangGraphReference } from './langgraph-client';
12
13
  import { NotificationClient } from './notification-client';
13
14
  import { ObservabilityClient } from './observability-client';
14
15
  import { ApiKey, AppId, CollectionName, DocumentData, EnvironmentId, IntegrationId, SquidDeveloperId, SquidRegion } from './public-types';
@@ -123,6 +124,7 @@ export declare class Squid {
123
124
  private readonly querySender;
124
125
  private readonly aiClient;
125
126
  private readonly jobClient;
127
+ private readonly langGraphClient;
126
128
  private readonly apiClient;
127
129
  private readonly adminClient;
128
130
  private readonly webClient;
@@ -329,6 +331,10 @@ export declare class Squid {
329
331
  * Returns a set of functionality for interacting with jobs.
330
332
  */
331
333
  job(): JobClient;
334
+ /**
335
+ * Returns a reference to a LangGraph by ID.
336
+ */
337
+ langGraph(graphId: string): LangGraphReference;
332
338
  /**
333
339
  * Returns a set of functionality for interacting with API integrations.
334
340
  */
@@ -2,4 +2,4 @@
2
2
  * The current version of the SquidCloud client package.
3
3
  * @category Platform
4
4
  */
5
- export declare const SQUIDCLOUD_CLIENT_PACKAGE_VERSION = "1.0.482";
5
+ export declare const SQUIDCLOUD_CLIENT_PACKAGE_VERSION = "1.0.483";
@@ -17,8 +17,10 @@ export declare class WebClient {
17
17
  * @param abortSignal Optional signal used to abort the underlying request. When the signal aborts, the in-flight
18
18
  * HTTP request is cancelled and its promise rejects, allowing callers to bound a single call
19
19
  * without leaking the request.
20
+ * @param allowedDomains Optional list of domains the search is restricted to (subdomains included). When provided,
21
+ * every cited URL in the response belongs to one of the listed domains.
20
22
  */
21
- aiSearch(query: string, abortSignal?: AbortSignal): Promise<WebAiSearchResponse>;
23
+ aiSearch(query: string, abortSignal?: AbortSignal, allowedDomains?: Array<string>): Promise<WebAiSearchResponse>;
22
24
  /**
23
25
  * Fetch content from a URL.
24
26
  * @param url The URL to fetch content from.
@@ -58,4 +60,10 @@ export declare class WebClient {
58
60
  * @param ids The IDs of the shortened URL to delete.
59
61
  */
60
62
  deleteShortUrls(ids: string[]): Promise<void>;
63
+ /**
64
+ * POSTs a short URL request to the console `openapi/sqd/<op>` endpoint.
65
+ * With `'json'` the response body is read and returned parsed; with `'ignore'` it is never read.
66
+ * Only use after asserting apiKey is defined.
67
+ */
68
+ private postShortUrlApi;
61
69
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@squidcloud/client",
3
- "version": "1.0.482",
3
+ "version": "1.0.483",
4
4
  "description": "A typescript implementation of the Squid client",
5
5
  "main": "dist/cjs/index.js",
6
6
  "module": "dist/esm/index.js",