@tangle-network/agent-runtime 0.105.0 → 0.106.1

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 (218) hide show
  1. package/README.md +2 -2
  2. package/dist/activation-CRjVfOiy.js +203 -0
  3. package/dist/activation-CRjVfOiy.js.map +1 -0
  4. package/dist/activation-DyWB0K6E.d.ts +98 -0
  5. package/dist/agent.d.ts +216 -234
  6. package/dist/agent.js +615 -547
  7. package/dist/agent.js.map +1 -1
  8. package/dist/analyst-loop-DGdtVENg.js +517 -0
  9. package/dist/analyst-loop-DGdtVENg.js.map +1 -0
  10. package/dist/analyst-loop.d.ts +10 -43
  11. package/dist/analyst-loop.js +2 -11
  12. package/dist/backends-CiOCyRHb.js +743 -0
  13. package/dist/backends-CiOCyRHb.js.map +1 -0
  14. package/dist/candidate-execution/index.d.ts +4 -192
  15. package/dist/candidate-execution/index.js +5 -66
  16. package/dist/candidate-execution-DqMbv1rU.js +488 -0
  17. package/dist/candidate-execution-DqMbv1rU.js.map +1 -0
  18. package/dist/coder-yhVWbdWc.js +40 -0
  19. package/dist/coder-yhVWbdWc.js.map +1 -0
  20. package/dist/conversation-BpLQZGPH.js +1265 -0
  21. package/dist/conversation-BpLQZGPH.js.map +1 -0
  22. package/dist/conversation.d.ts +2 -804
  23. package/dist/conversation.js +2 -55
  24. package/dist/environment-provider-CfLUmKmf.js +1168 -0
  25. package/dist/environment-provider-CfLUmKmf.js.map +1 -0
  26. package/dist/environment-provider-IUGU3epE.d.ts +964 -0
  27. package/dist/environment-provider.d.ts +2 -78
  28. package/dist/environment-provider.js +2 -18
  29. package/dist/errors-DEAvWQPy.js +111 -0
  30. package/dist/errors-DEAvWQPy.js.map +1 -0
  31. package/dist/improvement-adapter-Cr5TBSji.d.ts +166 -0
  32. package/dist/improvement-cycle-C095kS_g.js +2624 -0
  33. package/dist/improvement-cycle-C095kS_g.js.map +1 -0
  34. package/dist/index-BGdxAwfO.d.ts +838 -0
  35. package/dist/index-C-FYUuFG.d.ts +193 -0
  36. package/dist/index-CbNM40xG.d.ts +140 -0
  37. package/dist/index-DruSKs3Z.d.ts +7224 -0
  38. package/dist/index-Efjb3nrQ.d.ts +671 -0
  39. package/dist/index.d.ts +14 -1058
  40. package/dist/index.js +2106 -2082
  41. package/dist/index.js.map +1 -1
  42. package/dist/intelligence.d.ts +768 -889
  43. package/dist/intelligence.js +1466 -1367
  44. package/dist/intelligence.js.map +1 -1
  45. package/dist/{kb-gate-CwHO0vz6.d.ts → kb-gate-C8z2juK8.d.ts} +33 -31
  46. package/dist/kb-gate-DpaSwXVx.js +80 -0
  47. package/dist/kb-gate-DpaSwXVx.js.map +1 -0
  48. package/dist/knowledge-Ku-mPP4f.js +433 -0
  49. package/dist/knowledge-Ku-mPP4f.js.map +1 -0
  50. package/dist/knowledge.d.ts +2 -150
  51. package/dist/knowledge.js +2 -40
  52. package/dist/local-harness-Dh8PJ0ot.d.ts +455 -0
  53. package/dist/loop-runner-bin-BXsFEUcf.d.ts +162 -0
  54. package/dist/loop-runner-bin-CRagyuNb.js +268 -0
  55. package/dist/loop-runner-bin-CRagyuNb.js.map +1 -0
  56. package/dist/loop-runner-bin.d.ts +2 -15
  57. package/dist/loop-runner-bin.js +2 -24
  58. package/dist/loops.d.ts +5 -4164
  59. package/dist/loops.js +8 -419
  60. package/dist/mcp/bin.d.ts +1 -1
  61. package/dist/mcp/bin.js +116 -146
  62. package/dist/mcp/bin.js.map +1 -1
  63. package/dist/mcp/index.d.ts +295 -436
  64. package/dist/mcp/index.js +1242 -1177
  65. package/dist/mcp/index.js.map +1 -1
  66. package/dist/mcp/memory-bin.d.ts +1 -1
  67. package/dist/mcp/memory-bin.js +37 -16
  68. package/dist/mcp/memory-bin.js.map +1 -1
  69. package/dist/memory-server-DL6cE2Ag.js +234 -0
  70. package/dist/memory-server-DL6cE2Ag.js.map +1 -0
  71. package/dist/model-resolution-Btd9iIKV.js +98 -0
  72. package/dist/model-resolution-Btd9iIKV.js.map +1 -0
  73. package/dist/openai-tools-B68JaOCx.d.ts +24 -0
  74. package/dist/openai-tools-CKLy1C7M.js +44 -0
  75. package/dist/openai-tools-CKLy1C7M.js.map +1 -0
  76. package/dist/otel-export-D34IQW1C.js +843 -0
  77. package/dist/otel-export-D34IQW1C.js.map +1 -0
  78. package/dist/platform.d.ts +188 -185
  79. package/dist/platform.js +185 -218
  80. package/dist/platform.js.map +1 -1
  81. package/dist/prepare-B53sPV7M.js +4292 -0
  82. package/dist/prepare-B53sPV7M.js.map +1 -0
  83. package/dist/primeintellect/index.d.ts +149 -145
  84. package/dist/primeintellect/index.js +626 -1003
  85. package/dist/primeintellect/index.js.map +1 -1
  86. package/dist/profiles.d.ts +296 -490
  87. package/dist/profiles.js +722 -749
  88. package/dist/profiles.js.map +1 -1
  89. package/dist/protected-model-port-BLPH5VVv.js +722 -0
  90. package/dist/protected-model-port-BLPH5VVv.js.map +1 -0
  91. package/dist/protected-model-port-BP6Z4eau.d.ts +283 -0
  92. package/dist/protected-redaction--F3v1oo8.js +200 -0
  93. package/dist/protected-redaction--F3v1oo8.js.map +1 -0
  94. package/dist/redact-D-u-rrcn.js +82 -0
  95. package/dist/redact-D-u-rrcn.js.map +1 -0
  96. package/dist/redact-kbIOjfjM.d.ts +452 -0
  97. package/dist/researcher-CoVqNhfI.js +433 -0
  98. package/dist/researcher-CoVqNhfI.js.map +1 -0
  99. package/dist/runtime-5zM5XxLr.js +5408 -0
  100. package/dist/runtime-5zM5XxLr.js.map +1 -0
  101. package/dist/sandbox-events-DeI5xX8P.js +316 -0
  102. package/dist/sandbox-events-DeI5xX8P.js.map +1 -0
  103. package/dist/spawn-journal-CwPvKUTa.js +456 -0
  104. package/dist/spawn-journal-CwPvKUTa.js.map +1 -0
  105. package/dist/structural-rollout-IXUEplky.js +1445 -0
  106. package/dist/structural-rollout-IXUEplky.js.map +1 -0
  107. package/dist/substrate-B0TYNrXn.js +27 -0
  108. package/dist/substrate-B0TYNrXn.js.map +1 -0
  109. package/dist/{substrate-Dyiqmd3o.d.ts → substrate-BcnuSHXm.d.ts} +57 -54
  110. package/dist/supervise-BiRutHS9.js +7321 -0
  111. package/dist/supervise-BiRutHS9.js.map +1 -0
  112. package/dist/supervisor-DTKhF-RV.js +3826 -0
  113. package/dist/supervisor-DTKhF-RV.js.map +1 -0
  114. package/dist/testing.d.ts +4 -3
  115. package/dist/testing.js +2478 -2637
  116. package/dist/testing.js.map +1 -1
  117. package/dist/tool-server-RcWgLIsL.js +141 -0
  118. package/dist/tool-server-RcWgLIsL.js.map +1 -0
  119. package/dist/trace-propagation-CJJC7SVB.js +57 -0
  120. package/dist/trace-propagation-CJJC7SVB.js.map +1 -0
  121. package/dist/types-BaIpb0XT.d.ts +492 -0
  122. package/dist/types-BevOjfTY.d.ts +765 -0
  123. package/dist/types-C9j4qg6l.d.ts +500 -0
  124. package/dist/types-Cja5OTGh.d.ts +190 -0
  125. package/dist/util-MVgdwuIS.js +145 -0
  126. package/dist/util-MVgdwuIS.js.map +1 -0
  127. package/dist/workspace-archive-BosQiotA.js +575 -0
  128. package/dist/workspace-archive-BosQiotA.js.map +1 -0
  129. package/package.json +44 -56
  130. package/skills/build-with-agent-runtime/SKILL.md +1 -0
  131. package/dist/activation-Cm-9MMX1.d.ts +0 -69
  132. package/dist/analyst-loop.js.map +0 -1
  133. package/dist/backends-BO4Jqoe2.d.ts +0 -134
  134. package/dist/candidate-execution/index.js.map +0 -1
  135. package/dist/chunk-2KGAN2HM.js +0 -1256
  136. package/dist/chunk-2KGAN2HM.js.map +0 -1
  137. package/dist/chunk-2VZYRB55.js +0 -834
  138. package/dist/chunk-2VZYRB55.js.map +0 -1
  139. package/dist/chunk-3MDZX7YU.js +0 -125
  140. package/dist/chunk-3MDZX7YU.js.map +0 -1
  141. package/dist/chunk-5IBQAPVB.js +0 -29
  142. package/dist/chunk-5IBQAPVB.js.map +0 -1
  143. package/dist/chunk-5QOB7H74.js +0 -387
  144. package/dist/chunk-5QOB7H74.js.map +0 -1
  145. package/dist/chunk-C5RTIBNZ.js +0 -48
  146. package/dist/chunk-C5RTIBNZ.js.map +0 -1
  147. package/dist/chunk-CTRA64LY.js +0 -680
  148. package/dist/chunk-CTRA64LY.js.map +0 -1
  149. package/dist/chunk-DPEUKJRO.js +0 -27
  150. package/dist/chunk-DPEUKJRO.js.map +0 -1
  151. package/dist/chunk-FD2MBMOH.js +0 -494
  152. package/dist/chunk-FD2MBMOH.js.map +0 -1
  153. package/dist/chunk-H5QPIZNX.js +0 -907
  154. package/dist/chunk-H5QPIZNX.js.map +0 -1
  155. package/dist/chunk-HLKC4UYB.js +0 -3514
  156. package/dist/chunk-HLKC4UYB.js.map +0 -1
  157. package/dist/chunk-HNP72PNU.js +0 -192
  158. package/dist/chunk-HNP72PNU.js.map +0 -1
  159. package/dist/chunk-ISPWRSEC.js +0 -408
  160. package/dist/chunk-ISPWRSEC.js.map +0 -1
  161. package/dist/chunk-KRBFHMV6.js +0 -1228
  162. package/dist/chunk-KRBFHMV6.js.map +0 -1
  163. package/dist/chunk-M22PL4GH.js +0 -171
  164. package/dist/chunk-M22PL4GH.js.map +0 -1
  165. package/dist/chunk-NURIQBJQ.js +0 -72
  166. package/dist/chunk-NURIQBJQ.js.map +0 -1
  167. package/dist/chunk-OPVWXJ2H.js +0 -75
  168. package/dist/chunk-OPVWXJ2H.js.map +0 -1
  169. package/dist/chunk-PZZKQVQV.js +0 -52
  170. package/dist/chunk-PZZKQVQV.js.map +0 -1
  171. package/dist/chunk-Q2JSAVQ3.js +0 -671
  172. package/dist/chunk-Q2JSAVQ3.js.map +0 -1
  173. package/dist/chunk-RDOAVVHY.js +0 -699
  174. package/dist/chunk-RDOAVVHY.js.map +0 -1
  175. package/dist/chunk-SGKPNBXE.js +0 -60
  176. package/dist/chunk-SGKPNBXE.js.map +0 -1
  177. package/dist/chunk-SMQXZGLZ.js +0 -351
  178. package/dist/chunk-SMQXZGLZ.js.map +0 -1
  179. package/dist/chunk-UHEZW5BU.js +0 -2918
  180. package/dist/chunk-UHEZW5BU.js.map +0 -1
  181. package/dist/chunk-UPWGXKXB.js +0 -254
  182. package/dist/chunk-UPWGXKXB.js.map +0 -1
  183. package/dist/chunk-VISA6CI3.js +0 -200
  184. package/dist/chunk-VISA6CI3.js.map +0 -1
  185. package/dist/chunk-WMTCUOQL.js +0 -474
  186. package/dist/chunk-WMTCUOQL.js.map +0 -1
  187. package/dist/chunk-WRTOVNN4.js +0 -4728
  188. package/dist/chunk-WRTOVNN4.js.map +0 -1
  189. package/dist/chunk-WSTRQZYQ.js +0 -5576
  190. package/dist/chunk-WSTRQZYQ.js.map +0 -1
  191. package/dist/chunk-XBG2W2VW.js +0 -6434
  192. package/dist/chunk-XBG2W2VW.js.map +0 -1
  193. package/dist/chunk-YEJR7IXO.js +0 -68
  194. package/dist/chunk-YEJR7IXO.js.map +0 -1
  195. package/dist/chunk-YJZA2BIK.js +0 -1338
  196. package/dist/chunk-YJZA2BIK.js.map +0 -1
  197. package/dist/completion-gate-BMy5LGoP.d.ts +0 -256
  198. package/dist/conversation.js.map +0 -1
  199. package/dist/coordination-BZZSVYpZ.d.ts +0 -2570
  200. package/dist/environment-provider.js.map +0 -1
  201. package/dist/improvement-adapter-HAZz-7vK.d.ts +0 -203
  202. package/dist/knowledge.js.map +0 -1
  203. package/dist/local-harness-BDNcl6jI.d.ts +0 -175
  204. package/dist/loop-runner-bin-68aoM9-7.d.ts +0 -199
  205. package/dist/loop-runner-bin.js.map +0 -1
  206. package/dist/loops.js.map +0 -1
  207. package/dist/openai-tools-fnj6SRVg.d.ts +0 -46
  208. package/dist/protected-model-port-B4t-OQjL.d.ts +0 -271
  209. package/dist/redact-BuFjxBUJ.d.ts +0 -481
  210. package/dist/sanitize-DEbPNtyI.d.ts +0 -328
  211. package/dist/structural-rollout-DEh6CEsa.d.ts +0 -446
  212. package/dist/supervise-4_48wwvy.d.ts +0 -379
  213. package/dist/types-BCoemcXU.d.ts +0 -802
  214. package/dist/types-BwoZWq-i.d.ts +0 -510
  215. package/dist/types-Cbp72qyu.d.ts +0 -491
  216. package/dist/types-CmYCMbFT.d.ts +0 -203
  217. package/dist/types-CvNwMzQt.d.ts +0 -957
  218. package/dist/worktree-fanout-DxhAWr5Z.d.ts +0 -999
@@ -1,510 +0,0 @@
1
- import { ControlEvalResult, KnowledgeRequirement, ControlBudget, KnowledgeReadinessReport, ControlStep, ControlDecision, UserQuestion, DataAcquisitionPlan, ControlRunResult, RunRecord, TraceStore } from '@tangle-network/agent-eval';
2
-
3
- /**
4
- *
5
- * Core task, session, adapter, and stream-event types for the runtime.
6
- *
7
- * This module owns the public shape of every cross-cutting record (`TaskSpec`,
8
- * `RuntimeSession`, `RuntimeStreamEvent`). Everything else in the runtime
9
- * imports from here so type-level changes ripple in one place.
10
- *
11
- * @stable
12
- */
13
-
14
- /** @stable */
15
- interface AgentTaskSpec {
16
- id: string;
17
- intent: string;
18
- /** Domain is metadata, not an architectural boundary: tax, legal, gtm, creative, blueprint, redteam, etc. */
19
- domain?: string;
20
- inputs?: Record<string, unknown>;
21
- requiredKnowledge?: KnowledgeRequirement[];
22
- budget?: Partial<ControlBudget>;
23
- metadata?: Record<string, unknown>;
24
- }
25
- /** @stable */
26
- interface AgentKnowledgeProvider {
27
- buildReadiness?(task: AgentTaskSpec): Promise<KnowledgeReadinessReport> | KnowledgeReadinessReport;
28
- answerQuestions?(questions: UserQuestion[], task: AgentTaskSpec): Promise<Record<string, string>> | Record<string, string>;
29
- executeAcquisitionPlans?(plans: DataAcquisitionPlan[], task: AgentTaskSpec): Promise<string[]> | string[];
30
- refreshReadiness?(input: {
31
- task: AgentTaskSpec;
32
- previous: KnowledgeReadinessReport;
33
- userAnswers: Record<string, string>;
34
- acquiredEvidenceIds: string[];
35
- }): Promise<KnowledgeReadinessReport> | KnowledgeReadinessReport;
36
- }
37
- /** @stable */
38
- interface AgentTaskContext<TState, TAction, TActionResult, TEval extends ControlEvalResult = ControlEvalResult> {
39
- task: AgentTaskSpec;
40
- knowledge: KnowledgeReadinessReport;
41
- state: TState;
42
- evals: TEval[];
43
- history: ControlStep<TState, TAction, TActionResult, TEval>[];
44
- budget: ControlBudget;
45
- stepIndex: number;
46
- wallMs: number;
47
- spentCostUsd: number;
48
- remainingCostUsd?: number;
49
- abortSignal: AbortSignal;
50
- }
51
- /** @stable */
52
- interface AgentAdapter<TState, TAction, TActionResult, TEval extends ControlEvalResult = ControlEvalResult> {
53
- observe(ctx: {
54
- task: AgentTaskSpec;
55
- knowledge: KnowledgeReadinessReport;
56
- history: ControlStep<TState, TAction, TActionResult, TEval>[];
57
- abortSignal: AbortSignal;
58
- }): Promise<TState> | TState;
59
- validate(ctx: {
60
- task: AgentTaskSpec;
61
- knowledge: KnowledgeReadinessReport;
62
- state: TState;
63
- history: ControlStep<TState, TAction, TActionResult, TEval>[];
64
- abortSignal: AbortSignal;
65
- }): Promise<TEval[]> | TEval[];
66
- decide(ctx: AgentTaskContext<TState, TAction, TActionResult, TEval>): Promise<ControlDecision<TAction>> | ControlDecision<TAction>;
67
- act(action: TAction, ctx: AgentTaskContext<TState, TAction, TActionResult, TEval>): Promise<TActionResult> | TActionResult;
68
- shouldStop?(ctx: AgentTaskContext<TState, TAction, TActionResult, TEval>): Promise<{
69
- stop: boolean;
70
- pass: boolean;
71
- reason: string;
72
- score?: number;
73
- }> | {
74
- stop: boolean;
75
- pass: boolean;
76
- reason: string;
77
- score?: number;
78
- };
79
- onKnowledgeBlocked?(ctx: {
80
- task: AgentTaskSpec;
81
- knowledge: KnowledgeReadinessReport;
82
- questions: UserQuestion[];
83
- acquisitionPlans: DataAcquisitionPlan[];
84
- }): Promise<ControlDecision<TAction>> | ControlDecision<TAction>;
85
- getActionCostUsd?(ctx: {
86
- action: TAction;
87
- result: TActionResult;
88
- task: AgentTaskSpec;
89
- state: TState;
90
- evals: TEval[];
91
- history: ControlStep<TState, TAction, TActionResult, TEval>[];
92
- }): number | undefined;
93
- projectRunRecords?(result: ControlRunResult<TState, TAction, TActionResult, TEval>, task: AgentTaskSpec): RunRecord[];
94
- }
95
- /** @stable */
96
- type AgentTaskStatus = 'completed' | 'blocked' | 'failed' | 'aborted';
97
- /** @stable */
98
- type AgentRuntimeEvent<TState = unknown, TAction = unknown, TActionResult = unknown, TEval extends ControlEvalResult = ControlEvalResult> = {
99
- type: 'task_start';
100
- task: AgentTaskSpec;
101
- } | {
102
- type: 'readiness_start';
103
- task: AgentTaskSpec;
104
- } | {
105
- type: 'readiness_end';
106
- task: AgentTaskSpec;
107
- knowledge: KnowledgeReadinessReport;
108
- } | {
109
- type: 'questions_start';
110
- task: AgentTaskSpec;
111
- questions: UserQuestion[];
112
- } | {
113
- type: 'questions_end';
114
- task: AgentTaskSpec;
115
- questions: UserQuestion[];
116
- userAnswers: Record<string, string>;
117
- } | {
118
- type: 'acquisition_start';
119
- task: AgentTaskSpec;
120
- acquisitionPlans: DataAcquisitionPlan[];
121
- } | {
122
- type: 'acquisition_end';
123
- task: AgentTaskSpec;
124
- acquisitionPlans: DataAcquisitionPlan[];
125
- acquiredEvidenceIds: string[];
126
- } | {
127
- type: 'control_start';
128
- task: AgentTaskSpec;
129
- knowledge: KnowledgeReadinessReport;
130
- } | {
131
- type: 'control_step';
132
- task: AgentTaskSpec;
133
- step: ControlStep<TState, TAction, TActionResult, TEval>;
134
- } | {
135
- type: 'control_end';
136
- task: AgentTaskSpec;
137
- control: ControlRunResult<TState, TAction, TActionResult, TEval>;
138
- } | {
139
- type: 'task_end';
140
- task: AgentTaskSpec;
141
- status: AgentTaskStatus;
142
- reason: string;
143
- };
144
- /** @stable */
145
- type AgentRuntimeEventSink<TState = unknown, TAction = unknown, TActionResult = unknown, TEval extends ControlEvalResult = ControlEvalResult> = (event: AgentRuntimeEvent<TState, TAction, TActionResult, TEval>) => Promise<void> | void;
146
- /**
147
- *
148
- * Typed transport / backend failure detail. Carried on `backend_error` and
149
- * `final` events when the backend's stream throws or the upstream HTTP call
150
- * returns a non-success status. Lets consumers (a) distinguish "stream
151
- * completed with no text" from "stream never reached the model" and
152
- * (b) reconstruct the precise upstream signal (status + truncated body) when
153
- * building a `RunRecord.error`.
154
- *
155
- * `body` is truncated to 2 KiB by the backend so an HTML error page from a
156
- * misconfigured proxy never bloats event payloads or logs. Consumers needing
157
- * the full body should inspect the underlying `BackendTransportError.body`
158
- * via a custom `mapEvent` or backend wrapper.
159
- *
160
- * @stable
161
- */
162
- interface BackendErrorDetail {
163
- /**
164
- * `'transport'` — upstream HTTP / network failure with optional status code.
165
- * `'backend'` — the backend's `stream()` generator threw for a non-transport
166
- * reason (e.g. a custom adapter error, sandbox crash).
167
- */
168
- kind: 'transport' | 'backend';
169
- message: string;
170
- /** Upstream HTTP status when known. `0` for connection / abort errors. */
171
- status?: number;
172
- /** Truncated response body (≤2 KiB). Diagnostic only — never machine-parsed. */
173
- body?: string;
174
- }
175
- /**
176
- *
177
- * OpenAI Chat Completions tool descriptor. The shape mirrors the
178
- * `/v1/chat/completions` `tools[]` parameter so callers can pass tool
179
- * definitions through `createOpenAICompatibleBackend({ tools })` without any
180
- * runtime translation. The router proxies this shape verbatim to Anthropic
181
- * (translated server-side), DeepSeek, Groq, OpenAI, and Gemini — every model
182
- * that the eval surface targets.
183
- *
184
- * Callers that build their tool list from MCP servers should run a one-shot
185
- * MCP `tools/list` at config time and project the result into this shape. The
186
- * runtime intentionally does NOT depend on `@modelcontextprotocol/sdk` —
187
- * keeping the backend transport thin lets domain repos own MCP plumbing.
188
- *
189
- * @stable
190
- */
191
- interface OpenAIChatTool {
192
- type: 'function';
193
- function: {
194
- name: string;
195
- description?: string;
196
- parameters?: Record<string, unknown>;
197
- };
198
- }
199
- /**
200
- *
201
- * `tool_choice` parameter for OpenAI-compat chat. Same shape as the OpenAI
202
- * spec: `'auto'` (default — model decides), `'none'` (disable tool calling
203
- * for this turn), `'required'` (force a tool call), or a specific function
204
- * pin `{ type: 'function', function: { name } }`.
205
- *
206
- * @stable
207
- */
208
- type OpenAIChatToolChoice = 'auto' | 'none' | 'required' | {
209
- type: 'function';
210
- function: {
211
- name: string;
212
- };
213
- };
214
- /**
215
- *
216
- * `response_format` parameter for OpenAI-compatible chat endpoints. Use
217
- * `json_object` when the caller needs syntactically valid JSON, or
218
- * `json_schema` when the upstream provider supports schema-constrained JSON.
219
- *
220
- * @stable
221
- */
222
- type OpenAIChatResponseFormat = {
223
- type: 'text';
224
- } | {
225
- type: 'json_object';
226
- } | {
227
- type: 'json_schema';
228
- json_schema: Record<string, unknown>;
229
- };
230
- /** @stable */
231
- type RuntimeStreamEvent = {
232
- type: 'task_start';
233
- task: AgentTaskSpec;
234
- timestamp: string;
235
- } | {
236
- type: 'readiness_start';
237
- task: AgentTaskSpec;
238
- timestamp: string;
239
- } | {
240
- type: 'readiness_end';
241
- task: AgentTaskSpec;
242
- knowledge: KnowledgeReadinessReport;
243
- decision: KnowledgeReadinessDecision;
244
- timestamp: string;
245
- } | {
246
- type: 'questions_start';
247
- task: AgentTaskSpec;
248
- questions: UserQuestion[];
249
- timestamp: string;
250
- } | {
251
- type: 'questions_end';
252
- task: AgentTaskSpec;
253
- questions: UserQuestion[];
254
- userAnswers: Record<string, string>;
255
- timestamp: string;
256
- } | {
257
- type: 'acquisition_start';
258
- task: AgentTaskSpec;
259
- acquisitionPlans: DataAcquisitionPlan[];
260
- timestamp: string;
261
- } | {
262
- type: 'acquisition_end';
263
- task: AgentTaskSpec;
264
- acquisitionPlans: DataAcquisitionPlan[];
265
- acquiredEvidenceIds: string[];
266
- timestamp: string;
267
- } | {
268
- type: 'session_created';
269
- task: AgentTaskSpec;
270
- session: RuntimeSession;
271
- timestamp: string;
272
- } | {
273
- type: 'session_resumed';
274
- task: AgentTaskSpec;
275
- session: RuntimeSession;
276
- timestamp: string;
277
- } | {
278
- type: 'backend_start';
279
- task: AgentTaskSpec;
280
- session: RuntimeSession;
281
- backend: string;
282
- timestamp: string;
283
- } | {
284
- type: 'text_delta';
285
- task?: AgentTaskSpec;
286
- session?: RuntimeSession;
287
- text: string;
288
- timestamp?: string;
289
- } | {
290
- type: 'reasoning_delta';
291
- task?: AgentTaskSpec;
292
- session?: RuntimeSession;
293
- text: string;
294
- timestamp?: string;
295
- } | {
296
- type: 'tool_call';
297
- task?: AgentTaskSpec;
298
- session?: RuntimeSession;
299
- toolName: string;
300
- toolCallId?: string;
301
- args?: unknown;
302
- timestamp?: string;
303
- } | {
304
- type: 'tool_result';
305
- task?: AgentTaskSpec;
306
- session?: RuntimeSession;
307
- toolName: string;
308
- toolCallId?: string;
309
- result?: unknown;
310
- timestamp?: string;
311
- } | {
312
- type: 'llm_call';
313
- task?: AgentTaskSpec;
314
- session?: RuntimeSession;
315
- model: string;
316
- tokensIn?: number;
317
- tokensOut?: number;
318
- costUsd?: number;
319
- latencyMs?: number;
320
- finishReason?: string;
321
- timestamp?: string;
322
- } | {
323
- type: 'artifact';
324
- task?: AgentTaskSpec;
325
- session?: RuntimeSession;
326
- artifactId: string;
327
- name?: string;
328
- mimeType?: string;
329
- uri?: string;
330
- content?: string;
331
- metadata?: Record<string, unknown>;
332
- timestamp?: string;
333
- } | {
334
- type: 'proposal_created';
335
- task?: AgentTaskSpec;
336
- session?: RuntimeSession;
337
- proposalId: string;
338
- title: string;
339
- status?: 'pending' | 'approved' | 'rejected';
340
- content?: string;
341
- timestamp?: string;
342
- } | {
343
- type: 'backend_error';
344
- task: AgentTaskSpec;
345
- session?: RuntimeSession;
346
- backend: string;
347
- message: string;
348
- recoverable: boolean;
349
- /**
350
- * Typed transport diagnostic. Present when the upstream returned a
351
- * non-success HTTP status or every retry attempt threw. Consumers MUST
352
- * surface this onto their `RunRecord.error` — silently treating a
353
- * `backend_error` as "no output" hides credit exhaustion, auth failure,
354
- * and upstream outages from operators.
355
- * - `kind: 'transport'` — HTTP / network failure with optional `status`
356
- * + truncated response `body`.
357
- * - `kind: 'backend'` — the backend's `stream()` generator threw for a
358
- * reason that isn't a recognized transport failure.
359
- */
360
- error?: BackendErrorDetail;
361
- timestamp: string;
362
- } | {
363
- type: 'backend_end';
364
- task: AgentTaskSpec;
365
- session: RuntimeSession;
366
- backend: string;
367
- timestamp: string;
368
- } | {
369
- type: 'task_end';
370
- task: AgentTaskSpec;
371
- status: AgentTaskStatus;
372
- reason: string;
373
- timestamp: string;
374
- } | {
375
- type: 'final';
376
- task: AgentTaskSpec;
377
- session?: RuntimeSession;
378
- status: AgentTaskStatus;
379
- reason: string;
380
- text?: string;
381
- metadata?: Record<string, unknown>;
382
- /**
383
- * Typed terminal-error diagnostic. Mirrors the `backend_error.error`
384
- * shape so a consumer that only listens for `final` still receives a
385
- * loud, structured failure when the backend never produced output. Only
386
- * set when `status !== 'completed'`. Consumers building a `RunRecord`
387
- * MUST map this to `RunRecord.error` rather than recording silent
388
- * `error: null` with empty `finalText`.
389
- */
390
- error?: BackendErrorDetail;
391
- timestamp: string;
392
- };
393
- /** @stable */
394
- interface RuntimeSession {
395
- id: string;
396
- backend: string;
397
- status: 'active' | 'completed' | 'failed' | 'aborted';
398
- resumeToken?: string;
399
- createdAt: string;
400
- updatedAt: string;
401
- metadata?: Record<string, unknown>;
402
- }
403
- /** @stable */
404
- interface RuntimeSessionStore {
405
- get(sessionId: string): Promise<RuntimeSession | undefined> | RuntimeSession | undefined;
406
- put(session: RuntimeSession): Promise<void> | void;
407
- appendEvent?(sessionId: string, event: RuntimeStreamEvent): Promise<void> | void;
408
- listEvents?(sessionId: string): Promise<RuntimeStreamEvent[]> | RuntimeStreamEvent[];
409
- }
410
- /** @stable */
411
- interface AgentBackendInput {
412
- task: AgentTaskSpec;
413
- message?: string;
414
- messages?: Array<{
415
- role: string;
416
- content: string;
417
- }>;
418
- inputs?: Record<string, unknown>;
419
- }
420
- /** @stable */
421
- interface AgentBackendContext {
422
- task: AgentTaskSpec;
423
- knowledge: KnowledgeReadinessReport;
424
- session: RuntimeSession;
425
- signal?: AbortSignal;
426
- /**
427
- * Conversation/run identifier when this call is part of a multi-agent run.
428
- * Backends should stamp it into any trace/log emission so cross-participant
429
- * events correlate. Absent when the call is a stand-alone `runAgentTask`.
430
- */
431
- runId?: string;
432
- /**
433
- * Deterministic turn id for this single call. Stable across retries of the
434
- * same logical turn so a caching gateway / idempotent backend can dedupe.
435
- */
436
- turnId?: string;
437
- /**
438
- * If this call is itself nested inside a higher-order conversation
439
- * (recursion via `createConversationBackend`), the enclosing turn's id.
440
- * Used for trace stitching across nested orchestration.
441
- */
442
- parentTurnId?: string;
443
- /**
444
- * Headers to forward verbatim to any outbound HTTP the backend issues:
445
- * `X-Tangle-Forwarded-Authorization`, `X-Tangle-Forwarded-Depth`,
446
- * run/turn correlation. Backends that issue HTTP MUST merge these into
447
- * the outbound request; backends that don't issue HTTP may ignore them.
448
- */
449
- propagatedHeaders?: Readonly<Record<string, string>>;
450
- }
451
- /** @stable */
452
- interface AgentExecutionBackend<TInput extends AgentBackendInput = AgentBackendInput> {
453
- kind: string;
454
- start?(input: TInput, context: Omit<AgentBackendContext, 'session'> & {
455
- requestedSessionId?: string;
456
- }): Promise<RuntimeSession> | RuntimeSession;
457
- resume?(session: RuntimeSession, input: TInput, context: Omit<AgentBackendContext, 'session'>): Promise<RuntimeSession> | RuntimeSession;
458
- stream(input: TInput, context: AgentBackendContext): AsyncIterable<RuntimeStreamEvent>;
459
- stop?(session: RuntimeSession, reason: string): Promise<void> | void;
460
- }
461
- /** @stable */
462
- interface RunAgentTaskStreamOptions<TInput extends AgentBackendInput = AgentBackendInput> {
463
- task: AgentTaskSpec;
464
- backend: AgentExecutionBackend<TInput>;
465
- input?: Omit<TInput, 'task'>;
466
- knowledge?: AgentKnowledgeProvider;
467
- sessionStore?: RuntimeSessionStore;
468
- sessionId?: string;
469
- resume?: boolean;
470
- signal?: AbortSignal;
471
- minimumReadinessScore?: number;
472
- }
473
- /** @stable */
474
- interface RunAgentTaskOptions<TState, TAction, TActionResult, TEval extends ControlEvalResult = ControlEvalResult> {
475
- task: AgentTaskSpec;
476
- adapter: AgentAdapter<TState, TAction, TActionResult, TEval>;
477
- knowledge?: AgentKnowledgeProvider;
478
- onEvent?: AgentRuntimeEventSink<TState, TAction, TActionResult, TEval>;
479
- store?: TraceStore;
480
- signal?: AbortSignal;
481
- scenarioId?: string;
482
- projectId?: string;
483
- variantId?: string;
484
- minimumReadinessScore?: number;
485
- }
486
- /** @stable */
487
- interface AgentTaskRunResult<TState, TAction, TActionResult, TEval extends ControlEvalResult = ControlEvalResult> {
488
- task: AgentTaskSpec;
489
- status: AgentTaskStatus;
490
- knowledge: KnowledgeReadinessReport;
491
- questions: UserQuestion[];
492
- acquisitionPlans: DataAcquisitionPlan[];
493
- userAnswers: Record<string, string>;
494
- acquiredEvidenceIds: string[];
495
- control: ControlRunResult<TState, TAction, TActionResult, TEval>;
496
- runRecords: RunRecord[];
497
- }
498
- /** @stable */
499
- interface KnowledgeReadinessDecision {
500
- passed: boolean;
501
- status: 'ready' | 'blocked' | 'caveat';
502
- reason: string;
503
- readinessScore: number;
504
- recommendedAction: KnowledgeReadinessReport['recommendedAction'];
505
- severity: KnowledgeReadinessReport['severity'];
506
- blockingGapIds: string[];
507
- nonBlockingGapIds: string[];
508
- }
509
-
510
- export type { AgentBackendInput as A, BackendErrorDetail as B, KnowledgeReadinessDecision as K, OpenAIChatTool as O, RuntimeStreamEvent as R, OpenAIChatToolChoice as a, OpenAIChatResponseFormat as b, AgentExecutionBackend as c, AgentBackendContext as d, AgentRuntimeEvent as e, AgentTaskStatus as f, AgentTaskSpec as g, RunAgentTaskOptions as h, AgentTaskRunResult as i, RunAgentTaskStreamOptions as j, RuntimeSessionStore as k, RuntimeSession as l, AgentAdapter as m, AgentKnowledgeProvider as n, AgentRuntimeEventSink as o, AgentTaskContext as p };