@tangle-network/agent-runtime 0.79.0 → 0.79.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 (34) hide show
  1. package/dist/agent.js +3 -2
  2. package/dist/agent.js.map +1 -1
  3. package/dist/{chunk-GZX3PI7V.js → chunk-2DS6T46I.js} +3 -3
  4. package/dist/{chunk-N2JJDGLJ.js → chunk-75V2XXYJ.js} +8 -6
  5. package/dist/{chunk-N2JJDGLJ.js.map → chunk-75V2XXYJ.js.map} +1 -1
  6. package/dist/{chunk-F6G3SSHY.js → chunk-SONQUREI.js} +2 -2
  7. package/dist/{chunk-EZ2QESTP.js → chunk-TSDKBFZP.js} +34 -925
  8. package/dist/chunk-TSDKBFZP.js.map +1 -0
  9. package/dist/chunk-Z3RRRPRB.js +916 -0
  10. package/dist/chunk-Z3RRRPRB.js.map +1 -0
  11. package/dist/{coordination-09JTQnlF.d.ts → coordination-BoEPhGas.d.ts} +7 -62
  12. package/dist/environment-provider.d.ts +66 -0
  13. package/dist/environment-provider.js +16 -0
  14. package/dist/environment-provider.js.map +1 -0
  15. package/dist/index.d.ts +4 -3
  16. package/dist/index.js +5 -4
  17. package/dist/index.js.map +1 -1
  18. package/dist/{loop-runner-bin-Ddgf4DkS.d.ts → loop-runner-bin-DCr5OMe5.d.ts} +2 -2
  19. package/dist/loop-runner-bin.d.ts +4 -3
  20. package/dist/loop-runner-bin.js +4 -3
  21. package/dist/loops.d.ts +9 -6
  22. package/dist/loops.js +9 -7
  23. package/dist/mcp/bin.js +2 -1
  24. package/dist/mcp/bin.js.map +1 -1
  25. package/dist/mcp/index.d.ts +6 -4
  26. package/dist/mcp/index.js +9 -7
  27. package/dist/mcp/index.js.map +1 -1
  28. package/dist/{worktree-CUn0d-ZT.d.ts → types-C1sozrte.d.ts} +1 -123
  29. package/dist/worktree-CpptK3oF.d.ts +125 -0
  30. package/dist/{worktree-fanout-DwwatTdY.d.ts → worktree-fanout-CtQrRDME.d.ts} +2 -1
  31. package/package.json +9 -1
  32. package/dist/chunk-EZ2QESTP.js.map +0 -1
  33. /package/dist/{chunk-GZX3PI7V.js.map → chunk-2DS6T46I.js.map} +0 -0
  34. /package/dist/{chunk-F6G3SSHY.js.map → chunk-SONQUREI.js.map} +0 -0
@@ -486,126 +486,4 @@ interface WidenGate<Out> {
486
486
  readonly judgeExempt?: boolean;
487
487
  }
488
488
 
489
- /**
490
- * @experimental
491
- *
492
- * The completion-oracle: **settled ⟺ DELIVERED.**
493
- *
494
- * Foreman's one hard lesson (0/18 self-improvement deliverables) — "done" must mean a check
495
- * PASSED, not the agent's say-so. `gateOnDeliverable` wraps an `Executor` so its settlement
496
- * is `valid` ONLY when the deliverable check passes. The child still RUNS and settles (its
497
- * spend is conserved into the pool either way), but a child that ran WITHOUT delivering
498
- * settles `valid:false` — so a keep-best driver never counts it as done, and a gate never
499
- * inflates with self-judged wins.
500
- *
501
- * Dual-purpose by construction:
502
- * - product: the agent fleet only advances on real, checked deliverables.
503
- * - proof: the gate's `valid` is the honest settle — equal-k comparisons can't be gamed by an
504
- * arm that "ran" without producing the artifact.
505
- *
506
- * The check is a DEPLOYABLE oracle — a test command, a state verifier, the commit0 judge —
507
- * read off the child's output, never the model judging itself. A throwing check is
508
- * fail-closed (not delivered), never a crash.
509
- */
510
-
511
- /**
512
- * The deployable completion oracle passed to {@link gateOnDeliverable}: a `check` that
513
- * decides DELIVERED (settles `valid` ⟺ it resolves true) plus an optional `describe` of
514
- * what the spawn was supposed to produce. The check reads the child's output — never the
515
- * model judging itself.
516
- */
517
- interface DeliverableSpec<Out = unknown> {
518
- /** The deployable check that decides DELIVERED. `settled.valid ⟺ this resolves true`. */
519
- check: (out: Out) => boolean | Promise<boolean>;
520
- /** What the spawn was supposed to produce — surfaced in traces/reports. */
521
- describe?: string;
522
- }
523
- /**
524
- * Wrap an `Executor` so its settlement `valid` reflects the deliverable check, not the
525
- * inner verdict. Handles both `execute` shapes (one-shot `Promise<ExecutorResult>` and
526
- * streaming `AsyncIterable<UsageEvent>` + `resultArtifact()`); the check runs once the inner
527
- * executor has produced its output. The inner `score` is preserved; only `valid` is gated.
528
- */
529
- declare function gateOnDeliverable<Out>(inner: Executor<Out>, deliverable: DeliverableSpec<Out>): Executor<Out>;
530
-
531
- /**
532
- * @experimental
533
- *
534
- * Git worktree helpers for the in-process delegation executor. Each
535
- * delegation runs in its own worktree so multiple parallel harness
536
- * subprocesses (claude / codex / opencode in a 3-way fanout) don't clobber
537
- * each other's edits on the shared workspace.
538
- *
539
- * Worktrees live under `<repoRoot>/.agent-worktrees/<runId>/`. After the
540
- * harness exits + the diff is captured, the worktree is removed.
541
- *
542
- * All operations spawn `git` via `child_process.spawn` synchronously
543
- * (via a `runGit` helper). Stays narrow on purpose: no commits, no rebases.
544
- * Diff capture stages all changes (`git add -A`) into the ephemeral worktree's
545
- * index so created (untracked) files appear in the `--cached` diff.
546
- */
547
- /** @experimental */
548
- interface WorktreeHandle {
549
- /** Absolute path to the worktree directory. */
550
- path: string;
551
- /** SHA the worktree was created at. */
552
- baseSha: string;
553
- /** Branch name created for this worktree (typically `delegate/<runId>`). */
554
- branch: string;
555
- }
556
- /** @experimental */
557
- interface CreateWorktreeOptions {
558
- /** Absolute path to the main git checkout. */
559
- repoRoot: string;
560
- /** Unique id for the worktree path + branch. Use the delegation run id. */
561
- runId: string;
562
- /** Parent directory the worktree lives under. Defaults to `.agent-worktrees`. */
563
- variantsDir?: string;
564
- /** Override the base ref (default `HEAD`). */
565
- baseRef?: string;
566
- /** Test seam — inject a custom git runner. */
567
- runGit?: GitRunner;
568
- }
569
- /** @experimental */
570
- interface DiffOptions {
571
- /** Worktree to diff. */
572
- worktree: WorktreeHandle;
573
- /** What to compare against. Default `worktree.baseSha`. */
574
- baseRef?: string;
575
- /** Test seam. */
576
- runGit?: GitRunner;
577
- }
578
- /** @experimental */
579
- interface DiffResult {
580
- patch: string;
581
- stats: {
582
- filesChanged: number;
583
- insertions: number;
584
- deletions: number;
585
- };
586
- }
587
- /** @experimental */
588
- interface RemoveWorktreeOptions {
589
- worktree: WorktreeHandle;
590
- repoRoot: string;
591
- /** Force removal even if dirty (default true; the loser of a fanout has uncommitted changes). */
592
- force?: boolean;
593
- /** Test seam. */
594
- runGit?: GitRunner;
595
- }
596
- /** Pluggable git runner (sync) — replaceable in tests. */
597
- type GitRunner = (args: ReadonlyArray<string>, opts: {
598
- cwd: string;
599
- }) => {
600
- stdout: string;
601
- stderr: string;
602
- exitCode: number;
603
- };
604
- /** @experimental */
605
- declare function createWorktree(options: CreateWorktreeOptions): Promise<WorktreeHandle>;
606
- /** @experimental */
607
- declare function captureWorktreeDiff(options: DiffOptions): Promise<DiffResult>;
608
- /** @experimental */
609
- declare function removeWorktree(options: RemoveWorktreeOptions): Promise<void>;
610
-
611
- export { type AgentSpec as A, type Budget as B, type CreateWorktreeOptions as C, type DiffOptions as D, type ExecutorRegistry as E, type GitRunner as G, type NodeId as N, type RemoveWorktreeOptions as R, type SpawnJournal as S, type TreeView as T, type UsageEvent as U, type WorktreeHandle as W, type DiffResult as a, createWorktree as b, captureWorktreeDiff as c, type Agent as d, type ResultBlobStore as e, type RootHandle as f, type SupervisedResult as g, type Settled as h, type Spend as i, type Scope as j, type Executor as k, type DeliverableSpec as l, type Runtime as m, type ExecutorFactory as n, type SpawnEvent as o, type Supervisor as p, type ExecutorContext as q, removeWorktree as r, type ExecutorResult as s, type SupervisorOpts as t, type WidenGate as u, gateOnDeliverable as v };
489
+ export type { AgentSpec as A, Budget as B, ExecutorFactory as E, NodeId as N, Runtime as R, SpawnJournal as S, TreeView as T, UsageEvent as U, WidenGate as W, Executor as a, ExecutorRegistry as b, Agent as c, ResultBlobStore as d, RootHandle as e, SupervisedResult as f, Settled as g, Spend as h, Scope as i, SpawnEvent as j, Supervisor as k, ExecutorContext as l, ExecutorResult as m, SupervisorOpts as n };
@@ -0,0 +1,125 @@
1
+ import { a as Executor } from './types-C1sozrte.js';
2
+
3
+ /**
4
+ * @experimental
5
+ *
6
+ * The completion-oracle: **settled ⟺ DELIVERED.**
7
+ *
8
+ * Foreman's one hard lesson (0/18 self-improvement deliverables) — "done" must mean a check
9
+ * PASSED, not the agent's say-so. `gateOnDeliverable` wraps an `Executor` so its settlement
10
+ * is `valid` ONLY when the deliverable check passes. The child still RUNS and settles (its
11
+ * spend is conserved into the pool either way), but a child that ran WITHOUT delivering
12
+ * settles `valid:false` — so a keep-best driver never counts it as done, and a gate never
13
+ * inflates with self-judged wins.
14
+ *
15
+ * Dual-purpose by construction:
16
+ * - product: the agent fleet only advances on real, checked deliverables.
17
+ * - proof: the gate's `valid` is the honest settle — equal-k comparisons can't be gamed by an
18
+ * arm that "ran" without producing the artifact.
19
+ *
20
+ * The check is a DEPLOYABLE oracle — a test command, a state verifier, the commit0 judge —
21
+ * read off the child's output, never the model judging itself. A throwing check is
22
+ * fail-closed (not delivered), never a crash.
23
+ */
24
+
25
+ /**
26
+ * The deployable completion oracle passed to {@link gateOnDeliverable}: a `check` that
27
+ * decides DELIVERED (settles `valid` ⟺ it resolves true) plus an optional `describe` of
28
+ * what the spawn was supposed to produce. The check reads the child's output — never the
29
+ * model judging itself.
30
+ */
31
+ interface DeliverableSpec<Out = unknown> {
32
+ /** The deployable check that decides DELIVERED. `settled.valid ⟺ this resolves true`. */
33
+ check: (out: Out) => boolean | Promise<boolean>;
34
+ /** What the spawn was supposed to produce — surfaced in traces/reports. */
35
+ describe?: string;
36
+ }
37
+ /**
38
+ * Wrap an `Executor` so its settlement `valid` reflects the deliverable check, not the
39
+ * inner verdict. Handles both `execute` shapes (one-shot `Promise<ExecutorResult>` and
40
+ * streaming `AsyncIterable<UsageEvent>` + `resultArtifact()`); the check runs once the inner
41
+ * executor has produced its output. The inner `score` is preserved; only `valid` is gated.
42
+ */
43
+ declare function gateOnDeliverable<Out>(inner: Executor<Out>, deliverable: DeliverableSpec<Out>): Executor<Out>;
44
+
45
+ /**
46
+ * @experimental
47
+ *
48
+ * Git worktree helpers for the in-process delegation executor. Each
49
+ * delegation runs in its own worktree so multiple parallel harness
50
+ * subprocesses (claude / codex / opencode in a 3-way fanout) don't clobber
51
+ * each other's edits on the shared workspace.
52
+ *
53
+ * Worktrees live under `<repoRoot>/.agent-worktrees/<runId>/`. After the
54
+ * harness exits + the diff is captured, the worktree is removed.
55
+ *
56
+ * All operations spawn `git` via `child_process.spawn` synchronously
57
+ * (via a `runGit` helper). Stays narrow on purpose: no commits, no rebases.
58
+ * Diff capture stages all changes (`git add -A`) into the ephemeral worktree's
59
+ * index so created (untracked) files appear in the `--cached` diff.
60
+ */
61
+ /** @experimental */
62
+ interface WorktreeHandle {
63
+ /** Absolute path to the worktree directory. */
64
+ path: string;
65
+ /** SHA the worktree was created at. */
66
+ baseSha: string;
67
+ /** Branch name created for this worktree (typically `delegate/<runId>`). */
68
+ branch: string;
69
+ }
70
+ /** @experimental */
71
+ interface CreateWorktreeOptions {
72
+ /** Absolute path to the main git checkout. */
73
+ repoRoot: string;
74
+ /** Unique id for the worktree path + branch. Use the delegation run id. */
75
+ runId: string;
76
+ /** Parent directory the worktree lives under. Defaults to `.agent-worktrees`. */
77
+ variantsDir?: string;
78
+ /** Override the base ref (default `HEAD`). */
79
+ baseRef?: string;
80
+ /** Test seam — inject a custom git runner. */
81
+ runGit?: GitRunner;
82
+ }
83
+ /** @experimental */
84
+ interface DiffOptions {
85
+ /** Worktree to diff. */
86
+ worktree: WorktreeHandle;
87
+ /** What to compare against. Default `worktree.baseSha`. */
88
+ baseRef?: string;
89
+ /** Test seam. */
90
+ runGit?: GitRunner;
91
+ }
92
+ /** @experimental */
93
+ interface DiffResult {
94
+ patch: string;
95
+ stats: {
96
+ filesChanged: number;
97
+ insertions: number;
98
+ deletions: number;
99
+ };
100
+ }
101
+ /** @experimental */
102
+ interface RemoveWorktreeOptions {
103
+ worktree: WorktreeHandle;
104
+ repoRoot: string;
105
+ /** Force removal even if dirty (default true; the loser of a fanout has uncommitted changes). */
106
+ force?: boolean;
107
+ /** Test seam. */
108
+ runGit?: GitRunner;
109
+ }
110
+ /** Pluggable git runner (sync) — replaceable in tests. */
111
+ type GitRunner = (args: ReadonlyArray<string>, opts: {
112
+ cwd: string;
113
+ }) => {
114
+ stdout: string;
115
+ stderr: string;
116
+ exitCode: number;
117
+ };
118
+ /** @experimental */
119
+ declare function createWorktree(options: CreateWorktreeOptions): Promise<WorktreeHandle>;
120
+ /** @experimental */
121
+ declare function captureWorktreeDiff(options: DiffOptions): Promise<DiffResult>;
122
+ /** @experimental */
123
+ declare function removeWorktree(options: RemoveWorktreeOptions): Promise<void>;
124
+
125
+ export { type CreateWorktreeOptions as C, type DiffOptions as D, type GitRunner as G, type RemoveWorktreeOptions as R, type WorktreeHandle as W, type DiffResult as a, createWorktree as b, captureWorktreeDiff as c, type DeliverableSpec as d, gateOnDeliverable as g, removeWorktree as r };
@@ -1,8 +1,9 @@
1
1
  import { AgentProfile } from '@tangle-network/agent-interface';
2
2
  import { AnalystFinding, DefaultVerdict } from '@tangle-network/agent-eval';
3
- import { A as AgentSpec, E as ExecutorRegistry, B as Budget, d as Agent, S as SpawnJournal, e as ResultBlobStore, f as RootHandle, g as SupervisedResult, N as NodeId, h as Settled, i as Spend, j as Scope, G as GitRunner, k as Executor, l as DeliverableSpec } from './worktree-CUn0d-ZT.js';
3
+ import { A as AgentSpec, b as ExecutorRegistry, B as Budget, c as Agent, S as SpawnJournal, d as ResultBlobStore, e as RootHandle, f as SupervisedResult, N as NodeId, g as Settled, h as Spend, i as Scope, a as Executor } from './types-C1sozrte.js';
4
4
  import { R as RuntimeHooks, I as Iteration } from './types-BF-MEsQB.js';
5
5
  import { BackendType } from '@tangle-network/sandbox';
6
+ import { G as GitRunner, d as DeliverableSpec } from './worktree-CpptK3oF.js';
6
7
  import { L as LocalHarness, r as runLocalHarness } from './local-harness-DU7yV6mG.js';
7
8
 
8
9
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tangle-network/agent-runtime",
3
- "version": "0.79.0",
3
+ "version": "0.79.1",
4
4
  "description": "Shared task-lifecycle skeleton for agents: a recursive loop kernel for chat turns, one-shot tasks, and multi-attempt loops, with trace capture and eval-gated self-improvement. Domain behavior lives in adapters; scoring and ship-gates in @tangle-network/agent-eval.",
5
5
  "homepage": "https://github.com/tangle-network/agent-runtime#readme",
6
6
  "repository": {
@@ -34,6 +34,11 @@
34
34
  "import": "./dist/loops.js",
35
35
  "default": "./dist/loops.js"
36
36
  },
37
+ "./environment-provider": {
38
+ "types": "./dist/environment-provider.d.ts",
39
+ "import": "./dist/environment-provider.js",
40
+ "default": "./dist/environment-provider.js"
41
+ },
37
42
  "./analyst-loop": {
38
43
  "types": "./dist/analyst-loop.d.ts",
39
44
  "import": "./dist/analyst-loop.js",
@@ -124,6 +129,9 @@
124
129
  "playwright": "^1.40.0"
125
130
  },
126
131
  "peerDependenciesMeta": {
132
+ "@tangle-network/agent-eval": {
133
+ "optional": true
134
+ },
127
135
  "@tangle-network/agent-interface": {
128
136
  "optional": true
129
137
  },