@looprun-ai/core 0.1.2 → 0.2.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/guards.d.ts +92 -15
- package/dist/guards.d.ts.map +1 -1
- package/dist/guards.js +145 -38
- package/dist/guards.js.map +1 -1
- package/dist/index.d.ts +7 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/model-params.d.ts +16 -0
- package/dist/model-params.d.ts.map +1 -1
- package/dist/model-params.js +14 -0
- package/dist/model-params.js.map +1 -1
- package/dist/runtime/ledger.d.ts +10 -1
- package/dist/runtime/ledger.d.ts.map +1 -1
- package/dist/runtime/ledger.js +2 -1
- package/dist/runtime/ledger.js.map +1 -1
- package/dist/runtime/turn.d.ts +74 -2
- package/dist/runtime/turn.d.ts.map +1 -1
- package/dist/runtime/turn.js +112 -0
- package/dist/runtime/turn.js.map +1 -1
- package/dist/spec.d.ts +77 -10
- package/dist/spec.d.ts.map +1 -1
- package/dist/spec.js +62 -51
- package/dist/spec.js.map +1 -1
- package/package.json +1 -1
package/dist/model-params.js
CHANGED
|
@@ -59,4 +59,18 @@ export function normalizeModelParams(params) {
|
|
|
59
59
|
const settings = { ...flat, ...params.modelSettings };
|
|
60
60
|
return Object.keys(settings).length ? { ...rest, modelSettings: settings } : rest;
|
|
61
61
|
}
|
|
62
|
+
/**
|
|
63
|
+
* Fold a spec's per-agent `sampling` OVER an already-normalized modelParams object (agent wins on any
|
|
64
|
+
* key it sets), preserving providerOptions and every other top-level key. The one merged object is
|
|
65
|
+
* spread into EVERY generate() call of the turn (main generation, forced-terminal, redrive), so a
|
|
66
|
+
* creative agent can run at temperature 0.7 beside a temp-0 admin agent in the same domain. Absent /
|
|
67
|
+
* empty sampling ⇒ the input returned unchanged (the zero-diff guarantee). Pure + exported so the merge
|
|
68
|
+
* is unit-testable without a live model.
|
|
69
|
+
*/
|
|
70
|
+
export function resolveModelSettings(normalized, sampling) {
|
|
71
|
+
if (!sampling || Object.keys(sampling).length === 0)
|
|
72
|
+
return normalized;
|
|
73
|
+
const modelSettings = { ...normalized.modelSettings, ...sampling };
|
|
74
|
+
return { ...normalized, modelSettings };
|
|
75
|
+
}
|
|
62
76
|
//# sourceMappingURL=model-params.js.map
|
package/dist/model-params.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-params.js","sourceRoot":"","sources":["../src/model-params.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;GAGG;AACH,MAAM,UAAU,iBAAiB;IAC/B,OAAO;QACL,eAAe,EAAE;YACf,MAAM,EAAE,EAAE,cAAc,EAAE,EAAE,cAAc,EAAE,CAAC,EAAE,eAAe,EAAE,KAAK,EAAE,EAAE;SAC1E;KACF,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,OAAoD,EAAE;IACnF,OAAO;QACL,aAAa,EAAE;YACb,WAAW,EAAE,CAAC;YACd,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACjD,GAAG,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACnF;KACF,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,iBAAiB,GAAsB;IAC3C,aAAa,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS;IACnE,eAAe,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,YAAY;CACrE,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAA+B;IAClE,MAAM,IAAI,GAA4B,EAAE,CAAC;IACzC,MAAM,IAAI,GAA4B,EAAE,CAAC;IACzC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5C,IAAI,CAAC,KAAK,eAAe;YAAE,SAAS;QACpC,IAAI,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC;YAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;;YAC1C,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;IACD,MAAM,QAAQ,GAAG,EAAE,GAAG,IAAI,EAAE,GAAI,MAAM,CAAC,aAAqD,EAAE,CAAC;IAC/F,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACpF,CAAC"}
|
|
1
|
+
{"version":3,"file":"model-params.js","sourceRoot":"","sources":["../src/model-params.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;GAGG;AACH,MAAM,UAAU,iBAAiB;IAC/B,OAAO;QACL,eAAe,EAAE;YACf,MAAM,EAAE,EAAE,cAAc,EAAE,EAAE,cAAc,EAAE,CAAC,EAAE,eAAe,EAAE,KAAK,EAAE,EAAE;SAC1E;KACF,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,OAAoD,EAAE;IACnF,OAAO;QACL,aAAa,EAAE;YACb,WAAW,EAAE,CAAC;YACd,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACjD,GAAG,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACnF;KACF,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,iBAAiB,GAAsB;IAC3C,aAAa,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS;IACnE,eAAe,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,YAAY;CACrE,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAA+B;IAClE,MAAM,IAAI,GAA4B,EAAE,CAAC;IACzC,MAAM,IAAI,GAA4B,EAAE,CAAC;IACzC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5C,IAAI,CAAC,KAAK,eAAe;YAAE,SAAS;QACpC,IAAI,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC;YAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;;YAC1C,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;IACD,MAAM,QAAQ,GAAG,EAAE,GAAG,IAAI,EAAE,GAAI,MAAM,CAAC,aAAqD,EAAE,CAAC;IAC/F,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACpF,CAAC;AAUD;;;;;;;GAOG;AACH,MAAM,UAAU,oBAAoB,CAClC,UAAmC,EACnC,QAA2B;IAE3B,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,UAAU,CAAC;IACvE,MAAM,aAAa,GAAG,EAAE,GAAI,UAAU,CAAC,aAAqD,EAAE,GAAG,QAAQ,EAAE,CAAC;IAC5G,OAAO,EAAE,GAAG,UAAU,EAAE,aAAa,EAAE,CAAC;AAC1C,CAAC"}
|
package/dist/runtime/ledger.d.ts
CHANGED
|
@@ -5,7 +5,13 @@
|
|
|
5
5
|
* tool activity — never the user text (magnet firewall). `observed` accumulates for the whole
|
|
6
6
|
* conversation; the other fields reset per turn via `beginTurn`.
|
|
7
7
|
*/
|
|
8
|
-
import type { ObservedCall } from '../rules.js';
|
|
8
|
+
import type { Guard, ObservedCall } from '../rules.js';
|
|
9
|
+
/** An OUTPUT-dim (postTool) result-invariant failure OR a flowChain restate — carried on the ledger
|
|
10
|
+
* and JOINED into the onReply violation set so the same bounded no-tools redrive relays its text. */
|
|
11
|
+
export interface PostToolViolation {
|
|
12
|
+
guard: Guard;
|
|
13
|
+
reason: string;
|
|
14
|
+
}
|
|
9
15
|
export interface TurnLedger {
|
|
10
16
|
observed: ObservedCall[];
|
|
11
17
|
turnIndex: number;
|
|
@@ -15,6 +21,9 @@ export interface TurnLedger {
|
|
|
15
21
|
terminalReply: string;
|
|
16
22
|
/** Consecutive guard-vetoed rounds this turn (reset when a call passes guards and executes). */
|
|
17
23
|
vetoStreak: number;
|
|
24
|
+
/** OUTPUT-dim (postTool) result-invariant violations + flowChain restates accrued this turn — joined
|
|
25
|
+
* into the onReply violation set before the redrive loop (see finalizeReply). Reset per turn. */
|
|
26
|
+
postToolViolations: PostToolViolation[];
|
|
18
27
|
}
|
|
19
28
|
/**
|
|
20
29
|
* Veto-storm limit: with the terminal protocol (toolChoice 'required') a model that cannot
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ledger.d.ts","sourceRoot":"","sources":["../../src/runtime/ledger.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"ledger.d.ts","sourceRoot":"","sources":["../../src/runtime/ledger.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEvD;sGACsG;AACtG,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,gGAAgG;IAChG,UAAU,EAAE,MAAM,CAAC;IACnB;sGACkG;IAClG,kBAAkB,EAAE,iBAAiB,EAAE,CAAC;CACzC;AAED;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAElC,oEAAoE;AACpE,wBAAgB,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAExD;AAED,wBAAgB,YAAY,IAAI,UAAU,CAEzC;AAED,8EAA8E;AAC9E,wBAAgB,SAAS,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAQrE;AAED,yGAAyG;AACzG,wBAAgB,QAAQ,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAM5C;AAED,iEAAiE;AACjE,wBAAgB,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAIpH;AAED,0GAA0G;AAC1G,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI,CAevH;AAED,uFAAuF;AACvF,wBAAgB,cAAc,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAIpG"}
|
package/dist/runtime/ledger.js
CHANGED
|
@@ -10,7 +10,7 @@ export function vetoStormHit(ledger) {
|
|
|
10
10
|
return ledger.vetoStreak >= VETO_STORM_LIMIT;
|
|
11
11
|
}
|
|
12
12
|
export function createLedger() {
|
|
13
|
-
return { observed: [], turnIndex: 0, producedThisTurn: [], turnCorrections: [], attachments: [], terminalReply: '', vetoStreak: 0 };
|
|
13
|
+
return { observed: [], turnIndex: 0, producedThisTurn: [], turnCorrections: [], attachments: [], terminalReply: '', vetoStreak: 0, postToolViolations: [] };
|
|
14
14
|
}
|
|
15
15
|
/** Reset the per-turn fields (the conversation-scoped `observed` is kept). */
|
|
16
16
|
export function beginTurn(ledger, turnIndex) {
|
|
@@ -20,6 +20,7 @@ export function beginTurn(ledger, turnIndex) {
|
|
|
20
20
|
ledger.attachments = [];
|
|
21
21
|
ledger.terminalReply = '';
|
|
22
22
|
ledger.vetoStreak = 0;
|
|
23
|
+
ledger.postToolViolations = [];
|
|
23
24
|
}
|
|
24
25
|
/** Structural success check on a tool result ({success:false} / {error} / {PREREQ_NOT_MET} ⇒ failed). */
|
|
25
26
|
export function resultOk(r) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ledger.js","sourceRoot":"","sources":["../../src/runtime/ledger.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ledger.js","sourceRoot":"","sources":["../../src/runtime/ledger.ts"],"names":[],"mappings":"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"}
|
package/dist/runtime/turn.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { AgentSpec } from '../spec.js';
|
|
1
|
+
import type { AgentSpec, ChainSpec } from '../spec.js';
|
|
2
2
|
import type { TrunkTheme } from '../trunk.js';
|
|
3
|
-
import type { AgentWorld, Guard } from '../rules.js';
|
|
3
|
+
import type { AgentWorld, Guard, GuardCtx, ObservedCall } from '../rules.js';
|
|
4
4
|
import { type TurnLedger } from './ledger.js';
|
|
5
5
|
export interface ReplyViolation {
|
|
6
6
|
guard: Guard;
|
|
@@ -21,6 +21,23 @@ export declare function evaluateOnInput(spec: AgentSpec, ledger: TurnLedger, wor
|
|
|
21
21
|
export declare function applyMutators(spec: AgentSpec, ledger: TurnLedger, world: AgentWorld, text: string): string;
|
|
22
22
|
/** Run the onReply guard checks against a candidate reply. */
|
|
23
23
|
export declare function checkReply(spec: AgentSpec, ledger: TurnLedger, world: AgentWorld, text: string): Promise<ReplyViolation[]>;
|
|
24
|
+
/** The output of {@link enforcePostTool}: LLM-facing `output:${kind}:${tool}` correction tags (for the
|
|
25
|
+
* observed-call ledger / a turn's `recoveryEvents`) plus the `{ guard, reason }` pairs that JOIN the
|
|
26
|
+
* onReply violation set — so the SAME bounded no-tools redrive relays each correction to the model. The
|
|
27
|
+
* tool has already executed, so a failing result invariant can only be reported/repaired in the reply,
|
|
28
|
+
* never vetoed. */
|
|
29
|
+
export interface PostToolEnforcement {
|
|
30
|
+
corrections: string[];
|
|
31
|
+
violations: ReplyViolation[];
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* OUTPUT-dim (postTool) enforcement — the previously-dead `spec.guards.postTool` hook. Runs each
|
|
35
|
+
* already-resolved result-invariant guard against `ctx` (whose `ctx.result` carries the tool RESULT) and
|
|
36
|
+
* collects, for every guard that FAILS, (a) an `output:${kind}:${tool}` correction tag and (b) the
|
|
37
|
+
* `{ guard, reason }` pair. PURE: no I/O, no ledger mutation — the caller records the corrections and
|
|
38
|
+
* joins the violations into the reply-violation set. `guards === []` ⇒ empty arrays (the zero-diff path).
|
|
39
|
+
*/
|
|
40
|
+
export declare function enforcePostTool(guards: Guard[], ctx: GuardCtx): Promise<PostToolEnforcement>;
|
|
24
41
|
/** The redrive user message a backend sends for a bounded NO-TOOLS re-generation. */
|
|
25
42
|
export declare function redriveMessage(violations: ReplyViolation[]): string;
|
|
26
43
|
/** The built-in honest-abstain closure: a pure function of verified observations. */
|
|
@@ -35,4 +52,59 @@ export interface FinalizedReply {
|
|
|
35
52
|
* (via the backend-supplied `redrive` callback) → deterministic exhaustion closure if still violating.
|
|
36
53
|
*/
|
|
37
54
|
export declare function finalizeReply(spec: AgentSpec, theme: TrunkTheme | undefined, world: AgentWorld, ledger: TurnLedger, initialText: string, redrive: (message: string) => Promise<string>, maxRedrives: number): Promise<FinalizedReply>;
|
|
55
|
+
/**
|
|
56
|
+
* PURE per-chain trigger — the pass's decision function, extracted so it is unit-testable without a live
|
|
57
|
+
* model. Fires iff (a) `after` was observed OK THIS turn, (b) `call` was NOT observed OK this turn, and
|
|
58
|
+
* (c) `when` is absent or returns true. `when` is spec-authored business code — it reads ONLY
|
|
59
|
+
* (world, observed), never the user text (the firewall). Evaluate it per-chain AT execution time, in
|
|
60
|
+
* order: a 'direct' chain appends to `observed`, so a later chain sees the updated ledger.
|
|
61
|
+
*/
|
|
62
|
+
export declare function shouldFireChain(chain: ChainSpec, world: AgentWorld, observed: ObservedCall[], turnIndex: number): boolean;
|
|
63
|
+
/** The side-effecting seam the completion pass needs — injected so the pass is model-free/testable. The
|
|
64
|
+
* backend supplies the REAL guard hooks + a `forceLlmCall` that drives one pinned micro-generate. */
|
|
65
|
+
export interface ChainPassCtx {
|
|
66
|
+
world: AgentWorld;
|
|
67
|
+
/** The live per-turn ledger of observed calls (mutated by afterToolCall/forceLlmCall as chains run). */
|
|
68
|
+
observed: ObservedCall[];
|
|
69
|
+
turnIndex: number;
|
|
70
|
+
/** Whether a terminal reply already exists (post-fallback) — gates the restate reply-accounting. */
|
|
71
|
+
terminalReplyPresent: boolean;
|
|
72
|
+
/** The run-level preTool veto hook — a chained call MUST still pass the preTool guards. */
|
|
73
|
+
beforeToolCall: (a: {
|
|
74
|
+
toolName: string;
|
|
75
|
+
input: unknown;
|
|
76
|
+
}) => Promise<{
|
|
77
|
+
proceed: false;
|
|
78
|
+
output: unknown;
|
|
79
|
+
} | void>;
|
|
80
|
+
/** The run-level afterToolCall recorder (pushes the observed entry + runs postTool). */
|
|
81
|
+
afterToolCall: (a: {
|
|
82
|
+
toolName: string;
|
|
83
|
+
input: unknown;
|
|
84
|
+
output?: unknown;
|
|
85
|
+
}) => Promise<void> | void;
|
|
86
|
+
/** 'llm' mode: force ONE micro-generate pinned to `call` (the model fills args), recording via the
|
|
87
|
+
* hooks. Injected so the pass never imports a model — the backend closes over agent.generate. */
|
|
88
|
+
forceLlmCall: (call: string) => Promise<void>;
|
|
89
|
+
}
|
|
90
|
+
/** What the pass hands back to the backend (applied to the ledger by the caller). */
|
|
91
|
+
export interface ChainPassResult {
|
|
92
|
+
/** turnCorrections to append: `chain:${call}` / `chain-vetoed:${call}` / `chain-failed:${call}`. */
|
|
93
|
+
corrections: string[];
|
|
94
|
+
/** Reply-accounting violations to JOIN into the ledger's postToolViolations (the redrive consumes them). */
|
|
95
|
+
replyViolations: ReplyViolation[];
|
|
96
|
+
/** extraCalls to add — llm-mode chains only (a real generate); a direct chain runs NO LLM. */
|
|
97
|
+
llmCalls: number;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* The flowChain completion pass. For each declared chain, in order: skip unless {@link shouldFireChain};
|
|
101
|
+
* then force the missing `call` — 'direct' via `world.exec` on the SAME guard-checked path a model call
|
|
102
|
+
* takes (beforeToolCall veto → world.exec → afterToolCall record), or 'llm' via one pinned micro-generate.
|
|
103
|
+
* A preTool veto ⇒ `chain-vetoed:${call}` (world NOT called); a call that never lands OK ⇒ `chain-failed`.
|
|
104
|
+
* On success ⇒ `chain:${call}` + (iff a terminal reply already exists) a restate reply-accounting
|
|
105
|
+
* violation, so the existing bounded no-tools redrive regenerates the reply to mention the outcome.
|
|
106
|
+
*
|
|
107
|
+
* ZERO-DIFF: `chains` absent/empty ⇒ returns empty corrections/violations + 0 llmCalls with NO work.
|
|
108
|
+
*/
|
|
109
|
+
export declare function runChainCompletionPass(chains: ChainSpec[] | undefined, ctx: ChainPassCtx): Promise<ChainPassResult>;
|
|
38
110
|
//# sourceMappingURL=turn.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"turn.d.ts","sourceRoot":"","sources":["../../src/runtime/turn.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"turn.d.ts","sourceRoot":"","sources":["../../src/runtime/turn.ts"],"names":[],"mappings":"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"}
|
package/dist/runtime/turn.js
CHANGED
|
@@ -89,6 +89,25 @@ export async function checkReply(spec, ledger, world, text) {
|
|
|
89
89
|
}
|
|
90
90
|
return out;
|
|
91
91
|
}
|
|
92
|
+
/**
|
|
93
|
+
* OUTPUT-dim (postTool) enforcement — the previously-dead `spec.guards.postTool` hook. Runs each
|
|
94
|
+
* already-resolved result-invariant guard against `ctx` (whose `ctx.result` carries the tool RESULT) and
|
|
95
|
+
* collects, for every guard that FAILS, (a) an `output:${kind}:${tool}` correction tag and (b) the
|
|
96
|
+
* `{ guard, reason }` pair. PURE: no I/O, no ledger mutation — the caller records the corrections and
|
|
97
|
+
* joins the violations into the reply-violation set. `guards === []` ⇒ empty arrays (the zero-diff path).
|
|
98
|
+
*/
|
|
99
|
+
export async function enforcePostTool(guards, ctx) {
|
|
100
|
+
const corrections = [];
|
|
101
|
+
const violations = [];
|
|
102
|
+
for (const g of guards) {
|
|
103
|
+
const reason = await g.check(ctx);
|
|
104
|
+
if (reason) {
|
|
105
|
+
corrections.push(`output:${g.kind}:${ctx.tool}`);
|
|
106
|
+
violations.push({ guard: g, reason });
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return { corrections, violations };
|
|
110
|
+
}
|
|
92
111
|
/** The redrive user message a backend sends for a bounded NO-TOOLS re-generation. */
|
|
93
112
|
export function redriveMessage(violations) {
|
|
94
113
|
const correction = violations.map((v) => `- ${v.reason}`).join('\n');
|
|
@@ -109,6 +128,11 @@ export function defaultExhaustionReply(theme, world, okTools, produced, violatio
|
|
|
109
128
|
export async function finalizeReply(spec, theme, world, ledger, initialText, redrive, maxRedrives) {
|
|
110
129
|
let text = applyMutators(spec, ledger, world, initialText);
|
|
111
130
|
let violations = await checkReply(spec, ledger, world, text);
|
|
131
|
+
// OUTPUT-dim postTool violations + flowChain restates (accrued in the backend's afterToolCall / chain
|
|
132
|
+
// pass) join the reply-violation set so the SAME bounded no-tools redrive relays their correction text —
|
|
133
|
+
// a report/repair of an already-run result, never a veto. Empty ⇒ `violations` untouched (zero-diff).
|
|
134
|
+
if (ledger.postToolViolations.length)
|
|
135
|
+
violations = [...ledger.postToolViolations, ...violations];
|
|
112
136
|
for (let r = 0; r < maxRedrives && violations.length; r++) {
|
|
113
137
|
const next = await redrive(redriveMessage(violations));
|
|
114
138
|
for (const v of violations)
|
|
@@ -128,4 +152,92 @@ export async function finalizeReply(spec, theme, world, ledger, initialText, red
|
|
|
128
152
|
}
|
|
129
153
|
return { text, exhausted: false, violations: [] };
|
|
130
154
|
}
|
|
155
|
+
// ── flowChain completion (controls.chains) ────────────────────────────────────────────────────────
|
|
156
|
+
/**
|
|
157
|
+
* Synthetic reply-accounting guard for an executed flowChain. NOT a real check (check ⇒ null, prose ⇒
|
|
158
|
+
* ''): it only carries the restate `reason` (relayed by the shared no-tools redrive) and a `kind` so
|
|
159
|
+
* `recoveryEvents` shows `redrive:chainRestate`. Reused across turns/chains — it holds no state.
|
|
160
|
+
*/
|
|
161
|
+
const CHAIN_RESTATE_GUARD = { kind: 'chainRestate', dim: 'behavior', check: () => null, prose: () => '' };
|
|
162
|
+
const chainRestateReason = (call) => `You also completed ${call} this turn — restate the outcome so the user knows; do not claim anything else.`;
|
|
163
|
+
/**
|
|
164
|
+
* PURE per-chain trigger — the pass's decision function, extracted so it is unit-testable without a live
|
|
165
|
+
* model. Fires iff (a) `after` was observed OK THIS turn, (b) `call` was NOT observed OK this turn, and
|
|
166
|
+
* (c) `when` is absent or returns true. `when` is spec-authored business code — it reads ONLY
|
|
167
|
+
* (world, observed), never the user text (the firewall). Evaluate it per-chain AT execution time, in
|
|
168
|
+
* order: a 'direct' chain appends to `observed`, so a later chain sees the updated ledger.
|
|
169
|
+
*/
|
|
170
|
+
export function shouldFireChain(chain, world, observed, turnIndex) {
|
|
171
|
+
const afterOk = observed.some((o) => o.name === chain.after && o.ok && o.turnIndex === turnIndex);
|
|
172
|
+
if (!afterOk)
|
|
173
|
+
return false;
|
|
174
|
+
const callDone = observed.some((o) => o.name === chain.call && o.ok && o.turnIndex === turnIndex);
|
|
175
|
+
if (callDone)
|
|
176
|
+
return false;
|
|
177
|
+
if (chain.when && !chain.when(world, observed))
|
|
178
|
+
return false;
|
|
179
|
+
return true;
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* The flowChain completion pass. For each declared chain, in order: skip unless {@link shouldFireChain};
|
|
183
|
+
* then force the missing `call` — 'direct' via `world.exec` on the SAME guard-checked path a model call
|
|
184
|
+
* takes (beforeToolCall veto → world.exec → afterToolCall record), or 'llm' via one pinned micro-generate.
|
|
185
|
+
* A preTool veto ⇒ `chain-vetoed:${call}` (world NOT called); a call that never lands OK ⇒ `chain-failed`.
|
|
186
|
+
* On success ⇒ `chain:${call}` + (iff a terminal reply already exists) a restate reply-accounting
|
|
187
|
+
* violation, so the existing bounded no-tools redrive regenerates the reply to mention the outcome.
|
|
188
|
+
*
|
|
189
|
+
* ZERO-DIFF: `chains` absent/empty ⇒ returns empty corrections/violations + 0 llmCalls with NO work.
|
|
190
|
+
*/
|
|
191
|
+
export async function runChainCompletionPass(chains, ctx) {
|
|
192
|
+
const corrections = [];
|
|
193
|
+
const replyViolations = [];
|
|
194
|
+
let llmCalls = 0;
|
|
195
|
+
if (!chains?.length)
|
|
196
|
+
return { corrections, replyViolations, llmCalls };
|
|
197
|
+
for (const chain of chains) {
|
|
198
|
+
if (!shouldFireChain(chain, ctx.world, ctx.observed, ctx.turnIndex))
|
|
199
|
+
continue;
|
|
200
|
+
let landed = false;
|
|
201
|
+
if (chain.mode === 'direct') {
|
|
202
|
+
const args = typeof chain.args === 'function' ? chain.args(ctx.world, ctx.observed) : (chain.args ?? {});
|
|
203
|
+
// Same execution path a model tool-call takes: preTool guards can VETO the chain (governance is
|
|
204
|
+
// not bypassable), then world.exec, then afterToolCall records + runs postTool.
|
|
205
|
+
const veto = await ctx.beforeToolCall({ toolName: chain.call, input: args });
|
|
206
|
+
if (veto && veto.proceed === false) {
|
|
207
|
+
corrections.push(`chain-vetoed:${chain.call}`);
|
|
208
|
+
continue;
|
|
209
|
+
}
|
|
210
|
+
try {
|
|
211
|
+
const output = await ctx.world.exec(chain.call, args);
|
|
212
|
+
await ctx.afterToolCall({ toolName: chain.call, input: args, output });
|
|
213
|
+
}
|
|
214
|
+
catch {
|
|
215
|
+
corrections.push(`chain-failed:${chain.call}`);
|
|
216
|
+
continue;
|
|
217
|
+
}
|
|
218
|
+
landed = ctx.observed.some((o) => o.name === chain.call && o.ok && o.turnIndex === ctx.turnIndex);
|
|
219
|
+
}
|
|
220
|
+
else {
|
|
221
|
+
// 'llm': ONE forced micro-generate — the model fills args (it MAY read the user text; the firewall
|
|
222
|
+
// bars only deterministic guard/trigger code). A real generate → count it toward llmCalls.
|
|
223
|
+
try {
|
|
224
|
+
await ctx.forceLlmCall(chain.call);
|
|
225
|
+
llmCalls++;
|
|
226
|
+
}
|
|
227
|
+
catch {
|
|
228
|
+
corrections.push(`chain-failed:${chain.call}`);
|
|
229
|
+
continue;
|
|
230
|
+
}
|
|
231
|
+
landed = ctx.observed.some((o) => o.name === chain.call && o.ok && o.turnIndex === ctx.turnIndex);
|
|
232
|
+
}
|
|
233
|
+
if (!landed) {
|
|
234
|
+
corrections.push(`chain-failed:${chain.call}`);
|
|
235
|
+
continue;
|
|
236
|
+
}
|
|
237
|
+
corrections.push(`chain:${chain.call}`);
|
|
238
|
+
if (ctx.terminalReplyPresent)
|
|
239
|
+
replyViolations.push({ guard: CHAIN_RESTATE_GUARD, reason: chainRestateReason(chain.call) });
|
|
240
|
+
}
|
|
241
|
+
return { corrections, replyViolations, llmCalls };
|
|
242
|
+
}
|
|
131
243
|
//# sourceMappingURL=turn.js.map
|
package/dist/runtime/turn.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"turn.js","sourceRoot":"","sources":["../../src/runtime/turn.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"turn.js","sourceRoot":"","sources":["../../src/runtime/turn.ts"],"names":[],"mappings":"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"}
|
package/dist/spec.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import type { AgentWorld, Guard, ReplyMutator, SpatialEdge } from './rules.js';
|
|
1
|
+
import type { AgentWorld, Guard, ObservedCall, ReplyMutator, SpatialEdge } from './rules.js';
|
|
2
2
|
import type { TrunkTheme } from './trunk.js';
|
|
3
|
+
import type { SamplingSettings } from './model-params.js';
|
|
3
4
|
export type Hook = 'onInput' | 'preTool' | 'postTool' | 'onReply';
|
|
4
5
|
export type ToolTarget = 'any' | string[];
|
|
5
6
|
export type Layer = 'minimal' | 'base' | 'full' | 'agent';
|
|
@@ -30,15 +31,51 @@ export interface GuardBinding {
|
|
|
30
31
|
layer: Layer;
|
|
31
32
|
disabled: boolean;
|
|
32
33
|
}
|
|
34
|
+
/**
|
|
35
|
+
* A declared FOLLOW-UP completion (a "flowChain"). Veto guards can only BLOCK a wrong call; they
|
|
36
|
+
* cannot CREATE a missing one. A flowChain deterministically COMPLETES a required follow-up: iff `after`
|
|
37
|
+
* ran OK this turn and `call` did NOT, the runtime forces `call` (the LLM keeps ownership of args; a
|
|
38
|
+
* zero-arg / spec-derivable call skips the LLM entirely). preTool guards still gate the forced call — a
|
|
39
|
+
* chain cannot bypass governance.
|
|
40
|
+
*
|
|
41
|
+
* FIREWALL: `when`/`args` are spec-authored business code (like `exhaustionReply`) — pure functions of
|
|
42
|
+
* (world, observed) ONLY. They NEVER receive the user's text or the reply (the magnet firewall bars
|
|
43
|
+
* deterministic trigger/derive code from reading user text). Only the `mode:'llm'` micro-generate may
|
|
44
|
+
* see the user text — that is the model filling args, not guard/trigger code.
|
|
45
|
+
*/
|
|
46
|
+
export interface ChainSpec {
|
|
47
|
+
/** Fires only if this tool was observed OK THIS turn. */
|
|
48
|
+
after: string;
|
|
49
|
+
/** The follow-up tool that must exist this turn; forced when missing. */
|
|
50
|
+
call: string;
|
|
51
|
+
/** Deterministic trigger — a PURE function of (world, observed) [full-conversation ledger; each
|
|
52
|
+
* ObservedCall carries `turnIndex`, so scope to this turn yourself if needed]. NO user text. Absent ⇒
|
|
53
|
+
* always fire (when `after` ran OK this turn and `call` is missing). */
|
|
54
|
+
when?: (world: AgentWorld, observed: ObservedCall[]) => boolean;
|
|
55
|
+
/** 'direct' = execute `world.exec(call, args ?? {})` with NO LLM (zero-arg or spec-derived args), on the
|
|
56
|
+
* same guard-checked path a model call takes. 'llm' = ONE forced micro-generate where the model fills
|
|
57
|
+
* args (it may read the user text — the firewall bars only deterministic guard/trigger code). */
|
|
58
|
+
mode: 'direct' | 'llm';
|
|
59
|
+
/** For 'direct': static args, or a PURE derive function of (world, observed) [same firewall as `when`].
|
|
60
|
+
* Ignored for 'llm' (the model fills args). Default `{}`. */
|
|
61
|
+
args?: Record<string, unknown> | ((world: AgentWorld, observed: ObservedCall[]) => Record<string, unknown>);
|
|
62
|
+
}
|
|
33
63
|
export interface AgentControls {
|
|
34
64
|
maxSteps?: number;
|
|
35
65
|
redrives?: number;
|
|
36
66
|
terminal?: TerminalPolicy;
|
|
37
67
|
directives?: StateDirective[];
|
|
68
|
+
/** Declared follow-up completions — see {@link ChainSpec}. Absent/empty ⇒ the runtime adds not a
|
|
69
|
+
* single new code effect on the turn (zero-diff). */
|
|
70
|
+
chains?: ChainSpec[];
|
|
38
71
|
escalate?: {
|
|
39
72
|
model: AgentModelRef;
|
|
40
73
|
maxAttempts?: number;
|
|
41
74
|
};
|
|
75
|
+
/** Per-agent AI-SDK call settings, merged OVER the conversation-level modelParams (agent wins) by the
|
|
76
|
+
* backend — so a creative content agent can run at temperature 0.7 beside a temp-0 admin agent in the
|
|
77
|
+
* same domain. Absent ⇒ the conversation-level modelParams apply unchanged. */
|
|
78
|
+
sampling?: SamplingSettings;
|
|
42
79
|
/** Committed when the reply still violates its checks after all redrives — MUST be a pure function
|
|
43
80
|
* of verified observations (structurally unable to fabricate). Omitted ⇒ the theme/default closure. */
|
|
44
81
|
exhaustionReply?: (world: AgentWorld, okTools: string[], produced: string[], violations: string[]) => string;
|
|
@@ -100,12 +137,39 @@ export interface AgentSpecConfig {
|
|
|
100
137
|
maxAttempts?: number;
|
|
101
138
|
};
|
|
102
139
|
exhaustionReply?: (world: AgentWorld, okTools: string[], produced: string[], violations: string[]) => string;
|
|
140
|
+
/** Per-agent AI-SDK call settings (see {@link AgentControls.sampling}) — merged over the
|
|
141
|
+
* conversation-level modelParams by the backend. */
|
|
142
|
+
sampling?: SamplingSettings;
|
|
143
|
+
/** Declared follow-up completions (see {@link ChainSpec}). Absent ⇒ controls.chains stays unset. */
|
|
144
|
+
chains?: ChainSpec[];
|
|
103
145
|
destructiveTools?: string[];
|
|
146
|
+
/** Per destructive tool, the confirm MECHANISM the auto destructive-safety layer installs (P8a-clean —
|
|
147
|
+
* no linguistic content). `'arg'` (default for any unlisted destructive tool) = a `confirmed:true`
|
|
148
|
+
* flag gated on a prior-turn probe; `'prior-ask'` = a flag-less action gated on a prior-turn `askUser`.
|
|
149
|
+
* Absent ⇒ every destructive tool uses `'arg'` (byte-stable with the pre-mechanism layer). */
|
|
150
|
+
confirmMechanism?: Record<string, 'arg' | 'prior-ask'>;
|
|
151
|
+
/** Business-owned lexicon injected for the ALWAYS-ON reply layer. When `falseFailureClaimRe` is
|
|
152
|
+
* provided, `installMinimal` auto-installs `noFalseFailureClaim({ claimRe })` under
|
|
153
|
+
* `minimal:noFalseFailureClaim` (a reply-honesty invariant every agent should carry). Auto-iff-provided
|
|
154
|
+
* — an absent lexicon leaves the minimal layer exactly as before (non-breaking). Extensible: future
|
|
155
|
+
* always-on language-keyed guards add their own key here, keeping the runtime language-neutral (P8a). */
|
|
156
|
+
lexicon?: {
|
|
157
|
+
falseFailureClaimRe?: RegExp;
|
|
158
|
+
confirmAskRe?: RegExp;
|
|
159
|
+
};
|
|
104
160
|
toolSchemas?: Record<string, ToolSchemaLike>;
|
|
105
161
|
/** Optional domain-theme reference (see {@link AgentSpec.theme}). */
|
|
106
162
|
theme?: TrunkTheme;
|
|
107
163
|
}
|
|
108
|
-
|
|
164
|
+
/**
|
|
165
|
+
* The ONE AgentSpec class (no Minimal/Base/Full ladder). Its constructor always installs the universal
|
|
166
|
+
* invariants (noDuplicateCall + emptyReply, + noFalseFailureClaim iff `cfg.lexicon` provides its regex)
|
|
167
|
+
* and, iff `destructiveTools` is non-empty, the destructive-safety protocol (confirmFirst +
|
|
168
|
+
* destructiveThrottle) on those tools — confirmFirst keyed per-tool by `cfg.confirmMechanism`. Ids and
|
|
169
|
+
* install order are byte-stable (`minimal:*` then `base:*`) so the layer-sorted trunk prose and
|
|
170
|
+
* resolveBindings order are unchanged from the former ladder.
|
|
171
|
+
*/
|
|
172
|
+
export declare class AgentSpecBase implements AgentSpec {
|
|
109
173
|
readonly id: string;
|
|
110
174
|
readonly mode: string;
|
|
111
175
|
readonly persona: string;
|
|
@@ -116,10 +180,21 @@ export declare class AgentSpecMinimal implements AgentSpec {
|
|
|
116
180
|
readonly behavior: string[];
|
|
117
181
|
readonly theme?: TrunkTheme;
|
|
118
182
|
protected readonly destructiveTools: string[];
|
|
183
|
+
protected readonly confirmMechanism: Record<string, 'arg' | 'prior-ask'>;
|
|
184
|
+
protected readonly lexicon: {
|
|
185
|
+
falseFailureClaimRe?: RegExp;
|
|
186
|
+
confirmAskRe?: RegExp;
|
|
187
|
+
};
|
|
119
188
|
protected readonly toolSchemas: Record<string, ToolSchemaLike>;
|
|
120
189
|
private seq;
|
|
121
190
|
constructor(cfg: AgentSpecConfig);
|
|
122
191
|
protected installMinimal(): void;
|
|
192
|
+
/** Iff the spec declares destructiveTools: the confirm-first + throttle protocol on exactly those tools
|
|
193
|
+
* (validated ⊆ surface). The confirm MECHANISM is per-tool (`cfg.confirmMechanism`, default `'arg'`):
|
|
194
|
+
* the tools are partitioned so each mechanism renders its OWN prose under its own base id — arg-flag
|
|
195
|
+
* tools → `base:confirmFirst`, prior-ask tools → `base:confirmFirstPriorAsk` — while `destructiveThrottle`
|
|
196
|
+
* covers ALL of them. A no-op when the list is empty — every non-destructive spec is clean. */
|
|
197
|
+
protected installBase(): void;
|
|
123
198
|
addGuard(hook: Hook, target: ToolTarget, guard: Guard, opts?: {
|
|
124
199
|
id?: string;
|
|
125
200
|
layer?: Layer;
|
|
@@ -136,12 +211,4 @@ export declare class AgentSpecMinimal implements AgentSpec {
|
|
|
136
211
|
addBehavior(line: string): this;
|
|
137
212
|
addFlow(edge: SpatialEdge): this;
|
|
138
213
|
}
|
|
139
|
-
export declare class AgentSpecBase extends AgentSpecMinimal {
|
|
140
|
-
constructor(cfg: AgentSpecConfig);
|
|
141
|
-
protected installBase(): void;
|
|
142
|
-
}
|
|
143
|
-
export declare class AgentSpecFull extends AgentSpecBase {
|
|
144
|
-
constructor(cfg: AgentSpecConfig);
|
|
145
|
-
protected installFull(): void;
|
|
146
|
-
}
|
|
147
214
|
//# sourceMappingURL=spec.d.ts.map
|
package/dist/spec.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spec.d.ts","sourceRoot":"","sources":["../src/spec.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"spec.d.ts","sourceRoot":"","sources":["../src/spec.ts"],"names":[],"mappings":"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"}
|