@glubean/sdk 0.5.1 → 0.8.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/contract-artifacts.d.ts +39 -21
- package/dist/contract-artifacts.d.ts.map +1 -1
- package/dist/contract-artifacts.js +80 -24
- package/dist/contract-artifacts.js.map +1 -1
- package/dist/contract-core.d.ts +10 -21
- package/dist/contract-core.d.ts.map +1 -1
- package/dist/contract-core.js +26 -812
- package/dist/contract-core.js.map +1 -1
- package/dist/contract-http/adapter.d.ts +13 -0
- package/dist/contract-http/adapter.d.ts.map +1 -1
- package/dist/contract-http/adapter.js +191 -23
- package/dist/contract-http/adapter.js.map +1 -1
- package/dist/contract-http/factory.d.ts +2 -2
- package/dist/contract-http/factory.d.ts.map +1 -1
- package/dist/contract-http/factory.js +5 -0
- package/dist/contract-http/factory.js.map +1 -1
- package/dist/contract-http/inbound-match.d.ts +47 -0
- package/dist/contract-http/inbound-match.d.ts.map +1 -0
- package/dist/contract-http/inbound-match.js +136 -0
- package/dist/contract-http/inbound-match.js.map +1 -0
- package/dist/contract-http/inbound-verify.d.ts +46 -0
- package/dist/contract-http/inbound-verify.d.ts.map +1 -0
- package/dist/contract-http/inbound-verify.js +101 -0
- package/dist/contract-http/inbound-verify.js.map +1 -0
- package/dist/contract-http/inbound.d.ts +45 -0
- package/dist/contract-http/inbound.d.ts.map +1 -0
- package/dist/contract-http/inbound.js +89 -0
- package/dist/contract-http/inbound.js.map +1 -0
- package/dist/contract-http/index.d.ts +5 -0
- package/dist/contract-http/index.d.ts.map +1 -1
- package/dist/contract-http/index.js +3 -0
- package/dist/contract-http/index.js.map +1 -1
- package/dist/contract-http/openapi.d.ts +0 -7
- package/dist/contract-http/openapi.d.ts.map +1 -1
- package/dist/contract-http/openapi.js +20 -14
- package/dist/contract-http/openapi.js.map +1 -1
- package/dist/contract-http/types.d.ts +106 -2
- package/dist/contract-http/types.d.ts.map +1 -1
- package/dist/contract-http/types.js +33 -0
- package/dist/contract-http/types.js.map +1 -1
- package/dist/contract-types.d.ts +148 -446
- package/dist/contract-types.d.ts.map +1 -1
- package/dist/data-path.d.ts.map +1 -1
- package/dist/data-path.js +10 -2
- package/dist/data-path.js.map +1 -1
- package/dist/index.d.ts +10 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -1
- package/dist/index.js.map +1 -1
- package/dist/internal.d.ts +7 -0
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +14 -0
- package/dist/internal.js.map +1 -1
- package/dist/load/artifact.d.ts +376 -0
- package/dist/load/artifact.d.ts.map +1 -0
- package/dist/load/artifact.js +14 -0
- package/dist/load/artifact.js.map +1 -0
- package/dist/load/builder.d.ts +80 -0
- package/dist/load/builder.d.ts.map +1 -0
- package/dist/load/builder.js +262 -0
- package/dist/load/builder.js.map +1 -0
- package/dist/load/context.d.ts +81 -0
- package/dist/load/context.d.ts.map +1 -0
- package/dist/load/context.js +2 -0
- package/dist/load/context.js.map +1 -0
- package/dist/load/duration.d.ts +9 -0
- package/dist/load/duration.d.ts.map +1 -0
- package/dist/load/duration.js +22 -0
- package/dist/load/duration.js.map +1 -0
- package/dist/load/events.d.ts +132 -0
- package/dist/load/events.d.ts.map +1 -0
- package/dist/load/events.js +2 -0
- package/dist/load/events.js.map +1 -0
- package/dist/load/feeder.d.ts +118 -0
- package/dist/load/feeder.d.ts.map +1 -0
- package/dist/load/feeder.js +170 -0
- package/dist/load/feeder.js.map +1 -0
- package/dist/load/index.d.ts +32 -0
- package/dist/load/index.d.ts.map +1 -0
- package/dist/load/index.js +7 -0
- package/dist/load/index.js.map +1 -0
- package/dist/load/progress.d.ts +56 -0
- package/dist/load/progress.d.ts.map +1 -0
- package/dist/load/progress.js +2 -0
- package/dist/load/progress.js.map +1 -0
- package/dist/load/projection.d.ts +36 -0
- package/dist/load/projection.d.ts.map +1 -0
- package/dist/load/projection.js +47 -0
- package/dist/load/projection.js.map +1 -0
- package/dist/load/runner.d.ts +201 -0
- package/dist/load/runner.d.ts.map +1 -0
- package/dist/load/runner.js +78 -0
- package/dist/load/runner.js.map +1 -0
- package/dist/load/scenario.d.ts +130 -0
- package/dist/load/scenario.d.ts.map +1 -0
- package/dist/load/scenario.js +9 -0
- package/dist/load/scenario.js.map +1 -0
- package/dist/load/step.d.ts +42 -0
- package/dist/load/step.d.ts.map +1 -0
- package/dist/load/step.js +2 -0
- package/dist/load/step.js.map +1 -0
- package/dist/{contract-flow-poll.d.ts → poll-primitives.d.ts} +8 -81
- package/dist/poll-primitives.d.ts.map +1 -0
- package/dist/{contract-flow-poll.js → poll-primitives.js} +10 -64
- package/dist/poll-primitives.js.map +1 -0
- package/dist/{contract-flow-condition.d.ts → predicates.d.ts} +34 -71
- package/dist/predicates.d.ts.map +1 -0
- package/dist/{contract-flow-condition.js → predicates.js} +86 -80
- package/dist/predicates.js.map +1 -0
- package/dist/test/builder.js +2 -2
- package/dist/test/builder.js.map +1 -1
- package/dist/test/utils.d.ts +7 -0
- package/dist/test/utils.d.ts.map +1 -1
- package/dist/test/utils.js +22 -17
- package/dist/test/utils.js.map +1 -1
- package/dist/types.d.ts +42 -14
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/workflow/builder.d.ts +386 -0
- package/dist/workflow/builder.d.ts.map +1 -0
- package/dist/workflow/builder.js +1150 -0
- package/dist/workflow/builder.js.map +1 -0
- package/dist/workflow/execute.d.ts +277 -0
- package/dist/workflow/execute.d.ts.map +1 -0
- package/dist/workflow/execute.js +1489 -0
- package/dist/workflow/execute.js.map +1 -0
- package/dist/workflow/index.d.ts +11 -0
- package/dist/workflow/index.d.ts.map +1 -0
- package/dist/workflow/index.js +15 -0
- package/dist/workflow/index.js.map +1 -0
- package/dist/workflow/project.d.ts +18 -0
- package/dist/workflow/project.d.ts.map +1 -0
- package/dist/workflow/project.js +321 -0
- package/dist/workflow/project.js.map +1 -0
- package/dist/workflow/retry.d.ts +13 -0
- package/dist/workflow/retry.d.ts.map +1 -0
- package/dist/workflow/retry.js +15 -0
- package/dist/workflow/retry.js.map +1 -0
- package/dist/workflow/types.d.ts +512 -0
- package/dist/workflow/types.d.ts.map +1 -0
- package/dist/workflow/types.js +2 -0
- package/dist/workflow/types.js.map +1 -0
- package/package.json +9 -2
- package/dist/contract-flow-condition.d.ts.map +0 -1
- package/dist/contract-flow-condition.js.map +0 -1
- package/dist/contract-flow-poll.d.ts.map +0 -1
- package/dist/contract-flow-poll.js.map +0 -1
- package/dist/contract-http/flow-helpers.d.ts +0 -12
- package/dist/contract-http/flow-helpers.d.ts.map +0 -1
- package/dist/contract-http/flow-helpers.js +0 -34
- package/dist/contract-http/flow-helpers.js.map +0 -1
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @module
|
|
2
|
+
* @module poll-primitives
|
|
3
3
|
*
|
|
4
|
-
* Bounded poll-until
|
|
4
|
+
* Bounded poll-until primitives — shared by the vNext `workflow().poll`
|
|
5
|
+
* executor, `test()` helpers, and (until D2 deletes it) the legacy
|
|
6
|
+
* `contract.flow()` loop. Renamed from `contract-flow-poll.ts` (Nv1-D1,
|
|
7
|
+
* 2026-06-13): the quarantine/budget/bounds machinery was never
|
|
8
|
+
* flow-specific. The legacy flow's poll step shapes that used to live here
|
|
9
|
+
* were deleted with the flow itself (Nv1-D2).
|
|
5
10
|
*
|
|
6
11
|
* A poll repeats ONE contract case until an exit predicate over the RESPONSE
|
|
7
12
|
* holds, BOUNDED by a total wall-clock deadline and/or a finite per-attempt
|
|
@@ -16,7 +21,6 @@
|
|
|
16
21
|
* `contract-core.ts` (it needs the shared committed-state cell).
|
|
17
22
|
*/
|
|
18
23
|
import { Expectation } from "./expect.js";
|
|
19
|
-
import { evalPredicate, extractPredicate, } from "./contract-flow-condition.js";
|
|
20
24
|
/** Backoff cap — mirrors the test() step retry-backoff ceiling. */
|
|
21
25
|
export const BACKOFF_CAP_MS = 30_000;
|
|
22
26
|
/** Default interval between attempts when `every` is omitted. */
|
|
@@ -130,36 +134,6 @@ export function raceBudget(promise, budgetMs, onTimeout) {
|
|
|
130
134
|
});
|
|
131
135
|
}
|
|
132
136
|
// =============================================================================
|
|
133
|
-
// Exit-predicate evaluation (three tiers)
|
|
134
|
-
// =============================================================================
|
|
135
|
-
function isOpaqueExit(p) {
|
|
136
|
-
return p.kind === "opaque";
|
|
137
|
-
}
|
|
138
|
-
/**
|
|
139
|
-
* Evaluate a poll exit predicate. L2 declarative reads the RESPONSE (`evalPredicate`
|
|
140
|
-
* with subject = response). Opaque tiers get `(ctx, res, state)`. Non-boolean
|
|
141
|
-
* results fail fast (mirrors condition Phase 6); a thrown error / `ctx.skip()`
|
|
142
|
-
* propagates to the caller.
|
|
143
|
-
*/
|
|
144
|
-
export async function evalPollExit(until, response, ctx, state) {
|
|
145
|
-
if (isOpaqueExit(until)) {
|
|
146
|
-
const out = until.fn(ctx, response, state);
|
|
147
|
-
if (until.sync && out && typeof out.then === "function") {
|
|
148
|
-
throw new Error("pollFn (L1) exit predicate must be synchronous — it returned a thenable. Use pollAsync for async/I-O exit predicates.");
|
|
149
|
-
}
|
|
150
|
-
const result = await out;
|
|
151
|
-
if (typeof result !== "boolean") {
|
|
152
|
-
throw new Error(`${until.sync ? "pollFn (L1)" : "pollAsync (L0)"} exit predicate must return a boolean; ` +
|
|
153
|
-
`got ${result === null ? "null" : typeof result}`);
|
|
154
|
-
}
|
|
155
|
-
return result;
|
|
156
|
-
}
|
|
157
|
-
// L2 declarative — predicate subject is the response.
|
|
158
|
-
return evalPredicate(until, response);
|
|
159
|
-
}
|
|
160
|
-
// =============================================================================
|
|
161
|
-
// Build-time bound validation
|
|
162
|
-
// =============================================================================
|
|
163
137
|
/**
|
|
164
138
|
* Validate poll bounds at construction. Two rules (both required), plus
|
|
165
139
|
* finiteness on every timing value (an `Infinity` bound would un-bound the loop):
|
|
@@ -190,34 +164,6 @@ export function validatePollBounds(bounds, stepLabel) {
|
|
|
190
164
|
`could block forever. Provide \`timeout\` (total wall-clock) or \`perAttemptTimeout\` (per-attempt budget).`);
|
|
191
165
|
}
|
|
192
166
|
}
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
* contract-call step), so the poll node carries data-flow edges like a step.
|
|
197
|
-
*/
|
|
198
|
-
export function extractPollStep(step, dryRun) {
|
|
199
|
-
const projection = step.contract._projection;
|
|
200
|
-
const { inputs, outputs } = dryRun(step);
|
|
201
|
-
const untilExtracted = isOpaqueExit(step.until)
|
|
202
|
-
? { kind: "opaque", strictness: step.until.sync ? "L1" : "L0", mayDoAsyncIO: !step.until.sync }
|
|
203
|
-
: extractPredicate(step.until);
|
|
204
|
-
return {
|
|
205
|
-
kind: "poll",
|
|
206
|
-
...(step.name ? { name: step.name } : {}),
|
|
207
|
-
contractId: projection.id,
|
|
208
|
-
caseKey: step.caseKey,
|
|
209
|
-
protocol: projection.protocol,
|
|
210
|
-
target: projection.target ?? "",
|
|
211
|
-
...(inputs && inputs.length ? { inputs } : {}),
|
|
212
|
-
...(outputs && outputs.length ? { outputs } : {}),
|
|
213
|
-
...(step.bindings?.accept ? { accept: step.bindings.accept } : {}),
|
|
214
|
-
until: untilExtracted,
|
|
215
|
-
...(step.message ? { message: step.message } : {}),
|
|
216
|
-
every: step.every ?? DEFAULT_EVERY_MS,
|
|
217
|
-
backoff: step.backoff ?? 1,
|
|
218
|
-
...(step.timeoutMs !== undefined ? { timeoutMs: step.timeoutMs } : {}),
|
|
219
|
-
...(step.perAttemptTimeoutMs !== undefined ? { perAttemptTimeoutMs: step.perAttemptTimeoutMs } : {}),
|
|
220
|
-
...(step.maxAttempts !== undefined ? { maxAttempts: step.maxAttempts } : {}),
|
|
221
|
-
};
|
|
222
|
-
}
|
|
223
|
-
//# sourceMappingURL=contract-flow-poll.js.map
|
|
167
|
+
// =============================================================================
|
|
168
|
+
// Projection (JSON-safe)
|
|
169
|
+
//# sourceMappingURL=poll-primitives.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"poll-primitives.js","sourceRoot":"","sources":["../src/poll-primitives.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Predicates — the shared declarative (L2) engine of the SDK.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* Renamed from `contract-flow-condition.ts` (Nv1-D1, 2026-06-13): this was
|
|
5
|
+
* never flow-specific — it is the predicate foundation consumed by the vNext
|
|
6
|
+
* `workflow()` builder (branch/switch/route `when`, poll `until`, check
|
|
7
|
+
* `expect[]`, inbound correlate paths) and by `test()` helpers. The legacy
|
|
8
|
+
* `contract.flow()` step shapes that used to live here were deleted with the
|
|
9
|
+
* flow itself (Nv1-D2).
|
|
6
10
|
*
|
|
7
11
|
* A predicate is built ONLY through `predicateScope(...)` (`when` / `all` / `any`
|
|
8
12
|
* / `not`) — never hand-authored — so every node is:
|
|
@@ -18,7 +22,6 @@
|
|
|
18
22
|
* surface, and the opaque (L1/L0) tiers land in later phases.
|
|
19
23
|
*/
|
|
20
24
|
import type { TestContext } from "./types.js";
|
|
21
|
-
import type { RuntimeFlowStep, ExtractedFlowStep } from "./contract-types.js";
|
|
22
25
|
/** JSON-safe scalar — the only thing a predicate may compare against. */
|
|
23
26
|
export type JsonScalar = string | number | boolean | null;
|
|
24
27
|
declare const PREDICATE_BRAND: unique symbol;
|
|
@@ -36,6 +39,16 @@ export type BranchPredicate<S = unknown> = {
|
|
|
36
39
|
readonly lens: (s: S) => unknown;
|
|
37
40
|
readonly path: readonly string[];
|
|
38
41
|
readonly value: JsonScalar;
|
|
42
|
+
readonly rhsPath?: undefined;
|
|
43
|
+
} | {
|
|
44
|
+
/** path-vs-path compare (phase4 §7 / addendum §2): the most common
|
|
45
|
+
* RELATIONAL assertion (`s.profileId == s.userId`). eq/ne only in v1. */
|
|
46
|
+
readonly kind: "compare";
|
|
47
|
+
readonly op: "eq" | "ne";
|
|
48
|
+
readonly lens: (s: S) => unknown;
|
|
49
|
+
readonly path: readonly string[];
|
|
50
|
+
readonly value?: undefined;
|
|
51
|
+
readonly rhsPath: readonly string[];
|
|
39
52
|
} | {
|
|
40
53
|
readonly kind: "in";
|
|
41
54
|
readonly lens: (s: S) => unknown;
|
|
@@ -73,6 +86,10 @@ export interface WhenClause<S, V> {
|
|
|
73
86
|
lt(value: [Exclude<V, null | undefined>] extends [number] ? number : never): BranchPredicate<S>;
|
|
74
87
|
lte(value: [Exclude<V, null | undefined>] extends [number] ? number : never): BranchPredicate<S>;
|
|
75
88
|
matches(pattern: [Exclude<V, null | undefined>] extends [string] ? string | RegExp : never): BranchPredicate<S>;
|
|
89
|
+
/** path-vs-path equality: compares this selection against ANOTHER state
|
|
90
|
+
* path (phase4 §7). The rhs lens passes the same P0 selector-source gate. */
|
|
91
|
+
eqPath(rhs: (s: S) => V): BranchPredicate<S>;
|
|
92
|
+
nePath(rhs: (s: S) => V): BranchPredicate<S>;
|
|
76
93
|
}
|
|
77
94
|
/** Scoped predicate builder; `S` flows from `condition`'s generic into each lens. */
|
|
78
95
|
export interface PredicateScope<S> {
|
|
@@ -104,11 +121,21 @@ export declare function assertSelectorSource(fn: (...args: any[]) => unknown): v
|
|
|
104
121
|
* projection-safe) and `=== NaN` never matches.
|
|
105
122
|
*/
|
|
106
123
|
export declare function assertSwitchCaseValues(values: readonly JsonScalar[]): void;
|
|
124
|
+
/**
|
|
125
|
+
* Gate + extract a pure selector lens to its frozen path. The single trust
|
|
126
|
+
* boundary every projected lens passes — predicates here, and the workflow
|
|
127
|
+
* inbound poll's `via`/`correlate` lenses (inbound-contract-design §9.3).
|
|
128
|
+
*/
|
|
129
|
+
export declare function selectorPath(lens: (s: any) => unknown): readonly string[];
|
|
107
130
|
/**
|
|
108
131
|
* Build a `PredicateScope<S>`. The runtime is untyped (`any`); the public typing
|
|
109
132
|
* comes from the `PredicateScope<S>` / `WhenClause<S, V>` interfaces it is cast to.
|
|
110
133
|
*/
|
|
111
134
|
export declare function predicateScope<S>(): PredicateScope<S>;
|
|
135
|
+
/** Safe path traversal: returns `undefined` if any intermediate is null/undefined.
|
|
136
|
+
* Shared with the inbound matcher (codex I3 R1: walking the EXTRACTED path can
|
|
137
|
+
* never throw, unlike calling a `e => e.data.id` lens on a shape-less body). */
|
|
138
|
+
export declare function resolvePath(state: unknown, path: readonly string[]): unknown;
|
|
112
139
|
/** Evaluate a declarative predicate against a concrete state. Pure, no I/O. */
|
|
113
140
|
export declare function evalPredicate<S>(pred: BranchPredicate<S>, state: S): boolean;
|
|
114
141
|
/**
|
|
@@ -128,51 +155,13 @@ export interface OpaquePredicate {
|
|
|
128
155
|
sync: boolean;
|
|
129
156
|
fn: (ctx: TestContext, s: any) => boolean | Promise<boolean>;
|
|
130
157
|
}
|
|
131
|
-
/** Unified runtime branch node. mode discriminates value-switch vs predicate-branch. */
|
|
132
|
-
export type RuntimeBranchStep = RuntimeValueSwitchStep | RuntimePredicateBranchStep;
|
|
133
|
-
export interface RuntimeValueSwitchStep {
|
|
134
|
-
kind: "branch";
|
|
135
|
-
mode: "value";
|
|
136
|
-
name?: string;
|
|
137
|
-
/**
|
|
138
|
-
* subject lens, normalized to `(ctx, s)` (flow wraps its `(s)=>V` as `(_ctx,s)=>lens(s)`).
|
|
139
|
-
* Evaluated exactly once. `path` present for flow (L2, strict-Proxy traced → safe
|
|
140
|
-
* traversal at runtime + decision-table projection); absent for test (arbitrary lens).
|
|
141
|
-
*/
|
|
142
|
-
subject: {
|
|
143
|
-
lens: (ctx: TestContext, s: any) => any;
|
|
144
|
-
path?: readonly string[];
|
|
145
|
-
};
|
|
146
|
-
cases: ReadonlyArray<{
|
|
147
|
-
value: JsonScalar;
|
|
148
|
-
steps: RuntimeFlowStep[];
|
|
149
|
-
}>;
|
|
150
|
-
default: RuntimeFlowStep[];
|
|
151
|
-
}
|
|
152
|
-
export interface RuntimePredicateBranchStep {
|
|
153
|
-
kind: "branch";
|
|
154
|
-
mode: "predicate";
|
|
155
|
-
name?: string;
|
|
156
|
-
cases: ReadonlyArray<{
|
|
157
|
-
message?: string;
|
|
158
|
-
predicate: BranchPredicate<any> | OpaquePredicate;
|
|
159
|
-
steps: RuntimeFlowStep[];
|
|
160
|
-
}>;
|
|
161
|
-
default: RuntimeFlowStep[];
|
|
162
|
-
}
|
|
163
|
-
/**
|
|
164
|
-
* Select the steps a branch takes against a concrete state (first-match → default).
|
|
165
|
-
* Always async (L0 opaque predicates may be async). For value-mode the subject lens
|
|
166
|
-
* is evaluated exactly once: flow uses the captured `path` (safe traversal, no throw
|
|
167
|
-
* on missing intermediates), test calls the lens.
|
|
168
|
-
*/
|
|
169
|
-
export declare function selectBranchSteps(step: RuntimeBranchStep, state: unknown, ctx: TestContext): Promise<RuntimeFlowStep[]>;
|
|
170
158
|
/** JSON-safe predicate shape for a predicate-mode case. */
|
|
171
159
|
export type ExtractedPredicate = {
|
|
172
160
|
kind: "compare";
|
|
173
161
|
op: string;
|
|
174
162
|
path: string[];
|
|
175
|
-
value
|
|
163
|
+
value?: JsonScalar;
|
|
164
|
+
rhsPath?: string[];
|
|
176
165
|
} | {
|
|
177
166
|
kind: "in";
|
|
178
167
|
path: string[];
|
|
@@ -197,33 +186,7 @@ export type ExtractedPredicate = {
|
|
|
197
186
|
strictness: "L1" | "L0";
|
|
198
187
|
mayDoAsyncIO: boolean;
|
|
199
188
|
};
|
|
200
|
-
export type ExtractedBranchStep = {
|
|
201
|
-
kind: "branch";
|
|
202
|
-
mode: "value";
|
|
203
|
-
name?: string;
|
|
204
|
-
subjectPath: string[];
|
|
205
|
-
cases: Array<{
|
|
206
|
-
value: JsonScalar;
|
|
207
|
-
steps: ExtractedFlowStep[];
|
|
208
|
-
}>;
|
|
209
|
-
default: ExtractedFlowStep[];
|
|
210
|
-
} | {
|
|
211
|
-
kind: "branch";
|
|
212
|
-
mode: "predicate";
|
|
213
|
-
name?: string;
|
|
214
|
-
cases: Array<{
|
|
215
|
-
message?: string;
|
|
216
|
-
predicate: ExtractedPredicate;
|
|
217
|
-
steps: ExtractedFlowStep[];
|
|
218
|
-
}>;
|
|
219
|
-
default: ExtractedFlowStep[];
|
|
220
|
-
};
|
|
221
189
|
/** Map a runtime predicate (path already captured at construction) to JSON-safe form. */
|
|
222
190
|
export declare function extractPredicate(pred: BranchPredicate<any> | OpaquePredicate): ExtractedPredicate;
|
|
223
|
-
/**
|
|
224
|
-
* Normalize a runtime branch step to JSON-safe form. `recurse` normalizes a
|
|
225
|
-
* sub-step list (provided by normalizeFlow so nested branches recurse).
|
|
226
|
-
*/
|
|
227
|
-
export declare function extractBranchStep(step: RuntimeBranchStep, recurse: (steps: RuntimeFlowStep[]) => ExtractedFlowStep[]): ExtractedBranchStep;
|
|
228
191
|
export {};
|
|
229
|
-
//# sourceMappingURL=
|
|
192
|
+
//# sourceMappingURL=predicates.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"predicates.d.ts","sourceRoot":"","sources":["../src/predicates.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Predicates — the shared declarative (L2) engine of the SDK.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* Renamed from `contract-flow-condition.ts` (Nv1-D1, 2026-06-13): this was
|
|
5
|
+
* never flow-specific — it is the predicate foundation consumed by the vNext
|
|
6
|
+
* `workflow()` builder (branch/switch/route `when`, poll `until`, check
|
|
7
|
+
* `expect[]`, inbound correlate paths) and by `test()` helpers. The legacy
|
|
8
|
+
* `contract.flow()` step shapes that used to live here were deleted with the
|
|
9
|
+
* flow itself (Nv1-D2).
|
|
6
10
|
*
|
|
7
11
|
* A predicate is built ONLY through `predicateScope(...)` (`when` / `all` / `any`
|
|
8
12
|
* / `not`) — never hand-authored — so every node is:
|
|
@@ -37,7 +41,9 @@ const PREDICATE_BRAND = Symbol("glubean.branch-predicate");
|
|
|
37
41
|
* a future P1 enrichment; this string check is the P0 gate.)
|
|
38
42
|
*/
|
|
39
43
|
export function assertSelectorSource(fn) {
|
|
40
|
-
|
|
44
|
+
// Function.prototype.toString.call — an own `toString` on the lens object
|
|
45
|
+
// must not be able to spoof the source the gate inspects (S2.18 consult).
|
|
46
|
+
const src = Function.prototype.toString.call(fn).trim();
|
|
41
47
|
const arrowAt = src.indexOf("=>");
|
|
42
48
|
if (arrowAt < 0) {
|
|
43
49
|
throw new LensPurityError("lens", "predicate lens must be an arrow function");
|
|
@@ -139,7 +145,12 @@ function isBrandedPredicate(node) {
|
|
|
139
145
|
node !== null &&
|
|
140
146
|
node[PREDICATE_BRAND] === true);
|
|
141
147
|
}
|
|
142
|
-
|
|
148
|
+
/**
|
|
149
|
+
* Gate + extract a pure selector lens to its frozen path. The single trust
|
|
150
|
+
* boundary every projected lens passes — predicates here, and the workflow
|
|
151
|
+
* inbound poll's `via`/`correlate` lenses (inbound-contract-design §9.3).
|
|
152
|
+
*/
|
|
153
|
+
export function selectorPath(lens) {
|
|
143
154
|
assertSelectorSource(lens); // P0 source gate (ternary / free-var / calls)
|
|
144
155
|
return Object.freeze(extractSelectorPath(lens)); // strict-Proxy path + Proxy purity
|
|
145
156
|
}
|
|
@@ -184,8 +195,19 @@ export function predicateScope() {
|
|
|
184
195
|
...(re.flags ? { flags: re.flags } : {}),
|
|
185
196
|
});
|
|
186
197
|
},
|
|
198
|
+
eqPath: (rhs) => brandFreeze({ kind: "compare", op: "eq", lens, path, rhsPath: selectorPath(rhs) }),
|
|
199
|
+
nePath: (rhs) => brandFreeze({ kind: "compare", op: "ne", lens, path, rhsPath: selectorPath(rhs) }),
|
|
187
200
|
};
|
|
188
201
|
};
|
|
202
|
+
const treeHasRhsPath = (pred) => {
|
|
203
|
+
if (pred.kind === "compare")
|
|
204
|
+
return pred.rhsPath !== undefined;
|
|
205
|
+
if (pred.kind === "and" || pred.kind === "or")
|
|
206
|
+
return pred.clauses.some(treeHasRhsPath);
|
|
207
|
+
if (pred.kind === "not")
|
|
208
|
+
return treeHasRhsPath(pred.clause);
|
|
209
|
+
return false;
|
|
210
|
+
};
|
|
189
211
|
const combine = (kind, clauses) => {
|
|
190
212
|
if (clauses.length === 0) {
|
|
191
213
|
throw new LensPurityError(`predicate.${kind}`, `${kind}() needs at least one clause`);
|
|
@@ -196,12 +218,23 @@ export function predicateScope() {
|
|
|
196
218
|
when: when,
|
|
197
219
|
all: (...clauses) => combine("and", clauses),
|
|
198
220
|
any: (...clauses) => combine("or", clauses),
|
|
199
|
-
not: (clause) =>
|
|
221
|
+
not: (clause) => {
|
|
222
|
+
// path-vs-path under NOT would invert the missing-operand-never-matches
|
|
223
|
+
// rule (`not(eqPath)` passes against {} — codex S2.17 R3 P2). Binary
|
|
224
|
+
// semantics can't carry "missing" through negation; both directions
|
|
225
|
+
// are directly expressible (eqPath / nePath), so reject the negation.
|
|
226
|
+
if (treeHasRhsPath(clause)) {
|
|
227
|
+
throw new LensPurityError("predicate.not", "path-vs-path compares cannot be negated — use nePath/eqPath to express the direction directly");
|
|
228
|
+
}
|
|
229
|
+
return brandFreeze({ kind: "not", clause });
|
|
230
|
+
},
|
|
200
231
|
};
|
|
201
232
|
}
|
|
202
233
|
// --- runtime evaluation ------------------------------------------------------
|
|
203
|
-
/** Safe path traversal: returns `undefined` if any intermediate is null/undefined.
|
|
204
|
-
|
|
234
|
+
/** Safe path traversal: returns `undefined` if any intermediate is null/undefined.
|
|
235
|
+
* Shared with the inbound matcher (codex I3 R1: walking the EXTRACTED path can
|
|
236
|
+
* never throw, unlike calling a `e => e.data.id` lens on a shape-less body). */
|
|
237
|
+
export function resolvePath(state, path) {
|
|
205
238
|
let cur = state;
|
|
206
239
|
for (const seg of path) {
|
|
207
240
|
if (cur === null || cur === undefined)
|
|
@@ -215,6 +248,17 @@ export function evalPredicate(pred, state) {
|
|
|
215
248
|
switch (pred.kind) {
|
|
216
249
|
case "compare": {
|
|
217
250
|
const actual = resolvePath(state, pred.path);
|
|
251
|
+
if (pred.rhsPath !== undefined) {
|
|
252
|
+
const rhs = resolvePath(state, pred.rhsPath);
|
|
253
|
+
// A MISSING operand never matches (codex S2.17 R1 P2): undefined ===
|
|
254
|
+
// undefined would let `profileId eqPath userId` pass against {} —
|
|
255
|
+
// scalar eq can't even author undefined. Authors asserting absence
|
|
256
|
+
// use absent() explicitly.
|
|
257
|
+
if (actual === undefined || rhs === undefined)
|
|
258
|
+
return false;
|
|
259
|
+
// path-vs-path is eq/ne only in v1; strict === like scalar compare
|
|
260
|
+
return pred.op === "eq" ? actual === rhs : actual !== rhs;
|
|
261
|
+
}
|
|
218
262
|
switch (pred.op) {
|
|
219
263
|
case "eq":
|
|
220
264
|
return actual === pred.value;
|
|
@@ -264,6 +308,20 @@ export function evalPredicate(pred, state) {
|
|
|
264
308
|
// --- L2 predicate tree validation (second line of defense) -------------------
|
|
265
309
|
const COMPARE_OPS = new Set(["eq", "ne", "gt", "gte", "lt", "lte"]);
|
|
266
310
|
const PRESENCE_OPS = new Set(["exists", "absent", "truthy", "falsy"]);
|
|
311
|
+
/** Does this (untrusted) predicate tree contain a path-vs-path compare? */
|
|
312
|
+
function subtreeHasRhsPath(node) {
|
|
313
|
+
if (!node || typeof node !== "object")
|
|
314
|
+
return false;
|
|
315
|
+
const n = node;
|
|
316
|
+
if (n.kind === "compare")
|
|
317
|
+
return n.rhsPath !== undefined;
|
|
318
|
+
if ((n.kind === "and" || n.kind === "or") && Array.isArray(n.clauses)) {
|
|
319
|
+
return n.clauses.some(subtreeHasRhsPath);
|
|
320
|
+
}
|
|
321
|
+
if (n.kind === "not")
|
|
322
|
+
return subtreeHasRhsPath(n.clause);
|
|
323
|
+
return false;
|
|
324
|
+
}
|
|
267
325
|
function assertPath(path, op) {
|
|
268
326
|
if (!Array.isArray(path) || !path.every((seg) => typeof seg === "string")) {
|
|
269
327
|
throw new LensPurityError(op, `predicate path must be a string[]`);
|
|
@@ -299,6 +357,17 @@ export function assertL2Predicate(node, op = "condition") {
|
|
|
299
357
|
throw new LensPurityError(op, `invalid compare op ${JSON.stringify(c.op)}`);
|
|
300
358
|
}
|
|
301
359
|
assertPath(c.path, op);
|
|
360
|
+
if (c.rhsPath !== undefined) {
|
|
361
|
+
// path-vs-path (phase4 §7): eq/ne only; value must be absent
|
|
362
|
+
if (c.op !== "eq" && c.op !== "ne") {
|
|
363
|
+
throw new LensPurityError(op, `path-vs-path compare supports eq/ne only; got ${c.op}`);
|
|
364
|
+
}
|
|
365
|
+
if (c.value !== undefined) {
|
|
366
|
+
throw new LensPurityError(op, `compare cannot carry both value and rhsPath`);
|
|
367
|
+
}
|
|
368
|
+
assertPath(c.rhsPath, op);
|
|
369
|
+
return;
|
|
370
|
+
}
|
|
302
371
|
assertJsonScalar(c.value, op);
|
|
303
372
|
assertFiniteScalar(c.value, op);
|
|
304
373
|
assertRelationalOperand(c.op, c.value);
|
|
@@ -347,6 +416,11 @@ export function assertL2Predicate(node, op = "condition") {
|
|
|
347
416
|
case "not": {
|
|
348
417
|
const c = node;
|
|
349
418
|
assertL2Predicate(c.clause, op);
|
|
419
|
+
// mirror the construction-time guard for as-any/deserialized trees
|
|
420
|
+
// (codex S2.17 R3 P2): path-vs-path cannot be negated.
|
|
421
|
+
if (subtreeHasRhsPath(c.clause)) {
|
|
422
|
+
throw new LensPurityError(op, "path-vs-path compares cannot be negated — use nePath/eqPath to express the direction directly");
|
|
423
|
+
}
|
|
350
424
|
return;
|
|
351
425
|
}
|
|
352
426
|
default:
|
|
@@ -358,49 +432,6 @@ export function assertL2Predicate(node, op = "condition") {
|
|
|
358
432
|
function isOpaque(p) {
|
|
359
433
|
return p.kind === "opaque";
|
|
360
434
|
}
|
|
361
|
-
/** Evaluate one predicate-mode case predicate (L2 declarative sync / L1 sync / L0 async). */
|
|
362
|
-
async function evalCasePredicate(pred, state, ctx) {
|
|
363
|
-
if (isOpaque(pred)) {
|
|
364
|
-
const out = pred.fn(ctx, state);
|
|
365
|
-
if (pred.sync && out && typeof out.then === "function") {
|
|
366
|
-
throw new Error("conditionFn (L1) predicate must be synchronous — it returned a thenable. Use conditionAsync for async/I-O predicates.");
|
|
367
|
-
}
|
|
368
|
-
const result = await out;
|
|
369
|
-
// The API types the predicate as `boolean`, but JS / `as any` callers can
|
|
370
|
-
// return a truthy non-boolean (e.g. the string "false", an object). Fail
|
|
371
|
-
// fast instead of letting `selectBranchSteps`' `if` silently take a branch
|
|
372
|
-
// on a coerced value.
|
|
373
|
-
if (typeof result !== "boolean") {
|
|
374
|
-
throw new Error(`${pred.sync ? "conditionFn (L1)" : "conditionAsync (L0)"} predicate must return a boolean; ` +
|
|
375
|
-
`got ${result === null ? "null" : typeof result}`);
|
|
376
|
-
}
|
|
377
|
-
return result;
|
|
378
|
-
}
|
|
379
|
-
return evalPredicate(pred, state);
|
|
380
|
-
}
|
|
381
|
-
/**
|
|
382
|
-
* Select the steps a branch takes against a concrete state (first-match → default).
|
|
383
|
-
* Always async (L0 opaque predicates may be async). For value-mode the subject lens
|
|
384
|
-
* is evaluated exactly once: flow uses the captured `path` (safe traversal, no throw
|
|
385
|
-
* on missing intermediates), test calls the lens.
|
|
386
|
-
*/
|
|
387
|
-
export async function selectBranchSteps(step, state, ctx) {
|
|
388
|
-
if (step.mode === "value") {
|
|
389
|
-
const subject = step.subject.path
|
|
390
|
-
? resolvePath(state, step.subject.path)
|
|
391
|
-
: step.subject.lens(ctx, state);
|
|
392
|
-
for (const c of step.cases) {
|
|
393
|
-
if (subject === c.value)
|
|
394
|
-
return c.steps;
|
|
395
|
-
}
|
|
396
|
-
return step.default;
|
|
397
|
-
}
|
|
398
|
-
for (const c of step.cases) {
|
|
399
|
-
if (await evalCasePredicate(c.predicate, state, ctx))
|
|
400
|
-
return c.steps;
|
|
401
|
-
}
|
|
402
|
-
return step.default;
|
|
403
|
-
}
|
|
404
435
|
/** Map a runtime predicate (path already captured at construction) to JSON-safe form. */
|
|
405
436
|
export function extractPredicate(pred) {
|
|
406
437
|
if (isOpaque(pred)) {
|
|
@@ -408,7 +439,9 @@ export function extractPredicate(pred) {
|
|
|
408
439
|
}
|
|
409
440
|
switch (pred.kind) {
|
|
410
441
|
case "compare":
|
|
411
|
-
return
|
|
442
|
+
return pred.rhsPath !== undefined
|
|
443
|
+
? { kind: "compare", op: pred.op, path: [...pred.path], rhsPath: [...pred.rhsPath] }
|
|
444
|
+
: { kind: "compare", op: pred.op, path: [...pred.path], value: pred.value };
|
|
412
445
|
case "in":
|
|
413
446
|
return { kind: "in", path: [...pred.path], values: [...pred.values] };
|
|
414
447
|
case "presence":
|
|
@@ -427,31 +460,4 @@ export function extractPredicate(pred) {
|
|
|
427
460
|
return { kind: "not", clause: extractPredicate(pred.clause) };
|
|
428
461
|
}
|
|
429
462
|
}
|
|
430
|
-
|
|
431
|
-
* Normalize a runtime branch step to JSON-safe form. `recurse` normalizes a
|
|
432
|
-
* sub-step list (provided by normalizeFlow so nested branches recurse).
|
|
433
|
-
*/
|
|
434
|
-
export function extractBranchStep(step, recurse) {
|
|
435
|
-
if (step.mode === "value") {
|
|
436
|
-
return {
|
|
437
|
-
kind: "branch",
|
|
438
|
-
mode: "value",
|
|
439
|
-
...(step.name ? { name: step.name } : {}),
|
|
440
|
-
subjectPath: step.subject.path ? [...step.subject.path] : [],
|
|
441
|
-
cases: step.cases.map((c) => ({ value: c.value, steps: recurse(c.steps) })),
|
|
442
|
-
default: recurse(step.default),
|
|
443
|
-
};
|
|
444
|
-
}
|
|
445
|
-
return {
|
|
446
|
-
kind: "branch",
|
|
447
|
-
mode: "predicate",
|
|
448
|
-
...(step.name ? { name: step.name } : {}),
|
|
449
|
-
cases: step.cases.map((c) => ({
|
|
450
|
-
...(c.message ? { message: c.message } : {}),
|
|
451
|
-
predicate: extractPredicate(c.predicate),
|
|
452
|
-
steps: recurse(c.steps),
|
|
453
|
-
})),
|
|
454
|
-
default: recurse(step.default),
|
|
455
|
-
};
|
|
456
|
-
}
|
|
457
|
-
//# sourceMappingURL=contract-flow-condition.js.map
|
|
463
|
+
//# sourceMappingURL=predicates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"predicates.js","sourceRoot":"","sources":["../src/predicates.ts"],"names":[],"mappings":"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"}
|
package/dist/test/builder.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { isTestBranchStep } from "../types.js";
|
|
2
2
|
import { registerTest } from "../internal.js";
|
|
3
3
|
import { toArray } from "../data.js";
|
|
4
|
-
import { assertSwitchCaseValues } from "../
|
|
5
|
-
import { validatePollBounds } from "../
|
|
4
|
+
import { assertSwitchCaseValues } from "../predicates.js";
|
|
5
|
+
import { validatePollBounds } from "../poll-primitives.js";
|
|
6
6
|
/**
|
|
7
7
|
* Flatten steps for registry metadata: a branch contributes its first-class
|
|
8
8
|
* LEAF steps (recursively, across cases + default) — NOT a synthetic branch
|
package/dist/test/builder.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/test/builder.ts"],"names":[],"mappings":"AA4BA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,sBAAsB,EAAE,MAAM
|
|
1
|
+
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/test/builder.ts"],"names":[],"mappings":"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"}
|
package/dist/test/utils.d.ts
CHANGED
|
@@ -33,6 +33,13 @@ export declare function resolveBaseMeta(idOrMeta: string | TestMeta): TestMeta;
|
|
|
33
33
|
export declare function normalizeEachTable<T extends Record<string, unknown>>(table: readonly T[] | Record<string, T>): (T & {
|
|
34
34
|
_pick?: string;
|
|
35
35
|
})[];
|
|
36
|
+
/**
|
|
37
|
+
* Resolve a GLUBEAN_PICK override against a set of example keys — the single
|
|
38
|
+
* matching semantic shared by `selectPickExamples` and `workflow.pick`'s
|
|
39
|
+
* filter pre-check: `all`/`*` selects everything, `*`-globs match by pattern,
|
|
40
|
+
* anything else matches literally. Returns the matched keys (possibly empty).
|
|
41
|
+
*/
|
|
42
|
+
export declare function matchPickKeys(pickedEnv: string, keys: readonly string[]): string[];
|
|
36
43
|
export declare function selectPickExamples<T extends Record<string, unknown>>(examples: Record<string, T>, count: number): (T & {
|
|
37
44
|
_pick: string;
|
|
38
45
|
})[];
|