Source identity
| Field | Recorded value |
|---|---|
| Source type | GitHub source |
| Original record | Janady13/thatstupidcomputer / packages/discovery/observe.ts |
| Date | Not specified in source |
| Repository | Janady13/thatstupidcomputer |
| Revision | 57555cde46910102dd25d6c1c1fb2c359e9655bd |
| Branch | main |
| Path or archive member | packages/discovery/observe.ts |
| Original SHA-256 | cdb273a3e9512b9dc9f442e7a7278c0960d760c9b05a3bd09d9f893dc8a89698 |
| Git blob SHA | d1112c3453e8467ae64d7deb04dcc81b2b5ece78 |
| Reading-copy SHA-256 | 195b35beee103bb9bc59684d452ec1cb2aa1680b5411c224c5d4b64609c9b5cb |
Recovered source transcript
Download complete source text ↓27 lines · 2.9 KB
Credential-bearing and unrelated personal details were removed from this reading copy. The source identity and original checksum remain recorded.
import type {ProviderId} from './registry.ts';
import {ANSWER_ADAPTERS} from './adapters.ts';
import {SITE_ORIGIN} from '../site/content.ts';
import {jsonRequest} from './http.ts';
interface Options {key:string;model:string;query:string;fetch?:typeof fetch}
/** One explicitly requested API sample, never an unattended scrape of consumer interfaces. */
export async function observeAnswer(provider:ProviderId,options:Options) {
const startedAt=new Date().toISOString(),adapter=ANSWER_ADAPTERS[provider];
const context={schema:'tsc-model-observation/v1',provider,surface:'developer-api-web-search',requestedModel:options.model,query:options.query,language:'en',locale:'not-specified',accountState:'api-key',querySetVersion:'tsc-service-questions/v1',startedAt,consumerUiResult:false};
const unavailable=(reason:string,httpStatus?:number)=>({...context,outcome:'unavailable' as const,reason,...(httpStatus?{httpStatus}:{}),finishedAt:new Date().toISOString()});
if(!adapter) return unavailable('no-supported-search-observation-api');
if(!options.key)return unavailable('credential-not-configured');
if(!/^[a-zA-Z0-9._-]{1,128}$/.test(options.model)||!options.query.trim()||options.query.length>2000) return unavailable('invalid-observation-input');
const authentication:Record<string,string>=adapter.auth==='bearer'?{authorization:`Bearer ${options.key}`} : adapter.auth==='anthropic'?{'x-api-key':[credential removed]}:{'x-goog-api-key':[credential removed]};
const result=await jsonRequest(adapter.endpoint,{method:'POST',headers:{...authentication,...adapter.headers,'content-type':'application/json'},body:JSON.stringify(adapter.build(options.model,options.query))},options.fetch);
if(result.status!=='ok')return unavailable(result.reason,result.httpStatus);
const answer=adapter.parse(result.data);
if(!answer)return unavailable('incomplete-or-unrecognized-answer',result.httpStatus);
if(!answer.searchExecuted)return unavailable('search-execution-not-observed',result.httpStatus);
const targetHost=new URL(SITE_ORIGIN).hostname;
// The HTTP and www aliases are verified canonical redirects, not unrelated sibling sites.
const cited=answer.citations.some(c=>{const url=new URL(c.url);return !url.port&&[targetHost,`www.${targetHost}`].includes(url.hostname);});
const unresolved=answer.citations.some(c=>{const url=new URL(c.url);return url.hostname==='vertexaisearch.cloud.google.com'||(url.hostname==='www.google.com'&&url.pathname==='/url');});
if(!cited&&unresolved)return {...unavailable('citation-destination-unresolved',result.httpStatus),...answer};
return {...context,outcome:cited?'observed-target-citation' as const:'completed-without-target-citation' as const,httpStatus:result.httpStatus,...answer,finishedAt:new Date().toISOString(),correctnessReview:'not-reviewed',limitations:['Single API sample, not consumer product placement or a ranking guarantee.','Citation presence does not prove answer correctness, a referral or an inquiry.']};
}