@tangle-network/agent-runtime 0.109.0 → 0.109.2

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 (57) hide show
  1. package/README.md +1 -0
  2. package/dist/{activation-DRpnplEm.js → activation-CM-L6TtL.js} +2 -2
  3. package/dist/{activation-DRpnplEm.js.map → activation-CM-L6TtL.js.map} +1 -1
  4. package/dist/agent.d.ts +2 -2
  5. package/dist/agent.js +2 -2
  6. package/dist/analyst-loop.d.ts +1 -1
  7. package/dist/{environment-provider-D0NXc4Qz.d.ts → environment-provider-CMqSAp-O.d.ts} +3 -2
  8. package/dist/environment-provider.d.ts +1 -1
  9. package/dist/{improvement-cycle-CRnDDdX0.js → improvement-cycle-9O4iVFOA.js} +3 -3
  10. package/dist/{improvement-cycle-CRnDDdX0.js.map → improvement-cycle-9O4iVFOA.js.map} +1 -1
  11. package/dist/{index-CqWEbmGh.d.ts → index-BwY61sh3.d.ts} +3 -3
  12. package/dist/{index-B6p86EqB.d.ts → index-CFJ_1m1U.d.ts} +11 -9
  13. package/dist/{index-lpqu3wdI.d.ts → index-HsQm1Rrr.d.ts} +6 -152
  14. package/dist/index.d.ts +8 -7
  15. package/dist/index.js +11 -635
  16. package/dist/index.js.map +1 -1
  17. package/dist/intelligence.d.ts +2 -2
  18. package/dist/intelligence.js +2 -2
  19. package/dist/kernel.d.ts +3 -3
  20. package/dist/kernel.js +4 -4
  21. package/dist/{knowledge-DwVmEJyG.js → knowledge-1a38bcUT.js} +3 -3
  22. package/dist/{knowledge-DwVmEJyG.js.map → knowledge-1a38bcUT.js.map} +1 -1
  23. package/dist/knowledge.d.ts +1 -1
  24. package/dist/knowledge.js +1 -1
  25. package/dist/{loop-runner-bin-C6gjS2Ar.js → loop-runner-bin-C35m19w0.js} +3 -3
  26. package/dist/{loop-runner-bin-C6gjS2Ar.js.map → loop-runner-bin-C35m19w0.js.map} +1 -1
  27. package/dist/{loop-runner-bin-D55_d9K8.d.ts → loop-runner-bin-DUQF0bYz.d.ts} +3 -3
  28. package/dist/loop-runner-bin.d.ts +1 -1
  29. package/dist/loop-runner-bin.js +1 -1
  30. package/dist/mcp/bin.js +1 -1
  31. package/dist/mcp/index.d.ts +2 -2
  32. package/dist/mcp/index.js +4 -4
  33. package/dist/{openai-tools-B17qCuEc.js → openai-tools-DT9FH2_t.js} +2 -2
  34. package/dist/{openai-tools-B17qCuEc.js.map → openai-tools-DT9FH2_t.js.map} +1 -1
  35. package/dist/primeintellect/index.d.ts +1 -1
  36. package/dist/profiles.d.ts +1 -1
  37. package/dist/profiles.js.map +1 -1
  38. package/dist/{runtime-bCvzR6fc.js → runtime-dpJZmZtt.js} +16 -16
  39. package/dist/runtime-dpJZmZtt.js.map +1 -0
  40. package/dist/runtime-hooks-C7iJOWm3.js +99 -0
  41. package/dist/runtime-hooks-C7iJOWm3.js.map +1 -0
  42. package/dist/runtime-hooks-sbRpjStq.d.ts +88 -0
  43. package/dist/{structural-rollout-BC81Otmc.js → structural-rollout-ASQLr4-v.js} +2 -2
  44. package/dist/{structural-rollout-BC81Otmc.js.map → structural-rollout-ASQLr4-v.js.map} +1 -1
  45. package/dist/{supervise-DXjtclYS.js → supervise-DyPmmhJ6.js} +5 -4
  46. package/dist/supervise-DyPmmhJ6.js.map +1 -0
  47. package/dist/{supervisor-B2LzaWRb.js → supervisor-sTJC9psT.js} +3 -98
  48. package/dist/supervisor-sTJC9psT.js.map +1 -0
  49. package/dist/testing.js +8 -8
  50. package/dist/tool-loop.d.ts +149 -0
  51. package/dist/tool-loop.js +629 -0
  52. package/dist/tool-loop.js.map +1 -0
  53. package/dist/{types-BevOjfTY.d.ts → types-DnNGJ5Gz.d.ts} +3 -88
  54. package/package.json +17 -6
  55. package/dist/runtime-bCvzR6fc.js.map +0 -1
  56. package/dist/supervise-DXjtclYS.js.map +0 -1
  57. package/dist/supervisor-B2LzaWRb.js.map +0 -1
package/dist/testing.js CHANGED
@@ -1,10 +1,10 @@
1
1
  import { $ as parseExactAgentProfile, K as applyExactAgentProfileDiff, rt as canonicalCandidateDigest$1, st as immutableCandidateValue } from "./prepare-Pr19X93k.js";
2
- import { f as verifyAgentImprovementProposal } from "./improvement-cycle-CRnDDdX0.js";
2
+ import { f as verifyAgentImprovementProposal } from "./improvement-cycle-9O4iVFOA.js";
3
3
  import { SANDBOX_SIZE_PRESET_NAMES } from "@tangle-network/agent-interface";
4
4
  //#region src/testing/fixtures/agent-improvement-proposal.json
5
5
  var agent_improvement_proposal_default = {
6
6
  changedSurfaces: ["prompt"],
7
- digest: "sha256:0111aecf13f77e5967b34600f49978a2d0fc6036e2f3285e3bf29a892c8390ae",
7
+ digest: "sha256:fc52fd656a37a79611a2f870079695fe1a5c055d3078d58b0f2d4c79d73c3945",
8
8
  evaluation: {
9
9
  "decision": {
10
10
  "contributingChecks": [
@@ -4515,7 +4515,7 @@ var agent_improvement_proposal_default = {
4515
4515
  ],
4516
4516
  "metadata": {
4517
4517
  "fixture": "agent-improvement-proposal",
4518
- "runtimeVersion": "0.109.0"
4518
+ "runtimeVersion": "0.109.2"
4519
4519
  },
4520
4520
  "objectives": [
4521
4521
  {
@@ -4626,8 +4626,8 @@ var agent_improvement_proposal_default = {
4626
4626
  "baselineContentHash": "sha256:5c21ee53e513fc604cb09754e21c392b24a424da0ef37dbf8f1ee4a8a0b08f09",
4627
4627
  "candidateContentHash": "sha256:60fcbb1c728194bd51d7d19cb732d1c3f1881dce7e0a6266b41c8b98cfd65693",
4628
4628
  "kind": "agent-eval-loop",
4629
- "recordDigest": "sha256:0a21cbc2e244683e58623c1b00c672cf34312bb5acb17d522cd3e4a747f08418",
4630
- "runId": "agent-runtime-0.109.0-proposal-fixture",
4629
+ "recordDigest": "sha256:042b806bcb6e3db2fe3b8744d543d769a0d3edf6cebe5413becb137196b00fd8",
4630
+ "runId": "agent-runtime-0.109.2-proposal-fixture",
4631
4631
  "schema": "agent-candidate-experiment"
4632
4632
  }
4633
4633
  },
@@ -4650,13 +4650,13 @@ var agent_improvement_proposal_default = {
4650
4650
  }],
4651
4651
  kind: "agent-improvement-proposal",
4652
4652
  proposedAt: "2026-07-10T01:00:00.000Z",
4653
- runId: "agent-runtime-0.109.0-proposal-fixture"
4653
+ runId: "agent-runtime-0.109.2-proposal-fixture"
4654
4654
  };
4655
4655
  //#endregion
4656
4656
  //#region src/testing/fixtures/agent-profile-improvement-proposal.json
4657
4657
  var agent_profile_improvement_proposal_default = {
4658
4658
  changedSurfaces: ["prompt", "skills"],
4659
- digest: "sha256:d91073bcdef9663a219cecd71d230f1855d286ea762a1557ffefff99830a60fd",
4659
+ digest: "sha256:5a6888221983315e661a139d32348538dc054443e03ce2ef7f0cdf6380fb3558",
4660
4660
  evaluation: {
4661
4661
  "decision": {
4662
4662
  "contributingChecks": [{
@@ -6268,7 +6268,7 @@ var agent_profile_improvement_proposal_default = {
6268
6268
  ],
6269
6269
  "metadata": {
6270
6270
  "fixture": "agent-profile-improvement-proposal",
6271
- "runtimeVersion": "0.109.0"
6271
+ "runtimeVersion": "0.109.2"
6272
6272
  },
6273
6273
  "objectives": [
6274
6274
  {
@@ -0,0 +1,149 @@
1
+ import { l as RuntimeHooks } from "./runtime-hooks-sbRpjStq.js";
2
+ //#region src/tool-loop.d.ts
3
+ interface ToolLoopCall {
4
+ toolCallId?: string;
5
+ toolName: string;
6
+ args: Record<string, unknown>;
7
+ }
8
+ /** Outcome of one tool dispatch — structurally compatible with a hub/integration
9
+ * tool-outcome union, so callers can fold either through the loop. */
10
+ type ToolCallOutcome = {
11
+ ok: true;
12
+ result: unknown;
13
+ } | {
14
+ ok: false;
15
+ code: string;
16
+ message: string;
17
+ status?: number;
18
+ };
19
+ /** One OpenAI-shaped tool-call entry carried on an assistant message. */
20
+ interface ToolLoopAssistantToolCall {
21
+ id: string;
22
+ type: 'function';
23
+ function: {
24
+ name: string;
25
+ arguments: string;
26
+ };
27
+ }
28
+ /**
29
+ * A message in the running conversation the loop sends to `streamTurn`.
30
+ *
31
+ * The base `{ role, content }` covers `system` / `user` / plain `assistant`
32
+ * turns. Two optional fields carry the OpenAI function-calling contract so a
33
+ * strict model (Claude, and any OpenAI-compatible provider that validates tool
34
+ * history) reads its own tool use back instead of re-issuing the same call:
35
+ *
36
+ * - an assistant turn that emitted tool calls carries `tool_calls`, and its
37
+ * `content` is `null` when the turn was tool-only;
38
+ * - each tool result is its own `{ role: 'tool', tool_call_id, content }`
39
+ * message keyed to the call that produced it.
40
+ *
41
+ * Widening is additive: a `streamTurn` that reads only `role` + `content` still
42
+ * works; one that forwards the whole message to an OpenAI-compatible endpoint
43
+ * now sends correct tool history.
44
+ */
45
+ type ToolLoopMessage = {
46
+ role: string;
47
+ content: string | null;
48
+ tool_calls?: ToolLoopAssistantToolCall[];
49
+ tool_call_id?: string;
50
+ };
51
+ type ToolLoopEvent = {
52
+ type: 'text';
53
+ text: string;
54
+ } | {
55
+ type: 'tool_call';
56
+ call: ToolLoopCall;
57
+ } | {
58
+ type: 'other';
59
+ event: unknown;
60
+ };
61
+ /** Why the loop stopped. `completed` = model finished naturally; `stuck-loop` =
62
+ * ≥3 consecutive identical tool calls (same tool + args); `backstop` = hit the
63
+ * runaway-backstop cap (200 by default); `deadline` = wall-clock deadlineMs
64
+ * exceeded; `budget` = maxCostUsd exhausted. Non-`completed` stops are infra /
65
+ * resource outcomes — eval scoring must distinguish them from capability failure. */
66
+ type ToolLoopStopReason = 'completed' | 'stuck-loop' | 'backstop' | 'deadline' | 'budget';
67
+ interface ToolLoopResult {
68
+ finalText: string;
69
+ toolResults: Array<{
70
+ call: ToolLoopCall;
71
+ label: string;
72
+ outcome: ToolCallOutcome;
73
+ }>;
74
+ turns: number;
75
+ stopReason: ToolLoopStopReason;
76
+ /** @deprecated Use `stopReason !== 'completed'` instead. */
77
+ cappedOut: boolean;
78
+ }
79
+ interface RunToolLoopOptions {
80
+ systemPrompt: string;
81
+ userMessage: string;
82
+ priorMessages?: ToolLoopMessage[];
83
+ streamTurn: (messages: ToolLoopMessage[]) => AsyncIterable<ToolLoopEvent>;
84
+ executeToolCall: (call: ToolLoopCall) => Promise<ToolCallOutcome>;
85
+ isExecutableTool: (toolName: string) => boolean;
86
+ /** Runaway-backstop cap. Default 200 — set far above any legitimate workflow.
87
+ * For per-workflow limits, use `maxCostUsd` or `deadlineMs` instead. */
88
+ maxToolTurns?: number;
89
+ /** Wall-clock deadline in ms since epoch (Date.now()-based). When exceeded the
90
+ * loop stops with stopReason `deadline`. */
91
+ deadlineMs?: number;
92
+ /** Maximum total cost in USD. Requires `costOf` to meter each tool call. */
93
+ maxCostUsd?: number;
94
+ /** Return the USD cost of one outcome. Required for `maxCostUsd` to work. */
95
+ costOf?: (call: ToolLoopCall, outcome: ToolCallOutcome) => number;
96
+ renderResult?: (label: string, outcome: ToolCallOutcome) => string;
97
+ labelFor?: (call: ToolLoopCall) => string;
98
+ runId?: string;
99
+ scenarioId?: string;
100
+ hooks?: RuntimeHooks;
101
+ }
102
+ /** Run the bounded tool loop and return the final text + every executed tool
103
+ * outcome. Awaitable — callers needing to stream events to a UI use
104
+ * {@link streamToolLoop}. */
105
+ declare function runToolLoop(opts: RunToolLoopOptions): Promise<ToolLoopResult>;
106
+ type StreamToolLoopYield<Raw> = {
107
+ kind: 'event';
108
+ event: Raw;
109
+ } | {
110
+ kind: 'tool_result';
111
+ toolName: string;
112
+ toolCallId?: string;
113
+ label: string;
114
+ outcome: ToolCallOutcome;
115
+ } | {
116
+ kind: 'capped';
117
+ pending: number;
118
+ stopReason: Exclude<ToolLoopStopReason, 'completed'>;
119
+ };
120
+ interface StreamToolLoopOptions<Raw> {
121
+ systemPrompt: string;
122
+ userMessage: string;
123
+ priorMessages?: ToolLoopMessage[];
124
+ streamTurn: (messages: ToolLoopMessage[]) => AsyncIterable<Raw>;
125
+ extractText: (event: Raw) => string;
126
+ extractToolCall: (event: Raw) => ToolLoopCall | null;
127
+ isExecutableTool: (toolName: string) => boolean;
128
+ executeToolCall: (call: ToolLoopCall) => Promise<ToolCallOutcome>;
129
+ /** Runaway-backstop cap. Default 200 — set far above any legitimate workflow. */
130
+ maxToolTurns?: number;
131
+ /** Wall-clock deadline in ms since epoch (Date.now()-based). */
132
+ deadlineMs?: number;
133
+ /** Maximum total cost in USD. Requires `costOf` to meter each tool call. */
134
+ maxCostUsd?: number;
135
+ /** Return the USD cost of one outcome. Required for `maxCostUsd` to work. */
136
+ costOf?: (call: ToolLoopCall, outcome: ToolCallOutcome) => number;
137
+ renderResult?: (label: string, outcome: ToolCallOutcome) => string;
138
+ labelFor?: (call: ToolLoopCall) => string;
139
+ runId?: string;
140
+ scenarioId?: string;
141
+ hooks?: RuntimeHooks;
142
+ }
143
+ /** Streaming bounded tool loop: yields each raw turn event (the caller maps +
144
+ * telemetries + re-emits it) and each executed `tool_result`; emits one
145
+ * `capped` if it stops for any non-completed reason with calls still pending. */
146
+ declare function streamToolLoop<Raw>(opts: StreamToolLoopOptions<Raw>): AsyncGenerator<StreamToolLoopYield<Raw>, void, unknown>;
147
+ //#endregion
148
+ export { RunToolLoopOptions, StreamToolLoopOptions, StreamToolLoopYield, ToolCallOutcome, ToolLoopAssistantToolCall, ToolLoopCall, ToolLoopEvent, ToolLoopMessage, ToolLoopResult, ToolLoopStopReason, runToolLoop, streamToolLoop };
149
+ //# sourceMappingURL=tool-loop.d.ts.map