@haibun/core 3.8.4 → 4.0.0-alpha.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/build/currentVersion.d.ts +1 -1
- package/build/currentVersion.d.ts.map +1 -1
- package/build/currentVersion.js +1 -1
- package/build/currentVersion.js.map +1 -1
- package/build/lib/EventLogger.d.ts +8 -5
- package/build/lib/EventLogger.d.ts.map +1 -1
- package/build/lib/EventLogger.js +15 -12
- package/build/lib/EventLogger.js.map +1 -1
- package/build/lib/core/flow-runner.js +6 -6
- package/build/lib/core/flow-runner.js.map +1 -1
- package/build/lib/defs.d.ts +13 -2
- package/build/lib/defs.d.ts.map +1 -1
- package/build/lib/defs.js.map +1 -1
- package/build/lib/feature-variables.d.ts.map +1 -1
- package/build/lib/feature-variables.js +8 -3
- package/build/lib/feature-variables.js.map +1 -1
- package/build/lib/namedVars.d.ts.map +1 -1
- package/build/lib/namedVars.js +2 -1
- package/build/lib/namedVars.js.map +1 -1
- package/build/lib/step-dispatch.d.ts +105 -0
- package/build/lib/step-dispatch.d.ts.map +1 -0
- package/build/lib/step-dispatch.js +206 -0
- package/build/lib/step-dispatch.js.map +1 -0
- package/build/lib/step-helpers.d.ts +10 -0
- package/build/lib/step-helpers.d.ts.map +1 -0
- package/build/lib/step-helpers.js +16 -0
- package/build/lib/step-helpers.js.map +1 -0
- package/build/lib/step-validation.d.ts +26 -0
- package/build/lib/step-validation.d.ts.map +1 -0
- package/build/lib/step-validation.js +26 -0
- package/build/lib/step-validation.js.map +1 -0
- package/build/lib/stepper-registry.d.ts +5 -2
- package/build/lib/stepper-registry.d.ts.map +1 -1
- package/build/lib/stepper-registry.js +2 -1
- package/build/lib/stepper-registry.js.map +1 -1
- package/build/lib/test/EventCollectorStepper.d.ts +6 -4
- package/build/lib/test/EventCollectorStepper.d.ts.map +1 -1
- package/build/lib/test/EventCollectorStepper.js +14 -22
- package/build/lib/test/EventCollectorStepper.js.map +1 -1
- package/build/lib/test/TestStepsWithOptions.d.ts +5 -1
- package/build/lib/test/TestStepsWithOptions.d.ts.map +1 -1
- package/build/lib/test/TestStepsWithOptions.js +4 -2
- package/build/lib/test/TestStepsWithOptions.js.map +1 -1
- package/build/lib/util/index.d.ts +12 -4
- package/build/lib/util/index.d.ts.map +1 -1
- package/build/lib/util/index.js +45 -4
- package/build/lib/util/index.js.map +1 -1
- package/build/phases/Executor.d.ts.map +1 -1
- package/build/phases/Executor.js +3 -2
- package/build/phases/Executor.js.map +1 -1
- package/build/schema/protocol.d.ts +18 -12
- package/build/schema/protocol.d.ts.map +1 -1
- package/build/schema/protocol.js +3 -3
- package/build/schema/protocol.js.map +1 -1
- package/build/steps/activities-stepper.d.ts +4 -4
- package/build/steps/activities-stepper.d.ts.map +1 -1
- package/build/steps/activities-stepper.js +12 -7
- package/build/steps/activities-stepper.js.map +1 -1
- package/build/steps/debugger-stepper.js +1 -1
- package/build/steps/debugger-stepper.js.map +1 -1
- package/build/steps/finalizer-stepper.d.ts +14 -0
- package/build/steps/finalizer-stepper.d.ts.map +1 -0
- package/build/steps/finalizer-stepper.js +71 -0
- package/build/steps/finalizer-stepper.js.map +1 -0
- package/build/steps/haibun.d.ts +4 -4
- package/build/steps/logic-stepper.d.ts +5 -1
- package/build/steps/logic-stepper.d.ts.map +1 -1
- package/build/steps/logic-stepper.js +4 -2
- package/build/steps/logic-stepper.js.map +1 -1
- package/build/steps/narrator.d.ts +4 -4
- package/build/steps/variables-stepper.d.ts +25 -25
- package/package.json +2 -2
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { namedInterpolation, mapInputToStepValues } from './namedVars.js';
|
|
3
|
+
import { constructorName } from './util/index.js';
|
|
4
|
+
import { DOMAIN_STRING, normalizeDomainKey } from './domain-types.js';
|
|
5
|
+
import { StepperRegistry } from './stepper-registry.js';
|
|
6
|
+
/**
|
|
7
|
+
* Build a registry of step tools from the given steppers.
|
|
8
|
+
* Each key is `${stepperName}-${stepName}` (e.g. `MuskegStepper-getTypes`).
|
|
9
|
+
* Steps with `expose: false` are excluded.
|
|
10
|
+
*
|
|
11
|
+
* Used by MCP, SSE, and any future transport.
|
|
12
|
+
*/
|
|
13
|
+
export function buildStepRegistry(steppers, world) {
|
|
14
|
+
const registry = new Map();
|
|
15
|
+
for (const stepper of steppers) {
|
|
16
|
+
const stepperName = constructorName(stepper);
|
|
17
|
+
for (const [stepName, stepDef] of Object.entries(stepper.steps)) {
|
|
18
|
+
if (stepDef.expose === false)
|
|
19
|
+
continue;
|
|
20
|
+
const { inputSchema, paramSchemas } = buildInputSchema(stepDef, world);
|
|
21
|
+
const name = stepMethodName(stepperName, stepName);
|
|
22
|
+
let outputSchema;
|
|
23
|
+
if (stepDef.outputSchema) {
|
|
24
|
+
try {
|
|
25
|
+
outputSchema = z.toJSONSchema(stepDef.outputSchema);
|
|
26
|
+
}
|
|
27
|
+
catch { /* skip if schema can't be converted */ }
|
|
28
|
+
}
|
|
29
|
+
registry.set(name, {
|
|
30
|
+
name,
|
|
31
|
+
description: stepDef.gwta || stepName,
|
|
32
|
+
inputSchema,
|
|
33
|
+
paramSchemas,
|
|
34
|
+
outputSchema,
|
|
35
|
+
stepperName,
|
|
36
|
+
stepName,
|
|
37
|
+
handler: createStepHandler(stepperName, stepName, stepDef),
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return registry;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Validate input against a step tool's Zod schemas.
|
|
45
|
+
* Returns validated (parsed) input on success, throws with descriptive errors on failure.
|
|
46
|
+
*/
|
|
47
|
+
export function validateToolInput(tool, input) {
|
|
48
|
+
const validated = { ...input };
|
|
49
|
+
const errors = [];
|
|
50
|
+
const required = tool.inputSchema.required || [];
|
|
51
|
+
for (const key of required) {
|
|
52
|
+
if (!(key in input) || input[key] === undefined) {
|
|
53
|
+
errors.push(`"${key}": required`);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
for (const [key, value] of Object.entries(input)) {
|
|
57
|
+
const schema = tool.paramSchemas.get(key);
|
|
58
|
+
if (schema) {
|
|
59
|
+
const result = schema.safeParse(value);
|
|
60
|
+
if (result.success) {
|
|
61
|
+
validated[key] = result.data;
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
const issues = result.error.issues.map(i => i.path.length ? `${i.path.join('.')}: ${i.message}` : i.message).join('; ');
|
|
65
|
+
errors.push(`"${key}": ${issues}`);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
if (errors.length) {
|
|
70
|
+
throw new Error(`${tool.name} validation failed: ${errors.join(', ')}`);
|
|
71
|
+
}
|
|
72
|
+
return validated;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Generate the canonical RPC method name for a step.
|
|
76
|
+
* Used by both server (registry keys) and client (typed imports).
|
|
77
|
+
*
|
|
78
|
+
* Accepts either a stepper class/instance or a stepper name string.
|
|
79
|
+
*/
|
|
80
|
+
export function stepMethodName(stepperOrName, stepName) {
|
|
81
|
+
const name = typeof stepperOrName === 'string'
|
|
82
|
+
? stepperOrName
|
|
83
|
+
: ('steps' in stepperOrName ? constructorName(stepperOrName) : stepperOrName.name);
|
|
84
|
+
return `${name}-${stepName}`;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Create a handler that calls the step action directly with validated input.
|
|
88
|
+
* RPC transports validate input via validateToolInput() then call this handler.
|
|
89
|
+
* The action receives typed values directly — no string round-tripping through
|
|
90
|
+
* mapInputToStepValues/resolveVariable. A minimal featureStep is provided for provenance.
|
|
91
|
+
*/
|
|
92
|
+
export function createStepHandler(stepperName, stepName, stepDef) {
|
|
93
|
+
return async (input) => {
|
|
94
|
+
const featureStep = {
|
|
95
|
+
in: stepDef.gwta || '',
|
|
96
|
+
action: {
|
|
97
|
+
stepperName,
|
|
98
|
+
actionName: stepName,
|
|
99
|
+
step: stepDef,
|
|
100
|
+
stepValuesMap: mapInputToStepValues(input, stepDef.gwta || ''),
|
|
101
|
+
},
|
|
102
|
+
seqPath: [0],
|
|
103
|
+
source: { path: 'step-dispatch' },
|
|
104
|
+
};
|
|
105
|
+
try {
|
|
106
|
+
const actionResult = await stepDef.action(input, featureStep);
|
|
107
|
+
if (actionResult.ok) {
|
|
108
|
+
const products = 'products' in actionResult ? actionResult.products : {};
|
|
109
|
+
return { ok: true, products: products || {} };
|
|
110
|
+
}
|
|
111
|
+
return { ok: false, error: actionResult.message || 'Step failed' };
|
|
112
|
+
}
|
|
113
|
+
catch (caught) {
|
|
114
|
+
const err = caught instanceof Error ? caught : new Error(String(caught));
|
|
115
|
+
return { ok: false, error: `${stepperName}-${stepName}: ${err.message}` };
|
|
116
|
+
}
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Build a JSON Schema and Zod param schemas for a step's input parameters.
|
|
121
|
+
* Uses z.toJSONSchema() to convert Zod domain schemas into full JSON Schema
|
|
122
|
+
* (enums, object structures, descriptions, etc.) for MCP and SSE consumers.
|
|
123
|
+
* Returns both the JSON Schema (for documentation/discovery) and the Zod schemas (for runtime validation).
|
|
124
|
+
*/
|
|
125
|
+
function buildInputSchema(stepDef, world) {
|
|
126
|
+
const properties = {};
|
|
127
|
+
const required = [];
|
|
128
|
+
const paramSchemas = new Map();
|
|
129
|
+
if (stepDef.gwta) {
|
|
130
|
+
const { stepValuesMap } = namedInterpolation(stepDef.gwta);
|
|
131
|
+
if (stepValuesMap) {
|
|
132
|
+
for (const v of Object.values(stepValuesMap)) {
|
|
133
|
+
const rawDomain = v.domain || DOMAIN_STRING;
|
|
134
|
+
const parts = rawDomain.split(' | ').sort();
|
|
135
|
+
const domainKey = normalizeDomainKey(parts.join(' | '));
|
|
136
|
+
const domain = world.domains?.[domainKey];
|
|
137
|
+
if (domain?.schema) {
|
|
138
|
+
paramSchemas.set(v.term, domain.schema);
|
|
139
|
+
try {
|
|
140
|
+
const jsonSchema = z.toJSONSchema(domain.schema);
|
|
141
|
+
const prop = { ...jsonSchema };
|
|
142
|
+
if (domain.description && !prop.description) {
|
|
143
|
+
prop.description = domain.description;
|
|
144
|
+
}
|
|
145
|
+
properties[v.term] = prop;
|
|
146
|
+
}
|
|
147
|
+
catch {
|
|
148
|
+
properties[v.term] = { type: 'string', description: domain.description };
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
properties[v.term] = { type: 'string' };
|
|
153
|
+
}
|
|
154
|
+
required.push(v.term);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
return { inputSchema: { type: 'object', properties, required }, paramSchemas };
|
|
159
|
+
}
|
|
160
|
+
// --- RPC Message Schemas ---
|
|
161
|
+
/** Incoming RPC request from client (POST /rpc/:method). */
|
|
162
|
+
export const RpcRequestSchema = z.object({
|
|
163
|
+
id: z.string(),
|
|
164
|
+
type: z.literal('rpc'),
|
|
165
|
+
method: z.string(),
|
|
166
|
+
params: z.record(z.string(), z.unknown()).optional().default({}),
|
|
167
|
+
stream: z.boolean().optional(),
|
|
168
|
+
});
|
|
169
|
+
/** Outgoing RPC response to client (SSE event). */
|
|
170
|
+
export const RpcResponseSchema = z.object({
|
|
171
|
+
id: z.string(),
|
|
172
|
+
type: z.literal('rpc-response'),
|
|
173
|
+
result: z.unknown().optional(),
|
|
174
|
+
error: z.string().optional(),
|
|
175
|
+
});
|
|
176
|
+
/** Outgoing RPC stream chunk to client (SSE event). */
|
|
177
|
+
export const RpcStreamSchema = z.object({
|
|
178
|
+
id: z.string(),
|
|
179
|
+
type: z.literal('rpc-stream'),
|
|
180
|
+
data: z.unknown(),
|
|
181
|
+
});
|
|
182
|
+
/**
|
|
183
|
+
* Parse and validate an incoming RPC request.
|
|
184
|
+
* Returns the parsed request or null if the message is not an RPC request.
|
|
185
|
+
*/
|
|
186
|
+
export function parseRpcRequest(raw) {
|
|
187
|
+
const result = RpcRequestSchema.safeParse(raw);
|
|
188
|
+
return result.success ? result.data : null;
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Build a step registry and enrich metadata with input/output schemas.
|
|
192
|
+
* Single entry point for both SSE and MCP transports.
|
|
193
|
+
*/
|
|
194
|
+
export function discoverSteps(steppers, world) {
|
|
195
|
+
const registry = buildStepRegistry(steppers, world);
|
|
196
|
+
const metadata = StepperRegistry.getMetadata(steppers);
|
|
197
|
+
for (const meta of metadata) {
|
|
198
|
+
const tool = registry.get(meta.method);
|
|
199
|
+
if (tool) {
|
|
200
|
+
meta.inputSchema = tool.inputSchema;
|
|
201
|
+
meta.outputSchema = tool.outputSchema;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
return { registry, metadata };
|
|
205
|
+
}
|
|
206
|
+
//# sourceMappingURL=step-dispatch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"step-dispatch.js","sourceRoot":"","sources":["../../src/lib/step-dispatch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,eAAe,EAAuB,MAAM,uBAAuB,CAAC;AA4B7E;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAAoB,EAAE,KAAa;IACpE,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAoB,CAAC;IAE7C,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAChC,MAAM,WAAW,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;QAE7C,KAAK,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACjE,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK;gBAAE,SAAS;YAEvC,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,gBAAgB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YACvE,MAAM,IAAI,GAAG,cAAc,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;YACnD,IAAI,YAAiD,CAAC;YACtD,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;gBAC1B,IAAI,CAAC;oBACJ,YAAY,GAAG,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,YAAY,CAA4B,CAAC;gBAChF,CAAC;gBAAC,MAAM,CAAC,CAAC,uCAAuC,CAAC,CAAC;YACpD,CAAC;YAED,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE;gBAClB,IAAI;gBACJ,WAAW,EAAE,OAAO,CAAC,IAAI,IAAI,QAAQ;gBACrC,WAAW;gBACX,YAAY;gBACZ,YAAY;gBACZ,WAAW;gBACX,QAAQ;gBACR,OAAO,EAAE,iBAAiB,CAAC,WAAW,EAAE,QAAQ,EAAE,OAAO,CAAC;aAC1D,CAAC,CAAC;QACJ,CAAC;IACF,CAAC;IAED,OAAO,QAAQ,CAAC;AACjB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAc,EAAE,KAA8B;IAC/E,MAAM,SAAS,GAA4B,EAAE,GAAG,KAAK,EAAE,CAAC;IACxD,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,IAAI,EAAE,CAAC;IACjD,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC5B,IAAI,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;YACjD,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC,CAAC;QACnC,CAAC;IACF,CAAC;IAED,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAClD,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC1C,IAAI,MAAM,EAAE,CAAC;YACZ,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACvC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,SAAS,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC;YAC9B,CAAC;iBAAM,CAAC;gBACP,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAC1C,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAC/D,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACb,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,MAAM,MAAM,EAAE,CAAC,CAAC;YACpC,CAAC;QACF,CAAC;IACF,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,uBAAuB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACzE,CAAC;IAED,OAAO,SAAS,CAAC;AAClB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,aAAmD,EAAE,QAAgB;IACnG,MAAM,IAAI,GAAG,OAAO,aAAa,KAAK,QAAQ;QAC7C,CAAC,CAAC,aAAa;QACf,CAAC,CAAC,CAAC,OAAO,IAAI,aAAa,CAAC,CAAC,CAAC,eAAe,CAAC,aAAyB,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAChG,OAAO,GAAG,IAAI,IAAI,QAAQ,EAAE,CAAC;AAC9B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAChC,WAAmB,EACnB,QAAgB,EAChB,OAAqB;IAErB,OAAO,KAAK,EAAE,KAA8B,EAA8B,EAAE;QAC3E,MAAM,WAAW,GAAiB;YACjC,EAAE,EAAE,OAAO,CAAC,IAAI,IAAI,EAAE;YACtB,MAAM,EAAE;gBACP,WAAW;gBACX,UAAU,EAAE,QAAQ;gBACpB,IAAI,EAAE,OAAO;gBACb,aAAa,EAAE,oBAAoB,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC;aAC9D;YACD,OAAO,EAAE,CAAC,CAAC,CAAC;YACZ,MAAM,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE;SACjC,CAAC;QAEF,IAAI,CAAC;YACJ,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,KAAkB,EAAE,WAAW,CAAC,CAAC;YAC3E,IAAI,YAAY,CAAC,EAAE,EAAE,CAAC;gBACrB,MAAM,QAAQ,GAAG,UAAU,IAAI,YAAY,CAAC,CAAC,CAAE,YAAsC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpG,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,IAAI,EAAE,EAAE,CAAC;YAC/C,CAAC;YACD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAG,YAAmC,CAAC,OAAO,IAAI,aAAa,EAAE,CAAC;QAC5F,CAAC;QAAC,OAAO,MAAM,EAAE,CAAC;YACjB,MAAM,GAAG,GAAG,MAAM,YAAY,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;YACzE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,WAAW,IAAI,QAAQ,KAAK,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC;QAC3E,CAAC;IACF,CAAC,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAS,gBAAgB,CAAC,OAAqB,EAAE,KAAa;IAC7D,MAAM,UAAU,GAAoF,EAAE,CAAC;IACvG,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,YAAY,GAAG,IAAI,GAAG,EAAqB,CAAC;IAElD,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QAClB,MAAM,EAAE,aAAa,EAAE,GAAG,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC3D,IAAI,aAAa,EAAE,CAAC;YACnB,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;gBAC9C,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,IAAI,aAAa,CAAC;gBAC5C,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC5C,MAAM,SAAS,GAAG,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;gBACxD,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC;gBAE1C,IAAI,MAAM,EAAE,MAAM,EAAE,CAAC;oBACpB,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;oBACxC,IAAI,CAAC;wBACJ,MAAM,UAAU,GAAG,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAA4B,CAAC;wBAC5E,MAAM,IAAI,GAA4B,EAAE,GAAG,UAAU,EAAE,CAAC;wBACxD,IAAI,MAAM,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;4BAC7C,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;wBACvC,CAAC;wBACD,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;oBAC3B,CAAC;oBAAC,MAAM,CAAC;wBACR,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC;oBAC1E,CAAC;gBACF,CAAC;qBAAM,CAAC;oBACP,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;gBACzC,CAAC;gBACD,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACvB,CAAC;QACF,CAAC;IACF,CAAC;IAED,OAAO,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,YAAY,EAAE,CAAC;AACzF,CAAC;AAED,8BAA8B;AAE9B,4DAA4D;AAC5D,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;IACtB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IAChE,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CAC9B,CAAC,CAAC;AAGH,mDAAmD;AACnD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC;IAC/B,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC9B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC5B,CAAC,CAAC;AAGH,uDAAuD;AACvD,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC;IAC7B,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE;CACjB,CAAC,CAAC;AAGH;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,GAAY;IAC3C,MAAM,MAAM,GAAG,gBAAgB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAC/C,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5C,CAAC;AAOD;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,QAAoB,EAAE,KAAa;IAChE,MAAM,QAAQ,GAAG,iBAAiB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACpD,MAAM,QAAQ,GAAG,eAAe,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IACvD,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvC,IAAI,IAAI,EAAE,CAAC;YACV,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;YACpC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QACvC,CAAC;IACF,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;AAC/B,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import type { TActionResult, TStepArgs } from '../schema/protocol.js';
|
|
3
|
+
import type { TFeatureStep } from './defs.js';
|
|
4
|
+
/**
|
|
5
|
+
* Wrap a step action with a products schema.
|
|
6
|
+
* The fn returns raw products data; withProducts wraps it in actionOK.
|
|
7
|
+
* The schema is attached to the returned action for buildStepRegistry to read.
|
|
8
|
+
*/
|
|
9
|
+
export declare function withProducts<T extends z.ZodType<Record<string, unknown>>>(schema: T, fn: (args: TStepArgs, featureStep?: TFeatureStep) => Promise<z.infer<T>> | z.infer<T>): (args: TStepArgs, featureStep?: TFeatureStep) => Promise<TActionResult>;
|
|
10
|
+
//# sourceMappingURL=step-helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"step-helpers.d.ts","sourceRoot":"","sources":["../../src/lib/step-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAE9C;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACxE,MAAM,EAAE,CAAC,EACT,EAAE,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,YAAY,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAEzD,SAAS,gBAAgB,YAAY,KAAG,OAAO,CAAC,aAAa,CAAC,CAO1F"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { actionOK } from './util/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Wrap a step action with a products schema.
|
|
4
|
+
* The fn returns raw products data; withProducts wraps it in actionOK.
|
|
5
|
+
* The schema is attached to the returned action for buildStepRegistry to read.
|
|
6
|
+
*/
|
|
7
|
+
export function withProducts(schema, fn) {
|
|
8
|
+
const action = async (args, featureStep) => {
|
|
9
|
+
const products = await fn(args, featureStep);
|
|
10
|
+
return actionOK({ products });
|
|
11
|
+
};
|
|
12
|
+
// biome-ignore lint/suspicious/noExplicitAny: attaching schema metadata for buildStepRegistry
|
|
13
|
+
action.__productsSchema = schema;
|
|
14
|
+
return action;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=step-helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"step-helpers.js","sourceRoot":"","sources":["../../src/lib/step-helpers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAI3C;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAC3B,MAAS,EACT,EAAqF;IAErF,MAAM,MAAM,GAAG,KAAK,EAAE,IAAe,EAAE,WAA0B,EAA0B,EAAE;QAC5F,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAC7C,OAAO,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC/B,CAAC,CAAC;IACF,8FAA8F;IAC7F,MAAc,CAAC,gBAAgB,GAAG,MAAM,CAAC;IAC1C,OAAO,MAAM,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { AStepper } from './astepper.js';
|
|
2
|
+
import type { TStepAction, TFeatures } from './defs.js';
|
|
3
|
+
import { type StepDescriptor } from './stepper-registry.js';
|
|
4
|
+
/**
|
|
5
|
+
* Result of validating a step text against registered steppers.
|
|
6
|
+
*/
|
|
7
|
+
export type StepValidationResult = {
|
|
8
|
+
valid: true;
|
|
9
|
+
action: TStepAction;
|
|
10
|
+
} | {
|
|
11
|
+
valid: false;
|
|
12
|
+
error: string;
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Validate a step text against the registered steppers.
|
|
16
|
+
* Returns the matched action if valid, or an error message if not.
|
|
17
|
+
*
|
|
18
|
+
* Shared by LSP (diagnostics), SSE (step mode validation), and any future consumer.
|
|
19
|
+
*/
|
|
20
|
+
export declare function validateStep(text: string, steppers: AStepper[], backgrounds?: TFeatures): StepValidationResult;
|
|
21
|
+
/**
|
|
22
|
+
* Get metadata for all exposed steps across all steppers.
|
|
23
|
+
* Used for autocomplete in LSP, SSE step mode, and MCP tool discovery.
|
|
24
|
+
*/
|
|
25
|
+
export declare function getStepDescriptors(steppers: AStepper[]): StepDescriptor[];
|
|
26
|
+
//# sourceMappingURL=step-validation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"step-validation.d.ts","sourceRoot":"","sources":["../../src/lib/step-validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAExD,OAAO,EAAmB,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE7E;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG;IAClC,KAAK,EAAE,IAAI,CAAC;IACZ,MAAM,EAAE,WAAW,CAAC;CACpB,GAAG;IACH,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACd,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,WAAW,CAAC,EAAE,SAAS,GAAG,oBAAoB,CAQ9G;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,cAAc,EAAE,CAEzE"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Resolver } from '../phases/Resolver.js';
|
|
2
|
+
import { StepperRegistry } from './stepper-registry.js';
|
|
3
|
+
/**
|
|
4
|
+
* Validate a step text against the registered steppers.
|
|
5
|
+
* Returns the matched action if valid, or an error message if not.
|
|
6
|
+
*
|
|
7
|
+
* Shared by LSP (diagnostics), SSE (step mode validation), and any future consumer.
|
|
8
|
+
*/
|
|
9
|
+
export function validateStep(text, steppers, backgrounds) {
|
|
10
|
+
const resolver = new Resolver(steppers, backgrounds || []);
|
|
11
|
+
try {
|
|
12
|
+
const action = resolver.findSingleStepAction(text);
|
|
13
|
+
return { valid: true, action };
|
|
14
|
+
}
|
|
15
|
+
catch (e) {
|
|
16
|
+
return { valid: false, error: e instanceof Error ? e.message : String(e) };
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Get metadata for all exposed steps across all steppers.
|
|
21
|
+
* Used for autocomplete in LSP, SSE step mode, and MCP tool discovery.
|
|
22
|
+
*/
|
|
23
|
+
export function getStepDescriptors(steppers) {
|
|
24
|
+
return StepperRegistry.getMetadata(steppers);
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=step-validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"step-validation.js","sourceRoot":"","sources":["../../src/lib/step-validation.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAuB,MAAM,uBAAuB,CAAC;AAa7E;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,QAAoB,EAAE,WAAuB;IACvF,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,QAAQ,EAAE,WAAW,IAAI,EAAE,CAAC,CAAC;IAC3D,IAAI,CAAC;QACJ,MAAM,MAAM,GAAG,QAAQ,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;QACnD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAChC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACZ,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5E,CAAC;AACF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,QAAoB;IACtD,OAAO,eAAe,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AAC9C,CAAC"}
|
|
@@ -3,11 +3,14 @@ import { AStepper } from './astepper.js';
|
|
|
3
3
|
* Metadata for a single step, extracted from a stepper definition.
|
|
4
4
|
* Used by both LSP (for autocomplete/hover) and MCP (for tool registration).
|
|
5
5
|
*/
|
|
6
|
-
export interface
|
|
6
|
+
export interface StepDescriptor {
|
|
7
7
|
stepperName: string;
|
|
8
8
|
stepName: string;
|
|
9
|
+
method: string;
|
|
9
10
|
pattern: string;
|
|
10
11
|
params: Record<string, 'string' | 'number'>;
|
|
12
|
+
inputSchema?: Record<string, unknown>;
|
|
13
|
+
outputSchema?: Record<string, unknown>;
|
|
11
14
|
}
|
|
12
15
|
/**
|
|
13
16
|
* Central registry for extracting step metadata from steppers.
|
|
@@ -18,7 +21,7 @@ export declare class StepperRegistry {
|
|
|
18
21
|
* Extract metadata from all steps in the provided steppers.
|
|
19
22
|
* Filters out steps marked with `expose: false`.
|
|
20
23
|
*/
|
|
21
|
-
static getMetadata(steppers: AStepper[]):
|
|
24
|
+
static getMetadata(steppers: AStepper[]): StepDescriptor[];
|
|
22
25
|
/**
|
|
23
26
|
* Convert a gwta pattern to an LSP snippet format.
|
|
24
27
|
* Transforms `{varName}` to `${1:varName}` for tab-stop support.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stepper-registry.d.ts","sourceRoot":"","sources":["../../src/lib/stepper-registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAIzC;;;GAGG;AACH,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"stepper-registry.d.ts","sourceRoot":"","sources":["../../src/lib/stepper-registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAIzC;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,GAAG,QAAQ,CAAC,CAAC;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACxC;AAED;;;GAGG;AACH,qBAAa,eAAe;IAC1B;;;OAGG;IACH,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,cAAc,EAAE;IAwB1D;;;OAGG;IACH,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;CAIjD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stepper-registry.js","sourceRoot":"","sources":["../../src/lib/stepper-registry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"stepper-registry.js","sourceRoot":"","sources":["../../src/lib/stepper-registry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAgBpD;;;GAGG;AACH,MAAM,OAAO,eAAe;IAC1B;;;OAGG;IACH,MAAM,CAAC,WAAW,CAAC,QAAoB;QACrC,OAAO,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YAChC,MAAM,WAAW,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;YAC7C,OAAO,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;iBACjC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,KAAK,CAAC;iBACzC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,EAAE;gBAC3B,MAAM,MAAM,GAAwC,EAAE,CAAC;gBACvD,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,QAAQ,CAAC;gBAEvF,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;oBACjB,MAAM,EAAE,aAAa,EAAE,GAAG,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;oBAC3D,IAAI,aAAa,EAAE,CAAC;wBAClB,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;4BAC7C,kEAAkE;4BAClE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;wBAC/D,CAAC;oBACH,CAAC;gBACH,CAAC;gBACD,MAAM,MAAM,GAAG,GAAG,WAAW,IAAI,QAAQ,EAAE,CAAC;gBAC5C,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;YAC5D,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,gBAAgB,CAAC,OAAe;QACrC,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,OAAO,OAAO,CAAC,OAAO,CAAC,wBAAwB,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,IAAI,IAAI,GAAG,CAAC,CAAC;IACtF,CAAC;CACF"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { AStepper
|
|
2
|
-
import { TWorld
|
|
1
|
+
import { AStepper } from '../astepper.js';
|
|
2
|
+
import { TWorld } from '../defs.js';
|
|
3
3
|
import { THaibunEvent } from '../../schema/protocol.js';
|
|
4
4
|
/**
|
|
5
5
|
* EventCollectorStepper - Collects events for test inspection.
|
|
@@ -12,10 +12,10 @@ import { THaibunEvent } from '../../schema/protocol.js';
|
|
|
12
12
|
* const stepEvents = collector.getStepEvents();
|
|
13
13
|
* ```
|
|
14
14
|
*/
|
|
15
|
-
export declare class EventCollectorStepper extends AStepper
|
|
15
|
+
export declare class EventCollectorStepper extends AStepper {
|
|
16
16
|
description: string;
|
|
17
17
|
private events;
|
|
18
|
-
|
|
18
|
+
private subscriberCallback?;
|
|
19
19
|
setWorld(world: TWorld, steppers: AStepper[]): Promise<void>;
|
|
20
20
|
steps: {};
|
|
21
21
|
/** Get all collected events */
|
|
@@ -26,6 +26,8 @@ export declare class EventCollectorStepper extends AStepper implements IHasCycle
|
|
|
26
26
|
findEvents(predicate: (e: THaibunEvent) => boolean): THaibunEvent[];
|
|
27
27
|
/** Clear collected events */
|
|
28
28
|
clear(): void;
|
|
29
|
+
/** Unsubscribe from event logger */
|
|
30
|
+
close(): void;
|
|
29
31
|
}
|
|
30
32
|
export default EventCollectorStepper;
|
|
31
33
|
//# sourceMappingURL=EventCollectorStepper.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EventCollectorStepper.d.ts","sourceRoot":"","sources":["../../../src/lib/test/EventCollectorStepper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"EventCollectorStepper.d.ts","sourceRoot":"","sources":["../../../src/lib/test/EventCollectorStepper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD;;;;;;;;;;GAUG;AACH,qBAAa,qBAAsB,SAAQ,QAAQ;IACjD,WAAW,SAAyC;IAEpD,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,kBAAkB,CAAC,CAAgC;IAErD,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAQlE,KAAK,KAAM;IAEX,+BAA+B;IAC/B,SAAS,IAAI,YAAY,EAAE;IAI3B,qCAAqC;IACrC,aAAa,IAAI,YAAY,EAAE;IAI/B,sCAAsC;IACtC,UAAU,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,YAAY,KAAK,OAAO,GAAG,YAAY,EAAE;IAInE,6BAA6B;IAC7B,KAAK,IAAI,IAAI;IAIb,oCAAoC;IACpC,KAAK,IAAI,IAAI;CAMd;AAED,eAAe,qBAAqB,CAAC"}
|
|
@@ -13,28 +13,13 @@ import { AStepper } from '../astepper.js';
|
|
|
13
13
|
export class EventCollectorStepper extends AStepper {
|
|
14
14
|
description = 'Collects events for test inspection';
|
|
15
15
|
events = [];
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
originalCallback?.(event);
|
|
24
|
-
});
|
|
25
|
-
}
|
|
26
|
-
return Promise.resolve();
|
|
27
|
-
}
|
|
28
|
-
};
|
|
29
|
-
setWorld(world, steppers) {
|
|
30
|
-
this.world = world;
|
|
31
|
-
// Hook into world event logger immediately
|
|
32
|
-
if (world.eventLogger?.setStepperCallback) {
|
|
33
|
-
world.eventLogger.setStepperCallback((event) => {
|
|
34
|
-
this.events.push(event);
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
|
-
return Promise.resolve();
|
|
16
|
+
subscriberCallback;
|
|
17
|
+
async setWorld(world, steppers) {
|
|
18
|
+
await super.setWorld(world, steppers);
|
|
19
|
+
this.subscriberCallback = (event) => {
|
|
20
|
+
this.events.push(event);
|
|
21
|
+
};
|
|
22
|
+
world.eventLogger.subscribe(this.subscriberCallback);
|
|
38
23
|
}
|
|
39
24
|
steps = {};
|
|
40
25
|
/** Get all collected events */
|
|
@@ -53,6 +38,13 @@ export class EventCollectorStepper extends AStepper {
|
|
|
53
38
|
clear() {
|
|
54
39
|
this.events = [];
|
|
55
40
|
}
|
|
41
|
+
/** Unsubscribe from event logger */
|
|
42
|
+
close() {
|
|
43
|
+
if (this.subscriberCallback && this.world?.eventLogger) {
|
|
44
|
+
this.world.eventLogger.unsubscribe(this.subscriberCallback);
|
|
45
|
+
this.subscriberCallback = undefined;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
56
48
|
}
|
|
57
49
|
export default EventCollectorStepper;
|
|
58
50
|
//# sourceMappingURL=EventCollectorStepper.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EventCollectorStepper.js","sourceRoot":"","sources":["../../../src/lib/test/EventCollectorStepper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"EventCollectorStepper.js","sourceRoot":"","sources":["../../../src/lib/test/EventCollectorStepper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAI1C;;;;;;;;;;GAUG;AACH,MAAM,OAAO,qBAAsB,SAAQ,QAAQ;IACjD,WAAW,GAAG,qCAAqC,CAAC;IAE5C,MAAM,GAAmB,EAAE,CAAC;IAC5B,kBAAkB,CAAiC;IAE3D,KAAK,CAAC,QAAQ,CAAC,KAAa,EAAE,QAAoB;QAChD,MAAM,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACtC,IAAI,CAAC,kBAAkB,GAAG,CAAC,KAAmB,EAAE,EAAE;YAChD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC,CAAC;QACF,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IACvD,CAAC;IAED,KAAK,GAAG,EAAE,CAAC;IAEX,+BAA+B;IAC/B,SAAS;QACP,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IAED,qCAAqC;IACrC,aAAa;QACX,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;IACnE,CAAC;IAED,sCAAsC;IACtC,UAAU,CAAC,SAAuC;QAChD,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACvC,CAAC;IAED,6BAA6B;IAC7B,KAAK;QACH,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;IACnB,CAAC;IAED,oCAAoC;IACpC,KAAK;QACH,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC;YACvD,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YAC5D,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAC;QACtC,CAAC;IACH,CAAC;CACF;AAED,eAAe,qBAAqB,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { AStepper } from '../astepper.js';
|
|
2
|
+
import { z } from 'zod';
|
|
2
3
|
export declare const TestStepsWithOptions: {
|
|
3
4
|
new (): {
|
|
4
5
|
options: {
|
|
@@ -12,7 +13,10 @@ export declare const TestStepsWithOptions: {
|
|
|
12
13
|
steps: {
|
|
13
14
|
test: {
|
|
14
15
|
exact: string;
|
|
15
|
-
|
|
16
|
+
outputSchema: z.ZodObject<{
|
|
17
|
+
summary: z.ZodString;
|
|
18
|
+
}, z.core.$strip>;
|
|
19
|
+
action: () => Promise<import("../../schema/protocol.js").TActionOKWithProducts>;
|
|
16
20
|
};
|
|
17
21
|
};
|
|
18
22
|
description?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TestStepsWithOptions.d.ts","sourceRoot":"","sources":["../../../src/lib/test/TestStepsWithOptions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"TestStepsWithOptions.d.ts","sourceRoot":"","sources":["../../../src/lib/test/TestStepsWithOptions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;CAiBhC,CAAC;AAEF,eAAe,oBAAoB,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { AStepper } from '../astepper.js';
|
|
2
|
-
import {
|
|
2
|
+
import { actionOKWithProducts, getStepperOption } from '../util/index.js';
|
|
3
|
+
import { z } from 'zod';
|
|
3
4
|
export const TestStepsWithOptions = class TestStepsWithOptions extends AStepper {
|
|
4
5
|
options = {
|
|
5
6
|
EXISTS: {
|
|
@@ -10,9 +11,10 @@ export const TestStepsWithOptions = class TestStepsWithOptions extends AStepper
|
|
|
10
11
|
steps = {
|
|
11
12
|
test: {
|
|
12
13
|
exact: 'have a stepper option',
|
|
14
|
+
outputSchema: z.object({ summary: z.string() }),
|
|
13
15
|
action: () => {
|
|
14
16
|
const _res = getStepperOption(this, 'EXISTS', this.getWorld().moduleOptions);
|
|
15
|
-
return Promise.resolve(
|
|
17
|
+
return Promise.resolve(actionOKWithProducts({ summary: 'options' }));
|
|
16
18
|
},
|
|
17
19
|
},
|
|
18
20
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TestStepsWithOptions.js","sourceRoot":"","sources":["../../../src/lib/test/TestStepsWithOptions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"TestStepsWithOptions.js","sourceRoot":"","sources":["../../../src/lib/test/TestStepsWithOptions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,oBAAqB,SAAQ,QAAQ;IAC9E,OAAO,GAAG;QACT,MAAM,EAAE;YACP,IAAI,EAAE,eAAe;YACrB,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;SAC7B;KACD,CAAC;IACF,KAAK,GAAG;QACP,IAAI,EAAE;YACL,KAAK,EAAE,uBAAuB;YAC9B,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;YAC/C,MAAM,EAAE,GAAG,EAAE;gBACZ,MAAM,IAAI,GAAG,gBAAgB,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,aAAa,CAAC,CAAC;gBAC7E,OAAO,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;YACtE,CAAC;SACD;KACD,CAAC;CACF,CAAC;AAEF,eAAe,oBAAoB,CAAC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { TSpecl, TWorld, TRuntime, TModuleOptions, CStepper, TFeatureStep } from '../defs.js';
|
|
2
|
-
import { TNotOKActionResult, TOKActionResult, TSeqPath, TDebugSignal } from '../../schema/protocol.js';
|
|
2
|
+
import { TNotOKActionResult, TOKActionResult, TActionOKWithProducts, TSeqPath, TDebugSignal } from '../../schema/protocol.js';
|
|
3
3
|
import { TAnyFixme } from '../fixme.js';
|
|
4
4
|
import { AStepper } from '../astepper.js';
|
|
5
|
-
import { TArtifactEvent } from '../../schema/protocol.js';
|
|
5
|
+
import { TArtifactEvent, type TJsonArtifact } from '../../schema/protocol.js';
|
|
6
6
|
export * from './actualURI.js';
|
|
7
7
|
export * from './secret-utils.js';
|
|
8
8
|
export declare function getStepTerm(featureStep: TFeatureStep, key: string): string | undefined;
|
|
@@ -23,14 +23,18 @@ export declare function checkModuleIsClass(re: object, module: string): void;
|
|
|
23
23
|
export declare function actionNotOK(message: string, w?: {
|
|
24
24
|
artifact?: TArtifactEvent;
|
|
25
25
|
controlSignal?: TDebugSignal;
|
|
26
|
-
topics?: Record<string, unknown>;
|
|
27
26
|
}): TNotOKActionResult;
|
|
28
27
|
export declare function randomString(): string;
|
|
29
28
|
export declare function actionOK(w?: {
|
|
30
29
|
artifact?: TArtifactEvent;
|
|
31
30
|
controlSignal?: TDebugSignal;
|
|
32
|
-
topics?: Record<string, unknown>;
|
|
33
31
|
}): TOKActionResult;
|
|
32
|
+
export declare function actionOKWithProducts(products: Record<string, unknown>, w?: {
|
|
33
|
+
artifact?: TArtifactEvent;
|
|
34
|
+
controlSignal?: TDebugSignal;
|
|
35
|
+
}): TActionOKWithProducts;
|
|
36
|
+
export declare function resetArtifactCounter(): void;
|
|
37
|
+
export declare function jsonArtifact(json: Record<string, unknown>): TJsonArtifact;
|
|
34
38
|
export declare function createSteppers(steppers: CStepper[]): AStepper[];
|
|
35
39
|
export declare function getDefaultOptions(): TSpecl;
|
|
36
40
|
export declare function getActionable(value: string): string;
|
|
@@ -106,4 +110,8 @@ export declare function formattedSteppers(steppers: AStepper[]): {
|
|
|
106
110
|
};
|
|
107
111
|
export declare const formatCurrentSection: (runtime: TRuntime) => string;
|
|
108
112
|
export declare const formatCurrentSeqPath: (seqPath: TSeqPath) => string;
|
|
113
|
+
/** Truncate a string for display, showing original length if truncated. */
|
|
114
|
+
export declare function truncateForDisplay(s: string): string;
|
|
115
|
+
/** Deep-truncate an object for logging: truncates any string values that exceed the limit. */
|
|
116
|
+
export declare function truncateForLog(obj: unknown, depth?: number): unknown;
|
|
109
117
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/util/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC9F,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAM,QAAQ,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/util/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC9F,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,qBAAqB,EAAM,QAAQ,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAClI,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAe,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,KAAK,aAAa,EAAS,MAAM,0BAA0B,CAAC;AACrF,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAGlC,wBAAgB,WAAW,CAAC,WAAW,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEtF;AAOD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEpD;AAED,KAAK,MAAM,GAAG;IAAE,KAAK,CAAC,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,CAAA;CAAE,CAAC;AAEjD,eAAO,MAAM,SAAS,GAAI,GAAG,MAAM,GAAG,SAAS,KAAG,MAAM,EAAgD,CAAC;AAKzG;;;;;;GAMG;AACH,wBAAsB,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAUzD;AAyBD,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAM5D;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,cAAc,CAAC;IAAC,aAAa,CAAC,EAAE,YAAY,CAAA;CAAE,GAAG,kBAAkB,CAQhI;AACD,wBAAgB,YAAY,WAE3B;AAED,wBAAgB,QAAQ,CAAC,CAAC,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,cAAc,CAAC;IAAC,aAAa,CAAC,EAAE,YAAY,CAAA;CAAE,GAAG,eAAe,CAGzG;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,cAAc,CAAC;IAAC,aAAa,CAAC,EAAE,YAAY,CAAA;CAAE,GAAG,qBAAqB,CAG9J;AAGD,wBAAgB,oBAAoB,IAAI,IAAI,CAAyB;AACrE,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,aAAa,CAWzE;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,QAAQ,EAAE,CAY/D;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAI1C;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,UAE1C;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,QAAQ,UAGhD;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAOpD;AAGD,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,WAEtC;AAED,eAAO,MAAM,KAAK,GAAI,IAAI,MAAM,qBAAsD,CAAC;AAEvF,wBAAgB,kBAAkB,CAAC,cAAc,EAAE,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,QAiBvF;AAED,wBAAsB,0BAA0B,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,iBASnF;AAED,wBAAgB,MAAM,CAAC,OAAO,EAAE,QAAQ,UAEvC;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE;;;;EAkBtF;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,cAAc,QAoBlF;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,QAAQ,GAAG,QAAQ,EAAE,IAAI,EAAE,MAAM,UAK9E;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,cAAc,UAG9F;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAC9C,QAAQ,EAAE,QAAQ,EAAE,EACpB,OAAO,EAAE,QAAQ,EACjB,aAAa,EAAE,cAAc,EAC7B,GAAG,WAAW,EAAE,MAAM,EAAE,GACtB,IAAI,CAEN;AACD,wBAAgB,qBAAqB,CAAC,IAAI,EACzC,QAAQ,EAAE,QAAQ,EAAE,EACpB,OAAO,EAAE,QAAQ,EACjB,aAAa,EAAE,cAAc,EAC7B,GAAG,WAAW,EAAE,MAAM,EAAE,GACtB,IAAI,CAEN;AA4BD;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,cAAc,EAAE,GAAG,WAAW,EAAE,MAAM,EAAE,GAAG,IAAI,CA8BxJ;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAa1E;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAE1E;AAED,eAAO,MAAM,UAAU,GAAI,KAAK,MAAM,WAGrC,CAAA;AAED,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,UAEhC;AAMD,eAAO,MAAM,UAAU,GAAI,KAAK,MAAM;;;;;;CAKrC,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,KAAK,MAAM;;;;;;CAKtC,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,KAAK,MAAM;;;;;;CAKxC,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,KAAK,MAAM,EAAE,SAAS,MAAM,EAAE;;;;;;CAK3D,CAAC;AAEF,wBAAgB,MAAM,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,CAUzE;AAED,wBAAgB,OAAO,CAAC,CAAC,EAAE,OAAO,GAAG,KAAK,CAIzC;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,UAEjC;AAGD,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,EAAE;;qBAaX,MAAM;eAAS,MAAM,EAAE;;EAEjE;AAED,eAAO,MAAM,oBAAoB,GAAI,SAAS,QAAQ,WAAmE,CAAC;AAE1H,eAAO,MAAM,oBAAoB,GAAI,SAAS,QAAQ,WAAkC,CAAC;AAIzF,2EAA2E;AAC3E,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAGpD;AAID,8FAA8F;AAC9F,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,SAAI,GAAG,OAAO,CAU/D"}
|