@looprun-ai/core 0.3.0 → 0.6.0
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 +50 -42
- package/dist/guards.d.ts.map +1 -1
- package/dist/guards.js +56 -115
- package/dist/guards.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/rules.d.ts +5 -10
- package/dist/rules.d.ts.map +1 -1
- package/dist/rules.js +2 -2
- package/dist/runtime/ledger.d.ts +7 -0
- package/dist/runtime/ledger.d.ts.map +1 -1
- package/dist/runtime/ledger.js +9 -1
- package/dist/runtime/ledger.js.map +1 -1
- package/dist/spec.d.ts +2 -0
- package/dist/spec.d.ts.map +1 -1
- package/dist/spec.js +1 -1
- package/dist/spec.js.map +1 -1
- package/dist/testing/fixture-world.d.ts +92 -0
- package/dist/testing/fixture-world.d.ts.map +1 -0
- package/dist/testing/fixture-world.js +202 -0
- package/dist/testing/fixture-world.js.map +1 -0
- package/dist/testing/index.d.ts +11 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +11 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/testing/proof.d.ts +90 -0
- package/dist/testing/proof.d.ts.map +1 -0
- package/dist/testing/proof.js +93 -0
- package/dist/testing/proof.js.map +1 -0
- package/package.json +7 -2
|
@@ -1 +1 @@
|
|
|
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,
|
|
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;;;;gEAIgE;AAChE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAExG;AAED,uGAAuG;AACvG,wBAAgB,cAAc,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAGpG"}
|
package/dist/runtime/ledger.js
CHANGED
|
@@ -56,10 +56,18 @@ export function recordToolResult(ledger, name, args, output) {
|
|
|
56
56
|
}
|
|
57
57
|
}
|
|
58
58
|
/** Record a TERMINAL tool call (replyToUser/askUser): capture the user-facing text. */
|
|
59
|
+
/** Record a terminal CALL in the observed ledger. Called from the guard hooks' SYNCHRONOUS segment
|
|
60
|
+
* (before any await): the model runtime dispatches a step's tool calls concurrently (Promise.all)
|
|
61
|
+
* but STARTS them in emission order, so a synchronous hook-time push makes a same-step `askUser`
|
|
62
|
+
* visible to a sibling destructive call's preTool checks — closing the noActAfterAskSameTurn
|
|
63
|
+
* same-step bypass (proof-suite finding, fixed 2026-07-15). */
|
|
64
|
+
export function recordTerminalCall(ledger, name, args) {
|
|
65
|
+
ledger.observed.push({ name, args, ok: true, turnIndex: ledger.turnIndex });
|
|
66
|
+
}
|
|
67
|
+
/** Capture the terminal REPLY text (the observed push happens at hook time via recordTerminalCall). */
|
|
59
68
|
export function recordTerminal(ledger, name, args) {
|
|
60
69
|
const text = typeof args.text === 'string' ? args.text : '';
|
|
61
70
|
if (text.trim())
|
|
62
71
|
ledger.terminalReply = text;
|
|
63
|
-
ledger.observed.push({ name, args, ok: true, turnIndex: ledger.turnIndex });
|
|
64
72
|
}
|
|
65
73
|
//# sourceMappingURL=ledger.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ledger.js","sourceRoot":"","sources":["../../src/runtime/ledger.ts"],"names":[],"mappings":"AA8BA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAElC,oEAAoE;AACpE,MAAM,UAAU,YAAY,CAAC,MAAkB;IAC7C,OAAO,MAAM,CAAC,UAAU,IAAI,gBAAgB,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,gBAAgB,EAAE,EAAE,EAAE,eAAe,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,kBAAkB,EAAE,EAAE,EAAE,CAAC;AAC9J,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,SAAS,CAAC,MAAkB,EAAE,SAAiB;IAC7D,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,MAAM,CAAC,gBAAgB,GAAG,EAAE,CAAC;IAC7B,MAAM,CAAC,eAAe,GAAG,EAAE,CAAC;IAC5B,MAAM,CAAC,WAAW,GAAG,EAAE,CAAC;IACxB,MAAM,CAAC,aAAa,GAAG,EAAE,CAAC;IAC1B,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC;IACtB,MAAM,CAAC,kBAAkB,GAAG,EAAE,CAAC;AACjC,CAAC;AAED,yGAAyG;AACzG,MAAM,UAAU,QAAQ,CAAC,CAAU;IACjC,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;QAC/B,MAAM,CAAC,GAAG,CAA4B,CAAC;QACvC,IAAI,CAAC,CAAC,OAAO,KAAK,KAAK,IAAI,CAAC,CAAC,cAAc,KAAK,IAAI,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;IACpG,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,iEAAiE;AACjE,MAAM,UAAU,UAAU,CAAC,MAAkB,EAAE,IAAY,EAAE,IAA6B,EAAE,UAAkB;IAC5G,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;IAC7E,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACxC,MAAM,CAAC,UAAU,EAAE,CAAC;AACtB,CAAC;AAED,0GAA0G;AAC1G,MAAM,UAAU,gBAAgB,CAAC,MAAkB,EAAE,IAAY,EAAE,IAA6B,EAAE,MAAe;IAC/G,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,4DAA4D;IACnF,MAAM,EAAE,GAAG,MAAM,KAAK,SAAS,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;IACpD,MAAM,oBAAoB,GAAI,MAAgE,EAAE,oBAAoB,KAAK,IAAI,CAAC;IAC9H,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;QACnB,IAAI;QACJ,IAAI;QACJ,EAAE;QACF,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,oBAAoB,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACjF,CAAC,CAAC;IACH,IAAI,EAAE,EAAE,CAAC;QACP,MAAM,GAAG,GAAI,MAAiD,EAAE,KAAK,CAAC;QACtE,IAAI,OAAO,GAAG,KAAK,QAAQ;YAAE,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACjE,CAAC;AACH,CAAC;AAED,uFAAuF;AACvF,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"ledger.js","sourceRoot":"","sources":["../../src/runtime/ledger.ts"],"names":[],"mappings":"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"}
|
package/dist/spec.d.ts
CHANGED
|
@@ -156,6 +156,7 @@ export interface AgentSpecConfig {
|
|
|
156
156
|
lexicon?: {
|
|
157
157
|
falseFailureClaimRe?: RegExp;
|
|
158
158
|
confirmAskRe?: RegExp;
|
|
159
|
+
selfNarrationRe?: RegExp;
|
|
159
160
|
};
|
|
160
161
|
toolSchemas?: Record<string, ToolSchemaLike>;
|
|
161
162
|
/** Optional domain-theme reference (see {@link AgentSpec.theme}). */
|
|
@@ -184,6 +185,7 @@ export declare class AgentSpecBase implements AgentSpec {
|
|
|
184
185
|
protected readonly lexicon: {
|
|
185
186
|
falseFailureClaimRe?: RegExp;
|
|
186
187
|
confirmAskRe?: RegExp;
|
|
188
|
+
selfNarrationRe?: RegExp;
|
|
187
189
|
};
|
|
188
190
|
protected readonly toolSchemas: Record<string, ToolSchemaLike>;
|
|
189
191
|
private seq;
|
package/dist/spec.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spec.d.ts","sourceRoot":"","sources":["../src/spec.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"spec.d.ts","sourceRoot":"","sources":["../src/spec.ts"],"names":[],"mappings":"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"}
|
package/dist/spec.js
CHANGED
|
@@ -111,7 +111,7 @@ export class AgentSpecBase {
|
|
|
111
111
|
// Output-channel degeneration lint (promoted 2026-07-15 after targeted validation + flash N=3
|
|
112
112
|
// zero-firing recert). FIRST among the onReply minimal guards: a degenerate reply must be re-driven
|
|
113
113
|
// before any content-level check reasons about it. onReply prose does NOT render into the trunk.
|
|
114
|
-
this.addGuard('onReply', 'any', degenerationGuard(), { layer: 'minimal', id: 'minimal:degenerationGuard' });
|
|
114
|
+
this.addGuard('onReply', 'any', degenerationGuard({ selfNarrationRe: this.lexicon.selfNarrationRe }), { layer: 'minimal', id: 'minimal:degenerationGuard' });
|
|
115
115
|
// ALWAYS-ON reply-honesty invariant — auto-installed IFF the bundle injects its false-failure lexicon
|
|
116
116
|
// (auto-iff-provided keeps a spec that ships no lexicon byte-stable). Ordered BEFORE emptyReply so the
|
|
117
117
|
// resolved onReply tail is `… , minimal:noFalseFailureClaim, minimal:emptyReply` (the same relative
|
package/dist/spec.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spec.js","sourceRoot":"","sources":["../src/spec.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,UAAU,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAsHrI,MAAM,cAAc,GAAG,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;AAClD,MAAM,WAAW,GAA0B,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;AAEtF,MAAM,UAAU,eAAe,CAAC,QAAoC,EAAE,IAAa;IACjF,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC;SACpB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,KAAK,KAAK,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;SACnG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,QAAoC,EAAE,IAAa;IAC/E,OAAO,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,QAAsC;IACpE,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC;SACpB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;SAC1B,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;SAC3D,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;AAC3B,CAAC;AA6CD;;;;;;;GAOG;AACH,MAAM,OAAO,aAAa;IACf,EAAE,CAAS;IACX,IAAI,CAAS;IACb,OAAO,CAAS;IAChB,OAAO,CAAuB;IAC9B,IAAI,CAAgB;IACpB,MAAM,CAAgC;IACtC,QAAQ,CAAgB;IACxB,QAAQ,CAAW;IACnB,KAAK,CAAc;IACT,gBAAgB,CAAW;IAC3B,gBAAgB,CAAsC;IACtD,OAAO,
|
|
1
|
+
{"version":3,"file":"spec.js","sourceRoot":"","sources":["../src/spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A deterministic, domain-NEUTRAL fixture world for the @looprun-ai/core testing kit.
|
|
3
|
+
*
|
|
4
|
+
* `FixtureWorld` implements `AgentWorld` with NO clock, NO RNG, and NO I/O — every id and
|
|
5
|
+
* label is produced by a monotonic in-memory counter, so an identical exec sequence yields identical
|
|
6
|
+
* `toolCalls` (the purity discipline). The strings are generic English ("Fixture Co.", "item",
|
|
7
|
+
* "media") — no business vocabulary — so the kit stays shippable and reusable.
|
|
8
|
+
*
|
|
9
|
+
* The label scheme is business-free: generated media labels are `g\d{3}` (g001, g002, …) produced by
|
|
10
|
+
* `createMedia`/`editMedia`; uploads are `u9\d{2}` (u900, u901, …) produced by `ingestAttachment`. The
|
|
11
|
+
* scheme regexes are exported as {@link FIXTURE_LABEL_SCHEME} for the noFabricatedSuccess proofs. The
|
|
12
|
+
* `hasMediaLabel` method below backs the noFabricatedSuccess `refExists` proof — it is a fixture accessor,
|
|
13
|
+
* no longer a typed `MediaWorld` contract (the runtime carries no media concept). The 11 domain tools are
|
|
14
|
+
* exported as {@link FIXTURE_TOOL_DEFS}; the generic theme + lexicon are {@link FIXTURE_THEME} /
|
|
15
|
+
* {@link FIXTURE_LEXICON}.
|
|
16
|
+
*/
|
|
17
|
+
import type { AgentWorld } from '../rules.js';
|
|
18
|
+
import type { TrunkTheme } from '../trunk.js';
|
|
19
|
+
import type { ToolDef } from '../runtime/types.js';
|
|
20
|
+
export type FixturePreset = 'empty' | 'seeded-media' | 'quota-exhausted' | 'has-primary';
|
|
21
|
+
/** The business-free label scheme (injected into the noFabricatedSuccess proofs). */
|
|
22
|
+
export declare const FIXTURE_LABEL_SCHEME: {
|
|
23
|
+
/** Uploaded labels: u900, u901, … */
|
|
24
|
+
readonly uploadRe: RegExp;
|
|
25
|
+
/** Any media label (generated g\d{3} OR uploaded u9\d{2}) — NON-global so no lastIndex leaks; the
|
|
26
|
+
* noFabricatedSuccess guard builds its own /g copy locally. */
|
|
27
|
+
readonly labelRe: RegExp;
|
|
28
|
+
/** Generated labels only. */
|
|
29
|
+
readonly generatedRe: RegExp;
|
|
30
|
+
readonly labelNoun: "fixture label";
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* A deterministic in-memory `AgentWorld`. Pure: all ids/labels come from monotonic
|
|
34
|
+
* counters; there is no clock, RNG, or I/O anywhere.
|
|
35
|
+
*/
|
|
36
|
+
export declare class FixtureWorld implements AgentWorld {
|
|
37
|
+
#private;
|
|
38
|
+
[key: string]: any;
|
|
39
|
+
readonly toolCalls: Array<{
|
|
40
|
+
name: string;
|
|
41
|
+
args: unknown;
|
|
42
|
+
result?: unknown;
|
|
43
|
+
tookEffect?: boolean;
|
|
44
|
+
}>;
|
|
45
|
+
readonly sseActions: unknown[];
|
|
46
|
+
constructor(preset?: FixturePreset);
|
|
47
|
+
hasMediaLabel(label: string): boolean;
|
|
48
|
+
quotaRemaining(): number;
|
|
49
|
+
hasPrimary(): boolean;
|
|
50
|
+
itemCount(): number;
|
|
51
|
+
advanceTurn(): void;
|
|
52
|
+
ingestAttachment(_url: string): string;
|
|
53
|
+
exec(name: string, args: Record<string, unknown>): unknown;
|
|
54
|
+
}
|
|
55
|
+
/** The 11 domain tool names — the agent SURFACE (terminals are runtime-owned, never in the surface). */
|
|
56
|
+
export declare const FIXTURE_TOOL_NAMES: readonly ["createItem", "updateItem", "deleteItem", "purgeAll", "searchItem", "listItems", "createMedia", "editMedia", "useMedia", "setPrimary", "reportStatus"];
|
|
57
|
+
/**
|
|
58
|
+
* Tool defs for the 11 domain tools. The runtime terminals (`replyToUser` / `askUser`) are NOT listed
|
|
59
|
+
* here: the Mastra backend auto-builds them from `terminalToolDefs()` when the host's `toolDefs` omit
|
|
60
|
+
* them (see buildWorldTools) — so a turn closes with these 11 defs alone.
|
|
61
|
+
*/
|
|
62
|
+
export declare const FIXTURE_TOOL_DEFS: ToolDef[];
|
|
63
|
+
/** A generic domain skin — no business vocabulary. The stateBlock reads the world accessors. */
|
|
64
|
+
export declare const FIXTURE_THEME: TrunkTheme;
|
|
65
|
+
/**
|
|
66
|
+
* Generic-English lexicon regexes for the lexicon-injected guards. All are NON-global (no /g lastIndex to
|
|
67
|
+
* leak between calls). Grouped by the guard family that consumes them.
|
|
68
|
+
*/
|
|
69
|
+
export declare const FIXTURE_LEXICON: {
|
|
70
|
+
/** minimal:noFalseFailureClaim — "every call succeeded, do not claim you couldn't". */
|
|
71
|
+
readonly falseFailureClaimRe: RegExp;
|
|
72
|
+
/** base:confirmFirstPriorAsk / pendingConfirmMustAsk — "does this reply seek confirmation?". */
|
|
73
|
+
readonly confirmAskRe: RegExp;
|
|
74
|
+
/** destructiveClaimRequiresSuccess — the deletion claim + offer/exempt qualifiers. */
|
|
75
|
+
readonly destructiveClaim: {
|
|
76
|
+
readonly claimRe: RegExp;
|
|
77
|
+
readonly offerRe: RegExp;
|
|
78
|
+
readonly exemptRe: RegExp;
|
|
79
|
+
};
|
|
80
|
+
/** noFabricatedSuccess — the media-creation claim + the verb-first claim. */
|
|
81
|
+
readonly fabricated: {
|
|
82
|
+
readonly claimRe: RegExp;
|
|
83
|
+
readonly verbClaimRe: RegExp;
|
|
84
|
+
};
|
|
85
|
+
/** noFabricatedSuccess `banRe` — a phrase the assistant may NEVER say (the unconditional-ban mode
|
|
86
|
+
* that absorbed the former replyNoProductionClaim kind). */
|
|
87
|
+
readonly productionClaimRe: RegExp;
|
|
88
|
+
/** degenerationGuard `selfNarrationRe` — the third-person self-narration branch, now lexicon-injected
|
|
89
|
+
* (generic English; no /g lastIndex to leak). Absent ⇒ the narration branch is OFF. */
|
|
90
|
+
readonly selfNarrationRe: RegExp;
|
|
91
|
+
};
|
|
92
|
+
//# sourceMappingURL=fixture-world.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fixture-world.d.ts","sourceRoot":"","sources":["../../src/testing/fixture-world.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAEnD,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,cAAc,GAAG,iBAAiB,GAAG,aAAa,CAAC;AAEzF,qFAAqF;AACrF,eAAO,MAAM,oBAAoB;IAC/B,qCAAqC;;IAErC;oEACgE;;IAEhE,6BAA6B;;;CAGrB,CAAC;AAIX;;;GAGG;AACH,qBAAa,YAAa,YAAW,UAAU;;IAI7C,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;IAEnB,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,UAAU,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAM;IACxG,QAAQ,CAAC,UAAU,EAAE,OAAO,EAAE,CAAM;gBAWxB,MAAM,GAAE,aAAuB;IAgC3C,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAKrC,cAAc,IAAI,MAAM;IAIxB,UAAU,IAAI,OAAO;IAIrB,SAAS,IAAI,MAAM;IAKnB,WAAW,IAAI,IAAI;IAInB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAOtC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO;CA6D3D;AAED,wGAAwG;AACxG,eAAO,MAAM,kBAAkB,kKAYrB,CAAC;AAQX;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,EAAE,OAAO,EAYtC,CAAC;AAEF,gGAAgG;AAChG,eAAO,MAAM,aAAa,EAAE,UAM3B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,eAAe;IAC1B,uFAAuF;;IAEvF,gGAAgG;;IAEhG,sFAAsF;;;;;;IAMtF,6EAA6E;;;;;IAK7E;iEAC6D;;IAE7D;4FACwF;;CAEhF,CAAC"}
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
/** The business-free label scheme (injected into the noFabricatedSuccess proofs). */
|
|
2
|
+
export const FIXTURE_LABEL_SCHEME = {
|
|
3
|
+
/** Uploaded labels: u900, u901, … */
|
|
4
|
+
uploadRe: /^u9\d{2}$/,
|
|
5
|
+
/** Any media label (generated g\d{3} OR uploaded u9\d{2}) — NON-global so no lastIndex leaks; the
|
|
6
|
+
* noFabricatedSuccess guard builds its own /g copy locally. */
|
|
7
|
+
labelRe: /\b[gu]\d{3}\b/,
|
|
8
|
+
/** Generated labels only. */
|
|
9
|
+
generatedRe: /^g\d{3}$/,
|
|
10
|
+
labelNoun: 'fixture label',
|
|
11
|
+
};
|
|
12
|
+
const DEFAULT_QUOTA = 100;
|
|
13
|
+
/**
|
|
14
|
+
* A deterministic in-memory `AgentWorld`. Pure: all ids/labels come from monotonic
|
|
15
|
+
* counters; there is no clock, RNG, or I/O anywhere.
|
|
16
|
+
*/
|
|
17
|
+
export class FixtureWorld {
|
|
18
|
+
toolCalls = [];
|
|
19
|
+
sseActions = [];
|
|
20
|
+
#preset;
|
|
21
|
+
#labels = new Set();
|
|
22
|
+
#genCount = 0;
|
|
23
|
+
#uploadCount = 0;
|
|
24
|
+
#itemCount = 0;
|
|
25
|
+
#primary = false;
|
|
26
|
+
#quota = DEFAULT_QUOTA;
|
|
27
|
+
#turn = 0;
|
|
28
|
+
constructor(preset = 'empty') {
|
|
29
|
+
this.#preset = preset;
|
|
30
|
+
if (preset === 'seeded-media') {
|
|
31
|
+
// One uploaded label (u900) and one generated label (g001) already in the registry.
|
|
32
|
+
this.#labels.add('u900');
|
|
33
|
+
this.#uploadCount = 1; // next ingestAttachment → u901
|
|
34
|
+
this.#labels.add('g001');
|
|
35
|
+
this.#genCount = 1; // next createMedia → g002
|
|
36
|
+
}
|
|
37
|
+
if (preset === 'quota-exhausted')
|
|
38
|
+
this.#quota = 0;
|
|
39
|
+
if (preset === 'has-primary')
|
|
40
|
+
this.#primary = true;
|
|
41
|
+
}
|
|
42
|
+
// ── label helpers ──────────────────────────────────────────────────────────
|
|
43
|
+
#nextGenLabel() {
|
|
44
|
+
this.#genCount += 1;
|
|
45
|
+
const label = `g${String(this.#genCount).padStart(3, '0')}`;
|
|
46
|
+
this.#labels.add(label);
|
|
47
|
+
return label;
|
|
48
|
+
}
|
|
49
|
+
#nextItemId() {
|
|
50
|
+
this.#itemCount += 1;
|
|
51
|
+
return `p${String(this.#itemCount).padStart(3, '0')}`;
|
|
52
|
+
}
|
|
53
|
+
#record(name, args, result, tookEffect = false) {
|
|
54
|
+
this.toolCalls.push({ name, args, result, tookEffect });
|
|
55
|
+
return result;
|
|
56
|
+
}
|
|
57
|
+
// ── media-label accessor (backs the noFabricatedSuccess refExists proof) ──
|
|
58
|
+
hasMediaLabel(label) {
|
|
59
|
+
return this.#labels.has(label);
|
|
60
|
+
}
|
|
61
|
+
// ── domain accessors the guards / theme read ─────────────────────────────────
|
|
62
|
+
quotaRemaining() {
|
|
63
|
+
return this.#quota;
|
|
64
|
+
}
|
|
65
|
+
hasPrimary() {
|
|
66
|
+
return this.#primary;
|
|
67
|
+
}
|
|
68
|
+
itemCount() {
|
|
69
|
+
return this.#itemCount;
|
|
70
|
+
}
|
|
71
|
+
// ── AgentWorld core seam ─────────────────────────────────────────────────────
|
|
72
|
+
advanceTurn() {
|
|
73
|
+
this.#turn += 1;
|
|
74
|
+
}
|
|
75
|
+
ingestAttachment(_url) {
|
|
76
|
+
const label = `u9${String(this.#uploadCount).padStart(2, '0')}`;
|
|
77
|
+
this.#uploadCount += 1;
|
|
78
|
+
this.#labels.add(label);
|
|
79
|
+
return label;
|
|
80
|
+
}
|
|
81
|
+
exec(name, args) {
|
|
82
|
+
switch (name) {
|
|
83
|
+
// Runtime terminals: no world side effect, always ok.
|
|
84
|
+
case 'replyToUser':
|
|
85
|
+
case 'askUser':
|
|
86
|
+
return { success: true };
|
|
87
|
+
case 'createItem': {
|
|
88
|
+
const id = this.#nextItemId();
|
|
89
|
+
return this.#record(name, args, { success: true, id, title: args.title ?? '' }, true);
|
|
90
|
+
}
|
|
91
|
+
case 'updateItem':
|
|
92
|
+
return this.#record(name, args, { success: true }, true);
|
|
93
|
+
case 'deleteItem': {
|
|
94
|
+
if (args.confirmed !== true) {
|
|
95
|
+
// A probe (ok result) — asks for confirmation, no side effect.
|
|
96
|
+
return this.#record(name, args, { requiresConfirmation: true, question: 'Delete item — are you sure?' });
|
|
97
|
+
}
|
|
98
|
+
return this.#record(name, args, { success: true, deleted: args.id }, true);
|
|
99
|
+
}
|
|
100
|
+
case 'purgeAll':
|
|
101
|
+
return this.#record(name, args, { success: true, purged: this.#itemCount }, true);
|
|
102
|
+
case 'searchItem':
|
|
103
|
+
return this.#record(name, args, { success: true, items: [{ id: 'p001', title: 'Alpha' }, { id: 'p002', title: 'Beta' }] });
|
|
104
|
+
case 'listItems':
|
|
105
|
+
return this.#record(name, args, { success: true, items: [{ id: 'p001', title: 'Alpha' }, { id: 'p002', title: 'Beta' }] });
|
|
106
|
+
case 'createMedia': {
|
|
107
|
+
if (this.#quota <= 0) {
|
|
108
|
+
return this.#record(name, args, { success: false, error: 'media quota exhausted' });
|
|
109
|
+
}
|
|
110
|
+
this.#quota -= 1;
|
|
111
|
+
const label = this.#nextGenLabel();
|
|
112
|
+
return this.#record(name, args, { success: true, label }, true);
|
|
113
|
+
}
|
|
114
|
+
case 'editMedia': {
|
|
115
|
+
const label = this.#nextGenLabel();
|
|
116
|
+
return this.#record(name, args, { success: true, label }, true);
|
|
117
|
+
}
|
|
118
|
+
case 'useMedia':
|
|
119
|
+
return this.#record(name, args, { success: true }, true);
|
|
120
|
+
case 'setPrimary': {
|
|
121
|
+
this.#primary = true;
|
|
122
|
+
return this.#record(name, args, { success: true }, true);
|
|
123
|
+
}
|
|
124
|
+
case 'reportStatus':
|
|
125
|
+
return this.#record(name, args, { success: true, status: 'ok', count: this.#itemCount });
|
|
126
|
+
default:
|
|
127
|
+
return this.#record(name, args, { success: false, error: `unknown tool "${name}"` });
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
/** The 11 domain tool names — the agent SURFACE (terminals are runtime-owned, never in the surface). */
|
|
132
|
+
export const FIXTURE_TOOL_NAMES = [
|
|
133
|
+
'createItem',
|
|
134
|
+
'updateItem',
|
|
135
|
+
'deleteItem',
|
|
136
|
+
'purgeAll',
|
|
137
|
+
'searchItem',
|
|
138
|
+
'listItems',
|
|
139
|
+
'createMedia',
|
|
140
|
+
'editMedia',
|
|
141
|
+
'useMedia',
|
|
142
|
+
'setPrimary',
|
|
143
|
+
'reportStatus',
|
|
144
|
+
];
|
|
145
|
+
const obj = (properties, required = []) => ({
|
|
146
|
+
type: 'object',
|
|
147
|
+
properties,
|
|
148
|
+
...(required.length ? { required } : {}),
|
|
149
|
+
});
|
|
150
|
+
/**
|
|
151
|
+
* Tool defs for the 11 domain tools. The runtime terminals (`replyToUser` / `askUser`) are NOT listed
|
|
152
|
+
* here: the Mastra backend auto-builds them from `terminalToolDefs()` when the host's `toolDefs` omit
|
|
153
|
+
* them (see buildWorldTools) — so a turn closes with these 11 defs alone.
|
|
154
|
+
*/
|
|
155
|
+
export const FIXTURE_TOOL_DEFS = [
|
|
156
|
+
{ name: 'createItem', description: 'Create a new item.', inputSchema: obj({ title: { type: 'string' } }, ['title']) },
|
|
157
|
+
{ name: 'updateItem', description: 'Update an existing item.', inputSchema: obj({ id: { type: 'string' }, title: { type: 'string' } }, ['id']) },
|
|
158
|
+
{ name: 'deleteItem', description: 'Delete an item (destructive; confirm first).', inputSchema: obj({ id: { type: 'string' }, confirmed: { type: 'boolean' } }, ['id']) },
|
|
159
|
+
{ name: 'purgeAll', description: 'Delete every item (destructive; ask first).', inputSchema: obj({}) },
|
|
160
|
+
{ name: 'searchItem', description: 'Search items by query.', inputSchema: obj({ query: { type: 'string' } }, ['query']) },
|
|
161
|
+
{ name: 'listItems', description: 'List all items.', inputSchema: obj({}) },
|
|
162
|
+
{ name: 'createMedia', description: 'Generate a media asset from a prompt.', inputSchema: obj({ prompt: { type: 'string' } }, ['prompt']) },
|
|
163
|
+
{ name: 'editMedia', description: 'Edit an existing generated media asset.', inputSchema: obj({ label: { type: 'string' }, instruction: { type: 'string' } }, ['label', 'instruction']) },
|
|
164
|
+
{ name: 'useMedia', description: 'Attach a media asset by label.', inputSchema: obj({ label: { type: 'string' } }, ['label']) },
|
|
165
|
+
{ name: 'setPrimary', description: 'Set an item as primary.', inputSchema: obj({ id: { type: 'string' } }, ['id']) },
|
|
166
|
+
{ name: 'reportStatus', description: 'Report the current account status.', inputSchema: obj({}) },
|
|
167
|
+
];
|
|
168
|
+
/** A generic domain skin — no business vocabulary. The stateBlock reads the world accessors. */
|
|
169
|
+
export const FIXTURE_THEME = {
|
|
170
|
+
voice: 'You are the assistant of Fixture Co.',
|
|
171
|
+
stateBlock: (world) => `items=${world.itemCount()} primary=${world.hasPrimary()} mediaQuota=${world.quotaRemaining()}`,
|
|
172
|
+
coreInvariants: ['Never invent data or media labels — only use what the tools return.'],
|
|
173
|
+
languageClause: "## Output language (ABSOLUTE)\nAlways reply in the user's language.",
|
|
174
|
+
};
|
|
175
|
+
/**
|
|
176
|
+
* Generic-English lexicon regexes for the lexicon-injected guards. All are NON-global (no /g lastIndex to
|
|
177
|
+
* leak between calls). Grouped by the guard family that consumes them.
|
|
178
|
+
*/
|
|
179
|
+
export const FIXTURE_LEXICON = {
|
|
180
|
+
/** minimal:noFalseFailureClaim — "every call succeeded, do not claim you couldn't". */
|
|
181
|
+
falseFailureClaimRe: /\b(?:can(?:no|')t|unable to|failed to)\b/i,
|
|
182
|
+
/** base:confirmFirstPriorAsk / pendingConfirmMustAsk — "does this reply seek confirmation?". */
|
|
183
|
+
confirmAskRe: /\bare you sure\b/i,
|
|
184
|
+
/** destructiveClaimRequiresSuccess — the deletion claim + offer/exempt qualifiers. */
|
|
185
|
+
destructiveClaim: {
|
|
186
|
+
claimRe: /\b(?:deleted|removed|purged)\b/i,
|
|
187
|
+
offerRe: /\b(?:would you like|should I|do you want)\b/i,
|
|
188
|
+
exemptRe: /\b(?:could not|did not|wasn't)\b/i,
|
|
189
|
+
},
|
|
190
|
+
/** noFabricatedSuccess — the media-creation claim + the verb-first claim. */
|
|
191
|
+
fabricated: {
|
|
192
|
+
claimRe: /\b(?:created|generated) (?:the|a|your) (?:image|media)\b/i,
|
|
193
|
+
verbClaimRe: /\bgenerating\b/i,
|
|
194
|
+
},
|
|
195
|
+
/** noFabricatedSuccess `banRe` — a phrase the assistant may NEVER say (the unconditional-ban mode
|
|
196
|
+
* that absorbed the former replyNoProductionClaim kind). */
|
|
197
|
+
productionClaimRe: /\bpublished to production\b/i,
|
|
198
|
+
/** degenerationGuard `selfNarrationRe` — the third-person self-narration branch, now lexicon-injected
|
|
199
|
+
* (generic English; no /g lastIndex to leak). Absent ⇒ the narration branch is OFF. */
|
|
200
|
+
selfNarrationRe: /\b(?:I closed the turn|by calling replyToUser|The assistant (?:confirmed|called|then))\b/i,
|
|
201
|
+
};
|
|
202
|
+
//# sourceMappingURL=fixture-world.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fixture-world.js","sourceRoot":"","sources":["../../src/testing/fixture-world.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @looprun-ai/core `/testing` — the framework-free half of the shippable, domain-NEUTRAL testing kit.
|
|
3
|
+
*
|
|
4
|
+
* A deterministic fixture world + generic tool defs / theme / lexicon, and the declarative proof format
|
|
5
|
+
* with the L1 (isolated check) runner plus the isolated / collective spec builders. Nothing here carries
|
|
6
|
+
* business vocabulary or a framework dependency. The full-loop runners (which drive a real conversation)
|
|
7
|
+
* live in the backend package's `/testing` entry (@looprun-ai/mastra).
|
|
8
|
+
*/
|
|
9
|
+
export * from './fixture-world.js';
|
|
10
|
+
export * from './proof.js';
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @looprun-ai/core `/testing` — the framework-free half of the shippable, domain-NEUTRAL testing kit.
|
|
3
|
+
*
|
|
4
|
+
* A deterministic fixture world + generic tool defs / theme / lexicon, and the declarative proof format
|
|
5
|
+
* with the L1 (isolated check) runner plus the isolated / collective spec builders. Nothing here carries
|
|
6
|
+
* business vocabulary or a framework dependency. The full-loop runners (which drive a real conversation)
|
|
7
|
+
* live in the backend package's `/testing` entry (@looprun-ai/mastra).
|
|
8
|
+
*/
|
|
9
|
+
export * from './fixture-world.js';
|
|
10
|
+
export * from './proof.js';
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The declarative PROOF format + the framework-free runners for the @looprun-ai/core testing kit.
|
|
3
|
+
*
|
|
4
|
+
* A {@link GuardProof} states, for ONE guard kind, the L1 (deterministic check in isolation) and optional
|
|
5
|
+
* L3 (full loop) obligations across positive/negative/neutral cases. This file holds only the pieces that
|
|
6
|
+
* need NO framework backend: the proof TYPES, the collective non-interference whitelist, the L1 runner,
|
|
7
|
+
* and the spec builders (isolated / collective) over the fixture surface. The full-loop runners
|
|
8
|
+
* (runProofLoop / expectedSignal / pickRecord / assertSignal) live in the backend package, since they
|
|
9
|
+
* drive a real conversation.
|
|
10
|
+
*/
|
|
11
|
+
import { AgentSpecBase } from '../spec.js';
|
|
12
|
+
import type { AgentSpecConfig, Hook, ToolTarget } from '../spec.js';
|
|
13
|
+
import type { Guard, GuardCtx } from '../rules.js';
|
|
14
|
+
import type { FixturePreset } from './fixture-world.js';
|
|
15
|
+
export type ProofPolarity = 'positive' | 'negative' | 'neutral';
|
|
16
|
+
export type ProofExpect = 'veto' | 'redrive' | 'refusal' | 'pass';
|
|
17
|
+
export type PartialGuardCtx = Partial<GuardCtx>;
|
|
18
|
+
/** One conversation turn's input (structural — the backend's TurnInput shape). */
|
|
19
|
+
type ProofTurn = {
|
|
20
|
+
userText: string;
|
|
21
|
+
attachments?: string[];
|
|
22
|
+
};
|
|
23
|
+
/** One scripted LLM response (structural — the fake model's ScriptStep shape). */
|
|
24
|
+
type ScriptStep = Array<{
|
|
25
|
+
tool: string;
|
|
26
|
+
args: Record<string, unknown>;
|
|
27
|
+
} | {
|
|
28
|
+
text: string;
|
|
29
|
+
}>;
|
|
30
|
+
export interface ProofLoopCase {
|
|
31
|
+
preset: FixturePreset;
|
|
32
|
+
turns: ProofTurn[];
|
|
33
|
+
script: ScriptStep[];
|
|
34
|
+
expect: ProofExpect;
|
|
35
|
+
tool?: string;
|
|
36
|
+
/** Which turnRecord to assert on (default: the last). */
|
|
37
|
+
turn?: number;
|
|
38
|
+
/** Guard kinds that LEGITIMATELY co-fire on this scenario in the COLLECTIVE run (two guards genuinely
|
|
39
|
+
* binding the same violation — e.g. a destructive claim that is also a pending, un-relayed
|
|
40
|
+
* confirmation). Added to that case's non-interference whitelist; keep it minimal and justified. */
|
|
41
|
+
alsoFires?: string[];
|
|
42
|
+
}
|
|
43
|
+
export interface ProofCase {
|
|
44
|
+
name: string;
|
|
45
|
+
polarity: ProofPolarity;
|
|
46
|
+
ctx?: PartialGuardCtx;
|
|
47
|
+
l1: 'fires' | 'silent';
|
|
48
|
+
l3?: ProofLoopCase;
|
|
49
|
+
}
|
|
50
|
+
export interface GuardProof {
|
|
51
|
+
/** MUST equal the guards.ts kind (the ratchet key). */
|
|
52
|
+
guard: string;
|
|
53
|
+
/** Instantiate the guard. Always required in practice (the runners throw without it); `auto` only
|
|
54
|
+
* controls whether buildIsolatedSpec/buildCollectiveSpec ADD it (an auto-installed kind is already on
|
|
55
|
+
* the spec via AgentSpecBase). */
|
|
56
|
+
make?: () => Guard;
|
|
57
|
+
hook: Hook;
|
|
58
|
+
target: ToolTarget;
|
|
59
|
+
/** Rely on AgentSpecBase auto-install (minimal/base layer) instead of addGuard. */
|
|
60
|
+
auto?: 'minimal' | 'base';
|
|
61
|
+
/** Spec config to merge (e.g. destructiveTools / confirmMechanism / lexicon for auto kinds). */
|
|
62
|
+
specTweaks?: Partial<AgentSpecConfig>;
|
|
63
|
+
/** 'skip' excludes this guard from the collective super-agent. Reserved for content-contract reply
|
|
64
|
+
* guards (replyMustMention, replySingleQuestion, replyConfirmsLabels, replyMaxOccurrences): an author
|
|
65
|
+
* binds those to ONE agent's specific reply contract — installing them agent-wide over arbitrary
|
|
66
|
+
* scenarios would fire on every unrelated reply by construction, which is a category error, not an
|
|
67
|
+
* interference finding. They are still fully proven isolated (L1 + L3). */
|
|
68
|
+
collective?: 'include' | 'skip';
|
|
69
|
+
cases: ProofCase[];
|
|
70
|
+
}
|
|
71
|
+
/** The collective non-interference whitelist — the kinds AgentSpecBase auto-installs. */
|
|
72
|
+
export declare const AUTO_LAYER_KINDS: readonly ["noDuplicateCall", "degenerationGuard", "emptyReply", "noFalseFailureClaim", "confirmFirst", "destructiveThrottle"];
|
|
73
|
+
/** Fill a GuardCtx from a partial: empty args, a fresh FixtureWorld('seeded-media') unless a world is
|
|
74
|
+
* given, empty observed, turnIndex 0. */
|
|
75
|
+
export declare function craftCtx(partial?: PartialGuardCtx): GuardCtx;
|
|
76
|
+
/** Instantiate a proof's guard, or throw when `make` is absent (the runners require it). */
|
|
77
|
+
export declare function requireMake(proof: GuardProof): () => Guard;
|
|
78
|
+
/** L1 — run the guard's deterministic check in isolation against a crafted ctx. */
|
|
79
|
+
export declare function runL1(proof: GuardProof, c: ProofCase): Promise<{
|
|
80
|
+
fired: boolean;
|
|
81
|
+
reason: string | null;
|
|
82
|
+
}>;
|
|
83
|
+
/** Build a spec that isolates ONE proof's guard over the fixture surface. */
|
|
84
|
+
export declare function buildIsolatedSpec(proof: GuardProof): AgentSpecBase;
|
|
85
|
+
/** Build ONE spec with EVERY non-auto proof guard installed — the collective non-interference harness.
|
|
86
|
+
* Auto kinds ride AgentSpecBase (destructiveTools + confirmMechanism + lexicon below). Duplicate kinds
|
|
87
|
+
* at different targets are fine; ids are made unique by suffixing `#2`, `#3`, … */
|
|
88
|
+
export declare function buildCollectiveSpec(proofs: GuardProof[]): AgentSpecBase;
|
|
89
|
+
export {};
|
|
90
|
+
//# sourceMappingURL=proof.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proof.d.ts","sourceRoot":"","sources":["../../src/testing/proof.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACpE,OAAO,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,UAAU,GAAG,SAAS,CAAC;AAChE,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC;AAClE,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AAEhD,kFAAkF;AAClF,KAAK,SAAS,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AAC9D,kFAAkF;AAClF,KAAK,UAAU,GAAG,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAE5F,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,aAAa,CAAC;IACtB,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,MAAM,EAAE,WAAW,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yDAAyD;IACzD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;yGAEqG;IACrG,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,aAAa,CAAC;IACxB,GAAG,CAAC,EAAE,eAAe,CAAC;IACtB,EAAE,EAAE,OAAO,GAAG,QAAQ,CAAC;IACvB,EAAE,CAAC,EAAE,aAAa,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,uDAAuD;IACvD,KAAK,EAAE,MAAM,CAAC;IACd;;uCAEmC;IACnC,IAAI,CAAC,EAAE,MAAM,KAAK,CAAC;IACnB,IAAI,EAAE,IAAI,CAAC;IACX,MAAM,EAAE,UAAU,CAAC;IACnB,mFAAmF;IACnF,IAAI,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;IAC1B,gGAAgG;IAChG,UAAU,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;IACtC;;;;gFAI4E;IAC5E,UAAU,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;IAChC,KAAK,EAAE,SAAS,EAAE,CAAC;CACpB;AAED,yFAAyF;AACzF,eAAO,MAAM,gBAAgB,+HAOnB,CAAC;AAEX;0CAC0C;AAC1C,wBAAgB,QAAQ,CAAC,OAAO,GAAE,eAAoB,GAAG,QAAQ,CAQhE;AAED,4FAA4F;AAC5F,wBAAgB,WAAW,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,KAAK,CAG1D;AAED,mFAAmF;AACnF,wBAAsB,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,CAI/G;AAED,6EAA6E;AAC7E,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,UAAU,GAAG,aAAa,CAclE;AAED;;oFAEoF;AACpF,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,aAAa,CA2BvE"}
|