@uwmd/core 1.1.2 → 1.3.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 (153) hide show
  1. package/README.md +3 -3
  2. package/dist/agents/bancroft.d.ts +22 -1
  3. package/dist/agents/bancroft.d.ts.map +1 -1
  4. package/dist/agents/bancroft.js +86 -60
  5. package/dist/agents/bancroft.js.map +1 -1
  6. package/dist/agents/provider.d.ts +62 -0
  7. package/dist/agents/provider.d.ts.map +1 -0
  8. package/dist/agents/provider.js +28 -0
  9. package/dist/agents/provider.js.map +1 -0
  10. package/dist/agents/providers/anthropic.d.ts +20 -0
  11. package/dist/agents/providers/anthropic.d.ts.map +1 -0
  12. package/dist/agents/providers/anthropic.js +104 -0
  13. package/dist/agents/providers/anthropic.js.map +1 -0
  14. package/dist/agents/providers/replay.d.ts +46 -0
  15. package/dist/agents/providers/replay.d.ts.map +1 -0
  16. package/dist/agents/providers/replay.js +162 -0
  17. package/dist/agents/providers/replay.js.map +1 -0
  18. package/dist/agents/schemas.d.ts +3 -3
  19. package/dist/agents/schemas.d.ts.map +1 -1
  20. package/dist/agents/schemas.js.map +1 -1
  21. package/dist/browser.d.ts +26 -3
  22. package/dist/browser.d.ts.map +1 -1
  23. package/dist/browser.js +23 -3
  24. package/dist/browser.js.map +1 -1
  25. package/dist/calc/builtins.d.ts +10 -0
  26. package/dist/calc/builtins.d.ts.map +1 -1
  27. package/dist/calc/builtins.js +64 -42
  28. package/dist/calc/builtins.js.map +1 -1
  29. package/dist/calc/errors.js +1 -1
  30. package/dist/calc/evaluator.js +6 -2
  31. package/dist/calc/evaluator.js.map +1 -1
  32. package/dist/calc/index.d.ts +7 -0
  33. package/dist/calc/index.d.ts.map +1 -1
  34. package/dist/calc/index.js +13 -1
  35. package/dist/calc/index.js.map +1 -1
  36. package/dist/calc/quantize.d.ts +56 -0
  37. package/dist/calc/quantize.d.ts.map +1 -0
  38. package/dist/calc/quantize.js +116 -0
  39. package/dist/calc/quantize.js.map +1 -0
  40. package/dist/cli-packages.d.ts +11 -0
  41. package/dist/cli-packages.d.ts.map +1 -0
  42. package/dist/cli-packages.js +177 -0
  43. package/dist/cli-packages.js.map +1 -0
  44. package/dist/cli.js +424 -28
  45. package/dist/cli.js.map +1 -1
  46. package/dist/context.js +23 -23
  47. package/dist/deal-package-context.d.ts +52 -0
  48. package/dist/deal-package-context.d.ts.map +1 -0
  49. package/dist/deal-package-context.js +132 -0
  50. package/dist/deal-package-context.js.map +1 -0
  51. package/dist/deal-package-zip.d.ts +36 -0
  52. package/dist/deal-package-zip.d.ts.map +1 -0
  53. package/dist/deal-package-zip.js +132 -0
  54. package/dist/deal-package-zip.js.map +1 -0
  55. package/dist/deal-package.d.ts +82 -0
  56. package/dist/deal-package.d.ts.map +1 -0
  57. package/dist/deal-package.js +189 -0
  58. package/dist/deal-package.js.map +1 -0
  59. package/dist/defaults.d.ts +48 -0
  60. package/dist/defaults.d.ts.map +1 -1
  61. package/dist/defaults.js +512 -0
  62. package/dist/defaults.js.map +1 -1
  63. package/dist/index.d.ts +32 -3
  64. package/dist/index.d.ts.map +1 -1
  65. package/dist/index.js +27 -3
  66. package/dist/index.js.map +1 -1
  67. package/dist/init.js +1 -1
  68. package/dist/init.js.map +1 -1
  69. package/dist/integrity.d.ts +9 -0
  70. package/dist/integrity.d.ts.map +1 -1
  71. package/dist/integrity.js +12 -2
  72. package/dist/integrity.js.map +1 -1
  73. package/dist/lease-abstract.d.ts +82 -0
  74. package/dist/lease-abstract.d.ts.map +1 -0
  75. package/dist/lease-abstract.js +183 -0
  76. package/dist/lease-abstract.js.map +1 -0
  77. package/dist/lite-bridge.d.ts +58 -0
  78. package/dist/lite-bridge.d.ts.map +1 -0
  79. package/dist/lite-bridge.js +525 -0
  80. package/dist/lite-bridge.js.map +1 -0
  81. package/dist/lite.d.ts +63 -0
  82. package/dist/lite.d.ts.map +1 -0
  83. package/dist/lite.js +362 -0
  84. package/dist/lite.js.map +1 -0
  85. package/dist/modules.d.ts.map +1 -1
  86. package/dist/modules.js +278 -13
  87. package/dist/modules.js.map +1 -1
  88. package/dist/packs/excel-emit.d.ts +18 -1
  89. package/dist/packs/excel-emit.d.ts.map +1 -1
  90. package/dist/packs/excel-emit.js +18 -1
  91. package/dist/packs/excel-emit.js.map +1 -1
  92. package/dist/packs/hospitality.d.ts +3 -0
  93. package/dist/packs/hospitality.d.ts.map +1 -0
  94. package/dist/packs/hospitality.js +122 -0
  95. package/dist/packs/hospitality.js.map +1 -0
  96. package/dist/packs/index.d.ts +5 -1
  97. package/dist/packs/index.d.ts.map +1 -1
  98. package/dist/packs/index.js +13 -1
  99. package/dist/packs/index.js.map +1 -1
  100. package/dist/packs/land.d.ts +3 -0
  101. package/dist/packs/land.d.ts.map +1 -0
  102. package/dist/packs/land.js +124 -0
  103. package/dist/packs/land.js.map +1 -0
  104. package/dist/packs/senior-housing.d.ts +3 -0
  105. package/dist/packs/senior-housing.d.ts.map +1 -0
  106. package/dist/packs/senior-housing.js +123 -0
  107. package/dist/packs/senior-housing.js.map +1 -0
  108. package/dist/packs/student-housing.d.ts +3 -0
  109. package/dist/packs/student-housing.d.ts.map +1 -0
  110. package/dist/packs/student-housing.js +124 -0
  111. package/dist/packs/student-housing.js.map +1 -0
  112. package/dist/parser.d.ts +9 -0
  113. package/dist/parser.d.ts.map +1 -1
  114. package/dist/parser.js +40 -6
  115. package/dist/parser.js.map +1 -1
  116. package/dist/protocol.d.ts +69 -2
  117. package/dist/protocol.d.ts.map +1 -1
  118. package/dist/protocol.js +109 -1
  119. package/dist/protocol.js.map +1 -1
  120. package/dist/receipts.d.ts +216 -0
  121. package/dist/receipts.d.ts.map +1 -0
  122. package/dist/receipts.js +554 -0
  123. package/dist/receipts.js.map +1 -0
  124. package/dist/report.js +165 -165
  125. package/dist/runner.d.ts +13 -0
  126. package/dist/runner.d.ts.map +1 -1
  127. package/dist/runner.js +5 -5
  128. package/dist/runner.js.map +1 -1
  129. package/dist/source-representation.d.ts +40 -0
  130. package/dist/source-representation.d.ts.map +1 -0
  131. package/dist/source-representation.js +114 -0
  132. package/dist/source-representation.js.map +1 -0
  133. package/dist/types.d.ts +9 -0
  134. package/dist/types.d.ts.map +1 -1
  135. package/dist/types.js +34 -0
  136. package/dist/types.js.map +1 -1
  137. package/dist/uwcsv.d.ts.map +1 -1
  138. package/dist/uwcsv.js +10 -78
  139. package/dist/uwcsv.js.map +1 -1
  140. package/dist/uwxml.d.ts.map +1 -1
  141. package/dist/uwxml.js +10 -2
  142. package/dist/uwxml.js.map +1 -1
  143. package/dist/validator.js +10 -10
  144. package/dist/validator.js.map +1 -1
  145. package/dist/version.d.ts +3 -0
  146. package/dist/version.d.ts.map +1 -0
  147. package/dist/version.js +8 -0
  148. package/dist/version.js.map +1 -0
  149. package/dist/zip-safety.d.ts +15 -0
  150. package/dist/zip-safety.d.ts.map +1 -0
  151. package/dist/zip-safety.js +109 -0
  152. package/dist/zip-safety.js.map +1 -0
  153. package/package.json +12 -3
package/README.md CHANGED
@@ -23,7 +23,7 @@ core render targets throw `UnsupportedRenderFormatError`; use `@uwmd/report` for
23
23
  PDF generation.
24
24
 
25
25
  Specification, examples, and conformance fixtures:
26
- [github.com/jaredmaxey/uw-markdown](https://github.com/jaredmaxey/uw-markdown).
26
+ [github.com/UWMD-OSP/UW-Markdown](https://github.com/UWMD-OSP/UW-Markdown).
27
27
 
28
28
  ## Machine interchange
29
29
 
@@ -49,7 +49,7 @@ const csvZip = await encodeUWCSVZip(verified);
49
49
  const json = await CORE_CODEC_REGISTRY.encode<string>('uw-json', verified);
50
50
  ```
51
51
 
52
- See the [UW XML Mapping 1.0](https://github.com/jaredmaxey/uw-markdown/blob/main/spec/UW_XML_MAPPING_v1.md) and [UW CSV Bundle 1.0](https://github.com/jaredmaxey/uw-markdown/blob/main/spec/UW_CSV_BUNDLE_v1.md) specifications.
52
+ See the [UW XML Mapping 1.0](https://github.com/UWMD-OSP/UW-Markdown/blob/main/spec/UW_XML_MAPPING_v1.md) and [UW CSV Bundle 1.0](https://github.com/UWMD-OSP/UW-Markdown/blob/main/spec/UW_CSV_BUNDLE_v1.md) specifications.
53
53
 
54
54
  ## HTTP and MCP bindings
55
55
 
@@ -76,4 +76,4 @@ const resource = await createUWMCPResource(envelope, dealId, {
76
76
 
77
77
  Tool results contain compact `structuredContent` plus JSON text fallback and a
78
78
  resource link. Complete JSON/XML, CSV views, and binary CSV ZIP bytes are read
79
- through resources. See [HTTP Binding 1.0](https://github.com/jaredmaxey/uw-markdown/blob/main/spec/bindings/UW_HTTP_BINDING_v1.md) and [MCP Binding 1.0](https://github.com/jaredmaxey/uw-markdown/blob/main/spec/bindings/UW_MCP_BINDING_v1.md).
79
+ through resources. See [HTTP Binding 1.0](https://github.com/UWMD-OSP/UW-Markdown/blob/main/spec/bindings/UW_HTTP_BINDING_v1.md) and [MCP Binding 1.0](https://github.com/UWMD-OSP/UW-Markdown/blob/main/spec/bindings/UW_MCP_BINDING_v1.md).
@@ -1,5 +1,16 @@
1
+ import { type AgentProvider } from './provider.js';
1
2
  export interface BancroftRunOptions {
2
- apiKey: string;
3
+ /**
4
+ * API key for the built-in Anthropic provider. Ignored when `provider` is
5
+ * supplied. Optional so a host can run entirely on its own backend — but one
6
+ * of the two MUST be present.
7
+ */
8
+ apiKey?: string;
9
+ /**
10
+ * Bring your own backend: another vendor, a local model, a gateway, or a
11
+ * recorded cassette. When set, no vendor SDK is loaded.
12
+ */
13
+ provider?: AgentProvider;
3
14
  model?: string;
4
15
  maxRetries?: number;
5
16
  maxTokens?: number;
@@ -7,6 +18,16 @@ export interface BancroftRunOptions {
7
18
  userInstructions?: string;
8
19
  /** Called on each status update during the run */
9
20
  onProgress?: (event: ProgressEvent) => void;
21
+ /**
22
+ * Injectable clock, defaulting to `Date.now`. Supplying a **constant** clock
23
+ * makes a run byte-reproducible: `_meta.timestamp` freezes, `duration_ms`
24
+ * collapses to 0, and the pipeline-log entry id becomes derivable instead of
25
+ * random. That is what lets a replayed run be compared against a frozen
26
+ * expected document (see `providers/replay.ts`).
27
+ *
28
+ * Real runs should leave it unset.
29
+ */
30
+ now?: () => number;
10
31
  }
11
32
  export interface ProgressEvent {
12
33
  stage: 'context_built' | 'calling_claude' | 'parsing_output' | 'writing_block' | 'complete' | 'error';
@@ -1 +1 @@
1
- {"version":3,"file":"bancroft.d.ts","sourceRoot":"","sources":["../../src/agents/bancroft.ts"],"names":[],"mappings":"AA2BA,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kDAAkD;IAClD,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;CAC7C;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,eAAe,GAAG,gBAAgB,GAAG,gBAAgB,GAAG,eAAe,GAAG,UAAU,GAAG,OAAO,CAAC;IACtG,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,UAAU,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9C,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAID,wBAAsB,gBAAgB,CACpC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,kBAAkB,GACvB,OAAO,CAAC,iBAAiB,CAAC,CA+H5B;AAwCD,wBAAsB,yBAAyB,CAC7C,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,kBAAkB,GACvB,OAAO,CAAC,iBAAiB,CAAC,CAyG5B"}
1
+ {"version":3,"file":"bancroft.d.ts","sourceRoot":"","sources":["../../src/agents/bancroft.ts"],"names":[],"mappings":"AA8BA,OAAO,EAGL,KAAK,aAAa,EAEnB,MAAM,eAAe,CAAC;AAIvB,MAAM,WAAW,kBAAkB;IACjC;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kDAAkD;IAClD,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IAC5C;;;;;;;;OAQG;IACH,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB;AAqCD,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,eAAe,GAAG,gBAAgB,GAAG,gBAAgB,GAAG,eAAe,GAAG,UAAU,GAAG,OAAO,CAAC;IACtG,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,UAAU,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9C,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAID,wBAAsB,gBAAgB,CACpC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,kBAAkB,GACvB,OAAO,CAAC,iBAAiB,CAAC,CAqH5B;AAsCD,wBAAsB,yBAAyB,CAC7C,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,kBAAkB,GACvB,OAAO,CAAC,iBAAiB,CAAC,CAkG5B"}
@@ -1,32 +1,61 @@
1
- // Bancroft agent runner — calls Claude API and writes output back to .uw.md
1
+ // Bancroft agent runner — asks a model for structured section output and writes
2
+ // it back to the deal file.
2
3
  //
3
4
  // Flow:
4
5
  // 1. Build curated context for the requested agent layer
5
- // 2. Call Claude with the context + structured output tool
6
- // 3. Parse the tool_use response into section content
6
+ // 2. Ask the provider for a completion, with the structured-output tool
7
+ // 3. Parse the tool call into section content
7
8
  // 4. Write each output section via writeAgentBlock (supersedes prior versions)
8
9
  // 5. Return the updated file content + run metadata
9
10
  //
10
- // Uses Claude's tool_use mechanism for guaranteed JSON output. Claude must call
11
+ // Uses tool calling for guaranteed JSON output. The model must call
11
12
  // write_uw_section (or write_multiple_uw_sections for multi-section layers);
12
13
  // if it doesn't, we retry up to maxRetries before writing an error log entry.
13
- import Anthropic from '@anthropic-ai/sdk';
14
+ //
15
+ // **This module does not import a vendor SDK.** The default Anthropic provider
16
+ // is loaded through a dynamic import only when no `provider` is supplied, so a
17
+ // host that brings its own never pulls the SDK into its graph. `bancroft.test.ts`
18
+ // asserts the absence of a static import, because "provider-neutral" is a claim
19
+ // worth testing rather than trusting.
14
20
  import { parseUWFile } from '../parser.js';
15
21
  import { writeAgentBlock, writeErrorEntry, buildMeta } from '../runner.js';
16
22
  import { buildAgentContext, buildAgentPrompt, isContextReady, BANCROFT_LAYERS } from '../context.js';
17
23
  import { WRITE_UW_SECTION_TOOL, WRITE_MULTIPLE_SECTIONS_TOOL, MULTI_SECTION_LAYERS, } from './schemas.js';
24
+ import { AgentProviderError, } from './provider.js';
25
+ /**
26
+ * Resolve the provider for a run: an explicit one wins, otherwise the built-in
27
+ * Anthropic provider is loaded lazily from an API key.
28
+ */
29
+ async function resolveProvider(opts) {
30
+ if (opts.provider)
31
+ return opts.provider;
32
+ if (!opts.apiKey) {
33
+ throw new AgentProviderError('AGENT_PROVIDER_MISSING', 'runBancroftAgent requires either `provider` or `apiKey`.');
34
+ }
35
+ const { createAnthropicProvider } = await import('./providers/anthropic.js');
36
+ return createAnthropicProvider({ apiKey: opts.apiKey });
37
+ }
38
+ /** Assemble the neutral request shared by the buffered and streaming paths. */
39
+ function buildRequest(opts, model, systemPrompt, userMessage, isMultiSection) {
40
+ return {
41
+ model,
42
+ max_tokens: opts.maxTokens ?? 4096,
43
+ temperature: opts.temperature ?? 0.1,
44
+ system: systemPrompt,
45
+ messages: [{ role: 'user', content: userMessage }],
46
+ tools: isMultiSection ? [WRITE_MULTIPLE_SECTIONS_TOOL] : [WRITE_UW_SECTION_TOOL],
47
+ tool_choice: 'any',
48
+ };
49
+ }
18
50
  // ─── Main entry point ─────────────────────────────────────────────────────────
19
51
  export async function runBancroftAgent(fileContent, agentId, opts) {
20
- const startMs = Date.now();
52
+ const startMs = (opts.now ?? Date.now)();
21
53
  const model = opts.model ?? 'claude-sonnet-4-6';
22
54
  const maxRetries = opts.maxRetries ?? 2;
23
55
  const emit = opts.onProgress ?? (() => undefined);
24
- const client = new Anthropic({ apiKey: opts.apiKey });
56
+ const provider = await resolveProvider(opts);
25
57
  const layerPrefix = agentId.match(/^(L\d+)/)?.[1] ?? 'L7';
26
58
  const isMultiSection = MULTI_SECTION_LAYERS.has(layerPrefix);
27
- const tools = isMultiSection
28
- ? [WRITE_MULTIPLE_SECTIONS_TOOL]
29
- : [WRITE_UW_SECTION_TOOL];
30
59
  const toolName = isMultiSection ? 'write_multiple_uw_sections' : 'write_uw_section';
31
60
  let currentContent = fileContent;
32
61
  const currentParsed = parseUWFile(fileContent);
@@ -42,7 +71,7 @@ export async function runBancroftAgent(fileContent, agentId, opts) {
42
71
  updatedContent: fileContent,
43
72
  sectionsWritten: [],
44
73
  tokensUsed: { input: 0, output: 0 },
45
- durationMs: Date.now() - startMs,
74
+ durationMs: (opts.now ?? Date.now)() - startMs,
46
75
  logEntryIds: [],
47
76
  error: `Context not ready — ${reason}`,
48
77
  retries: 0,
@@ -55,24 +84,16 @@ export async function runBancroftAgent(fileContent, agentId, opts) {
55
84
  let totalInput = 0;
56
85
  let totalOutput = 0;
57
86
  let toolOutputs = [];
58
- let rawResponse = null;
87
+ const request = buildRequest(opts, model, systemPrompt, userMessage, isMultiSection);
59
88
  while (retries <= maxRetries) {
60
- emit({ stage: 'calling_claude', agentId, message: `Calling ${model} (attempt ${retries + 1}/${maxRetries + 1})` });
89
+ emit({ stage: 'calling_claude', agentId, message: `Calling ${model} via ${provider.id} (attempt ${retries + 1}/${maxRetries + 1})` });
61
90
  try {
62
- rawResponse = await client.messages.create({
63
- model,
64
- max_tokens: opts.maxTokens ?? 4096,
65
- temperature: opts.temperature ?? 0.1,
66
- system: systemPrompt,
67
- messages: [{ role: 'user', content: userMessage }],
68
- tools,
69
- tool_choice: { type: 'any' },
70
- });
71
- totalInput += rawResponse.usage.input_tokens;
72
- totalOutput += rawResponse.usage.output_tokens;
73
- toolOutputs = extractToolOutputs(rawResponse, toolName);
91
+ const completion = await provider.complete(request);
92
+ totalInput += completion.usage.input_tokens;
93
+ totalOutput += completion.usage.output_tokens;
94
+ toolOutputs = extractToolOutputs(completion, toolName);
74
95
  if (toolOutputs.length === 0) {
75
- lastError = `Claude did not call the ${toolName} tool`;
96
+ lastError = `The model did not call the ${toolName} tool`;
76
97
  retries++;
77
98
  continue;
78
99
  }
@@ -95,14 +116,14 @@ export async function runBancroftAgent(fileContent, agentId, opts) {
95
116
  updatedContent: currentContent,
96
117
  sectionsWritten: [],
97
118
  tokensUsed: { input: totalInput, output: totalOutput },
98
- durationMs: Date.now() - startMs,
119
+ durationMs: (opts.now ?? Date.now)() - startMs,
99
120
  logEntryIds: [],
100
121
  error: lastError,
101
122
  retries,
102
123
  };
103
124
  }
104
125
  // ── Write each section block ───────────────────────────────────────────────
105
- const { logEntryIds, sectionsWritten, content: finalContent } = writeSectionOutputs(currentContent, agentId, layerPrefix, toolOutputs, ctx.layer.reads, startMs, emit);
126
+ const { logEntryIds, sectionsWritten, content: finalContent } = writeSectionOutputs(currentContent, agentId, layerPrefix, toolOutputs, ctx.layer.reads, startMs, emit, opts.now);
106
127
  currentContent = finalContent;
107
128
  emit({ stage: 'complete', agentId, message: `Wrote ${sectionsWritten.join(', ')} — ${totalInput + totalOutput} tokens` });
108
129
  return {
@@ -110,14 +131,14 @@ export async function runBancroftAgent(fileContent, agentId, opts) {
110
131
  updatedContent: currentContent,
111
132
  sectionsWritten,
112
133
  tokensUsed: { input: totalInput, output: totalOutput },
113
- durationMs: Date.now() - startMs,
134
+ durationMs: (opts.now ?? Date.now)() - startMs,
114
135
  logEntryIds,
115
136
  retries,
116
137
  };
117
138
  }
118
- // ─── Parse Claude's tool_use response ────────────────────────────────────────
119
- function extractToolOutputs(response, toolName) {
120
- const toolUseBlocks = response.content.filter((b) => b.type === 'tool_use' && b.name === toolName);
139
+ // ─── Parse the provider's tool calls ─────────────────────────────────────────
140
+ function extractToolOutputs(completion, toolName) {
141
+ const toolUseBlocks = completion.tool_calls.filter((call) => call.name === toolName);
121
142
  if (toolUseBlocks.length === 0)
122
143
  return [];
123
144
  const results = [];
@@ -146,15 +167,12 @@ function extractToolOutputs(response, toolName) {
146
167
  // Same as runBancroftAgent but uses streaming so progress events arrive in real time.
147
168
  // Useful for UI integrations (underwriter.cc wizard).
148
169
  export async function runBancroftAgentStreaming(fileContent, agentId, opts) {
149
- const startMs = Date.now();
170
+ const startMs = (opts.now ?? Date.now)();
150
171
  const model = opts.model ?? 'claude-sonnet-4-6';
151
172
  const emit = opts.onProgress ?? (() => undefined);
152
- const client = new Anthropic({ apiKey: opts.apiKey });
173
+ const provider = await resolveProvider(opts);
153
174
  const layerPrefix = agentId.match(/^(L\d+)/)?.[1] ?? 'L7';
154
175
  const isMultiSection = MULTI_SECTION_LAYERS.has(layerPrefix);
155
- const tools = isMultiSection
156
- ? [WRITE_MULTIPLE_SECTIONS_TOOL]
157
- : [WRITE_UW_SECTION_TOOL];
158
176
  const toolName = isMultiSection ? 'write_multiple_uw_sections' : 'write_uw_section';
159
177
  const currentParsed = parseUWFile(fileContent);
160
178
  const ctx = buildAgentContext(currentParsed, agentId);
@@ -167,32 +185,27 @@ export async function runBancroftAgentStreaming(fileContent, agentId, opts) {
167
185
  updatedContent: fileContent,
168
186
  sectionsWritten: [],
169
187
  tokensUsed: { input: 0, output: 0 },
170
- durationMs: Date.now() - startMs,
188
+ durationMs: (opts.now ?? Date.now)() - startMs,
171
189
  logEntryIds: [],
172
190
  error: reason,
173
191
  retries: 0,
174
192
  };
175
193
  }
176
194
  const { systemPrompt, userMessage } = buildAgentPrompt(ctx, opts.userInstructions);
177
- emit({ stage: 'calling_claude', agentId, message: `Streaming ${model}` });
195
+ const request = buildRequest(opts, model, systemPrompt, userMessage, isMultiSection);
196
+ emit({ stage: 'calling_claude', agentId, message: `Streaming ${model} via ${provider.id}` });
178
197
  let totalInput = 0;
179
198
  let totalOutput = 0;
180
199
  let toolOutputs = [];
181
200
  try {
182
- // Collect the full streamed response before processing
183
- const stream = await client.messages.stream({
184
- model,
185
- max_tokens: opts.maxTokens ?? 4096,
186
- temperature: opts.temperature ?? 0.1,
187
- system: systemPrompt,
188
- messages: [{ role: 'user', content: userMessage }],
189
- tools,
190
- tool_choice: { type: 'any' },
191
- });
192
- const response = await stream.finalMessage();
193
- totalInput = response.usage.input_tokens;
194
- totalOutput = response.usage.output_tokens;
195
- toolOutputs = extractToolOutputs(response, toolName);
201
+ // A provider that cannot stream falls back to the buffered path. Streaming
202
+ // is a latency optimisation; refusing the run over it would be wrong.
203
+ const completion = provider.stream
204
+ ? await provider.stream(request)
205
+ : await provider.complete(request);
206
+ totalInput = completion.usage.input_tokens;
207
+ totalOutput = completion.usage.output_tokens;
208
+ toolOutputs = extractToolOutputs(completion, toolName);
196
209
  }
197
210
  catch (err) {
198
211
  const error = err instanceof Error ? err.message : String(err);
@@ -201,7 +214,7 @@ export async function runBancroftAgentStreaming(fileContent, agentId, opts) {
201
214
  updatedContent: fileContent,
202
215
  sectionsWritten: [],
203
216
  tokensUsed: { input: totalInput, output: totalOutput },
204
- durationMs: Date.now() - startMs,
217
+ durationMs: (opts.now ?? Date.now)() - startMs,
205
218
  logEntryIds: [],
206
219
  error,
207
220
  retries: 0,
@@ -213,21 +226,21 @@ export async function runBancroftAgentStreaming(fileContent, agentId, opts) {
213
226
  updatedContent: fileContent,
214
227
  sectionsWritten: [],
215
228
  tokensUsed: { input: totalInput, output: totalOutput },
216
- durationMs: Date.now() - startMs,
229
+ durationMs: (opts.now ?? Date.now)() - startMs,
217
230
  logEntryIds: [],
218
- error: 'Claude did not call the write tool',
231
+ error: 'The model did not call the write tool',
219
232
  retries: 0,
220
233
  };
221
234
  }
222
235
  // Write sections using the shared helper (no second API call)
223
- const { logEntryIds, sectionsWritten, content: finalContent } = writeSectionOutputs(fileContent, agentId, layerPrefix, toolOutputs, ctx.layer.reads, startMs, emit);
236
+ const { logEntryIds, sectionsWritten, content: finalContent } = writeSectionOutputs(fileContent, agentId, layerPrefix, toolOutputs, ctx.layer.reads, startMs, emit, opts.now);
224
237
  emit({ stage: 'complete', agentId, message: `Wrote ${sectionsWritten.join(', ')} — ${totalInput + totalOutput} tokens` });
225
238
  return {
226
239
  success: true,
227
240
  updatedContent: finalContent,
228
241
  sectionsWritten,
229
242
  tokensUsed: { input: totalInput, output: totalOutput },
230
- durationMs: Date.now() - startMs,
243
+ durationMs: (opts.now ?? Date.now)() - startMs,
231
244
  logEntryIds,
232
245
  retries: 0,
233
246
  };
@@ -235,7 +248,13 @@ export async function runBancroftAgentStreaming(fileContent, agentId, opts) {
235
248
  // ─── Shared write helper ──────────────────────────────────────────────────────
236
249
  // Used by both runBancroftAgent and runBancroftAgentStreaming after tool outputs
237
250
  // are extracted. Iterates over tool outputs, builds _meta, calls writeAgentBlock.
238
- function writeSectionOutputs(fileContent, agentId, layerPrefix, toolOutputs, inputSections, startMs, emit) {
251
+ function writeSectionOutputs(fileContent, agentId, layerPrefix, toolOutputs, inputSections, startMs, emit, clock) {
252
+ const nowMs = clock ?? Date.now;
253
+ // Only freeze the stamps when a clock was injected. A real run keeps its
254
+ // random log-entry suffix, which is what stops two runs in the same
255
+ // millisecond from colliding.
256
+ const frozen = clock !== undefined;
257
+ const timestamp = frozen ? new Date(nowMs()).toISOString() : undefined;
239
258
  const layer = BANCROFT_LAYERS.find(l => l.id === layerPrefix);
240
259
  const pipelineStateUpdate = layer
241
260
  ? { [layer.pipelineStateKey]: 'complete' }
@@ -243,6 +262,7 @@ function writeSectionOutputs(fileContent, agentId, layerPrefix, toolOutputs, inp
243
262
  let currentContent = fileContent;
244
263
  const logEntryIds = [];
245
264
  const sectionsWritten = [];
265
+ let sectionIndex = 0;
246
266
  for (const toolOut of toolOutputs) {
247
267
  emit({ stage: 'writing_block', agentId, sectionId: toolOut.section_id, message: `Writing ${toolOut.section_id}` });
248
268
  // Re-parse before each write so line numbers are fresh
@@ -261,6 +281,7 @@ function writeSectionOutputs(fileContent, agentId, layerPrefix, toolOutputs, inp
261
281
  humanReviewRequired: toolOut.human_review_required,
262
282
  flags: toolOut.flags,
263
283
  notes: toolOut.notes,
284
+ ...(timestamp ? { timestamp } : {}),
264
285
  });
265
286
  // Strip any _meta/_notes Claude included in section_data — we own those fields.
266
287
  const { _meta: _ignoredMeta, _notes: _ignoredNotes, ...cleanSectionData } = toolOut.section_data;
@@ -274,14 +295,19 @@ function writeSectionOutputs(fileContent, agentId, layerPrefix, toolOutputs, inp
274
295
  const runResult = writeAgentBlock(currentContent, currentParsed, { sectionId: toolOut.section_id, content: sectionContent }, {
275
296
  agentId,
276
297
  agentVersion: '1.0.0',
277
- durationMs: Date.now() - startMs,
298
+ durationMs: nowMs() - startMs,
278
299
  flagsRaised: toolOut.flags,
279
300
  inputSections,
280
301
  updatePipelineState: pipelineStateUpdate,
302
+ ...(timestamp ? { timestamp } : {}),
303
+ // Derived from the frozen clock plus the section's position, so a
304
+ // replayed multi-section run still gets distinct, stable ids.
305
+ ...(frozen ? { logEntryId: `log_${nowMs()}_${agentId}_${sectionIndex}` } : {}),
281
306
  });
282
307
  currentContent = runResult.content;
283
308
  logEntryIds.push(runResult.logEntryId);
284
309
  sectionsWritten.push(toolOut.section_id);
310
+ sectionIndex++;
285
311
  }
286
312
  return { content: currentContent, logEntryIds, sectionsWritten };
287
313
  }
@@ -1 +1 @@
1
- {"version":3,"file":"bancroft.js","sourceRoot":"","sources":["../../src/agents/bancroft.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,EAAE;AACF,QAAQ;AACR,2DAA2D;AAC3D,6DAA6D;AAC7D,wDAAwD;AACxD,iFAAiF;AACjF,sDAAsD;AACtD,EAAE;AACF,gFAAgF;AAChF,6EAA6E;AAC7E,8EAA8E;AAE9E,OAAO,SAAS,MAAM,mBAAmB,CAAC;AAE1C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC3E,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrG,OAAO,EACL,qBAAqB,EACrB,4BAA4B,EAC5B,oBAAoB,GAErB,MAAM,cAAc,CAAC;AAiCtB,iFAAiF;AAEjF,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,WAAmB,EACnB,OAAe,EACf,IAAwB;IAExB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,mBAAmB,CAAC;IAChD,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;IACxC,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAElD,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IACtD,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;IAC1D,MAAM,cAAc,GAAG,oBAAoB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC7D,MAAM,KAAK,GAAqB,cAAc;QAC5C,CAAC,CAAC,CAAC,4BAA4B,CAAC;QAChC,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC;IAC5B,MAAM,QAAQ,GAAG,cAAc,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,kBAAkB,CAAC;IAEpF,IAAI,cAAc,GAAG,WAAW,CAAC;IACjC,MAAM,aAAa,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC;IAE/C,8EAA8E;IAC9E,MAAM,GAAG,GAAG,iBAAiB,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IACtD,IAAI,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,OAAO,EAAE,kBAAkB,cAAc,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IAE/I,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,GAAG,CAAC,aAAa,CAAC,MAAM;YACrC,CAAC,CAAC,mBAAmB,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACnD,CAAC,CAAC,8BAA8B,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACnE,OAAO;YACL,OAAO,EAAE,KAAK;YACd,cAAc,EAAE,WAAW;YAC3B,eAAe,EAAE,EAAE;YACnB,UAAU,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;YACnC,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO;YAChC,WAAW,EAAE,EAAE;YACf,KAAK,EAAE,uBAAuB,MAAM,EAAE;YACtC,OAAO,EAAE,CAAC;SACX,CAAC;IACJ,CAAC;IAED,8EAA8E;IAC9E,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,GAAG,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACnF,IAAI,SAAS,GAAG,EAAE,CAAC;IACnB,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,WAAW,GAAiB,EAAE,CAAC;IACnC,IAAI,WAAW,GAA6B,IAAI,CAAC;IAEjD,OAAO,OAAO,IAAI,UAAU,EAAE,CAAC;QAC7B,IAAI,CAAC,EAAE,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,KAAK,aAAa,OAAO,GAAG,CAAC,IAAI,UAAU,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;QAEnH,IAAI,CAAC;YACH,WAAW,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;gBACzC,KAAK;gBACL,UAAU,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI;gBAClC,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,GAAG;gBACpC,MAAM,EAAE,YAAY;gBACpB,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;gBAClD,KAAK;gBACL,WAAW,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;aAC7B,CAAC,CAAC;YAEH,UAAU,IAAI,WAAW,CAAC,KAAK,CAAC,YAAY,CAAC;YAC7C,WAAW,IAAI,WAAW,CAAC,KAAK,CAAC,aAAa,CAAC;YAE/C,WAAW,GAAG,kBAAkB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;YAExD,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC7B,SAAS,GAAG,2BAA2B,QAAQ,OAAO,CAAC;gBACvD,OAAO,EAAE,CAAC;gBACV,SAAS;YACX,CAAC;YAED,MAAM,CAAC,UAAU;QACnB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,SAAS,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7D,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,SAAS,EAAE,EAAE,CAAC,CAAC;YACtE,OAAO,EAAE,CAAC;YACV,IAAI,OAAO,GAAG,UAAU;gBAAE,MAAM;YAChC,MAAM,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,iBAAiB;QAChD,CAAC;IACH,CAAC;IAED,6EAA6E;IAC7E,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,cAAc,GAAG,eAAe,CAC9B,cAAc,EACd,aAAa,EACb,OAAO,EACP,SAAS,EACT,oBAAoB,EACpB,SAAS,EACT,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,EAAE,CAC9C,CAAC;QACF,OAAO;YACL,OAAO,EAAE,KAAK;YACd,cAAc,EAAE,cAAc;YAC9B,eAAe,EAAE,EAAE;YACnB,UAAU,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE;YACtD,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO;YAChC,WAAW,EAAE,EAAE;YACf,KAAK,EAAE,SAAS;YAChB,OAAO;SACR,CAAC;IACJ,CAAC;IAED,8EAA8E;IAC9E,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,mBAAmB,CACjF,cAAc,EACd,OAAO,EACP,WAAW,EACX,WAAW,EACX,GAAG,CAAC,KAAK,CAAC,KAAK,EACf,OAAO,EACP,IAAI,CACL,CAAC;IACF,cAAc,GAAG,YAAY,CAAC;IAE9B,IAAI,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,UAAU,GAAG,WAAW,SAAS,EAAE,CAAC,CAAC;IAE1H,OAAO;QACL,OAAO,EAAE,IAAI;QACb,cAAc,EAAE,cAAc;QAC9B,eAAe;QACf,UAAU,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE;QACtD,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO;QAChC,WAAW;QACX,OAAO;KACR,CAAC;AACJ,CAAC;AAED,gFAAgF;AAEhF,SAAS,kBAAkB,CAAC,QAA2B,EAAE,QAAgB;IACvE,MAAM,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAC3C,CAAC,CAAC,EAA+B,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,CACjF,CAAC;IAEF,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAE1C,MAAM,OAAO,GAAiB,EAAE,CAAC;IAEjC,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;QAClC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAgC,CAAC;QAErD,IAAI,QAAQ,KAAK,4BAA4B,EAAE,CAAC;YAC9C,oEAAoE;YACpE,MAAM,QAAQ,GAAI,KAAK,CAAC,UAAU,CAA8B,IAAI,EAAE,CAAC;YACvE,OAAO,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;QAC5B,CAAC;aAAM,CAAC;YACN,sBAAsB;YACtB,OAAO,CAAC,IAAI,CAAC;gBACX,UAAU,EAAE,KAAK,CAAC,YAAY,CAAW;gBACzC,UAAU,EAAE,KAAK,CAAC,YAAY,CAA8B;gBAC5D,qBAAqB,EAAE,KAAK,CAAC,uBAAuB,CAAY;gBAChE,KAAK,EAAG,KAAK,CAAC,OAAO,CAAc,IAAI,EAAE;gBACzC,YAAY,EAAG,KAAK,CAAC,cAAc,CAA6B,IAAI,EAAE;gBACtE,KAAK,EAAE,KAAK,CAAC,OAAO,CAAuB;aAC5C,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,iFAAiF;AACjF,sFAAsF;AACtF,sDAAsD;AAEtD,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,WAAmB,EACnB,OAAe,EACf,IAAwB;IAExB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,mBAAmB,CAAC;IAChD,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAElD,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IACtD,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;IAC1D,MAAM,cAAc,GAAG,oBAAoB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC7D,MAAM,KAAK,GAAqB,cAAc;QAC5C,CAAC,CAAC,CAAC,4BAA4B,CAAC;QAChC,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC;IAC5B,MAAM,QAAQ,GAAG,cAAc,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,kBAAkB,CAAC;IAEpF,MAAM,aAAa,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC;IAC/C,MAAM,GAAG,GAAG,iBAAiB,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IAEtD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,GAAG,CAAC,aAAa,CAAC,MAAM;YACrC,CAAC,CAAC,mBAAmB,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACnD,CAAC,CAAC,8BAA8B,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACnE,OAAO;YACL,OAAO,EAAE,KAAK;YACd,cAAc,EAAE,WAAW;YAC3B,eAAe,EAAE,EAAE;YACnB,UAAU,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;YACnC,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO;YAChC,WAAW,EAAE,EAAE;YACf,KAAK,EAAE,MAAM;YACb,OAAO,EAAE,CAAC;SACX,CAAC;IACJ,CAAC;IAED,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,GAAG,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAEnF,IAAI,CAAC,EAAE,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,KAAK,EAAE,EAAE,CAAC,CAAC;IAE1E,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,WAAW,GAAiB,EAAE,CAAC;IAEnC,IAAI,CAAC;QACH,uDAAuD;QACvD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;YAC1C,KAAK;YACL,UAAU,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI;YAClC,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,GAAG;YACpC,MAAM,EAAE,YAAY;YACpB,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;YAClD,KAAK;YACL,WAAW,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;SAC7B,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,YAAY,EAAE,CAAC;QAC7C,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC;QACzC,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC;QAC3C,WAAW,GAAG,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACvD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,KAAK,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC/D,OAAO;YACL,OAAO,EAAE,KAAK;YACd,cAAc,EAAE,WAAW;YAC3B,eAAe,EAAE,EAAE;YACnB,UAAU,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE;YACtD,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO;YAChC,WAAW,EAAE,EAAE;YACf,KAAK;YACL,OAAO,EAAE,CAAC;SACX,CAAC;IACJ,CAAC;IAED,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO;YACL,OAAO,EAAE,KAAK;YACd,cAAc,EAAE,WAAW;YAC3B,eAAe,EAAE,EAAE;YACnB,UAAU,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE;YACtD,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO;YAChC,WAAW,EAAE,EAAE;YACf,KAAK,EAAE,oCAAoC;YAC3C,OAAO,EAAE,CAAC;SACX,CAAC;IACJ,CAAC;IAED,8DAA8D;IAC9D,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,mBAAmB,CACjF,WAAW,EACX,OAAO,EACP,WAAW,EACX,WAAW,EACX,GAAG,CAAC,KAAK,CAAC,KAAK,EACf,OAAO,EACP,IAAI,CACL,CAAC;IAEF,IAAI,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,UAAU,GAAG,WAAW,SAAS,EAAE,CAAC,CAAC;IAE1H,OAAO;QACL,OAAO,EAAE,IAAI;QACb,cAAc,EAAE,YAAY;QAC5B,eAAe;QACf,UAAU,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE;QACtD,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO;QAChC,WAAW;QACX,OAAO,EAAE,CAAC;KACX,CAAC;AACJ,CAAC;AAED,iFAAiF;AACjF,iFAAiF;AACjF,kFAAkF;AAElF,SAAS,mBAAmB,CAC1B,WAAmB,EACnB,OAAe,EACf,WAAmB,EACnB,WAAyB,EACzB,aAAuB,EACvB,OAAe,EACf,IAAgC;IAEhC,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,WAAW,CAAC,CAAC;IAC9D,MAAM,mBAAmB,GAAG,KAAK;QAC/B,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE,UAAmB,EAAE;QACnD,CAAC,CAAC,SAAS,CAAC;IAEd,IAAI,cAAc,GAAG,WAAW,CAAC;IACjC,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,MAAM,eAAe,GAAa,EAAE,CAAC;IAErC,KAAK,MAAM,OAAO,IAAI,WAAW,EAAE,CAAC;QAClC,IAAI,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,UAAU,EAAE,OAAO,EAAE,WAAW,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QAEnH,uDAAuD;QACvD,MAAM,aAAa,GAAG,WAAW,CAAC,cAAc,CAAC,CAAC;QAElD,MAAM,aAAa,GAAG,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACjE,MAAM,eAAe,GAAG,aAAa,IAAI,MAAM,IAAI,aAAa;YAC9D,CAAC,CAAC,CAAE,aAA+C,CAAC,IAAI,EAAE,OAAO,IAAI,CAAC,CAAC;YACvE,CAAC,CAAC,CAAC,CAAC;QACN,MAAM,UAAU,GAAG,eAAe,GAAG,CAAC,CAAC;QAEvC,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,UAAU,EAAE,UAAU,EAAE;YACrD,MAAM,EAAE,OAAO;YACf,OAAO;YACP,YAAY,EAAE,OAAO;YACrB,KAAK,EAAE,QAAQ;YACf,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,mBAAmB,EAAE,OAAO,CAAC,qBAAqB;YAClD,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,KAAK,EAAE,OAAO,CAAC,KAAK;SACrB,CAAC,CAAC;QAEH,gFAAgF;QAChF,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,gBAAgB,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC;QACjG,KAAK,YAAY,CAAC;QAAC,KAAK,aAAa,CAAC;QACtC,MAAM,cAAc,GAA4B;YAC9C,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,IAAI;YAC7B,GAAG,gBAAgB;SACpB,CAAC;QAEF,MAAM,SAAS,GAAG,eAAe,CAC/B,cAAc,EACd,aAAa,EACb,EAAE,SAAS,EAAE,OAAO,CAAC,UAAU,EAAE,OAAO,EAAE,cAAc,EAAE,EAC1D;YACE,OAAO;YACP,YAAY,EAAE,OAAO;YACrB,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO;YAChC,WAAW,EAAE,OAAO,CAAC,KAAK;YAC1B,aAAa;YACb,mBAAmB,EAAE,mBAAmB;SACzC,CACF,CAAC;QAEF,cAAc,GAAG,SAAS,CAAC,OAAO,CAAC;QACnC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACvC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC3C,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,eAAe,EAAE,CAAC;AACnE,CAAC;AAED,iFAAiF;AAEjF,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AACzD,CAAC"}
1
+ {"version":3,"file":"bancroft.js","sourceRoot":"","sources":["../../src/agents/bancroft.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * A tool the model may call. Structurally the JSON-Schema subset every
3
+ * tool-calling API accepts, so a provider can usually pass it through with a
4
+ * cast rather than a translation.
5
+ */
6
+ export interface AgentToolSchema {
7
+ name: string;
8
+ description: string;
9
+ input_schema: {
10
+ type: 'object';
11
+ properties: Record<string, unknown>;
12
+ required?: string[];
13
+ };
14
+ }
15
+ export interface AgentMessage {
16
+ role: 'user' | 'assistant';
17
+ content: string;
18
+ }
19
+ export interface AgentRequest {
20
+ model: string;
21
+ max_tokens: number;
22
+ temperature: number;
23
+ system: string;
24
+ messages: AgentMessage[];
25
+ tools: AgentToolSchema[];
26
+ /** `any` forces some tool call; `auto` lets the model decide. */
27
+ tool_choice: 'any' | 'auto';
28
+ }
29
+ export interface AgentToolCall {
30
+ name: string;
31
+ input: Record<string, unknown>;
32
+ }
33
+ /**
34
+ * What the runner needs back. Deliberately *not* the vendor's message object:
35
+ * the runner only ever reads tool calls and token usage, so widening this to
36
+ * carry a raw response would re-couple it to a vendor's response shape.
37
+ */
38
+ export interface AgentCompletion {
39
+ tool_calls: AgentToolCall[];
40
+ usage: {
41
+ input_tokens: number;
42
+ output_tokens: number;
43
+ };
44
+ }
45
+ export interface AgentProvider {
46
+ /** Stable identifier, e.g. `anthropic` or `replay`. Recorded in cassettes. */
47
+ readonly id: string;
48
+ complete(request: AgentRequest): Promise<AgentCompletion>;
49
+ /**
50
+ * Optional streaming variant. A provider that cannot stream omits it, and
51
+ * `runBancroftAgentStreaming` falls back to `complete()` rather than failing —
52
+ * streaming is a latency optimisation, not a semantic difference.
53
+ */
54
+ stream?(request: AgentRequest): Promise<AgentCompletion>;
55
+ }
56
+ /** Typed error for provider selection and transport failures. */
57
+ export declare class AgentProviderError extends Error {
58
+ readonly code: 'AGENT_PROVIDER_MISSING' | 'AGENT_PROVIDER_SDK_MISSING' | 'AGENT_PROVIDER_TRANSPORT' | 'AGENT_PROVIDER_REPLAY';
59
+ readonly cause?: unknown | undefined;
60
+ constructor(code: 'AGENT_PROVIDER_MISSING' | 'AGENT_PROVIDER_SDK_MISSING' | 'AGENT_PROVIDER_TRANSPORT' | 'AGENT_PROVIDER_REPLAY', message: string, cause?: unknown | undefined);
61
+ }
62
+ //# sourceMappingURL=provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/agents/provider.ts"],"names":[],"mappings":"AAiBA;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE;QACZ,IAAI,EAAE,QAAQ,CAAC;QACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACpC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;CACH;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,KAAK,EAAE,eAAe,EAAE,CAAC;IACzB,iEAAiE;IACjE,WAAW,EAAE,KAAK,GAAG,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,aAAa,EAAE,CAAC;IAC5B,KAAK,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC;CACxD;AAED,MAAM,WAAW,aAAa;IAC5B,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAC1D;;;;OAIG;IACH,MAAM,CAAC,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;CAC1D;AAED,iEAAiE;AACjE,qBAAa,kBAAmB,SAAQ,KAAK;IAEzC,QAAQ,CAAC,IAAI,EACT,wBAAwB,GACxB,4BAA4B,GAC5B,0BAA0B,GAC1B,uBAAuB;aAET,KAAK,CAAC,EAAE,OAAO;gBANxB,IAAI,EACT,wBAAwB,GACxB,4BAA4B,GAC5B,0BAA0B,GAC1B,uBAAuB,EAC3B,OAAO,EAAE,MAAM,EACG,KAAK,CAAC,EAAE,OAAO,YAAA;CAKpC"}
@@ -0,0 +1,28 @@
1
+ // The agent-provider contract — the narrow waist between the Bancroft runner
2
+ // and whatever model actually answers.
3
+ //
4
+ // Protocol §IX describes a Tier-4 host as provider-neutral. Until this file
5
+ // existed that was an aspiration: `bancroft.ts` imported `@anthropic-ai/sdk`
6
+ // directly, so "provider-neutral" could not be demonstrated, let alone tested.
7
+ //
8
+ // Everything a provider needs is here, and **nothing in this file imports a
9
+ // vendor SDK**. A host can implement `AgentProvider` against any backend — a
10
+ // different vendor, a local model, a gateway, or a recorded cassette (see
11
+ // `providers/replay.ts`) — without touching the runner.
12
+ //
13
+ // The types mirror the shape of a tool-calling chat request rather than any one
14
+ // vendor's spelling of it. They are deliberately snake_case, matching
15
+ // `ToolOutput` in `schemas.ts`, because they describe a wire payload rather
16
+ // than a TypeScript options bag.
17
+ /** Typed error for provider selection and transport failures. */
18
+ export class AgentProviderError extends Error {
19
+ code;
20
+ cause;
21
+ constructor(code, message, cause) {
22
+ super(message);
23
+ this.code = code;
24
+ this.cause = cause;
25
+ this.name = 'AgentProviderError';
26
+ }
27
+ }
28
+ //# sourceMappingURL=provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/agents/provider.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,uCAAuC;AACvC,EAAE;AACF,4EAA4E;AAC5E,6EAA6E;AAC7E,+EAA+E;AAC/E,EAAE;AACF,4EAA4E;AAC5E,6EAA6E;AAC7E,0EAA0E;AAC1E,wDAAwD;AACxD,EAAE;AACF,gFAAgF;AAChF,sEAAsE;AACtE,4EAA4E;AAC5E,iCAAiC;AA4DjC,iEAAiE;AACjE,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAEhC;IAMS;IAPpB,YACW,IAIkB,EAC3B,OAAe,EACG,KAAe;QAEjC,KAAK,CAAC,OAAO,CAAC,CAAC;QARN,SAAI,GAAJ,IAAI,CAIc;QAET,UAAK,GAAL,KAAK,CAAU;QAGjC,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF"}
@@ -0,0 +1,20 @@
1
+ import type Anthropic from '@anthropic-ai/sdk';
2
+ import { type AgentProvider } from '../provider.js';
3
+ export interface AnthropicProviderOptions {
4
+ apiKey: string;
5
+ /**
6
+ * Inject a pre-built client — a custom base URL, a gateway, a proxy with
7
+ * different retry behaviour. Tests use it to avoid constructing a real one.
8
+ */
9
+ client?: Anthropic;
10
+ }
11
+ /**
12
+ * Translate a neutral `AgentRequest` into an SDK call and the SDK's reply back
13
+ * into an `AgentCompletion`.
14
+ *
15
+ * The translation is deliberately total: everything the runner reads — tool
16
+ * calls and token usage — is mapped explicitly, so a change in the SDK's
17
+ * message shape surfaces here and nowhere else.
18
+ */
19
+ export declare function createAnthropicProvider(opts: AnthropicProviderOptions): AgentProvider;
20
+ //# sourceMappingURL=anthropic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../../src/agents/providers/anthropic.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,SAAS,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAGL,KAAK,aAAa,EAEnB,MAAM,gBAAgB,CAAC;AA2BxB,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,wBAAwB,GAAG,aAAa,CAoErF"}