@ctxprotocol/sdk 0.9.0 → 0.11.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
@@ -3,6 +3,18 @@
3
3
  var jose = require('jose');
4
4
 
5
5
  // src/client/types.ts
6
+ var ALLOWED_TOOL_CATEGORIES = [
7
+ "Crypto & DeFi",
8
+ "Financial Markets",
9
+ "Business & Sales",
10
+ "Marketing & SEO",
11
+ "Legal & Regulatory",
12
+ "Real World",
13
+ "Developer Tools",
14
+ "Research & Academia",
15
+ "Utility",
16
+ "Other"
17
+ ];
6
18
  var ContextError = class _ContextError extends Error {
7
19
  constructor(message, code, statusCode, helpUrl) {
8
20
  super(message);
@@ -14,6 +26,57 @@ var ContextError = class _ContextError extends Error {
14
26
  }
15
27
  };
16
28
 
29
+ // src/client/resources/developer.ts
30
+ var Developer = class {
31
+ constructor(client) {
32
+ this.client = client;
33
+ }
34
+ /**
35
+ * Update a tool listing's metadata (name, description, category).
36
+ *
37
+ * Requires an API key belonging to the tool's owner.
38
+ *
39
+ * @param toolId - The UUID of the tool to update
40
+ * @param updates - Fields to update (at least one required)
41
+ * @returns The updated tool metadata
42
+ *
43
+ * @throws {ContextError} If authentication fails or the caller does not own the tool
44
+ *
45
+ * @example
46
+ * ```typescript
47
+ * const updated = await client.developer.updateTool("tool-uuid", {
48
+ * description: "Updated description with better showcase prompts",
49
+ * category: "crypto",
50
+ * });
51
+ * console.log(updated.updatedAt);
52
+ * ```
53
+ */
54
+ async updateTool(toolId, updates) {
55
+ if (!toolId) {
56
+ throw new ContextError("toolId is required");
57
+ }
58
+ if (updates.name === void 0 && updates.description === void 0 && updates.category === void 0) {
59
+ throw new ContextError(
60
+ "At least one field required: name, description, or category"
61
+ );
62
+ }
63
+ if (updates.category !== void 0 && updates.category !== null && !ALLOWED_TOOL_CATEGORIES.includes(updates.category)) {
64
+ throw new ContextError(
65
+ `category must be one of: ${ALLOWED_TOOL_CATEGORIES.join(", ")}`
66
+ );
67
+ }
68
+ const encodedToolId = encodeURIComponent(toolId);
69
+ return this.client._fetch(
70
+ `/api/v1/tools/${encodedToolId}`,
71
+ {
72
+ method: "PATCH",
73
+ body: JSON.stringify(updates)
74
+ },
75
+ { retry: false }
76
+ );
77
+ }
78
+ };
79
+
17
80
  // src/client/resources/discovery.ts
18
81
  var Discovery = class {
19
82
  constructor(client) {
@@ -238,6 +301,47 @@ var Query = class {
238
301
  constructor(client) {
239
302
  this.client = client;
240
303
  }
304
+ normalizeResult(result) {
305
+ const candidate = result;
306
+ if (candidate.outcomeType === "clarification_required" && "clarification" in candidate && candidate.clarification) {
307
+ return candidate;
308
+ }
309
+ if (candidate.outcomeType === "capability_miss" && "capabilityMiss" in candidate && candidate.capabilityMiss) {
310
+ return candidate;
311
+ }
312
+ return {
313
+ ...candidate,
314
+ outcomeType: "answer"
315
+ };
316
+ }
317
+ buildPolicyErrorEvent(params) {
318
+ if (params.clarificationPolicy !== "error") {
319
+ return;
320
+ }
321
+ if (params.result.outcomeType === "clarification_required") {
322
+ return {
323
+ type: "error",
324
+ error: params.result.response,
325
+ code: "clarification_required",
326
+ reasonCode: "clarification_required",
327
+ outcomeType: "clarification_required",
328
+ clarification: params.result.clarification,
329
+ querySession: params.result.querySession
330
+ };
331
+ }
332
+ if (params.result.outcomeType === "capability_miss") {
333
+ return {
334
+ type: "error",
335
+ error: params.result.response,
336
+ code: "capability_miss",
337
+ reasonCode: "capability_miss",
338
+ outcomeType: "capability_miss",
339
+ capabilityMiss: params.result.capabilityMiss,
340
+ querySession: params.result.querySession
341
+ };
342
+ }
343
+ return void 0;
344
+ }
241
345
  buildSyntheticTraceFromRunResult(params) {
242
346
  const timeline = params.toolsUsed.map((tool, index) => ({
243
347
  stepType: "tool-call",
@@ -380,6 +484,7 @@ var Query = class {
380
484
  async run(options) {
381
485
  const opts = typeof options === "string" ? { query: options } : options;
382
486
  let terminalError;
487
+ let finalResult;
383
488
  for await (const event of this.stream(opts)) {
384
489
  if (event.type === "error") {
385
490
  terminalError = {
@@ -391,9 +496,12 @@ var Query = class {
391
496
  continue;
392
497
  }
393
498
  if (event.type === "done") {
394
- return event.result;
499
+ finalResult = event.result;
395
500
  }
396
501
  }
502
+ if (finalResult) {
503
+ return finalResult;
504
+ }
397
505
  if (terminalError) {
398
506
  throw new ContextError(terminalError.error, terminalError.code);
399
507
  }
@@ -445,7 +553,11 @@ var Query = class {
445
553
  body: JSON.stringify({
446
554
  query: opts.query,
447
555
  tools: opts.tools,
448
- modelId: opts.modelId,
556
+ resumeFrom: opts.resumeFrom,
557
+ forkFrom: opts.forkFrom,
558
+ clarificationPolicy: opts.clarificationPolicy,
559
+ answerModelId: opts.answerModelId,
560
+ responseShape: opts.responseShape,
449
561
  includeData: opts.includeData,
450
562
  includeDataUrl: opts.includeDataUrl,
451
563
  includeDeveloperTrace: opts.includeDeveloperTrace,
@@ -483,22 +595,31 @@ var Query = class {
483
595
  return event;
484
596
  }
485
597
  if (event.type === "done") {
598
+ const normalizedResult = this.normalizeResult(event.result);
486
599
  let mergedTrace = this.mergeDeveloperTrace(
487
600
  aggregatedTrace,
488
- event.result.developerTrace
601
+ normalizedResult.developerTrace
489
602
  );
490
603
  if (!mergedTrace && opts.includeDeveloperTrace) {
491
604
  mergedTrace = statusTimeline.length > 0 ? this.buildSyntheticTraceFromStreamStatus({
492
605
  statusTimeline,
493
- toolsUsed: event.result.toolsUsed,
494
- durationMs: event.result.durationMs
606
+ toolsUsed: normalizedResult.toolsUsed,
607
+ durationMs: normalizedResult.durationMs
495
608
  }) : this.buildSyntheticTraceFromRunResult({
496
- toolsUsed: event.result.toolsUsed,
497
- durationMs: event.result.durationMs
609
+ toolsUsed: normalizedResult.toolsUsed,
610
+ durationMs: normalizedResult.durationMs
498
611
  });
499
612
  }
500
613
  if (mergedTrace) {
501
- event.result.developerTrace = mergedTrace;
614
+ normalizedResult.developerTrace = mergedTrace;
615
+ }
616
+ event.result = normalizedResult;
617
+ const policyErrorEvent = this.buildPolicyErrorEvent({
618
+ result: normalizedResult,
619
+ clarificationPolicy: opts.clarificationPolicy
620
+ });
621
+ if (policyErrorEvent) {
622
+ return policyErrorEvent;
502
623
  }
503
624
  }
504
625
  return event;
@@ -553,6 +674,10 @@ var ContextClient = class {
553
674
  requestTimeoutMs;
554
675
  streamTimeoutMs;
555
676
  _closed = false;
677
+ /**
678
+ * Developer resource for managing tool listings (contributor/developer concerns).
679
+ */
680
+ developer;
556
681
  /**
557
682
  * Discovery resource for searching tools
558
683
  */
@@ -594,6 +719,7 @@ var ContextClient = class {
594
719
  this.baseUrl = (options.baseUrl ?? DEFAULT_BASE_URL).replace(/\/$/, "");
595
720
  this.requestTimeoutMs = requestTimeoutMs;
596
721
  this.streamTimeoutMs = streamTimeoutMs;
722
+ this.developer = new Developer(this);
597
723
  this.discovery = new Discovery(this);
598
724
  this.tools = new Tools(this);
599
725
  this.query = new Query(this);
@@ -917,6 +1043,7 @@ function wrapHandshakeResponse(action) {
917
1043
  exports.CONTEXT_REQUIREMENTS_KEY = CONTEXT_REQUIREMENTS_KEY;
918
1044
  exports.ContextClient = ContextClient;
919
1045
  exports.ContextError = ContextError;
1046
+ exports.Developer = Developer;
920
1047
  exports.Discovery = Discovery;
921
1048
  exports.META_CONTEXT_REQUIREMENTS_KEY = META_CONTEXT_REQUIREMENTS_KEY;
922
1049
  exports.Query = Query;