@junejuly-lockstep/model 0.0.0-stage → 0.1.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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"card.d.ts","sourceRoot":"","sources":["../src/card.ts"],"names":[],"mappings":"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"}
package/dist/card.js ADDED
@@ -0,0 +1,122 @@
1
+ import { z } from 'zod';
2
+ import { MachineJson, StateMeta, TriggerBinding } from './journey.js';
3
+ export const CardGrain = z.enum(['journey', 'micro', 'finding', 'backend']);
4
+ export const CardSource = z.enum(['human', 'reconciler', 'canvas']);
5
+ /** Board columns. Derived from state; never set directly. */
6
+ export const BoardColumn = z.enum([
7
+ 'planned',
8
+ 'declared',
9
+ 'dispatched',
10
+ 'needs_judgment',
11
+ 'in_lockstep',
12
+ ]);
13
+ export const BOARD_COLUMN_LABELS = {
14
+ planned: 'Planned',
15
+ declared: 'Declared',
16
+ dispatched: 'Dispatched',
17
+ needs_judgment: 'Needs judgment',
18
+ in_lockstep: 'In lockstep',
19
+ };
20
+ export const CardEventKind = z.enum([
21
+ 'created',
22
+ 'dispatched',
23
+ 'verdict',
24
+ 'adopted',
25
+ 'deferred',
26
+ 'approved',
27
+ 'acknowledged',
28
+ 'sealed',
29
+ 'pr_linked',
30
+ 'pr_merged',
31
+ 'reopened',
32
+ ]);
33
+ /** A delta against the machine JSON: whole states or single transitions. */
34
+ export const MachineDelta = z.object({
35
+ addStates: z
36
+ .record(z.string(), z.object({ config: z.record(z.string(), z.unknown()), meta: StateMeta }))
37
+ .default({}),
38
+ removeStates: z.array(z.string()).default([]),
39
+ addTransitions: z
40
+ .array(z.object({
41
+ from: z.string(),
42
+ event: z.string(),
43
+ to: z.string(),
44
+ guard: z.string().optional(),
45
+ }))
46
+ .default([]),
47
+ removeTransitions: z
48
+ .array(z.object({ from: z.string(), event: z.string(), to: z.string() }))
49
+ .default([]),
50
+ updateMeta: z.record(z.string(), StateMeta.partial()).default({}),
51
+ addBindings: z.array(TriggerBinding).default([]),
52
+ });
53
+ /** The core primitive: a proposed change to the declared journey model. */
54
+ export const IntentDiff = z.object({
55
+ kind: z.literal('intent'),
56
+ journeyKey: z.string().nullable(),
57
+ narrative: z.string().default(''),
58
+ rules: z.array(z.string()).default([]),
59
+ /** Whole new journey (phase one) or a delta on an existing one (phase two). */
60
+ newMachine: MachineJson.nullable().default(null),
61
+ delta: MachineDelta.nullable().default(null),
62
+ scenarios: z.array(z.string()).default([]),
63
+ referenceAssets: z.array(z.string().url()).default([]),
64
+ });
65
+ /** A finding the reconciler raised. */
66
+ export const FindingPayload = z.object({
67
+ kind: z.literal('finding'),
68
+ family: z.enum(['structural', 'visual', 'contract', 'reach']),
69
+ journeyKey: z.string().nullable(),
70
+ elementKind: z.string(),
71
+ elementKey: z.string(),
72
+ runId: z.string().uuid(),
73
+ detail: z.record(z.string(), z.unknown()).default({}),
74
+ /** AI-generated two-sentence explanation; always labeled generated in the UI. */
75
+ explanation: z.string().nullable().default(null),
76
+ });
77
+ /** A backend change with no direct journey surface. */
78
+ export const BackendPayload = z.object({
79
+ kind: z.literal('backend'),
80
+ changeKind: z.enum(['dependency', 'contract', 'declared']),
81
+ title: z.string(),
82
+ summary: z.string().default(''),
83
+ declaredReach: z
84
+ .object({
85
+ journeys: z.array(z.string()).default([]),
86
+ transitions: z.array(z.string()).default([]),
87
+ states: z.array(z.string()).default([]),
88
+ })
89
+ .nullable()
90
+ .default(null),
91
+ seams: z.array(z.string()).default([]),
92
+ runId: z.string().uuid().nullable().default(null),
93
+ reachSummary: z.string().nullable().default(null),
94
+ });
95
+ export const CardPayload = z.discriminatedUnion('kind', [
96
+ IntentDiff,
97
+ FindingPayload,
98
+ BackendPayload,
99
+ ]);
100
+ /** Compiled form of a card's intent diff, stored on the card. */
101
+ export const WorkOrder = z.object({
102
+ cardRef: z.string(),
103
+ brief: z.string(),
104
+ briefGenerated: z.boolean(),
105
+ machineDelta: z.unknown(),
106
+ scenarioFixtures: z.array(z.object({ name: z.string(), seed: z.number(), overrides: z.unknown() })),
107
+ acceptancePaths: z.array(z.array(z.string())),
108
+ bindings: z.array(TriggerBinding),
109
+ conventions: z.string().default(''),
110
+ compiledAt: z.string().datetime(),
111
+ });
112
+ export const Reach = z.object({
113
+ transitions: z.array(z.string()).default([]),
114
+ states: z.array(z.string()).default([]),
115
+ journeys: z.array(z.string()).default([]),
116
+ operations: z.array(z.string()).default([]),
117
+ });
118
+ /** Render FERN-12 from project key and seq. */
119
+ export function cardRef(projectKey, seq) {
120
+ return `${projectKey}-${seq}`;
121
+ }
122
+ //# sourceMappingURL=card.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"card.js","sourceRoot":"","sources":["../src/card.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,82 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * Fraction of differing pixels above which a screenshot is `changed` (rule 3) when neither the
4
+ * client's `lockstep.config.ts` nor the project's platform config says otherwise. The reconciler
5
+ * only reports scores; the API decides `changed` with the project's configured threshold.
6
+ */
7
+ export declare const DEFAULT_VISUAL_DIFF_THRESHOLD = 0.001;
8
+ /** Shape of `lockstep.config.ts` at the client repo root. */
9
+ export declare const LockstepConfig: z.ZodObject<{
10
+ projectKey: z.ZodString;
11
+ apiBaseUrl: z.ZodString;
12
+ journeysGlob: z.ZodDefault<z.ZodString>;
13
+ scenariosPath: z.ZodDefault<z.ZodString>;
14
+ seams: z.ZodArray<z.ZodString, "many">;
15
+ visualDiffThreshold: z.ZodDefault<z.ZodNumber>;
16
+ bootCommand: z.ZodString;
17
+ port: z.ZodNumber;
18
+ /** Base URL the app under test talks to; must be a mock origin. */
19
+ appApiBase: z.ZodOptional<z.ZodString>;
20
+ /** Regex (string) the appApiBase must match for walks to be allowed. */
21
+ mockApiPattern: z.ZodDefault<z.ZodString>;
22
+ schema: z.ZodOptional<z.ZodObject<{
23
+ sdlPath: z.ZodString;
24
+ codegenOutput: z.ZodString;
25
+ }, "strip", z.ZodTypeAny, {
26
+ sdlPath: string;
27
+ codegenOutput: string;
28
+ }, {
29
+ sdlPath: string;
30
+ codegenOutput: string;
31
+ }>>;
32
+ }, "strip", z.ZodTypeAny, {
33
+ projectKey: string;
34
+ apiBaseUrl: string;
35
+ journeysGlob: string;
36
+ scenariosPath: string;
37
+ seams: string[];
38
+ visualDiffThreshold: number;
39
+ bootCommand: string;
40
+ port: number;
41
+ mockApiPattern: string;
42
+ appApiBase?: string | undefined;
43
+ schema?: {
44
+ sdlPath: string;
45
+ codegenOutput: string;
46
+ } | undefined;
47
+ }, {
48
+ projectKey: string;
49
+ apiBaseUrl: string;
50
+ seams: string[];
51
+ bootCommand: string;
52
+ port: number;
53
+ journeysGlob?: string | undefined;
54
+ scenariosPath?: string | undefined;
55
+ visualDiffThreshold?: number | undefined;
56
+ appApiBase?: string | undefined;
57
+ mockApiPattern?: string | undefined;
58
+ schema?: {
59
+ sdlPath: string;
60
+ codegenOutput: string;
61
+ } | undefined;
62
+ }>;
63
+ export type LockstepConfig = z.infer<typeof LockstepConfig>;
64
+ /** Project configuration stored on the platform side (projects.config JSONB). */
65
+ export declare const ProjectConfig: z.ZodObject<{
66
+ seams: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
67
+ visualDiffThreshold: z.ZodDefault<z.ZodNumber>;
68
+ defaultScenario: z.ZodOptional<z.ZodString>;
69
+ failOnUnresolvedNavigation: z.ZodDefault<z.ZodBoolean>;
70
+ }, "strip", z.ZodTypeAny, {
71
+ seams: string[];
72
+ visualDiffThreshold: number;
73
+ failOnUnresolvedNavigation: boolean;
74
+ defaultScenario?: string | undefined;
75
+ }, {
76
+ seams?: string[] | undefined;
77
+ visualDiffThreshold?: number | undefined;
78
+ defaultScenario?: string | undefined;
79
+ failOnUnresolvedNavigation?: boolean | undefined;
80
+ }>;
81
+ export type ProjectConfig = z.infer<typeof ProjectConfig>;
82
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;GAIG;AACH,eAAO,MAAM,6BAA6B,QAAQ,CAAC;AAEnD,6DAA6D;AAC7D,eAAO,MAAM,cAAc;;;;;;;;;IAazB,mEAAmE;;IAEnE,wEAAwE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAQxE,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAE5D,iFAAiF;AACjF,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;EAKxB,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC"}
package/dist/config.js ADDED
@@ -0,0 +1,40 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * Fraction of differing pixels above which a screenshot is `changed` (rule 3) when neither the
4
+ * client's `lockstep.config.ts` nor the project's platform config says otherwise. The reconciler
5
+ * only reports scores; the API decides `changed` with the project's configured threshold.
6
+ */
7
+ export const DEFAULT_VISUAL_DIFF_THRESHOLD = 0.001;
8
+ /** Shape of `lockstep.config.ts` at the client repo root. */
9
+ export const LockstepConfig = z.object({
10
+ projectKey: z
11
+ .string()
12
+ .min(2)
13
+ .max(8)
14
+ .regex(/^[A-Z][A-Z0-9]*$/, 'project key must be uppercase, e.g. FERN'),
15
+ apiBaseUrl: z.string().url(),
16
+ journeysGlob: z.string().min(1).default('src/journeys/*.journey.ts'),
17
+ scenariosPath: z.string().min(1).default('src/journeys/scenarios.ts'),
18
+ seams: z.array(z.string().min(1)).min(6).max(8),
19
+ visualDiffThreshold: z.number().min(0).max(1).default(DEFAULT_VISUAL_DIFF_THRESHOLD),
20
+ bootCommand: z.string().min(1),
21
+ port: z.number().int().min(1).max(65535),
22
+ /** Base URL the app under test talks to; must be a mock origin. */
23
+ appApiBase: z.string().optional(),
24
+ /** Regex (string) the appApiBase must match for walks to be allowed. */
25
+ mockApiPattern: z.string().default('^(mock|msw):|localhost|127\\.0\\.0\\.1'),
26
+ schema: z
27
+ .object({
28
+ sdlPath: z.string().min(1),
29
+ codegenOutput: z.string().min(1),
30
+ })
31
+ .optional(),
32
+ });
33
+ /** Project configuration stored on the platform side (projects.config JSONB). */
34
+ export const ProjectConfig = z.object({
35
+ seams: z.array(z.string().min(1)).min(1).max(8).default([]),
36
+ visualDiffThreshold: z.number().min(0).max(1).default(DEFAULT_VISUAL_DIFF_THRESHOLD),
37
+ defaultScenario: z.string().optional(),
38
+ failOnUnresolvedNavigation: z.boolean().default(false),
39
+ });
40
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;GAIG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,KAAK,CAAC;AAEnD,6DAA6D;AAC7D,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,UAAU,EAAE,CAAC;SACV,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,CAAC,CAAC;SACN,KAAK,CAAC,kBAAkB,EAAE,0CAA0C,CAAC;IACxE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IAC5B,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,2BAA2B,CAAC;IACpE,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,2BAA2B,CAAC;IACrE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/C,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,6BAA6B,CAAC;IACpF,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;IACxC,mEAAmE;IACnE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,wEAAwE;IACxE,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,wCAAwC,CAAC;IAC5E,MAAM,EAAE,CAAC;SACN,MAAM,CAAC;QACN,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1B,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;KACjC,CAAC;SACD,QAAQ,EAAE;CACd,CAAC,CAAC;AAGH,iFAAiF;AACjF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAC3D,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,6BAA6B,CAAC;IACpF,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACtC,0BAA0B,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;CACvD,CAAC,CAAC"}
@@ -0,0 +1,7 @@
1
+ export * from './journey.js';
2
+ export * from './config.js';
3
+ export * from './run.js';
4
+ export * from './verdict.js';
5
+ export * from './card.js';
6
+ export * from './api.js';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,7 @@
1
+ export * from './journey.js';
2
+ export * from './config.js';
3
+ export * from './run.js';
4
+ export * from './verdict.js';
5
+ export * from './card.js';
6
+ export * from './api.js';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC"}