@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.
Files changed (40) hide show
  1. package/LICENSE +190 -0
  2. package/dist/admValidator.d.ts +28 -0
  3. package/dist/admValidator.d.ts.map +1 -0
  4. package/dist/admValidator.js +233 -0
  5. package/dist/admValidator.js.map +1 -0
  6. package/dist/contractProjector.d.ts +23 -0
  7. package/dist/contractProjector.d.ts.map +1 -0
  8. package/dist/contractProjector.js +269 -0
  9. package/dist/contractProjector.js.map +1 -0
  10. package/dist/dddCrewParser.d.ts +11 -0
  11. package/dist/dddCrewParser.d.ts.map +1 -0
  12. package/dist/dddCrewParser.js +519 -0
  13. package/dist/dddCrewParser.js.map +1 -0
  14. package/dist/dddCrewProjector.d.ts +16 -0
  15. package/dist/dddCrewProjector.d.ts.map +1 -0
  16. package/dist/dddCrewProjector.js +227 -0
  17. package/dist/dddCrewProjector.js.map +1 -0
  18. package/dist/defaultTemplate.d.ts +3 -0
  19. package/dist/defaultTemplate.d.ts.map +1 -0
  20. package/dist/defaultTemplate.js +1442 -0
  21. package/dist/defaultTemplate.js.map +1 -0
  22. package/dist/excalidrawProjector.d.ts +56 -0
  23. package/dist/excalidrawProjector.d.ts.map +1 -0
  24. package/dist/excalidrawProjector.js +235 -0
  25. package/dist/excalidrawProjector.js.map +1 -0
  26. package/dist/index.d.ts +8 -0
  27. package/dist/index.d.ts.map +1 -0
  28. package/dist/index.js +8 -0
  29. package/dist/index.js.map +1 -0
  30. package/dist/openApiProjector.d.ts +17 -0
  31. package/dist/openApiProjector.d.ts.map +1 -0
  32. package/dist/openApiProjector.js +298 -0
  33. package/dist/openApiProjector.js.map +1 -0
  34. package/dist/schema.d.ts +670 -0
  35. package/dist/schema.d.ts.map +1 -0
  36. package/dist/schema.js +296 -0
  37. package/dist/schema.js.map +1 -0
  38. package/dist/templates/aggregate-design-canvas-v1.1.excalidraw.json +1441 -0
  39. package/package.json +24 -3
  40. 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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"}