aiwg
Version:
Deployment tool and support utility for AI context. Copies agents, skills, commands, rules, and behaviors into the paths each AI platform reads (Claude Code, Codex, Copilot, Cursor, Warp, OpenClaw, and 6 more) so one source of truth works across 10 platfo
238 lines • 5.58 kB
TypeScript
/**
* Type definitions for the Research Framework
*
* @module research/types
*/
/**
* Research paper metadata
*/
export interface ResearchPaper {
/** Paper identifier (DOI, arXiv ID, etc.) */
id: string;
/** Paper title */
title: string;
/** List of authors */
authors: Author[];
/** Publication year */
year: number;
/** Abstract or summary */
abstract?: string;
/** DOI if available */
doi?: string;
/** arXiv ID if available */
arxivId?: string;
/** Publication venue */
venue?: string;
/** Citation count */
citationCount?: number;
/** PDF URL if available */
pdfUrl?: string;
/** Publication type */
type?: 'journal' | 'conference' | 'preprint' | 'book' | 'thesis' | 'other';
/** Source of the data */
source: 'semantic-scholar' | 'crossref' | 'arxiv' | 'unpaywall';
/** Timestamp when data was retrieved */
retrievedAt: string;
}
/**
* Author information
*/
export interface Author {
/** Author name */
name: string;
/** Author ID (if available) */
id?: string;
/** Affiliations */
affiliations?: string[];
}
/**
* API response for Semantic Scholar
*/
export interface SemanticScholarResponse {
paperId: string;
title: string;
abstract?: string;
year?: number;
authors: Array<{
authorId?: string;
name: string;
}>;
citationCount?: number;
venue?: string;
externalIds?: {
DOI?: string;
ArXiv?: string;
};
openAccessPdf?: {
url: string;
} | null;
}
/**
* API response for CrossRef
*/
export interface CrossRefResponse {
DOI: string;
title?: string[];
abstract?: string;
author?: Array<{
given?: string;
family?: string;
affiliation?: Array<{
name: string;
}>;
}>;
published?: {
'date-parts': number[][];
};
'container-title'?: string[];
'is-referenced-by-count'?: number;
type?: string;
}
/**
* API response for arXiv
*/
export interface ArxivResponse {
id: string;
title: string;
summary: string;
authors: Array<{
name: string;
}>;
published: string;
updated: string;
doi?: string;
'journal-ref'?: string;
'pdf-url'?: string;
}
/**
* API response for Unpaywall
*/
export interface UnpaywallResponse {
doi: string;
title?: string;
year?: number;
journal_name?: string;
authors?: Array<{
given?: string;
family?: string;
}>;
best_oa_location?: {
url_for_pdf?: string;
url?: string;
} | null;
}
/**
* Cache entry structure
*/
export interface CacheEntry<T> {
/** Cached data */
data: T;
/** Timestamp when cached */
cachedAt: string;
/** TTL in seconds */
ttl: number;
/** Cache key */
key: string;
}
/**
* Rate limit configuration
*/
export interface RateLimitConfig {
/** Maximum tokens */
maxTokens: number;
/** Refill rate (tokens per second) */
refillRate: number;
/** Current tokens available */
currentTokens: number;
/** Last refill timestamp */
lastRefill: number;
}
/**
* Retry configuration
*/
export interface RetryConfig {
/** Maximum retry attempts */
maxRetries: number;
/** Initial delay in ms */
initialDelay: number;
/** Maximum delay in ms */
maxDelay: number;
/** Backoff multiplier */
backoffMultiplier: number;
}
/**
* Client configuration
*/
export interface ClientConfig {
/** Base URL for the API */
baseUrl: string;
/** Timeout in ms */
timeout: number;
/** Rate limit configuration */
rateLimit: RateLimitConfig;
/** Retry configuration */
retry: RetryConfig;
/** API key (if required) */
apiKey?: string;
/** Email for Unpaywall */
email?: string;
}
/**
* Research Framework error codes
*/
export declare enum ResearchErrorCode {
RF_100 = "RF-100: Invalid request parameters",
RF_101 = "RF-101: Missing required parameter",
RF_102 = "RF-102: Invalid API key",
RF_103 = "RF-103: Rate limit exceeded",
RF_104 = "RF-104: Request timeout",
RF_200 = "RF-200: API server error",
RF_201 = "RF-201: Service unavailable",
RF_202 = "RF-202: Gateway timeout",
RF_300 = "RF-300: Resource not found",
RF_301 = "RF-301: Invalid response format",
RF_302 = "RF-302: Missing required field",
RF_400 = "RF-400: Cache read error",
RF_401 = "RF-401: Cache write error",
RF_402 = "RF-402: Cache invalidation error",
RF_500 = "RF-500: Network error",
RF_501 = "RF-501: Connection refused",
RF_502 = "RF-502: DNS resolution failed"
}
/**
* Research Framework error
*/
export declare class ResearchError extends Error {
code: ResearchErrorCode;
cause?: Error | undefined;
constructor(code: ResearchErrorCode, message: string, cause?: Error | undefined);
}
/**
* Search options
*/
export interface SearchOptions {
/** Maximum results to return */
limit?: number;
/** Offset for pagination */
offset?: number;
/** Fields to include in response */
fields?: string[];
/** Whether to use cache */
useCache?: boolean;
}
/**
* Search result
*/
export interface SearchResult {
/** Total results found */
total: number;
/** Papers in this page */
papers: ResearchPaper[];
/** Offset used */
offset: number;
/** Limit used */
limit: number;
/** Whether more results are available */
hasMore: boolean;
}
//# sourceMappingURL=types.d.ts.map