@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.
- package/README.md +23 -9
- package/dist/client/index.cjs +74 -8
- package/dist/client/index.cjs.map +1 -1
- package/dist/client/index.d.cts +9 -635
- package/dist/client/index.d.ts +9 -635
- package/dist/client/index.js +74 -8
- package/dist/client/index.js.map +1 -1
- package/dist/contrib/search/index.cjs +703 -0
- package/dist/contrib/search/index.cjs.map +1 -0
- package/dist/contrib/search/index.d.cts +33 -0
- package/dist/contrib/search/index.d.ts +33 -0
- package/dist/contrib/search/index.js +690 -0
- package/dist/contrib/search/index.js.map +1 -0
- package/dist/index.cjs +74 -8
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +9 -1
- package/dist/index.d.ts +9 -1
- package/dist/index.js +74 -8
- package/dist/index.js.map +1 -1
- package/dist/types-Bgjq3OBR.d.cts +1071 -0
- package/dist/types-Bgjq3OBR.d.ts +1071 -0
- package/package.json +11 -1
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
538
|
+
normalizedResult.developerTrace
|
|
481
539
|
);
|
|
482
540
|
if (!mergedTrace && opts.includeDeveloperTrace) {
|
|
483
541
|
mergedTrace = statusTimeline.length > 0 ? this.buildSyntheticTraceFromStreamStatus({
|
|
484
542
|
statusTimeline,
|
|
485
|
-
toolsUsed:
|
|
486
|
-
durationMs:
|
|
543
|
+
toolsUsed: normalizedResult.toolsUsed,
|
|
544
|
+
durationMs: normalizedResult.durationMs
|
|
487
545
|
}) : this.buildSyntheticTraceFromRunResult({
|
|
488
|
-
toolsUsed:
|
|
489
|
-
durationMs:
|
|
546
|
+
toolsUsed: normalizedResult.toolsUsed,
|
|
547
|
+
durationMs: normalizedResult.durationMs
|
|
490
548
|
});
|
|
491
549
|
}
|
|
492
550
|
if (mergedTrace) {
|
|
493
|
-
|
|
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;
|