@seanhogg/builderforce-memory 2026.7.12 → 2026.9.27

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 (223) hide show
  1. package/README.md +10 -0
  2. package/dist/bridges/AnthropicBridge.d.ts +9 -1
  3. package/dist/bridges/AnthropicBridge.d.ts.map +1 -1
  4. package/dist/bridges/AnthropicBridge.js +58 -2
  5. package/dist/bridges/AnthropicBridge.js.map +1 -1
  6. package/dist/bridges/CachingBridge.d.ts +9 -1
  7. package/dist/bridges/CachingBridge.d.ts.map +1 -1
  8. package/dist/bridges/CachingBridge.js +24 -1
  9. package/dist/bridges/CachingBridge.js.map +1 -1
  10. package/dist/bridges/OpenAIBridge.d.ts +4 -1
  11. package/dist/bridges/OpenAIBridge.d.ts.map +1 -1
  12. package/dist/bridges/OpenAIBridge.js +40 -2
  13. package/dist/bridges/OpenAIBridge.js.map +1 -1
  14. package/dist/bridges/SemanticCachingBridge.d.ts +8 -1
  15. package/dist/bridges/SemanticCachingBridge.d.ts.map +1 -1
  16. package/dist/bridges/SemanticCachingBridge.js +26 -1
  17. package/dist/bridges/SemanticCachingBridge.js.map +1 -1
  18. package/dist/bridges/TransformerBridge.d.ts +13 -0
  19. package/dist/bridges/TransformerBridge.d.ts.map +1 -1
  20. package/dist/bridges/VertexAIBridge.d.ts +102 -0
  21. package/dist/bridges/VertexAIBridge.d.ts.map +1 -0
  22. package/dist/bridges/VertexAIBridge.js +224 -0
  23. package/dist/bridges/VertexAIBridge.js.map +1 -0
  24. package/dist/bridges/index.d.ts +3 -1
  25. package/dist/bridges/index.d.ts.map +1 -1
  26. package/dist/bridges/index.js +1 -0
  27. package/dist/bridges/index.js.map +1 -1
  28. package/dist/eval/EvalHarness.d.ts +37 -0
  29. package/dist/eval/EvalHarness.d.ts.map +1 -0
  30. package/dist/eval/EvalHarness.js +178 -0
  31. package/dist/eval/EvalHarness.js.map +1 -0
  32. package/dist/eval/graders.d.ts +76 -0
  33. package/dist/eval/graders.d.ts.map +1 -0
  34. package/dist/eval/graders.js +168 -0
  35. package/dist/eval/graders.js.map +1 -0
  36. package/dist/eval/index.d.ts +26 -0
  37. package/dist/eval/index.d.ts.map +1 -0
  38. package/dist/eval/index.js +26 -0
  39. package/dist/eval/index.js.map +1 -0
  40. package/dist/eval/types.d.ts +97 -0
  41. package/dist/eval/types.d.ts.map +1 -0
  42. package/dist/eval/types.js +5 -0
  43. package/dist/eval/types.js.map +1 -0
  44. package/dist/evermind/contract.d.ts +40 -0
  45. package/dist/evermind/contract.d.ts.map +1 -0
  46. package/dist/evermind/contract.js +13 -0
  47. package/dist/evermind/contract.js.map +1 -0
  48. package/dist/evermind/index.d.ts +15 -0
  49. package/dist/evermind/index.d.ts.map +1 -0
  50. package/dist/evermind/index.js +4 -0
  51. package/dist/evermind/index.js.map +1 -0
  52. package/dist/evermind/memoryBlock.d.ts +7 -0
  53. package/dist/evermind/memoryBlock.d.ts.map +1 -0
  54. package/dist/evermind/memoryBlock.js +37 -0
  55. package/dist/evermind/memoryBlock.js.map +1 -0
  56. package/dist/evermind/recall.d.ts +55 -0
  57. package/dist/evermind/recall.d.ts.map +1 -0
  58. package/dist/evermind/recall.js +105 -0
  59. package/dist/evermind/recall.js.map +1 -0
  60. package/dist/index.d.ts +18 -3
  61. package/dist/index.d.ts.map +1 -1
  62. package/dist/index.js +14 -1
  63. package/dist/index.js.map +1 -1
  64. package/dist/ingest/IngestionPipeline.d.ts +95 -0
  65. package/dist/ingest/IngestionPipeline.d.ts.map +1 -0
  66. package/dist/ingest/IngestionPipeline.js +295 -0
  67. package/dist/ingest/IngestionPipeline.js.map +1 -0
  68. package/dist/ingest/index.d.ts +10 -0
  69. package/dist/ingest/index.d.ts.map +1 -0
  70. package/dist/ingest/index.js +8 -0
  71. package/dist/ingest/index.js.map +1 -0
  72. package/dist/ingest/parsers.d.ts +53 -0
  73. package/dist/ingest/parsers.d.ts.map +1 -0
  74. package/dist/ingest/parsers.js +306 -0
  75. package/dist/ingest/parsers.js.map +1 -0
  76. package/dist/ingest/types.d.ts +114 -0
  77. package/dist/ingest/types.d.ts.map +1 -0
  78. package/dist/ingest/types.js +19 -0
  79. package/dist/ingest/types.js.map +1 -0
  80. package/dist/memory/MemoryStore.d.ts +33 -0
  81. package/dist/memory/MemoryStore.d.ts.map +1 -1
  82. package/dist/memory/MemoryStore.js +29 -3
  83. package/dist/memory/MemoryStore.js.map +1 -1
  84. package/dist/memory/index.d.ts +1 -1
  85. package/dist/memory/index.d.ts.map +1 -1
  86. package/dist/orchestration/AgentGraph.d.ts +104 -0
  87. package/dist/orchestration/AgentGraph.d.ts.map +1 -0
  88. package/dist/orchestration/AgentGraph.js +364 -0
  89. package/dist/orchestration/AgentGraph.js.map +1 -0
  90. package/dist/orchestration/checkpoint.d.ts +58 -0
  91. package/dist/orchestration/checkpoint.d.ts.map +1 -0
  92. package/dist/orchestration/checkpoint.js +92 -0
  93. package/dist/orchestration/checkpoint.js.map +1 -0
  94. package/dist/orchestration/index.d.ts +14 -0
  95. package/dist/orchestration/index.d.ts.map +1 -0
  96. package/dist/orchestration/index.js +10 -0
  97. package/dist/orchestration/index.js.map +1 -0
  98. package/dist/orchestration/patterns.d.ts +159 -0
  99. package/dist/orchestration/patterns.d.ts.map +1 -0
  100. package/dist/orchestration/patterns.js +371 -0
  101. package/dist/orchestration/patterns.js.map +1 -0
  102. package/dist/orchestration/types.d.ts +146 -0
  103. package/dist/orchestration/types.d.ts.map +1 -0
  104. package/dist/orchestration/types.js +20 -0
  105. package/dist/orchestration/types.js.map +1 -0
  106. package/dist/rag/EnterpriseRetriever.d.ts +114 -0
  107. package/dist/rag/EnterpriseRetriever.d.ts.map +1 -0
  108. package/dist/rag/EnterpriseRetriever.js +240 -0
  109. package/dist/rag/EnterpriseRetriever.js.map +1 -0
  110. package/dist/rag/index.d.ts +6 -0
  111. package/dist/rag/index.d.ts.map +1 -0
  112. package/dist/rag/index.js +5 -0
  113. package/dist/rag/index.js.map +1 -0
  114. package/dist/retrieval/bm25.d.ts +48 -1
  115. package/dist/retrieval/bm25.d.ts.map +1 -1
  116. package/dist/retrieval/bm25.js +59 -13
  117. package/dist/retrieval/bm25.js.map +1 -1
  118. package/dist/retrieval/index.d.ts +2 -2
  119. package/dist/retrieval/index.d.ts.map +1 -1
  120. package/dist/retrieval/index.js +1 -1
  121. package/dist/retrieval/index.js.map +1 -1
  122. package/dist/telemetry/InstrumentedBridge.d.ts +62 -0
  123. package/dist/telemetry/InstrumentedBridge.d.ts.map +1 -0
  124. package/dist/telemetry/InstrumentedBridge.js +120 -0
  125. package/dist/telemetry/InstrumentedBridge.js.map +1 -0
  126. package/dist/telemetry/MetricsRegistry.d.ts +88 -0
  127. package/dist/telemetry/MetricsRegistry.d.ts.map +1 -0
  128. package/dist/telemetry/MetricsRegistry.js +167 -0
  129. package/dist/telemetry/MetricsRegistry.js.map +1 -0
  130. package/dist/telemetry/Tracer.d.ts +137 -0
  131. package/dist/telemetry/Tracer.d.ts.map +1 -0
  132. package/dist/telemetry/Tracer.js +244 -0
  133. package/dist/telemetry/Tracer.js.map +1 -0
  134. package/dist/telemetry/exporters.d.ts +68 -0
  135. package/dist/telemetry/exporters.d.ts.map +1 -0
  136. package/dist/telemetry/exporters.js +145 -0
  137. package/dist/telemetry/exporters.js.map +1 -0
  138. package/dist/telemetry/index.d.ts +19 -0
  139. package/dist/telemetry/index.d.ts.map +1 -0
  140. package/dist/telemetry/index.js +12 -0
  141. package/dist/telemetry/index.js.map +1 -0
  142. package/dist/telemetry/pricing.d.ts +74 -0
  143. package/dist/telemetry/pricing.d.ts.map +1 -0
  144. package/dist/telemetry/pricing.js +98 -0
  145. package/dist/telemetry/pricing.js.map +1 -0
  146. package/dist/telemetry/traceparent.d.ts +50 -0
  147. package/dist/telemetry/traceparent.d.ts.map +1 -0
  148. package/dist/telemetry/traceparent.js +77 -0
  149. package/dist/telemetry/traceparent.js.map +1 -0
  150. package/dist/telemetry/types.d.ts +90 -0
  151. package/dist/telemetry/types.d.ts.map +1 -0
  152. package/dist/telemetry/types.js +17 -0
  153. package/dist/telemetry/types.js.map +1 -0
  154. package/dist/vectorstore/MemoryVectorStore.d.ts +72 -0
  155. package/dist/vectorstore/MemoryVectorStore.d.ts.map +1 -0
  156. package/dist/vectorstore/MemoryVectorStore.js +205 -0
  157. package/dist/vectorstore/MemoryVectorStore.js.map +1 -0
  158. package/dist/vectorstore/RestVectorStore.d.ts +79 -0
  159. package/dist/vectorstore/RestVectorStore.d.ts.map +1 -0
  160. package/dist/vectorstore/RestVectorStore.js +170 -0
  161. package/dist/vectorstore/RestVectorStore.js.map +1 -0
  162. package/dist/vectorstore/dialects.d.ts +101 -0
  163. package/dist/vectorstore/dialects.d.ts.map +1 -0
  164. package/dist/vectorstore/dialects.js +618 -0
  165. package/dist/vectorstore/dialects.js.map +1 -0
  166. package/dist/vectorstore/filter.d.ts +42 -0
  167. package/dist/vectorstore/filter.d.ts.map +1 -0
  168. package/dist/vectorstore/filter.js +132 -0
  169. package/dist/vectorstore/filter.js.map +1 -0
  170. package/dist/vectorstore/index.d.ts +15 -0
  171. package/dist/vectorstore/index.d.ts.map +1 -0
  172. package/dist/vectorstore/index.js +11 -0
  173. package/dist/vectorstore/index.js.map +1 -0
  174. package/dist/vectorstore/types.d.ts +151 -0
  175. package/dist/vectorstore/types.d.ts.map +1 -0
  176. package/dist/vectorstore/types.js +30 -0
  177. package/dist/vectorstore/types.js.map +1 -0
  178. package/package.json +39 -5
  179. package/src/bridges/AnthropicBridge.ts +68 -3
  180. package/src/bridges/CachingBridge.ts +28 -2
  181. package/src/bridges/OpenAIBridge.ts +48 -3
  182. package/src/bridges/SemanticCachingBridge.ts +29 -2
  183. package/src/bridges/TransformerBridge.ts +16 -0
  184. package/src/bridges/VertexAIBridge.ts +297 -0
  185. package/src/bridges/index.ts +3 -1
  186. package/src/eval/EvalHarness.ts +214 -0
  187. package/src/eval/graders.ts +218 -0
  188. package/src/eval/index.ts +26 -0
  189. package/src/eval/types.ts +107 -0
  190. package/src/evermind/contract.ts +39 -0
  191. package/src/evermind/index.ts +21 -0
  192. package/src/evermind/memoryBlock.ts +38 -0
  193. package/src/evermind/recall.ts +122 -0
  194. package/src/index.ts +232 -0
  195. package/src/ingest/IngestionPipeline.ts +378 -0
  196. package/src/ingest/index.ts +46 -0
  197. package/src/ingest/parsers.ts +318 -0
  198. package/src/ingest/types.ts +116 -0
  199. package/src/memory/MemoryStore.ts +55 -3
  200. package/src/memory/index.ts +1 -1
  201. package/src/orchestration/AgentGraph.ts +462 -0
  202. package/src/orchestration/checkpoint.ts +129 -0
  203. package/src/orchestration/index.ts +63 -0
  204. package/src/orchestration/patterns.ts +532 -0
  205. package/src/orchestration/types.ts +128 -0
  206. package/src/rag/EnterpriseRetriever.ts +348 -0
  207. package/src/rag/index.ts +18 -0
  208. package/src/retrieval/bm25.ts +71 -13
  209. package/src/retrieval/index.ts +2 -2
  210. package/src/telemetry/InstrumentedBridge.ts +152 -0
  211. package/src/telemetry/MetricsRegistry.ts +263 -0
  212. package/src/telemetry/Tracer.ts +310 -0
  213. package/src/telemetry/exporters.ts +187 -0
  214. package/src/telemetry/index.ts +56 -0
  215. package/src/telemetry/pricing.ts +129 -0
  216. package/src/telemetry/traceparent.ts +89 -0
  217. package/src/telemetry/types.ts +105 -0
  218. package/src/vectorstore/MemoryVectorStore.ts +250 -0
  219. package/src/vectorstore/RestVectorStore.ts +236 -0
  220. package/src/vectorstore/dialects.ts +702 -0
  221. package/src/vectorstore/filter.ts +148 -0
  222. package/src/vectorstore/index.ts +53 -0
  223. package/src/vectorstore/types.ts +149 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkpoint.d.ts","sourceRoot":"","sources":["../../src/orchestration/checkpoint.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEvE,MAAM,WAAW,2BAA2B;IACxC;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,qBAAa,oBAAoB,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU,CAAE,YAAW,YAAY,CAAC,CAAC,CAAC;IAC3F,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAsC;IAC/D,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;gBAElB,IAAI,GAAE,2BAAgC;IAI5C,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAa9C,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IAOjF,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;IAIhD,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI5C,IAAI,WAAW,IAAI,MAAM,CAA+B;CAC3D;AAED;;;;;;GAMG;AACH,MAAM,WAAW,YAAY;IACzB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;IACrD,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,2BAA2B;IACxC,EAAE,EAAE,YAAY,CAAC;IACjB,8CAA8C;IAC9C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,mDAAmD;IACnD,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,qBAAa,oBAAoB,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU,CAAE,YAAW,YAAY,CAAC,CAAC,CAAC;IAC3F,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;IACnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;gBAElB,IAAI,EAAE,2BAA2B;IAMvC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAW9C,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IAMvF,oBAAoB;IACd,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;IAahD,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI5C,OAAO,CAAC,IAAI;CAGf"}
@@ -0,0 +1,92 @@
1
+ /**
2
+ * orchestration/checkpoint.ts — durable state between supersteps.
3
+ *
4
+ * Checkpointing is what turns three separate features into one mechanism:
5
+ * crash recovery, human-in-the-loop approval, and time-travel debugging. All three
6
+ * are "load the state as of superstep N and continue", so they share an
7
+ * implementation rather than each growing their own.
8
+ */
9
+ export class InMemoryCheckpointer {
10
+ _threads = new Map();
11
+ _max;
12
+ constructor(opts = {}) {
13
+ this._max = Math.max(1, opts.maxPerThread ?? 50);
14
+ }
15
+ async save(checkpoint) {
16
+ const history = this._threads.get(checkpoint.threadId) ?? [];
17
+ // Same id means the same superstep was re-entered (a resumed run): replace
18
+ // rather than append, so history stays a line and not a tangle.
19
+ const existing = history.findIndex((c) => c.id === checkpoint.id);
20
+ if (existing >= 0)
21
+ history[existing] = checkpoint;
22
+ else
23
+ history.push(checkpoint);
24
+ history.sort((a, b) => a.step - b.step);
25
+ if (history.length > this._max)
26
+ history.splice(0, history.length - this._max);
27
+ this._threads.set(checkpoint.threadId, history);
28
+ }
29
+ async load(threadId, checkpointId) {
30
+ const history = this._threads.get(threadId);
31
+ if (!history || history.length === 0)
32
+ return undefined;
33
+ if (checkpointId)
34
+ return history.find((c) => c.id === checkpointId);
35
+ return history[history.length - 1];
36
+ }
37
+ async list(threadId) {
38
+ return [...(this._threads.get(threadId) ?? [])].reverse();
39
+ }
40
+ async clear(threadId) {
41
+ this._threads.delete(threadId);
42
+ }
43
+ get threadCount() { return this._threads.size; }
44
+ }
45
+ export class KeyValueCheckpointer {
46
+ _kv;
47
+ _prefix;
48
+ _max;
49
+ constructor(opts) {
50
+ this._kv = opts.kv;
51
+ this._prefix = opts.prefix ?? 'evermind:ckpt:';
52
+ this._max = Math.max(1, opts.maxPerThread ?? 50);
53
+ }
54
+ async save(checkpoint) {
55
+ const history = await this.list(checkpoint.threadId);
56
+ const without = history.filter((c) => c.id !== checkpoint.id);
57
+ const next = [...without, checkpoint]
58
+ .sort((a, b) => a.step - b.step)
59
+ .slice(-this._max);
60
+ // One key per thread rather than one per checkpoint: a thread's history is
61
+ // always read whole, and a single round trip beats a list-then-fan-out.
62
+ await this._kv.put(this._key(checkpoint.threadId), JSON.stringify(next));
63
+ }
64
+ async load(threadId, checkpointId) {
65
+ const history = await this.list(threadId);
66
+ if (history.length === 0)
67
+ return undefined;
68
+ return checkpointId ? history.find((c) => c.id === checkpointId) : history[0];
69
+ }
70
+ /** Newest first. */
71
+ async list(threadId) {
72
+ const raw = await this._kv.get(this._key(threadId));
73
+ if (!raw)
74
+ return [];
75
+ try {
76
+ const parsed = JSON.parse(raw);
77
+ return Array.isArray(parsed) ? [...parsed].sort((a, b) => b.step - a.step) : [];
78
+ }
79
+ catch {
80
+ // A corrupt entry must not wedge the thread forever; treat it as empty
81
+ // so the next run rebuilds rather than throwing on every resume.
82
+ return [];
83
+ }
84
+ }
85
+ async clear(threadId) {
86
+ await this._kv.delete(this._key(threadId));
87
+ }
88
+ _key(threadId) {
89
+ return `${this._prefix}${threadId}`;
90
+ }
91
+ }
92
+ //# sourceMappingURL=checkpoint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkpoint.js","sourceRoot":"","sources":["../../src/orchestration/checkpoint.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * orchestration — stateful multi-agent graphs (supersteps, declared channel
3
+ * merges, checkpointing) plus the three patterns enterprise work reduces to:
4
+ * ReAct, self-reflection, and hierarchical delegation.
5
+ */
6
+ export { AgentGraph, appendReducer, mergeReducer, sumReducer, unionReducer, } from './AgentGraph.js';
7
+ export type { AgentGraphOptions, RunOptions } from './AgentGraph.js';
8
+ export { InMemoryCheckpointer, KeyValueCheckpointer } from './checkpoint.js';
9
+ export type { InMemoryCheckpointerOptions, KeyValueCheckpointerOptions, KeyValueLike, } from './checkpoint.js';
10
+ export { createReactAgent, createReflectionAgent, createSupervisor, asWorker, parseReactTurn, renderToolCatalog, renderTranscript, REACT_PROTOCOL, DEFAULT_CRITIC_PROMPT, FINISH, } from './patterns.js';
11
+ export type { AgentTool, AgentTurn, AgentTurnRole, ParsedAction, ReactAgentOptions, ReactState, ReflectionAgentOptions, ReflectionState, SupervisorOptions, SupervisorState, Worker, } from './patterns.js';
12
+ export { START, END } from './types.js';
13
+ export type { ChannelReducer, ChannelSpec, ChannelSpecs, Checkpoint, Checkpointer, EdgeCondition, GraphEndReason, GraphEvent, GraphRunResult, GraphState, NodeContext, NodeFn, } from './types.js';
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/orchestration/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACH,UAAU,EACV,aAAa,EACb,YAAY,EACZ,UAAU,EACV,YAAY,GACf,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAErE,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAC7E,YAAY,EACR,2BAA2B,EAC3B,2BAA2B,EAC3B,YAAY,GACf,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACH,gBAAgB,EAChB,qBAAqB,EACrB,gBAAgB,EAChB,QAAQ,EACR,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,qBAAqB,EACrB,MAAM,GACT,MAAM,eAAe,CAAC;AACvB,YAAY,EACR,SAAS,EACT,SAAS,EACT,aAAa,EACb,YAAY,EACZ,iBAAiB,EACjB,UAAU,EACV,sBAAsB,EACtB,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,MAAM,GACT,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AACxC,YAAY,EACR,cAAc,EACd,WAAW,EACX,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,aAAa,EACb,cAAc,EACd,UAAU,EACV,cAAc,EACd,UAAU,EACV,WAAW,EACX,MAAM,GACT,MAAM,YAAY,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * orchestration — stateful multi-agent graphs (supersteps, declared channel
3
+ * merges, checkpointing) plus the three patterns enterprise work reduces to:
4
+ * ReAct, self-reflection, and hierarchical delegation.
5
+ */
6
+ export { AgentGraph, appendReducer, mergeReducer, sumReducer, unionReducer, } from './AgentGraph.js';
7
+ export { InMemoryCheckpointer, KeyValueCheckpointer } from './checkpoint.js';
8
+ export { createReactAgent, createReflectionAgent, createSupervisor, asWorker, parseReactTurn, renderToolCatalog, renderTranscript, REACT_PROTOCOL, DEFAULT_CRITIC_PROMPT, FINISH, } from './patterns.js';
9
+ export { START, END } from './types.js';
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/orchestration/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACH,UAAU,EACV,aAAa,EACb,YAAY,EACZ,UAAU,EACV,YAAY,GACf,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAO7E,OAAO,EACH,gBAAgB,EAChB,qBAAqB,EACrB,gBAAgB,EAChB,QAAQ,EACR,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,qBAAqB,EACrB,MAAM,GACT,MAAM,eAAe,CAAC;AAevB,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,159 @@
1
+ /**
2
+ * orchestration/patterns.ts — ReAct, self-reflection, hierarchical delegation.
3
+ *
4
+ * These are the three patterns enterprise agent work actually reduces to, and each
5
+ * is a small graph rather than a bespoke loop, so they compose: a supervisor's
6
+ * worker can be a ReAct agent, and a ReAct agent's answer can be routed through a
7
+ * reflection pass. That composability is why they are built on {@link AgentGraph}
8
+ * instead of as three independent classes.
9
+ *
10
+ * The bridge port is plain text in, text out, so tool use is expressed as a strict
11
+ * textual protocol the model is instructed to follow, and violations are handled
12
+ * as data (an observation telling the model what it got wrong) rather than as
13
+ * exceptions. A model that emits a malformed action must be able to recover on the
14
+ * next turn; throwing would end the run over a formatting slip.
15
+ */
16
+ import type { TransformerBridge } from '../bridges/TransformerBridge.js';
17
+ import type { Tracer } from '../telemetry/Tracer.js';
18
+ import { AgentGraph } from './AgentGraph.js';
19
+ import type { Checkpointer } from './types.js';
20
+ export type AgentTurnRole = 'user' | 'assistant' | 'system' | 'tool';
21
+ export interface AgentTurn {
22
+ role: AgentTurnRole;
23
+ content: string;
24
+ /** Set on `tool` turns — which tool produced this observation. */
25
+ name?: string;
26
+ }
27
+ /** Renders a transcript for a text-completion bridge. */
28
+ export declare function renderTranscript(turns: readonly AgentTurn[]): string;
29
+ export interface AgentTool {
30
+ name: string;
31
+ description: string;
32
+ /** Parameter documentation, rendered into the prompt. */
33
+ parameters?: Record<string, string>;
34
+ run(input: Record<string, unknown>): Promise<string> | string;
35
+ }
36
+ export declare function renderToolCatalog(tools: readonly AgentTool[]): string;
37
+ export interface ParsedAction {
38
+ kind: 'action' | 'final' | 'malformed';
39
+ thought?: string;
40
+ tool?: string;
41
+ input?: Record<string, unknown>;
42
+ answer?: string;
43
+ problem?: string;
44
+ }
45
+ /**
46
+ * Parses one ReAct turn.
47
+ *
48
+ * Tolerant on purpose: models drift on whitespace, casing and code fences far more
49
+ * often than they drift on intent, and a parser that rejects `**Action:**` burns a
50
+ * turn for no reason. Genuinely unparseable output returns `malformed` with a
51
+ * message that is fed back as an observation.
52
+ */
53
+ export declare function parseReactTurn(text: string): ParsedAction;
54
+ export type ReactState = {
55
+ task: string;
56
+ turns: AgentTurn[];
57
+ /** Tool invocations so far — the loop's own budget meter. */
58
+ toolCalls: number;
59
+ answer: string;
60
+ done: boolean;
61
+ };
62
+ export interface ReactAgentOptions {
63
+ bridge: TransformerBridge;
64
+ tools: readonly AgentTool[];
65
+ /** Prepended to the generated protocol instructions. */
66
+ systemPrompt?: string;
67
+ /** Reason/act cycles before the agent must answer. Default 6. */
68
+ maxIterations?: number;
69
+ maxTokens?: number;
70
+ model?: string;
71
+ tracer?: Tracer;
72
+ checkpointer?: Checkpointer<ReactState>;
73
+ }
74
+ export declare const REACT_PROTOCOL: string;
75
+ /**
76
+ * ReAct: interleaved reasoning and tool use.
77
+ *
78
+ * Two nodes and a conditional edge — `reason` produces a thought plus either an
79
+ * action or a final answer; `act` executes the tool and appends an observation;
80
+ * the edge routes back to `reason` or to END. The iteration cap is enforced in the
81
+ * routing rather than trusted to the model, because "decide when to stop" is the
82
+ * one judgement an unconverged agent is worst at.
83
+ */
84
+ export declare function createReactAgent(opts: ReactAgentOptions): AgentGraph<ReactState>;
85
+ export type ReflectionState = {
86
+ task: string;
87
+ draft: string;
88
+ critique: string;
89
+ revisions: number;
90
+ accepted: boolean;
91
+ history: string[];
92
+ };
93
+ export interface ReflectionAgentOptions {
94
+ bridge: TransformerBridge;
95
+ /** Revision rounds allowed after the first draft. Default 2. */
96
+ maxRevisions?: number;
97
+ /** Instructions for the drafting pass. */
98
+ generatorPrompt?: string;
99
+ /** Instructions for the critic. Must ask for an explicit verdict token. */
100
+ criticPrompt?: string;
101
+ /** Decides acceptance from the critique. Default: looks for `APPROVED`. */
102
+ isAcceptable?: (critique: string) => boolean;
103
+ maxTokens?: number;
104
+ model?: string;
105
+ tracer?: Tracer;
106
+ checkpointer?: Checkpointer<ReflectionState>;
107
+ }
108
+ export declare const DEFAULT_CRITIC_PROMPT: string;
109
+ /**
110
+ * Generate → critique → revise, bounded.
111
+ *
112
+ * Reflection earns its cost only when the critic is allowed to be harsh and the
113
+ * loop is allowed to stop: an unbounded critic converges on nitpicking, and a
114
+ * critic that cannot say APPROVED doubles spend for no quality gain. Both limits
115
+ * are enforced here rather than requested in the prompt.
116
+ */
117
+ export declare function createReflectionAgent(opts: ReflectionAgentOptions): AgentGraph<ReflectionState>;
118
+ export interface Worker {
119
+ name: string;
120
+ /** What this worker is for — the supervisor routes on this text. */
121
+ description: string;
122
+ /** Runs the sub-task and returns its result. May itself be a graph. */
123
+ run(task: string, context: {
124
+ transcript: readonly AgentTurn[];
125
+ }): Promise<string>;
126
+ }
127
+ export type SupervisorState = {
128
+ task: string;
129
+ turns: AgentTurn[];
130
+ /** Worker chosen for the next hop, or `FINISH`. */
131
+ next: string;
132
+ handoffs: number;
133
+ answer: string;
134
+ };
135
+ export interface SupervisorOptions {
136
+ bridge: TransformerBridge;
137
+ workers: readonly Worker[];
138
+ /** Delegations before the supervisor must answer. Default 5. */
139
+ maxHandoffs?: number;
140
+ systemPrompt?: string;
141
+ maxTokens?: number;
142
+ model?: string;
143
+ tracer?: Tracer;
144
+ checkpointer?: Checkpointer<SupervisorState>;
145
+ }
146
+ export declare const FINISH = "FINISH";
147
+ /**
148
+ * A supervisor that delegates to named workers and then composes the answer.
149
+ *
150
+ * Hierarchical delegation is worth its coordination overhead exactly when workers
151
+ * hold context the supervisor should not — a different tool set, a different
152
+ * corpus, a different tenant's data. Each worker returns a RESULT rather than its
153
+ * transcript, which is what keeps the supervisor's context from growing into the
154
+ * sum of everything its workers read.
155
+ */
156
+ export declare function createSupervisor(opts: SupervisorOptions): AgentGraph<SupervisorState>;
157
+ /** Adapts a ReAct agent into a {@link Worker}, so hierarchies nest. */
158
+ export declare function asWorker(name: string, description: string, graph: AgentGraph<ReactState>): Worker;
159
+ //# sourceMappingURL=patterns.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"patterns.d.ts","sourceRoot":"","sources":["../../src/orchestration/patterns.ts"],"names":[],"mappings":"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"}