@on-par/contracts 0.0.0-stage → 0.9.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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 On PAR Dev
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,3 +1,15 @@
1
- # Temporary Holding Version
1
+ # @on-par/contracts
2
2
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
3
+ Shared typed seam for the Software Factory packages: engineering-ready issue/epic/story, Gherkin acceptance criteria and the DesignArtifact schema (zod).
4
+
5
+ Part of [Software Factory](https://github.com/on-par/software-factory), a multi-agent factory that ships verified work autonomously. Most users want the CLI, [`@on-par/factory-cli`](https://www.npmjs.com/package/@on-par/factory-cli); the other packages are its building blocks.
6
+
7
+ ## Documentation
8
+
9
+ - [README and Quick Start](https://github.com/on-par/software-factory#readme)
10
+ - [Architecture and package graph](https://github.com/on-par/software-factory/blob/main/docs/architecture.md)
11
+ - [Changelog](https://github.com/on-par/software-factory/blob/main/CHANGELOG.md)
12
+
13
+ ## License
14
+
15
+ MIT. See [LICENSE](./LICENSE).
package/dist/adr.d.ts ADDED
@@ -0,0 +1,28 @@
1
+ import { z } from 'zod';
2
+ export declare const AdrReferenceDraftSchema: z.ZodObject<{
3
+ text: z.ZodString;
4
+ url: z.ZodOptional<z.ZodString>;
5
+ }, z.core.$strip>;
6
+ export declare const AdrDraftSchema: z.ZodObject<{
7
+ title: z.ZodString;
8
+ context: z.ZodDefault<z.ZodString>;
9
+ decision: z.ZodDefault<z.ZodString>;
10
+ consequences: z.ZodDefault<z.ZodString>;
11
+ status: z.ZodDefault<z.ZodEnum<{
12
+ accepted: "accepted";
13
+ proposed: "proposed";
14
+ }>>;
15
+ references: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodObject<{
16
+ text: z.ZodString;
17
+ url: z.ZodOptional<z.ZodString>;
18
+ }, z.core.$strip>>>>, z.ZodTransform<{
19
+ text: string;
20
+ url?: string | undefined;
21
+ }[], {
22
+ text: string;
23
+ url?: string | undefined;
24
+ }[] | null | undefined>>;
25
+ }, z.core.$strip>;
26
+ export type AdrReferenceDraft = z.infer<typeof AdrReferenceDraftSchema>;
27
+ export type AdrDraft = z.infer<typeof AdrDraftSchema>;
28
+ //# sourceMappingURL=adr.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adr.d.ts","sourceRoot":"","sources":["../src/adr.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,uBAAuB;;;iBAGlC,CAAC;AAEH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;iBAezB,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AACxE,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC"}
package/dist/adr.js ADDED
@@ -0,0 +1,24 @@
1
+ // src/adr.ts — AdrDraft: a proposed architecture decision. The product proposer exports
2
+ // drafts as Proposed ADR files; the factory's PLAN/SHIP pipeline never records ADRs.
3
+ import { z } from 'zod';
4
+ export const AdrReferenceDraftSchema = z.object({
5
+ text: z.string().min(1),
6
+ url: z.string().min(1).optional(),
7
+ });
8
+ export const AdrDraftSchema = z.object({
9
+ title: z.string().min(1),
10
+ /** The mandatory 'why' — forces and constraints that drove the decision. */
11
+ context: z.string().default(''),
12
+ decision: z.string().default(''),
13
+ consequences: z.string().default(''),
14
+ /** Drafts arrive Proposed; the writer promotes them to Accepted. */
15
+ status: z.enum(['proposed', 'accepted']).default('proposed'),
16
+ // .nullish() (not .default()) so a bare YAML key with no items — which js-yaml parses
17
+ // to null, not undefined — still defaults to [] rather than failing the parse. Same
18
+ // reasoning as DesignArtifactSchema's targetTypes.
19
+ references: z
20
+ .array(AdrReferenceDraftSchema)
21
+ .nullish()
22
+ .transform((v) => v ?? []),
23
+ });
24
+ //# sourceMappingURL=adr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adr.js","sourceRoot":"","sources":["../src/adr.ts"],"names":[],"mappings":"AAAA,wFAAwF;AACxF,qFAAqF;AACrF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CAClC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACxB,4EAA4E;IAC5E,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IAC/B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IAChC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACpC,oEAAoE;IACpE,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;IAC5D,sFAAsF;IACtF,oFAAoF;IACpF,mDAAmD;IACnD,UAAU,EAAE,CAAC;SACV,KAAK,CAAC,uBAAuB,CAAC;SAC9B,OAAO,EAAE;SACT,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;CAC7B,CAAC,CAAC"}
@@ -0,0 +1,224 @@
1
+ import { z } from 'zod';
2
+ export declare const VerificationStepSchema: z.ZodObject<{
3
+ command: z.ZodString;
4
+ passWhen: z.ZodString;
5
+ }, z.core.$strip>;
6
+ export declare const RejectedApproachSchema: z.ZodObject<{
7
+ option: z.ZodString;
8
+ reason: z.ZodString;
9
+ }, z.core.$strip>;
10
+ export declare const DesignApproachSchema: z.ZodObject<{
11
+ chosen: z.ZodString;
12
+ rejected: z.ZodArray<z.ZodObject<{
13
+ option: z.ZodString;
14
+ reason: z.ZodString;
15
+ }, z.core.$strip>>;
16
+ }, z.core.$strip>;
17
+ export declare const TargetTypeSchema: z.ZodObject<{
18
+ name: z.ZodString;
19
+ file: z.ZodString;
20
+ kind: z.ZodDefault<z.ZodEnum<{
21
+ added: "added";
22
+ changed: "changed";
23
+ read: "read";
24
+ }>>;
25
+ }, z.core.$strip>;
26
+ export declare const SignatureSchema: z.ZodObject<{
27
+ symbol: z.ZodString;
28
+ file: z.ZodString;
29
+ signature: z.ZodString;
30
+ }, z.core.$strip>;
31
+ export declare const CallEdgeSchema: z.ZodObject<{
32
+ from: z.ZodString;
33
+ to: z.ZodString;
34
+ note: z.ZodOptional<z.ZodString>;
35
+ }, z.core.$strip>;
36
+ export declare const BehaviorVerdictSchema: z.ZodEnum<{
37
+ better: "better";
38
+ same: "same";
39
+ unknown: "unknown";
40
+ worse: "worse";
41
+ }>;
42
+ export declare const BehaviorDeltaRowSchema: z.ZodObject<{
43
+ input: z.ZodString;
44
+ branch: z.ZodString;
45
+ before: z.ZodString;
46
+ after: z.ZodString;
47
+ verdict: z.ZodEnum<{
48
+ better: "better";
49
+ same: "same";
50
+ unknown: "unknown";
51
+ worse: "worse";
52
+ }>;
53
+ }, z.core.$strip>;
54
+ export declare function coerceListItem(item: unknown): unknown;
55
+ export declare const ExternalListSchema: z.ZodObject<{
56
+ name: z.ZodString;
57
+ location: z.ZodString;
58
+ source: z.ZodString;
59
+ gaps: z.ZodArray<z.ZodPreprocess<z.ZodString, unknown>>;
60
+ }, z.core.$strip>;
61
+ export declare const EvidenceKindSchema: z.ZodEnum<{
62
+ command: "command";
63
+ "fail-to-pass-test": "fail-to-pass-test";
64
+ none: "none";
65
+ screenshot: "screenshot";
66
+ }>;
67
+ export declare const FailToPassTestEvidenceSchema: z.ZodObject<{
68
+ kind: z.ZodLiteral<"fail-to-pass-test">;
69
+ claim: z.ZodString;
70
+ test: z.ZodString;
71
+ }, z.core.$strip>;
72
+ export declare const CommandEvidenceSchema: z.ZodObject<{
73
+ kind: z.ZodLiteral<"command">;
74
+ claim: z.ZodString;
75
+ command: z.ZodString;
76
+ passWhen: z.ZodString;
77
+ }, z.core.$strip>;
78
+ export declare const ScreenshotEvidenceSchema: z.ZodObject<{
79
+ kind: z.ZodLiteral<"screenshot">;
80
+ claim: z.ZodString;
81
+ route: z.ZodString;
82
+ }, z.core.$strip>;
83
+ export declare const NoEvidenceSchema: z.ZodObject<{
84
+ kind: z.ZodLiteral<"none">;
85
+ claim: z.ZodString;
86
+ reason: z.ZodString;
87
+ }, z.core.$strip>;
88
+ export declare const EvidencePlanEntrySchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
89
+ kind: z.ZodLiteral<"fail-to-pass-test">;
90
+ claim: z.ZodString;
91
+ test: z.ZodString;
92
+ }, z.core.$strip>, z.ZodObject<{
93
+ kind: z.ZodLiteral<"command">;
94
+ claim: z.ZodString;
95
+ command: z.ZodString;
96
+ passWhen: z.ZodString;
97
+ }, z.core.$strip>, z.ZodObject<{
98
+ kind: z.ZodLiteral<"screenshot">;
99
+ claim: z.ZodString;
100
+ route: z.ZodString;
101
+ }, z.core.$strip>, z.ZodObject<{
102
+ kind: z.ZodLiteral<"none">;
103
+ claim: z.ZodString;
104
+ reason: z.ZodString;
105
+ }, z.core.$strip>], "kind">;
106
+ export declare const DesignArtifactSchema: z.ZodObject<{
107
+ restatedProblem: z.ZodString;
108
+ approach: z.ZodObject<{
109
+ chosen: z.ZodString;
110
+ rejected: z.ZodArray<z.ZodObject<{
111
+ option: z.ZodString;
112
+ reason: z.ZodString;
113
+ }, z.core.$strip>>;
114
+ }, z.core.$strip>;
115
+ interfacesTouched: z.ZodArray<z.ZodPreprocess<z.ZodString, unknown>>;
116
+ targetTypes: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodObject<{
117
+ name: z.ZodString;
118
+ file: z.ZodString;
119
+ kind: z.ZodDefault<z.ZodEnum<{
120
+ added: "added";
121
+ changed: "changed";
122
+ read: "read";
123
+ }>>;
124
+ }, z.core.$strip>>>>, z.ZodTransform<{
125
+ name: string;
126
+ file: string;
127
+ kind: "added" | "changed" | "read";
128
+ }[], {
129
+ name: string;
130
+ file: string;
131
+ kind: "added" | "changed" | "read";
132
+ }[] | null | undefined>>;
133
+ signatures: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodObject<{
134
+ symbol: z.ZodString;
135
+ file: z.ZodString;
136
+ signature: z.ZodString;
137
+ }, z.core.$strip>>>>, z.ZodTransform<{
138
+ symbol: string;
139
+ file: string;
140
+ signature: string;
141
+ }[], {
142
+ symbol: string;
143
+ file: string;
144
+ signature: string;
145
+ }[] | null | undefined>>;
146
+ callGraph: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodObject<{
147
+ from: z.ZodString;
148
+ to: z.ZodString;
149
+ note: z.ZodOptional<z.ZodString>;
150
+ }, z.core.$strip>>>>, z.ZodTransform<{
151
+ from: string;
152
+ to: string;
153
+ note?: string | undefined;
154
+ }[], {
155
+ from: string;
156
+ to: string;
157
+ note?: string | undefined;
158
+ }[] | null | undefined>>;
159
+ behaviorContract: z.ZodArray<z.ZodPreprocess<z.ZodString, unknown>>;
160
+ verificationPlan: z.ZodArray<z.ZodObject<{
161
+ command: z.ZodString;
162
+ passWhen: z.ZodString;
163
+ }, z.core.$strip>>;
164
+ riskBlastRadius: z.ZodString;
165
+ openQuestions: z.ZodArray<z.ZodPreprocess<z.ZodString, unknown>>;
166
+ edgeInputs: z.ZodPreprocess<z.ZodOptional<z.ZodArray<z.ZodPreprocess<z.ZodString, unknown>>>, unknown>;
167
+ behaviorDelta: z.ZodPreprocess<z.ZodOptional<z.ZodArray<z.ZodObject<{
168
+ input: z.ZodString;
169
+ branch: z.ZodString;
170
+ before: z.ZodString;
171
+ after: z.ZodString;
172
+ verdict: z.ZodEnum<{
173
+ better: "better";
174
+ same: "same";
175
+ unknown: "unknown";
176
+ worse: "worse";
177
+ }>;
178
+ }, z.core.$strip>>>, unknown>;
179
+ externalLists: z.ZodPreprocess<z.ZodOptional<z.ZodArray<z.ZodObject<{
180
+ name: z.ZodString;
181
+ location: z.ZodString;
182
+ source: z.ZodString;
183
+ gaps: z.ZodArray<z.ZodPreprocess<z.ZodString, unknown>>;
184
+ }, z.core.$strip>>>, unknown>;
185
+ evidencePlan: z.ZodPreprocess<z.ZodOptional<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
186
+ kind: z.ZodLiteral<"fail-to-pass-test">;
187
+ claim: z.ZodString;
188
+ test: z.ZodString;
189
+ }, z.core.$strip>, z.ZodObject<{
190
+ kind: z.ZodLiteral<"command">;
191
+ claim: z.ZodString;
192
+ command: z.ZodString;
193
+ passWhen: z.ZodString;
194
+ }, z.core.$strip>, z.ZodObject<{
195
+ kind: z.ZodLiteral<"screenshot">;
196
+ claim: z.ZodString;
197
+ route: z.ZodString;
198
+ }, z.core.$strip>, z.ZodObject<{
199
+ kind: z.ZodLiteral<"none">;
200
+ claim: z.ZodString;
201
+ reason: z.ZodString;
202
+ }, z.core.$strip>], "kind">>>, unknown>;
203
+ }, z.core.$strip>;
204
+ export type VerificationStep = z.infer<typeof VerificationStepSchema>;
205
+ export type RejectedApproach = z.infer<typeof RejectedApproachSchema>;
206
+ export type DesignApproach = z.infer<typeof DesignApproachSchema>;
207
+ export type TargetType = z.infer<typeof TargetTypeSchema>;
208
+ export type Signature = z.infer<typeof SignatureSchema>;
209
+ export type CallEdge = z.infer<typeof CallEdgeSchema>;
210
+ export type BehaviorVerdict = z.infer<typeof BehaviorVerdictSchema>;
211
+ export type BehaviorDeltaRow = z.infer<typeof BehaviorDeltaRowSchema>;
212
+ export type ExternalList = z.infer<typeof ExternalListSchema>;
213
+ export type EvidenceKind = z.infer<typeof EvidenceKindSchema>;
214
+ export type FailToPassTestEvidence = z.infer<typeof FailToPassTestEvidenceSchema>;
215
+ export type CommandEvidence = z.infer<typeof CommandEvidenceSchema>;
216
+ export type ScreenshotEvidence = z.infer<typeof ScreenshotEvidenceSchema>;
217
+ export type NoEvidence = z.infer<typeof NoEvidenceSchema>;
218
+ export type EvidencePlanEntry = z.infer<typeof EvidencePlanEntrySchema>;
219
+ export type DesignArtifact = z.infer<typeof DesignArtifactSchema>;
220
+ /** Paths (e.g. 'edgeInputs[11]', 'externalLists[0].gaps[2]') of the raw design's
221
+ * string-list items that coerceListItem will rewrite. Non-object input or non-array
222
+ * fields yield nothing. */
223
+ export declare function findCoercedDesignItems(design: unknown): string[];
224
+ //# sourceMappingURL=design.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"design.d.ts","sourceRoot":"","sources":["../src/design.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,sBAAsB;;;iBAGjC,CAAC;AAEH,eAAO,MAAM,sBAAsB;;;iBAGjC,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;iBAG/B,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;;;;;;iBAI3B,CAAC;AAEH,eAAO,MAAM,eAAe;;;;iBAI1B,CAAC;AAEH,eAAO,MAAM,cAAc;;;;iBAIzB,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;;EAAiD,CAAC;AAEpF,eAAO,MAAM,sBAAsB;;;;;;;;;;;iBAMjC,CAAC;AAKH,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAYrD;AAID,eAAO,MAAM,kBAAkB;;;;;iBAK7B,CAAC;AAIH,eAAO,MAAM,kBAAkB;;;;;EAAiE,CAAC;AAEjG,eAAO,MAAM,4BAA4B;;;;iBAIvC,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;;iBAKhC,CAAC;AAEH,eAAO,MAAM,wBAAwB;;;;iBAInC,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;;iBAI3B,CAAC;AAEH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;2BAKlC,CAAC;AAMH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA2B/B,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AACtE,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AACtE,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAClE,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC1D,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AACxD,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AACtD,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACpE,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AACtE,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAC9D,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAC9D,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAClF,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACpE,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAC1E,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC1D,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AACxE,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAIlE;;4BAE4B;AAC5B,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,EAAE,CAmBhE"}
package/dist/design.js ADDED
@@ -0,0 +1,154 @@
1
+ // src/design.ts — DesignArtifact: the structured design block PLAN emits and BUILD
2
+ // consumes (originally #422; moved here in #466 so both apps share one definition;
3
+ // deepened in #480).
4
+ import { z } from 'zod';
5
+ export const VerificationStepSchema = z.object({
6
+ command: z.string().min(1),
7
+ passWhen: z.string().min(1),
8
+ });
9
+ export const RejectedApproachSchema = z.object({
10
+ option: z.string().min(1),
11
+ reason: z.string().min(1),
12
+ });
13
+ export const DesignApproachSchema = z.object({
14
+ chosen: z.string().min(1),
15
+ rejected: z.array(RejectedApproachSchema),
16
+ });
17
+ export const TargetTypeSchema = z.object({
18
+ name: z.string().min(1),
19
+ file: z.string().min(1),
20
+ kind: z.enum(['added', 'changed', 'read']).default('changed'),
21
+ });
22
+ export const SignatureSchema = z.object({
23
+ symbol: z.string().min(1),
24
+ file: z.string().min(1),
25
+ signature: z.string().min(1),
26
+ });
27
+ export const CallEdgeSchema = z.object({
28
+ from: z.string().min(1),
29
+ to: z.string().min(1),
30
+ note: z.string().min(1).optional(),
31
+ });
32
+ export const BehaviorVerdictSchema = z.enum(['same', 'better', 'worse', 'unknown']);
33
+ export const BehaviorDeltaRowSchema = z.object({
34
+ input: z.string().min(1),
35
+ branch: z.string().min(1),
36
+ before: z.string().min(1),
37
+ after: z.string().min(1),
38
+ verdict: BehaviorVerdictSchema,
39
+ });
40
+ // js-yaml reads an unquoted list item containing ': ' as a one-key map (#2216, #551).
41
+ // Turn it back into the line the model wrote; any other non-string becomes its JSON text,
42
+ // so one bad item never discards the whole artifact.
43
+ export function coerceListItem(item) {
44
+ if (typeof item === 'string')
45
+ return item;
46
+ if (item !== null && typeof item === 'object' && !Array.isArray(item)) {
47
+ const entries = Object.entries(item);
48
+ if (entries.length === 1) {
49
+ const [key, value] = entries[0];
50
+ if (value === null || value === undefined)
51
+ return `${key}:`;
52
+ const text = typeof value === 'object' ? JSON.stringify(value) : String(value);
53
+ return `${key}: ${text}`;
54
+ }
55
+ }
56
+ return JSON.stringify(item) ?? String(item);
57
+ }
58
+ const stringListItem = z.preprocess(coerceListItem, z.string().min(1));
59
+ export const ExternalListSchema = z.object({
60
+ name: z.string().min(1),
61
+ location: z.string().min(1),
62
+ source: z.string().min(1),
63
+ gaps: z.array(stringListItem),
64
+ });
65
+ // Evidence per claim (#2257). Each kind requires its own field: fail-to-pass-test needs
66
+ // `test`, command needs `command` + `passWhen`, screenshot needs `route`, none needs `reason`.
67
+ export const EvidenceKindSchema = z.enum(['fail-to-pass-test', 'command', 'screenshot', 'none']);
68
+ export const FailToPassTestEvidenceSchema = z.object({
69
+ kind: z.literal('fail-to-pass-test'),
70
+ claim: z.string().min(1),
71
+ test: z.string().min(1),
72
+ });
73
+ export const CommandEvidenceSchema = z.object({
74
+ kind: z.literal('command'),
75
+ claim: z.string().min(1),
76
+ command: z.string().min(1),
77
+ passWhen: z.string().min(1),
78
+ });
79
+ export const ScreenshotEvidenceSchema = z.object({
80
+ kind: z.literal('screenshot'),
81
+ claim: z.string().min(1),
82
+ route: z.string().min(1),
83
+ });
84
+ export const NoEvidenceSchema = z.object({
85
+ kind: z.literal('none'),
86
+ claim: z.string().min(1),
87
+ reason: z.string().min(1),
88
+ });
89
+ export const EvidencePlanEntrySchema = z.discriminatedUnion('kind', [
90
+ FailToPassTestEvidenceSchema,
91
+ CommandEvidenceSchema,
92
+ ScreenshotEvidenceSchema,
93
+ NoEvidenceSchema,
94
+ ]);
95
+ // A bare YAML key parses to null, which must not fail the whole parse; and unlike
96
+ // targetTypes the key stays optional in the inferred type (no [] default injected).
97
+ const optionalList = (item) => z.preprocess((v) => v ?? undefined, z.array(item).optional());
98
+ export const DesignArtifactSchema = z.object({
99
+ restatedProblem: z.string().min(1),
100
+ approach: DesignApproachSchema,
101
+ interfacesTouched: z.array(stringListItem),
102
+ // .nullish() (not .default()) so a bare YAML key with no items — which js-yaml
103
+ // parses to null, not undefined — still defaults to [] instead of failing the
104
+ // whole DesignArtifactSchema parse.
105
+ targetTypes: z
106
+ .array(TargetTypeSchema)
107
+ .nullish()
108
+ .transform((v) => v ?? []),
109
+ signatures: z
110
+ .array(SignatureSchema)
111
+ .nullish()
112
+ .transform((v) => v ?? []),
113
+ callGraph: z
114
+ .array(CallEdgeSchema)
115
+ .nullish()
116
+ .transform((v) => v ?? []),
117
+ behaviorContract: z.array(stringListItem),
118
+ verificationPlan: z.array(VerificationStepSchema),
119
+ riskBlastRadius: z.string().min(1),
120
+ openQuestions: z.array(z.preprocess(coerceListItem, z.string())),
121
+ edgeInputs: optionalList(stringListItem),
122
+ behaviorDelta: optionalList(BehaviorDeltaRowSchema),
123
+ externalLists: optionalList(ExternalListSchema),
124
+ evidencePlan: optionalList(EvidencePlanEntrySchema),
125
+ });
126
+ const STRING_LIST_FIELDS = ['interfacesTouched', 'behaviorContract', 'openQuestions', 'edgeInputs'];
127
+ /** Paths (e.g. 'edgeInputs[11]', 'externalLists[0].gaps[2]') of the raw design's
128
+ * string-list items that coerceListItem will rewrite. Non-object input or non-array
129
+ * fields yield nothing. */
130
+ export function findCoercedDesignItems(design) {
131
+ if (typeof design !== 'object' || design === null)
132
+ return [];
133
+ const d = design;
134
+ const paths = [];
135
+ const walk = (list, prefix) => {
136
+ if (!Array.isArray(list))
137
+ return;
138
+ list.forEach((item, i) => {
139
+ if (typeof item !== 'string')
140
+ paths.push(`${prefix}[${i}]`);
141
+ });
142
+ };
143
+ for (const field of STRING_LIST_FIELDS)
144
+ walk(d[field], field);
145
+ if (Array.isArray(d.externalLists)) {
146
+ d.externalLists.forEach((row, i) => {
147
+ if (typeof row === 'object' && row !== null) {
148
+ walk(row.gaps, `externalLists[${i}].gaps`);
149
+ }
150
+ });
151
+ }
152
+ return paths;
153
+ }
154
+ //# sourceMappingURL=design.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"design.js","sourceRoot":"","sources":["../src/design.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { z } from 'zod';
2
+ export declare const AcceptanceCriterionSchema: z.ZodObject<{
3
+ name: z.ZodString;
4
+ given: z.ZodArray<z.ZodString>;
5
+ when: z.ZodArray<z.ZodString>;
6
+ then: z.ZodArray<z.ZodString>;
7
+ tracesTo: z.ZodDefault<z.ZodArray<z.ZodString>>;
8
+ }, z.core.$strip>;
9
+ export type AcceptanceCriterion = z.infer<typeof AcceptanceCriterionSchema>;
10
+ //# sourceMappingURL=gherkin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gherkin.d.ts","sourceRoot":"","sources":["../src/gherkin.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,yBAAyB;;;;;;iBAOpC,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC"}
@@ -0,0 +1,13 @@
1
+ // src/gherkin.ts — Gherkin acceptance criterion: the executable-shaped "done" statement
2
+ // carried on every engineering-ready story (#466).
3
+ import { z } from 'zod';
4
+ import { TracesToSchema } from './trace.js';
5
+ export const AcceptanceCriterionSchema = z.object({
6
+ name: z.string().min(1),
7
+ given: z.array(z.string().min(1)),
8
+ when: z.array(z.string().min(1)).min(1),
9
+ then: z.array(z.string().min(1)).min(1),
10
+ /** Intent statement IDs this criterion verifies (#472). Additive — does not bump the schema version. */
11
+ tracesTo: TracesToSchema.default([]),
12
+ });
13
+ //# sourceMappingURL=gherkin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gherkin.js","sourceRoot":"","sources":["../src/gherkin.ts"],"names":[],"mappings":"AAAA,wFAAwF;AACxF,mDAAmD;AACnD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACjC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACvC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACvC,wGAAwG;IACxG,QAAQ,EAAE,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;CACrC,CAAC,CAAC"}