@agent-native/core 0.51.5 → 0.51.7

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 (38) hide show
  1. package/dist/cli/pr-visual-recap-workflow.d.ts +1 -1
  2. package/dist/cli/pr-visual-recap-workflow.d.ts.map +1 -1
  3. package/dist/cli/pr-visual-recap-workflow.js +1 -1
  4. package/dist/cli/pr-visual-recap-workflow.js.map +1 -1
  5. package/dist/cli/templates-meta.js +1 -1
  6. package/dist/cli/templates-meta.js.map +1 -1
  7. package/dist/coding-tools/run-code.d.ts.map +1 -1
  8. package/dist/coding-tools/run-code.js +435 -3
  9. package/dist/coding-tools/run-code.js.map +1 -1
  10. package/dist/provider-api/corpus-jobs-store.d.ts +95 -0
  11. package/dist/provider-api/corpus-jobs-store.d.ts.map +1 -0
  12. package/dist/provider-api/corpus-jobs-store.js +394 -0
  13. package/dist/provider-api/corpus-jobs-store.js.map +1 -0
  14. package/dist/provider-api/corpus-jobs.d.ts +146 -0
  15. package/dist/provider-api/corpus-jobs.d.ts.map +1 -0
  16. package/dist/provider-api/corpus-jobs.js +1192 -0
  17. package/dist/provider-api/corpus-jobs.js.map +1 -0
  18. package/dist/server/agent-chat-plugin.d.ts.map +1 -1
  19. package/dist/server/agent-chat-plugin.js +9 -2
  20. package/dist/server/agent-chat-plugin.js.map +1 -1
  21. package/dist/server/auth-marketing.js +4 -4
  22. package/dist/server/auth-marketing.js.map +1 -1
  23. package/docs/content/cloneable-saas.md +1 -1
  24. package/docs/content/getting-started.md +1 -1
  25. package/docs/content/local-file-mode.md +6 -1
  26. package/docs/content/template-analytics.md +0 -8
  27. package/docs/content/template-assets.md +0 -6
  28. package/docs/content/template-brain.md +0 -8
  29. package/docs/content/template-calendar.md +0 -8
  30. package/docs/content/template-clips.md +0 -8
  31. package/docs/content/template-content.md +27 -23
  32. package/docs/content/template-design.md +0 -6
  33. package/docs/content/template-forms.md +0 -10
  34. package/docs/content/template-mail.md +0 -8
  35. package/docs/content/template-plan.md +180 -0
  36. package/docs/content/template-slides.md +0 -8
  37. package/docs/content/template-videos.md +0 -8
  38. package/package.json +3 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"corpus-jobs.js","sourceRoot":"","sources":["../../src/provider-api/corpus-jobs.ts"],"names":[],"mappings":"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","sourcesContent":["import { randomUUID } from \"node:crypto\";\nimport { z } from \"zod\";\nimport { defineAction } from \"../action.js\";\nimport { getCredentialContext } from \"../server/request-context.js\";\nimport type { ProviderApiMethod, ProviderApiRequestArgs } from \"./index.js\";\nimport { getStagedDatasetRows } from \"./staged-datasets-store.js\";\nimport {\n appendProviderCorpusJobHits,\n createProviderCorpusJob,\n deleteProviderCorpusJob,\n getProviderCorpusJob,\n getProviderCorpusJobHits,\n listProviderCorpusJobs,\n updateProviderCorpusJob,\n type ProviderCorpusJobRecord,\n type ProviderCorpusJobStatus,\n} from \"./corpus-jobs-store.js\";\n\ntype ProviderCorpusRuntime = {\n executeRequest(args: ProviderApiRequestArgs): Promise<unknown>;\n};\n\nexport interface CreateProviderCorpusJobActionOptions {\n appId: string;\n getRuntime: () => ProviderCorpusRuntime;\n}\n\nconst MethodSchema = z.enum([\"GET\", \"POST\", \"PUT\", \"PATCH\", \"DELETE\", \"HEAD\"]);\n\nconst ProviderRequestSchema = z.object({\n provider: z.string().min(1).describe(\"Configured provider API id.\"),\n method: MethodSchema.default(\"GET\").describe(\"HTTP method to use.\"),\n path: z.string().min(1).describe(\"Provider API path or allowed full URL.\"),\n query: z.unknown().optional().describe(\"Optional query parameters.\"),\n headers: z.record(z.string(), z.unknown()).optional(),\n body: z.unknown().optional(),\n auth: z.enum([\"default\", \"none\"]).default(\"default\"),\n connectionId: z.string().trim().min(1).optional(),\n accountId: z.string().optional(),\n timeoutMs: z.coerce.number().int().min(1_000).max(120_000).optional(),\n maxBytes: z.coerce\n .number()\n .int()\n .min(1_000)\n .max(4 * 1024 * 1024)\n .optional(),\n});\n\nconst PaginationSchema = z.object({\n itemsPath: z\n .string()\n .optional()\n .describe(\"Dot-path to records in each page, e.g. records.calls.\"),\n nextCursorPath: z\n .string()\n .optional()\n .describe(\"Dot-path to the next cursor in each response.\"),\n cursorPath: z.string().optional().describe(\"Alias for nextCursorPath.\"),\n cursorParam: z\n .string()\n .optional()\n .describe(\"Query parameter that receives the next cursor.\"),\n cursorBodyPath: z\n .string()\n .optional()\n .describe(\"Request body path that receives the next cursor.\"),\n pageParam: z\n .string()\n .optional()\n .describe(\"Query parameter for page-number pagination.\"),\n startPage: z.coerce.number().int().min(0).optional(),\n offsetParam: z\n .string()\n .optional()\n .describe(\"Query parameter for offset pagination.\"),\n startOffset: z.coerce.number().int().min(0).optional(),\n pageSize: z.coerce.number().int().min(1).optional(),\n maxPages: z.coerce\n .number()\n .int()\n .min(1)\n .max(2_000)\n .optional()\n .describe(\"Overall page cap for the job. Default 500.\"),\n});\n\nconst BatchSchema = z.object({\n items: z\n .array(z.unknown())\n .max(10_000)\n .optional()\n .describe(\"Input records or ids to process in batches.\"),\n inputDatasetId: z\n .string()\n .optional()\n .describe(\"Optional staged dataset id to read input records from.\"),\n inputValuePath: z\n .string()\n .optional()\n .describe(\"Dot-path to extract the provider id/value from each input row.\"),\n batchSize: z.coerce.number().int().min(1).max(100).optional(),\n itemBodyPath: z\n .string()\n .optional()\n .describe(\"Dot-path in request body where the current batch array goes.\"),\n itemQueryParam: z\n .string()\n .optional()\n .describe(\"Query parameter where the current batch goes.\"),\n responseItemsPath: z\n .string()\n .optional()\n .describe(\"Dot-path to records in each batch response.\"),\n});\n\nconst SearchSchema = z.object({\n query: z.string().optional().describe(\"Phrase to search for.\"),\n queries: z.array(z.string()).max(50).optional(),\n terms: z\n .array(z.string())\n .max(50)\n .optional()\n .describe(\"Terms for allTerms/anyTerm search.\"),\n regex: z.string().optional(),\n regexFlags: z.string().optional(),\n matchMode: z.enum([\"query\", \"allTerms\", \"anyTerm\"]).optional(),\n caseSensitive: z.boolean().optional(),\n textPaths: z\n .array(z.string())\n .max(100)\n .optional()\n .describe(\"Only search these dot-paths. Omit to search text recursively.\"),\n idPaths: z.array(z.string()).max(100).optional(),\n metadataPaths: z.array(z.string()).max(100).optional(),\n contextChars: z.coerce.number().int().min(20).max(1_000).optional(),\n maxHits: z.coerce.number().int().min(1).max(10_000).optional(),\n maxHitsPerItem: z.coerce.number().int().min(1).max(100).optional(),\n maxFieldsPerItem: z.coerce.number().int().min(1).max(50_000).optional(),\n});\n\nconst LimitsSchema = z.object({\n pageBudget: z.coerce\n .number()\n .int()\n .min(1)\n .max(200)\n .optional()\n .describe(\"Pages to process in this action call. Default 25.\"),\n batchBudget: z.coerce\n .number()\n .int()\n .min(1)\n .max(500)\n .optional()\n .describe(\"Batches to process in this action call. Default 25.\"),\n runtimeMs: z.coerce\n .number()\n .int()\n .min(1_000)\n .max(110_000)\n .optional()\n .describe(\"Wall-clock budget for this action call. Default 90000.\"),\n itemBudget: z.coerce\n .number()\n .int()\n .min(1)\n .max(200_000)\n .optional()\n .describe(\"Response records to search in this action call.\"),\n maxHits: z.coerce\n .number()\n .int()\n .min(1)\n .max(10_000)\n .optional()\n .describe(\"Stored hit cap for the whole job. Default comes from search.\"),\n});\n\nconst ProviderCorpusJobSchema = z.object({\n operation: z\n .enum([\"start\", \"continue\", \"status\", \"results\", \"list\", \"delete\"])\n .default(\"start\"),\n jobId: z\n .string()\n .optional()\n .describe(\"Existing job id for continue/status/results/delete.\"),\n name: z.string().optional().describe(\"Human-readable job name.\"),\n mode: z.enum([\"paginated-search\", \"batch-search\"]).optional(),\n request: ProviderRequestSchema.optional(),\n pagination: PaginationSchema.optional(),\n batch: BatchSchema.optional(),\n search: SearchSchema.optional(),\n limits: LimitsSchema.optional(),\n offset: z.coerce\n .number()\n .int()\n .min(0)\n .optional()\n .describe(\"Results/list offset.\"),\n limit: z.coerce\n .number()\n .int()\n .min(1)\n .max(1_000)\n .optional()\n .describe(\"Results/list limit.\"),\n});\n\ntype ProviderCorpusJobArgs = z.infer<typeof ProviderCorpusJobSchema>;\ntype ProviderRequest = z.infer<typeof ProviderRequestSchema>;\ntype PaginationConfig = z.infer<typeof PaginationSchema>;\ntype BatchConfig = z.infer<typeof BatchSchema>;\ntype SearchConfig = z.infer<typeof SearchSchema>;\ntype LimitsConfig = z.infer<typeof LimitsSchema>;\n\ninterface SearchHit {\n id: string | null;\n idPath: string | null;\n itemIndex: number;\n path: string;\n kind: string;\n query: string;\n match: string;\n snippet: string;\n metadata?: Record<string, unknown>;\n pageIndex?: number;\n pageItemIndex?: number;\n batchIndex?: number;\n batchItemIndex?: number;\n}\n\ninterface SearchPageResult {\n searchedItems: number;\n matchedItems: number;\n totalHits: number;\n storedHits: SearchHit[];\n}\n\ninterface ProviderBodyResult {\n body: unknown;\n quota?: { retryAt: string; retryAfterMs: number; reason: string };\n}\n\nconst DEFAULT_PAGE_BUDGET = 25;\nconst DEFAULT_BATCH_BUDGET = 25;\nconst DEFAULT_RUNTIME_MS = 90_000;\nconst DEFAULT_BATCH_SIZE = 25;\nconst DEFAULT_OVERALL_MAX_PAGES = 500;\nconst DEFAULT_MAX_HITS = 500;\n\nexport function createProviderCorpusJobAction(\n options: CreateProviderCorpusJobActionOptions,\n) {\n return defineAction({\n description:\n \"Create, continue, inspect, list, read results from, or delete a durable provider corpus search job. \" +\n \"Use this for broad provider searches, cross-source joins, transcript/message/ticket/issue/document scans, batch endpoint walks, and absence-sensitive questions that may exceed one tool call. \" +\n \"The job is generic: paginated-search walks any paginated provider endpoint; batch-search walks a supplied id/record list or staged dataset through any provider endpoint by injecting each batch into a query param or request body path. \" +\n \"Every provider request still goes through provider-api-request credentials, host allow-listing, SSRF blocking, secret redaction, and provider quota cooldown. \" +\n \"When status is paused or quota_wait, call operation=continue with the jobId after the indicated time/budget. Report coverage counts, pagination status, and any remaining gaps.\",\n schema: ProviderCorpusJobSchema,\n http: false,\n run: async (args) => runProviderCorpusJobAction(args, options),\n });\n}\n\nasync function runProviderCorpusJobAction(\n args: ProviderCorpusJobArgs,\n options: CreateProviderCorpusJobActionOptions,\n) {\n const ctx = getCredentialContext();\n if (!ctx)\n throw new Error(\"No authenticated context for provider-corpus-job.\");\n\n if (args.operation === \"list\") {\n const jobs = await listProviderCorpusJobs({\n appId: options.appId,\n ownerEmail: ctx.userEmail,\n limit: args.limit,\n });\n return { jobs: jobs.map(jobSummary), total: jobs.length };\n }\n\n if (args.operation === \"start\") {\n const job = await startJob(args, options.appId, ctx.userEmail);\n return continueJob(job, args.limits, options.getRuntime());\n }\n\n const jobId = args.jobId?.trim();\n if (!jobId) throw new Error(`${args.operation} requires jobId.`);\n\n if (args.operation === \"delete\") {\n const deleted = await deleteProviderCorpusJob({\n id: jobId,\n appId: options.appId,\n ownerEmail: ctx.userEmail,\n });\n if (!deleted) {\n throw new Error(\n `Provider corpus job ${jobId} not found or belongs to another owner/app.`,\n );\n }\n return { deleted: true, jobId };\n }\n\n const job = await getProviderCorpusJob({\n id: jobId,\n appId: options.appId,\n ownerEmail: ctx.userEmail,\n });\n if (!job) {\n throw new Error(\n `Provider corpus job ${jobId} not found or belongs to another owner/app.`,\n );\n }\n\n if (args.operation === \"status\") return jobStatus(job);\n if (args.operation === \"results\") {\n const hits = await getProviderCorpusJobHits({\n jobId,\n appId: options.appId,\n ownerEmail: ctx.userEmail,\n offset: args.offset,\n limit: args.limit,\n });\n return {\n ...jobStatus(job),\n hits,\n offset: args.offset ?? 0,\n limit: args.limit ?? 100,\n };\n }\n if (args.operation === \"continue\") {\n return continueJob(job, args.limits, options.getRuntime());\n }\n\n throw new Error(`Unsupported provider corpus operation ${args.operation}.`);\n}\n\nasync function startJob(\n args: ProviderCorpusJobArgs,\n appId: string,\n ownerEmail: string,\n): Promise<ProviderCorpusJobRecord> {\n if (!args.mode) throw new Error(\"start requires mode.\");\n if (!args.request) throw new Error(\"start requires request.\");\n const search = args.search ?? {};\n if (!hasSearchNeedle(search)) {\n throw new Error(\n \"start requires search.query, search.queries, search.terms, or search.regex.\",\n );\n }\n if (args.mode === \"paginated-search\" && !args.pagination) {\n throw new Error(\"paginated-search requires pagination.\");\n }\n if (args.mode === \"batch-search\") {\n if (!args.batch) throw new Error(\"batch-search requires batch config.\");\n if (!args.batch.itemBodyPath && !args.batch.itemQueryParam) {\n throw new Error(\n \"batch-search requires batch.itemBodyPath or batch.itemQueryParam.\",\n );\n }\n if (!args.batch.items?.length && !args.batch.inputDatasetId) {\n throw new Error(\"batch-search requires batch.items or inputDatasetId.\");\n }\n }\n\n const id = args.jobId?.trim() || `pcj_${randomUUID().replace(/-/g, \"\")}`;\n const request = cleanRequest(args.request);\n const checkpoint =\n args.mode === \"batch-search\"\n ? { nextIndex: 0, sourceItemCount: null }\n : {\n pageIndex: 0,\n cursor: null,\n pageNumber: args.pagination?.startPage ?? 1,\n offset: args.pagination?.startOffset ?? 0,\n lastCursor: null,\n stoppedReason: null,\n };\n\n return createProviderCorpusJob({\n id,\n appId,\n ownerEmail,\n name: args.name?.trim() || id,\n mode: args.mode,\n status: \"paused\",\n provider: request.provider,\n request: request as unknown as Record<string, unknown>,\n pagination:\n (args.pagination as Record<string, unknown> | undefined) ?? null,\n batch: (args.batch as Record<string, unknown> | undefined) ?? null,\n search: search as Record<string, unknown>,\n limits: (args.limits as Record<string, unknown> | undefined) ?? {},\n checkpoint,\n });\n}\n\nasync function continueJob(\n job: ProviderCorpusJobRecord,\n overrideLimits: LimitsConfig | undefined,\n runtime: ProviderCorpusRuntime,\n) {\n if (job.status === \"completed\") return jobStatus(job);\n\n const limits = normalizeLimits({\n ...(job.limits as LimitsConfig),\n ...(overrideLimits ?? {}),\n });\n await updateProviderCorpusJob({\n id: job.id,\n appId: job.appId,\n ownerEmail: job.ownerEmail,\n status: \"running\",\n error: null,\n nextResumeAt: null,\n });\n\n try {\n const refreshed = await getProviderCorpusJob({\n id: job.id,\n appId: job.appId,\n ownerEmail: job.ownerEmail,\n });\n if (!refreshed)\n throw new Error(`Provider corpus job ${job.id} disappeared.`);\n const next =\n refreshed.mode === \"batch-search\"\n ? await runBatchSearch(refreshed, limits, runtime)\n : await runPaginatedSearch(refreshed, limits, runtime);\n const hits = await getProviderCorpusJobHits({\n jobId: next.id,\n appId: next.appId,\n ownerEmail: next.ownerEmail,\n limit: 25,\n });\n return {\n ...jobStatus(next),\n sampleHits: hits,\n nextAction: nextAction(next),\n };\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err);\n const failed =\n (await updateProviderCorpusJob({\n id: job.id,\n appId: job.appId,\n ownerEmail: job.ownerEmail,\n status: \"failed\",\n error: message,\n })) ?? job;\n return { ...jobStatus(failed), nextAction: nextAction(failed) };\n }\n}\n\nasync function runPaginatedSearch(\n job: ProviderCorpusJobRecord,\n limits: Required<LimitsConfig>,\n runtime: ProviderCorpusRuntime,\n): Promise<ProviderCorpusJobRecord> {\n const startedAt = Date.now();\n const pagination = normalizePagination(job.pagination);\n const request = job.request as ProviderRequest;\n const search = job.search as SearchConfig;\n const checkpoint = { ...job.checkpoint };\n const maxPages = pagination.maxPages ?? DEFAULT_OVERALL_MAX_PAGES;\n let pageIndex = numberValue(checkpoint.pageIndex, 0);\n let cursor = valueOrNull(checkpoint.cursor);\n let pageNumber = numberValue(\n checkpoint.pageNumber,\n pagination.startPage ?? 1,\n );\n let offset = numberValue(checkpoint.offset, pagination.startOffset ?? 0);\n let pagesThisCall = 0;\n let itemsThisCall = 0;\n let current = job;\n\n while (\n pagesThisCall < limits.pageBudget &&\n pageIndex < maxPages &&\n itemsThisCall < limits.itemBudget &&\n Date.now() - startedAt < limits.runtimeMs\n ) {\n const pageRequest = buildPaginatedRequest(request, pagination, {\n pageIndex,\n cursor,\n pageNumber,\n offset,\n });\n const provider = await callProvider(runtime, pageRequest);\n if (provider.quota) {\n return pauseForQuota(\n current,\n {\n ...checkpoint,\n pageIndex,\n cursor,\n pageNumber,\n offset,\n },\n provider.quota,\n );\n }\n\n const items = extractItemsArray(provider.body, pagination.itemsPath, false);\n const nextCursorPath = pagination.nextCursorPath || pagination.cursorPath;\n const nextCursor = nextCursorPath\n ? valueOrNull(getAtPath(provider.body, nextCursorPath))\n : null;\n const searchResult = searchItems(items, search, {\n baseItemIndex: current.itemsProcessed,\n maxStoredHits: Math.max(0, limits.maxHits - current.storedHits),\n pageIndex,\n });\n const storedHits = searchResult.storedHits.map((hit) => hitToRecord(hit));\n await appendProviderCorpusJobHits({\n jobId: job.id,\n startIndex: current.storedHits,\n hits: storedHits,\n });\n\n pagesThisCall++;\n itemsThisCall += searchResult.searchedItems;\n const nextCheckpoint: Record<string, unknown> = {\n ...checkpoint,\n pageIndex: pageIndex + 1,\n cursor: nextCursor,\n pageNumber,\n offset,\n lastCursor: nextCursor,\n stoppedReason: null,\n };\n\n let status: ProviderCorpusJobStatus = \"paused\";\n let stoppedReason: string | null = null;\n if (items.length === 0) {\n status = \"completed\";\n stoppedReason = \"empty-page\";\n } else if (nextCursorPath) {\n if (!nextCursor) {\n status = \"completed\";\n stoppedReason = \"no-next-cursor\";\n } else if (cursor !== null && String(nextCursor) === String(cursor)) {\n status = \"completed\";\n stoppedReason = \"repeated-cursor\";\n } else {\n cursor = nextCursor;\n }\n } else if (pagination.pageParam) {\n pageNumber += 1;\n nextCheckpoint.pageNumber = pageNumber;\n } else if (pagination.offsetParam) {\n const step = pagination.pageSize || items.length;\n offset += step;\n nextCheckpoint.offset = offset;\n if (pagination.pageSize && items.length < pagination.pageSize) {\n status = \"completed\";\n stoppedReason = \"short-page\";\n }\n } else {\n status = \"completed\";\n stoppedReason = \"single-page\";\n }\n\n if (pageIndex + 1 >= maxPages && status !== \"completed\") {\n status = \"completed\";\n stoppedReason = \"max-pages\";\n }\n\n nextCheckpoint.stoppedReason = stoppedReason;\n current =\n (await updateProviderCorpusJob({\n id: job.id,\n appId: job.appId,\n ownerEmail: job.ownerEmail,\n status,\n checkpoint: nextCheckpoint,\n pagesProcessed: current.pagesProcessed + 1,\n itemsProcessed: current.itemsProcessed + searchResult.searchedItems,\n matchedItems: current.matchedItems + searchResult.matchedItems,\n totalHits: current.totalHits + searchResult.totalHits,\n storedHits: current.storedHits + storedHits.length,\n error: null,\n nextResumeAt: null,\n })) ?? current;\n\n pageIndex += 1;\n if (status === \"completed\") return current;\n }\n\n return pauseForBudget(current, {\n ...checkpoint,\n pageIndex,\n cursor,\n pageNumber,\n offset,\n stoppedReason: \"budget\",\n });\n}\n\nasync function runBatchSearch(\n job: ProviderCorpusJobRecord,\n limits: Required<LimitsConfig>,\n runtime: ProviderCorpusRuntime,\n): Promise<ProviderCorpusJobRecord> {\n const startedAt = Date.now();\n const batch = normalizeBatch(job.batch);\n const request = job.request as ProviderRequest;\n const search = job.search as SearchConfig;\n const sourceItems = await loadBatchSourceItems(job, batch);\n const totalSourceItems = sourceItems.length;\n let nextIndex = numberValue(job.checkpoint.nextIndex, 0);\n let batchesThisCall = 0;\n let itemsThisCall = 0;\n let current = job;\n\n while (\n nextIndex < totalSourceItems &&\n batchesThisCall < limits.batchBudget &&\n itemsThisCall < limits.itemBudget &&\n Date.now() - startedAt < limits.runtimeMs\n ) {\n const slice = sourceItems.slice(nextIndex, nextIndex + batch.batchSize);\n const values = slice\n .map((item) =>\n batch.inputValuePath ? getAtPath(item, batch.inputValuePath) : item,\n )\n .filter((value) => value !== undefined && value !== null);\n if (values.length === 0) {\n nextIndex += slice.length || batch.batchSize;\n continue;\n }\n\n const batchRequest = buildBatchRequest(request, batch, values);\n const provider = await callProvider(runtime, batchRequest);\n if (provider.quota) {\n return pauseForQuota(\n current,\n {\n ...job.checkpoint,\n nextIndex,\n sourceItemCount: totalSourceItems,\n },\n provider.quota,\n );\n }\n\n const items = extractItemsArray(\n provider.body,\n batch.responseItemsPath,\n true,\n );\n const searchResult = searchItems(items, search, {\n baseItemIndex: current.itemsProcessed,\n maxStoredHits: Math.max(0, limits.maxHits - current.storedHits),\n batchIndex: current.batchesProcessed,\n });\n const storedHits = searchResult.storedHits.map((hit) => hitToRecord(hit));\n await appendProviderCorpusJobHits({\n jobId: job.id,\n startIndex: current.storedHits,\n hits: storedHits,\n });\n\n batchesThisCall++;\n itemsThisCall += searchResult.searchedItems;\n nextIndex += slice.length;\n const status: ProviderCorpusJobStatus =\n nextIndex >= totalSourceItems ? \"completed\" : \"paused\";\n\n current =\n (await updateProviderCorpusJob({\n id: job.id,\n appId: job.appId,\n ownerEmail: job.ownerEmail,\n status,\n checkpoint: {\n ...job.checkpoint,\n nextIndex,\n sourceItemCount: totalSourceItems,\n stoppedReason: status === \"completed\" ? \"completed\" : \"budget\",\n },\n batchesProcessed: current.batchesProcessed + 1,\n itemsProcessed: current.itemsProcessed + searchResult.searchedItems,\n matchedItems: current.matchedItems + searchResult.matchedItems,\n totalHits: current.totalHits + searchResult.totalHits,\n storedHits: current.storedHits + storedHits.length,\n error: null,\n nextResumeAt: null,\n })) ?? current;\n\n if (status === \"completed\") return current;\n }\n\n return pauseForBudget(current, {\n ...job.checkpoint,\n nextIndex,\n sourceItemCount: totalSourceItems,\n stoppedReason: \"budget\",\n });\n}\n\nasync function pauseForQuota(\n job: ProviderCorpusJobRecord,\n checkpoint: Record<string, unknown>,\n quota: { retryAt: string; retryAfterMs: number; reason: string },\n): Promise<ProviderCorpusJobRecord> {\n return (\n (await updateProviderCorpusJob({\n id: job.id,\n appId: job.appId,\n ownerEmail: job.ownerEmail,\n status: \"quota_wait\",\n checkpoint,\n error: `Provider quota exhausted. Retry after ${quota.retryAt}.`,\n nextResumeAt: parseRetryAt(quota.retryAt, quota.retryAfterMs),\n })) ?? job\n );\n}\n\nasync function pauseForBudget(\n job: ProviderCorpusJobRecord,\n checkpoint: Record<string, unknown>,\n): Promise<ProviderCorpusJobRecord> {\n return (\n (await updateProviderCorpusJob({\n id: job.id,\n appId: job.appId,\n ownerEmail: job.ownerEmail,\n status: \"paused\",\n checkpoint,\n error: null,\n nextResumeAt: null,\n })) ?? job\n );\n}\n\nasync function callProvider(\n runtime: ProviderCorpusRuntime,\n request: ProviderRequest,\n): Promise<ProviderBodyResult> {\n const raw = (await runtime.executeRequest(cleanRequest(request))) as Record<\n string,\n unknown\n >;\n const response = raw.response as Record<string, unknown> | undefined;\n if (!response) {\n return { body: raw };\n }\n const quota = readQuota(response);\n if (quota) return { body: null, quota };\n if (response.ok !== true) {\n const status = response.status ?? \"unknown\";\n const detail = response.text ?? response.json ?? response.statusText ?? \"\";\n throw new Error(\n `Provider request failed (${status}): ${stringifyBrief(detail, 500)}`,\n );\n }\n return {\n body:\n response.json ??\n (typeof response.text === \"string\" ? tryParseJson(response.text) : null),\n };\n}\n\nasync function loadBatchSourceItems(\n job: ProviderCorpusJobRecord,\n batch: Required<BatchConfig>,\n): Promise<unknown[]> {\n if (batch.items.length > 0) return batch.items;\n if (!batch.inputDatasetId) return [];\n return getStagedDatasetRows({\n id: batch.inputDatasetId,\n appId: job.appId,\n ownerEmail: job.ownerEmail,\n });\n}\n\nfunction cleanRequest(request: ProviderRequest): ProviderApiRequestArgs {\n return {\n provider: request.provider,\n method: request.method as ProviderApiMethod,\n path: request.path,\n query: request.query,\n headers: request.headers,\n body: request.body,\n auth: request.auth,\n connectionId: request.connectionId,\n accountId: request.accountId,\n timeoutMs: request.timeoutMs,\n maxBytes: request.maxBytes,\n };\n}\n\nfunction buildPaginatedRequest(\n request: ProviderRequest,\n pagination: Required<PaginationConfig>,\n state: {\n pageIndex: number;\n cursor: unknown;\n pageNumber: number;\n offset: number;\n },\n): ProviderRequest {\n let query = cloneRecord(request.query);\n let body = request.body;\n if (pagination.pageParam) {\n query = { ...query, [pagination.pageParam]: state.pageNumber };\n }\n if (pagination.offsetParam) {\n query = { ...query, [pagination.offsetParam]: state.offset };\n }\n if (state.pageIndex > 0 && state.cursor != null) {\n if (pagination.cursorParam) {\n query = { ...query, [pagination.cursorParam]: state.cursor };\n }\n if (pagination.cursorBodyPath) {\n body = setAtPath(body, pagination.cursorBodyPath, state.cursor);\n }\n }\n return { ...request, query, body };\n}\n\nfunction buildBatchRequest(\n request: ProviderRequest,\n batch: Required<BatchConfig>,\n values: unknown[],\n): ProviderRequest {\n let query = cloneRecord(request.query);\n let body = request.body;\n const payload = values.length === 1 ? values[0] : values;\n if (batch.itemQueryParam) {\n query = { ...query, [batch.itemQueryParam]: payload };\n }\n if (batch.itemBodyPath) {\n body = setAtPath(body, batch.itemBodyPath, values);\n }\n return { ...request, query, body };\n}\n\nfunction searchItems(\n items: unknown[],\n search: SearchConfig,\n options: {\n baseItemIndex: number;\n maxStoredHits: number;\n pageIndex?: number;\n batchIndex?: number;\n },\n): SearchPageResult {\n const maxStoredHits = Math.max(0, options.maxStoredHits);\n const maxHitsPerItem = boundedNumber(search.maxHitsPerItem, 3, 1, 100);\n const maxFieldsPerItem = boundedNumber(\n search.maxFieldsPerItem,\n 5_000,\n 1,\n 50_000,\n );\n let matchedItems = 0;\n let totalHits = 0;\n const storedHits: SearchHit[] = [];\n\n for (let itemOffset = 0; itemOffset < items.length; itemOffset++) {\n const item = items[itemOffset];\n const fields = collectSearchStrings(\n item,\n search.textPaths,\n maxFieldsPerItem,\n );\n const identity = extractItemIdentity(item, search.idPaths);\n const metadata = extractMetadata(item, search.metadataPaths);\n let itemMatched = false;\n let storedForItem = 0;\n const itemWideTermMatch = findItemWideTermMatch(fields, search);\n\n const addHit = (field: TextField, match: MatchRecord) => {\n totalHits++;\n if (!itemMatched) {\n matchedItems++;\n itemMatched = true;\n }\n if (storedHits.length < maxStoredHits && storedForItem < maxHitsPerItem) {\n storedForItem++;\n storedHits.push({\n id: identity.id,\n idPath: identity.idPath,\n itemIndex: options.baseItemIndex + itemOffset,\n pageIndex: options.pageIndex,\n pageItemIndex:\n options.pageIndex === undefined ? undefined : itemOffset,\n batchIndex: options.batchIndex,\n batchItemIndex:\n options.batchIndex === undefined ? undefined : itemOffset,\n path: field.path,\n kind: match.kind,\n query: match.query,\n match: match.match,\n snippet: makeSnippet(field.text, match.index, search.contextChars),\n ...(Object.keys(metadata).length ? { metadata } : {}),\n });\n }\n };\n\n if (itemWideTermMatch) {\n addHit(itemWideTermMatch.field, itemWideTermMatch.match);\n }\n\n for (const field of fields) {\n const matches = findSearchMatches(field.text, search, !itemWideTermMatch);\n for (const match of matches) addHit(field, match);\n }\n }\n\n return {\n searchedItems: items.length,\n matchedItems,\n totalHits,\n storedHits,\n };\n}\n\nfunction normalizeLimits(input: LimitsConfig): Required<LimitsConfig> {\n const maxHits = input.maxHits ?? DEFAULT_MAX_HITS;\n return {\n pageBudget: input.pageBudget ?? DEFAULT_PAGE_BUDGET,\n batchBudget: input.batchBudget ?? DEFAULT_BATCH_BUDGET,\n runtimeMs: input.runtimeMs ?? DEFAULT_RUNTIME_MS,\n itemBudget: input.itemBudget ?? 200_000,\n maxHits,\n };\n}\n\nfunction normalizePagination(\n input: Record<string, unknown> | null,\n): Required<PaginationConfig> {\n const parsed = PaginationSchema.parse(input ?? {});\n return {\n itemsPath: parsed.itemsPath ?? \"\",\n nextCursorPath: parsed.nextCursorPath ?? \"\",\n cursorPath: parsed.cursorPath ?? \"\",\n cursorParam: parsed.cursorParam ?? \"\",\n cursorBodyPath: parsed.cursorBodyPath ?? \"\",\n pageParam: parsed.pageParam ?? \"\",\n startPage: parsed.startPage ?? 1,\n offsetParam: parsed.offsetParam ?? \"\",\n startOffset: parsed.startOffset ?? 0,\n pageSize: parsed.pageSize ?? 0,\n maxPages: parsed.maxPages ?? DEFAULT_OVERALL_MAX_PAGES,\n };\n}\n\nfunction normalizeBatch(\n input: Record<string, unknown> | null,\n): Required<BatchConfig> {\n const parsed = BatchSchema.parse(input ?? {});\n return {\n items: parsed.items ?? [],\n inputDatasetId: parsed.inputDatasetId ?? \"\",\n inputValuePath: parsed.inputValuePath ?? \"\",\n batchSize: parsed.batchSize ?? DEFAULT_BATCH_SIZE,\n itemBodyPath: parsed.itemBodyPath ?? \"\",\n itemQueryParam: parsed.itemQueryParam ?? \"\",\n responseItemsPath: parsed.responseItemsPath ?? \"\",\n };\n}\n\nfunction jobStatus(job: ProviderCorpusJobRecord) {\n const nextResumeAtIso = job.nextResumeAt\n ? new Date(job.nextResumeAt).toISOString()\n : null;\n return {\n job: jobSummary(job),\n coverage: {\n pagesProcessed: job.pagesProcessed,\n batchesProcessed: job.batchesProcessed,\n itemsProcessed: job.itemsProcessed,\n matchedItems: job.matchedItems,\n totalHits: job.totalHits,\n storedHits: job.storedHits,\n truncatedHits: job.totalHits > job.storedHits,\n },\n checkpoint: job.checkpoint,\n error: job.error,\n nextResumeAt: nextResumeAtIso,\n };\n}\n\nfunction jobSummary(job: ProviderCorpusJobRecord) {\n return {\n id: job.id,\n name: job.name,\n mode: job.mode,\n status: job.status,\n provider: job.provider,\n createdAt: new Date(job.createdAt).toISOString(),\n updatedAt: new Date(job.updatedAt).toISOString(),\n };\n}\n\nfunction nextAction(job: ProviderCorpusJobRecord): string {\n if (job.status === \"completed\") {\n return `Read all stored hits with operation=\"results\", jobId=\"${job.id}\".`;\n }\n if (job.status === \"quota_wait\") {\n const at = job.nextResumeAt\n ? new Date(job.nextResumeAt).toISOString()\n : \"later\";\n return `Provider quota is cooling down. Continue this job after ${at} with operation=\"continue\", jobId=\"${job.id}\".`;\n }\n if (job.status === \"paused\") {\n return `Continue this job with operation=\"continue\", jobId=\"${job.id}\" until completed or quota_wait.`;\n }\n if (job.status === \"failed\") {\n return 'Fix the request/configuration or start a new job; progress and stored hits are still inspectable with operation=\"results\".';\n }\n return `Check status with operation=\"status\", jobId=\"${job.id}\".`;\n}\n\nfunction extractItemsArray(\n body: unknown,\n itemsPath: string | undefined,\n wrapObjectFallback: boolean,\n): unknown[] {\n if (Array.isArray(body)) return body;\n if (!body || typeof body !== \"object\") return [];\n if (itemsPath) {\n const found = getAtPath(body, itemsPath);\n if (Array.isArray(found)) return found;\n if (found !== undefined && wrapObjectFallback) return [found];\n return [];\n }\n const obj = body as Record<string, unknown>;\n for (const key of [\n \"data\",\n \"results\",\n \"items\",\n \"records\",\n \"rows\",\n \"calls\",\n \"callTranscripts\",\n \"transcripts\",\n \"messages\",\n \"tickets\",\n \"issues\",\n \"deals\",\n \"events\",\n \"notes\",\n \"documents\",\n \"entries\",\n \"objects\",\n ]) {\n if (Array.isArray(obj[key])) return obj[key] as unknown[];\n }\n const arrayFields = Object.values(obj).filter(Array.isArray);\n if (arrayFields.length === 1) return arrayFields[0] as unknown[];\n return wrapObjectFallback ? [body] : [];\n}\n\nfunction hasSearchNeedle(search: SearchConfig): boolean {\n return Boolean(\n search.query ||\n search.regex ||\n search.queries?.length ||\n search.terms?.length,\n );\n}\n\nfunction readQuota(response: Record<string, unknown>) {\n const quota = response.quota as Record<string, unknown> | undefined;\n if (quota?.exhausted === true && typeof quota.retryAt === \"string\") {\n return {\n retryAt: quota.retryAt,\n retryAfterMs: numberValue(quota.retryAfterMs, 0),\n reason: String(quota.reason ?? \"quota\"),\n };\n }\n const json = response.json as Record<string, unknown> | undefined;\n if (\n json?.error === \"provider_quota_exhausted\" &&\n typeof json.retryAt === \"string\"\n ) {\n return {\n retryAt: json.retryAt,\n retryAfterMs: numberValue(json.retryAfterMs, 0),\n reason: String(json.reason ?? \"quota\"),\n };\n }\n return null;\n}\n\nfunction hitToRecord(hit: SearchHit): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(hit).filter(([, value]) => value !== undefined),\n );\n}\n\nfunction tryParseJson(text: string): unknown {\n try {\n return JSON.parse(text) as unknown;\n } catch {\n return text;\n }\n}\n\nfunction stringifyBrief(value: unknown, maxChars: number): string {\n const text = typeof value === \"string\" ? value : JSON.stringify(value);\n return text.slice(0, maxChars);\n}\n\nfunction cloneRecord(value: unknown): Record<string, unknown> {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) return {};\n return JSON.parse(JSON.stringify(value)) as Record<string, unknown>;\n}\n\nfunction valueOrNull(value: unknown): unknown | null {\n if (\n value === undefined ||\n value === null ||\n value === \"\" ||\n value === false\n ) {\n return null;\n }\n return value;\n}\n\nfunction numberValue(value: unknown, fallback: number): number {\n const parsed = Number(value);\n return Number.isFinite(parsed) ? parsed : fallback;\n}\n\nfunction parseRetryAt(retryAt: string, retryAfterMs: number): number {\n const parsed = Date.parse(retryAt);\n if (Number.isFinite(parsed)) return parsed;\n return Date.now() + Math.max(0, retryAfterMs);\n}\n\nfunction boundedNumber(\n value: unknown,\n fallback: number,\n min: number,\n max: number,\n): number {\n const parsed = Number(value);\n const finite = Number.isFinite(parsed) ? parsed : fallback;\n return Math.max(min, Math.min(max, finite));\n}\n\nfunction pathParts(path: string | undefined): string[] {\n if (!path) return [];\n return path\n .replace(/\\[(\\d+)\\]/g, \".$1\")\n .split(\".\")\n .map((part) => part.trim())\n .filter(Boolean);\n}\n\nfunction getAtPath(value: unknown, path: string | undefined): unknown {\n let current = value;\n for (const part of pathParts(path)) {\n if (current === undefined || current === null) return undefined;\n if (typeof current !== \"object\") return undefined;\n current = (current as Record<string, unknown>)[part];\n }\n return current;\n}\n\nfunction setAtPath(base: unknown, path: string, value: unknown): unknown {\n const parts = pathParts(path);\n if (!parts.length) return value;\n const root =\n base && typeof base === \"object\" && !Array.isArray(base)\n ? (JSON.parse(JSON.stringify(base)) as Record<string, unknown>)\n : {};\n let current = root;\n for (const part of parts.slice(0, -1)) {\n const existing = current[part];\n const next =\n existing && typeof existing === \"object\" && !Array.isArray(existing)\n ? { ...(existing as Record<string, unknown>) }\n : {};\n current[part] = next;\n current = next;\n }\n current[parts[parts.length - 1]!] = value;\n return root;\n}\n\ninterface TextField {\n path: string;\n text: string;\n}\n\ninterface MatchRecord {\n kind: string;\n query: string;\n index: number;\n match: string;\n}\n\nfunction collectSearchStrings(\n item: unknown,\n textPaths: string[] | undefined,\n maxFields: number,\n): TextField[] {\n const paths = (textPaths ?? []).filter((path) => path.trim());\n if (!paths.length) return collectStrings(item, \"\", [], maxFields);\n const fields: TextField[] = [];\n for (const path of paths) {\n const value = getAtPath(item, path);\n if (value !== undefined) collectStrings(value, path, fields, maxFields);\n if (fields.length >= maxFields) break;\n }\n return fields;\n}\n\nfunction collectStrings(\n value: unknown,\n basePath: string,\n out: TextField[],\n limit: number,\n): TextField[] {\n if (out.length >= limit || value === undefined || value === null) return out;\n if (\n typeof value === \"string\" ||\n typeof value === \"number\" ||\n typeof value === \"boolean\" ||\n typeof value === \"bigint\"\n ) {\n out.push({ path: basePath || \"$\", text: String(value) });\n return out;\n }\n if (Array.isArray(value)) {\n for (let i = 0; i < value.length && out.length < limit; i++) {\n collectStrings(\n value[i],\n basePath ? `${basePath}[${i}]` : `[${i}]`,\n out,\n limit,\n );\n }\n return out;\n }\n if (typeof value === \"object\") {\n for (const key of Object.keys(value as Record<string, unknown>)) {\n if (out.length >= limit) break;\n collectStrings(\n (value as Record<string, unknown>)[key],\n basePath ? `${basePath}.${key}` : key,\n out,\n limit,\n );\n }\n }\n return out;\n}\n\nconst DEFAULT_ID_PATHS = [\n \"id\",\n \"callId\",\n \"callID\",\n \"call_id\",\n \"call.id\",\n \"call.metaData.id\",\n \"metaData.id\",\n \"metadata.id\",\n \"recordId\",\n \"record_id\",\n \"objectId\",\n \"object_id\",\n \"ticketId\",\n \"ticket_id\",\n \"issueId\",\n \"issue_id\",\n \"messageId\",\n \"message_id\",\n \"conversationId\",\n \"conversation_id\",\n \"eventId\",\n \"event_id\",\n \"documentId\",\n \"document_id\",\n \"url\",\n \"webUrl\",\n \"permalink\",\n];\n\nfunction extractItemIdentity(\n item: unknown,\n idPaths: string[] | undefined,\n): { id: string | null; idPath: string | null } {\n for (const path of [...(idPaths ?? []), ...DEFAULT_ID_PATHS]) {\n const value = getAtPath(item, path);\n if (value !== undefined && value !== null && String(value) !== \"\") {\n return { id: stringifySearchValue(value), idPath: path };\n }\n }\n return { id: null, idPath: null };\n}\n\nfunction extractMetadata(\n item: unknown,\n metadataPaths: string[] | undefined,\n): Record<string, unknown> {\n const metadata: Record<string, unknown> = {};\n for (const path of metadataPaths ?? []) {\n const value = getAtPath(item, path);\n if (value !== undefined) metadata[path] = value;\n }\n return metadata;\n}\n\nfunction stringifySearchValue(value: unknown): string {\n if (typeof value === \"string\") return value;\n if (value === undefined || value === null) return \"\";\n if (\n typeof value === \"number\" ||\n typeof value === \"boolean\" ||\n typeof value === \"bigint\"\n ) {\n return String(value);\n }\n return stringifyBrief(value, 500);\n}\n\nfunction normalizedTerms(search: SearchConfig): string[] {\n const explicit = (search.terms ?? [])\n .map((term) => term.trim())\n .filter(Boolean);\n if (explicit.length) return explicit;\n if (search.matchMode === \"allTerms\" && search.query) {\n return search.query\n .split(/\\s+/)\n .map((term) => term.trim())\n .filter(Boolean);\n }\n return [];\n}\n\nfunction findItemWideTermMatch(fields: TextField[], search: SearchConfig) {\n const terms = normalizedTerms(search);\n if (!terms.length || search.matchMode === \"anyTerm\") return null;\n const caseSensitive = Boolean(search.caseSensitive);\n const termHits = terms.map((term) => {\n const needle = caseSensitive ? term : term.toLowerCase();\n for (const field of fields) {\n const haystack = caseSensitive ? field.text : field.text.toLowerCase();\n const index = haystack.indexOf(needle);\n if (index >= 0) return { term, field, index };\n }\n return { term, field: null, index: -1 };\n });\n if (termHits.some((hit) => !hit.field || hit.index < 0)) return null;\n const first = termHits\n .filter((hit): hit is { term: string; field: TextField; index: number } =>\n Boolean(hit.field),\n )\n .sort((a, b) => a.index - b.index)[0];\n if (!first) return null;\n return {\n field: first.field,\n match: {\n kind: \"allTerms\",\n query: terms.join(\" \"),\n index: first.index,\n match: first.term,\n },\n };\n}\n\nfunction findSearchMatches(\n text: string,\n search: SearchConfig,\n includeTerms: boolean,\n): MatchRecord[] {\n const source = String(text);\n const caseSensitive = Boolean(search.caseSensitive);\n const haystack = caseSensitive ? source : source.toLowerCase();\n const maxMatchesPerField = 1_000;\n const matches: MatchRecord[] = [];\n\n const addSubstring = (needle: unknown, label: string, kind: string) => {\n if (needle === undefined || needle === null) return;\n const rawNeedle = String(needle);\n if (!rawNeedle) return;\n const searchNeedle = caseSensitive ? rawNeedle : rawNeedle.toLowerCase();\n let from = 0;\n while (from <= haystack.length) {\n const index = haystack.indexOf(searchNeedle, from);\n if (index < 0) break;\n matches.push({\n kind,\n query: label,\n index,\n match: source.slice(index, index + rawNeedle.length),\n });\n from = index + Math.max(1, searchNeedle.length);\n if (matches.length >= maxMatchesPerField) break;\n }\n };\n\n if (search.regex) {\n const regex = new RegExp(\n search.regex,\n normalizeRegexFlags(search.regexFlags, caseSensitive),\n );\n let match: RegExpExecArray | null;\n while ((match = regex.exec(source)) && typeof match.index === \"number\") {\n matches.push({\n kind: \"regex\",\n query: search.regex,\n index: match.index,\n match: match[0],\n });\n if (matches.length >= maxMatchesPerField) break;\n if (match[0] === \"\") regex.lastIndex += 1;\n }\n }\n\n if (search.query) addSubstring(search.query, search.query, \"query\");\n for (const query of search.queries ?? []) addSubstring(query, query, \"query\");\n\n const terms = includeTerms ? normalizedTerms(search) : [];\n if (terms.length) {\n const hits = terms\n .map((term) => {\n const needle = caseSensitive ? term : term.toLowerCase();\n return { term, index: haystack.indexOf(needle) };\n })\n .filter((hit) => hit.index >= 0);\n const mode = search.matchMode === \"anyTerm\" ? \"anyTerm\" : \"allTerms\";\n if (\n (mode === \"allTerms\" && hits.length === terms.length) ||\n (mode === \"anyTerm\" && hits.length > 0)\n ) {\n const first = hits.sort((a, b) => a.index - b.index)[0];\n if (first) {\n matches.push({\n kind: mode,\n query: terms.join(\" \"),\n index: first.index,\n match: first.term,\n });\n }\n }\n }\n\n return matches.sort((a, b) => a.index - b.index);\n}\n\nfunction normalizeRegexFlags(\n flags: string | undefined,\n caseSensitive: boolean,\n): string {\n const allowed = (flags ?? \"\")\n .replace(/[^dgimsuvy]/g, \"\")\n .replace(/[gy]/g, \"\");\n const withCase = caseSensitive || /i/.test(allowed) ? allowed : `${allowed}i`;\n return `${withCase}g`;\n}\n\nfunction makeSnippet(\n text: string,\n index: number,\n contextChars: number | undefined,\n): string {\n const context = boundedNumber(contextChars, 180, 20, 1_000);\n const start = Math.max(0, index - context);\n const end = Math.min(text.length, index + context);\n const prefix = start > 0 ? \"...\" : \"\";\n const suffix = end < text.length ? \"...\" : \"\";\n return `${prefix}${text.slice(start, end)}${suffix}`\n .replace(/\\s+/g, \" \")\n .trim();\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"agent-chat-plugin.d.ts","sourceRoot":"","sources":["../../src/server/agent-chat-plugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-chat-plugin.d.ts","sourceRoot":"","sources":["../../src/server/agent-chat-plugin.ts"],"names":[],"mappings":"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"}
@@ -2196,17 +2196,22 @@ ${lines.join("\n")}`;
2196
2196
  }
2197
2197
  function generateCorpusToolsPrompt(registry) {
2198
2198
  const hasProviderApi = "provider-api-request" in registry;
2199
+ const hasProviderCorpusJob = "provider-corpus-job" in registry;
2199
2200
  const providerDiscoveryTools = [
2200
2201
  "provider-api-catalog" in registry ? "`provider-api-catalog`" : null,
2201
2202
  "provider-api-docs" in registry ? "`provider-api-docs`" : null,
2202
2203
  ].filter(Boolean);
2203
2204
  const hasRunCode = "run-code" in registry;
2204
2205
  const hasStagedDataset = "query-staged-dataset" in registry;
2205
- if (!hasProviderApi && !hasRunCode && !hasStagedDataset)
2206
+ if (!hasProviderApi &&
2207
+ !hasProviderCorpusJob &&
2208
+ !hasRunCode &&
2209
+ !hasStagedDataset)
2206
2210
  return "";
2207
2211
  const available = [
2208
2212
  ...providerDiscoveryTools,
2209
2213
  hasProviderApi ? "`provider-api-request`" : null,
2214
+ hasProviderCorpusJob ? "`provider-corpus-job`" : null,
2210
2215
  hasStagedDataset ? "`query-staged-dataset`" : null,
2211
2216
  hasRunCode ? "`run-code`" : null,
2212
2217
  ].filter(Boolean);
@@ -2214,7 +2219,9 @@ function generateCorpusToolsPrompt(registry) {
2214
2219
 
2215
2220
  Available corpus-capable tools: ${available.join(", ")}.
2216
2221
 
2217
- For broad provider searches, raw API access, multi-page cohorts, cross-source joins, classification/counting over records, or absence-sensitive answers, do not stop at a bounded shortcut action. Use the provider's broad API/search/list surface, fetch every relevant page or an explicit bounded cohort, stage/save large responses when needed, and reduce the corpus with staged-dataset queries or code execution. In run-code, prefer providerFetchAll() for cursor/page/offset pagination and providerRequest() when response status, headers, or truncation metadata matters. Report source, filters, row counts, pagination/truncation, failed pages, and remaining gaps.`;
2222
+ For broad provider searches, raw API access, multi-page cohorts, cross-source joins, classification/counting over records, or absence-sensitive answers, do not stop at a bounded shortcut action. Use the provider's broad API/search/list surface, fetch every relevant page or an explicit bounded cohort, stage/save large responses when needed, and reduce the corpus with durable corpus jobs, staged-dataset queries, or code execution.
2223
+
2224
+ When \`provider-corpus-job\` is available, prefer it for transcript/message/ticket/issue/document scans that may exceed one turn, need provider-side backoff, or need a defensible "not found" conclusion. Use operation="start" with mode="paginated-search" for any paginated provider endpoint, or mode="batch-search" when a prior cohort of ids/records must feed a second provider endpoint. Continue paused jobs with operation="continue" until status is completed or quota_wait, then read operation="results". In run-code, prefer providerFetchAll() for short cursor/page/offset pagination and providerRequest() when response status, headers, or truncation metadata matters. Report source, filters, row counts, pagination/truncation, failed pages, quota_wait times, and remaining gaps.`;
2218
2225
  }
2219
2226
  /**
2220
2227
  * Creates a Nitro plugin that mounts the agent chat endpoint.