@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.
- package/dist/agent.js +3 -2
- package/dist/agent.js.map +1 -1
- package/dist/{chunk-GZX3PI7V.js → chunk-2DS6T46I.js} +3 -3
- package/dist/{chunk-N2JJDGLJ.js → chunk-75V2XXYJ.js} +8 -6
- package/dist/{chunk-N2JJDGLJ.js.map → chunk-75V2XXYJ.js.map} +1 -1
- package/dist/{chunk-F6G3SSHY.js → chunk-SONQUREI.js} +2 -2
- package/dist/{chunk-EZ2QESTP.js → chunk-TSDKBFZP.js} +34 -925
- package/dist/chunk-TSDKBFZP.js.map +1 -0
- package/dist/chunk-Z3RRRPRB.js +916 -0
- package/dist/chunk-Z3RRRPRB.js.map +1 -0
- package/dist/{coordination-09JTQnlF.d.ts → coordination-BoEPhGas.d.ts} +7 -62
- package/dist/environment-provider.d.ts +66 -0
- package/dist/environment-provider.js +16 -0
- package/dist/environment-provider.js.map +1 -0
- package/dist/index.d.ts +4 -3
- package/dist/index.js +5 -4
- package/dist/index.js.map +1 -1
- package/dist/{loop-runner-bin-Ddgf4DkS.d.ts → loop-runner-bin-DCr5OMe5.d.ts} +2 -2
- package/dist/loop-runner-bin.d.ts +4 -3
- package/dist/loop-runner-bin.js +4 -3
- package/dist/loops.d.ts +9 -6
- package/dist/loops.js +9 -7
- package/dist/mcp/bin.js +2 -1
- package/dist/mcp/bin.js.map +1 -1
- package/dist/mcp/index.d.ts +6 -4
- package/dist/mcp/index.js +9 -7
- package/dist/mcp/index.js.map +1 -1
- package/dist/{worktree-CUn0d-ZT.d.ts → types-C1sozrte.d.ts} +1 -123
- package/dist/worktree-CpptK3oF.d.ts +125 -0
- package/dist/{worktree-fanout-DwwatTdY.d.ts → worktree-fanout-CtQrRDME.d.ts} +2 -1
- package/package.json +9 -1
- package/dist/chunk-EZ2QESTP.js.map +0 -1
- /package/dist/{chunk-GZX3PI7V.js.map → chunk-2DS6T46I.js.map} +0 -0
- /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,
|
|
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.
|
|
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
|
},
|