@compresr/sdk 1.5.4 → 1.6.1
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 +35 -0
- package/dist/cjs/agents/engine.d.ts +67 -0
- package/dist/cjs/agents/engine.d.ts.map +1 -1
- package/dist/cjs/agents/engine.js +262 -9
- package/dist/cjs/agents/engine.js.map +1 -1
- package/dist/cjs/agents/research/agent.d.ts +112 -0
- package/dist/cjs/agents/research/agent.d.ts.map +1 -0
- package/dist/cjs/agents/research/agent.js +342 -0
- package/dist/cjs/agents/research/agent.js.map +1 -0
- package/dist/cjs/agents/research/facade.d.ts +22 -0
- package/dist/cjs/agents/research/facade.d.ts.map +1 -0
- package/dist/cjs/agents/research/facade.js +90 -0
- package/dist/cjs/agents/research/facade.js.map +1 -0
- package/dist/cjs/agents/research/index.d.ts +16 -0
- package/dist/cjs/agents/research/index.d.ts.map +1 -0
- package/dist/cjs/agents/research/index.js +19 -0
- package/dist/cjs/agents/research/index.js.map +1 -0
- package/dist/cjs/agents/research/parser.d.ts +9 -0
- package/dist/cjs/agents/research/parser.d.ts.map +1 -0
- package/dist/cjs/agents/research/parser.js +42 -0
- package/dist/cjs/agents/research/parser.js.map +1 -0
- package/dist/cjs/agents/research/prompts.d.ts +6 -0
- package/dist/cjs/agents/research/prompts.d.ts.map +1 -0
- package/dist/cjs/agents/research/prompts.js +36 -0
- package/dist/cjs/agents/research/prompts.js.map +1 -0
- package/dist/cjs/agents/research/types.d.ts +32 -0
- package/dist/cjs/agents/research/types.d.ts.map +1 -0
- package/dist/cjs/agents/research/types.js +4 -0
- package/dist/cjs/agents/research/types.js.map +1 -0
- package/dist/cjs/clients/compression.d.ts +22 -0
- package/dist/cjs/clients/compression.d.ts.map +1 -1
- package/dist/cjs/clients/compression.js +32 -0
- package/dist/cjs/clients/compression.js.map +1 -1
- package/dist/esm/agents/engine.d.ts +67 -0
- package/dist/esm/agents/engine.d.ts.map +1 -1
- package/dist/esm/agents/engine.js +259 -8
- package/dist/esm/agents/engine.js.map +1 -1
- package/dist/esm/agents/research/agent.d.ts +112 -0
- package/dist/esm/agents/research/agent.d.ts.map +1 -0
- package/dist/esm/agents/research/agent.js +305 -0
- package/dist/esm/agents/research/agent.js.map +1 -0
- package/dist/esm/agents/research/facade.d.ts +22 -0
- package/dist/esm/agents/research/facade.d.ts.map +1 -0
- package/dist/esm/agents/research/facade.js +53 -0
- package/dist/esm/agents/research/facade.js.map +1 -0
- package/dist/esm/agents/research/index.d.ts +16 -0
- package/dist/esm/agents/research/index.d.ts.map +1 -0
- package/dist/esm/agents/research/index.js +12 -0
- package/dist/esm/agents/research/index.js.map +1 -0
- package/dist/esm/agents/research/parser.d.ts +9 -0
- package/dist/esm/agents/research/parser.d.ts.map +1 -0
- package/dist/esm/agents/research/parser.js +39 -0
- package/dist/esm/agents/research/parser.js.map +1 -0
- package/dist/esm/agents/research/prompts.d.ts +6 -0
- package/dist/esm/agents/research/prompts.d.ts.map +1 -0
- package/dist/esm/agents/research/prompts.js +33 -0
- package/dist/esm/agents/research/prompts.js.map +1 -0
- package/dist/esm/agents/research/types.d.ts +32 -0
- package/dist/esm/agents/research/types.d.ts.map +1 -0
- package/dist/esm/agents/research/types.js +3 -0
- package/dist/esm/agents/research/types.js.map +1 -0
- package/dist/esm/clients/compression.d.ts +22 -0
- package/dist/esm/clients/compression.d.ts.map +1 -1
- package/dist/esm/clients/compression.js +32 -0
- package/dist/esm/clients/compression.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../../src/agents/research/parser.ts"],"names":[],"mappings":"AAAA,qEAAqE;AAErE,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,YAAY,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CAC9C;AAcD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CA6BhE"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/** Parse the strict-format final response into structured fields. */
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.parseResearchOutput = parseResearchOutput;
|
|
5
|
+
const FIELD_PATTERNS = {
|
|
6
|
+
explanation: /^\s*explanation\s*:\s*([\s\S]+?)(?=^\s*(?:exact\s+answer|confidence|citations)\s*:|\s*$)/im,
|
|
7
|
+
answer: /^\s*exact\s+answer\s*:\s*([\s\S]+?)(?=^\s*(?:explanation|confidence|citations)\s*:|\s*$)/im,
|
|
8
|
+
confidence: /^\s*confidence\s*:\s*([\s\S]+?)(?=^\s*(?:explanation|exact\s+answer|citations)\s*:|\s*$)/im,
|
|
9
|
+
citations: /^\s*citations\s*:\s*([\s\S]+?)\s*$/im,
|
|
10
|
+
};
|
|
11
|
+
function grab(text, name) {
|
|
12
|
+
const m = FIELD_PATTERNS[name].exec(text);
|
|
13
|
+
return m ? m[1].trim() : '';
|
|
14
|
+
}
|
|
15
|
+
function parseResearchOutput(text) {
|
|
16
|
+
if (!text) {
|
|
17
|
+
return { answer: '', explanation: '', confidence: null, citationUrls: [] };
|
|
18
|
+
}
|
|
19
|
+
const answer = grab(text, 'answer');
|
|
20
|
+
const explanation = grab(text, 'explanation');
|
|
21
|
+
const confidenceRaw = grab(text, 'confidence');
|
|
22
|
+
const citationsRaw = grab(text, 'citations');
|
|
23
|
+
let confidence = null;
|
|
24
|
+
if (confidenceRaw) {
|
|
25
|
+
const m = /(\d+(?:\.\d+)?)/.exec(confidenceRaw);
|
|
26
|
+
if (m) {
|
|
27
|
+
const v = parseFloat(m[1]);
|
|
28
|
+
confidence = v > 1 ? v / 100 : v;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
const citationUrls = [];
|
|
32
|
+
if (citationsRaw) {
|
|
33
|
+
const urlRe = /https?:\/\/[^\s,;<>"')]+/g;
|
|
34
|
+
let m;
|
|
35
|
+
while ((m = urlRe.exec(citationsRaw)) !== null) {
|
|
36
|
+
if (!citationUrls.includes(m[0]))
|
|
37
|
+
citationUrls.push(m[0]);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return { answer, explanation, confidence, citationUrls };
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../../src/agents/research/parser.ts"],"names":[],"mappings":";AAAA,qEAAqE;;AAqBrE,kDA6BC;AAzCD,MAAM,cAAc,GAA2B;IAC7C,WAAW,EAAE,4FAA4F;IACzG,MAAM,EAAE,4FAA4F;IACpG,UAAU,EAAE,4FAA4F;IACxG,SAAS,EAAE,sCAAsC;CAClD,CAAC;AAEF,SAAS,IAAI,CAAC,IAAY,EAAE,IAAY;IACtC,MAAM,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1C,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AAC9B,CAAC;AAED,SAAgB,mBAAmB,CAAC,IAAY;IAC9C,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;IAC7E,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACpC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IAC9C,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IAC/C,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IAE7C,IAAI,UAAU,GAAkB,IAAI,CAAC;IACrC,IAAI,aAAa,EAAE,CAAC;QAClB,MAAM,CAAC,GAAG,iBAAiB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAChD,IAAI,CAAC,EAAE,CAAC;YACN,MAAM,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3B,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IAED,MAAM,YAAY,GAAa,EAAE,CAAC;IAClC,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,KAAK,GAAG,2BAA2B,CAAC;QAC1C,IAAI,CAAyB,CAAC;QAC9B,OAAO,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YAC/C,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAAE,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC;AAC3D,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Default system prompt — adapted from Perplexity `search_evals` (MIT,
|
|
3
|
+
* https://github.com/perplexityai/search_evals/blob/main/search_evals/agents/deep_research.py).
|
|
4
|
+
*/
|
|
5
|
+
export declare const DEFAULT_RESEARCH_SYSTEM_PROMPT = "You are a research agent. The user will ask you a specific question whose answer cannot be reliably produced from your internal weights (hallucination risk is high), and that takes several steps of web research to resolve.\n\n## Tool\nsearch_web(query: str) \u2014 Search the web with a single query. Returns titles, URLs, and snippets.\n\n## Query format\nWrite queries for a modern keyword/semantic search engine, not for an LLM:\n- Keep them focused \u2014 search is a limited budget.\n- Do not rely on quotes, brackets, or special syntax.\n- Natural language is fine; keyword strings are fine too.\n\n## Solution strategy\nYou have a hard search budget. At each step, decrement the counter and plan ahead how you will spend what is left. Ask yourself: did this SERP bring me closer to the answer? If not, and rephrasing didn't help, explicitly say you're switching hypothesis and pursue a different direction.\n\n## General web-search recommendations\n- One query at a time.\n- Cross-verify across sources before committing.\n- If sources conflict, search more to resolve the conflict.\n- Never assert a claim you don't have a source for.\n\n## Response format (mandatory)\nWhen you are done researching, end your response with exactly these fields in this order:\n\nExplanation: <your research process and the key findings from each source>\nExact Answer: <the precise final answer, or \"I don't know\" if you couldn't find it>\nConfidence: <0-100%>\nCitations: <comma-separated list of URLs you actually relied on>\n";
|
|
6
|
+
//# sourceMappingURL=prompts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../../../src/agents/research/prompts.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,8BAA8B,u/CA2B1C,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DEFAULT_RESEARCH_SYSTEM_PROMPT = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Default system prompt — adapted from Perplexity `search_evals` (MIT,
|
|
6
|
+
* https://github.com/perplexityai/search_evals/blob/main/search_evals/agents/deep_research.py).
|
|
7
|
+
*/
|
|
8
|
+
exports.DEFAULT_RESEARCH_SYSTEM_PROMPT = `You are a research agent. The user will ask you a specific question whose answer cannot be reliably produced from your internal weights (hallucination risk is high), and that takes several steps of web research to resolve.
|
|
9
|
+
|
|
10
|
+
## Tool
|
|
11
|
+
search_web(query: str) — Search the web with a single query. Returns titles, URLs, and snippets.
|
|
12
|
+
|
|
13
|
+
## Query format
|
|
14
|
+
Write queries for a modern keyword/semantic search engine, not for an LLM:
|
|
15
|
+
- Keep them focused — search is a limited budget.
|
|
16
|
+
- Do not rely on quotes, brackets, or special syntax.
|
|
17
|
+
- Natural language is fine; keyword strings are fine too.
|
|
18
|
+
|
|
19
|
+
## Solution strategy
|
|
20
|
+
You have a hard search budget. At each step, decrement the counter and plan ahead how you will spend what is left. Ask yourself: did this SERP bring me closer to the answer? If not, and rephrasing didn't help, explicitly say you're switching hypothesis and pursue a different direction.
|
|
21
|
+
|
|
22
|
+
## General web-search recommendations
|
|
23
|
+
- One query at a time.
|
|
24
|
+
- Cross-verify across sources before committing.
|
|
25
|
+
- If sources conflict, search more to resolve the conflict.
|
|
26
|
+
- Never assert a claim you don't have a source for.
|
|
27
|
+
|
|
28
|
+
## Response format (mandatory)
|
|
29
|
+
When you are done researching, end your response with exactly these fields in this order:
|
|
30
|
+
|
|
31
|
+
Explanation: <your research process and the key findings from each source>
|
|
32
|
+
Exact Answer: <the precise final answer, or "I don't know" if you couldn't find it>
|
|
33
|
+
Confidence: <0-100%>
|
|
34
|
+
Citations: <comma-separated list of URLs you actually relied on>
|
|
35
|
+
`;
|
|
36
|
+
//# sourceMappingURL=prompts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../../src/agents/research/prompts.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACU,QAAA,8BAA8B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2B7C,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/** Public types returned by `ResearchAgent.run(...)`. */
|
|
2
|
+
export interface Citation {
|
|
3
|
+
readonly url: string;
|
|
4
|
+
readonly title?: string;
|
|
5
|
+
readonly snippet?: string;
|
|
6
|
+
}
|
|
7
|
+
export type StepKind = 'search' | 'tool_result' | 'answer' | 'error';
|
|
8
|
+
export interface Step {
|
|
9
|
+
readonly type: StepKind;
|
|
10
|
+
readonly query?: string;
|
|
11
|
+
readonly text?: string;
|
|
12
|
+
readonly chars?: number;
|
|
13
|
+
readonly latencyS?: number;
|
|
14
|
+
}
|
|
15
|
+
export interface ResearchUsage {
|
|
16
|
+
readonly input_tokens: number;
|
|
17
|
+
readonly output_tokens: number;
|
|
18
|
+
readonly cache_read_tokens: number;
|
|
19
|
+
readonly cache_creation_tokens: number;
|
|
20
|
+
readonly calls: number;
|
|
21
|
+
}
|
|
22
|
+
export interface ResearchResult {
|
|
23
|
+
readonly answer: string;
|
|
24
|
+
readonly explanation: string;
|
|
25
|
+
readonly confidence: number | null;
|
|
26
|
+
readonly text: string;
|
|
27
|
+
readonly citations: ReadonlyArray<Citation>;
|
|
28
|
+
readonly trajectory: ReadonlyArray<Step>;
|
|
29
|
+
readonly usage: ResearchUsage;
|
|
30
|
+
readonly raw: unknown;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/agents/research/types.ts"],"names":[],"mappings":"AAAA,yDAAyD;AAEzD,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,aAAa,GAAG,QAAQ,GAAG,OAAO,CAAC;AAErE,MAAM,WAAW,IAAI;IACnB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;IACvC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;IAC5C,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;IACzC,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;IAC9B,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;CACvB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/agents/research/types.ts"],"names":[],"mappings":";AAAA,yDAAyD"}
|
|
@@ -4,6 +4,7 @@ import { type CompressionPolicyOptions, type NormalizedResult } from '../agents/
|
|
|
4
4
|
import type { AnthropicMessagesFacade } from '../agents/facades/anthropic.js';
|
|
5
5
|
import type { OpenAIChatFacade } from '../agents/facades/openai.js';
|
|
6
6
|
import type { NativeRunOptions } from '../agents/facades/native.js';
|
|
7
|
+
import { ResearchFacade } from '../agents/research/index.js';
|
|
7
8
|
export interface CompressOptions {
|
|
8
9
|
context: string;
|
|
9
10
|
query?: string;
|
|
@@ -41,15 +42,29 @@ export interface CompressionClientOptions extends HttpClientOptions {
|
|
|
41
42
|
llmApiKey?: string;
|
|
42
43
|
/** Optional compression policy applied to the agent's tool middleware. */
|
|
43
44
|
compression?: CompressionPolicyOptions;
|
|
45
|
+
/** Provider-aware prompt caching. Anthropic: middleware. OpenAI: prompt_cache_key
|
|
46
|
+
* + retention mapping. Gemini: no-op (implicit at API). Default: true. */
|
|
47
|
+
enablePromptCache?: boolean;
|
|
48
|
+
/** Cache TTL: "5m" or "1h". Anthropic ephemeral TTL; OpenAI maps "1h" -> "24h". */
|
|
49
|
+
promptCacheTtl?: '5m' | '1h';
|
|
50
|
+
/** Anthropic: skip caching below this conversation length. */
|
|
51
|
+
promptCacheMinMessages?: number;
|
|
52
|
+
/** OpenAI routing key — improves cache hit rate. Ignored for non-OpenAI. */
|
|
53
|
+
openaiPromptCacheKey?: string;
|
|
44
54
|
}
|
|
45
55
|
export declare class CompressionClient {
|
|
46
56
|
private readonly http;
|
|
47
57
|
private readonly llm?;
|
|
48
58
|
private readonly llmApiKey?;
|
|
49
59
|
private readonly compressionPolicy?;
|
|
60
|
+
private readonly enablePromptCache;
|
|
61
|
+
private readonly promptCacheTtl;
|
|
62
|
+
private readonly promptCacheMinMessages;
|
|
63
|
+
private readonly openaiPromptCacheKey?;
|
|
50
64
|
private engine?;
|
|
51
65
|
private anthropicFacade?;
|
|
52
66
|
private openaiFacade?;
|
|
67
|
+
private researchFacade?;
|
|
53
68
|
constructor(options: CompressionClientOptions);
|
|
54
69
|
private requireEngine;
|
|
55
70
|
/** Anthropic-shaped facade: ``client.messages.create({...})``. */
|
|
@@ -58,6 +73,13 @@ export declare class CompressionClient {
|
|
|
58
73
|
get chat(): OpenAIChatFacade;
|
|
59
74
|
/** Native facade — returns the provider-agnostic ``NormalizedResult``. */
|
|
60
75
|
run(options: NativeRunOptions): Promise<NormalizedResult>;
|
|
76
|
+
/**
|
|
77
|
+
* Research facade: ``await client.research.run("question")``.
|
|
78
|
+
*
|
|
79
|
+
* Multi-step web-research agent with per-snippet `latte_v1` compression and
|
|
80
|
+
* multi-provider prompt caching. Requires `llm=` on the client.
|
|
81
|
+
*/
|
|
82
|
+
get research(): ResearchFacade;
|
|
61
83
|
private buildRequest;
|
|
62
84
|
compress(options: CompressOptions): Promise<CompressResponse>;
|
|
63
85
|
compressStream(options: CompressOptions): AsyncGenerator<StreamChunk, void, undefined>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compression.d.ts","sourceRoot":"","sources":["../../../src/clients/compression.ts"],"names":[],"mappings":"AAYA,OAAO,EAAc,KAAK,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAKL,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,EACrB,KAAK,WAAW,EACjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAKL,KAAK,wBAAwB,EAC7B,KAAK,gBAAgB,EACtB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"compression.d.ts","sourceRoot":"","sources":["../../../src/clients/compression.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,14 +15,20 @@ const index_js_2 = require("../errors/index.js");
|
|
|
15
15
|
const client_js_1 = require("../http/client.js");
|
|
16
16
|
const index_js_3 = require("../schemas/index.js");
|
|
17
17
|
const index_js_4 = require("../agents/index.js");
|
|
18
|
+
const index_js_5 = require("../agents/research/index.js");
|
|
18
19
|
class CompressionClient {
|
|
19
20
|
http;
|
|
20
21
|
llm;
|
|
21
22
|
llmApiKey;
|
|
22
23
|
compressionPolicy;
|
|
24
|
+
enablePromptCache;
|
|
25
|
+
promptCacheTtl;
|
|
26
|
+
promptCacheMinMessages;
|
|
27
|
+
openaiPromptCacheKey;
|
|
23
28
|
engine;
|
|
24
29
|
anthropicFacade;
|
|
25
30
|
openaiFacade;
|
|
31
|
+
researchFacade;
|
|
26
32
|
constructor(options) {
|
|
27
33
|
this.http = new client_js_1.HttpClient(options);
|
|
28
34
|
if (options.llm !== undefined)
|
|
@@ -32,6 +38,12 @@ class CompressionClient {
|
|
|
32
38
|
if (options.compression !== undefined) {
|
|
33
39
|
this.compressionPolicy = options.compression;
|
|
34
40
|
}
|
|
41
|
+
this.enablePromptCache = options.enablePromptCache ?? true;
|
|
42
|
+
this.promptCacheTtl = options.promptCacheTtl ?? '5m';
|
|
43
|
+
this.promptCacheMinMessages = options.promptCacheMinMessages ?? 2;
|
|
44
|
+
if (options.openaiPromptCacheKey !== undefined) {
|
|
45
|
+
this.openaiPromptCacheKey = options.openaiPromptCacheKey;
|
|
46
|
+
}
|
|
35
47
|
}
|
|
36
48
|
requireEngine(surface) {
|
|
37
49
|
if (this.engine !== undefined)
|
|
@@ -43,7 +55,13 @@ class CompressionClient {
|
|
|
43
55
|
const engineOpts = {
|
|
44
56
|
compresrClient: this,
|
|
45
57
|
llm: this.llm,
|
|
58
|
+
enablePromptCache: this.enablePromptCache,
|
|
59
|
+
promptCacheTtl: this.promptCacheTtl,
|
|
60
|
+
promptCacheMinMessages: this.promptCacheMinMessages,
|
|
46
61
|
};
|
|
62
|
+
if (this.openaiPromptCacheKey !== undefined) {
|
|
63
|
+
engineOpts.openaiPromptCacheKey = this.openaiPromptCacheKey;
|
|
64
|
+
}
|
|
47
65
|
if (this.llmApiKey !== undefined)
|
|
48
66
|
engineOpts.llmApiKey = this.llmApiKey;
|
|
49
67
|
if (this.compressionPolicy !== undefined) {
|
|
@@ -69,6 +87,20 @@ class CompressionClient {
|
|
|
69
87
|
const engine = this.requireEngine('run');
|
|
70
88
|
return (0, index_js_4.nativeRun)(engine, options);
|
|
71
89
|
}
|
|
90
|
+
/**
|
|
91
|
+
* Research facade: ``await client.research.run("question")``.
|
|
92
|
+
*
|
|
93
|
+
* Multi-step web-research agent with per-snippet `latte_v1` compression and
|
|
94
|
+
* multi-provider prompt caching. Requires `llm=` on the client.
|
|
95
|
+
*/
|
|
96
|
+
get research() {
|
|
97
|
+
const engine = this.requireEngine('research.run');
|
|
98
|
+
// ResearchFacade takes a structural ResearchEngine; CompresrEngine has the
|
|
99
|
+
// required @internal accessors but its types are wider, so cast at the
|
|
100
|
+
// single integration point.
|
|
101
|
+
this.researchFacade ??= new index_js_5.ResearchFacade(engine);
|
|
102
|
+
return this.researchFacade;
|
|
103
|
+
}
|
|
72
104
|
buildRequest(options) {
|
|
73
105
|
try {
|
|
74
106
|
return index_js_3.CompressRequestSchema.parse({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compression.js","sourceRoot":"","sources":["../../../src/clients/compression.ts"],"names":[],"mappings":";;;AAAA;;;;;;;GAOG;AACH,6BAA+B;AAE/B,iDAAuD;AACvD,iDAAoE;AACpE,iDAAuE;AACvE,kDAQ6B;AAC7B,iDAO4B;
|
|
1
|
+
{"version":3,"file":"compression.js","sourceRoot":"","sources":["../../../src/clients/compression.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,32 @@
|
|
|
11
11
|
import type { CompressionClient } from '../clients/compression.js';
|
|
12
12
|
import { type ErrorPolicy } from '../integrations/_shared/index.js';
|
|
13
13
|
import { type NormalizedResult } from './normalized.js';
|
|
14
|
+
/**
|
|
15
|
+
* Tool names produced by ``WebSearchTool.tavily(...)`` and ``WebSearchTool.brave(...)``.
|
|
16
|
+
*
|
|
17
|
+
* When the generic-agent path (``client.messages.create`` / ``chat.completions.create``
|
|
18
|
+
* / ``client.run``) is invoked with **exactly one** tool whose ``.name`` matches one
|
|
19
|
+
* of these, the engine silently routes the call through the deep-research loop
|
|
20
|
+
* instead of the standard ``createAgent`` middleware path. The caller still
|
|
21
|
+
* receives their facade's expected response shape; only the loop semantics
|
|
22
|
+
* change (``tool_choice="none"`` on the final step, per-snippet compression
|
|
23
|
+
* against the live query, 10-step cap, manual Anthropic ``cache_control``).
|
|
24
|
+
*
|
|
25
|
+
* Detection is by name because ``WebSearchTool`` returns a LangChain
|
|
26
|
+
* ``StructuredTool`` — not a custom subclass — so ``instanceof`` would always
|
|
27
|
+
* be ``false``.
|
|
28
|
+
*/
|
|
29
|
+
export declare const WEB_SEARCH_TOOL_NAMES: ReadonlySet<string>;
|
|
30
|
+
/** True when ``tools`` is exactly one Compresr-built web-search tool. */
|
|
31
|
+
export declare function isSoloWebSearch(tools: ReadonlyArray<unknown>): boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Pull the last user-role message text out of a facade-shaped chain.
|
|
34
|
+
*
|
|
35
|
+
* Supports plain dicts (Anthropic / OpenAI style) and any object with a
|
|
36
|
+
* ``content`` field. Falls back to the first message's content when no
|
|
37
|
+
* explicit user message is found, and to ``""`` on empty input.
|
|
38
|
+
*/
|
|
39
|
+
export declare function extractLastUserText(messages: ReadonlyArray<unknown>): string;
|
|
14
40
|
/**
|
|
15
41
|
* Immutable bundle of compression knobs forwarded to the tool middleware.
|
|
16
42
|
*
|
|
@@ -44,6 +70,17 @@ export interface CompresrEngineOptions {
|
|
|
44
70
|
llm: string;
|
|
45
71
|
llmApiKey?: string;
|
|
46
72
|
policy?: CompressionPolicyOptions;
|
|
73
|
+
/** Provider-aware prompt caching. Anthropic: wires middleware. OpenAI:
|
|
74
|
+
* attaches prompt_cache_key + retention mapping. Gemini: no-op for now. */
|
|
75
|
+
enablePromptCache?: boolean;
|
|
76
|
+
/** Cache TTL: "5m" or "1h". Anthropic ephemeral TTL; OpenAI maps "1h" -> "24h"
|
|
77
|
+
* retention. Default: "5m". */
|
|
78
|
+
promptCacheTtl?: '5m' | '1h';
|
|
79
|
+
/** Anthropic: skip caching until conversation has at least this many messages. */
|
|
80
|
+
promptCacheMinMessages?: number;
|
|
81
|
+
/** OpenAI routing key — improves cache hit rate when multiple clients share a
|
|
82
|
+
* backend. Ignored for non-OpenAI providers. */
|
|
83
|
+
openaiPromptCacheKey?: string;
|
|
47
84
|
}
|
|
48
85
|
export interface RunOptions {
|
|
49
86
|
messages: ReadonlyArray<unknown>;
|
|
@@ -93,6 +130,10 @@ export declare class CompresrEngine {
|
|
|
93
130
|
private readonly llmApiKey?;
|
|
94
131
|
private readonly policy;
|
|
95
132
|
private readonly chatModels;
|
|
133
|
+
private readonly enablePromptCache;
|
|
134
|
+
private readonly promptCacheTtl;
|
|
135
|
+
private readonly promptCacheMinMessages;
|
|
136
|
+
private readonly openaiPromptCacheKey?;
|
|
96
137
|
constructor(options: CompresrEngineOptions);
|
|
97
138
|
/**
|
|
98
139
|
* Back-compat alias for ``defaultModelName`` — returns the constructor
|
|
@@ -100,8 +141,23 @@ export declare class CompresrEngine {
|
|
|
100
141
|
* provider ``llm`` spec.
|
|
101
142
|
*/
|
|
102
143
|
get modelName(): string | undefined;
|
|
144
|
+
/** @internal — used by ResearchAgent. Not part of the stable public API. */
|
|
145
|
+
_getChatModel(modelName: string): Promise<unknown>;
|
|
146
|
+
/** @internal — used by ResearchAgent. Not part of the stable public API. */
|
|
147
|
+
get _compresrClient(): CompressionClient;
|
|
148
|
+
/** @internal — used by ResearchAgent. Not part of the stable public API. */
|
|
149
|
+
_resolveModel(model?: string): string;
|
|
150
|
+
/** @internal — read by ResearchAgent for manual cache_control stamping. */
|
|
151
|
+
get _promptCacheConfig(): {
|
|
152
|
+
readonly enabled: boolean;
|
|
153
|
+
readonly ttl: '5m' | '1h';
|
|
154
|
+
readonly minMessages: number;
|
|
155
|
+
};
|
|
103
156
|
private getChatModel;
|
|
157
|
+
private openaiCacheModelKwargs;
|
|
104
158
|
private buildMiddleware;
|
|
159
|
+
/** Anthropic prompt-cache middleware when enabled. Silent no-op on older langchain. */
|
|
160
|
+
private maybeBuildCacheMiddleware;
|
|
105
161
|
private buildAgent;
|
|
106
162
|
/**
|
|
107
163
|
* Pull every option whose key lives in :data:`LLM_BIND_OPTIONS` and return a
|
|
@@ -115,6 +171,17 @@ export declare class CompresrEngine {
|
|
|
115
171
|
*/
|
|
116
172
|
private extractBindOptions;
|
|
117
173
|
run(options: RunOptions): Promise<NormalizedResult>;
|
|
174
|
+
/**
|
|
175
|
+
* Auto-route handler for solo-WebSearchTool calls.
|
|
176
|
+
*
|
|
177
|
+
* Constructs a {@link ResearchAgent}, runs its strict-output loop against
|
|
178
|
+
* the last user message, then feeds the resulting message chain back through
|
|
179
|
+
* {@link normalize} so each facade still gets its expected shape.
|
|
180
|
+
*
|
|
181
|
+
* The caller's ``system`` wins when supplied as a non-empty string; otherwise
|
|
182
|
+
* the research-agent default prompt is used.
|
|
183
|
+
*/
|
|
184
|
+
private runViaResearchLoop;
|
|
118
185
|
private normalize;
|
|
119
186
|
}
|
|
120
187
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../src/agents/engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAGnE,OAAO,EAKL,KAAK,WAAW,EACjB,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EAGL,KAAK,gBAAgB,EAEtB,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../src/agents/engine.ts"],"names":[],"mappings":"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"}
|