agentfootprint 2.2.0 → 2.4.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.
- package/AGENTS.md +52 -0
- package/CLAUDE.md +52 -0
- package/README.md +286 -209
- package/ai-instructions/claude-code/SKILL.md +24 -5
- package/ai-instructions/clinerules +22 -5
- package/ai-instructions/copilot-instructions.md +22 -5
- package/ai-instructions/cursor/agentfootprint.md +22 -5
- package/ai-instructions/kiro/agentfootprint.md +22 -5
- package/ai-instructions/windsurfrules +22 -5
- package/dist/adapters/llm/AnthropicProvider.js +0 -31
- package/dist/adapters/llm/AnthropicProvider.js.map +1 -1
- package/dist/adapters/llm/BedrockProvider.js +2 -28
- package/dist/adapters/llm/BedrockProvider.js.map +1 -1
- package/dist/adapters/llm/BrowserAnthropicProvider.js +1 -31
- package/dist/adapters/llm/BrowserAnthropicProvider.js.map +1 -1
- package/dist/adapters/llm/BrowserOpenAIProvider.js +1 -11
- package/dist/adapters/llm/BrowserOpenAIProvider.js.map +1 -1
- package/dist/adapters/llm/MockProvider.js +35 -1
- package/dist/adapters/llm/MockProvider.js.map +1 -1
- package/dist/adapters/llm/OpenAIProvider.js +3 -29
- package/dist/adapters/llm/OpenAIProvider.js.map +1 -1
- package/dist/adapters/memory/agentcore.js +305 -0
- package/dist/adapters/memory/agentcore.js.map +1 -0
- package/dist/adapters/memory/redis.js +287 -0
- package/dist/adapters/memory/redis.js.map +1 -0
- package/dist/core/Agent.js +16 -0
- package/dist/core/Agent.js.map +1 -1
- package/dist/esm/adapters/llm/AnthropicProvider.js +0 -31
- package/dist/esm/adapters/llm/AnthropicProvider.js.map +1 -1
- package/dist/esm/adapters/llm/BedrockProvider.js +2 -28
- package/dist/esm/adapters/llm/BedrockProvider.js.map +1 -1
- package/dist/esm/adapters/llm/BrowserAnthropicProvider.js +1 -31
- package/dist/esm/adapters/llm/BrowserAnthropicProvider.js.map +1 -1
- package/dist/esm/adapters/llm/BrowserOpenAIProvider.js +1 -11
- package/dist/esm/adapters/llm/BrowserOpenAIProvider.js.map +1 -1
- package/dist/esm/adapters/llm/MockProvider.js +35 -1
- package/dist/esm/adapters/llm/MockProvider.js.map +1 -1
- package/dist/esm/adapters/llm/OpenAIProvider.js +3 -29
- package/dist/esm/adapters/llm/OpenAIProvider.js.map +1 -1
- package/dist/esm/adapters/memory/agentcore.js +301 -0
- package/dist/esm/adapters/memory/agentcore.js.map +1 -0
- package/dist/esm/adapters/memory/redis.js +283 -0
- package/dist/esm/adapters/memory/redis.js.map +1 -0
- package/dist/esm/core/Agent.js +16 -0
- package/dist/esm/core/Agent.js.map +1 -1
- package/dist/esm/index.js +3 -3
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lib/injection-engine/SkillRegistry.js +83 -0
- package/dist/esm/lib/injection-engine/SkillRegistry.js.map +1 -0
- package/dist/esm/lib/injection-engine/factories/defineSkill.js +34 -0
- package/dist/esm/lib/injection-engine/factories/defineSkill.js.map +1 -1
- package/dist/esm/lib/injection-engine/index.js +2 -55
- package/dist/esm/lib/injection-engine/index.js.map +1 -1
- package/dist/esm/lib/injection-engine/types.js.map +1 -1
- package/dist/esm/lib/mcp/index.js +1 -0
- package/dist/esm/lib/mcp/index.js.map +1 -1
- package/dist/esm/lib/mcp/mcpClient.js +29 -24
- package/dist/esm/lib/mcp/mcpClient.js.map +1 -1
- package/dist/esm/lib/mcp/mockMcpClient.js +97 -0
- package/dist/esm/lib/mcp/mockMcpClient.js.map +1 -0
- package/dist/esm/lib/rag/defineRAG.js +0 -18
- package/dist/esm/lib/rag/defineRAG.js.map +1 -1
- package/dist/esm/lib/rag/indexDocuments.js +39 -4
- package/dist/esm/lib/rag/indexDocuments.js.map +1 -1
- package/dist/esm/memory/causal/loadSnapshot.js +1 -1
- package/dist/esm/memory/define.js +0 -14
- package/dist/esm/memory/define.js.map +1 -1
- package/dist/esm/memory/define.types.js +0 -10
- package/dist/esm/memory/define.types.js.map +1 -1
- package/dist/esm/resilience/index.js +0 -44
- package/dist/esm/resilience/index.js.map +1 -1
- package/dist/esm/stream.js +0 -29
- package/dist/esm/stream.js.map +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/injection-engine/SkillRegistry.js +87 -0
- package/dist/lib/injection-engine/SkillRegistry.js.map +1 -0
- package/dist/lib/injection-engine/factories/defineSkill.js +36 -1
- package/dist/lib/injection-engine/factories/defineSkill.js.map +1 -1
- package/dist/lib/injection-engine/index.js +4 -55
- package/dist/lib/injection-engine/index.js.map +1 -1
- package/dist/lib/injection-engine/types.js.map +1 -1
- package/dist/lib/mcp/index.js +3 -1
- package/dist/lib/mcp/index.js.map +1 -1
- package/dist/lib/mcp/mcpClient.js +29 -24
- package/dist/lib/mcp/mcpClient.js.map +1 -1
- package/dist/lib/mcp/mockMcpClient.js +101 -0
- package/dist/lib/mcp/mockMcpClient.js.map +1 -0
- package/dist/lib/rag/defineRAG.js +0 -18
- package/dist/lib/rag/defineRAG.js.map +1 -1
- package/dist/lib/rag/indexDocuments.js +39 -4
- package/dist/lib/rag/indexDocuments.js.map +1 -1
- package/dist/memory/causal/loadSnapshot.js +1 -1
- package/dist/memory/define.js +0 -14
- package/dist/memory/define.js.map +1 -1
- package/dist/memory/define.types.js +0 -10
- package/dist/memory/define.types.js.map +1 -1
- package/dist/resilience/index.js +0 -44
- package/dist/resilience/index.js.map +1 -1
- package/dist/stream.js +0 -29
- package/dist/stream.js.map +1 -1
- package/dist/types/adapters/llm/AnthropicProvider.d.ts +0 -31
- package/dist/types/adapters/llm/AnthropicProvider.d.ts.map +1 -1
- package/dist/types/adapters/llm/BedrockProvider.d.ts +2 -28
- package/dist/types/adapters/llm/BedrockProvider.d.ts.map +1 -1
- package/dist/types/adapters/llm/BrowserAnthropicProvider.d.ts +1 -31
- package/dist/types/adapters/llm/BrowserAnthropicProvider.d.ts.map +1 -1
- package/dist/types/adapters/llm/BrowserOpenAIProvider.d.ts +1 -11
- package/dist/types/adapters/llm/BrowserOpenAIProvider.d.ts.map +1 -1
- package/dist/types/adapters/llm/MockProvider.d.ts +45 -0
- package/dist/types/adapters/llm/MockProvider.d.ts.map +1 -1
- package/dist/types/adapters/llm/OpenAIProvider.d.ts +3 -29
- package/dist/types/adapters/llm/OpenAIProvider.d.ts.map +1 -1
- package/dist/types/adapters/memory/agentcore.d.ts +157 -0
- package/dist/types/adapters/memory/agentcore.d.ts.map +1 -0
- package/dist/types/adapters/memory/redis.d.ts +126 -0
- package/dist/types/adapters/memory/redis.d.ts.map +1 -0
- package/dist/types/core/Agent.d.ts +14 -0
- package/dist/types/core/Agent.d.ts.map +1 -1
- package/dist/types/index.d.ts +3 -3
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/lib/injection-engine/SkillRegistry.d.ts +50 -0
- package/dist/types/lib/injection-engine/SkillRegistry.d.ts.map +1 -0
- package/dist/types/lib/injection-engine/factories/defineSkill.d.ts +72 -0
- package/dist/types/lib/injection-engine/factories/defineSkill.d.ts.map +1 -1
- package/dist/types/lib/injection-engine/index.d.ts +2 -55
- package/dist/types/lib/injection-engine/index.d.ts.map +1 -1
- package/dist/types/lib/injection-engine/types.d.ts +10 -0
- package/dist/types/lib/injection-engine/types.d.ts.map +1 -1
- package/dist/types/lib/mcp/index.d.ts +1 -0
- package/dist/types/lib/mcp/index.d.ts.map +1 -1
- package/dist/types/lib/mcp/mcpClient.d.ts +0 -17
- package/dist/types/lib/mcp/mcpClient.d.ts.map +1 -1
- package/dist/types/lib/mcp/mockMcpClient.d.ts +66 -0
- package/dist/types/lib/mcp/mockMcpClient.d.ts.map +1 -0
- package/dist/types/lib/mcp/types.d.ts +2 -0
- package/dist/types/lib/mcp/types.d.ts.map +1 -1
- package/dist/types/lib/rag/defineRAG.d.ts +18 -21
- package/dist/types/lib/rag/defineRAG.d.ts.map +1 -1
- package/dist/types/lib/rag/indexDocuments.d.ts +30 -1
- package/dist/types/lib/rag/indexDocuments.d.ts.map +1 -1
- package/dist/types/memory/causal/loadSnapshot.d.ts +1 -1
- package/dist/types/memory/define.d.ts +0 -14
- package/dist/types/memory/define.d.ts.map +1 -1
- package/dist/types/memory/define.types.d.ts +2 -12
- package/dist/types/memory/define.types.d.ts.map +1 -1
- package/dist/types/resilience/index.d.ts +0 -44
- package/dist/types/resilience/index.d.ts.map +1 -1
- package/dist/types/stream.d.ts +0 -29
- package/dist/types/stream.d.ts.map +1 -1
- package/package.json +39 -1
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* mockMcpClient — in-memory MCP client for development and tests.
|
|
4
|
+
*
|
|
5
|
+
* const slack = mockMcpClient({
|
|
6
|
+
* tools: [
|
|
7
|
+
* {
|
|
8
|
+
* name: 'send_message',
|
|
9
|
+
* description: 'Post a message to a channel',
|
|
10
|
+
* inputSchema: { type: 'object' },
|
|
11
|
+
* handler: async ({ text }) => `Posted: ${text}`,
|
|
12
|
+
* },
|
|
13
|
+
* ],
|
|
14
|
+
* });
|
|
15
|
+
*
|
|
16
|
+
* const agent = Agent.create({ provider: mock({ reply: 'ok' }) })
|
|
17
|
+
* .tools(await slack.tools())
|
|
18
|
+
* .build();
|
|
19
|
+
*
|
|
20
|
+
* Pattern: Adapter (GoF) — produces an `McpClient` with the same shape
|
|
21
|
+
* as `mcpClient(opts)` but driven by an in-memory tool table
|
|
22
|
+
* instead of the MCP SDK + transport. Drop-in for development:
|
|
23
|
+
* start with `mockMcpClient`, swap to `mcpClient` once the
|
|
24
|
+
* real server is ready.
|
|
25
|
+
*
|
|
26
|
+
* Why public: `mcpClient`'s `_client` injection is `@internal` because
|
|
27
|
+
* the SDK shape isn't a stable public surface. `mockMcpClient` exposes
|
|
28
|
+
* a curated tool-handler shape that's tied to OUR Tool contract instead
|
|
29
|
+
* — stable, documented, and the right level of abstraction for
|
|
30
|
+
* mock-first development.
|
|
31
|
+
*/
|
|
32
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
33
|
+
exports.mockMcpClient = void 0;
|
|
34
|
+
/**
|
|
35
|
+
* Build an in-memory `McpClient`. Useful when you want to develop
|
|
36
|
+
* against MCP semantics without spawning subprocesses, hitting the
|
|
37
|
+
* network, or installing `@modelcontextprotocol/sdk`. Same `McpClient`
|
|
38
|
+
* shape as `mcpClient(opts)` — code that consumes one accepts the other.
|
|
39
|
+
*/
|
|
40
|
+
function mockMcpClient(options) {
|
|
41
|
+
const name = options.name ?? 'mock-mcp';
|
|
42
|
+
const toolMap = new Map(options.tools.map((t) => [t.name, t]));
|
|
43
|
+
let cache = null;
|
|
44
|
+
let closed = false;
|
|
45
|
+
const ensureOpen = (op) => {
|
|
46
|
+
if (closed) {
|
|
47
|
+
throw new Error(`mockMcpClient[${name}].${op}() called after close(). Construct a new client to reuse.`);
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
const buildTools = () => options.tools.map((mcp) => wrapMockTool(name, toolMap, mcp));
|
|
51
|
+
return {
|
|
52
|
+
name,
|
|
53
|
+
async tools() {
|
|
54
|
+
ensureOpen('tools');
|
|
55
|
+
if (!cache)
|
|
56
|
+
cache = buildTools();
|
|
57
|
+
return cache;
|
|
58
|
+
},
|
|
59
|
+
async refresh() {
|
|
60
|
+
ensureOpen('refresh');
|
|
61
|
+
cache = buildTools();
|
|
62
|
+
return cache;
|
|
63
|
+
},
|
|
64
|
+
async close() {
|
|
65
|
+
if (closed)
|
|
66
|
+
return;
|
|
67
|
+
closed = true;
|
|
68
|
+
cache = null;
|
|
69
|
+
},
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
exports.mockMcpClient = mockMcpClient;
|
|
73
|
+
function wrapMockTool(serverName, toolMap, mcp) {
|
|
74
|
+
const tool = {
|
|
75
|
+
schema: {
|
|
76
|
+
name: mcp.name,
|
|
77
|
+
description: mcp.description ?? `Mock MCP tool: ${mcp.name}`,
|
|
78
|
+
inputSchema: mcp.inputSchema,
|
|
79
|
+
},
|
|
80
|
+
execute: async (args) => {
|
|
81
|
+
const argsObj = args !== null && typeof args === 'object' && !Array.isArray(args)
|
|
82
|
+
? args
|
|
83
|
+
: {};
|
|
84
|
+
// Look up by name at call time so mid-test handler swaps via a
|
|
85
|
+
// mutable Map could be supported later. For now `toolMap` is
|
|
86
|
+
// built once at factory time.
|
|
87
|
+
const handler = toolMap.get(mcp.name)?.handler;
|
|
88
|
+
if (!handler)
|
|
89
|
+
return '[mock result]';
|
|
90
|
+
try {
|
|
91
|
+
return await handler(argsObj);
|
|
92
|
+
}
|
|
93
|
+
catch (err) {
|
|
94
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
95
|
+
throw new Error(`Mock MCP tool '${mcp.name}' (server '${serverName}') threw: ${msg}`);
|
|
96
|
+
}
|
|
97
|
+
},
|
|
98
|
+
};
|
|
99
|
+
return tool;
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=mockMcpClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mockMcpClient.js","sourceRoot":"","sources":["../../../src/lib/mcp/mockMcpClient.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;;;AAkCH;;;;;GAKG;AACH,SAAgB,aAAa,CAAC,OAA6B;IACzD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,UAAU,CAAC;IACxC,MAAM,OAAO,GAAG,IAAI,GAAG,CAAsB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAEpF,IAAI,KAAK,GAA2B,IAAI,CAAC;IACzC,IAAI,MAAM,GAAG,KAAK,CAAC;IAEnB,MAAM,UAAU,GAAG,CAAC,EAAU,EAAQ,EAAE;QACtC,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CACb,iBAAiB,IAAI,KAAK,EAAE,2DAA2D,CACxF,CAAC;QACJ,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,UAAU,GAAG,GAAoB,EAAE,CACvC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;IAE/D,OAAO;QACL,IAAI;QACJ,KAAK,CAAC,KAAK;YACT,UAAU,CAAC,OAAO,CAAC,CAAC;YACpB,IAAI,CAAC,KAAK;gBAAE,KAAK,GAAG,UAAU,EAAE,CAAC;YACjC,OAAO,KAAK,CAAC;QACf,CAAC;QACD,KAAK,CAAC,OAAO;YACX,UAAU,CAAC,SAAS,CAAC,CAAC;YACtB,KAAK,GAAG,UAAU,EAAE,CAAC;YACrB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,KAAK,CAAC,KAAK;YACT,IAAI,MAAM;gBAAE,OAAO;YACnB,MAAM,GAAG,IAAI,CAAC;YACd,KAAK,GAAG,IAAI,CAAC;QACf,CAAC;KACF,CAAC;AACJ,CAAC;AApCD,sCAoCC;AAED,SAAS,YAAY,CACnB,UAAkB,EAClB,OAAyC,EACzC,GAAgB;IAEhB,MAAM,IAAI,GAAS;QACjB,MAAM,EAAE;YACN,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,kBAAkB,GAAG,CAAC,IAAI,EAAE;YAC5D,WAAW,EAAE,GAAG,CAAC,WAAW;SAC7B;QACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YACtB,MAAM,OAAO,GACX,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;gBAC/D,CAAC,CAAE,IAAgC;gBACnC,CAAC,CAAC,EAAE,CAAC;YACT,+DAA+D;YAC/D,6DAA6D;YAC7D,8BAA8B;YAC9B,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;YAC/C,IAAI,CAAC,OAAO;gBAAE,OAAO,eAAe,CAAC;YACrC,IAAI,CAAC;gBACH,OAAO,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;YAChC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC7D,MAAM,IAAI,KAAK,CAAC,kBAAkB,GAAG,CAAC,IAAI,cAAc,UAAU,aAAa,GAAG,EAAE,CAAC,CAAC;YACxF,CAAC;QACH,CAAC;KACF,CAAC;IACF,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -30,24 +30,6 @@
|
|
|
30
30
|
* `agentfootprint.context.injected` when retrieved chunks
|
|
31
31
|
* land in the messages slot.
|
|
32
32
|
*
|
|
33
|
-
* 7-panel review (2026-04-29):
|
|
34
|
-
* - LLM Systems ✅ injects as 'user' role by default — RAG chunks
|
|
35
|
-
* land where the LLM treats them as authoritative
|
|
36
|
-
* retrieved context, not behavior rules
|
|
37
|
-
* - Architect ✅ composition over defineMemory; zero new engine
|
|
38
|
-
* code; multi-RAG layering works via per-id keys
|
|
39
|
-
* - API Designer ✅ one factory, mirrors defineMemory shape; consumer
|
|
40
|
-
* ergonomics: `agent.rag(defineRAG({...}))`
|
|
41
|
-
* - Performance ✅ embedding cost is one call per turn (TURN_START
|
|
42
|
-
* timing, default); strict threshold prevents
|
|
43
|
-
* injecting low-confidence noise
|
|
44
|
-
* - Privacy ✅ multi-tenant via MemoryIdentity tuple; doc
|
|
45
|
-
* content never crosses tenant boundaries
|
|
46
|
-
* - ML / IR ✅ embedder version pinned via `embedderId`; cosine
|
|
47
|
-
* score semantics inherited from MemoryStore
|
|
48
|
-
* - SoftEng ✅ thin file (this one); existing memory tests
|
|
49
|
-
* cover the underlying pipeline
|
|
50
|
-
*
|
|
51
33
|
* @see ./indexDocuments.ts for the seeding helper
|
|
52
34
|
* @see ../../memory/define.ts for the underlying factory
|
|
53
35
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defineRAG.js","sourceRoot":"","sources":["../../../src/lib/rag/defineRAG.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"defineRAG.js","sourceRoot":"","sources":["../../../src/lib/rag/defineRAG.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4DG;;;AAMH,kEAA+E;AAC/E,sDAAsD;AAyEtD;;;;;;;GAOG;AACH,SAAgB,SAAS,CAAC,IAAsB;IAC9C,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACxE,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,aAAa,IAAI,CAAC,EAAE,2BAA2B,CAAC,CAAC;IACnE,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,aAAa,IAAI,CAAC,EAAE,8BAA8B,CAAC,CAAC;IACtE,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CACb,aAAa,IAAI,CAAC,EAAE,oCAAoC;YACtD,yEAAyE,CAC5E,CAAC;IACJ,CAAC;IAED,OAAO,IAAA,wBAAY,EAAC;QAClB,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,GAAG,CAAC,IAAI,CAAC,WAAW,KAAK,SAAS,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;QACxE,IAAI,EAAE,8BAAY,CAAC,QAAQ;QAC3B,QAAQ,EAAE;YACR,IAAI,EAAE,mCAAiB,CAAC,KAAK;YAC7B,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC;YACpB,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,GAAG;YAChC,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB;QACD,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,MAAM;KAC9B,CAAC,CAAC;AACL,CAAC;AA9BD,8BA8BC"}
|
|
@@ -36,6 +36,14 @@ const DEFAULT_IDENTITY = { conversationId: '_global' };
|
|
|
36
36
|
* Embed + persist documents. Returns the count actually indexed
|
|
37
37
|
* (skips duplicates if the store rejects them). Throws on embedder
|
|
38
38
|
* failure or store error — fail loud at startup is desirable.
|
|
39
|
+
*
|
|
40
|
+
* **Re-indexing semantics:** entries are written with `version: 1` and
|
|
41
|
+
* `putMany` (most adapters: last-write-wins). Re-running this helper
|
|
42
|
+
* after the store has been mutated by other writers may stomp their
|
|
43
|
+
* versions. For idempotent corpus refresh, either delete-then-index
|
|
44
|
+
* or use a custom upsert via `store.putIfVersion()` per document. A
|
|
45
|
+
* first-class `mode: 'upsert' | 'replace'` API is planned for a
|
|
46
|
+
* future release.
|
|
39
47
|
*/
|
|
40
48
|
async function indexDocuments(store, embedder, documents, options = {}) {
|
|
41
49
|
if (!store)
|
|
@@ -48,11 +56,21 @@ async function indexDocuments(store, embedder, documents, options = {}) {
|
|
|
48
56
|
const embedderId = options.embedderId ?? 'default-embedder';
|
|
49
57
|
const now = Date.now();
|
|
50
58
|
const ttl = options.ttlMs ? now + options.ttlMs : undefined;
|
|
51
|
-
// Embed in batch when supported, else fall back to
|
|
59
|
+
// Embed in batch when supported, else fall back to capped-concurrency
|
|
60
|
+
// single calls. Unlimited concurrency on a large corpus would
|
|
61
|
+
// saturate embedder rate limits; cap defaults to 8.
|
|
52
62
|
const texts = documents.map((d) => d.content);
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
63
|
+
let vectors;
|
|
64
|
+
if (embedder.embedBatch) {
|
|
65
|
+
vectors = await embedder.embedBatch({
|
|
66
|
+
texts,
|
|
67
|
+
...(options.signal && { signal: options.signal }),
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
const limit = Math.max(1, options.maxConcurrency ?? 8);
|
|
72
|
+
vectors = await embedWithConcurrency(embedder, texts, limit, options.signal);
|
|
73
|
+
}
|
|
56
74
|
const entries = documents.map((doc, i) => {
|
|
57
75
|
const vec = vectors[i];
|
|
58
76
|
return {
|
|
@@ -74,4 +92,21 @@ async function indexDocuments(store, embedder, documents, options = {}) {
|
|
|
74
92
|
return entries.length;
|
|
75
93
|
}
|
|
76
94
|
exports.indexDocuments = indexDocuments;
|
|
95
|
+
async function embedWithConcurrency(embedder, texts, limit, signal) {
|
|
96
|
+
const results = new Array(texts.length);
|
|
97
|
+
let next = 0;
|
|
98
|
+
const workers = Array.from({ length: Math.min(limit, texts.length) }, async () => {
|
|
99
|
+
for (;;) {
|
|
100
|
+
const i = next++;
|
|
101
|
+
if (i >= texts.length)
|
|
102
|
+
return;
|
|
103
|
+
results[i] = await embedder.embed({
|
|
104
|
+
text: texts[i],
|
|
105
|
+
...(signal && { signal }),
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
await Promise.all(workers);
|
|
110
|
+
return results;
|
|
111
|
+
}
|
|
77
112
|
//# sourceMappingURL=indexDocuments.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"indexDocuments.js","sourceRoot":"","sources":["../../../src/lib/rag/indexDocuments.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;;;
|
|
1
|
+
{"version":3,"file":"indexDocuments.js","sourceRoot":"","sources":["../../../src/lib/rag/indexDocuments.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* Strict-threshold semantics:
|
|
14
14
|
* When `minScore` is set and no past snapshot meets it, returns an
|
|
15
15
|
* empty `formatted`. NO fallback — garbage past context is worse than
|
|
16
|
-
* no context.
|
|
16
|
+
* no context.
|
|
17
17
|
*
|
|
18
18
|
* Empty-query handling:
|
|
19
19
|
* No user message → no embedding → no search → empty result.
|
package/dist/memory/define.js
CHANGED
|
@@ -24,22 +24,8 @@
|
|
|
24
24
|
* `agentfootprint.context.injected` with `source: 'memory'`
|
|
25
25
|
* when their formatter writes to the messages slot.
|
|
26
26
|
*
|
|
27
|
-
* 8-panel review (2026-04-28):
|
|
28
|
-
* - LLM Systems ✅ asRole knob honored when present, defaults to 'system'
|
|
29
|
-
* - Architect ✅ per-id scope keys (`memoryInjectionKey(id)`)
|
|
30
|
-
* - API Designer ✅ one factory; CAUSAL stays here, no separate snapshotMemory
|
|
31
|
-
* - Performance ✅ default `MEMORY_TIMING.TURN_START`; pipelines compiled once
|
|
32
|
-
* - Privacy ✅ redact field passes through
|
|
33
|
-
* - ML / IR ✅ threshold maps to semantic.minScore strictly; no fallback
|
|
34
|
-
* - SoftEng ✅ unsupported combos throw with clear remediation hint
|
|
35
|
-
* - TS Engineer ✅ discriminated union narrowing preserved across switches
|
|
36
|
-
*
|
|
37
|
-
* Book reference: AI Agents — The Definitive Guide, Ch 10 (Memory,
|
|
38
|
-
* Autonomy, Long-Horizon Use — chapter still unavailable in pre-pub).
|
|
39
|
-
*
|
|
40
27
|
* @see ./define.types.ts for the const-objects + types
|
|
41
28
|
* @see ./pipeline/*.ts for the existing pipeline factories this dispatches to
|
|
42
|
-
* @see MEMORY.md load-bearing design memory
|
|
43
29
|
*/
|
|
44
30
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
45
31
|
exports.unwrapMemoryFlowChart = exports.defineMemory = void 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"define.js","sourceRoot":"","sources":["../../src/memory/define.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"define.js","sourceRoot":"","sources":["../../src/memory/define.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;;;AAIH,sDAAoF;AACpF,0DAA4D;AAC5D,wDAAuF;AACvF,gDAA2E;AAC3E,0DAA0F;AAC1F,gDAA2E;AAC3E,gDAAkF;AAGlF,uDAgB2B;AAG3B,sEAAsE;AAEtE;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,SAAgB,YAAY,CAAC,OAA4B;IACvD,QAAQ,CAAC,OAAO,CAAC,CAAC;IAElB,MAAM,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IAExC,MAAM,UAAU,GAAqB;QACnC,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,GAAG,CAAC,OAAO,CAAC,WAAW,KAAK,SAAS,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC;QAC9E,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,IAAI,EAAE,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC;QAClC,GAAG,CAAC,QAAQ,CAAC,KAAK,KAAK,SAAS,IAAI,EAAE,KAAK,EAAE,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7E,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,+BAAa,CAAC,UAAU;QAClD,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,cAAc,CAAC,OAAO,CAAC;QACjD,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;QAC/D,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,8BAAY,CAAC,MAAM;YACrC,OAA+B,CAAC,UAAU,KAAK,SAAS,IAAI;YAC3D,UAAU,EAAG,OAA+B,CAAC,UAAU;SACxD,CAAC;KACL,CAAC;IAEF,OAAO,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AACnC,CAAC;AArBD,oCAqBC;AAED,sEAAsE;AAEtE,SAAS,QAAQ,CAAC,OAA4B;IAC5C,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC3E,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CACb,mBAAmB,OAAO,CAAC,EAAE,4BAA4B;YACvD,6EAA6E,CAChF,CAAC;IACJ,CAAC;AACH,CAAC;AAED,sEAAsE;AAEtE,SAAS,aAAa,CAAC,OAA4B;IACjD,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;QACrB,KAAK,8BAAY,CAAC,QAAQ;YACxB,OAAO,qBAAqB,CAAC,OAAO,CAAC,CAAC;QACxC,KAAK,8BAAY,CAAC,QAAQ;YACxB,OAAO,qBAAqB,CAAC,OAAO,CAAC,CAAC;QACxC,KAAK,8BAAY,CAAC,SAAS;YACzB,OAAO,sBAAsB,CAAC,OAAO,CAAC,CAAC;QACzC,KAAK,8BAAY,CAAC,MAAM;YACtB,OAAO,mBAAmB,CAAC,OAAO,CAAC,CAAC;QACtC,OAAO,CAAC,CAAC,CAAC;YACR,MAAM,WAAW,GAAU,OAAO,CAAC;YACnC,KAAK,WAAW,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,gCAAiC,OAA4B,CAAC,IAAI,EAAE,CAAC,CAAC;QACxF,CAAC;IACH,CAAC;AACH,CAAC;AAED,sEAAsE;AAEtE,SAAS,qBAAqB,CAAC,OAA8B;IAC3D,MAAM,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC;IAE3B,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QACf,KAAK,mCAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;YAC9B,MAAM,CAAC,GAAG,CAAmB,CAAC;YAC9B,MAAM,MAAM,GAA0B,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YAClF,OAAO,IAAA,4BAAe,EAAC,MAAM,CAAC,CAAC;QACjC,CAAC;QAED,KAAK,mCAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;YAC9B,MAAM,CAAC,GAAG,CAAmB,CAAC;YAC9B,MAAM,MAAM,GAA0B;gBACpC,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,GAAG,CAAC,CAAC,CAAC,aAAa,KAAK,SAAS,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC,aAAa,EAAE,CAAC;gBACxE,GAAG,CAAC,CAAC,CAAC,aAAa,KAAK,SAAS,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC,aAAa,EAAE,CAAC;gBACxE,GAAG,CAAC,CAAC,CAAC,UAAU,KAAK,SAAS,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC;aAChE,CAAC;YACF,OAAO,IAAA,4BAAe,EAAC,MAAM,CAAC,CAAC;QACjC,CAAC;QAED,KAAK,mCAAiB,CAAC,SAAS,CAAC,CAAC,CAAC;YACjC,iEAAiE;YACjE,2DAA2D;YAC3D,8DAA8D;YAC9D,sCAAsC;YACtC,MAAM,GAAG,GAAG,CAAsB,CAAC;YACnC,MAAM,MAAM,GAA0B,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC;YACtF,OAAO,IAAA,4BAAe,EAAC,MAAM,CAAC,CAAC;QACjC,CAAC;QAED,KAAK,mCAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;YAC9B,4DAA4D;YAC5D,gEAAgE;YAChE,2DAA2D;YAC3D,sBAAsB;YACtB,MAAM,CAAC,GAAG,CAAmB,CAAC;YAC9B,MAAM,KAAK,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YAC9B,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,MAAM,IAAI,KAAK,CACb,gBAAgB,OAAO,CAAC,EAAE,wDAAwD,CACnF,CAAC;YACJ,CAAC;YACD,OAAO,qBAAqB,CAAC,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QAChE,CAAC;QAED,KAAK,mCAAiB,CAAC,OAAO;YAC5B,MAAM,IAAI,KAAK,CACb,gBAAgB,OAAO,CAAC,EAAE,0DAA0D;gBAClF,0FAA0F,CAC7F,CAAC;QAEJ,KAAK,mCAAiB,CAAC,KAAK;YAC1B,MAAM,IAAI,KAAK,CACb,gBAAgB,OAAO,CAAC,EAAE,8DAA8D;gBACtF,4FAA4F,CAC/F,CAAC;QAEJ,KAAK,mCAAiB,CAAC,KAAK;YAC1B,MAAM,IAAI,KAAK,CACb,gBAAgB,OAAO,CAAC,EAAE,sCAAsC;gBAC9D,8EAA8E,CACjF,CAAC;QAEJ,OAAO,CAAC,CAAC,CAAC;YACR,MAAM,WAAW,GAAU,CAAC,CAAC;YAC7B,KAAK,WAAW,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;AACH,CAAC;AAED,sEAAsE;AAEtE,SAAS,qBAAqB,CAAC,OAA8B;IAC3D,MAAM,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC;IAE3B,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QACf,KAAK,mCAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;YAC7B,MAAM,CAAC,GAAG,CAAiB,CAAC;YAC5B,MAAM,MAAM,GAA2B;gBACrC,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,CAAC,EAAE,CAAC,CAAC,IAAI;gBACT,GAAG,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC;aAC5D,CAAC;YACF,OAAO,IAAA,8BAAgB,EAAC,MAAM,CAAC,CAAC;QAClC,CAAC;QAED,KAAK,mCAAiB,CAAC,OAAO,CAAC,CAAC,CAAC;YAC/B,MAAM,CAAC,GAAG,CAAoB,CAAC;YAC/B,IAAI,CAAC,CAAC,SAAS,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;gBACpC,MAAM,IAAI,KAAK,CACb,gBAAgB,OAAO,CAAC,EAAE,6DAA6D;oBACrF,4EAA4E,CAC/E,CAAC;YACJ,CAAC;YACD,MAAM,MAAM,GAAuB,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;YAC5D,OAAO,IAAA,sBAAY,EAAC,MAAM,CAAC,CAAC;QAC9B,CAAC;QAED,KAAK,mCAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;YAC9B,mEAAmE;YACnE,wEAAwE;YACxE,qBAAqB;YACrB,MAAM,CAAC,GAAG,CAAmB,CAAC;YAC9B,MAAM,MAAM,GAAuB,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YAC/E,OAAO,IAAA,sBAAY,EAAC,MAAM,CAAC,CAAC;QAC9B,CAAC;QAED,KAAK,mCAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;YAC9B,8DAA8D;YAC9D,MAAM,MAAM,GAAuB,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;YAC5D,OAAO,IAAA,sBAAY,EAAC,MAAM,CAAC,CAAC;QAC9B,CAAC;QAED,KAAK,mCAAiB,CAAC,MAAM,CAAC;QAC9B,KAAK,mCAAiB,CAAC,SAAS,CAAC;QACjC,KAAK,mCAAiB,CAAC,KAAK;YAC1B,MAAM,IAAI,KAAK,CACb,gBAAgB,OAAO,CAAC,EAAE,MAAM,MAAM,CACpC,CAAC,CAAC,IAAI,CACP,+CAA+C;gBAC9C,uEAAuE;gBACvE,kDAAkD,CACrD,CAAC;QAEJ,OAAO,CAAC,CAAC,CAAC;YACR,MAAM,WAAW,GAAU,CAAC,CAAC;YAC7B,KAAK,WAAW,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;AACH,CAAC;AAED,sEAAsE;AAEtE,SAAS,sBAAsB,CAAC,OAA+B;IAC7D,MAAM,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC;IAE3B,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QACf,KAAK,mCAAiB,CAAC,OAAO,CAAC,CAAC,CAAC;YAC/B,MAAM,CAAC,GAAG,CAAoB,CAAC;YAC/B,IAAI,CAAC,CAAC,SAAS,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;gBACpC,MAAM,IAAI,KAAK,CACb,gBAAgB,OAAO,CAAC,EAAE,4DAA4D,CACvF,CAAC;YACJ,CAAC;YACD,MAAM,MAAM,GAA4B,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;YACjE,OAAO,IAAA,gCAAiB,EAAC,MAAM,CAAC,CAAC;QACnC,CAAC;QAED,KAAK,mCAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;YAC9B,MAAM,CAAC,GAAG,CAAmB,CAAC;YAC9B,MAAM,MAAM,GAA4B,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YACpF,OAAO,IAAA,gCAAiB,EAAC,MAAM,CAAC,CAAC;QACnC,CAAC;QAED,KAAK,mCAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;YAC9B,MAAM,MAAM,GAAuB,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;YAC5D,OAAO,IAAA,sBAAY,EAAC,MAAM,CAAC,CAAC;QAC9B,CAAC;QAED,KAAK,mCAAiB,CAAC,KAAK,CAAC;QAC7B,KAAK,mCAAiB,CAAC,MAAM,CAAC;QAC9B,KAAK,mCAAiB,CAAC,SAAS,CAAC;QACjC,KAAK,mCAAiB,CAAC,KAAK;YAC1B,MAAM,IAAI,KAAK,CACb,gBAAgB,OAAO,CAAC,EAAE,MAAM,MAAM,CACpC,CAAC,CAAC,IAAI,CACP,gDAAgD;gBAC/C,gFAAgF,CACnF,CAAC;QAEJ,OAAO,CAAC,CAAC,CAAC;YACR,MAAM,WAAW,GAAU,CAAC,CAAC;YAC7B,KAAK,WAAW,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;AACH,CAAC;AAED,sEAAsE;AAEtE,SAAS,mBAAmB,CAAC,OAA4B;IACvD,MAAM,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC;IAE3B,mEAAmE;IACnE,8DAA8D;IAC9D,mEAAmE;IACnE,kEAAkE;IAClE,IAAI,CAAC,CAAC,IAAI,KAAK,mCAAiB,CAAC,KAAK,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CACb,gBAAgB,OAAO,CAAC,EAAE,+CAA+C;YACvE,iEAAiE;YACjE,2DAA2D,CAC9D,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CACb,gBAAgB,OAAO,CAAC,EAAE,kDAAkD;YAC1E,4EAA4E;YAC5E,8CAA8C,CACjD,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAA2B;QACrC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,GAAG,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC;QAC3D,GAAG,CAAC,OAAO,CAAC,UAAU,KAAK,SAAS,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC;KAC5E,CAAC;IACF,OAAO,IAAA,2BAAgB,EAAC,MAAM,CAAC,CAAC;AAClC,CAAC;AAED,sEAAsE;AAEtE;;;;GAIG;AACH,SAAS,cAAc,CAAC,OAA4B;IAClD,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;QACrB,KAAK,8BAAY,CAAC,QAAQ,CAAC;QAC3B,KAAK,8BAAY,CAAC,SAAS;YACzB,OAAO,QAAQ,CAAC;QAClB,KAAK,8BAAY,CAAC,QAAQ;YACxB,OAAO,QAAQ,CAAC;QAClB,KAAK,8BAAY,CAAC,MAAM;YACtB,OAAO,QAAQ,CAAC;QAClB;YACE,OAAO,QAAQ,CAAC;IACpB,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,aAAa,CAAI,EAAW;IACnC,OAAO,EAAgC,CAAC;AAC1C,CAAC;AAED;;;;;GAKG;AACH,SAAgB,qBAAqB,CAAI,OAAmC;IAC1E,OAAO,OAAO,CAAC;AACjB,CAAC;AAFD,sDAEC;AAED,kEAAkE;AAClE,sDAAsD;AACtD,KAAK,gCAAiB,CAAC;AACvB,iEAAiE;AACjE,KAAM,IAA4B,CAAC"}
|
|
@@ -33,16 +33,6 @@
|
|
|
33
33
|
* `agentfootprint.context.injected` event with `source: 'memory'`
|
|
34
34
|
* when its read subflow places content into the messages slot.
|
|
35
35
|
*
|
|
36
|
-
* 8-panel review (2026-04-28):
|
|
37
|
-
* - LLM Systems ✅ asRole knob added so memories can land as user/system/assistant
|
|
38
|
-
* - Architect ✅ per-id scope keys (`memoryInjection_${id}`) — multi-memory layering safe
|
|
39
|
-
* - API Designer ✅ ONE factory for all four types incl. Causal (no separate `snapshotMemory`)
|
|
40
|
-
* - Performance ✅ default `MEMORY_TIMING.TURN_START` (was per-iteration — perf trap)
|
|
41
|
-
* - Privacy ✅ `redact?` API hook reserved
|
|
42
|
-
* - ML / IR ✅ causal snapshots tagged with original query for retrieval embedding
|
|
43
|
-
* - SoftEng ✅ discriminated union with `kind` discriminator → full TS narrowing
|
|
44
|
-
* - TS Engineer ✅ generic over `MemoryEntry<T>` payload preserves type-safety
|
|
45
|
-
*
|
|
46
36
|
* @see ./define.ts for the `defineMemory()` factory itself
|
|
47
37
|
* @see ../../docs-site for guides + the 7 strategy examples
|
|
48
38
|
* @see MEMORY.md for the load-bearing design memory
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"define.types.js","sourceRoot":"","sources":["../../src/memory/define.types.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"define.types.js","sourceRoot":"","sources":["../../src/memory/define.types.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;;;AAOH,uEAAuE;AAEvE;;;;;;;;GAQG;AACU,QAAA,YAAY,GAAG;IAC1B,QAAQ,EAAE,UAAU;IACpB,QAAQ,EAAE,UAAU;IACpB,SAAS,EAAE,WAAW;IACtB,MAAM,EAAE,QAAQ;CACR,CAAC;AAGX;;;;;;GAMG;AACU,QAAA,iBAAiB,GAAG;IAC/B,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;IAChB,SAAS,EAAE,WAAW;IACtB,KAAK,EAAE,MAAM;IACb,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,QAAQ;CACR,CAAC;AAGX;;;;;;GAMG;AACU,QAAA,aAAa,GAAG;IAC3B,eAAe,EAAE,iBAAiB;IAClC,UAAU,EAAE,YAAY;CAChB,CAAC;AAGX;;;;;;;;GAQG;AACU,QAAA,oBAAoB,GAAG;IAClC,SAAS,EAAE,WAAW;IACtB,OAAO,EAAE,SAAS;IAClB,SAAS,EAAE,WAAW;IACtB,IAAI,EAAE,MAAM;CACJ,CAAC;AA4MX,uEAAuE;AAEvE,SAAgB,YAAY,CAAC,KAAa;IACxC,OAAQ,MAAM,CAAC,MAAM,CAAC,oBAAY,CAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACnE,CAAC;AAFD,oCAEC;AAED,SAAgB,oBAAoB,CAAC,KAAa;IAChD,OAAQ,MAAM,CAAC,MAAM,CAAC,yBAAiB,CAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACxE,CAAC;AAFD,oDAEC;AAED,SAAgB,cAAc,CAAC,KAAa;IAC1C,OAAQ,MAAM,CAAC,MAAM,CAAC,qBAAa,CAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACpE,CAAC;AAFD,wCAEC;AAED,SAAgB,oBAAoB,CAAC,KAAa;IAChD,OAAQ,MAAM,CAAC,MAAM,CAAC,4BAAoB,CAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC3E,CAAC;AAFD,oDAEC;AAED,uEAAuE;AAEvE;;;;;GAKG;AACU,QAAA,2BAA2B,GAAG,kBAA2B,CAAC;AAEvE,SAAgB,kBAAkB,CAAC,EAAU;IAC3C,OAAO,GAAG,mCAA2B,GAAG,EAAE,EAAE,CAAC;AAC/C,CAAC;AAFD,gDAEC;AAED,SAAgB,oBAAoB,CAAC,GAAW;IAC9C,OAAO,GAAG,CAAC,UAAU,CAAC,mCAA2B,CAAC,CAAC;AACrD,CAAC;AAFD,oDAEC"}
|
package/dist/resilience/index.js
CHANGED
|
@@ -15,50 +15,6 @@
|
|
|
15
15
|
*
|
|
16
16
|
* Reads as: try anthropic; on failure fall back to openai; the whole
|
|
17
17
|
* chain is wrapped in retry with 5 attempts.
|
|
18
|
-
*
|
|
19
|
-
* ─── 7-panel design review (2026-04-28) ────────────────────────────
|
|
20
|
-
*
|
|
21
|
-
* LLM-AI system design ✓ Decorator pattern around the existing
|
|
22
|
-
* `LLMProvider` port — no new contract.
|
|
23
|
-
* Stacks naturally; observation hooks
|
|
24
|
-
* (`onRetry`, `onFallback`) keep the
|
|
25
|
-
* recorder ecosystem informed.
|
|
26
|
-
* Performance ✓ Zero overhead on success path (one
|
|
27
|
-
* `try/await` per call). Backoff delays
|
|
28
|
-
* use AbortSignal-aware sleep — no busy
|
|
29
|
-
* wait, no leaked timers.
|
|
30
|
-
* Scalability ✓ Per-call state only. Composition is
|
|
31
|
-
* constant-time per attempt; chain depth
|
|
32
|
-
* doesn't grow runtime cost.
|
|
33
|
-
* Research alignment ✓ Right-fold of `withFallback` matches
|
|
34
|
-
* the standard chain-of-responsibility
|
|
35
|
-
* shape. No exotic resumption — once a
|
|
36
|
-
* stream yields, it commits.
|
|
37
|
-
* Flexibility ✓ Predicates (`shouldRetry`,
|
|
38
|
-
* `shouldFallback`) and hooks
|
|
39
|
-
* (`onRetry`, `onFallback`) make every
|
|
40
|
-
* policy decision overridable. Default
|
|
41
|
-
* policies match common real-world signals
|
|
42
|
-
* (4xx skip, 429 retry, AbortError pass).
|
|
43
|
-
* Abstraction-modular ✓ Three primitives, one purpose each.
|
|
44
|
-
* `fallbackProvider` is sugar over chained
|
|
45
|
-
* `withFallback`. No surprises.
|
|
46
|
-
* Software engineering ✓ Pure decorators — no shared state.
|
|
47
|
-
* Every option has a documented default.
|
|
48
|
-
* Tests cover unit + scenario + integration
|
|
49
|
-
* + property + security + performance + ROI.
|
|
50
|
-
*
|
|
51
|
-
* ─── 7-pattern test coverage ───────────────────────────────────────
|
|
52
|
-
*
|
|
53
|
-
* Unit test/resilience/unit/withRetry.test.ts
|
|
54
|
-
* test/resilience/unit/withFallback.test.ts
|
|
55
|
-
* test/resilience/unit/fallbackProvider.test.ts
|
|
56
|
-
* Scenario resilience-patterns.test.ts → "production recipes"
|
|
57
|
-
* Integration resilience-patterns.test.ts → "Agent + resilient provider"
|
|
58
|
-
* Property resilience-patterns.test.ts → "invariants"
|
|
59
|
-
* Security resilience-patterns.test.ts → "hostile inputs"
|
|
60
|
-
* Performance resilience-patterns.test.ts → "performance"
|
|
61
|
-
* ROI resilience-patterns.test.ts → "realistic SLO budgets"
|
|
62
18
|
*/
|
|
63
19
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
64
20
|
exports.fallbackProvider = exports.withFallback = exports.withRetry = void 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/resilience/index.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/resilience/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;GAgBG;;;AAEH,+CAAkE;AAAzD,yGAAA,SAAS,OAAA;AAClB,qDAA2E;AAAlE,+GAAA,YAAY,OAAA;AACrB,6DAAuF;AAA9E,uHAAA,gBAAgB,OAAA"}
|
package/dist/stream.js
CHANGED
|
@@ -8,35 +8,6 @@
|
|
|
8
8
|
* framework that accepts an async iterable response body
|
|
9
9
|
* (Fetch Response, Express res.write, Hono streaming, etc.).
|
|
10
10
|
* Emits: N/A — observes only.
|
|
11
|
-
*
|
|
12
|
-
* ─── 7-panel design review (2026-04-28) ─────────────────────────────
|
|
13
|
-
*
|
|
14
|
-
* LLM-AI system design ✓ One-line-per-event SSE format. Each
|
|
15
|
-
* event = one observation; each chunk
|
|
16
|
-
* includes the `runtimeStageId` for
|
|
17
|
-
* cross-view binding.
|
|
18
|
-
* Performance ✓ AsyncIterable<string> — no buffering;
|
|
19
|
-
* yields each event as it arrives. Stops
|
|
20
|
-
* naturally when the run completes.
|
|
21
|
-
* Scalability ✓ Per-run instance. No shared state;
|
|
22
|
-
* many concurrent SSE streams safe.
|
|
23
|
-
* Research alignment ✓ Standard SSE wire format
|
|
24
|
-
* (text/event-stream). Browsers'
|
|
25
|
-
* native EventSource API consumes directly.
|
|
26
|
-
* Flexibility ✓ `format` option for full event payload
|
|
27
|
-
* vs slim text-only mode (chat UIs that
|
|
28
|
-
* only want token deltas). `filter`
|
|
29
|
-
* predicate gates events.
|
|
30
|
-
* Abstraction-modular ✓ One function (`toSSE`) + one class
|
|
31
|
-
* (`SSEFormatter`); class is sugar for
|
|
32
|
-
* consumers who prefer .pipeTo() shape.
|
|
33
|
-
* Software engineering ✓ Pure observer. No global state. Tests
|
|
34
|
-
* cover unit + scenario + property +
|
|
35
|
-
* security + performance.
|
|
36
|
-
*
|
|
37
|
-
* ─── 7-pattern test coverage ────────────────────────────────────────
|
|
38
|
-
*
|
|
39
|
-
* See `test/stream/unit/SSEFormatter.test.ts`.
|
|
40
11
|
*/
|
|
41
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
13
|
exports.encodeSSE = exports.SSEFormatter = exports.toSSE = void 0;
|
package/dist/stream.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream.js","sourceRoot":"","sources":["../src/stream.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"stream.js","sourceRoot":"","sources":["../src/stream.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,33 +7,6 @@
|
|
|
7
7
|
* recorders, or compositions.
|
|
8
8
|
* Emits: N/A — providers don't emit; recorders observe via Agent.
|
|
9
9
|
*
|
|
10
|
-
* ─── 7-panel design review (2026-04-28) ─────────────────────────────
|
|
11
|
-
*
|
|
12
|
-
* LLM-AI system design ✓ Native tool_use blocks. Round-trips
|
|
13
|
-
* assistant tool_calls via the new
|
|
14
|
-
* `LLMMessage.toolCalls` field — preserves
|
|
15
|
-
* multi-iteration ReAct correctness.
|
|
16
|
-
* Performance ✓ Single SDK call per `complete()`. Stream
|
|
17
|
-
* uses SDK's native iterator; no buffering.
|
|
18
|
-
* Scalability ✓ Stateless adapter. Concurrent runs share
|
|
19
|
-
* one provider instance freely.
|
|
20
|
-
* Research alignment ✓ Mirrors v1 AnthropicAdapter's tested
|
|
21
|
-
* message-conversion logic (origin/main
|
|
22
|
-
* `c6e11d0`); tool-result merge follows the
|
|
23
|
-
* documented Anthropic API expectation.
|
|
24
|
-
* Flexibility ✓ `_client` injection point for tests.
|
|
25
|
-
* `apiKey` falls back to env. `maxTokens`
|
|
26
|
-
* override per-construction or per-request.
|
|
27
|
-
* Abstraction-modular ✓ Two converters (toAnthropicMessages,
|
|
28
|
-
* fromAnthropicResponse) isolate the
|
|
29
|
-
* shape-shifting; `complete()` and
|
|
30
|
-
* `stream()` reuse them.
|
|
31
|
-
* Software engineering ✓ Duck-typed SDK shape (no hard import).
|
|
32
|
-
* Errors wrapped with provider tag for
|
|
33
|
-
* uniform downstream handling. Tests cover
|
|
34
|
-
* unit + scenario + integration + property
|
|
35
|
-
* + security + performance + ROI.
|
|
36
|
-
*
|
|
37
10
|
* ─── Limitations ────────────────────────────────────────────────────
|
|
38
11
|
*
|
|
39
12
|
* • Multi-modal content (images, video) NOT supported — the framework's
|
|
@@ -42,10 +15,6 @@
|
|
|
42
15
|
* in lockstep.
|
|
43
16
|
* • `responseFormat` (JSON-Schema-coerced output) NOT exposed
|
|
44
17
|
* — consumers can pass schema instructions via `systemPrompt`.
|
|
45
|
-
*
|
|
46
|
-
* ─── 7-pattern test coverage ────────────────────────────────────────
|
|
47
|
-
*
|
|
48
|
-
* See `test/adapters/llm/AnthropicProvider/*.test.ts`.
|
|
49
18
|
*/
|
|
50
19
|
import type { LLMChunk, LLMProvider, LLMRequest, LLMResponse } from '../types.js';
|
|
51
20
|
interface AnthropicClient {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AnthropicProvider.d.ts","sourceRoot":"","sources":["../../../../src/adapters/llm/AnthropicProvider.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"AnthropicProvider.d.ts","sourceRoot":"","sources":["../../../../src/adapters/llm/AnthropicProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,40 +10,14 @@
|
|
|
10
10
|
*
|
|
11
11
|
* Requires: `npm install @aws-sdk/client-bedrock-runtime`
|
|
12
12
|
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
* LLM-AI system design ✓ Converse API is model-agnostic — one
|
|
16
|
-
* adapter covers every Bedrock-hosted
|
|
17
|
-
* model. tool_use / tool_result blocks
|
|
18
|
-
* map cleanly to toolCalls.
|
|
19
|
-
* Performance ✓ Single SDK send() per `complete()`;
|
|
20
|
-
* ConverseStream for `stream()` yields
|
|
21
|
-
* deltas natively.
|
|
22
|
-
* Scalability ✓ Stateless adapter. AWS SDK handles
|
|
23
|
-
* credential refresh + region routing.
|
|
24
|
-
* Research alignment ✓ Mirrors v1 BedrockAdapter (origin/main
|
|
25
|
-
* `c6e11d0`). Maps same field renames
|
|
26
|
-
* (toolUseId, inputSchema.json, etc.).
|
|
27
|
-
* Flexibility ✓ `region` + `client` injectable. Model
|
|
28
|
-
* id passes through for fine-grained
|
|
29
|
-
* routing (cross-region inference profiles
|
|
30
|
-
* work as-is).
|
|
31
|
-
* Abstraction-modular ✓ Separate converters mirror the
|
|
32
|
-
* Anthropic/OpenAI adapters. Easy to keep
|
|
33
|
-
* in lockstep when LLMMessage evolves.
|
|
34
|
-
* Software engineering ✓ Duck-typed SDK shape. Errors wrapped
|
|
35
|
-
* with provider tag. Tests cover the
|
|
36
|
-
* 7-pattern matrix.
|
|
13
|
+
* The Converse API is model-agnostic — one adapter covers every
|
|
14
|
+
* Bedrock-hosted model (Claude, Llama, Mistral, Titan, Mixtral, ...).
|
|
37
15
|
*
|
|
38
16
|
* ─── Limitations ────────────────────────────────────────────────────
|
|
39
17
|
*
|
|
40
18
|
* • Multi-modal NOT supported (text content only).
|
|
41
19
|
* • Guardrail integration NOT exposed yet — pass via the SDK client
|
|
42
20
|
* directly if needed.
|
|
43
|
-
*
|
|
44
|
-
* ─── 7-pattern test coverage ────────────────────────────────────────
|
|
45
|
-
*
|
|
46
|
-
* See `test/adapters/unit/BedrockProvider.test.ts`.
|
|
47
21
|
*/
|
|
48
22
|
import type { LLMChunk, LLMProvider, LLMRequest, LLMResponse } from '../types.js';
|
|
49
23
|
interface BedrockClient {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BedrockProvider.d.ts","sourceRoot":"","sources":["../../../../src/adapters/llm/BedrockProvider.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"BedrockProvider.d.ts","sourceRoot":"","sources":["../../../../src/adapters/llm/BedrockProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EACV,QAAQ,EAER,WAAW,EACX,UAAU,EACV,WAAW,EAEZ,MAAM,aAAa,CAAC;AAIrB,UAAU,aAAa;IACrB,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1C;AAED,UAAU,sBAAsB;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,MAAM,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjC,UAAU,CAAC,EAAE;QAAE,KAAK,EAAE,WAAW,EAAE,CAAA;KAAE,CAAC;IACtC,eAAe,CAAC,EAAE;QAChB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;KAC1B,CAAC;CACH;AAED,UAAU,cAAc;IACtB,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,OAAO,EAAE,mBAAmB,EAAE,CAAC;CAChC;AAED,KAAK,mBAAmB,GACpB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,OAAO,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAA;CAAE,GAChF;IACE,UAAU,EAAE;QACV,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QACjC,MAAM,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC;KAC9B,CAAC;CACH,CAAC;AAEN,UAAU,WAAW;IACnB,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;SAAE,CAAC;KAChD,CAAC;CACH;AAkCD,MAAM,WAAW,sBAAsB;IACrC,uEAAuE;IACvE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,gEAAgE;IAChE,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,8CAA8C;IAC9C,QAAQ,CAAC,OAAO,CAAC,EAAE,aAAa,CAAC;IACjC;;;OAGG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE;QACnB,QAAQ,CAAC,QAAQ,EAAE,KAAK,KAAK,EAAE,sBAAsB,KAAK,OAAO,CAAC;QAClE,QAAQ,CAAC,cAAc,EAAE,KAAK,KAAK,EAAE,sBAAsB,KAAK,OAAO,CAAC;KACzE,CAAC;CACH;AAED,wBAAgB,OAAO,CAAC,OAAO,GAAE,sBAA2B,GAAG,WAAW,CA2EzE;AAED,qBAAa,eAAgB,YAAW,WAAW;IACjD,QAAQ,CAAC,IAAI,aAAa;IAC1B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAc;gBAExB,OAAO,GAAE,sBAA2B;IAIhD,QAAQ,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC;IAI/C,MAAM,CAAC,GAAG,EAAE,UAAU,GAAG,aAAa,CAAC,QAAQ,CAAC;CAIjD"}
|
|
@@ -12,41 +12,11 @@
|
|
|
12
12
|
* header for direct browser-to-API calls. This is intentional — production
|
|
13
13
|
* apps should proxy through a backend.
|
|
14
14
|
*
|
|
15
|
-
* ─── 7-panel design review (2026-04-28) ─────────────────────────────
|
|
16
|
-
*
|
|
17
|
-
* LLM-AI system design ✓ Same message + tool conversion as the
|
|
18
|
-
* Node `AnthropicProvider`. Native tool_use
|
|
19
|
-
* blocks; `LLMMessage.toolCalls` round-trip.
|
|
20
|
-
* Performance ✓ One fetch() per `complete()`. Stream
|
|
21
|
-
* uses native `ReadableStream` via SSE
|
|
22
|
-
* parsing — no buffering past one chunk.
|
|
23
|
-
* Scalability ✓ Stateless. Multiple agents share one
|
|
24
|
-
* provider; browser fetch handles
|
|
25
|
-
* concurrent requests fine.
|
|
26
|
-
* Research alignment ✓ Mirrors v1 BrowserAnthropicAdapter
|
|
27
|
-
* (origin/main `c6e11d0`). Same headers,
|
|
28
|
-
* same SSE event shape.
|
|
29
|
-
* Flexibility ✓ `apiUrl` override for proxy/edge
|
|
30
|
-
* deployments. Custom `fetch` injection
|
|
31
|
-
* for tests + workers.
|
|
32
|
-
* Abstraction-modular ✓ Re-uses `toAnthropicMessages` /
|
|
33
|
-
* `fromAnthropicResponse` semantics from
|
|
34
|
-
* the Node adapter (small duplication kept
|
|
35
|
-
* local — both files stay readable).
|
|
36
|
-
* Software engineering ✓ Zero peer deps (browser fetch is
|
|
37
|
-
* ambient). Errors wrapped with status
|
|
38
|
-
* for `withRetry` policy hooks. SSE parser
|
|
39
|
-
* handles partial chunks.
|
|
40
|
-
*
|
|
41
15
|
* ─── Limitations ────────────────────────────────────────────────────
|
|
42
16
|
*
|
|
43
|
-
* • Multi-modal NOT .
|
|
17
|
+
* • Multi-modal NOT supported.
|
|
44
18
|
* • Browser CORS — works because Anthropic explicitly allows the
|
|
45
19
|
* dangerous-direct header. Future API changes could require a proxy.
|
|
46
|
-
*
|
|
47
|
-
* ─── 7-pattern test coverage ────────────────────────────────────────
|
|
48
|
-
*
|
|
49
|
-
* See `test/adapters/unit/BrowserAnthropicProvider.test.ts`.
|
|
50
20
|
*/
|
|
51
21
|
import type { LLMChunk, LLMProvider, LLMRequest, LLMResponse } from '../types.js';
|
|
52
22
|
export interface BrowserAnthropicProviderOptions {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BrowserAnthropicProvider.d.ts","sourceRoot":"","sources":["../../../../src/adapters/llm/BrowserAnthropicProvider.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"BrowserAnthropicProvider.d.ts","sourceRoot":"","sources":["../../../../src/adapters/llm/BrowserAnthropicProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EACV,QAAQ,EAER,WAAW,EACX,UAAU,EACV,WAAW,EAEZ,MAAM,aAAa,CAAC;AA6CrB,MAAM,WAAW,+BAA+B;IAC9C,iEAAiE;IACjE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,8DAA8D;IAC9D,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,wCAAwC;IACxC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,+DAA+D;IAC/D,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,iEAAiE;IACjE,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,KAAK,CAAC;CAChC;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,+BAA+B,GAAG,WAAW,CAuGtF;AAED,qBAAa,wBAAyB,YAAW,WAAW;IAC1D,QAAQ,CAAC,IAAI,uBAAuB;IACpC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAc;gBAExB,OAAO,EAAE,+BAA+B;IAIpD,QAAQ,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC;IAI/C,MAAM,CAAC,GAAG,EAAE,UAAU,GAAG,aAAa,CAAC,QAAQ,CAAC;CAIjD"}
|
|
@@ -10,21 +10,11 @@
|
|
|
10
10
|
* Also works with OpenAI-compatible endpoints (Ollama, Together, vLLM)
|
|
11
11
|
* via `apiUrl`.
|
|
12
12
|
*
|
|
13
|
-
* ─── 7-panel review ─────────────────────────────────────────────────
|
|
14
|
-
*
|
|
15
|
-
* Same posture as `BrowserAnthropicProvider`: native fetch, SSE
|
|
16
|
-
* parser, stateless, error-wrapped, message-conversion mirrors the
|
|
17
|
-
* Node `OpenAIProvider`. See that adapter's review for full rubric.
|
|
18
|
-
*
|
|
19
13
|
* ─── Limitations ────────────────────────────────────────────────────
|
|
20
14
|
*
|
|
21
|
-
* • Multi-modal NOT .
|
|
15
|
+
* • Multi-modal NOT supported.
|
|
22
16
|
* • CORS depends on the endpoint — OpenAI requires the user-supplied
|
|
23
17
|
* key in the Authorization header, which they'll do explicitly.
|
|
24
|
-
*
|
|
25
|
-
* ─── 7-pattern test coverage ────────────────────────────────────────
|
|
26
|
-
*
|
|
27
|
-
* See `test/adapters/unit/BrowserOpenAIProvider.test.ts`.
|
|
28
18
|
*/
|
|
29
19
|
import type { LLMChunk, LLMProvider, LLMRequest, LLMResponse } from '../types.js';
|
|
30
20
|
export interface BrowserOpenAIProviderOptions {
|