@ctxprotocol/sdk 0.8.5 → 0.10.0

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.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/contrib/search/types.ts","../../../src/contrib/search/core.ts","../../../src/contrib/search/trace.ts","../../../src/contrib/search/validation.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["export const CONTRIBUTOR_SEARCH_METADATA_VERSION =\n \"ctx-contributor-search/v1\" as const;\nexport const CONTRIBUTOR_SEARCH_VALIDATION_VERSION =\n \"ctx-contributor-search-validation/v1\" as const;\n\nexport type ContributorSearchOutcome =\n | \"selected\"\n | \"shortlist_only\"\n | \"capability_miss\";\n\nexport type ContributorSearchConfidence = \"high\" | \"medium\" | \"low\";\n\nexport type ContributorSearchDegradedOutcomePolicy =\n | \"return_shortlist\"\n | \"allow_low_confidence_selected\";\n\nexport type ContributorSearchDegradedReasonCode =\n | \"judge_disabled\"\n | \"judge_missing\"\n | \"judge_timeout\"\n | \"judge_budget_exceeded\"\n | \"judge_invalid_output\"\n | \"judge_error\"\n | \"validator_rejected\"\n | \"ambiguous_shortlist\"\n | \"no_viable_candidates\";\n\nexport type ContributorSearchValidationCaseKind =\n | \"named_regression\"\n | \"generic_overlap\"\n | \"still_ambiguous\"\n | \"capability_miss\";\n\nexport type ContributorSearchValidatorStatus =\n | \"accepted\"\n | \"rejected\"\n | \"not_run\";\n\nexport interface SearchIntent {\n intentId: string;\n rawRequest: string;\n query: string;\n clause: string | null;\n metadata?: Record<string, unknown>;\n}\n\nexport interface SearchCandidateProvenance {\n source: string;\n query: string;\n rank: number | null;\n fetchedAt: string | null;\n metadata?: Record<string, unknown>;\n}\n\nexport interface SearchCandidate {\n candidateId: string;\n title: string;\n description?: string | null;\n rawIds?: Record<string, string>;\n rankFeatures?: Record<string, boolean | number | string | null>;\n provenance: SearchCandidateProvenance[];\n metadata?: Record<string, unknown>;\n}\n\nexport interface SearchShortlist {\n maxSize: number;\n candidates: SearchCandidate[];\n}\n\nexport interface ContributorSearchConfig {\n provider?: string | null;\n model?: string | null;\n timeoutMs?: number | null;\n budgetUsd?: string | null;\n disableJudge?: boolean;\n degradedOutcomePolicy?: ContributorSearchDegradedOutcomePolicy;\n maxShortlistSize?: number;\n}\n\nexport interface ContributorSearchResolvedConfig {\n provider: string | null;\n model: string | null;\n timeoutMs: number | null;\n budgetUsd: string | null;\n disableJudge: boolean;\n degradedOutcomePolicy: ContributorSearchDegradedOutcomePolicy;\n maxShortlistSize: number;\n}\n\nexport interface ContributorSearchJudgeUsage {\n promptTokens?: number;\n completionTokens?: number;\n totalTokens?: number;\n costUsd?: string | null;\n latencyMs?: number | null;\n}\n\nexport interface ContributorSearchJudgeInput {\n rawRequest: string;\n intents: SearchIntent[];\n shortlist: SearchShortlist;\n instructions?: string;\n policy: ContributorSearchResolvedConfig;\n}\n\nexport interface ContributorSearchJudgeContext {\n provider: string | null;\n model: string | null;\n timeoutMs: number | null;\n budgetUsd: string | null;\n traceLabel: string | null;\n}\n\nexport interface ContributorSearchJudgeResult {\n primaryCandidateId: string | null;\n relatedCandidateIds: string[];\n rejectedCandidateIds: string[];\n confidence: ContributorSearchConfidence;\n reason: string;\n usage?: ContributorSearchJudgeUsage;\n}\n\nexport interface ContributorSearchJudge {\n evaluate(\n input: ContributorSearchJudgeInput,\n context: ContributorSearchJudgeContext\n ): Promise<ContributorSearchJudgeResult>;\n}\n\nexport interface ContributorSearchDegradedOutcome {\n reasonCode: ContributorSearchDegradedReasonCode;\n message: string;\n}\n\nexport interface ContributorSearchMetadataSource {\n source: string;\n query: string;\n candidateCount: number;\n}\n\nexport interface ContributorSearchJudgeSnapshot {\n provider: string | null;\n model: string | null;\n timeoutMs: number | null;\n budgetUsd: string | null;\n disabled: boolean;\n applied: boolean;\n usage: ContributorSearchJudgeUsage | null;\n}\n\nexport interface ContributorSearchTraceSummary {\n usedDeterministicFallback: boolean;\n validatorStatus: ContributorSearchValidatorStatus;\n validatorReasonCode: string | null;\n validatorReason: string | null;\n}\n\nexport interface ContributorSearchMetadata {\n version: typeof CONTRIBUTOR_SEARCH_METADATA_VERSION;\n outcome: ContributorSearchOutcome;\n confidence: ContributorSearchConfidence;\n selectedCandidateId: string | null;\n shortlistCandidateIds: string[];\n relatedCandidateIds: string[];\n rejectedCandidateIds: string[];\n candidateCount: number;\n shortlistCount: number;\n intentQueries: string[];\n degraded: ContributorSearchDegradedOutcome | null;\n judge: ContributorSearchJudgeSnapshot;\n provenance: ContributorSearchMetadataSource[];\n trace: ContributorSearchTraceSummary;\n}\n\nexport interface ContributorSearchTraceRecord {\n toolId: string | null;\n toolName: string | null;\n timestampMs: number | null;\n searchMetadata: ContributorSearchMetadata;\n}\n\nexport interface ContributorSearchResolution {\n outcome: ContributorSearchOutcome;\n selectedCandidate: SearchCandidate | null;\n shortlist: SearchCandidate[];\n relatedCandidates: SearchCandidate[];\n rejectedCandidates: SearchCandidate[];\n confidence: ContributorSearchConfidence;\n reason: string;\n degraded: ContributorSearchDegradedOutcome | null;\n searchMetadata: ContributorSearchMetadata;\n}\n\nexport interface ContributorSearchValidationExpectation {\n outcome: ContributorSearchOutcome;\n selectedCandidateId?: string | null;\n degradedReasonCode?: ContributorSearchDegradedReasonCode | null;\n}\n\nexport interface ContributorSearchValidationArtifact {\n version: typeof CONTRIBUTOR_SEARCH_VALIDATION_VERSION;\n generatedAt: string;\n caseId: string;\n caseKind: ContributorSearchValidationCaseKind;\n rawRequest: string;\n intents: SearchIntent[];\n candidates: SearchCandidate[];\n resolution: {\n outcome: ContributorSearchOutcome;\n selectedCandidateId: string | null;\n shortlistCandidateIds: string[];\n relatedCandidateIds: string[];\n rejectedCandidateIds: string[];\n confidence: ContributorSearchConfidence;\n reason: string;\n degradedReasonCode: ContributorSearchDegradedReasonCode | null;\n };\n searchMetadata: ContributorSearchMetadata;\n expectation?: ContributorSearchValidationExpectation;\n}\n\nexport interface ResolveContributorSearchParams {\n rawRequest: string;\n intents: SearchIntent[];\n candidates: SearchCandidate[];\n judge?: ContributorSearchJudge;\n helperConfig?: ContributorSearchConfig;\n contributorConfig?: ContributorSearchConfig;\n overrides?: ContributorSearchConfig;\n instructions?: string;\n isCandidateValid?: (candidate: SearchCandidate) => boolean;\n traceLabel?: string | null;\n}\n\nexport class ContributorSearchBudgetExceededError extends Error {\n constructor(message = \"Contributor search budget exceeded\") {\n super(message);\n this.name = \"ContributorSearchBudgetExceededError\";\n }\n}\n","import {\n ContributorSearchBudgetExceededError,\n CONTRIBUTOR_SEARCH_METADATA_VERSION,\n type ContributorSearchConfig,\n type ContributorSearchConfidence,\n type ContributorSearchDegradedOutcome,\n type ContributorSearchDegradedReasonCode,\n type ContributorSearchJudge,\n type ContributorSearchJudgeContext,\n type ContributorSearchJudgeInput,\n type ContributorSearchJudgeSnapshot,\n type ContributorSearchJudgeUsage,\n type ContributorSearchMetadata,\n type ContributorSearchMetadataSource,\n type ContributorSearchResolution,\n type ContributorSearchResolvedConfig,\n type ContributorSearchTraceSummary,\n type ContributorSearchValidatorStatus,\n type ResolveContributorSearchParams,\n type SearchCandidate,\n type SearchCandidateProvenance,\n type SearchIntent,\n type SearchShortlist,\n} from \"./types.js\";\n\nconst DEFAULT_MAX_SHORTLIST_SIZE = 8;\nconst DEFAULT_DEGRADED_OUTCOME_POLICY = \"return_shortlist\";\nconst MAX_METADATA_PROVENANCE_ENTRIES = 8;\nconst MAX_METADATA_INTENT_QUERIES = 6;\nconst MAX_REASON_LENGTH = 240;\n\nclass ContributorSearchTimeoutError extends Error {\n constructor(message = \"Contributor search judge timed out\") {\n super(message);\n this.name = \"ContributorSearchTimeoutError\";\n }\n}\n\ntype JudgeValidationOutcome =\n | {\n ok: true;\n selectedCandidate: SearchCandidate | null;\n relatedCandidates: SearchCandidate[];\n rejectedCandidates: SearchCandidate[];\n }\n | {\n ok: false;\n reasonCode: \"judge_invalid_output\" | \"validator_rejected\";\n reason: string;\n };\n\nfunction normalizeString(value: string | null | undefined): string | null {\n if (typeof value !== \"string\") {\n return null;\n }\n const normalized = value.trim();\n return normalized.length > 0 ? normalized : null;\n}\n\nfunction uniqueStrings(values: readonly string[]): string[] {\n const deduped = new Set<string>();\n for (const value of values) {\n const normalized = normalizeString(value);\n if (!normalized) {\n continue;\n }\n deduped.add(normalized);\n }\n return [...deduped];\n}\n\nfunction truncateReason(reason: string): string {\n return reason.length <= MAX_REASON_LENGTH\n ? reason\n : `${reason.slice(0, MAX_REASON_LENGTH)}...`;\n}\n\nfunction candidateProvenanceKey(provenance: SearchCandidateProvenance): string {\n return [\n provenance.source,\n provenance.query,\n provenance.rank ?? \"\",\n provenance.fetchedAt ?? \"\",\n JSON.stringify(provenance.metadata ?? {}),\n ].join(\"::\");\n}\n\nfunction mergeProvenance(\n first: readonly SearchCandidateProvenance[],\n second: readonly SearchCandidateProvenance[]\n): SearchCandidateProvenance[] {\n const merged = new Map<string, SearchCandidateProvenance>();\n for (const provenance of [...first, ...second]) {\n merged.set(candidateProvenanceKey(provenance), provenance);\n }\n return [...merged.values()];\n}\n\nfunction mergeCandidates(\n first: SearchCandidate,\n second: SearchCandidate\n): SearchCandidate {\n return {\n ...first,\n description: first.description ?? second.description ?? null,\n rawIds: {\n ...(second.rawIds ?? {}),\n ...(first.rawIds ?? {}),\n },\n rankFeatures: {\n ...(second.rankFeatures ?? {}),\n ...(first.rankFeatures ?? {}),\n },\n provenance: mergeProvenance(first.provenance, second.provenance),\n metadata: {\n ...(second.metadata ?? {}),\n ...(first.metadata ?? {}),\n },\n };\n}\n\nfunction isCandidateSelectable(\n candidate: SearchCandidate,\n validateCandidate: (candidate: SearchCandidate) => boolean\n): boolean {\n return validateCandidate(candidate);\n}\n\nfunction summarizeProvenance(\n candidates: readonly SearchCandidate[]\n): ContributorSearchMetadataSource[] {\n const grouped = new Map<\n string,\n {\n source: string;\n query: string;\n candidateIds: Set<string>;\n }\n >();\n\n for (const candidate of candidates) {\n for (const provenance of candidate.provenance) {\n const key = `${provenance.source}::${provenance.query}`;\n const existing = grouped.get(key);\n if (existing) {\n existing.candidateIds.add(candidate.candidateId);\n continue;\n }\n grouped.set(key, {\n source: provenance.source,\n query: provenance.query,\n candidateIds: new Set([candidate.candidateId]),\n });\n }\n }\n\n return [...grouped.values()]\n .map((entry) => ({\n source: entry.source,\n query: entry.query,\n candidateCount: entry.candidateIds.size,\n }))\n .slice(0, MAX_METADATA_PROVENANCE_ENTRIES);\n}\n\nfunction buildJudgeSnapshot(params: {\n config: ContributorSearchResolvedConfig;\n applied: boolean;\n usage: ContributorSearchJudgeUsage | null;\n}): ContributorSearchJudgeSnapshot {\n return {\n provider: params.config.provider,\n model: params.config.model,\n timeoutMs: params.config.timeoutMs,\n budgetUsd: params.config.budgetUsd,\n disabled: params.config.disableJudge,\n applied: params.applied,\n usage: params.usage,\n };\n}\n\nfunction buildTraceSummary(params: {\n usedDeterministicFallback: boolean;\n validatorStatus: ContributorSearchValidatorStatus;\n validatorReasonCode: string | null;\n validatorReason: string | null;\n}): ContributorSearchTraceSummary {\n return {\n usedDeterministicFallback: params.usedDeterministicFallback,\n validatorStatus: params.validatorStatus,\n validatorReasonCode: params.validatorReasonCode,\n validatorReason: params.validatorReason,\n };\n}\n\nfunction buildSearchMetadata(params: {\n intents: readonly SearchIntent[];\n candidates: readonly SearchCandidate[];\n shortlist: readonly SearchCandidate[];\n selectedCandidate: SearchCandidate | null;\n relatedCandidates: readonly SearchCandidate[];\n rejectedCandidates: readonly SearchCandidate[];\n outcome: ContributorSearchResolution[\"outcome\"];\n confidence: ContributorSearchConfidence;\n degraded: ContributorSearchDegradedOutcome | null;\n judgeSnapshot: ContributorSearchJudgeSnapshot;\n trace: ContributorSearchTraceSummary;\n}): ContributorSearchMetadata {\n const intentQueries = uniqueStrings(params.intents.map((intent) => intent.query))\n .slice(0, MAX_METADATA_INTENT_QUERIES);\n\n return {\n version: CONTRIBUTOR_SEARCH_METADATA_VERSION,\n outcome: params.outcome,\n confidence: params.confidence,\n selectedCandidateId: params.selectedCandidate?.candidateId ?? null,\n shortlistCandidateIds: params.shortlist.map((candidate) => candidate.candidateId),\n relatedCandidateIds: params.relatedCandidates.map(\n (candidate) => candidate.candidateId\n ),\n rejectedCandidateIds: params.rejectedCandidates.map(\n (candidate) => candidate.candidateId\n ),\n candidateCount: params.candidates.length,\n shortlistCount: params.shortlist.length,\n intentQueries,\n degraded: params.degraded,\n judge: params.judgeSnapshot,\n provenance: summarizeProvenance(params.candidates),\n trace: params.trace,\n };\n}\n\nfunction buildResolution(params: {\n intents: readonly SearchIntent[];\n candidates: readonly SearchCandidate[];\n shortlist: readonly SearchCandidate[];\n selectedCandidate: SearchCandidate | null;\n relatedCandidates: readonly SearchCandidate[];\n rejectedCandidates: readonly SearchCandidate[];\n outcome: ContributorSearchResolution[\"outcome\"];\n confidence: ContributorSearchConfidence;\n reason: string;\n degraded: ContributorSearchDegradedOutcome | null;\n judgeSnapshot: ContributorSearchJudgeSnapshot;\n trace: ContributorSearchTraceSummary;\n}): ContributorSearchResolution {\n const searchMetadata = buildSearchMetadata({\n intents: params.intents,\n candidates: params.candidates,\n shortlist: params.shortlist,\n selectedCandidate: params.selectedCandidate,\n relatedCandidates: params.relatedCandidates,\n rejectedCandidates: params.rejectedCandidates,\n outcome: params.outcome,\n confidence: params.confidence,\n degraded: params.degraded,\n judgeSnapshot: params.judgeSnapshot,\n trace: params.trace,\n });\n\n return {\n outcome: params.outcome,\n selectedCandidate: params.selectedCandidate,\n shortlist: [...params.shortlist],\n relatedCandidates: [...params.relatedCandidates],\n rejectedCandidates: [...params.rejectedCandidates],\n confidence: params.confidence,\n reason: truncateReason(params.reason),\n degraded: params.degraded,\n searchMetadata,\n };\n}\n\nfunction dedupeCandidateIds(ids: readonly string[]): {\n ids: string[];\n hadDuplicates: boolean;\n} {\n const deduped: string[] = [];\n const seen = new Set<string>();\n let hadDuplicates = false;\n\n for (const id of ids) {\n const normalized = normalizeString(id);\n if (!normalized) {\n continue;\n }\n if (seen.has(normalized)) {\n hadDuplicates = true;\n continue;\n }\n seen.add(normalized);\n deduped.push(normalized);\n }\n\n return {\n ids: deduped,\n hadDuplicates,\n };\n}\n\nfunction validateJudgeSelection(params: {\n shortlist: readonly SearchCandidate[];\n primaryCandidateId: string | null;\n relatedCandidateIds: readonly string[];\n rejectedCandidateIds: readonly string[];\n validateCandidate: (candidate: SearchCandidate) => boolean;\n}): JudgeValidationOutcome {\n const shortlistById = new Map<string, SearchCandidate>();\n for (const candidate of params.shortlist) {\n shortlistById.set(candidate.candidateId, candidate);\n }\n\n const normalizedPrimaryCandidateId = normalizeString(params.primaryCandidateId);\n const relatedCandidateIds = dedupeCandidateIds(params.relatedCandidateIds);\n const rejectedCandidateIds = dedupeCandidateIds(params.rejectedCandidateIds);\n\n if (\n relatedCandidateIds.hadDuplicates ||\n rejectedCandidateIds.hadDuplicates\n ) {\n return {\n ok: false,\n reasonCode: \"judge_invalid_output\",\n reason: \"Judge returned duplicate candidate ids within a bucket.\",\n };\n }\n\n const referencedIds = new Set<string>();\n if (normalizedPrimaryCandidateId) {\n referencedIds.add(normalizedPrimaryCandidateId);\n }\n for (const id of [...relatedCandidateIds.ids, ...rejectedCandidateIds.ids]) {\n if (referencedIds.has(id)) {\n return {\n ok: false,\n reasonCode: \"validator_rejected\",\n reason: \"Judge referenced the same candidate across multiple buckets.\",\n };\n }\n referencedIds.add(id);\n }\n\n if (\n normalizedPrimaryCandidateId &&\n !shortlistById.has(normalizedPrimaryCandidateId)\n ) {\n return {\n ok: false,\n reasonCode: \"validator_rejected\",\n reason: \"Judge selected a candidate outside the bounded shortlist.\",\n };\n }\n\n for (const id of [...relatedCandidateIds.ids, ...rejectedCandidateIds.ids]) {\n if (!shortlistById.has(id)) {\n return {\n ok: false,\n reasonCode: \"validator_rejected\",\n reason: \"Judge referenced a candidate outside the bounded shortlist.\",\n };\n }\n }\n\n const selectedCandidate = normalizedPrimaryCandidateId\n ? shortlistById.get(normalizedPrimaryCandidateId) ?? null\n : null;\n\n if (\n selectedCandidate &&\n !isCandidateSelectable(selectedCandidate, params.validateCandidate)\n ) {\n return {\n ok: false,\n reasonCode: \"validator_rejected\",\n reason:\n \"Judge selected a candidate that failed deterministic contributor validation.\",\n };\n }\n\n return {\n ok: true,\n selectedCandidate,\n relatedCandidates: relatedCandidateIds.ids\n .map((id) => shortlistById.get(id))\n .filter((candidate): candidate is SearchCandidate => Boolean(candidate)),\n rejectedCandidates: rejectedCandidateIds.ids\n .map((id) => shortlistById.get(id))\n .filter((candidate): candidate is SearchCandidate => Boolean(candidate)),\n };\n}\n\nasync function evaluateJudge(params: {\n judge: ContributorSearchJudge;\n input: ContributorSearchJudgeInput;\n context: ContributorSearchJudgeContext;\n timeoutMs: number | null;\n}): Promise<ReturnType<ContributorSearchJudge[\"evaluate\"]>> {\n if (!params.timeoutMs || params.timeoutMs <= 0) {\n return params.judge.evaluate(params.input, params.context);\n }\n\n let timeoutId: ReturnType<typeof setTimeout> | undefined;\n try {\n return await Promise.race([\n params.judge.evaluate(params.input, params.context),\n new Promise<never>((_, reject) => {\n timeoutId = setTimeout(() => {\n reject(new ContributorSearchTimeoutError());\n }, params.timeoutMs ?? 0);\n }),\n ]);\n } finally {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n }\n}\n\nfunction buildFallbackResolution(params: {\n intents: readonly SearchIntent[];\n candidates: readonly SearchCandidate[];\n validShortlist: readonly SearchCandidate[];\n reasonCode: ContributorSearchDegradedReasonCode;\n reason: string;\n config: ContributorSearchResolvedConfig;\n judgeApplied: boolean;\n judgeUsage: ContributorSearchJudgeUsage | null;\n validatorStatus: ContributorSearchValidatorStatus;\n validatorReasonCode: string | null;\n validatorReason: string | null;\n}): ContributorSearchResolution {\n if (params.validShortlist.length === 0) {\n return buildResolution({\n intents: params.intents,\n candidates: params.candidates,\n shortlist: [],\n selectedCandidate: null,\n relatedCandidates: [],\n rejectedCandidates: [],\n outcome: \"capability_miss\",\n confidence: \"low\",\n reason: params.reason,\n degraded: {\n reasonCode: \"no_viable_candidates\",\n message: truncateReason(params.reason),\n },\n judgeSnapshot: buildJudgeSnapshot({\n config: params.config,\n applied: params.judgeApplied,\n usage: params.judgeUsage,\n }),\n trace: buildTraceSummary({\n usedDeterministicFallback: true,\n validatorStatus: params.validatorStatus,\n validatorReasonCode: params.validatorReasonCode,\n validatorReason: params.validatorReason,\n }),\n });\n }\n\n if (\n params.validShortlist.length === 1 &&\n params.config.degradedOutcomePolicy === \"allow_low_confidence_selected\"\n ) {\n return buildResolution({\n intents: params.intents,\n candidates: params.candidates,\n shortlist: params.validShortlist,\n selectedCandidate: params.validShortlist[0] ?? null,\n relatedCandidates: [],\n rejectedCandidates: [],\n outcome: \"selected\",\n confidence: \"low\",\n reason: params.reason,\n degraded: {\n reasonCode: params.reasonCode,\n message: truncateReason(params.reason),\n },\n judgeSnapshot: buildJudgeSnapshot({\n config: params.config,\n applied: params.judgeApplied,\n usage: params.judgeUsage,\n }),\n trace: buildTraceSummary({\n usedDeterministicFallback: true,\n validatorStatus: params.validatorStatus,\n validatorReasonCode: params.validatorReasonCode,\n validatorReason: params.validatorReason,\n }),\n });\n }\n\n return buildResolution({\n intents: params.intents,\n candidates: params.candidates,\n shortlist: params.validShortlist,\n selectedCandidate: null,\n relatedCandidates: [],\n rejectedCandidates: [],\n outcome: \"shortlist_only\",\n confidence: \"low\",\n reason: params.reason,\n degraded: {\n reasonCode: params.reasonCode,\n message: truncateReason(params.reason),\n },\n judgeSnapshot: buildJudgeSnapshot({\n config: params.config,\n applied: params.judgeApplied,\n usage: params.judgeUsage,\n }),\n trace: buildTraceSummary({\n usedDeterministicFallback: true,\n validatorStatus: params.validatorStatus,\n validatorReasonCode: params.validatorReasonCode,\n validatorReason: params.validatorReason,\n }),\n });\n}\n\nexport function createSearchIntent(params: {\n rawRequest: string;\n query: string;\n intentId?: string;\n clause?: string | null;\n metadata?: Record<string, unknown>;\n}): SearchIntent {\n const normalizedQuery = normalizeString(params.query) ?? params.rawRequest.trim();\n const fallbackIntentId = normalizedQuery\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\")\n .slice(0, 80);\n\n return {\n intentId: (params.intentId ?? fallbackIntentId) || \"search-intent\",\n rawRequest: params.rawRequest.trim(),\n query: normalizedQuery,\n clause: normalizeString(params.clause),\n ...(params.metadata ? { metadata: params.metadata } : {}),\n };\n}\n\nexport function dedupeSearchCandidates(\n candidates: readonly SearchCandidate[]\n): SearchCandidate[] {\n const deduped = new Map<string, SearchCandidate>();\n for (const candidate of candidates) {\n const normalizedCandidateId = normalizeString(candidate.candidateId);\n if (!normalizedCandidateId) {\n continue;\n }\n const normalizedCandidate: SearchCandidate = {\n ...candidate,\n candidateId: normalizedCandidateId,\n title: candidate.title.trim(),\n description: normalizeString(candidate.description),\n rawIds: candidate.rawIds ?? {},\n rankFeatures: candidate.rankFeatures ?? {},\n provenance: candidate.provenance ?? [],\n metadata: candidate.metadata ?? {},\n };\n const existing = deduped.get(normalizedCandidateId);\n deduped.set(\n normalizedCandidateId,\n existing\n ? mergeCandidates(existing, normalizedCandidate)\n : normalizedCandidate\n );\n }\n return [...deduped.values()];\n}\n\nexport function buildSearchShortlist(\n candidates: readonly SearchCandidate[],\n maxShortlistSize = DEFAULT_MAX_SHORTLIST_SIZE\n): SearchShortlist {\n const cappedSize = Math.max(1, Math.floor(maxShortlistSize));\n return {\n maxSize: cappedSize,\n candidates: dedupeSearchCandidates(candidates).slice(0, cappedSize),\n };\n}\n\nexport function mergeContributorSearchConfig(\n ...configs: ReadonlyArray<ContributorSearchConfig | undefined>\n): ContributorSearchResolvedConfig {\n const resolved: ContributorSearchResolvedConfig = {\n provider: null,\n model: null,\n timeoutMs: null,\n budgetUsd: null,\n disableJudge: false,\n degradedOutcomePolicy: DEFAULT_DEGRADED_OUTCOME_POLICY,\n maxShortlistSize: DEFAULT_MAX_SHORTLIST_SIZE,\n };\n\n for (const config of configs) {\n if (!config) {\n continue;\n }\n if (\"provider\" in config) {\n resolved.provider = normalizeString(config.provider);\n }\n if (\"model\" in config) {\n resolved.model = normalizeString(config.model);\n }\n if (\"timeoutMs\" in config) {\n resolved.timeoutMs =\n typeof config.timeoutMs === \"number\" && Number.isFinite(config.timeoutMs)\n ? Math.max(0, Math.floor(config.timeoutMs))\n : null;\n }\n if (\"budgetUsd\" in config) {\n resolved.budgetUsd = normalizeString(config.budgetUsd);\n }\n if (\"disableJudge\" in config && typeof config.disableJudge === \"boolean\") {\n resolved.disableJudge = config.disableJudge;\n }\n if (\n config.degradedOutcomePolicy === \"return_shortlist\" ||\n config.degradedOutcomePolicy === \"allow_low_confidence_selected\"\n ) {\n resolved.degradedOutcomePolicy = config.degradedOutcomePolicy;\n }\n if (\n typeof config.maxShortlistSize === \"number\" &&\n Number.isFinite(config.maxShortlistSize)\n ) {\n resolved.maxShortlistSize = Math.max(1, Math.floor(config.maxShortlistSize));\n }\n }\n\n return resolved;\n}\n\nexport function attachContributorSearchMetadata<T extends Record<string, unknown>>(\n data: T,\n resolution: ContributorSearchResolution\n): T & { searchMetadata: ContributorSearchMetadata } {\n return {\n ...data,\n searchMetadata: resolution.searchMetadata,\n };\n}\n\nexport async function resolveContributorSearch(\n params: ResolveContributorSearchParams\n): Promise<ContributorSearchResolution> {\n const config = mergeContributorSearchConfig(\n params.helperConfig,\n params.contributorConfig,\n params.overrides\n );\n const candidates = dedupeSearchCandidates(params.candidates);\n const shortlist = buildSearchShortlist(candidates, config.maxShortlistSize).candidates;\n const validateCandidate = params.isCandidateValid ?? (() => true);\n const validShortlist = shortlist.filter((candidate) =>\n isCandidateSelectable(candidate, validateCandidate)\n );\n const judge = params.judge;\n\n if (shortlist.length === 0) {\n return buildFallbackResolution({\n intents: params.intents,\n candidates,\n validShortlist,\n reasonCode: \"no_viable_candidates\",\n reason:\n \"No viable candidates survived deterministic gathering before judging.\",\n config,\n judgeApplied: false,\n judgeUsage: null,\n validatorStatus: \"not_run\",\n validatorReasonCode: null,\n validatorReason: null,\n });\n }\n\n if (config.disableJudge || !judge) {\n return buildFallbackResolution({\n intents: params.intents,\n candidates,\n validShortlist,\n reasonCode: !judge ? \"judge_missing\" : \"judge_disabled\",\n reason: !judge\n ? \"No contributor search judge was configured for this resolution.\"\n : \"Contributor search judge was disabled for this resolution.\",\n config,\n judgeApplied: false,\n judgeUsage: null,\n validatorStatus: \"not_run\",\n validatorReasonCode: null,\n validatorReason: null,\n });\n }\n\n const judgeInput: ContributorSearchJudgeInput = {\n rawRequest: params.rawRequest,\n intents: params.intents,\n shortlist: {\n maxSize: config.maxShortlistSize,\n candidates: shortlist,\n },\n ...(params.instructions ? { instructions: params.instructions } : {}),\n policy: config,\n };\n const judgeContext: ContributorSearchJudgeContext = {\n provider: config.provider,\n model: config.model,\n timeoutMs: config.timeoutMs,\n budgetUsd: config.budgetUsd,\n traceLabel: params.traceLabel ?? null,\n };\n\n let judgeUsage: ContributorSearchJudgeUsage | null = null;\n try {\n const judgeResult = await evaluateJudge({\n judge,\n input: judgeInput,\n context: judgeContext,\n timeoutMs: config.timeoutMs,\n });\n judgeUsage = judgeResult.usage ?? null;\n\n const validation = validateJudgeSelection({\n shortlist,\n primaryCandidateId: judgeResult.primaryCandidateId,\n relatedCandidateIds: judgeResult.relatedCandidateIds,\n rejectedCandidateIds: judgeResult.rejectedCandidateIds,\n validateCandidate,\n });\n\n if (!validation.ok) {\n return buildFallbackResolution({\n intents: params.intents,\n candidates,\n validShortlist,\n reasonCode: validation.reasonCode,\n reason: validation.reason,\n config,\n judgeApplied: true,\n judgeUsage,\n validatorStatus: \"rejected\",\n validatorReasonCode: validation.reasonCode,\n validatorReason: validation.reason,\n });\n }\n\n if (!validation.selectedCandidate) {\n return buildFallbackResolution({\n intents: params.intents,\n candidates,\n validShortlist,\n reasonCode: \"ambiguous_shortlist\",\n reason:\n normalizeString(judgeResult.reason) ??\n \"Judge declined to select a single grounded candidate.\",\n config,\n judgeApplied: true,\n judgeUsage,\n validatorStatus: \"accepted\",\n validatorReasonCode: null,\n validatorReason: null,\n });\n }\n\n return buildResolution({\n intents: params.intents,\n candidates,\n shortlist,\n selectedCandidate: validation.selectedCandidate,\n relatedCandidates: validation.relatedCandidates,\n rejectedCandidates: validation.rejectedCandidates,\n outcome: \"selected\",\n confidence: judgeResult.confidence,\n reason: normalizeString(judgeResult.reason) ?? \"Judge selected a candidate.\",\n degraded: null,\n judgeSnapshot: buildJudgeSnapshot({\n config,\n applied: true,\n usage: judgeUsage,\n }),\n trace: buildTraceSummary({\n usedDeterministicFallback: false,\n validatorStatus: \"accepted\",\n validatorReasonCode: null,\n validatorReason: null,\n }),\n });\n } catch (error) {\n const reasonCode: ContributorSearchDegradedReasonCode =\n error instanceof ContributorSearchBudgetExceededError\n ? \"judge_budget_exceeded\"\n : error instanceof ContributorSearchTimeoutError\n ? \"judge_timeout\"\n : \"judge_error\";\n const reason =\n error instanceof Error\n ? error.message\n : \"Contributor search judge failed with a non-Error value.\";\n\n return buildFallbackResolution({\n intents: params.intents,\n candidates,\n validShortlist,\n reasonCode,\n reason,\n config,\n judgeApplied: true,\n judgeUsage,\n validatorStatus: \"not_run\",\n validatorReasonCode: null,\n validatorReason: null,\n });\n }\n}\n","import type { QueryDeveloperTrace } from \"../../client/types.js\";\nimport {\n CONTRIBUTOR_SEARCH_METADATA_VERSION,\n type ContributorSearchMetadata,\n type ContributorSearchTraceRecord,\n} from \"./types.js\";\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction isStringArray(value: unknown): value is string[] {\n return (\n Array.isArray(value) &&\n value.every((item) => typeof item === \"string\")\n );\n}\n\nfunction isContributorSearchMetadata(\n value: unknown\n): value is ContributorSearchMetadata {\n if (!isRecord(value)) {\n return false;\n }\n\n return (\n value.version === CONTRIBUTOR_SEARCH_METADATA_VERSION &&\n (value.outcome === \"selected\" ||\n value.outcome === \"shortlist_only\" ||\n value.outcome === \"capability_miss\") &&\n (value.confidence === \"high\" ||\n value.confidence === \"medium\" ||\n value.confidence === \"low\") &&\n (value.selectedCandidateId === null ||\n typeof value.selectedCandidateId === \"string\") &&\n isStringArray(value.shortlistCandidateIds) &&\n isStringArray(value.relatedCandidateIds) &&\n isStringArray(value.rejectedCandidateIds) &&\n typeof value.candidateCount === \"number\" &&\n typeof value.shortlistCount === \"number\" &&\n isStringArray(value.intentQueries) &&\n isRecord(value.judge) &&\n Array.isArray(value.provenance) &&\n isRecord(value.trace)\n );\n}\n\nfunction extractMetadataFromUnknown(\n value: unknown\n): ContributorSearchMetadata | null {\n if (isContributorSearchMetadata(value)) {\n return value;\n }\n\n if (!isRecord(value)) {\n return null;\n }\n\n const nestedSearchMetadata = value.searchMetadata;\n if (isContributorSearchMetadata(nestedSearchMetadata)) {\n return nestedSearchMetadata;\n }\n\n return null;\n}\n\nfunction isContributorSearchTraceRecord(\n value: unknown\n): value is ContributorSearchTraceRecord {\n if (!isRecord(value)) {\n return false;\n }\n\n return (\n (value.toolId === null || typeof value.toolId === \"string\") &&\n (value.toolName === null || typeof value.toolName === \"string\") &&\n (value.timestampMs === null || typeof value.timestampMs === \"number\") &&\n isContributorSearchMetadata(value.searchMetadata)\n );\n}\n\nexport function extractContributorSearchMetadata(\n result: unknown\n): ContributorSearchMetadata | null {\n return extractMetadataFromUnknown(result);\n}\n\nexport function extractContributorSearchesFromDeveloperTrace(\n trace: QueryDeveloperTrace | undefined\n): ContributorSearchTraceRecord[] {\n const diagnostics = trace?.diagnostics;\n if (\n diagnostics &&\n \"contributorSearches\" in diagnostics &&\n Array.isArray(diagnostics.contributorSearches)\n ) {\n return diagnostics.contributorSearches.filter(\n isContributorSearchTraceRecord\n );\n }\n\n const extracted: ContributorSearchTraceRecord[] = [];\n for (const step of trace?.timeline ?? []) {\n const metadata = step.metadata;\n if (!isRecord(metadata)) {\n continue;\n }\n\n const directMetadata = extractMetadataFromUnknown(metadata.contributorSearch);\n const resultMetadata = extractMetadataFromUnknown(metadata.result);\n const searchMetadata = directMetadata ?? resultMetadata;\n if (!searchMetadata) {\n continue;\n }\n\n extracted.push({\n toolId: step.tool?.id ?? null,\n toolName: step.tool?.name ?? null,\n timestampMs:\n typeof step.timestampMs === \"number\" ? step.timestampMs : null,\n searchMetadata,\n });\n }\n\n return extracted;\n}\n","import {\n CONTRIBUTOR_SEARCH_VALIDATION_VERSION,\n type ContributorSearchValidationArtifact,\n type ContributorSearchValidationCaseKind,\n type ContributorSearchValidationExpectation,\n type ContributorSearchResolution,\n type SearchCandidate,\n type SearchIntent,\n} from \"./types.js\";\n\nexport function buildContributorSearchValidationArtifact(params: {\n caseId: string;\n caseKind: ContributorSearchValidationCaseKind;\n rawRequest: string;\n intents: SearchIntent[];\n candidates: SearchCandidate[];\n resolution: ContributorSearchResolution;\n expectation?: ContributorSearchValidationExpectation;\n generatedAt?: string;\n}): ContributorSearchValidationArtifact {\n return {\n version: CONTRIBUTOR_SEARCH_VALIDATION_VERSION,\n generatedAt: params.generatedAt ?? new Date().toISOString(),\n caseId: params.caseId,\n caseKind: params.caseKind,\n rawRequest: params.rawRequest,\n intents: params.intents,\n candidates: params.candidates,\n resolution: {\n outcome: params.resolution.outcome,\n selectedCandidateId:\n params.resolution.selectedCandidate?.candidateId ?? null,\n shortlistCandidateIds: params.resolution.shortlist.map(\n (candidate) => candidate.candidateId\n ),\n relatedCandidateIds: params.resolution.relatedCandidates.map(\n (candidate) => candidate.candidateId\n ),\n rejectedCandidateIds: params.resolution.rejectedCandidates.map(\n (candidate) => candidate.candidateId\n ),\n confidence: params.resolution.confidence,\n reason: params.resolution.reason,\n degradedReasonCode: params.resolution.degraded?.reasonCode ?? null,\n },\n searchMetadata: params.resolution.searchMetadata,\n ...(params.expectation ? { expectation: params.expectation } : {}),\n };\n}\n"]}
package/dist/index.cjs CHANGED
@@ -19,6 +19,14 @@ var Discovery = class {
19
19
  constructor(client) {
20
20
  this.client = client;
21
21
  }
22
+ /**
23
+ * Fetch a single marketplace tool by its unique ID.
24
+ */
25
+ async get(toolId) {
26
+ return this.client._fetch(
27
+ `/api/v1/tools/${encodeURIComponent(toolId)}`
28
+ );
29
+ }
22
30
  async search(queryOrOptions, limit) {
23
31
  const options = typeof queryOrOptions === "string" ? { query: queryOrOptions, limit } : queryOrOptions;
24
32
  const params = new URLSearchParams();
@@ -230,6 +238,47 @@ var Query = class {
230
238
  constructor(client) {
231
239
  this.client = client;
232
240
  }
241
+ normalizeResult(result) {
242
+ const candidate = result;
243
+ if (candidate.outcomeType === "clarification_required" && "clarification" in candidate && candidate.clarification) {
244
+ return candidate;
245
+ }
246
+ if (candidate.outcomeType === "capability_miss" && "capabilityMiss" in candidate && candidate.capabilityMiss) {
247
+ return candidate;
248
+ }
249
+ return {
250
+ ...candidate,
251
+ outcomeType: "answer"
252
+ };
253
+ }
254
+ buildPolicyErrorEvent(params) {
255
+ if (params.clarificationPolicy !== "error") {
256
+ return;
257
+ }
258
+ if (params.result.outcomeType === "clarification_required") {
259
+ return {
260
+ type: "error",
261
+ error: params.result.response,
262
+ code: "clarification_required",
263
+ reasonCode: "clarification_required",
264
+ outcomeType: "clarification_required",
265
+ clarification: params.result.clarification,
266
+ querySession: params.result.querySession
267
+ };
268
+ }
269
+ if (params.result.outcomeType === "capability_miss") {
270
+ return {
271
+ type: "error",
272
+ error: params.result.response,
273
+ code: "capability_miss",
274
+ reasonCode: "capability_miss",
275
+ outcomeType: "capability_miss",
276
+ capabilityMiss: params.result.capabilityMiss,
277
+ querySession: params.result.querySession
278
+ };
279
+ }
280
+ return void 0;
281
+ }
233
282
  buildSyntheticTraceFromRunResult(params) {
234
283
  const timeline = params.toolsUsed.map((tool, index) => ({
235
284
  stepType: "tool-call",
@@ -372,6 +421,7 @@ var Query = class {
372
421
  async run(options) {
373
422
  const opts = typeof options === "string" ? { query: options } : options;
374
423
  let terminalError;
424
+ let finalResult;
375
425
  for await (const event of this.stream(opts)) {
376
426
  if (event.type === "error") {
377
427
  terminalError = {
@@ -383,9 +433,12 @@ var Query = class {
383
433
  continue;
384
434
  }
385
435
  if (event.type === "done") {
386
- return event.result;
436
+ finalResult = event.result;
387
437
  }
388
438
  }
439
+ if (finalResult) {
440
+ return finalResult;
441
+ }
389
442
  if (terminalError) {
390
443
  throw new ContextError(terminalError.error, terminalError.code);
391
444
  }
@@ -437,7 +490,11 @@ var Query = class {
437
490
  body: JSON.stringify({
438
491
  query: opts.query,
439
492
  tools: opts.tools,
440
- modelId: opts.modelId,
493
+ resumeFrom: opts.resumeFrom,
494
+ forkFrom: opts.forkFrom,
495
+ clarificationPolicy: opts.clarificationPolicy,
496
+ answerModelId: opts.answerModelId,
497
+ responseShape: opts.responseShape,
441
498
  includeData: opts.includeData,
442
499
  includeDataUrl: opts.includeDataUrl,
443
500
  includeDeveloperTrace: opts.includeDeveloperTrace,
@@ -475,22 +532,31 @@ var Query = class {
475
532
  return event;
476
533
  }
477
534
  if (event.type === "done") {
535
+ const normalizedResult = this.normalizeResult(event.result);
478
536
  let mergedTrace = this.mergeDeveloperTrace(
479
537
  aggregatedTrace,
480
- event.result.developerTrace
538
+ normalizedResult.developerTrace
481
539
  );
482
540
  if (!mergedTrace && opts.includeDeveloperTrace) {
483
541
  mergedTrace = statusTimeline.length > 0 ? this.buildSyntheticTraceFromStreamStatus({
484
542
  statusTimeline,
485
- toolsUsed: event.result.toolsUsed,
486
- durationMs: event.result.durationMs
543
+ toolsUsed: normalizedResult.toolsUsed,
544
+ durationMs: normalizedResult.durationMs
487
545
  }) : this.buildSyntheticTraceFromRunResult({
488
- toolsUsed: event.result.toolsUsed,
489
- durationMs: event.result.durationMs
546
+ toolsUsed: normalizedResult.toolsUsed,
547
+ durationMs: normalizedResult.durationMs
490
548
  });
491
549
  }
492
550
  if (mergedTrace) {
493
- event.result.developerTrace = mergedTrace;
551
+ normalizedResult.developerTrace = mergedTrace;
552
+ }
553
+ event.result = normalizedResult;
554
+ const policyErrorEvent = this.buildPolicyErrorEvent({
555
+ result: normalizedResult,
556
+ clarificationPolicy: opts.clarificationPolicy
557
+ });
558
+ if (policyErrorEvent) {
559
+ return policyErrorEvent;
494
560
  }
495
561
  }
496
562
  return event;