@simway/spica 0.0.0-stage → 0.1.2
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 +190 -0
- package/dist/admValidator.d.ts +28 -0
- package/dist/admValidator.d.ts.map +1 -0
- package/dist/admValidator.js +233 -0
- package/dist/admValidator.js.map +1 -0
- package/dist/contractProjector.d.ts +23 -0
- package/dist/contractProjector.d.ts.map +1 -0
- package/dist/contractProjector.js +269 -0
- package/dist/contractProjector.js.map +1 -0
- package/dist/dddCrewParser.d.ts +11 -0
- package/dist/dddCrewParser.d.ts.map +1 -0
- package/dist/dddCrewParser.js +519 -0
- package/dist/dddCrewParser.js.map +1 -0
- package/dist/dddCrewProjector.d.ts +16 -0
- package/dist/dddCrewProjector.d.ts.map +1 -0
- package/dist/dddCrewProjector.js +227 -0
- package/dist/dddCrewProjector.js.map +1 -0
- package/dist/defaultTemplate.d.ts +3 -0
- package/dist/defaultTemplate.d.ts.map +1 -0
- package/dist/defaultTemplate.js +1442 -0
- package/dist/defaultTemplate.js.map +1 -0
- package/dist/excalidrawProjector.d.ts +56 -0
- package/dist/excalidrawProjector.d.ts.map +1 -0
- package/dist/excalidrawProjector.js +235 -0
- package/dist/excalidrawProjector.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/dist/openApiProjector.d.ts +17 -0
- package/dist/openApiProjector.d.ts.map +1 -0
- package/dist/openApiProjector.js +298 -0
- package/dist/openApiProjector.js.map +1 -0
- package/dist/schema.d.ts +670 -0
- package/dist/schema.d.ts.map +1 -0
- package/dist/schema.js +296 -0
- package/dist/schema.js.map +1 -0
- package/dist/templates/aggregate-design-canvas-v1.1.excalidraw.json +1441 -0
- package/package.json +24 -3
- package/README.md +0 -3
package/dist/schema.js
ADDED
|
@@ -0,0 +1,296 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
/** Regex matching the canonical `YYYY.MM.DD-HHmm` CalVer timestamp (inlined from calver.ts). */
|
|
3
|
+
export const CALVER_TIMESTAMP_REGEX = /^\d{4}\.\d{2}\.\d{2}-\d{4}$/;
|
|
4
|
+
export const FieldNodeSchema = z.object({
|
|
5
|
+
name: z.string(),
|
|
6
|
+
type: z.string(),
|
|
7
|
+
// Zero phantom defaults (#300): `required` is NOT synthesized. A field that
|
|
8
|
+
// omits `required` stays `undefined`; the Ingestion Gate (`admValidator.ts`)
|
|
9
|
+
// treats only an explicit `required: true` as required and rejects any entity
|
|
10
|
+
// lacking at least one explicit required field.
|
|
11
|
+
required: z.boolean().optional(),
|
|
12
|
+
// `isList: true` marks a collection field (a list of values / a `*Ids`
|
|
13
|
+
// reference). It is the canonical list signal for relationship derivation
|
|
14
|
+
// (#316), consumed alongside the `*Id`/`*Ids` naming conventions.
|
|
15
|
+
isList: z.boolean().optional(),
|
|
16
|
+
description: z.string().optional(),
|
|
17
|
+
values: z.array(z.string()).optional(),
|
|
18
|
+
});
|
|
19
|
+
export const RelationshipNodeSchema = z.object({
|
|
20
|
+
target: z.string(),
|
|
21
|
+
cardinality: z.enum(["OneToOne", "OneToMany", "ManyToOne", "ManyToMany"]),
|
|
22
|
+
composition: z.boolean(),
|
|
23
|
+
});
|
|
24
|
+
export const EntityNodeSchema = z.object({
|
|
25
|
+
name: z.string(),
|
|
26
|
+
fields: z.array(FieldNodeSchema),
|
|
27
|
+
relationships: z.array(RelationshipNodeSchema).optional(),
|
|
28
|
+
});
|
|
29
|
+
export const ValueObjectNodeSchema = z.object({
|
|
30
|
+
name: z.string(),
|
|
31
|
+
type: z.string(),
|
|
32
|
+
values: z.array(z.string()).optional(),
|
|
33
|
+
fields: z.array(FieldNodeSchema).optional(),
|
|
34
|
+
relationships: z.array(RelationshipNodeSchema).optional(),
|
|
35
|
+
});
|
|
36
|
+
export const Phase1AggregateNodeSchema = z.object({
|
|
37
|
+
name: z.string(),
|
|
38
|
+
rootEntity: z.string(),
|
|
39
|
+
entities: z.array(EntityNodeSchema),
|
|
40
|
+
valueObjects: z.array(ValueObjectNodeSchema),
|
|
41
|
+
});
|
|
42
|
+
/**
|
|
43
|
+
* C4 System Context — Macro System Boundary (Work Item #326).
|
|
44
|
+
*
|
|
45
|
+
* An `Actor` is a human persona (or external party) who interacts with the
|
|
46
|
+
* system from OUTSIDE its boundary — the "who" in C4 Level 1. Distinct from
|
|
47
|
+
* `roles` (RBAC permission groups scoped INSIDE the system): an Actor is the
|
|
48
|
+
* external invoker, a `role` is an internal permission mechanism on commands.
|
|
49
|
+
*/
|
|
50
|
+
export const ActorNodeSchema = z.object({
|
|
51
|
+
name: z.string(),
|
|
52
|
+
description: z.string().optional(),
|
|
53
|
+
});
|
|
54
|
+
/**
|
|
55
|
+
* C4 System Context — Macro System Boundary (Work Item #326).
|
|
56
|
+
*
|
|
57
|
+
* An `ExternalSystem` is a third-party integration the system talks to —
|
|
58
|
+
* payment gateways, messaging buses, notification services, etc. It is the
|
|
59
|
+
* natural target of a reactor's `triggersPort`.
|
|
60
|
+
*/
|
|
61
|
+
export const ExternalSystemNodeSchema = z.object({
|
|
62
|
+
name: z.string(),
|
|
63
|
+
description: z.string().optional(),
|
|
64
|
+
technology: z.string().optional(),
|
|
65
|
+
relationship: z.string().optional(),
|
|
66
|
+
});
|
|
67
|
+
export const Phase1AstRootSchema = z.object({
|
|
68
|
+
domain: z.string(),
|
|
69
|
+
systemName: z.string().optional(),
|
|
70
|
+
systemDescription: z.string().optional(),
|
|
71
|
+
actors: z.array(ActorNodeSchema).optional(),
|
|
72
|
+
externalSystems: z.array(ExternalSystemNodeSchema).optional(),
|
|
73
|
+
aggregates: z.array(Phase1AggregateNodeSchema),
|
|
74
|
+
});
|
|
75
|
+
export const RoleNodeSchema = z.object({
|
|
76
|
+
name: z.string(),
|
|
77
|
+
description: z.string().optional(),
|
|
78
|
+
});
|
|
79
|
+
export const PolicyNodeSchema = z.object({
|
|
80
|
+
name: z.string(),
|
|
81
|
+
description: z.string(),
|
|
82
|
+
rule: z.string().optional(),
|
|
83
|
+
scope: z.string().optional(),
|
|
84
|
+
intentTrace: z.string().optional(),
|
|
85
|
+
sourceAggregate: z.string().optional(),
|
|
86
|
+
sourceEvent: z.string().optional(),
|
|
87
|
+
onEvent: z.string().optional(),
|
|
88
|
+
emitsCommand: z.string().optional(),
|
|
89
|
+
});
|
|
90
|
+
export const CommandNodeSchema = z.object({
|
|
91
|
+
name: z.string(),
|
|
92
|
+
actor: z.string().optional(),
|
|
93
|
+
allowedRoles: z.array(z.string()).optional(),
|
|
94
|
+
policies: z.array(z.string()).optional(),
|
|
95
|
+
requiredState: z.string(),
|
|
96
|
+
targetState: z.string(),
|
|
97
|
+
parameters: z.array(FieldNodeSchema).optional(),
|
|
98
|
+
payload: z.array(FieldNodeSchema).optional(),
|
|
99
|
+
isCreation: z.boolean().optional(),
|
|
100
|
+
triggerEvent: z.string().optional(),
|
|
101
|
+
emits: z.string().optional(),
|
|
102
|
+
});
|
|
103
|
+
export const DomainEventNodeSchema = z.object({
|
|
104
|
+
name: z.string(),
|
|
105
|
+
emittedBy: z.string().optional(),
|
|
106
|
+
trigger: z.string().optional(),
|
|
107
|
+
payload: z.array(FieldNodeSchema).optional(),
|
|
108
|
+
});
|
|
109
|
+
export const DomainEventInstanceSchema = z.object({
|
|
110
|
+
eventName: z.string(),
|
|
111
|
+
aggregateName: z.string(),
|
|
112
|
+
payload: z.record(z.string(), z.any()).optional(),
|
|
113
|
+
timestamp: z.number(),
|
|
114
|
+
sequenceNumber: z.number(),
|
|
115
|
+
});
|
|
116
|
+
export const ReducerDescriptorSchema = z.object({
|
|
117
|
+
commandName: z.string(),
|
|
118
|
+
targetField: z.string(),
|
|
119
|
+
operation: z.enum(['SET', 'ADD', 'SUBTRACT']),
|
|
120
|
+
sourceParameter: z.string(),
|
|
121
|
+
});
|
|
122
|
+
export const TransitionNodeSchema = z.object({
|
|
123
|
+
trigger: z.string(),
|
|
124
|
+
fromState: z.string(),
|
|
125
|
+
toState: z.string(),
|
|
126
|
+
guardCondition: z.string().optional(),
|
|
127
|
+
guardConditions: z.array(z.string()).optional(),
|
|
128
|
+
});
|
|
129
|
+
export const InvariantNodeSchema = z.object({
|
|
130
|
+
name: z.string().optional(),
|
|
131
|
+
rule: z.string(),
|
|
132
|
+
scope: z.string(),
|
|
133
|
+
intentTrace: z.string().optional(),
|
|
134
|
+
});
|
|
135
|
+
export const BddGivenSchema = z.object({
|
|
136
|
+
initialState: z.string(),
|
|
137
|
+
priorEvents: z.array(z.string()).optional(),
|
|
138
|
+
});
|
|
139
|
+
export const BddWhenSchema = z.object({
|
|
140
|
+
commandName: z.string(),
|
|
141
|
+
payload: z.record(z.string(), z.any()).optional(),
|
|
142
|
+
});
|
|
143
|
+
export const BddThenSchema = z.object({
|
|
144
|
+
expectedState: z.string(),
|
|
145
|
+
expectedEvents: z.array(z.string()).optional(),
|
|
146
|
+
});
|
|
147
|
+
export const BddScenarioNodeSchema = z.object({
|
|
148
|
+
name: z.string(),
|
|
149
|
+
aggregateName: z.string(),
|
|
150
|
+
given: BddGivenSchema,
|
|
151
|
+
when: BddWhenSchema,
|
|
152
|
+
then: BddThenSchema,
|
|
153
|
+
});
|
|
154
|
+
export const AggregateNodeSchema = z.object({
|
|
155
|
+
name: z.string(),
|
|
156
|
+
rootEntity: z.string(),
|
|
157
|
+
entities: z.array(EntityNodeSchema).default([]).optional(),
|
|
158
|
+
valueObjects: z.array(ValueObjectNodeSchema).default([]).optional(),
|
|
159
|
+
// Entity Lifecycle State Invariant (#297): every aggregate MUST declare at
|
|
160
|
+
// least one lifecycle state. `states` is strictly required and non-empty —
|
|
161
|
+
// no silent `["Active"]` anchoring, no `states: []` fallback. An aggregate
|
|
162
|
+
// that omits `states` (or submits an empty array) is rejected at the
|
|
163
|
+
// Ingestion Gate as a stateless (anemic) aggregate.
|
|
164
|
+
states: z.array(z.string()).min(1),
|
|
165
|
+
commands: z.array(CommandNodeSchema).default([]).optional(),
|
|
166
|
+
policies: z.array(PolicyNodeSchema).optional(),
|
|
167
|
+
transitions: z.array(TransitionNodeSchema).optional(),
|
|
168
|
+
invariants: z.array(InvariantNodeSchema).optional(),
|
|
169
|
+
reducers: z.array(ReducerDescriptorSchema).optional(),
|
|
170
|
+
bddScenarios: z.array(BddScenarioNodeSchema).optional(),
|
|
171
|
+
});
|
|
172
|
+
export const ReactorNodeSchema = z.object({
|
|
173
|
+
name: z.string(),
|
|
174
|
+
listensTo: z.string(),
|
|
175
|
+
triggersPort: z.string(),
|
|
176
|
+
description: z.string().optional(),
|
|
177
|
+
});
|
|
178
|
+
/**
|
|
179
|
+
* Maps the legacy `domain` alias to canonical `domainName` before validation.
|
|
180
|
+
* Phase 1 ADMs and older artifacts authored with `domain` keep working without
|
|
181
|
+
* any runtime "normalization" layer.
|
|
182
|
+
*/
|
|
183
|
+
function resolveLegacyDomain(raw) {
|
|
184
|
+
if (raw && typeof raw === "object" && !Array.isArray(raw)) {
|
|
185
|
+
const o = raw;
|
|
186
|
+
if (typeof o.domain === "string") {
|
|
187
|
+
const { domain, ...rest } = o;
|
|
188
|
+
return { ...rest, domainName: o.domainName ?? domain };
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
return raw;
|
|
192
|
+
}
|
|
193
|
+
export const AstRootSchema = z.preprocess(resolveLegacyDomain, z.object({
|
|
194
|
+
domainName: z.string(),
|
|
195
|
+
// Macro System Context (C4 Level 1 System Context, Work Item #326): the
|
|
196
|
+
// high-level boundary the Tactical DDD (Lens 2 Aggregate Map) omits. All
|
|
197
|
+
// four are optional for backward compatibility with pre-#326 ADMs, but the
|
|
198
|
+
// Semantic Mapper is instructed to emit them so Lens 1 has its boundaries.
|
|
199
|
+
systemName: z.string().optional(),
|
|
200
|
+
systemDescription: z.string().optional(),
|
|
201
|
+
actors: z.array(ActorNodeSchema).optional(),
|
|
202
|
+
externalSystems: z.array(ExternalSystemNodeSchema).optional(),
|
|
203
|
+
// #318: the redundant `version` field (a CalVer "now" stamp that shadowed
|
|
204
|
+
// the creation timestamp without recording the engine build) is replaced by
|
|
205
|
+
// two mandatory fields — `createdAt` (ISO-8601 UTC timestamp of creation/
|
|
206
|
+
// evolution) and `virgoVersion` (CalVer build of the Virgo engine that
|
|
207
|
+
// produced it). Strictly required: the Semantic Mapper auto-stamps both on
|
|
208
|
+
// every generated/evolved ADM, and `/spout/validate` rejects any ADM that
|
|
209
|
+
// is missing or mis-formats either.
|
|
210
|
+
createdAt: z.iso.datetime("createdAt must be an ISO-8601 UTC timestamp (e.g. 2026-10-19T09:24:17Z)"),
|
|
211
|
+
virgoVersion: z
|
|
212
|
+
.string()
|
|
213
|
+
.regex(CALVER_TIMESTAMP_REGEX, "virgoVersion must match YYYY.MM.DD-HHmm (CalVer)"),
|
|
214
|
+
roles: z.array(RoleNodeSchema).optional(),
|
|
215
|
+
aggregates: z.array(AggregateNodeSchema),
|
|
216
|
+
globalEvents: z.array(DomainEventNodeSchema).default([]).optional(),
|
|
217
|
+
reactors: z.array(ReactorNodeSchema).optional(),
|
|
218
|
+
}).strict());
|
|
219
|
+
export class DomainConflictException extends Error {
|
|
220
|
+
details;
|
|
221
|
+
constructor(details) {
|
|
222
|
+
super(`Domain Conflict: ${details}`);
|
|
223
|
+
this.details = details;
|
|
224
|
+
this.name = "DomainConflictException";
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
export class InvalidTransitionException extends Error {
|
|
228
|
+
details;
|
|
229
|
+
constructor(details) {
|
|
230
|
+
super(`Invalid Transition: ${details}`);
|
|
231
|
+
this.details = details;
|
|
232
|
+
this.name = "InvalidTransitionException";
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
export class DomainInvariantViolationException extends Error {
|
|
236
|
+
details;
|
|
237
|
+
constructor(details) {
|
|
238
|
+
super(`Domain Invariant Violation: ${details}`);
|
|
239
|
+
this.details = details;
|
|
240
|
+
this.name = "DomainInvariantViolationException";
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
export class EventConsistencyException extends Error {
|
|
244
|
+
details;
|
|
245
|
+
constructor(details) {
|
|
246
|
+
super(`Event Consistency Violation: ${details}`);
|
|
247
|
+
this.details = details;
|
|
248
|
+
this.name = "EventConsistencyException";
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
// ── Contradiction Protocol (v0.5) ─────────────────────────────────────────
|
|
252
|
+
// Intermediate halting payload returned when the Semantic Mapper detects a
|
|
253
|
+
// collision between new intent and existing domain rules.
|
|
254
|
+
export const ContradictionPayloadSchema = z.object({
|
|
255
|
+
type: z.literal('CONTRADICTION_HALT'),
|
|
256
|
+
data: z.object({
|
|
257
|
+
proposedIntent: z.string(),
|
|
258
|
+
conflictingEntity: z.string(),
|
|
259
|
+
existingRule: z.string(),
|
|
260
|
+
resolutionPrompt: z.string(),
|
|
261
|
+
}),
|
|
262
|
+
});
|
|
263
|
+
// ── Virgo Core helpers (preserved from the prior schema surface) ─────────
|
|
264
|
+
/**
|
|
265
|
+
* Escapes characters for Mermaid diagram label rendering.
|
|
266
|
+
*/
|
|
267
|
+
export function escapeLabel(label) {
|
|
268
|
+
if (!label)
|
|
269
|
+
return "";
|
|
270
|
+
return label.replace(/"/g, "'").replace(/[\[\](){}<>]/g, "");
|
|
271
|
+
}
|
|
272
|
+
/**
|
|
273
|
+
* Normalizes input domain model, ensuring aggregate deduplication and domain/domainName coherence.
|
|
274
|
+
*/
|
|
275
|
+
export function toAdmStructure(adm) {
|
|
276
|
+
const model = (adm && typeof adm === "object") ? { ...adm } : {};
|
|
277
|
+
// Normalize legacy `domain` alias to canonical `domainName`
|
|
278
|
+
if (typeof model.domain === "string" && typeof model.domainName !== "string") {
|
|
279
|
+
model.domainName = model.domain;
|
|
280
|
+
delete model.domain;
|
|
281
|
+
}
|
|
282
|
+
// Deduplicate aggregates by name
|
|
283
|
+
if (Array.isArray(model.aggregates)) {
|
|
284
|
+
const seen = new Set();
|
|
285
|
+
const deduped = [];
|
|
286
|
+
for (const agg of model.aggregates) {
|
|
287
|
+
if (agg && agg.name && !seen.has(agg.name)) {
|
|
288
|
+
seen.add(agg.name);
|
|
289
|
+
deduped.push(agg);
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
model.aggregates = deduped;
|
|
293
|
+
}
|
|
294
|
+
return model;
|
|
295
|
+
}
|
|
296
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"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"}
|