@framers/agentos 0.1.111 → 0.1.113

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 (119) hide show
  1. package/dist/api/strategies/debate.d.ts +12 -1
  2. package/dist/api/strategies/debate.d.ts.map +1 -1
  3. package/dist/api/strategies/debate.js +41 -5
  4. package/dist/api/strategies/debate.js.map +1 -1
  5. package/dist/api/strategies/hierarchical.d.ts +15 -1
  6. package/dist/api/strategies/hierarchical.d.ts.map +1 -1
  7. package/dist/api/strategies/hierarchical.js +51 -7
  8. package/dist/api/strategies/hierarchical.js.map +1 -1
  9. package/dist/api/strategies/index.d.ts +26 -4
  10. package/dist/api/strategies/index.d.ts.map +1 -1
  11. package/dist/api/strategies/index.js +26 -4
  12. package/dist/api/strategies/index.js.map +1 -1
  13. package/dist/api/strategies/parallel.d.ts +15 -4
  14. package/dist/api/strategies/parallel.d.ts.map +1 -1
  15. package/dist/api/strategies/parallel.js +53 -16
  16. package/dist/api/strategies/parallel.js.map +1 -1
  17. package/dist/api/strategies/review-loop.d.ts +15 -1
  18. package/dist/api/strategies/review-loop.d.ts.map +1 -1
  19. package/dist/api/strategies/review-loop.js +36 -10
  20. package/dist/api/strategies/review-loop.js.map +1 -1
  21. package/dist/api/strategies/sequential.d.ts +11 -1
  22. package/dist/api/strategies/sequential.d.ts.map +1 -1
  23. package/dist/api/strategies/sequential.js +39 -8
  24. package/dist/api/strategies/sequential.js.map +1 -1
  25. package/dist/api/strategies/shared.d.ts +71 -7
  26. package/dist/api/strategies/shared.d.ts.map +1 -1
  27. package/dist/api/strategies/shared.js +89 -10
  28. package/dist/api/strategies/shared.js.map +1 -1
  29. package/dist/api/types.d.ts +54 -1
  30. package/dist/api/types.d.ts.map +1 -1
  31. package/dist/api/types.js.map +1 -1
  32. package/dist/memory/facade/Memory.d.ts.map +1 -1
  33. package/dist/memory/facade/Memory.js +8 -0
  34. package/dist/memory/facade/Memory.js.map +1 -1
  35. package/dist/memory/facade/types.d.ts +10 -0
  36. package/dist/memory/facade/types.d.ts.map +1 -1
  37. package/dist/memory/index.d.ts +6 -0
  38. package/dist/memory/index.d.ts.map +1 -1
  39. package/dist/memory/index.js +5 -0
  40. package/dist/memory/index.js.map +1 -1
  41. package/dist/memory/observation/MemoryObserver.d.ts +63 -1
  42. package/dist/memory/observation/MemoryObserver.d.ts.map +1 -1
  43. package/dist/memory/observation/MemoryObserver.js +115 -4
  44. package/dist/memory/observation/MemoryObserver.js.map +1 -1
  45. package/dist/memory/observation/ObservationCompressor.d.ts +88 -0
  46. package/dist/memory/observation/ObservationCompressor.d.ts.map +1 -0
  47. package/dist/memory/observation/ObservationCompressor.js +207 -0
  48. package/dist/memory/observation/ObservationCompressor.js.map +1 -0
  49. package/dist/memory/observation/ObservationReflector.d.ts +82 -0
  50. package/dist/memory/observation/ObservationReflector.d.ts.map +1 -0
  51. package/dist/memory/observation/ObservationReflector.js +212 -0
  52. package/dist/memory/observation/ObservationReflector.js.map +1 -0
  53. package/dist/memory/observation/temporal.d.ts +54 -0
  54. package/dist/memory/observation/temporal.d.ts.map +1 -0
  55. package/dist/memory/observation/temporal.js +115 -0
  56. package/dist/memory/observation/temporal.js.map +1 -0
  57. package/dist/orchestration/builders/VoiceNodeBuilder.d.ts +82 -25
  58. package/dist/orchestration/builders/VoiceNodeBuilder.d.ts.map +1 -1
  59. package/dist/orchestration/builders/VoiceNodeBuilder.js +86 -26
  60. package/dist/orchestration/builders/VoiceNodeBuilder.js.map +1 -1
  61. package/dist/orchestration/events/GraphEvent.d.ts +67 -5
  62. package/dist/orchestration/events/GraphEvent.d.ts.map +1 -1
  63. package/dist/orchestration/events/GraphEvent.js.map +1 -1
  64. package/dist/orchestration/runtime/VoiceNodeExecutor.d.ts +102 -25
  65. package/dist/orchestration/runtime/VoiceNodeExecutor.d.ts.map +1 -1
  66. package/dist/orchestration/runtime/VoiceNodeExecutor.js +133 -38
  67. package/dist/orchestration/runtime/VoiceNodeExecutor.js.map +1 -1
  68. package/dist/orchestration/runtime/VoiceTransportAdapter.d.ts +94 -32
  69. package/dist/orchestration/runtime/VoiceTransportAdapter.d.ts.map +1 -1
  70. package/dist/orchestration/runtime/VoiceTransportAdapter.js +82 -28
  71. package/dist/orchestration/runtime/VoiceTransportAdapter.js.map +1 -1
  72. package/dist/orchestration/runtime/VoiceTurnCollector.d.ts +73 -20
  73. package/dist/orchestration/runtime/VoiceTurnCollector.d.ts.map +1 -1
  74. package/dist/orchestration/runtime/VoiceTurnCollector.js +84 -23
  75. package/dist/orchestration/runtime/VoiceTurnCollector.js.map +1 -1
  76. package/dist/voice/CallManager.d.ts.map +1 -1
  77. package/dist/voice/CallManager.js +9 -1
  78. package/dist/voice/CallManager.js.map +1 -1
  79. package/dist/voice/MediaStreamParser.d.ts +115 -6
  80. package/dist/voice/MediaStreamParser.d.ts.map +1 -1
  81. package/dist/voice/MediaStreamParser.js +44 -0
  82. package/dist/voice/MediaStreamParser.js.map +1 -1
  83. package/dist/voice/TelephonyStreamTransport.d.ts +112 -20
  84. package/dist/voice/TelephonyStreamTransport.d.ts.map +1 -1
  85. package/dist/voice/TelephonyStreamTransport.js +136 -30
  86. package/dist/voice/TelephonyStreamTransport.js.map +1 -1
  87. package/dist/voice/parsers/PlivoMediaStreamParser.d.ts +64 -6
  88. package/dist/voice/parsers/PlivoMediaStreamParser.d.ts.map +1 -1
  89. package/dist/voice/parsers/PlivoMediaStreamParser.js +67 -6
  90. package/dist/voice/parsers/PlivoMediaStreamParser.js.map +1 -1
  91. package/dist/voice/parsers/TelnyxMediaStreamParser.d.ts +55 -8
  92. package/dist/voice/parsers/TelnyxMediaStreamParser.d.ts.map +1 -1
  93. package/dist/voice/parsers/TelnyxMediaStreamParser.js +60 -9
  94. package/dist/voice/parsers/TelnyxMediaStreamParser.js.map +1 -1
  95. package/dist/voice/parsers/TwilioMediaStreamParser.d.ts +73 -11
  96. package/dist/voice/parsers/TwilioMediaStreamParser.d.ts.map +1 -1
  97. package/dist/voice/parsers/TwilioMediaStreamParser.js +81 -12
  98. package/dist/voice/parsers/TwilioMediaStreamParser.js.map +1 -1
  99. package/dist/voice/providers/plivo.d.ts +108 -12
  100. package/dist/voice/providers/plivo.d.ts.map +1 -1
  101. package/dist/voice/providers/plivo.js +106 -9
  102. package/dist/voice/providers/plivo.js.map +1 -1
  103. package/dist/voice/providers/telnyx.d.ts +110 -20
  104. package/dist/voice/providers/telnyx.d.ts.map +1 -1
  105. package/dist/voice/providers/telnyx.js +111 -20
  106. package/dist/voice/providers/telnyx.js.map +1 -1
  107. package/dist/voice/providers/twilio.d.ts +91 -13
  108. package/dist/voice/providers/twilio.d.ts.map +1 -1
  109. package/dist/voice/providers/twilio.js +94 -14
  110. package/dist/voice/providers/twilio.js.map +1 -1
  111. package/dist/voice/twiml.d.ts +70 -12
  112. package/dist/voice/twiml.d.ts.map +1 -1
  113. package/dist/voice/twiml.js +70 -12
  114. package/dist/voice/twiml.js.map +1 -1
  115. package/dist/voice/types.d.ts +142 -15
  116. package/dist/voice/types.d.ts.map +1 -1
  117. package/dist/voice/types.js +34 -3
  118. package/dist/voice/types.js.map +1 -1
  119. package/package.json +1 -1
@@ -2,9 +2,27 @@
2
2
  * @file parallel.ts
3
3
  * Parallel strategy compiler for the Agency API.
4
4
  *
5
- * Runs all agents concurrently on the same prompt, then synthesizes their
6
- * outputs into a single coherent response using the agency-level model.
7
- * Requires an agency-level `model` or `provider` for the synthesis step.
5
+ * ## Execution model
6
+ *
7
+ * Runs all agents concurrently on the same prompt via `Promise.allSettled`,
8
+ * then synthesizes their outputs into a single coherent response using the
9
+ * agency-level model. Requires an agency-level `model` or `provider` for
10
+ * the synthesis step.
11
+ *
12
+ * ## Error handling
13
+ *
14
+ * Individual agent failures do not abort the entire run. `Promise.allSettled`
15
+ * collects both fulfilled and rejected outcomes. Rejected agents emit an
16
+ * `error` callback event and are excluded from the synthesis prompt, so the
17
+ * remaining agents' outputs still produce a valid result.
18
+ *
19
+ * ## HITL integration
20
+ *
21
+ * Each agent is gated by {@link checkBeforeAgent} before invocation. Rejected
22
+ * agents return `null` and are filtered out before synthesis.
23
+ *
24
+ * @see {@link compileStrategy} -- the dispatcher that selects this compiler.
25
+ * @see {@link compileSequential} -- the simpler alternative for ordered pipelines.
8
26
  */
9
27
  import { agent as createAgent } from '../agent.js';
10
28
  import { AgencyConfigError } from '../types.js';
@@ -13,15 +31,26 @@ import { isAgent, mergeDefaults, checkBeforeAgent } from './shared.js';
13
31
  * Compiles a parallel execution strategy.
14
32
  *
15
33
  * All agents are invoked concurrently with the same prompt via
16
- * `Promise.all`. Once every agent has responded, a synthesis agent
17
- * (instantiated from the agency-level config) combines the individual
18
- * outputs into a single coherent response.
34
+ * `Promise.allSettled`. Once every agent has responded (or failed), a
35
+ * synthesis agent (instantiated from the agency-level config) combines the
36
+ * individual outputs into a single coherent response.
19
37
  *
20
38
  * @param agents - Named roster of agent configs or pre-built `Agent` instances.
21
39
  * @param agencyConfig - Agency-level configuration; must include `model` or `provider`
22
40
  * for the synthesis step.
23
41
  * @returns A {@link CompiledStrategy} with `execute` and `stream` methods.
24
- * @throws {AgencyConfigError} When no agency-level model/provider is available for synthesis.
42
+ * @throws {AgencyConfigError} When no agency-level model/provider is available
43
+ * for the synthesis step. The synthesis agent needs an LLM to combine the
44
+ * parallel outputs.
45
+ *
46
+ * @example
47
+ * ```ts
48
+ * const strategy = compileParallel(
49
+ * { factChecker: factAgent, writer: writeAgent },
50
+ * { model: 'openai:gpt-4o', agents: { factChecker: factAgent, writer: writeAgent } },
51
+ * );
52
+ * const result = await strategy.execute('Write a fact-checked article.');
53
+ * ```
25
54
  */
26
55
  export function compileParallel(agents, agencyConfig) {
27
56
  if (!agencyConfig.model && !agencyConfig.provider) {
@@ -29,19 +58,21 @@ export function compileParallel(agents, agencyConfig) {
29
58
  }
30
59
  return {
31
60
  async execute(prompt, opts) {
32
- /* Run every agent concurrently, gated by beforeAgent HITL. */
61
+ // Run every agent concurrently, gated by beforeAgent HITL.
62
+ // Promise.allSettled is used (not Promise.all) so that individual
63
+ // agent failures don't abort the entire parallel run.
33
64
  const entries = Object.entries(agents);
34
65
  const allSettled = await Promise.allSettled(entries.map(async ([name, agentOrConfig]) => {
35
- /* HITL: check beforeAgent gate before invoking this agent. */
66
+ // HITL: check beforeAgent gate before invoking this agent.
36
67
  const decision = await checkBeforeAgent(name, prompt, [], agencyConfig);
37
68
  if (decision && !decision.approved) {
38
- /* Agent was rejected exclude from results. */
69
+ // Agent was rejected -- exclude from results.
39
70
  return null;
40
71
  }
41
72
  const a = isAgent(agentOrConfig)
42
73
  ? agentOrConfig
43
74
  : createAgent({ ...mergeDefaults(agentOrConfig, agencyConfig) });
44
- /* Apply instruction modifications from the approval decision if any. */
75
+ // Apply instruction modifications from the approval decision if any.
45
76
  const effectivePrompt = decision?.modifications?.instructions
46
77
  ? `${prompt}\n\n[Additional instructions]: ${decision.modifications.instructions}`
47
78
  : prompt;
@@ -50,7 +81,9 @@ export function compileParallel(agents, agencyConfig) {
50
81
  const durationMs = Date.now() - start;
51
82
  return { name, result, durationMs };
52
83
  }));
53
- /* Log errors from rejected agents and keep only fulfilled results. */
84
+ // Log errors from rejected agents and keep only fulfilled results.
85
+ // This two-pass approach lets us collect error telemetry while still
86
+ // producing a valid synthesis from the successful agents.
54
87
  const settled = [];
55
88
  for (let i = 0; i < allSettled.length; i++) {
56
89
  const outcome = allSettled[i];
@@ -65,12 +98,12 @@ export function compileParallel(agents, agencyConfig) {
65
98
  });
66
99
  continue;
67
100
  }
68
- /* Skip null results (HITL-rejected agents). */
101
+ // Skip null results (HITL-rejected agents).
69
102
  if (outcome.value !== null) {
70
103
  settled.push(outcome.value);
71
104
  }
72
105
  }
73
- /* Collect agent call records and aggregate usage. */
106
+ // Collect agent call records and aggregate usage.
74
107
  const agentCalls = [];
75
108
  const totalUsage = { promptTokens: 0, completionTokens: 0, totalTokens: 0 };
76
109
  for (const { name, result, durationMs } of settled) {
@@ -92,7 +125,9 @@ export function compileParallel(agents, agencyConfig) {
92
125
  totalUsage.completionTokens += resultUsage.completionTokens ?? 0;
93
126
  totalUsage.totalTokens += resultUsage.totalTokens ?? 0;
94
127
  }
95
- /* Synthesize outputs using the agency-level model. */
128
+ // Synthesize outputs using the agency-level model.
129
+ // Each agent's output is labeled with its name so the synthesizer
130
+ // knows which perspective came from which agent.
96
131
  const agentOutputsBlock = settled
97
132
  .map(({ name, result }) => `--- ${name} ---\n${result.text ?? ''}`)
98
133
  .join('\n\n');
@@ -102,6 +137,8 @@ export function compileParallel(agents, agencyConfig) {
102
137
  const synthPrompt = `Multiple agents analyzed the following task:\n"${prompt}"\n\n` +
103
138
  `${agentOutputsBlock}\n\n` +
104
139
  `Synthesize these into a single coherent response.${synthInstructions}`;
140
+ // Create a fresh single-step synthesizer agent. maxSteps: 1 because
141
+ // the synthesis should be a single LLM call, not an agentic loop.
105
142
  const synthesizer = createAgent({
106
143
  model: agencyConfig.model,
107
144
  provider: agencyConfig.provider,
@@ -117,7 +154,7 @@ export function compileParallel(agents, agencyConfig) {
117
154
  return { ...synthesis, agentCalls, usage: totalUsage };
118
155
  },
119
156
  stream(prompt, opts) {
120
- /*
157
+ /**
121
158
  * For v1: streaming delegates to execute() and wraps the resolved text
122
159
  * as a single-chunk async iterable. A future version will stream the
123
160
  * synthesis step in real-time.
@@ -1 +1 @@
1
- {"version":3,"file":"parallel.js","sourceRoot":"","sources":["../../../src/api/strategies/parallel.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parallel.js","sourceRoot":"","sources":["../../../src/api/strategies/parallel.ts"],"names":[],"mappings":"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"}
@@ -9,10 +9,24 @@ import type { AgencyOptions, CompiledStrategy, Agent, BaseAgentConfig } from '..
9
9
  * producer for revision, up to `maxRounds` iterations.
10
10
  *
11
11
  * @param agents - Named roster of agent configs or pre-built `Agent` instances.
12
- * At least two agents are required (producer + reviewer).
12
+ * At least two agents are required (producer + reviewer). The first entry
13
+ * is the producer, the second is the reviewer.
13
14
  * @param agencyConfig - Agency-level configuration providing fallback model/provider/tools.
14
15
  * @returns A {@link CompiledStrategy} with `execute` and `stream` methods.
15
16
  * @throws {AgencyConfigError} When fewer than two agents are provided.
17
+ *
18
+ * @example
19
+ * ```ts
20
+ * const strategy = compileReviewLoop(
21
+ * {
22
+ * writer: { instructions: 'Write a blog post.' },
23
+ * editor: { instructions: 'Review for clarity and accuracy.' },
24
+ * },
25
+ * { maxRounds: 3, agents: { ... } },
26
+ * );
27
+ * const result = await strategy.execute('Write about TypeScript generics.');
28
+ * // result.text is the final approved draft.
29
+ * ```
16
30
  */
17
31
  export declare function compileReviewLoop(agents: Record<string, BaseAgentConfig | Agent>, agencyConfig: AgencyOptions): CompiledStrategy;
18
32
  //# sourceMappingURL=review-loop.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"review-loop.d.ts","sourceRoot":"","sources":["../../../src/api/strategies/review-loop.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EACV,aAAa,EACb,gBAAgB,EAChB,KAAK,EACL,eAAe,EAEhB,MAAM,aAAa,CAAC;AA6BrB;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,GAAG,KAAK,CAAC,EAC/C,YAAY,EAAE,aAAa,GAC1B,gBAAgB,CAqIlB"}
1
+ {"version":3,"file":"review-loop.d.ts","sourceRoot":"","sources":["../../../src/api/strategies/review-loop.ts"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EACV,aAAa,EACb,gBAAgB,EAChB,KAAK,EACL,eAAe,EAEhB,MAAM,aAAa,CAAC;AAmCrB;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,GAAG,KAAK,CAAC,EAC/C,YAAY,EAAE,aAAa,GAC1B,gBAAgB,CA2IlB"}
@@ -7,6 +7,12 @@ import { resolveAgent, checkBeforeAgent } from './shared.js';
7
7
  * When the response is not valid JSON, or lacks an `approved` boolean, the entire
8
8
  * text is treated as feedback and the draft is considered not approved.
9
9
  *
10
+ * ## Why parse gracefully?
11
+ *
12
+ * LLMs frequently wrap JSON in markdown code fences or add prose around it.
13
+ * By falling back to "not approved with full text as feedback", we ensure the
14
+ * loop always makes progress instead of crashing on malformed JSON.
15
+ *
10
16
  * @param text - Raw reviewer output text.
11
17
  * @returns Parsed review with approval status and feedback string.
12
18
  */
@@ -21,7 +27,7 @@ function parseReview(text) {
21
27
  }
22
28
  }
23
29
  catch {
24
- /* Not valid JSON fall through to treat entire text as feedback. */
30
+ // Not valid JSON -- fall through to treat entire text as feedback.
25
31
  }
26
32
  return { approved: false, feedback: text };
27
33
  }
@@ -35,16 +41,32 @@ function parseReview(text) {
35
41
  * producer for revision, up to `maxRounds` iterations.
36
42
  *
37
43
  * @param agents - Named roster of agent configs or pre-built `Agent` instances.
38
- * At least two agents are required (producer + reviewer).
44
+ * At least two agents are required (producer + reviewer). The first entry
45
+ * is the producer, the second is the reviewer.
39
46
  * @param agencyConfig - Agency-level configuration providing fallback model/provider/tools.
40
47
  * @returns A {@link CompiledStrategy} with `execute` and `stream` methods.
41
48
  * @throws {AgencyConfigError} When fewer than two agents are provided.
49
+ *
50
+ * @example
51
+ * ```ts
52
+ * const strategy = compileReviewLoop(
53
+ * {
54
+ * writer: { instructions: 'Write a blog post.' },
55
+ * editor: { instructions: 'Review for clarity and accuracy.' },
56
+ * },
57
+ * { maxRounds: 3, agents: { ... } },
58
+ * );
59
+ * const result = await strategy.execute('Write about TypeScript generics.');
60
+ * // result.text is the final approved draft.
61
+ * ```
42
62
  */
43
63
  export function compileReviewLoop(agents, agencyConfig) {
44
64
  const entries = Object.entries(agents);
45
65
  if (entries.length < 2) {
46
66
  throw new AgencyConfigError('Review-loop strategy requires at least two agents (producer + reviewer).');
47
67
  }
68
+ // Default to 3 rounds when not specified -- enough for meaningful revision
69
+ // without excessive back-and-forth.
48
70
  const maxRounds = agencyConfig.maxRounds ?? 3;
49
71
  const [producerName, producerConfig] = entries[0];
50
72
  const [reviewerName, reviewerConfig] = entries[1];
@@ -57,13 +79,16 @@ export function compileReviewLoop(agents, agencyConfig) {
57
79
  let draft = '';
58
80
  let feedback = '';
59
81
  for (let round = 0; round < maxRounds; round++) {
60
- /* ---- HITL: check beforeAgent gate for the producer ---- */
82
+ // ---- HITL: check beforeAgent gate for the producer ----
61
83
  const prodDecision = await checkBeforeAgent(producerName, prompt, agentCalls, agencyConfig);
62
84
  if (prodDecision && !prodDecision.approved) {
63
- /* Producer rejected terminate the loop early. */
85
+ // Producer rejected -- terminate the loop early.
86
+ // The current draft (empty or from a prior round) becomes the final output.
64
87
  break;
65
88
  }
66
- /* ---- Producer creates or revises ---- */
89
+ // ---- Producer creates or revises ----
90
+ // On the first round, the producer sees the original task.
91
+ // On subsequent rounds, it sees the task + its prior draft + reviewer feedback.
67
92
  const prodPrompt = round === 0
68
93
  ? prompt
69
94
  : `${prompt}\n\nYour previous draft:\n${draft}\n\nReviewer feedback:\n${feedback}\n\nRevise your work.`;
@@ -89,13 +114,13 @@ export function compileReviewLoop(agents, agencyConfig) {
89
114
  totalUsage.promptTokens += prodUsage.promptTokens ?? 0;
90
115
  totalUsage.completionTokens += prodUsage.completionTokens ?? 0;
91
116
  totalUsage.totalTokens += prodUsage.totalTokens ?? 0;
92
- /* ---- HITL: check beforeAgent gate for the reviewer ---- */
117
+ // ---- HITL: check beforeAgent gate for the reviewer ----
93
118
  const revDecision = await checkBeforeAgent(reviewerName, prompt, agentCalls, agencyConfig);
94
119
  if (revDecision && !revDecision.approved) {
95
- /* Reviewer rejected accept the current draft and break. */
120
+ // Reviewer rejected -- accept the current draft and break.
96
121
  break;
97
122
  }
98
- /* ---- Reviewer evaluates ---- */
123
+ // ---- Reviewer evaluates ----
99
124
  const revPrompt = `Review this work for the task: "${prompt}"\n\n` +
100
125
  `Draft:\n${draft}\n\n` +
101
126
  `Respond with JSON: { "approved": true/false, "feedback": "..." }`;
@@ -120,7 +145,8 @@ export function compileReviewLoop(agents, agencyConfig) {
120
145
  totalUsage.promptTokens += revUsage.promptTokens ?? 0;
121
146
  totalUsage.completionTokens += revUsage.completionTokens ?? 0;
122
147
  totalUsage.totalTokens += revUsage.totalTokens ?? 0;
123
- /* Parse the review decision. */
148
+ // Parse the review decision. If approved, exit the loop early.
149
+ // If not, capture feedback for the next producer revision.
124
150
  const review = parseReview(revText);
125
151
  if (review.approved)
126
152
  break;
@@ -129,7 +155,7 @@ export function compileReviewLoop(agents, agencyConfig) {
129
155
  return { text: draft, agentCalls, usage: totalUsage };
130
156
  },
131
157
  stream(prompt, opts) {
132
- /*
158
+ /**
133
159
  * For v1: streaming delegates to execute() and wraps the resolved text
134
160
  * as a single-chunk async iterable. A future version will stream the
135
161
  * producer's output in real-time during the final round.
@@ -1 +1 @@
1
- {"version":3,"file":"review-loop.js","sourceRoot":"","sources":["../../../src/api/strategies/review-loop.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAA0B,YAAY,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAErF;;;;;;;;;GASG;AACH,SAAS,WAAW,CAAC,IAAY;IAC/B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YACzC,OAAO;gBACL,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,QAAQ,EAAG,MAAM,CAAC,QAAmB,IAAI,IAAI;aAC9C,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,qEAAqE;IACvE,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC7C,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,iBAAiB,CAC/B,MAA+C,EAC/C,YAA2B;IAE3B,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACvC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,iBAAiB,CACzB,0EAA0E,CAC3E,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GAAG,YAAY,CAAC,SAAS,IAAI,CAAC,CAAC;IAC9C,MAAM,CAAC,YAAY,EAAE,cAAc,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAClD,MAAM,CAAC,YAAY,EAAE,cAAc,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAElD,OAAO;QACL,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI;YACxB,MAAM,UAAU,GAAsB,EAAE,CAAC;YACzC,MAAM,UAAU,GAAG,EAAE,YAAY,EAAE,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC;YAE5E,MAAM,QAAQ,GAAG,YAAY,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;YAC5D,MAAM,QAAQ,GAAG,YAAY,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;YAE5D,IAAI,KAAK,GAAG,EAAE,CAAC;YACf,IAAI,QAAQ,GAAG,EAAE,CAAC;YAElB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,SAAS,EAAE,KAAK,EAAE,EAAE,CAAC;gBAC/C,6DAA6D;gBAC7D,MAAM,YAAY,GAAG,MAAM,gBAAgB,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC;gBAC5F,IAAI,YAAY,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;oBAC3C,mDAAmD;oBACnD,MAAM;gBACR,CAAC;gBAED,2CAA2C;gBAC3C,MAAM,UAAU,GACd,KAAK,KAAK,CAAC;oBACT,CAAC,CAAC,MAAM;oBACR,CAAC,CAAC,GAAG,MAAM,6BAA6B,KAAK,2BAA2B,QAAQ,uBAAuB,CAAC;gBAE5G,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBAC7B,MAAM,UAAU,GAAG,CAAC,MAAM,QAAQ,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,CAA4B,CAAC;gBAC1F,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;gBAE5C,MAAM,QAAQ,GAAI,UAAU,CAAC,IAAe,IAAI,EAAE,CAAC;gBACnD,MAAM,SAAS,GAAI,UAAU,CAAC,KAAoF,IAAI,EAAE,CAAC;gBACzH,MAAM,aAAa,GAAI,UAAU,CAAC,SAAsF,IAAI,EAAE,CAAC;gBAE/H,KAAK,GAAG,QAAQ,CAAC;gBAEjB,UAAU,CAAC,IAAI,CAAC;oBACd,KAAK,EAAE,YAAY;oBACnB,KAAK,EAAE,UAAU;oBACjB,MAAM,EAAE,QAAQ;oBAChB,SAAS,EAAE,aAAa;oBACxB,KAAK,EAAE;wBACL,YAAY,EAAE,SAAS,CAAC,YAAY,IAAI,CAAC;wBACzC,gBAAgB,EAAE,SAAS,CAAC,gBAAgB,IAAI,CAAC;wBACjD,WAAW,EAAE,SAAS,CAAC,WAAW,IAAI,CAAC;qBACxC;oBACD,UAAU,EAAE,YAAY;iBACzB,CAAC,CAAC;gBAEH,UAAU,CAAC,YAAY,IAAI,SAAS,CAAC,YAAY,IAAI,CAAC,CAAC;gBACvD,UAAU,CAAC,gBAAgB,IAAI,SAAS,CAAC,gBAAgB,IAAI,CAAC,CAAC;gBAC/D,UAAU,CAAC,WAAW,IAAI,SAAS,CAAC,WAAW,IAAI,CAAC,CAAC;gBAErD,6DAA6D;gBAC7D,MAAM,WAAW,GAAG,MAAM,gBAAgB,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC;gBAC3F,IAAI,WAAW,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;oBACzC,6DAA6D;oBAC7D,MAAM;gBACR,CAAC;gBAED,kCAAkC;gBAClC,MAAM,SAAS,GACb,mCAAmC,MAAM,OAAO;oBAChD,WAAW,KAAK,MAAM;oBACtB,kEAAkE,CAAC;gBAErE,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBAC5B,MAAM,SAAS,GAAG,CAAC,MAAM,QAAQ,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAA4B,CAAC;gBACxF,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC;gBAE1C,MAAM,OAAO,GAAI,SAAS,CAAC,IAAe,IAAI,EAAE,CAAC;gBACjD,MAAM,QAAQ,GAAI,SAAS,CAAC,KAAoF,IAAI,EAAE,CAAC;gBACvH,MAAM,YAAY,GAAI,SAAS,CAAC,SAAsF,IAAI,EAAE,CAAC;gBAE7H,UAAU,CAAC,IAAI,CAAC;oBACd,KAAK,EAAE,YAAY;oBACnB,KAAK,EAAE,SAAS;oBAChB,MAAM,EAAE,OAAO;oBACf,SAAS,EAAE,YAAY;oBACvB,KAAK,EAAE;wBACL,YAAY,EAAE,QAAQ,CAAC,YAAY,IAAI,CAAC;wBACxC,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB,IAAI,CAAC;wBAChD,WAAW,EAAE,QAAQ,CAAC,WAAW,IAAI,CAAC;qBACvC;oBACD,UAAU,EAAE,WAAW;iBACxB,CAAC,CAAC;gBAEH,UAAU,CAAC,YAAY,IAAI,QAAQ,CAAC,YAAY,IAAI,CAAC,CAAC;gBACtD,UAAU,CAAC,gBAAgB,IAAI,QAAQ,CAAC,gBAAgB,IAAI,CAAC,CAAC;gBAC9D,UAAU,CAAC,WAAW,IAAI,QAAQ,CAAC,WAAW,IAAI,CAAC,CAAC;gBAEpD,gCAAgC;gBAChC,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;gBACpC,IAAI,MAAM,CAAC,QAAQ;oBAAE,MAAM;gBAC3B,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;YAC7B,CAAC;YAED,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;QACxD,CAAC;QAED,MAAM,CAAC,MAAM,EAAE,IAAI;YACjB;;;;eAIG;YACH,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAqC,CAAC;YACrF,MAAM,WAAW,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAE,CAAC,CAAC,IAAe,IAAI,EAAE,CAAC,CAAC;YAExE,OAAO;gBACL,UAAU,EAAE,CAAC,KAAK,SAAS,CAAC;oBAC1B,MAAM,MAAM,WAAW,CAAC;gBAC1B,CAAC,CAAC,EAAE;gBACJ,UAAU,EAAE,CAAC,KAAK,SAAS,CAAC;oBAC1B,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;oBAC/B,MAAM,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,CAAC;gBACxC,CAAC,CAAC,EAAE;gBACJ,IAAI,EAAE,WAAW;gBACjB,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;aAC1C,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"review-loop.js","sourceRoot":"","sources":["../../../src/api/strategies/review-loop.ts"],"names":[],"mappings":"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"}
@@ -5,11 +5,21 @@ import type { AgencyOptions, CompiledStrategy, Agent, BaseAgentConfig } from '..
5
5
  * Agents are invoked one-by-one in their declared iteration order. Each agent
6
6
  * after the first receives a prompt that includes both the original task and
7
7
  * the preceding agent's output, enabling progressive refinement chains such as
8
- * researcher -> editor -> reviewer.
8
+ * `researcher -> editor -> reviewer`.
9
9
  *
10
10
  * @param agents - Named roster of agent configs or pre-built `Agent` instances.
11
+ * Iteration order of `Object.entries()` determines execution order.
11
12
  * @param agencyConfig - Agency-level configuration providing fallback model/provider/tools.
12
13
  * @returns A {@link CompiledStrategy} with `execute` and `stream` methods.
14
+ *
15
+ * @example
16
+ * ```ts
17
+ * const strategy = compileSequential(
18
+ * { researcher: { instructions: 'Find info.' }, writer: { instructions: 'Write summary.' } },
19
+ * agencyConfig,
20
+ * );
21
+ * const result = await strategy.execute('Summarise recent AI research.');
22
+ * ```
13
23
  */
14
24
  export declare function compileSequential(agents: Record<string, BaseAgentConfig | Agent>, agencyConfig: AgencyOptions): CompiledStrategy;
15
25
  //# sourceMappingURL=sequential.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sequential.d.ts","sourceRoot":"","sources":["../../../src/api/strategies/sequential.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EACV,aAAa,EACb,gBAAgB,EAChB,KAAK,EACL,eAAe,EAIhB,MAAM,aAAa,CAAC;AAGrB;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,GAAG,KAAK,CAAC,EAC/C,YAAY,EAAE,aAAa,GAC1B,gBAAgB,CAqNlB"}
1
+ {"version":3,"file":"sequential.d.ts","sourceRoot":"","sources":["../../../src/api/strategies/sequential.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EACV,aAAa,EACb,gBAAgB,EAChB,KAAK,EACL,eAAe,EAIhB,MAAM,aAAa,CAAC;AAGrB;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,GAAG,KAAK,CAAC,EAC/C,YAAY,EAAE,aAAa,GAC1B,gBAAgB,CA2NlB"}
@@ -2,9 +2,24 @@
2
2
  * @file sequential.ts
3
3
  * Sequential strategy compiler for the Agency API.
4
4
  *
5
+ * ## Execution model
6
+ *
5
7
  * Iterates agents in declaration order. Each agent receives the previous
6
8
  * agent's output as context, forming a chain where the final agent's response
7
9
  * is the overall result. Token usage is aggregated across all agent calls.
10
+ *
11
+ * This is the simplest and most common strategy -- ideal for pipelines like
12
+ * `researcher -> editor -> reviewer` where each step builds on the previous.
13
+ *
14
+ * ## HITL integration
15
+ *
16
+ * Each agent is gated by {@link checkBeforeAgent} before invocation. If the
17
+ * HITL handler rejects an agent, it is skipped and the chain continues with
18
+ * the next agent using the same context (the rejected agent's contribution
19
+ * is simply omitted).
20
+ *
21
+ * @see {@link compileStrategy} -- the dispatcher that selects this compiler.
22
+ * @see {@link checkBeforeAgent} -- the HITL gate applied before each agent.
8
23
  */
9
24
  import { agent as createAgent } from '../agent.js';
10
25
  import { isAgent, mergeDefaults, checkBeforeAgent } from './shared.js';
@@ -14,11 +29,21 @@ import { isAgent, mergeDefaults, checkBeforeAgent } from './shared.js';
14
29
  * Agents are invoked one-by-one in their declared iteration order. Each agent
15
30
  * after the first receives a prompt that includes both the original task and
16
31
  * the preceding agent's output, enabling progressive refinement chains such as
17
- * researcher -> editor -> reviewer.
32
+ * `researcher -> editor -> reviewer`.
18
33
  *
19
34
  * @param agents - Named roster of agent configs or pre-built `Agent` instances.
35
+ * Iteration order of `Object.entries()` determines execution order.
20
36
  * @param agencyConfig - Agency-level configuration providing fallback model/provider/tools.
21
37
  * @returns A {@link CompiledStrategy} with `execute` and `stream` methods.
38
+ *
39
+ * @example
40
+ * ```ts
41
+ * const strategy = compileSequential(
42
+ * { researcher: { instructions: 'Find info.' }, writer: { instructions: 'Write summary.' } },
43
+ * agencyConfig,
44
+ * );
45
+ * const result = await strategy.execute('Summarise recent AI research.');
46
+ * ```
22
47
  */
23
48
  export function compileSequential(agents, agencyConfig) {
24
49
  return {
@@ -28,16 +53,21 @@ export function compileSequential(agents, agencyConfig) {
28
53
  let lastResult = null;
29
54
  const totalUsage = { promptTokens: 0, completionTokens: 0, totalTokens: 0 };
30
55
  for (const [name, agentOrConfig] of Object.entries(agents)) {
31
- /* HITL: check beforeAgent gate before invoking this agent. */
56
+ // HITL: check beforeAgent gate before invoking this agent.
57
+ // Returns null when no gate applies; returns a decision when the
58
+ // agent is in the approval list.
32
59
  const decision = await checkBeforeAgent(name, context, agentCalls, agencyConfig);
33
60
  if (decision && !decision.approved) {
34
- /* Agent was rejected skip and continue to the next agent. */
61
+ // Agent was rejected by HITL -- skip and continue to the next
62
+ // agent in the chain. The context remains unchanged.
35
63
  continue;
36
64
  }
37
65
  const a = isAgent(agentOrConfig)
38
66
  ? agentOrConfig
39
67
  : createAgent({ ...mergeDefaults(agentOrConfig, agencyConfig) });
40
- /* Apply instruction modifications from the approval decision if any. */
68
+ // Apply instruction modifications from the approval decision if any.
69
+ // This allows the human reviewer to inject additional guidance into
70
+ // the agent's context without modifying the original prompt.
41
71
  const effectiveContext = decision?.modifications?.instructions
42
72
  ? `${context}\n\n[Additional instructions]: ${decision.modifications.instructions}`
43
73
  : context;
@@ -62,20 +92,21 @@ export function compileSequential(agents, agencyConfig) {
62
92
  totalUsage.promptTokens += resultUsage.promptTokens ?? 0;
63
93
  totalUsage.completionTokens += resultUsage.completionTokens ?? 0;
64
94
  totalUsage.totalTokens += resultUsage.totalTokens ?? 0;
65
- /* Chain: subsequent agents see the original task plus previous output. */
95
+ // Chain: subsequent agents see the original task plus previous output.
96
+ // This ensures each agent has full context without losing the original prompt.
66
97
  context = `Original task: ${prompt}\n\nPrevious agent (${name}) output:\n${resultText}`;
67
98
  lastResult = result;
68
99
  }
69
100
  return { ...lastResult, agentCalls, usage: totalUsage };
70
101
  },
71
102
  stream(prompt, opts) {
72
- /*
103
+ /**
73
104
  * Real streaming for the sequential strategy: yields per-agent
74
105
  * `agent-start` and `agent-end` events bracketing each agent's text
75
106
  * tokens, plus agency-level start/end events wrapping the whole run.
76
107
  *
77
108
  * `fullStream` emits the full {@link AgencyStreamPart} union so callers
78
- * can observe every agent transition. `textStream` filters to just the
109
+ * can observe every agent transition. `textStream` filters to just the
79
110
  * `text` parts so the result stays compatible with `StreamTextResult`.
80
111
  *
81
112
  * Usage accounting is collected per-agent and summed into a final total.
@@ -147,7 +178,7 @@ export function compileSequential(agents, agencyConfig) {
147
178
  durationMs: totalDurationMs,
148
179
  };
149
180
  }
150
- /*
181
+ /**
151
182
  * Because an `AsyncGenerator` can only be iterated once, we materialise
152
183
  * a single generator and share it between `fullStream`, `textStream`,
153
184
  * `text`, and `usage` by buffering all events.
@@ -1 +1 @@
1
- {"version":3,"file":"sequential.js","sourceRoot":"","sources":["../../../src/api/strategies/sequential.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,aAAa,CAAC;AAUnD,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEvE;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,iBAAiB,CAC/B,MAA+C,EAC/C,YAA2B;IAE3B,OAAO;QACL,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI;YACxB,MAAM,UAAU,GAAsB,EAAE,CAAC;YACzC,IAAI,OAAO,GAAG,MAAM,CAAC;YACrB,IAAI,UAAU,GAAmC,IAAI,CAAC;YACtD,MAAM,UAAU,GAAG,EAAE,YAAY,EAAE,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC;YAE5E,KAAK,MAAM,CAAC,IAAI,EAAE,aAAa,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC3D,8DAA8D;gBAC9D,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC;gBACjF,IAAI,QAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;oBACnC,+DAA+D;oBAC/D,SAAS;gBACX,CAAC;gBAED,MAAM,CAAC,GAAU,OAAO,CAAC,aAAa,CAAC;oBACrC,CAAC,CAAC,aAAa;oBACf,CAAC,CAAC,WAAW,CAAC,EAAE,GAAG,aAAa,CAAC,aAAa,EAAE,YAAY,CAAC,EAAE,CAAC,CAAC;gBAEnE,wEAAwE;gBACxE,MAAM,gBAAgB,GAAG,QAAQ,EAAE,aAAa,EAAE,YAAY;oBAC5D,CAAC,CAAC,GAAG,OAAO,kCAAkC,QAAQ,CAAC,aAAa,CAAC,YAAY,EAAE;oBACnF,CAAC,CAAC,OAAO,CAAC;gBAEZ,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBACzB,MAAM,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAA4B,CAAC;gBACrF,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;gBAEtC,MAAM,UAAU,GAAI,MAAM,CAAC,IAAe,IAAI,EAAE,CAAC;gBACjD,MAAM,WAAW,GAAI,MAAM,CAAC,KAAoF,IAAI,EAAE,CAAC;gBACvH,MAAM,eAAe,GAAI,MAAM,CAAC,SAAsF,IAAI,EAAE,CAAC;gBAE7H,UAAU,CAAC,IAAI,CAAC;oBACd,KAAK,EAAE,IAAI;oBACX,KAAK,EAAE,OAAO;oBACd,MAAM,EAAE,UAAU;oBAClB,SAAS,EAAE,eAAe;oBAC1B,KAAK,EAAE;wBACL,YAAY,EAAE,WAAW,CAAC,YAAY,IAAI,CAAC;wBAC3C,gBAAgB,EAAE,WAAW,CAAC,gBAAgB,IAAI,CAAC;wBACnD,WAAW,EAAE,WAAW,CAAC,WAAW,IAAI,CAAC;qBAC1C;oBACD,UAAU;iBACX,CAAC,CAAC;gBAEH,UAAU,CAAC,YAAY,IAAI,WAAW,CAAC,YAAY,IAAI,CAAC,CAAC;gBACzD,UAAU,CAAC,gBAAgB,IAAI,WAAW,CAAC,gBAAgB,IAAI,CAAC,CAAC;gBACjE,UAAU,CAAC,WAAW,IAAI,WAAW,CAAC,WAAW,IAAI,CAAC,CAAC;gBAEvD,0EAA0E;gBAC1E,OAAO,GAAG,kBAAkB,MAAM,uBAAuB,IAAI,cAAc,UAAU,EAAE,CAAC;gBACxF,UAAU,GAAG,MAAM,CAAC;YACtB,CAAC;YAED,OAAO,EAAE,GAAG,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;QAC1D,CAAC;QAED,MAAM,CAAC,MAAM,EAAE,IAAI;YACjB;;;;;;;;;;;eAWG;YACH,4DAA4D;YAC5D,MAAM,IAAI,GAAG,IAAI,CAAC;YAClB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAE3B;;;eAGG;YACH,KAAK,SAAS,CAAC,CAAC,eAAe;gBAC7B,IAAI,aAAa,GAAG,MAAM,CAAC;gBAC3B,MAAM,UAAU,GAAG,EAAE,YAAY,EAAE,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC;gBAC5E,IAAI,SAAS,GAAG,EAAE,CAAC;gBAEnB,MAAM,EAAE,IAAI,EAAE,aAAsB,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;gBAE3E,KAAK,MAAM,CAAC,IAAI,EAAE,aAAa,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC3D,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;oBAE9B,MAAM,EAAE,IAAI,EAAE,aAAsB,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC;oBAE1E,sDAAsD;oBACtD,MAAM,CAAC,GAAU,OAAO,CAAC,aAAa,CAAC;wBACrC,CAAC,CAAC,aAAa;wBACf,CAAC,CAAC,WAAW,CAAC,EAAE,GAAG,aAAa,CAAC,aAAgC,EAAE,YAAY,CAAC,EAAE,CAAC,CAAC;oBAEtF,yEAAyE;oBACzE,IAAI,SAAS,GAAG,EAAE,CAAC;oBACnB,IAAI,CAAC;wBACH,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC,aAAa,EAAE,IAAI,CAGxC,CAAC;wBAET,IAAI,WAAW,EAAE,UAAU,EAAE,CAAC;4BAC5B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,WAAW,CAAC,UAAU,EAAE,CAAC;gCACjD,MAAM,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;gCAC1D,SAAS,IAAI,KAAK,CAAC;4BACrB,CAAC;4BACD,mEAAmE;4BACnE,IAAI,CAAC,SAAS,IAAI,WAAW,CAAC,IAAI,EAAE,CAAC;gCACnC,SAAS,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC;gCACnC,IAAI,SAAS,EAAE,CAAC;oCACd,MAAM,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;gCAChE,CAAC;4BACH,CAAC;wBACH,CAAC;6BAAM,CAAC;4BACN,2CAA2C;4BAC3C,MAAM,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAC,CAA4B,CAAC;4BAClF,SAAS,GAAI,MAAM,CAAC,IAAe,IAAI,EAAE,CAAC;4BAC1C,IAAI,SAAS,EAAE,CAAC;gCACd,MAAM,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;4BAChE,CAAC;4BACD,MAAM,WAAW,GAAI,MAAM,CAAC,KAAoF,IAAI,EAAE,CAAC;4BACvH,UAAU,CAAC,YAAY,IAAI,WAAW,CAAC,YAAY,IAAI,CAAC,CAAC;4BACzD,UAAU,CAAC,gBAAgB,IAAI,WAAW,CAAC,gBAAgB,IAAI,CAAC,CAAC;4BACjE,UAAU,CAAC,WAAW,IAAI,WAAW,CAAC,WAAW,IAAI,CAAC,CAAC;wBACzD,CAAC;oBACH,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACb,MAAM,KAAK,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;wBAClE,MAAM,EAAE,IAAI,EAAE,OAAgB,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;oBACvD,CAAC;oBAED,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC;oBAC3C,MAAM,EAAE,IAAI,EAAE,WAAoB,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;oBAEjF,SAAS,GAAG,SAAS,CAAC;oBACtB,aAAa,GAAG,kBAAkB,MAAM,uBAAuB,IAAI,cAAc,SAAS,EAAE,CAAC;gBAC/F,CAAC;gBAED,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC;gBAC7C,MAAM;oBACJ,IAAI,EAAE,WAAoB;oBAC1B,KAAK,EAAE,YAAY;oBACnB,MAAM,EAAE,SAAS;oBACjB,UAAU,EAAE,eAAe;iBAC5B,CAAC;YACJ,CAAC;YAED;;;;eAIG;YACH,MAAM,QAAQ,GAAuB,EAAE,CAAC;YACxC,IAAI,aAAa,GAAG,KAAK,CAAC;YAC1B,IAAI,gBAAgB,GAAyB,IAAI,CAAC;YAElD,wDAAwD;YACxD,SAAS,cAAc;gBACrB,IAAI,CAAC,gBAAgB,EAAE,CAAC;oBACtB,gBAAgB,GAAG,CAAC,KAAK,IAAI,EAAE;wBAC7B,MAAM,GAAG,GAAG,eAAe,EAAE,CAAC;wBAC9B,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,CAAC;4BAC7B,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBACtB,CAAC;wBACD,aAAa,GAAG,IAAI,CAAC;oBACvB,CAAC,CAAC,EAAE,CAAC;gBACP,CAAC;gBACD,OAAO,gBAAgB,CAAC;YAC1B,CAAC;YAED,gEAAgE;YAChE,KAAK,SAAS,CAAC,CAAC,kBAAkB;gBAChC,MAAM,cAAc,EAAE,CAAC;gBACvB,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;oBAC5B,MAAM,IAAI,CAAC;gBACb,CAAC;YACH,CAAC;YAED,2CAA2C;YAC3C,KAAK,SAAS,CAAC,CAAC,kBAAkB;gBAChC,MAAM,cAAc,EAAE,CAAC;gBACvB,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;oBAC5B,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;wBACzB,MAAM,IAAI,CAAC,IAAI,CAAC;oBAClB,CAAC;gBACH,CAAC;YACH,CAAC;YAED,iDAAiD;YACjD,MAAM,WAAW,GAAoB,cAAc,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAC9D,QAAQ;iBACL,MAAM,CAAC,CAAC,CAAC,EAAuD,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC;iBACrF,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;iBAClB,IAAI,CAAC,EAAE,CAAC,CACZ,CAAC;YAEF,yEAAyE;YACzE,MAAM,YAAY,GAChB,OAAO,CAAC,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC;YAE5E,KAAK,IAAI,CAAC,CAAC,+DAA+D;YAE1E,OAAO;gBACL,UAAU,EAAE,kBAAkB,EAAE;gBAChC,UAAU,EAAE,kBAAkB,EAAE;gBAChC,IAAI,EAAE,WAAW;gBACjB,KAAK,EAAE,YAAY;gBACnB,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;aAC/B,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"sequential.js","sourceRoot":"","sources":["../../../src/api/strategies/sequential.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,aAAa,CAAC;AAUnD,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEvE;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,iBAAiB,CAC/B,MAA+C,EAC/C,YAA2B;IAE3B,OAAO;QACL,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI;YACxB,MAAM,UAAU,GAAsB,EAAE,CAAC;YACzC,IAAI,OAAO,GAAG,MAAM,CAAC;YACrB,IAAI,UAAU,GAAmC,IAAI,CAAC;YACtD,MAAM,UAAU,GAAG,EAAE,YAAY,EAAE,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC;YAE5E,KAAK,MAAM,CAAC,IAAI,EAAE,aAAa,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC3D,2DAA2D;gBAC3D,iEAAiE;gBACjE,iCAAiC;gBACjC,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC;gBACjF,IAAI,QAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;oBACnC,8DAA8D;oBAC9D,qDAAqD;oBACrD,SAAS;gBACX,CAAC;gBAED,MAAM,CAAC,GAAU,OAAO,CAAC,aAAa,CAAC;oBACrC,CAAC,CAAC,aAAa;oBACf,CAAC,CAAC,WAAW,CAAC,EAAE,GAAG,aAAa,CAAC,aAAa,EAAE,YAAY,CAAC,EAAE,CAAC,CAAC;gBAEnE,qEAAqE;gBACrE,oEAAoE;gBACpE,6DAA6D;gBAC7D,MAAM,gBAAgB,GAAG,QAAQ,EAAE,aAAa,EAAE,YAAY;oBAC5D,CAAC,CAAC,GAAG,OAAO,kCAAkC,QAAQ,CAAC,aAAa,CAAC,YAAY,EAAE;oBACnF,CAAC,CAAC,OAAO,CAAC;gBAEZ,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBACzB,MAAM,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAA4B,CAAC;gBACrF,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;gBAEtC,MAAM,UAAU,GAAI,MAAM,CAAC,IAAe,IAAI,EAAE,CAAC;gBACjD,MAAM,WAAW,GAAI,MAAM,CAAC,KAAoF,IAAI,EAAE,CAAC;gBACvH,MAAM,eAAe,GAAI,MAAM,CAAC,SAAsF,IAAI,EAAE,CAAC;gBAE7H,UAAU,CAAC,IAAI,CAAC;oBACd,KAAK,EAAE,IAAI;oBACX,KAAK,EAAE,OAAO;oBACd,MAAM,EAAE,UAAU;oBAClB,SAAS,EAAE,eAAe;oBAC1B,KAAK,EAAE;wBACL,YAAY,EAAE,WAAW,CAAC,YAAY,IAAI,CAAC;wBAC3C,gBAAgB,EAAE,WAAW,CAAC,gBAAgB,IAAI,CAAC;wBACnD,WAAW,EAAE,WAAW,CAAC,WAAW,IAAI,CAAC;qBAC1C;oBACD,UAAU;iBACX,CAAC,CAAC;gBAEH,UAAU,CAAC,YAAY,IAAI,WAAW,CAAC,YAAY,IAAI,CAAC,CAAC;gBACzD,UAAU,CAAC,gBAAgB,IAAI,WAAW,CAAC,gBAAgB,IAAI,CAAC,CAAC;gBACjE,UAAU,CAAC,WAAW,IAAI,WAAW,CAAC,WAAW,IAAI,CAAC,CAAC;gBAEvD,uEAAuE;gBACvE,+EAA+E;gBAC/E,OAAO,GAAG,kBAAkB,MAAM,uBAAuB,IAAI,cAAc,UAAU,EAAE,CAAC;gBACxF,UAAU,GAAG,MAAM,CAAC;YACtB,CAAC;YAED,OAAO,EAAE,GAAG,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;QAC1D,CAAC;QAED,MAAM,CAAC,MAAM,EAAE,IAAI;YACjB;;;;;;;;;;;eAWG;YACH,4DAA4D;YAC5D,MAAM,IAAI,GAAG,IAAI,CAAC;YAClB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAE3B;;;eAGG;YACH,KAAK,SAAS,CAAC,CAAC,eAAe;gBAC7B,IAAI,aAAa,GAAG,MAAM,CAAC;gBAC3B,MAAM,UAAU,GAAG,EAAE,YAAY,EAAE,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC;gBAC5E,IAAI,SAAS,GAAG,EAAE,CAAC;gBAEnB,MAAM,EAAE,IAAI,EAAE,aAAsB,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;gBAE3E,KAAK,MAAM,CAAC,IAAI,EAAE,aAAa,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC3D,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;oBAE9B,MAAM,EAAE,IAAI,EAAE,aAAsB,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC;oBAE1E,sDAAsD;oBACtD,MAAM,CAAC,GAAU,OAAO,CAAC,aAAa,CAAC;wBACrC,CAAC,CAAC,aAAa;wBACf,CAAC,CAAC,WAAW,CAAC,EAAE,GAAG,aAAa,CAAC,aAAgC,EAAE,YAAY,CAAC,EAAE,CAAC,CAAC;oBAEtF,yEAAyE;oBACzE,IAAI,SAAS,GAAG,EAAE,CAAC;oBACnB,IAAI,CAAC;wBACH,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC,aAAa,EAAE,IAAI,CAGxC,CAAC;wBAET,IAAI,WAAW,EAAE,UAAU,EAAE,CAAC;4BAC5B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,WAAW,CAAC,UAAU,EAAE,CAAC;gCACjD,MAAM,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;gCAC1D,SAAS,IAAI,KAAK,CAAC;4BACrB,CAAC;4BACD,mEAAmE;4BACnE,IAAI,CAAC,SAAS,IAAI,WAAW,CAAC,IAAI,EAAE,CAAC;gCACnC,SAAS,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC;gCACnC,IAAI,SAAS,EAAE,CAAC;oCACd,MAAM,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;gCAChE,CAAC;4BACH,CAAC;wBACH,CAAC;6BAAM,CAAC;4BACN,2CAA2C;4BAC3C,MAAM,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAC,CAA4B,CAAC;4BAClF,SAAS,GAAI,MAAM,CAAC,IAAe,IAAI,EAAE,CAAC;4BAC1C,IAAI,SAAS,EAAE,CAAC;gCACd,MAAM,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;4BAChE,CAAC;4BACD,MAAM,WAAW,GAAI,MAAM,CAAC,KAAoF,IAAI,EAAE,CAAC;4BACvH,UAAU,CAAC,YAAY,IAAI,WAAW,CAAC,YAAY,IAAI,CAAC,CAAC;4BACzD,UAAU,CAAC,gBAAgB,IAAI,WAAW,CAAC,gBAAgB,IAAI,CAAC,CAAC;4BACjE,UAAU,CAAC,WAAW,IAAI,WAAW,CAAC,WAAW,IAAI,CAAC,CAAC;wBACzD,CAAC;oBACH,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACb,MAAM,KAAK,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;wBAClE,MAAM,EAAE,IAAI,EAAE,OAAgB,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;oBACvD,CAAC;oBAED,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC;oBAC3C,MAAM,EAAE,IAAI,EAAE,WAAoB,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;oBAEjF,SAAS,GAAG,SAAS,CAAC;oBACtB,aAAa,GAAG,kBAAkB,MAAM,uBAAuB,IAAI,cAAc,SAAS,EAAE,CAAC;gBAC/F,CAAC;gBAED,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC;gBAC7C,MAAM;oBACJ,IAAI,EAAE,WAAoB;oBAC1B,KAAK,EAAE,YAAY;oBACnB,MAAM,EAAE,SAAS;oBACjB,UAAU,EAAE,eAAe;iBAC5B,CAAC;YACJ,CAAC;YAED;;;;eAIG;YACH,MAAM,QAAQ,GAAuB,EAAE,CAAC;YACxC,IAAI,aAAa,GAAG,KAAK,CAAC;YAC1B,IAAI,gBAAgB,GAAyB,IAAI,CAAC;YAElD,wDAAwD;YACxD,SAAS,cAAc;gBACrB,IAAI,CAAC,gBAAgB,EAAE,CAAC;oBACtB,gBAAgB,GAAG,CAAC,KAAK,IAAI,EAAE;wBAC7B,MAAM,GAAG,GAAG,eAAe,EAAE,CAAC;wBAC9B,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,CAAC;4BAC7B,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBACtB,CAAC;wBACD,aAAa,GAAG,IAAI,CAAC;oBACvB,CAAC,CAAC,EAAE,CAAC;gBACP,CAAC;gBACD,OAAO,gBAAgB,CAAC;YAC1B,CAAC;YAED,gEAAgE;YAChE,KAAK,SAAS,CAAC,CAAC,kBAAkB;gBAChC,MAAM,cAAc,EAAE,CAAC;gBACvB,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;oBAC5B,MAAM,IAAI,CAAC;gBACb,CAAC;YACH,CAAC;YAED,2CAA2C;YAC3C,KAAK,SAAS,CAAC,CAAC,kBAAkB;gBAChC,MAAM,cAAc,EAAE,CAAC;gBACvB,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;oBAC5B,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;wBACzB,MAAM,IAAI,CAAC,IAAI,CAAC;oBAClB,CAAC;gBACH,CAAC;YACH,CAAC;YAED,iDAAiD;YACjD,MAAM,WAAW,GAAoB,cAAc,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAC9D,QAAQ;iBACL,MAAM,CAAC,CAAC,CAAC,EAAuD,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC;iBACrF,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;iBAClB,IAAI,CAAC,EAAE,CAAC,CACZ,CAAC;YAEF,yEAAyE;YACzE,MAAM,YAAY,GAChB,OAAO,CAAC,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC;YAE5E,KAAK,IAAI,CAAC,CAAC,+DAA+D;YAE1E,OAAO;gBACL,UAAU,EAAE,kBAAkB,EAAE;gBAChC,UAAU,EAAE,kBAAkB,EAAE;gBAChC,IAAI,EAAE,WAAW;gBACjB,KAAK,EAAE,YAAY;gBACnB,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;aAC/B,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -3,27 +3,70 @@ import type { AgencyOptions, Agent, BaseAgentConfig, AgentCallRecord, ApprovalDe
3
3
  * Type guard that checks whether a value is a pre-built {@link Agent} instance
4
4
  * (has a `generate` method) vs a raw {@link BaseAgentConfig} object.
5
5
  *
6
+ * Uses duck-typing on the `generate` method rather than `instanceof` because
7
+ * Agent instances may come from different module copies (e.g. nested agencies
8
+ * created in separate compilation contexts). Duck-typing is more resilient
9
+ * to this scenario.
10
+ *
6
11
  * @param value - Either a config object or a running agent.
7
- * @returns `true` when the value is a pre-built `Agent`.
12
+ * @returns `true` when the value is a pre-built `Agent` with a callable `generate`.
13
+ *
14
+ * @example
15
+ * ```ts
16
+ * const agentOrConfig: BaseAgentConfig | Agent = getFromRoster('worker');
17
+ * if (isAgent(agentOrConfig)) {
18
+ * // agentOrConfig.generate() is callable
19
+ * } else {
20
+ * // agentOrConfig is a raw config, needs agent() factory
21
+ * }
22
+ * ```
8
23
  */
9
24
  export declare function isAgent(value: BaseAgentConfig | Agent): value is Agent;
10
25
  /**
11
26
  * Merge agency-level defaults into an agent config.
12
27
  *
13
- * Agent-level values take precedence; tools are merged (agency tools serve as
14
- * a base layer, agent tools override on name collision).
28
+ * Agent-level values take precedence over agency-level defaults. Tools are
29
+ * merged additively: agency tools serve as a base layer and agent tools
30
+ * override on name collision. This lets an agency provide a shared tool
31
+ * set while individual agents can override or extend it.
15
32
  *
16
- * @param agentConfig - Per-agent configuration.
17
- * @param agencyConfig - Agency-level fallback values.
33
+ * @param agentConfig - Per-agent configuration (takes precedence).
34
+ * @param agencyConfig - Agency-level fallback values (base layer).
18
35
  * @returns A merged config suitable for passing to `agent()`.
36
+ *
37
+ * @example
38
+ * ```ts
39
+ * const merged = mergeDefaults(
40
+ * { instructions: 'Write code.' },
41
+ * { model: 'openai:gpt-4o', tools: { search: searchTool } },
42
+ * );
43
+ * // merged.model === 'openai:gpt-4o' (agency default)
44
+ * // merged.instructions === 'Write code.' (agent override)
45
+ * // merged.tools contains `search` from agency
46
+ * ```
47
+ *
48
+ * @see {@link resolveAgent} -- calls this internally before creating an agent.
19
49
  */
20
50
  export declare function mergeDefaults(agentConfig: BaseAgentConfig, agencyConfig: AgencyOptions): BaseAgentConfig;
21
51
  /**
22
52
  * Resolves an agent-or-config value into a usable {@link Agent} instance.
23
53
  *
54
+ * If the value is already a pre-built Agent, it is returned as-is.
55
+ * If it is a raw BaseAgentConfig, agency defaults are merged and a new
56
+ * Agent is created via the `agent()` factory.
57
+ *
24
58
  * @param agentOrConfig - Either a pre-built Agent or a raw BaseAgentConfig.
25
59
  * @param agencyConfig - Agency-level fallback values for config merging.
26
60
  * @returns A ready-to-call Agent instance.
61
+ *
62
+ * @example
63
+ * ```ts
64
+ * const agent = resolveAgent(roster['worker'], agencyConfig);
65
+ * const result = await agent.generate('Do the task.');
66
+ * ```
67
+ *
68
+ * @see {@link isAgent} -- determines whether the value needs factory creation.
69
+ * @see {@link mergeDefaults} -- applies agency-level fallback values.
27
70
  */
28
71
  export declare function resolveAgent(agentOrConfig: BaseAgentConfig | Agent, agencyConfig: AgencyOptions): Agent;
29
72
  /**
@@ -32,13 +75,34 @@ export declare function resolveAgent(agentOrConfig: BaseAgentConfig | Agent, age
32
75
  * When the agency-level `hitl.approvals.beforeAgent` list includes the agent
33
76
  * name, this function invokes the HITL handler and returns the decision.
34
77
  * If the agent name is not in the approval list, or no handler is configured,
35
- * returns `null` (meaning "no gate proceed normally").
78
+ * returns `null` (meaning "no gate -- proceed normally").
79
+ *
80
+ * ## Why return `null` instead of `{ approved: true }`?
81
+ *
82
+ * Returning `null` lets callers distinguish between "no gate configured"
83
+ * (null -- proceed without any HITL overhead) and "gate evaluated, approved"
84
+ * (`{ approved: true }` -- proceed but may carry instruction modifications
85
+ * from the approver).
36
86
  *
37
87
  * @param name - The agent's declared name in the roster.
38
88
  * @param context - The input/context string the agent would receive.
39
89
  * @param agentCalls - Agent call records accumulated so far in this run.
40
- * @param agencyConfig - The full agency configuration.
90
+ * Included in the approval request for context.
91
+ * @param agencyConfig - The full agency configuration containing HITL settings.
41
92
  * @returns The approval decision, or `null` when no gate applies.
93
+ *
94
+ * @example
95
+ * ```ts
96
+ * const decision = await checkBeforeAgent('researcher', prompt, calls, config);
97
+ * if (decision && !decision.approved) {
98
+ * // Agent was rejected by HITL -- skip or abort.
99
+ * return;
100
+ * }
101
+ * // Proceed with agent invocation.
102
+ * ```
103
+ *
104
+ * @see {@link HitlConfig} -- defines the approval triggers and handler.
105
+ * @see {@link ApprovalRequest} -- the shape passed to the handler.
42
106
  */
43
107
  export declare function checkBeforeAgent(name: string, context: string, agentCalls: AgentCallRecord[], agencyConfig: AgencyOptions): Promise<ApprovalDecision | null>;
44
108
  //# sourceMappingURL=shared.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/api/strategies/shared.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACV,aAAa,EACb,KAAK,EACL,eAAe,EACf,eAAe,EAEf,gBAAgB,EACjB,MAAM,aAAa,CAAC;AACrB;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,eAAe,GAAG,KAAK,GAAG,KAAK,IAAI,KAAK,CAEtE;AAED;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAC3B,WAAW,EAAE,eAAe,EAC5B,YAAY,EAAE,aAAa,GAC1B,eAAe,CAUjB;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,aAAa,EAAE,eAAe,GAAG,KAAK,EACtC,YAAY,EAAE,aAAa,GAC1B,KAAK,CAIP;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,eAAe,EAAE,EAC7B,YAAY,EAAE,aAAa,GAC1B,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CA4BlC"}
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/api/strategies/shared.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EACV,aAAa,EACb,KAAK,EACL,eAAe,EACf,eAAe,EAEf,gBAAgB,EACjB,MAAM,aAAa,CAAC;AAErB;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,eAAe,GAAG,KAAK,GAAG,KAAK,IAAI,KAAK,CAEtE;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,aAAa,CAC3B,WAAW,EAAE,eAAe,EAC5B,YAAY,EAAE,aAAa,GAC1B,eAAe,CAcjB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,YAAY,CAC1B,aAAa,EAAE,eAAe,GAAG,KAAK,EACtC,YAAY,EAAE,aAAa,GAC1B,KAAK,CAIP;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,eAAe,EAAE,EAC7B,YAAY,EAAE,aAAa,GAC1B,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAkClC"}