@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.
@@ -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,CAIpG"}
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"}
@@ -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":"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"}
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;
@@ -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":"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"}
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"}