attocode 0.1.8 → 0.1.9
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/CHANGELOG.md +22 -0
- package/dist/src/agent.d.ts +15 -1
- package/dist/src/agent.d.ts.map +1 -1
- package/dist/src/agent.js +227 -32
- package/dist/src/agent.js.map +1 -1
- package/dist/src/defaults.d.ts +1 -1
- package/dist/src/defaults.d.ts.map +1 -1
- package/dist/src/integrations/budget-pool.d.ts +96 -0
- package/dist/src/integrations/budget-pool.d.ts.map +1 -0
- package/dist/src/integrations/budget-pool.js +145 -0
- package/dist/src/integrations/budget-pool.js.map +1 -0
- package/dist/src/integrations/context-engineering.d.ts +16 -1
- package/dist/src/integrations/context-engineering.d.ts.map +1 -1
- package/dist/src/integrations/context-engineering.js +17 -0
- package/dist/src/integrations/context-engineering.js.map +1 -1
- package/dist/src/integrations/file-cache.d.ts +90 -0
- package/dist/src/integrations/file-cache.d.ts.map +1 -0
- package/dist/src/integrations/file-cache.js +164 -0
- package/dist/src/integrations/file-cache.js.map +1 -0
- package/dist/src/integrations/index.d.ts +4 -2
- package/dist/src/integrations/index.d.ts.map +1 -1
- package/dist/src/integrations/index.js +4 -0
- package/dist/src/integrations/index.js.map +1 -1
- package/dist/src/integrations/safety.d.ts +25 -0
- package/dist/src/integrations/safety.d.ts.map +1 -1
- package/dist/src/integrations/safety.js +47 -0
- package/dist/src/integrations/safety.js.map +1 -1
- package/dist/src/providers/adapters/anthropic.d.ts +1 -1
- package/dist/src/providers/adapters/anthropic.d.ts.map +1 -1
- package/dist/src/providers/adapters/anthropic.js +15 -2
- package/dist/src/providers/adapters/anthropic.js.map +1 -1
- package/dist/src/providers/adapters/mock.d.ts +2 -2
- package/dist/src/providers/adapters/mock.d.ts.map +1 -1
- package/dist/src/providers/adapters/mock.js +2 -1
- package/dist/src/providers/adapters/mock.js.map +1 -1
- package/dist/src/providers/adapters/openai.d.ts +1 -1
- package/dist/src/providers/adapters/openai.d.ts.map +1 -1
- package/dist/src/providers/adapters/openai.js +2 -2
- package/dist/src/providers/adapters/openai.js.map +1 -1
- package/dist/src/providers/adapters/openrouter.d.ts +1 -1
- package/dist/src/providers/adapters/openrouter.d.ts.map +1 -1
- package/dist/src/providers/adapters/openrouter.js +7 -4
- package/dist/src/providers/adapters/openrouter.js.map +1 -1
- package/dist/src/providers/types.d.ts +1 -1
- package/dist/src/providers/types.d.ts.map +1 -1
- package/dist/src/tricks/kv-cache-context.d.ts +24 -0
- package/dist/src/tricks/kv-cache-context.d.ts.map +1 -1
- package/dist/src/tricks/kv-cache-context.js +68 -0
- package/dist/src/tricks/kv-cache-context.js.map +1 -1
- package/dist/src/types.d.ts +32 -1
- package/dist/src/types.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/src/defaults.d.ts
CHANGED
|
@@ -168,7 +168,7 @@ export declare const DEFAULT_PROVIDER_RESILIENCE_CONFIG: ProviderResilienceConfi
|
|
|
168
168
|
/**
|
|
169
169
|
* Build complete configuration from partial user config.
|
|
170
170
|
*/
|
|
171
|
-
export declare function buildConfig(userConfig: Partial<ProductionAgentConfig>): Required<Omit<ProductionAgentConfig, 'provider' | 'tools' | 'toolResolver' | 'mcpToolSummaries' | 'maxContextTokens' | 'blackboard' | 'budget'>> & Pick<ProductionAgentConfig, 'provider' | 'tools' | 'toolResolver' | 'mcpToolSummaries' | 'maxContextTokens' | 'blackboard' | 'budget'>;
|
|
171
|
+
export declare function buildConfig(userConfig: Partial<ProductionAgentConfig>): Required<Omit<ProductionAgentConfig, 'provider' | 'tools' | 'toolResolver' | 'mcpToolSummaries' | 'maxContextTokens' | 'blackboard' | 'fileCache' | 'budget'>> & Pick<ProductionAgentConfig, 'provider' | 'tools' | 'toolResolver' | 'mcpToolSummaries' | 'maxContextTokens' | 'blackboard' | 'fileCache' | 'budget'>;
|
|
172
172
|
export declare const DEFAULT_SYSTEM_PROMPT = "You are Attocode, a production coding agent with full access to the filesystem and development tools.\n\n## Your Capabilities\n\n**File Operations:**\n- read_file: Read file contents\n- write_file: Create or overwrite files\n- edit_file: Make targeted edits to existing files\n- list_files: List directory contents\n- glob: Find files by pattern (e.g., \"**/*.ts\")\n- grep: Search file contents with regex\n\n**Command Execution:**\n- bash: Run shell commands (git, npm, make, etc.)\n\n**Code Intelligence:**\n- Built-in subagents: researcher, coder, reviewer, architect, debugger, documenter\n- You can spawn subagents for specialized tasks\n- MCP servers may provide additional tools (check with mcp_tool_search)\n\n**Context Management:**\n- Memory system retains information across conversation\n- Checkpoints allow rollback to previous states\n- Context compaction prevents overflow on long sessions\n\n## Guidelines\n\n1. **Use your tools** - You have real filesystem access. Read files, run commands, make changes.\n2. **Batch operations** - Call multiple tools in parallel when they're independent.\n3. **Verify changes** - After editing, read the file back or run tests to confirm.\n4. **Be direct** - You can actually do things, not just explain how. Do them.\n5. **Ask if unclear** - Request clarification for ambiguous tasks.\n\n## Tool Usage Pattern\n\nWhen exploring a codebase:\n```\n1. glob(\"**/*.ts\") to find TypeScript files\n2. read_file on key files (package.json, README, main entry)\n3. grep for specific patterns\n```\n\nWhen making changes:\n```\n1. read_file to understand current state\n2. edit_file to make changes\n3. bash(\"npm run typecheck\") to verify\n```";
|
|
173
173
|
/**
|
|
174
174
|
* Check if a feature is enabled in config.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/defaults.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,aAAa,EACb,WAAW,EACX,YAAY,EACZ,cAAc,EACd,gBAAgB,EAChB,mBAAmB,EACnB,aAAa,EACb,aAAa,EACb,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAClB,qBAAqB,EACrB,aAAa,EACb,kBAAkB,EAClB,cAAc,EACd,cAAc,EACd,wBAAwB,EACxB,iBAAiB,EACjB,0BAA0B,EAC1B,qBAAqB,EACrB,8BAA8B,EAC9B,2BAA2B,EAC3B,wBAAwB,EACxB,wBAAwB,EACxB,4BAA4B,EAC5B,cAAc,EACd,wBAAwB,EACxB,qBAAqB,EACtB,MAAM,YAAY,CAAC;AAMpB;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,WAQlC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,sBAAsB,EAAE,aAIpC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,WAOlC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,qBAAqB,EAAE,YAUnC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,uBAAuB,EAAE,cAMrC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,yBAAyB,EAAE,gBAKvC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,4BAA4B,EAAE,mBAkB1C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,sBAAsB,EAAE,aAOpC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,sBAAsB,EAAE,aA8BpC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,4BAA4B,EAAE,iBAiB1C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,0BAA0B,EAAE,gBAMxC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,kBAKlC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,+BAA+B,EAAE,qBAW7C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,sBAAsB,EAAE,aAOpC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,2BAA2B,EAAE,kBAIzC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,EAAE,cAOrC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,cAKhC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,6BAA6B,EAAE,wBAK3C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,qBAAqB,EAAE,iBAKnC,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,yBAAyB,EAAE,qBAQvC,CAAC;AAMF;;;GAGG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,EAC1C,QAAQ,EAAE,CAAC,EACX,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,SAAS,GACzC,CAAC,GAAG,KAAK,CA8BX;AAED;;GAEG;AACH,eAAO,MAAM,+BAA+B,EAAE,0BAO7C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mCAAmC,EAAE,8BAMjD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gCAAgC,EAAE,2BAM9C,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,6BAA6B,EAAE,wBAM3C,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,6BAA6B,EAAE,wBAS3C,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,kCAAkC,EAAE,4BAGhD,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAQ3C,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAQjD,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,6BAA6B,QAAQ,CAAC;AAEnD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAElE;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,uBAAuB,EAAE,cAOrC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,kCAAkC,EAAE,wBAahD,CAAC;AAEF;;GAEG;AACH,wBAAgB,WAAW,CACzB,UAAU,EAAE,OAAO,CAAC,qBAAqB,CAAC,GACzC,QAAQ,CAAC,IAAI,CAAC,qBAAqB,EAAE,UAAU,GAAG,OAAO,GAAG,cAAc,GAAG,kBAAkB,GAAG,kBAAkB,GAAG,YAAY,GAAG,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,qBAAqB,EAAE,UAAU,GAAG,OAAO,GAAG,cAAc,GAAG,kBAAkB,GAAG,kBAAkB,GAAG,YAAY,GAAG,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/defaults.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared Budget Pool
|
|
3
|
+
*
|
|
4
|
+
* Enables parent-child budget sharing for multi-agent workflows.
|
|
5
|
+
* Instead of each subagent getting an independent budget (leading to 250%+ exposure),
|
|
6
|
+
* subagents draw from a shared pool that the parent allocates from its own budget.
|
|
7
|
+
*
|
|
8
|
+
* Model:
|
|
9
|
+
* Parent budget: 200K tokens
|
|
10
|
+
* Parent reserves: 50K (for synthesis after subagents complete)
|
|
11
|
+
* Subagent pool: 150K (shared among all children)
|
|
12
|
+
*
|
|
13
|
+
* Each child can draw up to `maxPerChild` tokens from the pool, but the combined
|
|
14
|
+
* consumption never exceeds the pool total. This ensures total tree cost stays
|
|
15
|
+
* bounded by the parent's budget.
|
|
16
|
+
*/
|
|
17
|
+
export interface BudgetPoolConfig {
|
|
18
|
+
/** Total tokens available in the pool */
|
|
19
|
+
totalTokens: number;
|
|
20
|
+
/** Maximum tokens any single child can consume */
|
|
21
|
+
maxPerChild: number;
|
|
22
|
+
/** Total cost cap for the pool */
|
|
23
|
+
totalCost?: number;
|
|
24
|
+
/** Maximum cost any single child can incur */
|
|
25
|
+
maxCostPerChild?: number;
|
|
26
|
+
}
|
|
27
|
+
export interface BudgetAllocation {
|
|
28
|
+
/** Unique ID for this allocation */
|
|
29
|
+
id: string;
|
|
30
|
+
/** Tokens allocated (upper bound) */
|
|
31
|
+
tokenBudget: number;
|
|
32
|
+
/** Cost allocated (upper bound) */
|
|
33
|
+
costBudget: number;
|
|
34
|
+
/** Tokens actually consumed so far */
|
|
35
|
+
tokensUsed: number;
|
|
36
|
+
/** Cost actually incurred so far */
|
|
37
|
+
costUsed: number;
|
|
38
|
+
}
|
|
39
|
+
export interface BudgetPoolStats {
|
|
40
|
+
/** Total pool capacity */
|
|
41
|
+
totalTokens: number;
|
|
42
|
+
/** Total tokens consumed across all children */
|
|
43
|
+
tokensUsed: number;
|
|
44
|
+
/** Tokens remaining in pool */
|
|
45
|
+
tokensRemaining: number;
|
|
46
|
+
/** Number of active allocations */
|
|
47
|
+
activeAllocations: number;
|
|
48
|
+
/** Utilization ratio (0-1) */
|
|
49
|
+
utilization: number;
|
|
50
|
+
}
|
|
51
|
+
export declare class SharedBudgetPool {
|
|
52
|
+
private readonly config;
|
|
53
|
+
private allocations;
|
|
54
|
+
private totalTokensUsed;
|
|
55
|
+
private totalCostUsed;
|
|
56
|
+
/** Tokens reserved by active allocations (pessimistic accounting) */
|
|
57
|
+
private totalTokensReserved;
|
|
58
|
+
private totalCostReserved;
|
|
59
|
+
constructor(config: BudgetPoolConfig);
|
|
60
|
+
/**
|
|
61
|
+
* Reserve a budget allocation for a child agent.
|
|
62
|
+
* Uses pessimistic accounting: reserved tokens count against pool capacity
|
|
63
|
+
* until actual usage is recorded via recordUsage() + release().
|
|
64
|
+
* Returns the allocation if there's enough room, or null if the pool is exhausted.
|
|
65
|
+
*/
|
|
66
|
+
reserve(childId: string): BudgetAllocation | null;
|
|
67
|
+
/**
|
|
68
|
+
* Record token consumption for a child agent.
|
|
69
|
+
* Returns false if the child has exceeded its allocation.
|
|
70
|
+
*/
|
|
71
|
+
recordUsage(childId: string, tokens: number, cost: number): boolean;
|
|
72
|
+
/**
|
|
73
|
+
* Release an allocation, adjusting reserved totals to reflect actual usage.
|
|
74
|
+
* Must be called after recordUsage() to return unused budget to the pool.
|
|
75
|
+
*/
|
|
76
|
+
release(childId: string): void;
|
|
77
|
+
/**
|
|
78
|
+
* Get remaining tokens for a specific child allocation.
|
|
79
|
+
*/
|
|
80
|
+
getRemainingForChild(childId: string): number;
|
|
81
|
+
/**
|
|
82
|
+
* Get overall pool statistics.
|
|
83
|
+
*/
|
|
84
|
+
getStats(): BudgetPoolStats;
|
|
85
|
+
/**
|
|
86
|
+
* Check if the pool has enough budget for at least one more child.
|
|
87
|
+
*/
|
|
88
|
+
hasCapacity(): boolean;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Create a budget pool from a parent's total budget.
|
|
92
|
+
* Reserves a portion for the parent's own synthesis work.
|
|
93
|
+
*/
|
|
94
|
+
export declare function createBudgetPool(parentBudgetTokens: number, parentReserveRatio?: number, // Reserve 25% for parent synthesis
|
|
95
|
+
maxPerChild?: number): SharedBudgetPool;
|
|
96
|
+
//# sourceMappingURL=budget-pool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"budget-pool.d.ts","sourceRoot":"","sources":["../../../src/integrations/budget-pool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAMH,MAAM,WAAW,gBAAgB;IAC/B,yCAAyC;IACzC,WAAW,EAAE,MAAM,CAAC;IACpB,kDAAkD;IAClD,WAAW,EAAE,MAAM,CAAC;IACpB,kCAAkC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8CAA8C;IAC9C,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,gBAAgB;IAC/B,oCAAoC;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,qCAAqC;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,mCAAmC;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,sCAAsC;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,oCAAoC;IACpC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,0BAA0B;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,gDAAgD;IAChD,UAAU,EAAE,MAAM,CAAC;IACnB,+BAA+B;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,mCAAmC;IACnC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,8BAA8B;IAC9B,WAAW,EAAE,MAAM,CAAC;CACrB;AAMD,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmB;IAC1C,OAAO,CAAC,WAAW,CAAuC;IAC1D,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,aAAa,CAAK;IAC1B,qEAAqE;IACrE,OAAO,CAAC,mBAAmB,CAAK;IAChC,OAAO,CAAC,iBAAiB,CAAK;gBAElB,MAAM,EAAE,gBAAgB;IAIpC;;;;;OAKG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI;IAsCjD;;;OAGG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO;IAcnE;;;OAGG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAU9B;;OAEG;IACH,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAM7C;;OAEG;IACH,QAAQ,IAAI,eAAe;IAa3B;;OAEG;IACH,WAAW,IAAI,OAAO;CAIvB;AAMD;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,kBAAkB,EAAE,MAAM,EAC1B,kBAAkB,GAAE,MAAa,EAAE,mCAAmC;AACtE,WAAW,GAAE,MAAe,GAC3B,gBAAgB,CAUlB"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared Budget Pool
|
|
3
|
+
*
|
|
4
|
+
* Enables parent-child budget sharing for multi-agent workflows.
|
|
5
|
+
* Instead of each subagent getting an independent budget (leading to 250%+ exposure),
|
|
6
|
+
* subagents draw from a shared pool that the parent allocates from its own budget.
|
|
7
|
+
*
|
|
8
|
+
* Model:
|
|
9
|
+
* Parent budget: 200K tokens
|
|
10
|
+
* Parent reserves: 50K (for synthesis after subagents complete)
|
|
11
|
+
* Subagent pool: 150K (shared among all children)
|
|
12
|
+
*
|
|
13
|
+
* Each child can draw up to `maxPerChild` tokens from the pool, but the combined
|
|
14
|
+
* consumption never exceeds the pool total. This ensures total tree cost stays
|
|
15
|
+
* bounded by the parent's budget.
|
|
16
|
+
*/
|
|
17
|
+
// =============================================================================
|
|
18
|
+
// SHARED BUDGET POOL
|
|
19
|
+
// =============================================================================
|
|
20
|
+
export class SharedBudgetPool {
|
|
21
|
+
config;
|
|
22
|
+
allocations = new Map();
|
|
23
|
+
totalTokensUsed = 0;
|
|
24
|
+
totalCostUsed = 0;
|
|
25
|
+
/** Tokens reserved by active allocations (pessimistic accounting) */
|
|
26
|
+
totalTokensReserved = 0;
|
|
27
|
+
totalCostReserved = 0;
|
|
28
|
+
constructor(config) {
|
|
29
|
+
this.config = config;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Reserve a budget allocation for a child agent.
|
|
33
|
+
* Uses pessimistic accounting: reserved tokens count against pool capacity
|
|
34
|
+
* until actual usage is recorded via recordUsage() + release().
|
|
35
|
+
* Returns the allocation if there's enough room, or null if the pool is exhausted.
|
|
36
|
+
*/
|
|
37
|
+
reserve(childId) {
|
|
38
|
+
// Account for both consumed AND reserved-but-not-yet-consumed tokens
|
|
39
|
+
const committed = Math.max(this.totalTokensUsed, this.totalTokensReserved);
|
|
40
|
+
const remaining = this.config.totalTokens - committed;
|
|
41
|
+
if (remaining <= 0) {
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
// Allocate up to maxPerChild or whatever remains, whichever is smaller
|
|
45
|
+
const tokenBudget = Math.min(this.config.maxPerChild, remaining);
|
|
46
|
+
const committedCost = Math.max(this.totalCostUsed, this.totalCostReserved);
|
|
47
|
+
const costRemaining = this.config.totalCost
|
|
48
|
+
? this.config.totalCost - committedCost
|
|
49
|
+
: Infinity;
|
|
50
|
+
const costBudget = Math.min(this.config.maxCostPerChild ?? Infinity, costRemaining > 0 ? costRemaining : 0);
|
|
51
|
+
if (tokenBudget <= 0 || (this.config.totalCost && costBudget <= 0)) {
|
|
52
|
+
return null;
|
|
53
|
+
}
|
|
54
|
+
const allocation = {
|
|
55
|
+
id: childId,
|
|
56
|
+
tokenBudget,
|
|
57
|
+
costBudget,
|
|
58
|
+
tokensUsed: 0,
|
|
59
|
+
costUsed: 0,
|
|
60
|
+
};
|
|
61
|
+
// Track reservation pessimistically
|
|
62
|
+
this.totalTokensReserved += tokenBudget;
|
|
63
|
+
this.totalCostReserved += costBudget;
|
|
64
|
+
this.allocations.set(childId, allocation);
|
|
65
|
+
return allocation;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Record token consumption for a child agent.
|
|
69
|
+
* Returns false if the child has exceeded its allocation.
|
|
70
|
+
*/
|
|
71
|
+
recordUsage(childId, tokens, cost) {
|
|
72
|
+
const allocation = this.allocations.get(childId);
|
|
73
|
+
if (!allocation) {
|
|
74
|
+
return false;
|
|
75
|
+
}
|
|
76
|
+
allocation.tokensUsed += tokens;
|
|
77
|
+
allocation.costUsed += cost;
|
|
78
|
+
this.totalTokensUsed += tokens;
|
|
79
|
+
this.totalCostUsed += cost;
|
|
80
|
+
return allocation.tokensUsed <= allocation.tokenBudget;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Release an allocation, adjusting reserved totals to reflect actual usage.
|
|
84
|
+
* Must be called after recordUsage() to return unused budget to the pool.
|
|
85
|
+
*/
|
|
86
|
+
release(childId) {
|
|
87
|
+
const allocation = this.allocations.get(childId);
|
|
88
|
+
if (allocation) {
|
|
89
|
+
// Release the pessimistic reservation, keeping only actual usage
|
|
90
|
+
this.totalTokensReserved -= allocation.tokenBudget;
|
|
91
|
+
this.totalCostReserved -= allocation.costBudget;
|
|
92
|
+
this.allocations.delete(childId);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Get remaining tokens for a specific child allocation.
|
|
97
|
+
*/
|
|
98
|
+
getRemainingForChild(childId) {
|
|
99
|
+
const allocation = this.allocations.get(childId);
|
|
100
|
+
if (!allocation)
|
|
101
|
+
return 0;
|
|
102
|
+
return Math.max(0, allocation.tokenBudget - allocation.tokensUsed);
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Get overall pool statistics.
|
|
106
|
+
*/
|
|
107
|
+
getStats() {
|
|
108
|
+
const committed = Math.max(this.totalTokensUsed, this.totalTokensReserved);
|
|
109
|
+
return {
|
|
110
|
+
totalTokens: this.config.totalTokens,
|
|
111
|
+
tokensUsed: this.totalTokensUsed,
|
|
112
|
+
tokensRemaining: Math.max(0, this.config.totalTokens - committed),
|
|
113
|
+
activeAllocations: this.allocations.size,
|
|
114
|
+
utilization: this.config.totalTokens > 0
|
|
115
|
+
? committed / this.config.totalTokens
|
|
116
|
+
: 0,
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Check if the pool has enough budget for at least one more child.
|
|
121
|
+
*/
|
|
122
|
+
hasCapacity() {
|
|
123
|
+
const committed = Math.max(this.totalTokensUsed, this.totalTokensReserved);
|
|
124
|
+
return (this.config.totalTokens - committed) > 10000; // Minimum 10K tokens
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
// =============================================================================
|
|
128
|
+
// FACTORY
|
|
129
|
+
// =============================================================================
|
|
130
|
+
/**
|
|
131
|
+
* Create a budget pool from a parent's total budget.
|
|
132
|
+
* Reserves a portion for the parent's own synthesis work.
|
|
133
|
+
*/
|
|
134
|
+
export function createBudgetPool(parentBudgetTokens, parentReserveRatio = 0.25, // Reserve 25% for parent synthesis
|
|
135
|
+
maxPerChild = 100000) {
|
|
136
|
+
const parentReserve = Math.floor(parentBudgetTokens * parentReserveRatio);
|
|
137
|
+
const poolTokens = parentBudgetTokens - parentReserve;
|
|
138
|
+
return new SharedBudgetPool({
|
|
139
|
+
totalTokens: poolTokens,
|
|
140
|
+
maxPerChild: Math.min(maxPerChild, poolTokens),
|
|
141
|
+
totalCost: 0.50, // Default cost cap
|
|
142
|
+
maxCostPerChild: 0.25,
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
//# sourceMappingURL=budget-pool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"budget-pool.js","sourceRoot":"","sources":["../../../src/integrations/budget-pool.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* - S: Failure Evidence Preservation - Learn from mistakes, avoid loops
|
|
12
12
|
* - T: Serialization Diversity - Prevent few-shot pattern collapse
|
|
13
13
|
*/
|
|
14
|
-
import { stableStringify, type CacheStats } from '../tricks/kv-cache-context.js';
|
|
14
|
+
import { stableStringify, type CacheStats, type CacheableContentBlock } from '../tricks/kv-cache-context.js';
|
|
15
15
|
import { calculateOptimalFrequency, type RecitationState } from '../tricks/recitation.js';
|
|
16
16
|
import { createReconstructionPrompt, type Reference } from '../tricks/reversible-compaction.js';
|
|
17
17
|
import { FailureTracker, extractInsights, type Failure, type FailurePattern } from '../tricks/failure-evidence.js';
|
|
@@ -116,6 +116,20 @@ export declare class ContextEngineeringManager {
|
|
|
116
116
|
memory?: string;
|
|
117
117
|
dynamic?: Record<string, string>;
|
|
118
118
|
}): string;
|
|
119
|
+
/**
|
|
120
|
+
* Build a cache-optimized system prompt as CacheableContent blocks.
|
|
121
|
+
* Each section gets a `cache_control: { type: 'ephemeral' }` marker
|
|
122
|
+
* so the LLM provider can use prompt caching (60-70% cost reduction).
|
|
123
|
+
*
|
|
124
|
+
* Falls back to a single text block (no cache markers) if KV-cache
|
|
125
|
+
* context is not configured.
|
|
126
|
+
*/
|
|
127
|
+
buildCacheableSystemPrompt(options: {
|
|
128
|
+
rules?: string;
|
|
129
|
+
tools?: string;
|
|
130
|
+
memory?: string;
|
|
131
|
+
dynamic?: Record<string, string>;
|
|
132
|
+
}): CacheableContentBlock[];
|
|
119
133
|
/**
|
|
120
134
|
* Serialize data with optional diversity.
|
|
121
135
|
*/
|
|
@@ -248,4 +262,5 @@ export declare function createMinimalContextEngineering(): ContextEngineeringMan
|
|
|
248
262
|
*/
|
|
249
263
|
export declare function createFullContextEngineering(staticPrefix: string): ContextEngineeringManager;
|
|
250
264
|
export { stableStringify, calculateOptimalFrequency, createReconstructionPrompt, extractInsights, };
|
|
265
|
+
export type { CacheableContentBlock } from '../tricks/kv-cache-context.js';
|
|
251
266
|
//# sourceMappingURL=context-engineering.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-engineering.d.ts","sourceRoot":"","sources":["../../../src/integrations/context-engineering.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAGL,eAAe,EAEf,KAAK,UAAU,
|
|
1
|
+
{"version":3,"file":"context-engineering.d.ts","sourceRoot":"","sources":["../../../src/integrations/context-engineering.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAGL,eAAe,EAEf,KAAK,UAAU,EACf,KAAK,qBAAqB,EAC3B,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAGL,yBAAyB,EACzB,KAAK,eAAe,EACrB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAGL,0BAA0B,EAC1B,KAAK,SAAS,EAEf,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EACL,cAAc,EAEd,eAAe,EACf,KAAK,OAAO,EACZ,KAAK,cAAc,EACpB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,sCAAsC,CAAC;AAM9C;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,mCAAmC;IACnC,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAElC,sCAAsC;IACtC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B,mCAAmC;IACnC,0BAA0B,CAAC,EAAE,OAAO,CAAC;IAErC,8BAA8B;IAC9B,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAEhC,qCAAqC;IACrC,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B,+DAA+D;IAC/D,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,wCAAwC;IACxC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B,4BAA4B;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,gCAAgC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,uDAAuD;IACvD,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,CAAC;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,0BAA0B;IAC1B,KAAK,CAAC,EAAE,UAAU,CAAC;IAEnB,iCAAiC;IACjC,oBAAoB,EAAE,MAAM,CAAC;IAE7B,2CAA2C;IAC3C,mBAAmB,EAAE,MAAM,CAAC;IAE5B,uBAAuB;IACvB,eAAe,EAAE,MAAM,CAAC;IAExB,0BAA0B;IAC1B,kBAAkB,EAAE,MAAM,CAAC;IAE3B,gCAAgC;IAChC,gBAAgB,EAAE,MAAM,CAAC;IAEzB,oCAAoC;IACpC,SAAS,CAAC,EAAE,cAAc,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAC/B;IAAE,IAAI,EAAE,qBAAqB,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAClD;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GAC9C;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,OAAO,EAAE,cAAc,CAAA;CAAE,GACpD;IAAE,IAAI,EAAE,sBAAsB,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GACpD;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAE/C,MAAM,MAAM,+BAA+B,GAAG,CAAC,KAAK,EAAE,uBAAuB,KAAK,IAAI,CAAC;AAMvF;;GAEG;AACH,qBAAa,yBAAyB;IACpC,OAAO,CAAC,MAAM,CAAqC;IAGnD,OAAO,CAAC,YAAY,CAAC,CAAoB;IACzC,OAAO,CAAC,UAAU,CAAC,CAAoB;IACvC,OAAO,CAAC,SAAS,CAAC,CAAsB;IACxC,OAAO,CAAC,cAAc,CAAC,CAAiB;IACxC,OAAO,CAAC,UAAU,CAAC,CAAoB;IAGvC,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,oBAAoB,CAAK;IACjC,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,SAAS,CAAyC;gBAE9C,MAAM,GAAE,wBAA6B;IAiBjD;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAsD7B;;OAEG;IACH,iBAAiB,CAAC,OAAO,EAAE;QACzB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAClC,GAAG,MAAM;IA0BV;;;;;;;OAOG;IACH,0BAA0B,CAAC,OAAO,EAAE;QAClC,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAClC,GAAG,qBAAqB,EAAE;IAW3B;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM;IAQhC;;OAEG;IACH,gBAAgB,CACd,QAAQ,EAAE,cAAc,EAAE,EAC1B,KAAK,EAAE,IAAI,CAAC,eAAe,EAAE,WAAW,CAAC,GACxC,cAAc,EAAE;IAwBnB;;OAEG;IACH,yBAAyB,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI;IAOtD;;OAEG;IACG,OAAO,CACX,QAAQ,EAAE,cAAc,EAAE,EAC1B,SAAS,EAAE,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,OAAO,CAAC,MAAM,CAAC,GACrD,OAAO,CAAC;QACT,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,SAAS,EAAE,CAAC;QACxB,oBAAoB,EAAE,MAAM,CAAC;KAC9B,CAAC;IAyBF;;OAEG;IACH,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE;IAI5C;;OAEG;IACH,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE;IAI9C;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE;QACnB,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC/B,KAAK,EAAE,MAAM,GAAG,KAAK,CAAC;QACtB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,GAAG,IAAI;IAelB;;OAEG;IACH,iBAAiB,CAAC,WAAW,GAAE,MAAW,GAAG,MAAM;IAInD;;OAEG;IACH,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAIzC;;OAEG;IACH,kBAAkB,IAAI,MAAM,EAAE;IAK9B;;OAEG;IACH,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAI1C;;;OAGG;IACH,iBAAiB,IAAI,cAAc,GAAG,SAAS;IAI/C;;OAEG;IACH,QAAQ,IAAI,uBAAuB;IAgBnC;;OAEG;IACH,YAAY,IAAI,MAAM;IAItB;;OAEG;IACH,cAAc,IAAI,IAAI;IAKtB;;OAEG;IACH,KAAK,IAAI,IAAI;IAWb;;OAEG;IACH,EAAE,CAAC,QAAQ,EAAE,+BAA+B,GAAG,MAAM,IAAI;IAQzD,OAAO,CAAC,IAAI;CASb;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,GAAE,wBAA6B,GACpC,yBAAyB,CAE3B;AAED;;GAEG;AACH,wBAAgB,+BAA+B,IAAI,yBAAyB,CAQ3E;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAC1C,YAAY,EAAE,MAAM,GACnB,yBAAyB,CAa3B;AAMD,OAAO,EAEL,eAAe,EACf,yBAAyB,EACzB,0BAA0B,EAC1B,eAAe,GAChB,CAAC;AAGF,YAAY,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC"}
|
|
@@ -130,6 +130,23 @@ export class ContextEngineeringManager {
|
|
|
130
130
|
}
|
|
131
131
|
return systemPrompt;
|
|
132
132
|
}
|
|
133
|
+
/**
|
|
134
|
+
* Build a cache-optimized system prompt as CacheableContent blocks.
|
|
135
|
+
* Each section gets a `cache_control: { type: 'ephemeral' }` marker
|
|
136
|
+
* so the LLM provider can use prompt caching (60-70% cost reduction).
|
|
137
|
+
*
|
|
138
|
+
* Falls back to a single text block (no cache markers) if KV-cache
|
|
139
|
+
* context is not configured.
|
|
140
|
+
*/
|
|
141
|
+
buildCacheableSystemPrompt(options) {
|
|
142
|
+
if (!this.cacheContext) {
|
|
143
|
+
// No KV-cache context configured — return empty array to signal
|
|
144
|
+
// "no caching available". The caller (agent.ts) will fall back to
|
|
145
|
+
// a plain string system message instead of sending unmarked blocks.
|
|
146
|
+
return [];
|
|
147
|
+
}
|
|
148
|
+
return this.cacheContext.buildCacheableSystemPrompt(options);
|
|
149
|
+
}
|
|
133
150
|
/**
|
|
134
151
|
* Serialize data with optional diversity.
|
|
135
152
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-engineering.js","sourceRoot":"","sources":["../../../src/integrations/context-engineering.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAEL,uBAAuB,EACvB,eAAe,EACf,sBAAsB,
|
|
1
|
+
{"version":3,"file":"context-engineering.js","sourceRoot":"","sources":["../../../src/integrations/context-engineering.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared File Cache
|
|
3
|
+
*
|
|
4
|
+
* Provides an in-memory LRU file cache shared across parent and child agents.
|
|
5
|
+
* Eliminates redundant file reads in multi-agent workflows where parent + N children
|
|
6
|
+
* each independently read the same large files (e.g., agent.ts at 212KB).
|
|
7
|
+
*
|
|
8
|
+
* The cache is created by the parent agent and passed to subagents via config.
|
|
9
|
+
* Since subagents run in the same process, they share the same Map reference.
|
|
10
|
+
*
|
|
11
|
+
* Cache invalidation:
|
|
12
|
+
* - Write operations to a file invalidate its cache entry
|
|
13
|
+
* - Entries expire after a configurable TTL (default: 5 minutes)
|
|
14
|
+
* - LRU eviction when max cache size is exceeded
|
|
15
|
+
*
|
|
16
|
+
* All file paths are normalized via path.resolve() to ensure consistent cache
|
|
17
|
+
* keys regardless of relative vs absolute path usage across agents.
|
|
18
|
+
*/
|
|
19
|
+
export interface FileCacheEntry {
|
|
20
|
+
content: string;
|
|
21
|
+
timestamp: number;
|
|
22
|
+
size: number;
|
|
23
|
+
/** How many times this entry has been served from cache */
|
|
24
|
+
hits: number;
|
|
25
|
+
}
|
|
26
|
+
export interface FileCacheConfig {
|
|
27
|
+
/** Maximum total cache size in bytes (default: 5MB) */
|
|
28
|
+
maxCacheBytes?: number;
|
|
29
|
+
/** Time-to-live for cache entries in ms (default: 5 minutes) */
|
|
30
|
+
ttlMs?: number;
|
|
31
|
+
/** Whether to enable cache statistics tracking */
|
|
32
|
+
trackStats?: boolean;
|
|
33
|
+
}
|
|
34
|
+
export interface FileCacheStats {
|
|
35
|
+
/** Total cache hits */
|
|
36
|
+
hits: number;
|
|
37
|
+
/** Total cache misses */
|
|
38
|
+
misses: number;
|
|
39
|
+
/** Total invalidations (from writes) */
|
|
40
|
+
invalidations: number;
|
|
41
|
+
/** Total evictions (from LRU) */
|
|
42
|
+
evictions: number;
|
|
43
|
+
/** Current number of entries */
|
|
44
|
+
entries: number;
|
|
45
|
+
/** Current cache size in bytes */
|
|
46
|
+
currentBytes: number;
|
|
47
|
+
/** Hit rate (0-1) */
|
|
48
|
+
hitRate: number;
|
|
49
|
+
}
|
|
50
|
+
export declare class SharedFileCache {
|
|
51
|
+
private cache;
|
|
52
|
+
private accessOrder;
|
|
53
|
+
private currentBytes;
|
|
54
|
+
private readonly maxCacheBytes;
|
|
55
|
+
private readonly ttlMs;
|
|
56
|
+
private readonly trackStats;
|
|
57
|
+
private hits;
|
|
58
|
+
private misses;
|
|
59
|
+
private invalidations;
|
|
60
|
+
private evictions;
|
|
61
|
+
constructor(config?: FileCacheConfig);
|
|
62
|
+
/** Normalize path to ensure consistent cache keys across agents */
|
|
63
|
+
private normalizePath;
|
|
64
|
+
/**
|
|
65
|
+
* Get a file's content from cache.
|
|
66
|
+
* Returns undefined if not cached, expired, or evicted.
|
|
67
|
+
*/
|
|
68
|
+
get(filePath: string): string | undefined;
|
|
69
|
+
/**
|
|
70
|
+
* Store a file's content in cache.
|
|
71
|
+
* Evicts LRU entries if needed to make room.
|
|
72
|
+
*/
|
|
73
|
+
set(filePath: string, content: string): void;
|
|
74
|
+
/**
|
|
75
|
+
* Invalidate a cache entry (called when a file is written/modified).
|
|
76
|
+
*/
|
|
77
|
+
invalidate(filePath: string): void;
|
|
78
|
+
/**
|
|
79
|
+
* Get cache statistics.
|
|
80
|
+
*/
|
|
81
|
+
getStats(): FileCacheStats;
|
|
82
|
+
/**
|
|
83
|
+
* Clear all cache entries.
|
|
84
|
+
*/
|
|
85
|
+
clear(): void;
|
|
86
|
+
private delete;
|
|
87
|
+
private touchLRU;
|
|
88
|
+
}
|
|
89
|
+
export declare function createSharedFileCache(config?: FileCacheConfig): SharedFileCache;
|
|
90
|
+
//# sourceMappingURL=file-cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-cache.d.ts","sourceRoot":"","sources":["../../../src/integrations/file-cache.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAQH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,2DAA2D;IAC3D,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,eAAe;IAC9B,uDAAuD;IACvD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gEAAgE;IAChE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kDAAkD;IAClD,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,uBAAuB;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,yBAAyB;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,wCAAwC;IACxC,aAAa,EAAE,MAAM,CAAC;IACtB,iCAAiC;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,gCAAgC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,kCAAkC;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,qBAAqB;IACrB,OAAO,EAAE,MAAM,CAAC;CACjB;AAMD,qBAAa,eAAe;IAC1B,OAAO,CAAC,KAAK,CAAqC;IAClD,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,YAAY,CAAK;IAEzB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAU;IAGrC,OAAO,CAAC,IAAI,CAAK;IACjB,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,SAAS,CAAK;gBAEV,MAAM,GAAE,eAAoB;IAMxC,mEAAmE;IACnE,OAAO,CAAC,aAAa;IAIrB;;;OAGG;IACH,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IA0BzC;;;OAGG;IACH,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAgC5C;;OAEG;IACH,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAQlC;;OAEG;IACH,QAAQ,IAAI,cAAc;IAa1B;;OAEG;IACH,KAAK,IAAI,IAAI;IAOb,OAAO,CAAC,MAAM;IAad,OAAO,CAAC,QAAQ;CAOjB;AAMD,wBAAgB,qBAAqB,CAAC,MAAM,CAAC,EAAE,eAAe,GAAG,eAAe,CAE/E"}
|