@zauso-ai/capstan-app-graph 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.
@@ -0,0 +1,176 @@
1
+ export declare const LEGACY_APP_GRAPH_VERSION = 0;
2
+ export declare const CURRENT_APP_GRAPH_VERSION = 1;
3
+ export type ScalarType = "string" | "integer" | "number" | "boolean" | "date" | "datetime" | "json";
4
+ export interface FieldConstraints {
5
+ minLength?: number;
6
+ maxLength?: number;
7
+ pattern?: string;
8
+ minimum?: number;
9
+ maximum?: number;
10
+ enum?: string[];
11
+ }
12
+ export interface FieldSpec {
13
+ type: ScalarType;
14
+ required?: boolean;
15
+ description?: string;
16
+ constraints?: FieldConstraints;
17
+ }
18
+ export interface RelationSpec {
19
+ resource: string;
20
+ kind: "one" | "many";
21
+ description?: string;
22
+ }
23
+ export interface ResourceSpec {
24
+ key: string;
25
+ title: string;
26
+ description?: string;
27
+ fields: Record<string, FieldSpec>;
28
+ relations?: Record<string, RelationSpec>;
29
+ }
30
+ export interface InputFieldSpec {
31
+ type: ScalarType;
32
+ required?: boolean;
33
+ description?: string;
34
+ constraints?: FieldConstraints;
35
+ }
36
+ export interface CapabilitySpec {
37
+ key: string;
38
+ title: string;
39
+ description?: string;
40
+ mode: "read" | "write" | "external";
41
+ input?: Record<string, InputFieldSpec>;
42
+ output?: Record<string, FieldSpec>;
43
+ resources?: string[];
44
+ task?: string;
45
+ policy?: string;
46
+ }
47
+ export interface TaskSpec {
48
+ key: string;
49
+ title: string;
50
+ description?: string;
51
+ kind: "sync" | "durable";
52
+ artifacts?: string[];
53
+ }
54
+ export interface PolicySpec {
55
+ key: string;
56
+ title: string;
57
+ description?: string;
58
+ effect: "allow" | "approve" | "deny" | "redact";
59
+ }
60
+ export interface ArtifactSpec {
61
+ key: string;
62
+ title: string;
63
+ description?: string;
64
+ kind: "record" | "file" | "report" | "dataset" | "message";
65
+ }
66
+ export interface ViewSpec {
67
+ key: string;
68
+ title: string;
69
+ description?: string;
70
+ kind: "list" | "detail" | "form" | "dashboard" | "workspace";
71
+ resource?: string;
72
+ capability?: string;
73
+ }
74
+ export interface DomainSpec {
75
+ key: string;
76
+ title: string;
77
+ description?: string;
78
+ }
79
+ export interface GraphPackSpec {
80
+ key: string;
81
+ options?: Record<string, unknown>;
82
+ }
83
+ export interface AppGraph {
84
+ version?: number;
85
+ domain: DomainSpec;
86
+ packs?: GraphPackSpec[];
87
+ resources: ResourceSpec[];
88
+ capabilities: CapabilitySpec[];
89
+ tasks?: TaskSpec[];
90
+ policies?: PolicySpec[];
91
+ artifacts?: ArtifactSpec[];
92
+ views?: ViewSpec[];
93
+ }
94
+ export interface ValidationIssue {
95
+ path: string;
96
+ message: string;
97
+ }
98
+ export interface ValidationResult {
99
+ ok: boolean;
100
+ issues: ValidationIssue[];
101
+ }
102
+ export interface NormalizedAppGraph {
103
+ version: typeof CURRENT_APP_GRAPH_VERSION;
104
+ domain: DomainSpec;
105
+ packs: GraphPackSpec[];
106
+ resources: ResourceSpec[];
107
+ capabilities: CapabilitySpec[];
108
+ tasks: TaskSpec[];
109
+ policies: PolicySpec[];
110
+ artifacts: ArtifactSpec[];
111
+ views: ViewSpec[];
112
+ }
113
+ export interface GraphMetadata {
114
+ sourceVersion: number;
115
+ normalizedVersion: typeof CURRENT_APP_GRAPH_VERSION;
116
+ upgraded: boolean;
117
+ graphHash: string;
118
+ }
119
+ export interface GraphSummary {
120
+ version: typeof CURRENT_APP_GRAPH_VERSION;
121
+ domain: DomainSpec;
122
+ valid: boolean;
123
+ issueCount: number;
124
+ counts: {
125
+ packs: number;
126
+ resources: number;
127
+ capabilities: number;
128
+ tasks: number;
129
+ policies: number;
130
+ artifacts: number;
131
+ views: number;
132
+ };
133
+ keys: {
134
+ packs: string[];
135
+ resources: string[];
136
+ capabilities: string[];
137
+ tasks: string[];
138
+ policies: string[];
139
+ artifacts: string[];
140
+ views: string[];
141
+ };
142
+ }
143
+ export interface GraphIntrospection {
144
+ metadata: GraphMetadata;
145
+ summary: GraphSummary;
146
+ normalizedGraph: NormalizedAppGraph;
147
+ validation: ValidationResult;
148
+ }
149
+ export interface GraphCollectionDiff {
150
+ added: string[];
151
+ removed: string[];
152
+ changed: string[];
153
+ unchanged: string[];
154
+ }
155
+ export interface GraphDiff {
156
+ beforeDomain: DomainSpec;
157
+ afterDomain: DomainSpec;
158
+ domainChanged: boolean;
159
+ packs: GraphCollectionDiff;
160
+ resources: GraphCollectionDiff;
161
+ capabilities: GraphCollectionDiff;
162
+ tasks: GraphCollectionDiff;
163
+ policies: GraphCollectionDiff;
164
+ artifacts: GraphCollectionDiff;
165
+ views: GraphCollectionDiff;
166
+ }
167
+ export declare function defineAppGraph(graph: AppGraph): AppGraph;
168
+ export declare function normalizeAppGraph(graph: AppGraph): NormalizedAppGraph;
169
+ export declare function validateAppGraph(graph: AppGraph): ValidationResult;
170
+ export declare function inspectAppGraph(graph: AppGraph): GraphSummary;
171
+ export declare function getAppGraphMetadata(graph: AppGraph): GraphMetadata;
172
+ export declare function introspectAppGraph(graph: AppGraph): GraphIntrospection;
173
+ export declare function diffAppGraphs(before: AppGraph, after: AppGraph): GraphDiff;
174
+ export declare function upgradeAppGraph(graph: AppGraph): AppGraph;
175
+ export declare function resolveAppGraphVersion(graph: AppGraph): number;
176
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js ADDED
@@ -0,0 +1,574 @@
1
+ export const LEGACY_APP_GRAPH_VERSION = 0;
2
+ export const CURRENT_APP_GRAPH_VERSION = 1;
3
+ export function defineAppGraph(graph) {
4
+ return graph;
5
+ }
6
+ export function normalizeAppGraph(graph) {
7
+ const upgraded = upgradeAppGraph(graph);
8
+ return {
9
+ version: CURRENT_APP_GRAPH_VERSION,
10
+ domain: normalizeDomain(upgraded.domain),
11
+ packs: sortByKey((upgraded.packs ?? []).map((pack) => normalizePack(pack))),
12
+ resources: sortByKey(upgraded.resources.map((resource) => normalizeResource(resource))),
13
+ capabilities: sortByKey(upgraded.capabilities.map((capability) => normalizeCapability(capability))),
14
+ tasks: sortByKey((upgraded.tasks ?? []).map((task) => normalizeTask(task))),
15
+ policies: sortByKey((upgraded.policies ?? []).map((policy) => normalizePolicy(policy))),
16
+ artifacts: sortByKey((upgraded.artifacts ?? []).map((artifact) => normalizeArtifact(artifact))),
17
+ views: sortByKey((upgraded.views ?? []).map((view) => normalizeView(view)))
18
+ };
19
+ }
20
+ export function validateAppGraph(graph) {
21
+ const issues = [];
22
+ const sourceVersion = resolveAppGraphVersion(graph);
23
+ if (sourceVersion > CURRENT_APP_GRAPH_VERSION) {
24
+ issues.push({
25
+ path: "version",
26
+ message: `Unsupported graph version "${sourceVersion}". Current version is "${CURRENT_APP_GRAPH_VERSION}".`
27
+ });
28
+ }
29
+ if (sourceVersion < LEGACY_APP_GRAPH_VERSION) {
30
+ issues.push({
31
+ path: "version",
32
+ message: `Graph version "${sourceVersion}" is not supported.`
33
+ });
34
+ }
35
+ if (!graph.domain.key.trim()) {
36
+ issues.push({
37
+ path: "domain.key",
38
+ message: "Domain key must not be empty."
39
+ });
40
+ }
41
+ if (!graph.domain.title.trim()) {
42
+ issues.push({
43
+ path: "domain.title",
44
+ message: "Domain title must not be empty."
45
+ });
46
+ }
47
+ validateUniqueKeys((graph.packs ?? []).map((pack) => ({
48
+ key: pack.key,
49
+ path: `packs.${pack.key || "<empty>"}`
50
+ })), issues);
51
+ const resourceKeys = validateUniqueKeys(graph.resources.map((resource) => ({
52
+ key: resource.key,
53
+ path: `resources.${resource.key || "<empty>"}`
54
+ })), issues);
55
+ const taskKeys = validateUniqueKeys((graph.tasks ?? []).map((task) => ({
56
+ key: task.key,
57
+ path: `tasks.${task.key || "<empty>"}`
58
+ })), issues);
59
+ const policyKeys = validateUniqueKeys((graph.policies ?? []).map((policy) => ({
60
+ key: policy.key,
61
+ path: `policies.${policy.key || "<empty>"}`
62
+ })), issues);
63
+ const artifactKeys = validateUniqueKeys((graph.artifacts ?? []).map((artifact) => ({
64
+ key: artifact.key,
65
+ path: `artifacts.${artifact.key || "<empty>"}`
66
+ })), issues);
67
+ const capabilityKeys = validateUniqueKeys(graph.capabilities.map((capability) => ({
68
+ key: capability.key,
69
+ path: `capabilities.${capability.key || "<empty>"}`
70
+ })), issues);
71
+ const viewKeys = validateUniqueKeys((graph.views ?? []).map((view) => ({
72
+ key: view.key,
73
+ path: `views.${view.key || "<empty>"}`
74
+ })), issues);
75
+ for (const resource of graph.resources) {
76
+ if (!resource.title.trim()) {
77
+ issues.push({
78
+ path: `resources.${resource.key}.title`,
79
+ message: "Resource title must not be empty."
80
+ });
81
+ }
82
+ if (!Object.keys(resource.fields).length) {
83
+ issues.push({
84
+ path: `resources.${resource.key}.fields`,
85
+ message: "Resource must declare at least one field."
86
+ });
87
+ }
88
+ for (const [fieldKey, field] of Object.entries(resource.fields)) {
89
+ validateFieldConstraints(field, `resources.${resource.key}.fields.${fieldKey}`, issues);
90
+ }
91
+ for (const [relationKey, relation] of Object.entries(resource.relations ?? {})) {
92
+ if (!resourceKeys.has(relation.resource)) {
93
+ issues.push({
94
+ path: `resources.${resource.key}.relations.${relationKey}`,
95
+ message: `Unknown resource reference "${relation.resource}".`
96
+ });
97
+ }
98
+ }
99
+ }
100
+ for (const capability of graph.capabilities) {
101
+ if (!capability.title.trim()) {
102
+ issues.push({
103
+ path: `capabilities.${capability.key}.title`,
104
+ message: "Capability title must not be empty."
105
+ });
106
+ }
107
+ for (const resourceKey of capability.resources ?? []) {
108
+ if (!resourceKeys.has(resourceKey)) {
109
+ issues.push({
110
+ path: `capabilities.${capability.key}.resources`,
111
+ message: `Unknown resource reference "${resourceKey}".`
112
+ });
113
+ }
114
+ }
115
+ for (const [fieldKey, field] of Object.entries(capability.input ?? {})) {
116
+ validateFieldConstraints(field, `capabilities.${capability.key}.input.${fieldKey}`, issues);
117
+ }
118
+ for (const [fieldKey, field] of Object.entries(capability.output ?? {})) {
119
+ validateFieldConstraints(field, `capabilities.${capability.key}.output.${fieldKey}`, issues);
120
+ }
121
+ if (capability.task && !taskKeys.has(capability.task)) {
122
+ issues.push({
123
+ path: `capabilities.${capability.key}.task`,
124
+ message: `Unknown task reference "${capability.task}".`
125
+ });
126
+ }
127
+ if (capability.policy && !policyKeys.has(capability.policy)) {
128
+ issues.push({
129
+ path: `capabilities.${capability.key}.policy`,
130
+ message: `Unknown policy reference "${capability.policy}".`
131
+ });
132
+ }
133
+ }
134
+ for (const task of graph.tasks ?? []) {
135
+ if (!task.title.trim()) {
136
+ issues.push({
137
+ path: `tasks.${task.key}.title`,
138
+ message: "Task title must not be empty."
139
+ });
140
+ }
141
+ for (const artifactKey of task.artifacts ?? []) {
142
+ if (!artifactKeys.has(artifactKey)) {
143
+ issues.push({
144
+ path: `tasks.${task.key}.artifacts`,
145
+ message: `Unknown artifact reference "${artifactKey}".`
146
+ });
147
+ }
148
+ }
149
+ }
150
+ for (const policy of graph.policies ?? []) {
151
+ if (!policy.title.trim()) {
152
+ issues.push({
153
+ path: `policies.${policy.key}.title`,
154
+ message: "Policy title must not be empty."
155
+ });
156
+ }
157
+ }
158
+ for (const artifact of graph.artifacts ?? []) {
159
+ if (!artifact.title.trim()) {
160
+ issues.push({
161
+ path: `artifacts.${artifact.key}.title`,
162
+ message: "Artifact title must not be empty."
163
+ });
164
+ }
165
+ }
166
+ for (const view of graph.views ?? []) {
167
+ if (!view.title.trim()) {
168
+ issues.push({
169
+ path: `views.${view.key}.title`,
170
+ message: "View title must not be empty."
171
+ });
172
+ }
173
+ if (view.resource && !resourceKeys.has(view.resource)) {
174
+ issues.push({
175
+ path: `views.${view.key}.resource`,
176
+ message: `Unknown resource reference "${view.resource}".`
177
+ });
178
+ }
179
+ if (view.capability && !capabilityKeys.has(view.capability)) {
180
+ issues.push({
181
+ path: `views.${view.key}.capability`,
182
+ message: `Unknown capability reference "${view.capability}".`
183
+ });
184
+ }
185
+ }
186
+ if (!graph.resources.length) {
187
+ issues.push({
188
+ path: "resources",
189
+ message: "Graph must contain at least one resource."
190
+ });
191
+ }
192
+ if (!graph.capabilities.length) {
193
+ issues.push({
194
+ path: "capabilities",
195
+ message: "Graph must contain at least one capability."
196
+ });
197
+ }
198
+ return {
199
+ ok: issues.length === 0,
200
+ issues
201
+ };
202
+ }
203
+ export function inspectAppGraph(graph) {
204
+ return introspectAppGraph(graph).summary;
205
+ }
206
+ export function getAppGraphMetadata(graph) {
207
+ const normalized = normalizeAppGraph(graph);
208
+ return {
209
+ sourceVersion: resolveAppGraphVersion(graph),
210
+ normalizedVersion: CURRENT_APP_GRAPH_VERSION,
211
+ upgraded: resolveAppGraphVersion(graph) !== CURRENT_APP_GRAPH_VERSION,
212
+ graphHash: stableHash(normalized)
213
+ };
214
+ }
215
+ export function introspectAppGraph(graph) {
216
+ const normalized = normalizeAppGraph(graph);
217
+ const validation = validateAppGraph(graph);
218
+ const summary = {
219
+ version: normalized.version,
220
+ domain: normalized.domain,
221
+ valid: validation.ok,
222
+ issueCount: validation.issues.length,
223
+ counts: {
224
+ packs: normalized.packs.length,
225
+ resources: normalized.resources.length,
226
+ capabilities: normalized.capabilities.length,
227
+ tasks: normalized.tasks.length,
228
+ policies: normalized.policies.length,
229
+ artifacts: normalized.artifacts.length,
230
+ views: normalized.views.length
231
+ },
232
+ keys: {
233
+ packs: normalized.packs.map((pack) => pack.key),
234
+ resources: normalized.resources.map((resource) => resource.key),
235
+ capabilities: normalized.capabilities.map((capability) => capability.key),
236
+ tasks: normalized.tasks.map((task) => task.key),
237
+ policies: normalized.policies.map((policy) => policy.key),
238
+ artifacts: normalized.artifacts.map((artifact) => artifact.key),
239
+ views: normalized.views.map((view) => view.key)
240
+ }
241
+ };
242
+ return {
243
+ metadata: getAppGraphMetadata(graph),
244
+ summary,
245
+ normalizedGraph: normalized,
246
+ validation
247
+ };
248
+ }
249
+ export function diffAppGraphs(before, after) {
250
+ const normalizedBefore = normalizeAppGraph(before);
251
+ const normalizedAfter = normalizeAppGraph(after);
252
+ return {
253
+ beforeDomain: normalizedBefore.domain,
254
+ afterDomain: normalizedAfter.domain,
255
+ domainChanged: stableStringify(normalizedBefore.domain) !== stableStringify(normalizedAfter.domain),
256
+ packs: diffCollection(normalizedBefore.packs, normalizedAfter.packs),
257
+ resources: diffCollection(normalizedBefore.resources, normalizedAfter.resources),
258
+ capabilities: diffCollection(normalizedBefore.capabilities, normalizedAfter.capabilities),
259
+ tasks: diffCollection(normalizedBefore.tasks, normalizedAfter.tasks),
260
+ policies: diffCollection(normalizedBefore.policies, normalizedAfter.policies),
261
+ artifacts: diffCollection(normalizedBefore.artifacts, normalizedAfter.artifacts),
262
+ views: diffCollection(normalizedBefore.views, normalizedAfter.views)
263
+ };
264
+ }
265
+ export function upgradeAppGraph(graph) {
266
+ const sourceVersion = resolveAppGraphVersion(graph);
267
+ if (sourceVersion > CURRENT_APP_GRAPH_VERSION) {
268
+ throw new Error(`Cannot upgrade graph version "${sourceVersion}". Current version is "${CURRENT_APP_GRAPH_VERSION}".`);
269
+ }
270
+ if (sourceVersion < LEGACY_APP_GRAPH_VERSION) {
271
+ throw new Error(`Cannot upgrade unsupported graph version "${sourceVersion}".`);
272
+ }
273
+ return {
274
+ version: CURRENT_APP_GRAPH_VERSION,
275
+ domain: graph.domain,
276
+ packs: graph.packs ?? [],
277
+ resources: graph.resources,
278
+ capabilities: graph.capabilities,
279
+ tasks: graph.tasks ?? [],
280
+ policies: graph.policies ?? [],
281
+ artifacts: graph.artifacts ?? [],
282
+ views: graph.views ?? []
283
+ };
284
+ }
285
+ export function resolveAppGraphVersion(graph) {
286
+ return graph.version ?? LEGACY_APP_GRAPH_VERSION;
287
+ }
288
+ function validateUniqueKeys(entries, issues) {
289
+ const keys = new Set();
290
+ for (const entry of entries) {
291
+ const normalized = entry.key.trim();
292
+ if (!normalized) {
293
+ issues.push({
294
+ path: entry.path,
295
+ message: "Key must not be empty."
296
+ });
297
+ continue;
298
+ }
299
+ if (keys.has(normalized)) {
300
+ issues.push({
301
+ path: entry.path,
302
+ message: `Duplicate key "${normalized}".`
303
+ });
304
+ continue;
305
+ }
306
+ keys.add(normalized);
307
+ }
308
+ return keys;
309
+ }
310
+ function normalizePack(pack) {
311
+ return {
312
+ key: pack.key.trim(),
313
+ ...(pack.options ? { options: normalizeRecord(pack.options) } : {})
314
+ };
315
+ }
316
+ function normalizeRecord(record) {
317
+ return Object.fromEntries(Object.entries(record)
318
+ .sort(([left], [right]) => left.localeCompare(right))
319
+ .map(([key, value]) => [key.trim(), normalizeUnknown(value)]));
320
+ }
321
+ function normalizeUnknown(value) {
322
+ if (Array.isArray(value)) {
323
+ return value.map((entry) => normalizeUnknown(entry));
324
+ }
325
+ if (value && typeof value === "object") {
326
+ return normalizeRecord(value);
327
+ }
328
+ return value;
329
+ }
330
+ function normalizeDomain(domain) {
331
+ return {
332
+ key: domain.key.trim(),
333
+ title: domain.title.trim(),
334
+ ...optionalStringProperty("description", domain.description)
335
+ };
336
+ }
337
+ function normalizeResource(resource) {
338
+ return {
339
+ key: resource.key.trim(),
340
+ title: resource.title.trim(),
341
+ ...optionalStringProperty("description", resource.description),
342
+ fields: sortRecord(resource.fields, (field) => normalizeField(field)),
343
+ ...optionalRecordProperty("relations", resource.relations, (relation) => normalizeRelation(relation))
344
+ };
345
+ }
346
+ function normalizeField(field) {
347
+ return {
348
+ type: field.type,
349
+ ...optionalBooleanProperty("required", field.required),
350
+ ...optionalStringProperty("description", field.description),
351
+ ...optionalConstraintsProperty("constraints", field.constraints)
352
+ };
353
+ }
354
+ function normalizeInputField(field) {
355
+ return {
356
+ type: field.type,
357
+ ...optionalBooleanProperty("required", field.required),
358
+ ...optionalStringProperty("description", field.description),
359
+ ...optionalConstraintsProperty("constraints", field.constraints)
360
+ };
361
+ }
362
+ function normalizeRelation(relation) {
363
+ return {
364
+ resource: relation.resource.trim(),
365
+ kind: relation.kind,
366
+ ...optionalStringProperty("description", relation.description)
367
+ };
368
+ }
369
+ function normalizeCapability(capability) {
370
+ return {
371
+ key: capability.key.trim(),
372
+ title: capability.title.trim(),
373
+ mode: capability.mode,
374
+ ...optionalStringProperty("description", capability.description),
375
+ ...optionalRecordProperty("input", capability.input, (field) => normalizeInputField(field)),
376
+ ...optionalRecordProperty("output", capability.output, (field) => normalizeField(field)),
377
+ ...optionalArrayProperty("resources", capability.resources?.map((resource) => resource.trim()).sort((left, right) => left.localeCompare(right))),
378
+ ...optionalStringProperty("task", capability.task),
379
+ ...optionalStringProperty("policy", capability.policy)
380
+ };
381
+ }
382
+ function normalizeTask(task) {
383
+ return {
384
+ key: task.key.trim(),
385
+ title: task.title.trim(),
386
+ kind: task.kind,
387
+ ...optionalStringProperty("description", task.description),
388
+ ...optionalArrayProperty("artifacts", task.artifacts?.map((artifact) => artifact.trim()).sort((left, right) => left.localeCompare(right)))
389
+ };
390
+ }
391
+ function normalizePolicy(policy) {
392
+ return {
393
+ key: policy.key.trim(),
394
+ title: policy.title.trim(),
395
+ effect: policy.effect,
396
+ ...optionalStringProperty("description", policy.description)
397
+ };
398
+ }
399
+ function normalizeArtifact(artifact) {
400
+ return {
401
+ key: artifact.key.trim(),
402
+ title: artifact.title.trim(),
403
+ kind: artifact.kind,
404
+ ...optionalStringProperty("description", artifact.description)
405
+ };
406
+ }
407
+ function normalizeView(view) {
408
+ return {
409
+ key: view.key.trim(),
410
+ title: view.title.trim(),
411
+ kind: view.kind,
412
+ ...optionalStringProperty("description", view.description),
413
+ ...optionalStringProperty("resource", view.resource),
414
+ ...optionalStringProperty("capability", view.capability)
415
+ };
416
+ }
417
+ function optionalStringProperty(key, value) {
418
+ const trimmed = value?.trim();
419
+ return trimmed ? { [key]: trimmed } : {};
420
+ }
421
+ function optionalBooleanProperty(key, value) {
422
+ return typeof value === "boolean" ? { [key]: value } : {};
423
+ }
424
+ function optionalArrayProperty(key, value) {
425
+ return value && value.length ? { [key]: value } : {};
426
+ }
427
+ function optionalConstraintsProperty(key, value) {
428
+ if (!value) {
429
+ return {};
430
+ }
431
+ const normalized = normalizeConstraints(value);
432
+ return Object.keys(normalized).length
433
+ ? { [key]: normalized }
434
+ : {};
435
+ }
436
+ function optionalRecordProperty(key, value, normalize) {
437
+ if (!value || !Object.keys(value).length) {
438
+ return {};
439
+ }
440
+ return {
441
+ [key]: sortRecord(value, normalize)
442
+ };
443
+ }
444
+ function sortRecord(record, normalize) {
445
+ return Object.fromEntries(Object.entries(record)
446
+ .sort(([left], [right]) => left.localeCompare(right))
447
+ .map(([key, value]) => [key.trim(), normalize(value)]));
448
+ }
449
+ function sortByKey(entries) {
450
+ return [...entries].sort((left, right) => left.key.localeCompare(right.key));
451
+ }
452
+ function diffCollection(before, after) {
453
+ const beforeMap = new Map(before.map((entry) => [entry.key, stableStringify(entry)]));
454
+ const afterMap = new Map(after.map((entry) => [entry.key, stableStringify(entry)]));
455
+ const allKeys = Array.from(new Set([...beforeMap.keys(), ...afterMap.keys()])).sort((left, right) => left.localeCompare(right));
456
+ const added = [];
457
+ const removed = [];
458
+ const changed = [];
459
+ const unchanged = [];
460
+ for (const key of allKeys) {
461
+ const beforeValue = beforeMap.get(key);
462
+ const afterValue = afterMap.get(key);
463
+ if (!beforeValue && afterValue) {
464
+ added.push(key);
465
+ continue;
466
+ }
467
+ if (beforeValue && !afterValue) {
468
+ removed.push(key);
469
+ continue;
470
+ }
471
+ if (beforeValue === afterValue) {
472
+ unchanged.push(key);
473
+ continue;
474
+ }
475
+ changed.push(key);
476
+ }
477
+ return {
478
+ added,
479
+ removed,
480
+ changed,
481
+ unchanged
482
+ };
483
+ }
484
+ function stableStringify(value) {
485
+ return JSON.stringify(value);
486
+ }
487
+ function stableHash(value) {
488
+ return hashString(stableStringify(value));
489
+ }
490
+ function hashString(value) {
491
+ let hash = 0;
492
+ for (let index = 0; index < value.length; index += 1) {
493
+ hash = (hash * 31 + value.charCodeAt(index)) >>> 0;
494
+ }
495
+ return hash.toString(16).padStart(8, "0");
496
+ }
497
+ function normalizeConstraints(constraints) {
498
+ return {
499
+ ...optionalNumberProperty("minimum", constraints.minimum),
500
+ ...optionalNumberProperty("maximum", constraints.maximum),
501
+ ...optionalNumberProperty("minLength", constraints.minLength),
502
+ ...optionalNumberProperty("maxLength", constraints.maxLength),
503
+ ...optionalStringProperty("pattern", constraints.pattern),
504
+ ...optionalArrayProperty("enum", constraints.enum?.map((value) => value.trim()).filter(Boolean).sort((left, right) => left.localeCompare(right)))
505
+ };
506
+ }
507
+ function optionalNumberProperty(key, value) {
508
+ return typeof value === "number" ? { [key]: value } : {};
509
+ }
510
+ function validateFieldConstraints(field, path, issues) {
511
+ const constraints = field.constraints;
512
+ if (!constraints) {
513
+ return;
514
+ }
515
+ if (typeof constraints.minLength === "number" &&
516
+ typeof constraints.maxLength === "number" &&
517
+ constraints.minLength > constraints.maxLength) {
518
+ issues.push({
519
+ path: `${path}.constraints`,
520
+ message: "minLength cannot be greater than maxLength."
521
+ });
522
+ }
523
+ if (typeof constraints.minimum === "number" &&
524
+ typeof constraints.maximum === "number" &&
525
+ constraints.minimum > constraints.maximum) {
526
+ issues.push({
527
+ path: `${path}.constraints`,
528
+ message: "minimum cannot be greater than maximum."
529
+ });
530
+ }
531
+ if ((typeof constraints.minLength === "number" ||
532
+ typeof constraints.maxLength === "number" ||
533
+ typeof constraints.pattern === "string") &&
534
+ field.type !== "string") {
535
+ issues.push({
536
+ path: `${path}.constraints`,
537
+ message: "String constraints require the field type to be \"string\"."
538
+ });
539
+ }
540
+ if ((typeof constraints.minimum === "number" || typeof constraints.maximum === "number") &&
541
+ field.type !== "number" &&
542
+ field.type !== "integer") {
543
+ issues.push({
544
+ path: `${path}.constraints`,
545
+ message: "Numeric constraints require the field type to be \"number\" or \"integer\"."
546
+ });
547
+ }
548
+ if (typeof constraints.pattern === "string") {
549
+ try {
550
+ new RegExp(constraints.pattern);
551
+ }
552
+ catch {
553
+ issues.push({
554
+ path: `${path}.constraints.pattern`,
555
+ message: "Pattern must be a valid regular expression."
556
+ });
557
+ }
558
+ }
559
+ if (constraints.enum) {
560
+ if (!constraints.enum.length) {
561
+ issues.push({
562
+ path: `${path}.constraints.enum`,
563
+ message: "Enum constraints must contain at least one value."
564
+ });
565
+ }
566
+ if (new Set(constraints.enum).size !== constraints.enum.length) {
567
+ issues.push({
568
+ path: `${path}.constraints.enum`,
569
+ message: "Enum constraints must not contain duplicate values."
570
+ });
571
+ }
572
+ }
573
+ }
574
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,41 @@
1
+ {
2
+ "name": "@zauso-ai/capstan-app-graph",
3
+ "version": "0.1.2",
4
+ "type": "module",
5
+ "main": "./dist/index.js",
6
+ "types": "./dist/index.d.ts",
7
+ "exports": {
8
+ ".": {
9
+ "types": "./dist/index.d.ts",
10
+ "default": "./dist/index.js"
11
+ }
12
+ },
13
+ "files": [
14
+ "dist"
15
+ ],
16
+ "scripts": {
17
+ "build": "tsc -p tsconfig.json",
18
+ "typecheck": "tsc -p tsconfig.json --noEmit"
19
+ },
20
+ "description": "Application graph schema for Capstan",
21
+ "repository": {
22
+ "type": "git",
23
+ "url": "https://github.com/barry3406/capstan.git",
24
+ "directory": "packages/app-graph"
25
+ },
26
+ "license": "MIT",
27
+ "author": "barry3406",
28
+ "homepage": "https://github.com/barry3406/capstan",
29
+ "keywords": [
30
+ "capstan",
31
+ "ai-agent",
32
+ "full-stack",
33
+ "framework",
34
+ "mcp",
35
+ "a2a",
36
+ "typescript"
37
+ ],
38
+ "publishConfig": {
39
+ "access": "public"
40
+ }
41
+ }