agentfootprint 7.28.0 → 8.1.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.
Files changed (241) hide show
  1. package/AGENTS.md +23 -18
  2. package/README.md +41 -12
  3. package/ai-instructions/claude-code/SKILL.md +3 -3
  4. package/ai-instructions/clinerules +2 -2
  5. package/ai-instructions/copilot-instructions.md +2 -2
  6. package/ai-instructions/cursor/agentfootprint.md +2 -2
  7. package/ai-instructions/kiro/agentfootprint.md +2 -2
  8. package/ai-instructions/windsurfrules +2 -2
  9. package/dist/adapters/llm/OllamaProvider.js +628 -0
  10. package/dist/adapters/llm/OllamaProvider.js.map +1 -0
  11. package/dist/adapters/llm/OpenAIProvider.js +12 -21
  12. package/dist/adapters/llm/OpenAIProvider.js.map +1 -1
  13. package/dist/adapters/llm/createProvider.js +35 -6
  14. package/dist/adapters/llm/createProvider.js.map +1 -1
  15. package/dist/core/agent/AgentBuilder.js +45 -11
  16. package/dist/core/agent/AgentBuilder.js.map +1 -1
  17. package/dist/core/agent/watch.js +39 -0
  18. package/dist/core/agent/watch.js.map +1 -0
  19. package/dist/core/agent/window/errors.js +4 -3
  20. package/dist/core/agent/window/errors.js.map +1 -1
  21. package/dist/core/agent/window/strategies/slidingWindow.js +2 -2
  22. package/dist/debug/finders.js +4 -0
  23. package/dist/debug/finders.js.map +1 -1
  24. package/dist/debug.js +4 -0
  25. package/dist/debug.js.map +1 -1
  26. package/dist/doors/context.js +34 -0
  27. package/dist/doors/context.js.map +1 -0
  28. package/dist/doors/hosting.js +32 -0
  29. package/dist/doors/hosting.js.map +1 -0
  30. package/dist/doors/memory.js +36 -0
  31. package/dist/doors/memory.js.map +1 -0
  32. package/dist/doors/observe.js +52 -0
  33. package/dist/doors/observe.js.map +1 -0
  34. package/dist/doors/providers.js +43 -0
  35. package/dist/doors/providers.js.map +1 -0
  36. package/dist/doors/resilience.js +61 -0
  37. package/dist/doors/resilience.js.map +1 -0
  38. package/dist/doors/security.js +39 -0
  39. package/dist/doors/security.js.map +1 -0
  40. package/dist/embedders/index.js.map +1 -1
  41. package/dist/esm/adapters/llm/OllamaProvider.d.ts +182 -0
  42. package/dist/esm/adapters/llm/OllamaProvider.js +622 -0
  43. package/dist/esm/adapters/llm/OllamaProvider.js.map +1 -0
  44. package/dist/esm/adapters/llm/OpenAIProvider.d.ts +0 -12
  45. package/dist/esm/adapters/llm/OpenAIProvider.js +11 -19
  46. package/dist/esm/adapters/llm/OpenAIProvider.js.map +1 -1
  47. package/dist/esm/adapters/llm/createProvider.d.ts +25 -8
  48. package/dist/esm/adapters/llm/createProvider.js +35 -6
  49. package/dist/esm/adapters/llm/createProvider.js.map +1 -1
  50. package/dist/esm/core/agent/AgentBuilder.d.ts +37 -7
  51. package/dist/esm/core/agent/AgentBuilder.js +45 -11
  52. package/dist/esm/core/agent/AgentBuilder.js.map +1 -1
  53. package/dist/esm/core/agent/watch.d.ts +59 -0
  54. package/dist/esm/core/agent/watch.js +38 -0
  55. package/dist/esm/core/agent/watch.js.map +1 -0
  56. package/dist/esm/core/agent/window/errors.js +4 -3
  57. package/dist/esm/core/agent/window/errors.js.map +1 -1
  58. package/dist/esm/core/agent/window/strategies/slidingWindow.d.ts +2 -2
  59. package/dist/esm/core/agent/window/strategies/slidingWindow.js +2 -2
  60. package/dist/esm/debug/finders.d.ts +4 -0
  61. package/dist/esm/debug/finders.js +4 -0
  62. package/dist/esm/debug/finders.js.map +1 -1
  63. package/dist/esm/debug.d.ts +4 -0
  64. package/dist/esm/debug.js +4 -0
  65. package/dist/esm/debug.js.map +1 -1
  66. package/dist/esm/doors/context.d.ts +17 -0
  67. package/dist/esm/doors/context.js +18 -0
  68. package/dist/esm/doors/context.js.map +1 -0
  69. package/dist/esm/doors/hosting.d.ts +15 -0
  70. package/dist/esm/doors/hosting.js +16 -0
  71. package/dist/esm/doors/hosting.js.map +1 -0
  72. package/dist/esm/doors/memory.d.ts +19 -0
  73. package/dist/esm/doors/memory.js +20 -0
  74. package/dist/esm/doors/memory.js.map +1 -0
  75. package/dist/esm/doors/observe.d.ts +35 -0
  76. package/dist/esm/doors/observe.js +36 -0
  77. package/dist/esm/doors/observe.js.map +1 -0
  78. package/dist/esm/doors/providers.d.ts +26 -0
  79. package/dist/esm/doors/providers.js +27 -0
  80. package/dist/esm/doors/providers.js.map +1 -0
  81. package/dist/esm/doors/resilience.d.ts +37 -0
  82. package/dist/esm/doors/resilience.js +39 -0
  83. package/dist/esm/doors/resilience.js.map +1 -0
  84. package/dist/esm/doors/security.d.ts +22 -0
  85. package/dist/esm/doors/security.js +23 -0
  86. package/dist/esm/doors/security.js.map +1 -0
  87. package/dist/esm/embedders/index.d.ts +4 -0
  88. package/dist/esm/embedders/index.js.map +1 -1
  89. package/dist/esm/hosting-providers.d.ts +4 -0
  90. package/dist/esm/hosting-providers.js +4 -0
  91. package/dist/esm/hosting-providers.js.map +1 -1
  92. package/dist/esm/identity.d.ts +4 -0
  93. package/dist/esm/identity.js +4 -0
  94. package/dist/esm/identity.js.map +1 -1
  95. package/dist/esm/index.d.ts +1 -0
  96. package/dist/esm/index.js.map +1 -1
  97. package/dist/esm/injection-engine.d.ts +4 -0
  98. package/dist/esm/injection-engine.js +4 -0
  99. package/dist/esm/injection-engine.js.map +1 -1
  100. package/dist/esm/llm-providers.d.ts +4 -0
  101. package/dist/esm/llm-providers.js +4 -0
  102. package/dist/esm/llm-providers.js.map +1 -1
  103. package/dist/esm/locales/index.d.ts +4 -0
  104. package/dist/esm/locales/index.js +4 -0
  105. package/dist/esm/locales/index.js.map +1 -1
  106. package/dist/esm/memory-providers.d.ts +4 -0
  107. package/dist/esm/memory-providers.js +4 -0
  108. package/dist/esm/memory-providers.js.map +1 -1
  109. package/dist/esm/observability/contextError/finders/index.d.ts +4 -0
  110. package/dist/esm/observability/contextError/finders/index.js.map +1 -1
  111. package/dist/esm/observability-providers.d.ts +4 -0
  112. package/dist/esm/observability-providers.js +4 -0
  113. package/dist/esm/observability-providers.js.map +1 -1
  114. package/dist/esm/providers.d.ts +13 -5
  115. package/dist/esm/providers.js +13 -5
  116. package/dist/esm/providers.js.map +1 -1
  117. package/dist/esm/reliability/index.d.ts +8 -0
  118. package/dist/esm/reliability/index.js +8 -0
  119. package/dist/esm/reliability/index.js.map +1 -1
  120. package/dist/esm/status.d.ts +4 -0
  121. package/dist/esm/status.js +4 -0
  122. package/dist/esm/status.js.map +1 -1
  123. package/dist/esm/strategies/index.d.ts +4 -0
  124. package/dist/esm/strategies/index.js +4 -0
  125. package/dist/esm/strategies/index.js.map +1 -1
  126. package/dist/esm/stream.d.ts +4 -0
  127. package/dist/esm/stream.js +4 -0
  128. package/dist/esm/stream.js.map +1 -1
  129. package/dist/esm/thinking/OllamaThinkingHandler.d.ts +60 -0
  130. package/dist/esm/thinking/OllamaThinkingHandler.js +107 -0
  131. package/dist/esm/thinking/OllamaThinkingHandler.js.map +1 -0
  132. package/dist/esm/thinking/index.d.ts +5 -0
  133. package/dist/esm/thinking/index.js +5 -0
  134. package/dist/esm/thinking/index.js.map +1 -1
  135. package/dist/esm/thinking/registry.js +2 -0
  136. package/dist/esm/thinking/registry.js.map +1 -1
  137. package/dist/esm/tool-providers/index.d.ts +4 -0
  138. package/dist/esm/tool-providers/index.js +4 -0
  139. package/dist/esm/tool-providers/index.js.map +1 -1
  140. package/dist/hosting-providers.js +4 -0
  141. package/dist/hosting-providers.js.map +1 -1
  142. package/dist/identity.js +4 -0
  143. package/dist/identity.js.map +1 -1
  144. package/dist/index.js.map +1 -1
  145. package/dist/injection-engine.js +4 -0
  146. package/dist/injection-engine.js.map +1 -1
  147. package/dist/llm-providers.js +4 -0
  148. package/dist/llm-providers.js.map +1 -1
  149. package/dist/locales/index.js +4 -0
  150. package/dist/locales/index.js.map +1 -1
  151. package/dist/memory-providers.js +4 -0
  152. package/dist/memory-providers.js.map +1 -1
  153. package/dist/observability/contextError/finders/index.js.map +1 -1
  154. package/dist/observability-providers.js +4 -0
  155. package/dist/observability-providers.js.map +1 -1
  156. package/dist/providers.js +16 -6
  157. package/dist/providers.js.map +1 -1
  158. package/dist/reliability/index.js +8 -0
  159. package/dist/reliability/index.js.map +1 -1
  160. package/dist/status.js +4 -0
  161. package/dist/status.js.map +1 -1
  162. package/dist/strategies/index.js +4 -0
  163. package/dist/strategies/index.js.map +1 -1
  164. package/dist/stream.js +4 -0
  165. package/dist/stream.js.map +1 -1
  166. package/dist/thinking/OllamaThinkingHandler.js +111 -0
  167. package/dist/thinking/OllamaThinkingHandler.js.map +1 -0
  168. package/dist/thinking/index.js +8 -1
  169. package/dist/thinking/index.js.map +1 -1
  170. package/dist/thinking/registry.js +2 -0
  171. package/dist/thinking/registry.js.map +1 -1
  172. package/dist/tool-providers/index.js +4 -0
  173. package/dist/tool-providers/index.js.map +1 -1
  174. package/dist/types/adapters/llm/OllamaProvider.d.ts +183 -0
  175. package/dist/types/adapters/llm/OllamaProvider.d.ts.map +1 -0
  176. package/dist/types/adapters/llm/OpenAIProvider.d.ts +0 -12
  177. package/dist/types/adapters/llm/OpenAIProvider.d.ts.map +1 -1
  178. package/dist/types/adapters/llm/createProvider.d.ts +25 -8
  179. package/dist/types/adapters/llm/createProvider.d.ts.map +1 -1
  180. package/dist/types/core/agent/AgentBuilder.d.ts +37 -7
  181. package/dist/types/core/agent/AgentBuilder.d.ts.map +1 -1
  182. package/dist/types/core/agent/watch.d.ts +60 -0
  183. package/dist/types/core/agent/watch.d.ts.map +1 -0
  184. package/dist/types/core/agent/window/errors.d.ts.map +1 -1
  185. package/dist/types/core/agent/window/strategies/slidingWindow.d.ts +2 -2
  186. package/dist/types/debug/finders.d.ts +4 -0
  187. package/dist/types/debug/finders.d.ts.map +1 -1
  188. package/dist/types/debug.d.ts +4 -0
  189. package/dist/types/debug.d.ts.map +1 -1
  190. package/dist/types/doors/context.d.ts +18 -0
  191. package/dist/types/doors/context.d.ts.map +1 -0
  192. package/dist/types/doors/hosting.d.ts +16 -0
  193. package/dist/types/doors/hosting.d.ts.map +1 -0
  194. package/dist/types/doors/memory.d.ts +20 -0
  195. package/dist/types/doors/memory.d.ts.map +1 -0
  196. package/dist/types/doors/observe.d.ts +36 -0
  197. package/dist/types/doors/observe.d.ts.map +1 -0
  198. package/dist/types/doors/providers.d.ts +27 -0
  199. package/dist/types/doors/providers.d.ts.map +1 -0
  200. package/dist/types/doors/resilience.d.ts +38 -0
  201. package/dist/types/doors/resilience.d.ts.map +1 -0
  202. package/dist/types/doors/security.d.ts +23 -0
  203. package/dist/types/doors/security.d.ts.map +1 -0
  204. package/dist/types/embedders/index.d.ts +4 -0
  205. package/dist/types/embedders/index.d.ts.map +1 -1
  206. package/dist/types/hosting-providers.d.ts +4 -0
  207. package/dist/types/hosting-providers.d.ts.map +1 -1
  208. package/dist/types/identity.d.ts +4 -0
  209. package/dist/types/identity.d.ts.map +1 -1
  210. package/dist/types/index.d.ts +1 -0
  211. package/dist/types/index.d.ts.map +1 -1
  212. package/dist/types/injection-engine.d.ts +4 -0
  213. package/dist/types/injection-engine.d.ts.map +1 -1
  214. package/dist/types/llm-providers.d.ts +4 -0
  215. package/dist/types/llm-providers.d.ts.map +1 -1
  216. package/dist/types/locales/index.d.ts +4 -0
  217. package/dist/types/locales/index.d.ts.map +1 -1
  218. package/dist/types/memory-providers.d.ts +4 -0
  219. package/dist/types/memory-providers.d.ts.map +1 -1
  220. package/dist/types/observability/contextError/finders/index.d.ts +4 -0
  221. package/dist/types/observability/contextError/finders/index.d.ts.map +1 -1
  222. package/dist/types/observability-providers.d.ts +4 -0
  223. package/dist/types/observability-providers.d.ts.map +1 -1
  224. package/dist/types/providers.d.ts +13 -5
  225. package/dist/types/providers.d.ts.map +1 -1
  226. package/dist/types/reliability/index.d.ts +8 -0
  227. package/dist/types/reliability/index.d.ts.map +1 -1
  228. package/dist/types/status.d.ts +4 -0
  229. package/dist/types/status.d.ts.map +1 -1
  230. package/dist/types/strategies/index.d.ts +4 -0
  231. package/dist/types/strategies/index.d.ts.map +1 -1
  232. package/dist/types/stream.d.ts +4 -0
  233. package/dist/types/stream.d.ts.map +1 -1
  234. package/dist/types/thinking/OllamaThinkingHandler.d.ts +61 -0
  235. package/dist/types/thinking/OllamaThinkingHandler.d.ts.map +1 -0
  236. package/dist/types/thinking/index.d.ts +5 -0
  237. package/dist/types/thinking/index.d.ts.map +1 -1
  238. package/dist/types/thinking/registry.d.ts.map +1 -1
  239. package/dist/types/tool-providers/index.d.ts +4 -0
  240. package/dist/types/tool-providers/index.d.ts.map +1 -1
  241. package/package.json +184 -155
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ /**
3
+ * agentfootprint/observe — everything that watches.
4
+ *
5
+ * One door for the whole watching story, which used to be nine:
6
+ *
7
+ * • Recorders — the Tier 1/2/3 observers, `recordRun`, the
8
+ * offline `Trace`, the context ledger.
9
+ * • Diagnosis — influence scoring, trace toolpack, context-bisect,
10
+ * tool lint, and the pluggable context-error finders.
11
+ * • Vendor sinks — AgentCore / CloudWatch / X-Ray / OTel strategies,
12
+ * plus the tamper-evident audit export.
13
+ * • Strategy ports — the observability / cost / live-status / lens
14
+ * interfaces and their `attach*` helpers.
15
+ * • Delivery — `toSSE` and friends, for streaming a run to a
16
+ * browser.
17
+ * • Status + words — the chat-bubble state machine AND the message
18
+ * catalogs it renders with. The logic and the prose
19
+ * are one story, so they are one door.
20
+ *
21
+ * The typed event stream those observers consume is its own door,
22
+ * `agentfootprint/events` — it is the wire vocabulary, not a watching tool.
23
+ *
24
+ * @example
25
+ * ```ts
26
+ * import { recordRun, toolChoiceRecorder, selectStatus } from 'agentfootprint/observe';
27
+ * ```
28
+ */
29
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
30
+ if (k2 === undefined) k2 = k;
31
+ var desc = Object.getOwnPropertyDescriptor(m, k);
32
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
33
+ desc = { enumerable: true, get: function() { return m[k]; } };
34
+ }
35
+ Object.defineProperty(o, k2, desc);
36
+ }) : (function(o, m, k, k2) {
37
+ if (k2 === undefined) k2 = k;
38
+ o[k2] = m[k];
39
+ }));
40
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
41
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
42
+ };
43
+ Object.defineProperty(exports, "__esModule", { value: true });
44
+ __exportStar(require("../observe.js"), exports);
45
+ __exportStar(require("../observability-providers.js"), exports);
46
+ __exportStar(require("../strategies/index.js"), exports);
47
+ __exportStar(require("../stream.js"), exports);
48
+ __exportStar(require("../status.js"), exports);
49
+ __exportStar(require("../debug.js"), exports);
50
+ __exportStar(require("../debug/finders.js"), exports);
51
+ __exportStar(require("../locales/index.js"), exports);
52
+ //# sourceMappingURL=observe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observe.js","sourceRoot":"","sources":["../../src/doors/observe.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;;;;;;;;;;;;;;;;AAEH,gDAA8B;AAC9B,gEAA8C;AAC9C,yDAAuC;AACvC,+CAA6B;AAC7B,+CAA6B;AAC7B,8CAA4B;AAC5B,sDAAoC;AACpC,sDAAoC"}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ /**
3
+ * agentfootprint/providers — everything you plug a backend into.
4
+ *
5
+ * One door for every "here is the thing that actually does the work":
6
+ *
7
+ * • LLM providers — `mock`, `anthropic`, `openai`, `bedrock`, the
8
+ * browser variants, `createProvider`, and the
9
+ * `LLMProvider` port you implement for your own.
10
+ * • Embedders — `openaiEmbedder`, `localEmbedder`, `staticEmbedder`.
11
+ * • Tool providers — `staticTools`, `gatedTools`, `skillScopedTools`,
12
+ * plus the MCP client/server bridge.
13
+ * • Thinking handlers — per-vendor parsing of extended-thinking blocks,
14
+ * which is a provider concern wearing another hat.
15
+ *
16
+ * Each vendor SDK is lazy-required, so importing this door loads no vendor
17
+ * code — only calling a factory does.
18
+ *
19
+ * @example
20
+ * ```ts
21
+ * import { anthropic, staticTools, openaiEmbedder } from 'agentfootprint/providers';
22
+ * ```
23
+ */
24
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
25
+ if (k2 === undefined) k2 = k;
26
+ var desc = Object.getOwnPropertyDescriptor(m, k);
27
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
28
+ desc = { enumerable: true, get: function() { return m[k]; } };
29
+ }
30
+ Object.defineProperty(o, k2, desc);
31
+ }) : (function(o, m, k, k2) {
32
+ if (k2 === undefined) k2 = k;
33
+ o[k2] = m[k];
34
+ }));
35
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
36
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ __exportStar(require("../llm-providers.js"), exports);
40
+ __exportStar(require("../embedders/index.js"), exports);
41
+ __exportStar(require("../tool-providers/index.js"), exports);
42
+ __exportStar(require("../thinking/index.js"), exports);
43
+ //# sourceMappingURL=providers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providers.js","sourceRoot":"","sources":["../../src/doors/providers.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;;;;;;;;;;;;;;;;AAEH,sDAAoC;AACpC,wDAAsC;AACtC,6DAA2C;AAC3C,uDAAqC"}
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ /**
3
+ * agentfootprint/resilience — what happens when the call fails.
4
+ *
5
+ * Both halves of staying up, behind one name:
6
+ *
7
+ * • Provider decorators — `withRetry`, `withFallback`, `fallbackProvider`,
8
+ * `withCircuitBreaker`. Each preserves the `LLMProvider` interface, so
9
+ * they stack freely around any provider.
10
+ * • The rules engine — `.reliability({ postDecide: [...] })`'s typed rule
11
+ * shapes, the fail-fast error, the pure breaker state machine, and the
12
+ * schema-retry helpers.
13
+ *
14
+ * ## One name that exists twice, said out loud
15
+ *
16
+ * `CircuitOpenError` is TWO different classes: the decorator throws one
17
+ * (`src/resilience/withCircuitBreaker.ts`), the reliability gate throws
18
+ * another (`src/reliability/CircuitBreaker.ts`), and they differ in
19
+ * constructor and in `instanceof`. This door carries the DECORATOR's — the
20
+ * one a consumer catches, since it is the one that escapes a provider call.
21
+ *
22
+ * The gate's stays reachable at `agentfootprint/reliability` for all of 8.x.
23
+ * If you `instanceof`-check the error thrown by the reliability gate, keep
24
+ * importing it from there. Merging them would have changed the message text
25
+ * on one path, and this release changes packaging only.
26
+ *
27
+ * `CircuitState` also exists twice, but the two are byte-identical
28
+ * (`'closed' | 'open' | 'half-open'`), so the one re-exported here satisfies
29
+ * both and no consumer can tell the difference.
30
+ *
31
+ * @example
32
+ * ```ts
33
+ * import { withRetry, withFallback, type ReliabilityRule } from 'agentfootprint/resilience';
34
+ * ```
35
+ */
36
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
37
+ if (k2 === undefined) k2 = k;
38
+ var desc = Object.getOwnPropertyDescriptor(m, k);
39
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
40
+ desc = { enumerable: true, get: function() { return m[k]; } };
41
+ }
42
+ Object.defineProperty(o, k2, desc);
43
+ }) : (function(o, m, k, k2) {
44
+ if (k2 === undefined) k2 = k;
45
+ o[k2] = m[k];
46
+ }));
47
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
48
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
49
+ };
50
+ Object.defineProperty(exports, "__esModule", { value: true });
51
+ exports.ValidationFailure = exports.ReliabilityFailFastError = exports.lastNValidationErrorsMatch = exports.initialBreakerState = exports.defaultStuckLoopRule = void 0;
52
+ // The decorators, whole. This is also where the door's `CircuitOpenError`
53
+ // and `CircuitState` come from — see the note above.
54
+ __exportStar(require("../resilience/index.js"), exports);
55
+ var index_js_1 = require("../reliability/index.js");
56
+ Object.defineProperty(exports, "defaultStuckLoopRule", { enumerable: true, get: function () { return index_js_1.defaultStuckLoopRule; } });
57
+ Object.defineProperty(exports, "initialBreakerState", { enumerable: true, get: function () { return index_js_1.initialBreakerState; } });
58
+ Object.defineProperty(exports, "lastNValidationErrorsMatch", { enumerable: true, get: function () { return index_js_1.lastNValidationErrorsMatch; } });
59
+ Object.defineProperty(exports, "ReliabilityFailFastError", { enumerable: true, get: function () { return index_js_1.ReliabilityFailFastError; } });
60
+ Object.defineProperty(exports, "ValidationFailure", { enumerable: true, get: function () { return index_js_1.ValidationFailure; } });
61
+ //# sourceMappingURL=resilience.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resilience.js","sourceRoot":"","sources":["../../src/doors/resilience.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;;;;;;;;;;;;;;;;;AAEH,0EAA0E;AAC1E,qDAAqD;AACrD,yDAAuC;AAgBvC,oDAMiC;AAL/B,gHAAA,oBAAoB,OAAA;AACpB,+GAAA,mBAAmB,OAAA;AACnB,sHAAA,0BAA0B,OAAA;AAC1B,oHAAA,wBAAwB,OAAA;AACxB,6GAAA,iBAAiB,OAAA"}
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ /**
3
+ * agentfootprint/security — who may do what, and with whose credentials.
4
+ *
5
+ * Two halves of the same question:
6
+ *
7
+ * • Authorization — `PermissionPolicy`, `PolicyHaltError`, the
8
+ * `PermissionChecker` port, the remote `agentCorePolicy` engine, and
9
+ * thinking-block redaction.
10
+ * • Identity — the `CredentialProvider` port, the credential kinds
11
+ * (`bearer`, `apiKey`, `basic`, `headers`), `staticTokens`,
12
+ * `withCredentialRetry`, and `agentCoreIdentity`.
13
+ *
14
+ * A vended credential is a secret: use it locally inside a tool's `execute`
15
+ * and never write it to tracked scope.
16
+ *
17
+ * @example
18
+ * ```ts
19
+ * import { PermissionPolicy, agentCoreIdentity } from 'agentfootprint/security';
20
+ * ```
21
+ */
22
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
23
+ if (k2 === undefined) k2 = k;
24
+ var desc = Object.getOwnPropertyDescriptor(m, k);
25
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
26
+ desc = { enumerable: true, get: function() { return m[k]; } };
27
+ }
28
+ Object.defineProperty(o, k2, desc);
29
+ }) : (function(o, m, k, k2) {
30
+ if (k2 === undefined) k2 = k;
31
+ o[k2] = m[k];
32
+ }));
33
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
34
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
35
+ };
36
+ Object.defineProperty(exports, "__esModule", { value: true });
37
+ __exportStar(require("../security/index.js"), exports);
38
+ __exportStar(require("../identity.js"), exports);
39
+ //# sourceMappingURL=security.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"security.js","sourceRoot":"","sources":["../../src/doors/security.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;GAmBG;;;;;;;;;;;;;;;;AAEH,uDAAqC;AACrC,iDAA+B"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/embedders/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/embedders/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,182 @@
1
+ /**
2
+ * OllamaProvider — local models over Ollama's native `/api/chat`.
3
+ *
4
+ * Pattern: Adapter (GoF) + Ports-and-Adapters (Cockburn 2005).
5
+ * Role: Outer ring — translates `LLMRequest`/`LLMResponse` to/from
6
+ * Ollama's native chat wire. Knows nothing about agents,
7
+ * recorders, or compositions.
8
+ * Emits: N/A.
9
+ *
10
+ * ─── Why this exists, and why it talks the native wire ───────────────
11
+ *
12
+ * The adapter ladder is `mock()` → a local model → a paid API, and the
13
+ * strongest version of "the test run and the production run are the same
14
+ * code path" is one where the middle step costs nothing and needs no API
15
+ * key. Through 8.0.0 the middle step needed BOTH a competitor's SDK
16
+ * (`npm install openai`, because `ollama()` was a thin wrapper over
17
+ * `openai({ baseURL })`) and a tolerance for failures labelled `[openai]`.
18
+ * That is not a free rung.
19
+ *
20
+ * So this file owns the wire:
21
+ *
22
+ * • ZERO dependencies — one `fetch` POST and NDJSON. Nothing to install
23
+ * beyond Ollama itself. (Same choice, same reasons, as the two
24
+ * `Browser*Provider` adapters.)
25
+ * • HONEST REFUSALS — a typed {@link OllamaUnavailableError} that names
26
+ * the address it tried and the command to run. Owning the fetch and
27
+ * the status code is what makes that possible; through an SDK you get
28
+ * whatever the SDK decided to throw.
29
+ * • REAL TOKEN COUNTS — `/api/chat` returns `prompt_eval_count` /
30
+ * `eval_count` on every response, streaming or not, with no opt-in
31
+ * flag. Through the OpenAI-compatible endpoint a streamed local call
32
+ * reported ZERO tokens, which silently disarmed `.compaction()` and
33
+ * `costBudget` (see `CompactionUnmeasurableError`, whose message names
34
+ * this exact case).
35
+ * • STRUCTURED THINKING — `message.thinking` is a first-class field on
36
+ * this wire; the OpenAI-compatible layer renames it to a non-standard
37
+ * `reasoning` key that no OpenAI adapter reads. See
38
+ * `OllamaThinkingHandler`.
39
+ *
40
+ * Want the SDK path instead? It is still there and still supported:
41
+ * `openai({ baseURL: 'http://localhost:11434/v1', apiKey: 'ollama' })`.
42
+ *
43
+ * ─── Ceilings (stated, not worked around) ────────────────────────────
44
+ *
45
+ * • TOOL CALLING IS MODEL-DEPENDENT. Ollama forwards a `tools` array to
46
+ * any model; a model that was not trained for tools simply answers in
47
+ * prose and no tool call ever arrives. This adapter does not preflight
48
+ * `/api/show` capabilities to refuse first — a wrong refusal is worse
49
+ * than a weak answer, and the metadata is less reliable than the
50
+ * ceiling being written down. Pick a tool-capable model.
51
+ * • NO FORCED TOOL CHOICE. Ollama does not support `tool_choice` on
52
+ * either wire, so `carriesForcedToolChoice` is `false` and an agent
53
+ * using `.outputSchema(parser, { strategy: 'tool-forced' })` refuses at
54
+ * run start, naming this provider.
55
+ * • NO MULTI-MODAL. The wire carries `images`; `LLMMessage.content` is a
56
+ * string. Same ceiling as every other adapter here.
57
+ * • NO PROMPT CACHING — resolves to the NoOp cache strategy.
58
+ * • NO `providerRef`. The native wire returns no response id, and a
59
+ * fabricated one would point at nothing.
60
+ */
61
+ import type { LLMCallHooks, LLMChunk, LLMProvider, LLMRequest, LLMResponse, WireRole } from '../types.js';
62
+ /** How hard a thinking model should think. Ollama's own vocabulary. */
63
+ export type ThinkLevel = 'low' | 'medium' | 'high' | 'max';
64
+ /**
65
+ * The two failures a local runtime actually has, told in words that
66
+ * contain the fix.
67
+ *
68
+ * Both are things the person at the keyboard can resolve in one command,
69
+ * which is exactly why they get a type instead of a wrapped
70
+ * `ECONNREFUSED` or a bare `404`. `reason` is the discriminator; the
71
+ * message already reads as instructions.
72
+ */
73
+ export declare class OllamaUnavailableError extends Error {
74
+ readonly name = "OllamaUnavailableError";
75
+ /** Which of the two situations this is. */
76
+ readonly reason: 'daemon-unreachable' | 'model-not-pulled';
77
+ /** The address that was tried — the thing to check or change. */
78
+ readonly baseUrl: string;
79
+ /** The model asked for. Absent when the daemon never answered at all. */
80
+ readonly model?: string;
81
+ /** Models this machine DOES have, when the daemon could tell us. */
82
+ readonly availableModels?: readonly string[];
83
+ constructor(init: {
84
+ reason: 'daemon-unreachable' | 'model-not-pulled';
85
+ baseUrl: string;
86
+ model?: string;
87
+ availableModels?: readonly string[];
88
+ cause?: unknown;
89
+ });
90
+ }
91
+ export interface OllamaProviderOptions {
92
+ /**
93
+ * Where Ollama is listening. Defaults to `OLLAMA_HOST` when set,
94
+ * otherwise `http://localhost:11434`. A bare `host:port` gets `http://`.
95
+ *
96
+ * Point it at the ROOT, not at a path — this adapter talks to
97
+ * `/api/chat` and `/api/tags` itself. A URL ending in `/v1` (the
98
+ * OpenAI-compatible path) is accepted and trimmed, so a config written
99
+ * for the 8.0.0 factory keeps working.
100
+ */
101
+ readonly baseUrl?: string;
102
+ /** Shipped-in-8.0.0 spelling of {@link baseUrl}. Still honored. */
103
+ readonly host?: string;
104
+ /** Shipped-in-8.0.0 spelling of {@link baseUrl}. Still honored. */
105
+ readonly baseURL?: string;
106
+ /**
107
+ * Model used when `LLMRequest.model` is the `'ollama'` shorthand.
108
+ * Prefer the positional form: `ollama('qwen3')`.
109
+ */
110
+ readonly defaultModel?: string;
111
+ /** Default token cap when the request doesn't set one. Maps to `num_predict`. */
112
+ readonly defaultMaxTokens?: number;
113
+ /**
114
+ * Ask a thinking model to reason before answering. `true` turns it on;
115
+ * `'low' | 'medium' | 'high' | 'max'` sets how hard.
116
+ *
117
+ * Worth setting on reasoning models (deepseek-r1, qwen3, gpt-oss, …):
118
+ * with `think` on, Ollama lifts the reasoning OUT of the answer into
119
+ * `message.thinking`, where `ollamaThinkingHandler` normalizes it.
120
+ * With it off, the same model leaves `<think>…</think>` sitting in the
121
+ * answer text.
122
+ *
123
+ * A per-request `LLMRequest.thinking` (what `AgentBuilder.thinking()`
124
+ * sets) also turns it on; this option is the always-on default and the
125
+ * only way to name a level.
126
+ */
127
+ readonly think?: boolean | ThinkLevel;
128
+ /** How long Ollama keeps the model in memory after a call, e.g. `'5m'`. */
129
+ readonly keepAlive?: string | number;
130
+ /**
131
+ * How long to wait for the daemon to ANSWER, in ms. Default 10000.
132
+ *
133
+ * This bounds the wait for response headers, NOT generation: a laptop
134
+ * model may take minutes to finish a long answer and that is fine. What
135
+ * it prevents is the failure this whole file exists to avoid — a run
136
+ * that hangs because nothing is listening.
137
+ */
138
+ readonly timeoutMs?: number;
139
+ /** Accepted and ignored — Ollama needs no key. Kept so 8.0.0 configs still typecheck. */
140
+ readonly apiKey?: string;
141
+ /** @internal Custom fetch implementation for tests. */
142
+ readonly _fetch?: typeof fetch;
143
+ }
144
+ /**
145
+ * Build an `LLMProvider` backed by a local Ollama runtime.
146
+ *
147
+ * Free, offline, no API key. The rung between `mock()` and a paid API —
148
+ * and the agent code above it does not change between the three.
149
+ *
150
+ * @example
151
+ * import { Agent } from 'agentfootprint';
152
+ * import { ollama } from 'agentfootprint/providers';
153
+ *
154
+ * const agent = Agent.create({
155
+ * provider: ollama('qwen3'),
156
+ * model: 'qwen3',
157
+ * }).build();
158
+ *
159
+ * @example // reasoning model, thinking lifted out of the answer
160
+ * ollama('deepseek-r1', { think: 'high' });
161
+ *
162
+ * @example // a runtime on another machine
163
+ * ollama('llama3.2', { baseUrl: 'http://192.168.1.20:11434' });
164
+ */
165
+ export declare function ollama(model: string, options?: OllamaProviderOptions): LLMProvider;
166
+ /**
167
+ * Object form, as shipped in 8.0.0. Still supported — `host` / `baseURL` /
168
+ * `defaultModel` / `apiKey` all keep their meaning.
169
+ */
170
+ export declare function ollama(options?: OllamaProviderOptions): LLMProvider;
171
+ /**
172
+ * Class form for consumers who prefer `new OllamaProvider(...)`.
173
+ */
174
+ export declare class OllamaProvider implements LLMProvider {
175
+ readonly name = "ollama";
176
+ readonly carriesInMessages: readonly WireRole[];
177
+ readonly carriesForcedToolChoice = false;
178
+ private readonly inner;
179
+ constructor(model?: string | OllamaProviderOptions, options?: OllamaProviderOptions);
180
+ complete(req: LLMRequest, hooks?: LLMCallHooks): Promise<LLMResponse>;
181
+ stream(req: LLMRequest, hooks?: LLMCallHooks): AsyncIterable<LLMChunk>;
182
+ }