@x12i/made-easy 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.
- package/LICENSE +21 -0
- package/README.md +57 -2
- package/dist/analysis.d.ts +19 -0
- package/dist/analysis.d.ts.map +1 -0
- package/dist/analysis.js +90 -0
- package/dist/analysis.js.map +1 -0
- package/dist/build.d.ts +36 -0
- package/dist/build.d.ts.map +1 -0
- package/dist/build.js +260 -0
- package/dist/build.js.map +1 -0
- package/dist/contracts/api.d.ts +447 -0
- package/dist/contracts/api.d.ts.map +1 -0
- package/dist/contracts/api.js +152 -0
- package/dist/contracts/api.js.map +1 -0
- package/dist/contracts/blocks.d.ts +221 -0
- package/dist/contracts/blocks.d.ts.map +1 -0
- package/dist/contracts/blocks.js +392 -0
- package/dist/contracts/blocks.js.map +1 -0
- package/dist/contracts/diagnostics.d.ts +111 -0
- package/dist/contracts/diagnostics.d.ts.map +1 -0
- package/dist/contracts/diagnostics.js +122 -0
- package/dist/contracts/diagnostics.js.map +1 -0
- package/dist/contracts/index.d.ts +11 -0
- package/dist/contracts/index.d.ts.map +1 -0
- package/dist/contracts/index.js +11 -0
- package/dist/contracts/index.js.map +1 -0
- package/dist/contracts/json-schema.d.ts +5 -0
- package/dist/contracts/json-schema.d.ts.map +1 -0
- package/dist/contracts/json-schema.js +41 -0
- package/dist/contracts/json-schema.js.map +1 -0
- package/dist/contracts/recipe.d.ts +535 -0
- package/dist/contracts/recipe.d.ts.map +1 -0
- package/dist/contracts/recipe.js +380 -0
- package/dist/contracts/recipe.js.map +1 -0
- package/dist/contracts/schemas.d.ts +413 -0
- package/dist/contracts/schemas.d.ts.map +1 -0
- package/dist/contracts/schemas.js +205 -0
- package/dist/contracts/schemas.js.map +1 -0
- package/dist/draft.d.ts +157 -0
- package/dist/draft.d.ts.map +1 -0
- package/dist/draft.js +254 -0
- package/dist/draft.js.map +1 -0
- package/dist/emit-assets.d.ts +2 -0
- package/dist/emit-assets.d.ts.map +1 -0
- package/dist/emit-assets.js +27 -0
- package/dist/emit-assets.js.map +1 -0
- package/dist/index.d.ts +25 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +30 -0
- package/dist/index.js.map +1 -0
- package/dist/markdown-doc.d.ts +59 -0
- package/dist/markdown-doc.d.ts.map +1 -0
- package/dist/markdown-doc.js +187 -0
- package/dist/markdown-doc.js.map +1 -0
- package/dist/model.d.ts +54 -0
- package/dist/model.d.ts.map +1 -0
- package/dist/model.js +244 -0
- package/dist/model.js.map +1 -0
- package/dist/normalize.d.ts +63 -0
- package/dist/normalize.d.ts.map +1 -0
- package/dist/normalize.js +54 -0
- package/dist/normalize.js.map +1 -0
- package/dist/npm.d.ts +24 -0
- package/dist/npm.d.ts.map +1 -0
- package/dist/npm.js +51 -0
- package/dist/npm.js.map +1 -0
- package/dist/render/blocks.d.ts +17 -0
- package/dist/render/blocks.d.ts.map +1 -0
- package/dist/render/blocks.js +384 -0
- package/dist/render/blocks.js.map +1 -0
- package/dist/render/brief.d.ts +77 -0
- package/dist/render/brief.d.ts.map +1 -0
- package/dist/render/brief.js +62 -0
- package/dist/render/brief.js.map +1 -0
- package/dist/render/context.d.ts +43 -0
- package/dist/render/context.d.ts.map +1 -0
- package/dist/render/context.js +88 -0
- package/dist/render/context.js.map +1 -0
- package/dist/render/html.d.ts +19 -0
- package/dist/render/html.d.ts.map +1 -0
- package/dist/render/html.js +178 -0
- package/dist/render/html.js.map +1 -0
- package/dist/render/markdown-out.d.ts +11 -0
- package/dist/render/markdown-out.d.ts.map +1 -0
- package/dist/render/markdown-out.js +121 -0
- package/dist/render/markdown-out.js.map +1 -0
- package/dist/render/pdf.d.ts +23 -0
- package/dist/render/pdf.d.ts.map +1 -0
- package/dist/render/pdf.js +138 -0
- package/dist/render/pdf.js.map +1 -0
- package/dist/render/prose.d.ts +15 -0
- package/dist/render/prose.d.ts.map +1 -0
- package/dist/render/prose.js +110 -0
- package/dist/render/prose.js.map +1 -0
- package/dist/scaffold.d.ts +13 -0
- package/dist/scaffold.d.ts.map +1 -0
- package/dist/scaffold.js +393 -0
- package/dist/scaffold.js.map +1 -0
- package/dist/sdk.d.ts +56 -0
- package/dist/sdk.d.ts.map +1 -0
- package/dist/sdk.js +238 -0
- package/dist/sdk.js.map +1 -0
- package/dist/source.d.ts +57 -0
- package/dist/source.d.ts.map +1 -0
- package/dist/source.js +289 -0
- package/dist/source.js.map +1 -0
- package/dist/theme/book.d.ts +10 -0
- package/dist/theme/book.d.ts.map +1 -0
- package/dist/theme/book.js +198 -0
- package/dist/theme/book.js.map +1 -0
- package/dist/util.d.ts +14 -0
- package/dist/util.d.ts.map +1 -0
- package/dist/util.js +69 -0
- package/dist/util.js.map +1 -0
- package/dist/validate.d.ts +36 -0
- package/dist/validate.d.ts.map +1 -0
- package/dist/validate.js +986 -0
- package/dist/validate.js.map +1 -0
- package/dist/verify.d.ts +35 -0
- package/dist/verify.d.ts.map +1 -0
- package/dist/verify.js +112 -0
- package/dist/verify.js.map +1 -0
- package/dist/version.d.ts +3 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +4 -0
- package/dist/version.js.map +1 -0
- package/dist/yamlfile.d.ts +22 -0
- package/dist/yamlfile.d.ts.map +1 -0
- package/dist/yamlfile.js +129 -0
- package/dist/yamlfile.js.map +1 -0
- package/package.json +64 -4
- package/recipes/index.json +282 -0
- package/recipes/shared-1.0.0.json +456 -0
- package/schemas/artifact.v1.json +36 -0
- package/schemas/assets.v1.json +61 -0
- package/schemas/block.v1.json +27 -0
- package/schemas/blocks/brief.v1.json +20 -0
- package/schemas/blocks/callout.v1.json +25 -0
- package/schemas/blocks/code.v1.json +21 -0
- package/schemas/blocks/decision.v1.json +80 -0
- package/schemas/blocks/evidence-comparison.v1.json +33 -0
- package/schemas/blocks/example.v1.json +52 -0
- package/schemas/blocks/figure.v1.json +22 -0
- package/schemas/blocks/human-action.v1.json +42 -0
- package/schemas/blocks/job-map.v1.json +170 -0
- package/schemas/blocks/pause.v1.json +25 -0
- package/schemas/blocks/reference-profile.v1.json +41 -0
- package/schemas/blocks/review-checklist.v1.json +19 -0
- package/schemas/blocks/table.v1.json +59 -0
- package/schemas/brief.v1.json +157 -0
- package/schemas/build-request.v1.json +173 -0
- package/schemas/build-result.v1.json +171 -0
- package/schemas/checks.v1.json +149 -0
- package/schemas/create-request.v1.json +47 -0
- package/schemas/diagnostic.v1.json +50 -0
- package/schemas/draft-request.v1.json +196 -0
- package/schemas/guide.v1.json +172 -0
- package/schemas/job.v1.json +107 -0
- package/schemas/preview-request.v1.json +153 -0
- package/schemas/preview-result.v1.json +84 -0
- package/schemas/problem.v1.json +78 -0
- package/schemas/recipe-definition.v1.json +673 -0
- package/schemas/source-ref.v1.json +111 -0
- package/schemas/sources.v1.json +158 -0
- package/schemas/validate-request.v1.json +135 -0
- package/schemas/validate-result.v1.json +110 -0
- package/schemas/verification.v1.json +77 -0
- package/themes/book/1.0.0/theme.css +190 -0
- package/themes/book/1.0.0/theme.json +5 -0
|
@@ -0,0 +1,380 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { BLOCK_TYPES } from './blocks.js';
|
|
3
|
+
import { HUMAN_ROLES, OPERATOR_ROLES, SUBJECT_TYPES, } from './schemas.js';
|
|
4
|
+
import { MadeEasyError } from './diagnostics.js';
|
|
5
|
+
export const RECIPE_SCHEMA_VERSION = '1.0';
|
|
6
|
+
export const SHARED_RECIPE_ID = 'shared';
|
|
7
|
+
export const SHARED_RECIPE_VERSION = '1.0.0';
|
|
8
|
+
export const PRESETS = ['quickstart', 'handbook'];
|
|
9
|
+
/* -------------------------------- schemas -------------------------------- */
|
|
10
|
+
export const BlockRequirementSchema = z.strictObject({
|
|
11
|
+
type: z.enum(BLOCK_TYPES),
|
|
12
|
+
min: z.number().int().min(1),
|
|
13
|
+
/** Dotted field paths. `list[].field` checks every item. Arrays must be non-empty. */
|
|
14
|
+
fields: z.array(z.string()).optional(),
|
|
15
|
+
/** Only blocks whose props match these exact values count. */
|
|
16
|
+
where: z.record(z.string(), z.string()).optional(),
|
|
17
|
+
label: z.string().optional(),
|
|
18
|
+
});
|
|
19
|
+
export const RoleDefinitionSchema = z.strictObject({
|
|
20
|
+
role: z.enum(HUMAN_ROLES),
|
|
21
|
+
title: z.string(),
|
|
22
|
+
purpose: z.string(),
|
|
23
|
+
requirements: z.array(BlockRequirementSchema),
|
|
24
|
+
});
|
|
25
|
+
export const ProfileFieldSchema = z.strictObject({
|
|
26
|
+
key: z.string(),
|
|
27
|
+
label: z.string(),
|
|
28
|
+
optional: z.boolean().optional(),
|
|
29
|
+
help: z.string().optional(),
|
|
30
|
+
});
|
|
31
|
+
export const ProfileDefinitionSchema = z.strictObject({
|
|
32
|
+
title: z.string(),
|
|
33
|
+
description: z.string(),
|
|
34
|
+
referenceFields: z.array(ProfileFieldSchema),
|
|
35
|
+
/** Extra fields required when the distribution is npm (sdk profile). */
|
|
36
|
+
npmFields: z.array(ProfileFieldSchema).optional(),
|
|
37
|
+
requiredOperatorRoles: z.array(z.enum(OPERATOR_ROLES)),
|
|
38
|
+
requiresRunnableExample: z.boolean(),
|
|
39
|
+
requiresExactVersion: z.boolean(),
|
|
40
|
+
});
|
|
41
|
+
export const PresetDefinitionSchema = z.strictObject({
|
|
42
|
+
title: z.string(),
|
|
43
|
+
description: z.string(),
|
|
44
|
+
minWords: z.number().int().min(0),
|
|
45
|
+
roleExtras: z.record(z.string(), z.array(BlockRequirementSchema)),
|
|
46
|
+
});
|
|
47
|
+
export const RULE_KEYS = [
|
|
48
|
+
'placeholders',
|
|
49
|
+
'missingBlocks',
|
|
50
|
+
'missingFields',
|
|
51
|
+
'shortContent',
|
|
52
|
+
'stalePins',
|
|
53
|
+
'unverifiedExamples',
|
|
54
|
+
'unresolvedClaims',
|
|
55
|
+
'privateReferences',
|
|
56
|
+
'profileFields',
|
|
57
|
+
'sdkExactness',
|
|
58
|
+
'unstableAnchors',
|
|
59
|
+
'incompleteData',
|
|
60
|
+
];
|
|
61
|
+
const SeverityOrOff = z.enum(['error', 'warning', 'info', 'off']);
|
|
62
|
+
export const RuleSeveritiesSchema = z.strictObject(Object.fromEntries(RULE_KEYS.map((k) => [k, SeverityOrOff])));
|
|
63
|
+
export const DataRequirementsSchema = z.strictObject({
|
|
64
|
+
brief: z.array(z.string()),
|
|
65
|
+
input: z.array(z.string()),
|
|
66
|
+
pauseRule: z.array(z.string()),
|
|
67
|
+
reportBackField: z.array(z.string()),
|
|
68
|
+
check: z.array(z.string()),
|
|
69
|
+
/** Keys that must be present (arrays may be empty). */
|
|
70
|
+
resultPresent: z.array(z.string()),
|
|
71
|
+
});
|
|
72
|
+
export const RecipeDefinitionSchema = z.strictObject({
|
|
73
|
+
schemaVersion: z.string(),
|
|
74
|
+
id: z.string(),
|
|
75
|
+
version: z.string(),
|
|
76
|
+
title: z.string(),
|
|
77
|
+
description: z.string(),
|
|
78
|
+
roles: z.array(RoleDefinitionSchema),
|
|
79
|
+
operatorRoles: z.array(z.strictObject({ role: z.enum(OPERATOR_ROLES), title: z.string(), purpose: z.string() })),
|
|
80
|
+
data: DataRequirementsSchema,
|
|
81
|
+
profiles: z.record(z.enum(SUBJECT_TYPES), ProfileDefinitionSchema),
|
|
82
|
+
presets: z.record(z.enum(PRESETS), PresetDefinitionSchema),
|
|
83
|
+
validation: z.strictObject({ draft: RuleSeveritiesSchema, release: RuleSeveritiesSchema }),
|
|
84
|
+
});
|
|
85
|
+
/* ------------------------------ the shared recipe ------------------------- */
|
|
86
|
+
const decisionFields = ['job', 'question', 'owner', 'dependsOn'];
|
|
87
|
+
export const SHARED_RECIPE_V1 = {
|
|
88
|
+
schemaVersion: RECIPE_SCHEMA_VERSION,
|
|
89
|
+
id: SHARED_RECIPE_ID,
|
|
90
|
+
version: SHARED_RECIPE_VERSION,
|
|
91
|
+
title: 'Made Easy shared recipe',
|
|
92
|
+
description: 'Six required human section roles in order, one operator reference, four subject profiles and two presets. A quickstart compresses one job; a handbook expands the same job\u2019s mechanism, decisions and exceptions.',
|
|
93
|
+
roles: [
|
|
94
|
+
{
|
|
95
|
+
role: 'decision',
|
|
96
|
+
title: 'The decision',
|
|
97
|
+
purpose: 'State one concrete job, the question it answers, the decision owner, and what the decision depends on.',
|
|
98
|
+
requirements: [{ type: 'decision', min: 1, fields: decisionFields, label: 'decision block' }],
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
role: 'working-model',
|
|
102
|
+
title: 'How the job works',
|
|
103
|
+
purpose: 'Map inputs, operator stages, outputs, side effects and failure points. Explain mechanisms that change a decision or how the reader interprets a failure.',
|
|
104
|
+
requirements: [
|
|
105
|
+
{
|
|
106
|
+
type: 'job-map',
|
|
107
|
+
min: 1,
|
|
108
|
+
fields: ['inputs', 'stages', 'outputs', 'sideEffects', 'failurePoints'],
|
|
109
|
+
label: 'job map',
|
|
110
|
+
},
|
|
111
|
+
],
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
role: 'ownership',
|
|
115
|
+
title: 'Who does what',
|
|
116
|
+
purpose: 'Assign human decisions, human actions and delegated work. Each pause rule has a trigger, a decision owner, work that may continue, and a resume condition.',
|
|
117
|
+
requirements: [
|
|
118
|
+
{ type: 'human-action', min: 1, where: { kind: 'decision' }, fields: ['actor', 'action'], label: 'human decision' },
|
|
119
|
+
{ type: 'human-action', min: 1, where: { kind: 'delegated' }, fields: ['actor', 'action'], label: 'delegated work' },
|
|
120
|
+
{ type: 'pause', min: 1, fields: ['rule'], label: 'pause rule' },
|
|
121
|
+
],
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
role: 'operator-brief',
|
|
125
|
+
title: 'The operator brief',
|
|
126
|
+
purpose: 'Show the reusable brief with goal, inputs, authority, pauses, acceptance checks and what to return. Link the exact operator-reference revision. Leave procedure selection inside the authorized scope to the operator.',
|
|
127
|
+
requirements: [{ type: 'brief', min: 1, label: 'brief block' }],
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
role: 'evidence-review',
|
|
131
|
+
title: 'Reviewing the evidence',
|
|
132
|
+
purpose: 'Show a usable result and a plausible failure from the same job. Link both to the same acceptance checks and show what makes a result partial or invalid.',
|
|
133
|
+
requirements: [
|
|
134
|
+
{
|
|
135
|
+
type: 'evidence-comparison',
|
|
136
|
+
min: 1,
|
|
137
|
+
fields: ['usable', 'flawed', 'decisiveChecks', 'recovery', 'partialWhen', 'invalidWhen'],
|
|
138
|
+
label: 'evidence comparison',
|
|
139
|
+
},
|
|
140
|
+
{ type: 'review-checklist', min: 1, label: 'review checklist' },
|
|
141
|
+
],
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
role: 'next-decision',
|
|
145
|
+
title: 'The next decision',
|
|
146
|
+
purpose: 'Provide choices to accept, request a targeted rerun, authorize a next action, or escalate where applicable. State who decides and what evidence supports each choice.',
|
|
147
|
+
requirements: [
|
|
148
|
+
{
|
|
149
|
+
type: 'decision',
|
|
150
|
+
min: 1,
|
|
151
|
+
fields: ['question', 'owner', 'options', 'options[].kind', 'options[].decidedBy', 'options[].evidence'],
|
|
152
|
+
label: 'next-decision block',
|
|
153
|
+
},
|
|
154
|
+
],
|
|
155
|
+
},
|
|
156
|
+
],
|
|
157
|
+
operatorRoles: [
|
|
158
|
+
{ role: 'scope', title: 'Scope and profile', purpose: 'Profile facts the operator must honour.' },
|
|
159
|
+
{ role: 'procedure', title: 'Procedure', purpose: 'Exact commands and procedures, with supported versions.' },
|
|
160
|
+
{ role: 'interface', title: 'Interface', purpose: 'API shapes and example output.' },
|
|
161
|
+
{ role: 'example', title: 'Runnable example', purpose: 'A complete runnable example and its expected result.' },
|
|
162
|
+
{ role: 'recovery', title: 'Recovery', purpose: 'Recovery instructions for each failure point.' },
|
|
163
|
+
],
|
|
164
|
+
data: {
|
|
165
|
+
brief: [
|
|
166
|
+
'outcome',
|
|
167
|
+
'inputs',
|
|
168
|
+
'authority.reads',
|
|
169
|
+
'authority.changes',
|
|
170
|
+
'limits',
|
|
171
|
+
'pauseRules',
|
|
172
|
+
'acceptanceChecks',
|
|
173
|
+
'reportBack',
|
|
174
|
+
'operatorReference.entries',
|
|
175
|
+
],
|
|
176
|
+
input: ['label', 'placeholder', 'example'],
|
|
177
|
+
pauseRule: ['trigger', 'owner', 'mayContinue', 'resumeWhen'],
|
|
178
|
+
reportBackField: ['label'],
|
|
179
|
+
check: ['observable', 'evidenceSource', 'passCondition', 'onMissing', 'onContradictory'],
|
|
180
|
+
resultPresent: ['summary', 'checks', 'completedActions', 'observations', 'gaps', 'nextSteps'],
|
|
181
|
+
},
|
|
182
|
+
profiles: {
|
|
183
|
+
market: {
|
|
184
|
+
title: 'Market',
|
|
185
|
+
description: 'A market or audience finding: who was measured, where, when, how, and whether comparisons hold.',
|
|
186
|
+
referenceFields: [
|
|
187
|
+
{ key: 'audience', label: 'Audience' },
|
|
188
|
+
{ key: 'market', label: 'Market' },
|
|
189
|
+
{ key: 'timeframe', label: 'Timeframe' },
|
|
190
|
+
{ key: 'method', label: 'Method' },
|
|
191
|
+
{ key: 'sampleFrame', label: 'Sample frame' },
|
|
192
|
+
{ key: 'comparability', label: 'Comparability rules' },
|
|
193
|
+
],
|
|
194
|
+
requiredOperatorRoles: ['scope', 'procedure', 'recovery'],
|
|
195
|
+
requiresRunnableExample: false,
|
|
196
|
+
requiresExactVersion: false,
|
|
197
|
+
},
|
|
198
|
+
product: {
|
|
199
|
+
title: 'Product',
|
|
200
|
+
description: 'A product configured or operated by a job: which model or release, on what platform, with what result.',
|
|
201
|
+
referenceFields: [
|
|
202
|
+
{ key: 'modelOrRelease', label: 'Model or release' },
|
|
203
|
+
{ key: 'platform', label: 'Platform' },
|
|
204
|
+
{ key: 'configuration', label: 'Configuration' },
|
|
205
|
+
{ key: 'resultingStateEvidence', label: 'Evidence of the resulting state' },
|
|
206
|
+
],
|
|
207
|
+
requiredOperatorRoles: ['scope', 'procedure', 'recovery'],
|
|
208
|
+
requiresRunnableExample: false,
|
|
209
|
+
requiresExactVersion: false,
|
|
210
|
+
},
|
|
211
|
+
service: {
|
|
212
|
+
title: 'Service',
|
|
213
|
+
description: 'A service obtained or changed by a job: region, plan, eligibility, terms, and provider confirmation.',
|
|
214
|
+
referenceFields: [
|
|
215
|
+
{ key: 'region', label: 'Region' },
|
|
216
|
+
{ key: 'plan', label: 'Plan' },
|
|
217
|
+
{ key: 'eligibility', label: 'Eligibility' },
|
|
218
|
+
{ key: 'effectiveTerms', label: 'Effective terms', optional: true, help: 'Where relevant.' },
|
|
219
|
+
{ key: 'confirmationEvidence', label: 'Provider confirmation or delivery evidence' },
|
|
220
|
+
],
|
|
221
|
+
requiredOperatorRoles: ['scope', 'procedure', 'recovery'],
|
|
222
|
+
requiresRunnableExample: false,
|
|
223
|
+
requiresExactVersion: false,
|
|
224
|
+
},
|
|
225
|
+
sdk: {
|
|
226
|
+
title: 'SDK',
|
|
227
|
+
description: 'A software distribution used by a job: exact version, runtime, interface, test environment and a runnable example.',
|
|
228
|
+
referenceFields: [
|
|
229
|
+
{ key: 'distribution', label: 'Distribution' },
|
|
230
|
+
{ key: 'version', label: 'Exact version' },
|
|
231
|
+
{ key: 'runtime', label: 'Runtime' },
|
|
232
|
+
{ key: 'interface', label: 'Interface' },
|
|
233
|
+
{ key: 'testEnvironment', label: 'Test environment' },
|
|
234
|
+
],
|
|
235
|
+
npmFields: [
|
|
236
|
+
{ key: 'package', label: 'Package name' },
|
|
237
|
+
{ key: 'requested', label: 'Requested range' },
|
|
238
|
+
{ key: 'integrity', label: 'Registry integrity' },
|
|
239
|
+
{ key: 'registry', label: 'Registry' },
|
|
240
|
+
],
|
|
241
|
+
requiredOperatorRoles: ['scope', 'procedure', 'interface', 'example', 'recovery'],
|
|
242
|
+
requiresRunnableExample: true,
|
|
243
|
+
requiresExactVersion: true,
|
|
244
|
+
},
|
|
245
|
+
},
|
|
246
|
+
presets: {
|
|
247
|
+
quickstart: {
|
|
248
|
+
title: 'Quickstart',
|
|
249
|
+
description: 'Compresses one job into the six required sections.',
|
|
250
|
+
minWords: 25,
|
|
251
|
+
roleExtras: {},
|
|
252
|
+
},
|
|
253
|
+
handbook: {
|
|
254
|
+
title: 'Handbook',
|
|
255
|
+
description: 'Expands the same job\u2019s mechanism, decisions and exceptions.',
|
|
256
|
+
minWords: 110,
|
|
257
|
+
roleExtras: {
|
|
258
|
+
decision: [{ type: 'decision', min: 1, fields: ['options', 'options[].consequence'], label: 'decision consequences' }],
|
|
259
|
+
'working-model': [{ type: 'job-map', min: 1, fields: ['mechanisms'], label: 'mechanisms' }],
|
|
260
|
+
ownership: [{ type: 'callout', min: 1, where: { variant: 'exception' }, fields: ['text'], label: 'exception' }],
|
|
261
|
+
'next-decision': [{ type: 'decision', min: 1, fields: ['options[].consequence'], label: 'next-decision consequences' }],
|
|
262
|
+
},
|
|
263
|
+
},
|
|
264
|
+
},
|
|
265
|
+
validation: {
|
|
266
|
+
draft: {
|
|
267
|
+
placeholders: 'warning',
|
|
268
|
+
missingBlocks: 'warning',
|
|
269
|
+
missingFields: 'warning',
|
|
270
|
+
shortContent: 'warning',
|
|
271
|
+
stalePins: 'warning',
|
|
272
|
+
unverifiedExamples: 'warning',
|
|
273
|
+
unresolvedClaims: 'warning',
|
|
274
|
+
privateReferences: 'info',
|
|
275
|
+
profileFields: 'warning',
|
|
276
|
+
sdkExactness: 'warning',
|
|
277
|
+
unstableAnchors: 'info',
|
|
278
|
+
incompleteData: 'warning',
|
|
279
|
+
},
|
|
280
|
+
release: {
|
|
281
|
+
placeholders: 'error',
|
|
282
|
+
missingBlocks: 'error',
|
|
283
|
+
missingFields: 'error',
|
|
284
|
+
shortContent: 'error',
|
|
285
|
+
stalePins: 'error',
|
|
286
|
+
unverifiedExamples: 'error',
|
|
287
|
+
unresolvedClaims: 'error',
|
|
288
|
+
privateReferences: 'error',
|
|
289
|
+
profileFields: 'error',
|
|
290
|
+
sdkExactness: 'error',
|
|
291
|
+
unstableAnchors: 'warning',
|
|
292
|
+
incompleteData: 'error',
|
|
293
|
+
},
|
|
294
|
+
},
|
|
295
|
+
};
|
|
296
|
+
const DEFINITIONS = {
|
|
297
|
+
[`${SHARED_RECIPE_ID}@${SHARED_RECIPE_VERSION}`]: SHARED_RECIPE_V1,
|
|
298
|
+
};
|
|
299
|
+
export function listRecipeDefinitions() {
|
|
300
|
+
return Object.values(DEFINITIONS);
|
|
301
|
+
}
|
|
302
|
+
export function parseRecipeId(id) {
|
|
303
|
+
const [profile, preset, ...rest] = id.split('.');
|
|
304
|
+
if (rest.length || !profile || !preset)
|
|
305
|
+
return undefined;
|
|
306
|
+
if (!SUBJECT_TYPES.includes(profile))
|
|
307
|
+
return undefined;
|
|
308
|
+
if (!PRESETS.includes(preset))
|
|
309
|
+
return undefined;
|
|
310
|
+
return { profile: profile, preset: preset };
|
|
311
|
+
}
|
|
312
|
+
function summarize(def, profile, preset) {
|
|
313
|
+
const p = def.profiles[profile];
|
|
314
|
+
const pr = def.presets[preset];
|
|
315
|
+
return {
|
|
316
|
+
id: `${profile}.${preset}`,
|
|
317
|
+
version: def.version,
|
|
318
|
+
definition: def.id,
|
|
319
|
+
profile,
|
|
320
|
+
preset,
|
|
321
|
+
title: `${p.title} ${pr.title}`,
|
|
322
|
+
description: `${pr.description} Subject profile: ${p.description}`,
|
|
323
|
+
roles: def.roles.map((r) => ({ role: r.role, title: r.title })),
|
|
324
|
+
};
|
|
325
|
+
}
|
|
326
|
+
/** All eight discoverable recipe IDs (four profiles x two presets) for every available version. */
|
|
327
|
+
export function listGuideRecipes() {
|
|
328
|
+
const out = [];
|
|
329
|
+
for (const def of listRecipeDefinitions()) {
|
|
330
|
+
for (const profile of SUBJECT_TYPES)
|
|
331
|
+
for (const preset of PRESETS)
|
|
332
|
+
out.push(summarize(def, profile, preset));
|
|
333
|
+
}
|
|
334
|
+
return out;
|
|
335
|
+
}
|
|
336
|
+
export function findRecipeDefinition(version) {
|
|
337
|
+
if (!version)
|
|
338
|
+
return SHARED_RECIPE_V1;
|
|
339
|
+
return DEFINITIONS[`${SHARED_RECIPE_ID}@${version}`];
|
|
340
|
+
}
|
|
341
|
+
/**
|
|
342
|
+
* Resolve a recipe by its exact ID and version. Throws MadeEasyError(RECIPE_UNKNOWN |
|
|
343
|
+
* RECIPE_VERSION_UNSUPPORTED) so callers can surface the code unchanged.
|
|
344
|
+
*/
|
|
345
|
+
export function getGuideRecipe(id, version) {
|
|
346
|
+
const parsed = parseRecipeId(id);
|
|
347
|
+
if (!parsed) {
|
|
348
|
+
throw new MadeEasyError('RECIPE_UNKNOWN', `Unknown recipe "${id}". Use <profile>.<preset>, for example market.quickstart or sdk.handbook.`);
|
|
349
|
+
}
|
|
350
|
+
const def = findRecipeDefinition(version);
|
|
351
|
+
if (!def) {
|
|
352
|
+
const available = listRecipeDefinitions().map((d) => d.version).join(', ');
|
|
353
|
+
throw new MadeEasyError('RECIPE_VERSION_UNSUPPORTED', `Recipe version "${version}" is not available. Available versions: ${available}.`);
|
|
354
|
+
}
|
|
355
|
+
const { profile, preset } = parsed;
|
|
356
|
+
const presetDef = def.presets[preset];
|
|
357
|
+
const profileDef = def.profiles[profile];
|
|
358
|
+
const roleDetails = def.roles.map((r, i) => ({
|
|
359
|
+
role: r.role,
|
|
360
|
+
title: r.title,
|
|
361
|
+
purpose: r.purpose,
|
|
362
|
+
order: i,
|
|
363
|
+
minWords: presetDef.minWords,
|
|
364
|
+
requirements: [...r.requirements, ...(presetDef.roleExtras[r.role] ?? [])],
|
|
365
|
+
}));
|
|
366
|
+
return {
|
|
367
|
+
...summarize(def, profile, preset),
|
|
368
|
+
schemaVersion: def.schemaVersion,
|
|
369
|
+
roleDetails,
|
|
370
|
+
operatorRoles: def.operatorRoles.map((o) => ({ ...o, required: profileDef.requiredOperatorRoles.includes(o.role) })),
|
|
371
|
+
profileDefinition: profileDef,
|
|
372
|
+
presetDefinition: { title: presetDef.title, description: presetDef.description, minWords: presetDef.minWords },
|
|
373
|
+
data: def.data,
|
|
374
|
+
validation: def.validation,
|
|
375
|
+
};
|
|
376
|
+
}
|
|
377
|
+
export function ruleSeverity(recipe, mode, rule) {
|
|
378
|
+
return recipe.validation[mode][rule];
|
|
379
|
+
}
|
|
380
|
+
//# sourceMappingURL=recipe.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recipe.js","sourceRoot":"","sources":["../../src/contracts/recipe.ts"],"names":[],"mappings":"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"}
|