laymos 0.0.6 → 0.0.8

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 (84) hide show
  1. package/dist/architecture-analysis-schema/architecture-analysis-schema.d.ts +4 -0
  2. package/dist/architecture-analysis-schema/architecture-analysis-schema.d.ts.map +1 -1
  3. package/dist/architecture-analysis-schema/documentation-schema.d.ts +36 -0
  4. package/dist/architecture-analysis-schema/documentation-schema.d.ts.map +1 -0
  5. package/dist/architecture-analysis-schema/documentation-schema.js +19 -0
  6. package/dist/architecture-analysis-schema/index.d.ts +2 -0
  7. package/dist/architecture-analysis-schema/index.d.ts.map +1 -1
  8. package/dist/architecture-analysis-schema/index.js +1 -0
  9. package/dist/architecture-analysis-schema/project-config-schema.d.ts +9 -0
  10. package/dist/architecture-analysis-schema/project-config-schema.d.ts.map +1 -1
  11. package/dist/architecture-analysis-schema/project-config-schema.js +13 -0
  12. package/dist/change-set-schema/change-set-schema.d.ts +6 -0
  13. package/dist/change-set-schema/change-set-schema.d.ts.map +1 -1
  14. package/dist/change-set-schema/change-set-schema.js +8 -0
  15. package/dist/change-set-schema/index.d.ts +2 -2
  16. package/dist/change-set-schema/index.d.ts.map +1 -1
  17. package/dist/change-set-schema/index.js +1 -1
  18. package/dist/cli/lint/lint.d.ts.map +1 -1
  19. package/dist/cli/lint/lint.js +11 -1
  20. package/dist/cli/lint/stories/index.d.ts +2 -0
  21. package/dist/cli/lint/stories/index.d.ts.map +1 -0
  22. package/dist/cli/lint/stories/index.js +2 -0
  23. package/dist/cli/lint/stories/report.d.ts +4 -0
  24. package/dist/cli/lint/stories/report.d.ts.map +1 -0
  25. package/dist/cli/lint/stories/report.js +24 -0
  26. package/dist/domain/project-config/project-config.d.ts +4 -0
  27. package/dist/domain/project-config/project-config.d.ts.map +1 -1
  28. package/dist/domain/project-config/validation/paths.js +20 -4
  29. package/dist/index.d.ts +7 -3
  30. package/dist/index.d.ts.map +1 -1
  31. package/dist/index.js +7 -2
  32. package/dist/orchestrator/analyze-project/analyze-project.d.ts +4 -0
  33. package/dist/orchestrator/analyze-project/analyze-project.d.ts.map +1 -1
  34. package/dist/orchestrator/inspect/inspect.d.ts +6 -0
  35. package/dist/orchestrator/inspect/inspect.d.ts.map +1 -1
  36. package/dist/orchestrator/load-changes/index.d.ts +1 -1
  37. package/dist/orchestrator/load-changes/index.d.ts.map +1 -1
  38. package/dist/orchestrator/load-changes/index.js +1 -1
  39. package/dist/orchestrator/load-changes/load-changes.d.ts +2 -1
  40. package/dist/orchestrator/load-changes/load-changes.d.ts.map +1 -1
  41. package/dist/orchestrator/load-changes/load-changes.js +6 -0
  42. package/dist/orchestrator/load-documentation/errors.d.ts +18 -0
  43. package/dist/orchestrator/load-documentation/errors.d.ts.map +1 -0
  44. package/dist/orchestrator/load-documentation/errors.js +5 -0
  45. package/dist/orchestrator/load-documentation/index.d.ts +2 -0
  46. package/dist/orchestrator/load-documentation/index.d.ts.map +1 -0
  47. package/dist/orchestrator/load-documentation/index.js +1 -0
  48. package/dist/orchestrator/load-documentation/load-documentation.d.ts +23 -0
  49. package/dist/orchestrator/load-documentation/load-documentation.d.ts.map +1 -0
  50. package/dist/orchestrator/load-documentation/load-documentation.js +66 -0
  51. package/dist/orchestrator/load-project/load-project.d.ts +4 -0
  52. package/dist/orchestrator/load-project/load-project.d.ts.map +1 -1
  53. package/dist/orchestrator/load-source-files/errors.d.ts +10 -0
  54. package/dist/orchestrator/load-source-files/errors.d.ts.map +1 -0
  55. package/dist/orchestrator/load-source-files/errors.js +3 -0
  56. package/dist/orchestrator/load-source-files/index.d.ts +2 -0
  57. package/dist/orchestrator/load-source-files/index.d.ts.map +1 -0
  58. package/dist/orchestrator/load-source-files/index.js +1 -0
  59. package/dist/orchestrator/load-source-files/load-source-files.d.ts +16 -0
  60. package/dist/orchestrator/load-source-files/load-source-files.d.ts.map +1 -0
  61. package/dist/orchestrator/load-source-files/load-source-files.js +30 -0
  62. package/dist/orchestrator/run-stories/errors.d.ts +1 -1
  63. package/dist/orchestrator/run-stories/errors.d.ts.map +1 -1
  64. package/dist/orchestrator/run-stories/run-stories.d.ts.map +1 -1
  65. package/dist/orchestrator/run-stories/run-stories.js +128 -13
  66. package/dist/services/git/changed-paths.d.ts +2 -1
  67. package/dist/services/git/changed-paths.d.ts.map +1 -1
  68. package/dist/services/git/changed-paths.js +16 -1
  69. package/dist/services/git/git.d.ts +2 -1
  70. package/dist/services/git/git.d.ts.map +1 -1
  71. package/dist/services/git/git.js +5 -1
  72. package/dist/story/schema/index.d.ts +2 -2
  73. package/dist/story/schema/index.d.ts.map +1 -1
  74. package/dist/story/schema/index.js +1 -1
  75. package/dist/story/schema/story-report-schema.d.ts +0 -30
  76. package/dist/story/schema/story-report-schema.d.ts.map +1 -1
  77. package/dist/story/schema/story-tree-schema.d.ts +13 -0
  78. package/dist/story/schema/story-tree-schema.d.ts.map +1 -1
  79. package/dist/story/schema/story-tree-schema.js +14 -2
  80. package/dist/story/story.d.ts +12 -3
  81. package/dist/story/story.d.ts.map +1 -1
  82. package/dist/story/story.js +8 -4
  83. package/package.json +2 -2
  84. package/schema.json +31 -0
@@ -8,9 +8,11 @@ export declare const ArchitectureAnalysisSchema: Schema.Struct<{
8
8
  readonly sourceRoots: Schema.$Array<Schema.String>;
9
9
  readonly ignoredPaths: Schema.$Array<Schema.String>;
10
10
  readonly storiesPath: Schema.optional<Schema.String>;
11
+ readonly storyTimeout: Schema.optional<Schema.String>;
11
12
  readonly layers: Schema.$Record<Schema.String, Schema.Struct<{
12
13
  readonly paths: Schema.$Array<Schema.String>;
13
14
  readonly description: Schema.optional<Schema.String>;
15
+ readonly docsPath: Schema.optional<Schema.String>;
14
16
  readonly modules: Schema.$Record<Schema.String, Schema.Struct<{
15
17
  readonly shared: Schema.Boolean;
16
18
  readonly exposed: Schema.Boolean;
@@ -18,6 +20,7 @@ export declare const ArchitectureAnalysisSchema: Schema.Struct<{
18
20
  readonly moduleGraphs: Schema.$Record<Schema.String, Schema.Struct<{
19
21
  readonly description: Schema.optional<Schema.String>;
20
22
  readonly path: Schema.String;
23
+ readonly docsPath: Schema.optional<Schema.String>;
21
24
  readonly modules: Schema.$Record<Schema.String, Schema.Struct<{
22
25
  readonly shared: Schema.Boolean;
23
26
  readonly exposed: Schema.Boolean;
@@ -27,6 +30,7 @@ export declare const ArchitectureAnalysisSchema: Schema.Struct<{
27
30
  }>>;
28
31
  readonly layerGraphs: Schema.$Record<Schema.String, Schema.Struct<{
29
32
  readonly description: Schema.optional<Schema.String>;
33
+ readonly docsPath: Schema.optional<Schema.String>;
30
34
  readonly rules: Schema.$Record<Schema.String, Schema.$Array<Schema.String>>;
31
35
  }>>;
32
36
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"architecture-analysis-schema.d.ts","sourceRoot":"","sources":["../../src/architecture-analysis-schema/architecture-analysis-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EACL,mBAAmB,EACnB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,eAAe,EACrB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,oBAAoB,EACpB,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACxB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,2BAA2B,EAC3B,wBAAwB,EACxB,mBAAmB,EACnB,KAAK,MAAM,EACX,KAAK,qBAAqB,EAC1B,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACvB,MAAM,4BAA4B,CAAC;AAEpC,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAIrC,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,OAAO,0BAA0B,CAAC,IAAI,CAAC;AAE1E,OAAO,EACL,2BAA2B,EAC3B,mBAAmB,EACnB,oBAAoB,EACpB,wBAAwB,EACxB,mBAAmB,GACpB,CAAC;AACF,YAAY,EACV,cAAc,EACd,mBAAmB,EACnB,MAAM,EACN,qBAAqB,EACrB,eAAe,EACf,aAAa,EACb,eAAe,EACf,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACrB,WAAW,EACX,eAAe,EACf,kBAAkB,GACnB,CAAC"}
1
+ {"version":3,"file":"architecture-analysis-schema.d.ts","sourceRoot":"","sources":["../../src/architecture-analysis-schema/architecture-analysis-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EACL,mBAAmB,EACnB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,eAAe,EACrB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,oBAAoB,EACpB,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACxB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,2BAA2B,EAC3B,wBAAwB,EACxB,mBAAmB,EACnB,KAAK,MAAM,EACX,KAAK,qBAAqB,EAC1B,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACvB,MAAM,4BAA4B,CAAC;AAEpC,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAIrC,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,OAAO,0BAA0B,CAAC,IAAI,CAAC;AAE1E,OAAO,EACL,2BAA2B,EAC3B,mBAAmB,EACnB,oBAAoB,EACpB,wBAAwB,EACxB,mBAAmB,GACpB,CAAC;AACF,YAAY,EACV,cAAc,EACd,mBAAmB,EACnB,MAAM,EACN,qBAAqB,EACrB,eAAe,EACf,aAAa,EACb,eAAe,EACf,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACrB,WAAW,EACX,eAAe,EACf,kBAAkB,GACnB,CAAC"}
@@ -0,0 +1,36 @@
1
+ import { Schema } from 'effect';
2
+ export declare const DocumentationScopeSchema: Schema.Union<readonly [Schema.Struct<{
3
+ readonly kind: Schema.Literal<"module">;
4
+ readonly modulePath: Schema.String;
5
+ }>, Schema.Struct<{
6
+ readonly kind: Schema.Literal<"module-graph">;
7
+ readonly layerId: Schema.String;
8
+ readonly graphId: Schema.String;
9
+ }>, Schema.Struct<{
10
+ readonly kind: Schema.Literal<"layer">;
11
+ readonly layerId: Schema.String;
12
+ }>, Schema.Struct<{
13
+ readonly kind: Schema.Literal<"layer-graph">;
14
+ readonly graphId: Schema.String;
15
+ }>]>;
16
+ export type DocumentationScope = typeof DocumentationScopeSchema.Type;
17
+ export declare const DocumentationSchema: Schema.Struct<{
18
+ readonly scope: Schema.Union<readonly [Schema.Struct<{
19
+ readonly kind: Schema.Literal<"module">;
20
+ readonly modulePath: Schema.String;
21
+ }>, Schema.Struct<{
22
+ readonly kind: Schema.Literal<"module-graph">;
23
+ readonly layerId: Schema.String;
24
+ readonly graphId: Schema.String;
25
+ }>, Schema.Struct<{
26
+ readonly kind: Schema.Literal<"layer">;
27
+ readonly layerId: Schema.String;
28
+ }>, Schema.Struct<{
29
+ readonly kind: Schema.Literal<"layer-graph">;
30
+ readonly graphId: Schema.String;
31
+ }>]>;
32
+ readonly path: Schema.optional<Schema.String>;
33
+ readonly content: Schema.optional<Schema.String>;
34
+ }>;
35
+ export type Documentation = typeof DocumentationSchema.Type;
36
+ //# sourceMappingURL=documentation-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"documentation-schema.d.ts","sourceRoot":"","sources":["../../src/architecture-analysis-schema/documentation-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;IAYnC,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,OAAO,wBAAwB,CAAC,IAAI,CAAC;AAEtE,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;EAI9B,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,OAAO,mBAAmB,CAAC,IAAI,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { Schema } from 'effect';
2
+ export const DocumentationScopeSchema = Schema.Union([
3
+ Schema.Struct({ kind: Schema.Literal('module'), modulePath: Schema.String }),
4
+ Schema.Struct({
5
+ kind: Schema.Literal('module-graph'),
6
+ layerId: Schema.String,
7
+ graphId: Schema.String,
8
+ }),
9
+ Schema.Struct({ kind: Schema.Literal('layer'), layerId: Schema.String }),
10
+ Schema.Struct({
11
+ kind: Schema.Literal('layer-graph'),
12
+ graphId: Schema.String,
13
+ }),
14
+ ]);
15
+ export const DocumentationSchema = Schema.Struct({
16
+ scope: DocumentationScopeSchema,
17
+ path: Schema.optional(Schema.String),
18
+ content: Schema.optional(Schema.String),
19
+ });
@@ -4,4 +4,6 @@ export { ArchitectureAnalysisSchema, ConfigValidationIssueSchema, LayerAnalysisS
4
4
  export type { AnalyzedModule, AnalyzedModuleGraph, ArchitectureAnalysis, Config, ConfigValidationIssue, ForbiddenImport, LayerAnalysis, LayerDefinition, ModuleAnalysis, ModuleConfig, ModuleDefinition, ModuleDependency, ModuleGraphConfig, ModuleGraphDefinition, ModuleShape, ModuleViolation, ObservedModuleKind, } from './architecture-analysis-schema.js';
5
5
  export { ModuleSourceFileSchema, ModuleSourceSnapshotSchema, } from './module-source-schema.js';
6
6
  export type { ModuleSourceFile, ModuleSourceSnapshot, } from './module-source-schema.js';
7
+ export { DocumentationScopeSchema, DocumentationSchema, } from './documentation-schema.js';
8
+ export type { Documentation, DocumentationScope, } from './documentation-schema.js';
7
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/architecture-analysis-schema/index.ts"],"names":[],"mappings":"AAAA,mFAAmF;AACnF,OAAO,EACL,0BAA0B,EAC1B,2BAA2B,EAC3B,mBAAmB,EACnB,oBAAoB,EACpB,wBAAwB,EACxB,mBAAmB,GACpB,MAAM,mCAAmC,CAAC;AAC3C,oEAAoE;AACpE,YAAY,EACV,cAAc,EACd,mBAAmB,EACnB,oBAAoB,EACpB,MAAM,EACN,qBAAqB,EACrB,eAAe,EACf,aAAa,EACb,eAAe,EACf,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACrB,WAAW,EACX,eAAe,EACf,kBAAkB,GACnB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,sBAAsB,EACtB,0BAA0B,GAC3B,MAAM,2BAA2B,CAAC;AACnC,YAAY,EACV,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/architecture-analysis-schema/index.ts"],"names":[],"mappings":"AAAA,mFAAmF;AACnF,OAAO,EACL,0BAA0B,EAC1B,2BAA2B,EAC3B,mBAAmB,EACnB,oBAAoB,EACpB,wBAAwB,EACxB,mBAAmB,GACpB,MAAM,mCAAmC,CAAC;AAC3C,oEAAoE;AACpE,YAAY,EACV,cAAc,EACd,mBAAmB,EACnB,oBAAoB,EACpB,MAAM,EACN,qBAAqB,EACrB,eAAe,EACf,aAAa,EACb,eAAe,EACf,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACrB,WAAW,EACX,eAAe,EACf,kBAAkB,GACnB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,sBAAsB,EACtB,0BAA0B,GAC3B,MAAM,2BAA2B,CAAC;AACnC,YAAY,EACV,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,wBAAwB,EACxB,mBAAmB,GACpB,MAAM,2BAA2B,CAAC;AACnC,YAAY,EACV,aAAa,EACb,kBAAkB,GACnB,MAAM,2BAA2B,CAAC"}
@@ -1,3 +1,4 @@
1
1
  /** Browser and RPC consumers use this canonical Architecture Analysis contract. */
2
2
  export { ArchitectureAnalysisSchema, ConfigValidationIssueSchema, LayerAnalysisSchema, ModuleAnalysisSchema, ProjectConfigInputSchema, ProjectConfigSchema, } from './architecture-analysis-schema.js';
3
3
  export { ModuleSourceFileSchema, ModuleSourceSnapshotSchema, } from './module-source-schema.js';
4
+ export { DocumentationScopeSchema, DocumentationSchema, } from './documentation-schema.js';
@@ -6,6 +6,7 @@ declare const ModuleSchema: Schema.Struct<{
6
6
  declare const ModuleGraphSchema: Schema.Struct<{
7
7
  readonly description: Schema.optional<Schema.String>;
8
8
  readonly path: Schema.String;
9
+ readonly docsPath: Schema.optional<Schema.String>;
9
10
  readonly modules: Schema.$Record<Schema.String, Schema.Struct<{
10
11
  readonly shared: Schema.Boolean;
11
12
  readonly exposed: Schema.Boolean;
@@ -22,9 +23,11 @@ export declare const ProjectConfigSchema: Schema.Struct<{
22
23
  readonly sourceRoots: Schema.$Array<Schema.String>;
23
24
  readonly ignoredPaths: Schema.$Array<Schema.String>;
24
25
  readonly storiesPath: Schema.optional<Schema.String>;
26
+ readonly storyTimeout: Schema.optional<Schema.String>;
25
27
  readonly layers: Schema.$Record<Schema.String, Schema.Struct<{
26
28
  readonly paths: Schema.$Array<Schema.String>;
27
29
  readonly description: Schema.optional<Schema.String>;
30
+ readonly docsPath: Schema.optional<Schema.String>;
28
31
  readonly modules: Schema.$Record<Schema.String, Schema.Struct<{
29
32
  readonly shared: Schema.Boolean;
30
33
  readonly exposed: Schema.Boolean;
@@ -32,6 +35,7 @@ export declare const ProjectConfigSchema: Schema.Struct<{
32
35
  readonly moduleGraphs: Schema.$Record<Schema.String, Schema.Struct<{
33
36
  readonly description: Schema.optional<Schema.String>;
34
37
  readonly path: Schema.String;
38
+ readonly docsPath: Schema.optional<Schema.String>;
35
39
  readonly modules: Schema.$Record<Schema.String, Schema.Struct<{
36
40
  readonly shared: Schema.Boolean;
37
41
  readonly exposed: Schema.Boolean;
@@ -41,6 +45,7 @@ export declare const ProjectConfigSchema: Schema.Struct<{
41
45
  }>>;
42
46
  readonly layerGraphs: Schema.$Record<Schema.String, Schema.Struct<{
43
47
  readonly description: Schema.optional<Schema.String>;
48
+ readonly docsPath: Schema.optional<Schema.String>;
44
49
  readonly rules: Schema.$Record<Schema.String, Schema.$Array<Schema.String>>;
45
50
  }>>;
46
51
  }>;
@@ -54,9 +59,11 @@ export declare const ProjectConfigInputSchema: Schema.Struct<{
54
59
  readonly sourceRoots: Schema.$Array<Schema.String>;
55
60
  readonly ignoredPaths: Schema.withDecodingDefaultKey<Schema.$Array<Schema.String>, never>;
56
61
  readonly storiesPath: Schema.optional<Schema.String>;
62
+ readonly storyTimeout: Schema.optional<Schema.String>;
57
63
  readonly layers: Schema.$Record<Schema.String, Schema.Struct<{
58
64
  readonly paths: Schema.$Array<Schema.String>;
59
65
  readonly description: Schema.optional<Schema.String>;
66
+ readonly docsPath: Schema.optional<Schema.String>;
60
67
  readonly modules: Schema.withDecodingDefaultKey<Schema.$Record<Schema.String, Schema.Struct<{
61
68
  readonly shared: Schema.withDecodingDefaultKey<Schema.Boolean, never>;
62
69
  readonly exposed: Schema.withDecodingDefaultKey<Schema.Boolean, never>;
@@ -64,6 +71,7 @@ export declare const ProjectConfigInputSchema: Schema.Struct<{
64
71
  readonly moduleGraphs: Schema.withDecodingDefaultKey<Schema.$Record<Schema.String, Schema.Struct<{
65
72
  readonly description: Schema.optional<Schema.String>;
66
73
  readonly path: Schema.String;
74
+ readonly docsPath: Schema.optional<Schema.String>;
67
75
  readonly modules: Schema.$Record<Schema.String, Schema.Struct<{
68
76
  readonly shared: Schema.withDecodingDefaultKey<Schema.Boolean, never>;
69
77
  readonly exposed: Schema.withDecodingDefaultKey<Schema.Boolean, never>;
@@ -73,6 +81,7 @@ export declare const ProjectConfigInputSchema: Schema.Struct<{
73
81
  }>>;
74
82
  readonly layerGraphs: Schema.$Record<Schema.String, Schema.Struct<{
75
83
  readonly description: Schema.optional<Schema.String>;
84
+ readonly docsPath: Schema.optional<Schema.String>;
76
85
  readonly rules: Schema.$Record<Schema.String, Schema.$Array<Schema.String>>;
77
86
  }>>;
78
87
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"project-config-schema.d.ts","sourceRoot":"","sources":["../../src/architecture-analysis-schema/project-config-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,MAAM,EAAE,MAAM,QAAQ,CAAC;AAiBxC,QAAA,MAAM,YAAY;;;EAGY,CAAC;AAqC/B,QAAA,MAAM,iBAAiB;;;;;;;;EAOY,CAAC;AA2HpC;;;;GAIG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;EASK,CAAC;AAEtC;;;;GAIG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;EAWA,CAAC;AAEtC,MAAM,MAAM,MAAM,GAAG,OAAO,mBAAmB,CAAC,IAAI,CAAC;AAErD,MAAM,MAAM,YAAY,GAAG,OAAO,YAAY,CAAC,IAAI,CAAC;AAEpD,MAAM,MAAM,iBAAiB,GAAG,OAAO,iBAAiB,CAAC,IAAI,CAAC;AAE9D,eAAO,MAAM,2BAA2B;;;EAatC,CAAC;AAEH,MAAM,MAAM,qBAAqB,GAAG,OAAO,2BAA2B,CAAC,IAAI,CAAC"}
1
+ {"version":3,"file":"project-config-schema.d.ts","sourceRoot":"","sources":["../../src/architecture-analysis-schema/project-config-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,MAAM,EAAE,MAAM,QAAQ,CAAC;AAiBxC,QAAA,MAAM,YAAY;;;EAGY,CAAC;AA0C/B,QAAA,MAAM,iBAAiB;;;;;;;;;EAQY,CAAC;AAoIpC;;;;GAIG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAUK,CAAC;AAEtC;;;;GAIG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAYA,CAAC;AAEtC,MAAM,MAAM,MAAM,GAAG,OAAO,mBAAmB,CAAC,IAAI,CAAC;AAErD,MAAM,MAAM,YAAY,GAAG,OAAO,YAAY,CAAC,IAAI,CAAC;AAEpD,MAAM,MAAM,iBAAiB,GAAG,OAAO,iBAAiB,CAAC,IAAI,CAAC;AAE9D,eAAO,MAAM,2BAA2B;;;EAatC,CAAC;AAEH,MAAM,MAAM,qBAAqB,GAAG,OAAO,2BAA2B,CAAC,IAAI,CAAC"}
@@ -27,12 +27,16 @@ const graphDescriptionField = Schema.optional(Schema.String).annotate({
27
27
  const graphPathField = Schema.String.annotate({
28
28
  description: 'Canonical project-relative directory rooting this Module Graph. Every member lives below it and every file below it must belong to a member.',
29
29
  });
30
+ const docsPathField = Schema.optional(Schema.String).annotate({
31
+ description: 'Canonical project-relative path to a markdown file documenting this entity. Read-only: Laymos never writes to it.',
32
+ });
30
33
  const graphModulesDescription = 'Every member of this Module Graph, keyed relative to its path. At least two members, at least one exposed, and no member may be Shared.';
31
34
  const graphRulesDescription = 'Maps a member key to the member keys it may directly depend on. Rules are default-deny and, unlike LayerGraph Rules, are NOT transitive: only declared edges are permitted. They must be acyclic within this Module Graph.';
32
35
  const GraphRulesSchema = Schema.Record(Schema.String, Schema.Array(Schema.String)).annotate({ description: graphRulesDescription });
33
36
  const ModuleGraphSchema = Schema.Struct({
34
37
  description: graphDescriptionField,
35
38
  path: graphPathField,
39
+ docsPath: docsPathField,
36
40
  modules: Schema.Record(Schema.String, ModuleSchema)
37
41
  .annotate({ description: graphModulesDescription })
38
42
  .pipe(Schema.check(Schema.isMinProperties(2))),
@@ -41,6 +45,7 @@ const ModuleGraphSchema = Schema.Struct({
41
45
  const ModuleGraphInputSchema = Schema.Struct({
42
46
  description: graphDescriptionField,
43
47
  path: graphPathField,
48
+ docsPath: docsPathField,
44
49
  modules: Schema.Record(Schema.String, ModuleInputSchema)
45
50
  .annotate({ description: graphModulesDescription })
46
51
  .pipe(Schema.check(Schema.isMinProperties(2))),
@@ -63,6 +68,7 @@ const layerModuleGraphsDescription = 'Every Module Graph in this Layer, keyed by
63
68
  const LayerSchema = Schema.Struct({
64
69
  paths: layerPathsField,
65
70
  description: layerDescriptionField,
71
+ docsPath: docsPathField,
66
72
  modules: Schema.Record(Schema.String, ModuleSchema).annotate({
67
73
  description: layerModulesDescription,
68
74
  }),
@@ -73,6 +79,7 @@ const LayerSchema = Schema.Struct({
73
79
  const LayerInputSchema = Schema.Struct({
74
80
  paths: layerPathsField,
75
81
  description: layerDescriptionField,
82
+ docsPath: docsPathField,
76
83
  modules: Schema.Record(Schema.String, ModuleInputSchema)
77
84
  .annotate({ description: layerModulesDescription })
78
85
  .pipe(Schema.withDecodingDefaultKey(Effect.succeed({}))),
@@ -84,6 +91,7 @@ const LayerGraphSchema = Schema.Struct({
84
91
  description: Schema.optional(Schema.String).annotate({
85
92
  description: 'Human-readable summary of this LayerGraph.',
86
93
  }),
94
+ docsPath: docsPathField,
87
95
  rules: Schema.Record(Schema.String, Schema.Array(Schema.String)).annotate({
88
96
  description: 'Maps a Layer id to the Layer ids it may directly depend on. Rules are default-deny and transitive: a dependency between two Layers with no declared path between them, direct or transitive, is a violation. A Layer with no outgoing rule is a valid, intentional leaf.',
89
97
  }),
@@ -109,6 +117,9 @@ const IgnoredPathsSchema = Schema.Array(Schema.String).annotate({
109
117
  const storiesPathField = Schema.optional(Schema.String).annotate({
110
118
  description: 'Canonical project-relative folder holding every Story file and the index.ts entry point exposing the Story Collection. Implicitly an Ignored path.',
111
119
  });
120
+ const storyTimeoutField = Schema.optional(Schema.String).annotate({
121
+ description: 'How long one Story may run before it is failed as timed out, as an Effect Duration string (e.g. "10 seconds"). Defaults to 10 seconds; a Story may override it with its own timeout.',
122
+ });
112
123
  const layersDescription = 'Every Layer in the project, keyed by id, each owning its Modules and Module Graphs.';
113
124
  const layerGraphsField = Schema.Record(Schema.String, LayerGraphSchema).annotate({
114
125
  description: 'Every LayerGraph in the project, keyed by id. An empty set denies every cross-Layer dependency.',
@@ -123,6 +134,7 @@ export const ProjectConfigSchema = Schema.Struct({
123
134
  sourceRoots: sourceRootsField,
124
135
  ignoredPaths: IgnoredPathsSchema,
125
136
  storiesPath: storiesPathField,
137
+ storyTimeout: storyTimeoutField,
126
138
  layers: Schema.Record(Schema.String, LayerSchema)
127
139
  .annotate({ description: layersDescription })
128
140
  .pipe(Schema.check(Schema.isMinProperties(1))),
@@ -138,6 +150,7 @@ export const ProjectConfigInputSchema = Schema.Struct({
138
150
  sourceRoots: sourceRootsField,
139
151
  ignoredPaths: IgnoredPathsSchema.pipe(Schema.withDecodingDefaultKey(Effect.succeed([]))),
140
152
  storiesPath: storiesPathField,
153
+ storyTimeout: storyTimeoutField,
141
154
  layers: Schema.Record(Schema.String, LayerInputSchema)
142
155
  .annotate({ description: layersDescription })
143
156
  .pipe(Schema.check(Schema.isMinProperties(1))),
@@ -52,4 +52,10 @@ export declare const FileDiffSchema: Schema.Struct<{
52
52
  }>>;
53
53
  }>;
54
54
  export type FileDiff = typeof FileDiffSchema.Type;
55
+ export declare const BranchSchema: Schema.Struct<{
56
+ readonly name: Schema.String;
57
+ readonly remote: Schema.Boolean;
58
+ readonly current: Schema.Boolean;
59
+ }>;
60
+ export type Branch = typeof BranchSchema.Type;
55
61
  //# sourceMappingURL=change-set-schema.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"change-set-schema.d.ts","sourceRoot":"","sources":["../../src/change-set-schema/change-set-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,eAAO,MAAM,kBAAkB,iDAAyC,CAAC;AAEzE,MAAM,MAAM,YAAY,GAAG,OAAO,kBAAkB,CAAC,IAAI,CAAC;AAE1D,eAAO,MAAM,iBAAiB;;;;;EAS5B,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,OAAO,iBAAiB,CAAC,IAAI,CAAC;AAExD,eAAO,MAAM,eAAe;;;;;;;;EAO1B,CAAC;AAEH,MAAM,MAAM,SAAS,GAAG,OAAO,eAAe,CAAC,IAAI,CAAC;AAEpD,eAAO,MAAM,cAAc;;;;;EASzB,CAAC;AAEH,MAAM,MAAM,QAAQ,GAAG,OAAO,cAAc,CAAC,IAAI,CAAC;AAElD,eAAO,MAAM,cAAc;;;;;;;;;;EAQzB,CAAC;AAEH,MAAM,MAAM,QAAQ,GAAG,OAAO,cAAc,CAAC,IAAI,CAAC;AAElD,eAAO,MAAM,cAAc;;;;;;;;;;;;;EAOzB,CAAC;AAEH,MAAM,MAAM,QAAQ,GAAG,OAAO,cAAc,CAAC,IAAI,CAAC"}
1
+ {"version":3,"file":"change-set-schema.d.ts","sourceRoot":"","sources":["../../src/change-set-schema/change-set-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,eAAO,MAAM,kBAAkB,iDAAyC,CAAC;AAEzE,MAAM,MAAM,YAAY,GAAG,OAAO,kBAAkB,CAAC,IAAI,CAAC;AAE1D,eAAO,MAAM,iBAAiB;;;;;EAS5B,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,OAAO,iBAAiB,CAAC,IAAI,CAAC;AAExD,eAAO,MAAM,eAAe;;;;;;;;EAO1B,CAAC;AAEH,MAAM,MAAM,SAAS,GAAG,OAAO,eAAe,CAAC,IAAI,CAAC;AAEpD,eAAO,MAAM,cAAc;;;;;EASzB,CAAC;AAEH,MAAM,MAAM,QAAQ,GAAG,OAAO,cAAc,CAAC,IAAI,CAAC;AAElD,eAAO,MAAM,cAAc;;;;;;;;;;EAQzB,CAAC;AAEH,MAAM,MAAM,QAAQ,GAAG,OAAO,cAAc,CAAC,IAAI,CAAC;AAElD,eAAO,MAAM,cAAc;;;;;;;;;;;;;EAOzB,CAAC;AAEH,MAAM,MAAM,QAAQ,GAAG,OAAO,cAAc,CAAC,IAAI,CAAC;AAElD,eAAO,MAAM,YAAY;;;;EAQvB,CAAC;AAEH,MAAM,MAAM,MAAM,GAAG,OAAO,YAAY,CAAC,IAAI,CAAC"}
@@ -41,3 +41,11 @@ export const FileDiffSchema = Schema.Struct({
41
41
  title: 'File Diff',
42
42
  description: 'The changed regions of one modified path between a Base ref and the working tree, parsed into hunks and numbered lines.',
43
43
  });
44
+ export const BranchSchema = Schema.Struct({
45
+ name: Schema.String,
46
+ remote: Schema.Boolean,
47
+ current: Schema.Boolean,
48
+ }).annotate({
49
+ title: 'Branch',
50
+ description: "One local or remote-tracking branch a Change set's Base ref may name. `current` marks the branch HEAD is on.",
51
+ });
@@ -1,3 +1,3 @@
1
- export { ChangedPathSchema, ChangeSetSchema, ChangeStatusSchema, DiffHunkSchema, DiffLineSchema, FileDiffSchema, } from './change-set-schema.js';
2
- export type { ChangedPath, ChangeSet, ChangeStatus, DiffHunk, DiffLine, FileDiff, } from './change-set-schema.js';
1
+ export { BranchSchema, ChangedPathSchema, ChangeSetSchema, ChangeStatusSchema, DiffHunkSchema, DiffLineSchema, FileDiffSchema, } from './change-set-schema.js';
2
+ export type { Branch, ChangedPath, ChangeSet, ChangeStatus, DiffHunk, DiffLine, FileDiff, } from './change-set-schema.js';
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/change-set-schema/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,kBAAkB,EAClB,cAAc,EACd,cAAc,EACd,cAAc,GACf,MAAM,wBAAwB,CAAC;AAEhC,YAAY,EACV,WAAW,EACX,SAAS,EACT,YAAY,EACZ,QAAQ,EACR,QAAQ,EACR,QAAQ,GACT,MAAM,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/change-set-schema/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,eAAe,EACf,kBAAkB,EAClB,cAAc,EACd,cAAc,EACd,cAAc,GACf,MAAM,wBAAwB,CAAC;AAEhC,YAAY,EACV,MAAM,EACN,WAAW,EACX,SAAS,EACT,YAAY,EACZ,QAAQ,EACR,QAAQ,EACR,QAAQ,GACT,MAAM,wBAAwB,CAAC"}
@@ -1,2 +1,2 @@
1
1
  // RPC transports use this browser-safe runtime contract for Change sets.
2
- export { ChangedPathSchema, ChangeSetSchema, ChangeStatusSchema, DiffHunkSchema, DiffLineSchema, FileDiffSchema, } from './change-set-schema.js';
2
+ export { BranchSchema, ChangedPathSchema, ChangeSetSchema, ChangeStatusSchema, DiffHunkSchema, DiffLineSchema, FileDiffSchema, } from './change-set-schema.js';
@@ -1 +1 @@
1
- {"version":3,"file":"lint.d.ts","sourceRoot":"","sources":["../../../src/cli/lint/lint.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,MAAM,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAQ9C,wBAAgB,eAAe,CAAC,CAAC,EAC/B,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,+QAW5C"}
1
+ {"version":3,"file":"lint.d.ts","sourceRoot":"","sources":["../../../src/cli/lint/lint.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,MAAM,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAa9C,wBAAgB,eAAe,CAAC,CAAC,EAC/B,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,+QAW5C"}
@@ -1,10 +1,12 @@
1
1
  import { Console, Effect } from 'effect';
2
2
  import { Command } from 'effect/unstable/cli';
3
3
  import { analyzeProject } from '../../orchestrator/analyze-project/index.js';
4
+ import { getStoryTree } from '../../orchestrator/run-stories/index.js';
4
5
  import { makeLayersCommand } from './layers/index.js';
5
6
  import { renderLayerReport } from './layers/report.js';
6
7
  import { makeModulesCommand } from './modules/index.js';
7
8
  import { renderModuleReport } from './modules/report.js';
9
+ import { countGroupsWithoutPage, renderStoriesReport, } from './stories/index.js';
8
10
  export function makeLintCommand(configPath) {
9
11
  return Command.make('lint', {}, () => configPath.pipe(Effect.flatMap(runLint))).pipe(Command.withDescription('Check every configured architectural rule.'), Command.withSubcommands([
10
12
  makeLayersCommand(configPath),
@@ -16,11 +18,19 @@ function runLint(configPath) {
16
18
  const result = yield* analyzeProject(configPath);
17
19
  yield* Console.log(renderLayerReport(result.layerAnalysis));
18
20
  yield* Console.log(renderModuleReport(result.moduleAnalysis));
21
+ const missingPages = yield* lintStories(configPath);
19
22
  if (result.layerAnalysis.unassignedFiles.length > 0 ||
20
23
  result.layerAnalysis.forbiddenImports.length > 0 ||
21
24
  result.layerAnalysis.layersWithoutModules.length > 0 ||
22
- result.moduleAnalysis.violations.length > 0) {
25
+ result.moduleAnalysis.violations.length > 0 ||
26
+ missingPages > 0) {
23
27
  process.exitCode = 1;
24
28
  }
25
29
  });
26
30
  }
31
+ // A project without a Stories path has no Story Groups to lint.
32
+ function lintStories(configPath) {
33
+ return getStoryTree(configPath).pipe(Effect.flatMap((tree) => Console.log(renderStoriesReport(tree)).pipe(Effect.as(countGroupsWithoutPage(tree)))), Effect.catchTag('StoriesError', (error) => error.reason === 'no-stories-path'
34
+ ? Effect.succeed(0)
35
+ : Effect.die(error)));
36
+ }
@@ -0,0 +1,2 @@
1
+ export { countGroupsWithoutPage, renderStoriesReport } from './report.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/cli/lint/stories/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,2 @@
1
+ // The lint command uses these to report Story Groups missing their page.
2
+ export { countGroupsWithoutPage, renderStoriesReport } from './report.js';
@@ -0,0 +1,4 @@
1
+ import type { StoryTree } from '../../../story/schema/index.js';
2
+ export declare function renderStoriesReport(tree: StoryTree): string;
3
+ export declare function countGroupsWithoutPage(tree: StoryTree): number;
4
+ //# sourceMappingURL=report.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../../../src/cli/lint/stories/report.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAkB,MAAM,gCAAgC,CAAC;AAEhF,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAY3D;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAE9D"}
@@ -0,0 +1,24 @@
1
+ import * as colors from 'yoctocolors';
2
+ export function renderStoriesReport(tree) {
3
+ const missing = groupsWithoutPage(tree, []);
4
+ if (missing.length === 0) {
5
+ return colors.green('✓ Every Story Group has a page');
6
+ }
7
+ return [
8
+ colors.red('Story Groups without a page'),
9
+ '',
10
+ ...missing.map((id) => ` ${colors.yellow('✕')} ${id}`),
11
+ '',
12
+ `${missing.length} ${missing.length === 1 ? 'group' : 'groups'}`,
13
+ ].join('\n');
14
+ }
15
+ export function countGroupsWithoutPage(tree) {
16
+ return groupsWithoutPage(tree, []).length;
17
+ }
18
+ function groupsWithoutPage(group, path) {
19
+ const id = [...path, group.title];
20
+ return [
21
+ ...(group.page === null ? [id.join('/')] : []),
22
+ ...group.groups.flatMap((child) => groupsWithoutPage(child, id)),
23
+ ];
24
+ }
@@ -10,10 +10,12 @@ export declare function decodeProjectConfig(input: unknown): import("effect/Effe
10
10
  readonly sourceRoots: readonly string[];
11
11
  readonly ignoredPaths: readonly string[];
12
12
  readonly storiesPath?: string | undefined;
13
+ readonly storyTimeout?: string | undefined;
13
14
  readonly layers: {
14
15
  readonly [x: string]: {
15
16
  readonly paths: readonly string[];
16
17
  readonly description?: string | undefined;
18
+ readonly docsPath?: string | undefined;
17
19
  readonly modules: {
18
20
  readonly [x: string]: {
19
21
  readonly shared: boolean;
@@ -24,6 +26,7 @@ export declare function decodeProjectConfig(input: unknown): import("effect/Effe
24
26
  readonly [x: string]: {
25
27
  readonly description?: string | undefined;
26
28
  readonly path: string;
29
+ readonly docsPath?: string | undefined;
27
30
  readonly modules: {
28
31
  readonly [x: string]: {
29
32
  readonly shared: boolean;
@@ -40,6 +43,7 @@ export declare function decodeProjectConfig(input: unknown): import("effect/Effe
40
43
  readonly layerGraphs: {
41
44
  readonly [x: string]: {
42
45
  readonly description?: string | undefined;
46
+ readonly docsPath?: string | undefined;
43
47
  readonly rules: {
44
48
  readonly [x: string]: readonly string[];
45
49
  };
@@ -1 +1 @@
1
- {"version":3,"file":"project-config.d.ts","sourceRoot":"","sources":["../../../src/domain/project-config/project-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EACL,wBAAwB,EACxB,mBAAmB,EACnB,KAAK,MAAM,EACX,KAAK,qBAAqB,EAC3B,MAAM,6CAA6C,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAG7C,OAAO,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,CAAC;AACzB,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,YAAY,EAAE,MAAM,EAAE,qBAAqB,EAAE,CAAC;AAE9C,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8BAEjD;AAED,wBAAgB,cAAc,CAC5B,MAAM,EAAE,MAAM,GACb,SAAS,qBAAqB,EAAE,CAElC;AAED,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,GACtB,SAAS,qBAAqB,EAAE,CAoBlC;AAED,wBAAgB,uBAAuB,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAM3E"}
1
+ {"version":3,"file":"project-config.d.ts","sourceRoot":"","sources":["../../../src/domain/project-config/project-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EACL,wBAAwB,EACxB,mBAAmB,EACnB,KAAK,MAAM,EACX,KAAK,qBAAqB,EAC3B,MAAM,6CAA6C,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAG7C,OAAO,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,CAAC;AACzB,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,YAAY,EAAE,MAAM,EAAE,qBAAqB,EAAE,CAAC;AAE9C,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8BAEjD;AAED,wBAAgB,cAAc,CAC5B,MAAM,EAAE,MAAM,GACb,SAAS,qBAAqB,EAAE,CAElC;AAED,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,GACtB,SAAS,qBAAqB,EAAE,CAoBlC;AAED,wBAAgB,uBAAuB,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAM3E"}
@@ -17,10 +17,26 @@ function configPaths(config) {
17
17
  location: `ignoredPaths[${index}]`,
18
18
  path,
19
19
  })),
20
- ...Object.entries(config.layers).flatMap(([layer, value]) => value.paths.map((path, index) => ({
21
- location: `layers.${layer}.paths[${index}]`,
22
- path,
23
- }))),
20
+ ...Object.entries(config.layers).flatMap(([layer, value]) => [
21
+ ...value.paths.map((path, index) => ({
22
+ location: `layers.${layer}.paths[${index}]`,
23
+ path,
24
+ })),
25
+ ...(value.docsPath === undefined
26
+ ? []
27
+ : [{ location: `layers.${layer}.docsPath`, path: value.docsPath }]),
28
+ ...Object.entries(value.moduleGraphs).flatMap(([graph, graphValue]) => graphValue.docsPath === undefined
29
+ ? []
30
+ : [
31
+ {
32
+ location: `layers.${layer}.moduleGraphs.${graph}.docsPath`,
33
+ path: graphValue.docsPath,
34
+ },
35
+ ]),
36
+ ]),
37
+ ...Object.entries(config.layerGraphs).flatMap(([graph, value]) => value.docsPath === undefined
38
+ ? []
39
+ : [{ location: `layerGraphs.${graph}.docsPath`, path: value.docsPath }]),
24
40
  ];
25
41
  }
26
42
  function isCanonicalProjectPath(path) {
package/dist/index.d.ts CHANGED
@@ -1,9 +1,13 @@
1
1
  export { analyzeProject } from './orchestrator/analyze-project/index.js';
2
2
  export { loadModuleSource, ModuleSourceNotFound, ModuleSourceReadError, } from './orchestrator/load-module-source/index.js';
3
+ export { loadDocumentation, DocumentationReadError, DocumentationScopeNotFound, } from './orchestrator/load-documentation/index.js';
4
+ export { loadSourceFiles, SourceFileReadError, } from './orchestrator/load-source-files/index.js';
3
5
  export { ArchitectureAnalysisSchema } from './architecture-analysis-schema/index.js';
4
6
  export type { ArchitectureAnalysis } from './architecture-analysis-schema/index.js';
5
7
  export { ModuleSourceSnapshotSchema } from './architecture-analysis-schema/index.js';
6
8
  export type { ModuleSourceFile, ModuleSourceSnapshot, } from './architecture-analysis-schema/index.js';
9
+ export { DocumentationScopeSchema, DocumentationSchema, } from './architecture-analysis-schema/index.js';
10
+ export type { Documentation, DocumentationScope, } from './architecture-analysis-schema/index.js';
7
11
  export { InspectionTargetNotFound, ModuleInspectionCycle, inspectFile, inspectLayer, inspectModule, inspectProject, } from './orchestrator/inspect/index.js';
8
12
  export type { FileInspection, FileInspectionOptions, LayerInspection, ModuleInspection, ProjectInspection, } from './orchestrator/inspect/index.js';
9
13
  export { ConfigError } from './services/config/index.js';
@@ -11,8 +15,8 @@ export { CruiseError } from './services/file-cruiser/index.js';
11
15
  export { getStoryTree, planStories, runStories, StoriesError, } from './orchestrator/run-stories/index.js';
12
16
  export { StoryReportSchema, StoryTreeSchema } from './story/schema/index.js';
13
17
  export type { StoryReport, StoryTree } from './story/schema/index.js';
14
- export { loadChangeSet, loadFileDiff, } from './orchestrator/load-changes/index.js';
18
+ export { loadBranches, loadChangeSet, loadFileDiff, } from './orchestrator/load-changes/index.js';
15
19
  export { GitError } from './services/git/index.js';
16
- export { ChangedPathSchema, ChangeSetSchema, ChangeStatusSchema, DiffHunkSchema, DiffLineSchema, FileDiffSchema, } from './change-set-schema/index.js';
17
- export type { ChangedPath, ChangeSet, ChangeStatus, DiffHunk, DiffLine, FileDiff, } from './change-set-schema/index.js';
20
+ export { BranchSchema, ChangedPathSchema, ChangeSetSchema, ChangeStatusSchema, DiffHunkSchema, DiffLineSchema, FileDiffSchema, } from './change-set-schema/index.js';
21
+ export type { Branch, ChangedPath, ChangeSet, ChangeStatus, DiffHunk, DiffLine, FileDiff, } from './change-set-schema/index.js';
18
22
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,4CAA4C,CAAC;AAEpD,OAAO,EAAE,0BAA0B,EAAE,MAAM,yCAAyC,CAAC;AAErF,YAAY,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AACpF,OAAO,EAAE,0BAA0B,EAAE,MAAM,yCAAyC,CAAC;AACrF,YAAY,EACV,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,yCAAyC,CAAC;AACjD,OAAO,EACL,wBAAwB,EACxB,qBAAqB,EACrB,WAAW,EACX,YAAY,EACZ,aAAa,EACb,cAAc,GACf,MAAM,iCAAiC,CAAC;AACzC,YAAY,EACV,cAAc,EACd,qBAAqB,EACrB,eAAe,EACf,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAEzD,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAE/D,OAAO,EACL,YAAY,EACZ,WAAW,EACX,UAAU,EACV,YAAY,GACb,MAAM,qCAAqC,CAAC;AAE7C,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC7E,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEtE,OAAO,EACL,aAAa,EACb,YAAY,GACb,MAAM,sCAAsC,CAAC;AAE9C,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAEnD,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,kBAAkB,EAClB,cAAc,EACd,cAAc,EACd,cAAc,GACf,MAAM,8BAA8B,CAAC;AAEtC,YAAY,EACV,WAAW,EACX,SAAS,EACT,YAAY,EACZ,QAAQ,EACR,QAAQ,EACR,QAAQ,GACT,MAAM,8BAA8B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,4CAA4C,CAAC;AAEpD,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,0BAA0B,GAC3B,MAAM,4CAA4C,CAAC;AAEpD,OAAO,EACL,eAAe,EACf,mBAAmB,GACpB,MAAM,2CAA2C,CAAC;AAEnD,OAAO,EAAE,0BAA0B,EAAE,MAAM,yCAAyC,CAAC;AAErF,YAAY,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AACpF,OAAO,EAAE,0BAA0B,EAAE,MAAM,yCAAyC,CAAC;AACrF,YAAY,EACV,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,yCAAyC,CAAC;AACjD,OAAO,EACL,wBAAwB,EACxB,mBAAmB,GACpB,MAAM,yCAAyC,CAAC;AACjD,YAAY,EACV,aAAa,EACb,kBAAkB,GACnB,MAAM,yCAAyC,CAAC;AACjD,OAAO,EACL,wBAAwB,EACxB,qBAAqB,EACrB,WAAW,EACX,YAAY,EACZ,aAAa,EACb,cAAc,GACf,MAAM,iCAAiC,CAAC;AACzC,YAAY,EACV,cAAc,EACd,qBAAqB,EACrB,eAAe,EACf,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAEzD,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAE/D,OAAO,EACL,YAAY,EACZ,WAAW,EACX,UAAU,EACV,YAAY,GACb,MAAM,qCAAqC,CAAC;AAE7C,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC7E,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEtE,OAAO,EACL,YAAY,EACZ,aAAa,EACb,YAAY,GACb,MAAM,sCAAsC,CAAC;AAE9C,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAEnD,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,eAAe,EACf,kBAAkB,EAClB,cAAc,EACd,cAAc,EACd,cAAc,GACf,MAAM,8BAA8B,CAAC;AAEtC,YAAY,EACV,MAAM,EACN,WAAW,EACX,SAAS,EACT,YAAY,EACZ,QAAQ,EACR,QAAQ,EACR,QAAQ,GACT,MAAM,8BAA8B,CAAC"}
package/dist/index.js CHANGED
@@ -2,9 +2,14 @@
2
2
  export { analyzeProject } from './orchestrator/analyze-project/index.js';
3
3
  // Node consumers use this high-level capability to inspect one Configured Module.
4
4
  export { loadModuleSource, ModuleSourceNotFound, ModuleSourceReadError, } from './orchestrator/load-module-source/index.js';
5
+ // Node consumers use this high-level capability to read documentation at any scope.
6
+ export { loadDocumentation, DocumentationReadError, DocumentationScopeNotFound, } from './orchestrator/load-documentation/index.js';
7
+ // Node consumers use this high-level capability to read arbitrary source files by path.
8
+ export { loadSourceFiles, SourceFileReadError, } from './orchestrator/load-source-files/index.js';
5
9
  // RPC transports use this browser-safe runtime contract for Architecture Analysis.
6
10
  export { ArchitectureAnalysisSchema } from './architecture-analysis-schema/index.js';
7
11
  export { ModuleSourceSnapshotSchema } from './architecture-analysis-schema/index.js';
12
+ export { DocumentationScopeSchema, DocumentationSchema, } from './architecture-analysis-schema/index.js';
8
13
  export { InspectionTargetNotFound, ModuleInspectionCycle, inspectFile, inspectLayer, inspectModule, inspectProject, } from './orchestrator/inspect/index.js';
9
14
  // Analysis callers distinguish Config loading and validation failures.
10
15
  export { ConfigError } from './services/config/index.js';
@@ -15,8 +20,8 @@ export { getStoryTree, planStories, runStories, StoriesError, } from './orchestr
15
20
  // RPC transports use this browser-safe runtime contract for Story reports.
16
21
  export { StoryReportSchema, StoryTreeSchema } from './story/schema/index.js';
17
22
  // Node consumers use this high-level capability to report what a Base ref changed.
18
- export { loadChangeSet, loadFileDiff, } from './orchestrator/load-changes/index.js';
23
+ export { loadBranches, loadChangeSet, loadFileDiff, } from './orchestrator/load-changes/index.js';
19
24
  // Change set callers distinguish a missing repository from a failed git command.
20
25
  export { GitError } from './services/git/index.js';
21
26
  // RPC transports use this browser-safe runtime contract for Change sets.
22
- export { ChangedPathSchema, ChangeSetSchema, ChangeStatusSchema, DiffHunkSchema, DiffLineSchema, FileDiffSchema, } from './change-set-schema/index.js';
27
+ export { BranchSchema, ChangedPathSchema, ChangeSetSchema, ChangeStatusSchema, DiffHunkSchema, DiffLineSchema, FileDiffSchema, } from './change-set-schema/index.js';
@@ -5,10 +5,12 @@ export declare function analyzeProject(configPath: string): Effect.Effect<{
5
5
  readonly sourceRoots: readonly string[];
6
6
  readonly ignoredPaths: readonly string[];
7
7
  readonly storiesPath?: string | undefined;
8
+ readonly storyTimeout?: string | undefined;
8
9
  readonly layers: {
9
10
  readonly [x: string]: {
10
11
  readonly paths: readonly string[];
11
12
  readonly description?: string | undefined;
13
+ readonly docsPath?: string | undefined;
12
14
  readonly modules: {
13
15
  readonly [x: string]: {
14
16
  readonly shared: boolean;
@@ -19,6 +21,7 @@ export declare function analyzeProject(configPath: string): Effect.Effect<{
19
21
  readonly [x: string]: {
20
22
  readonly description?: string | undefined;
21
23
  readonly path: string;
24
+ readonly docsPath?: string | undefined;
22
25
  readonly modules: {
23
26
  readonly [x: string]: {
24
27
  readonly shared: boolean;
@@ -35,6 +38,7 @@ export declare function analyzeProject(configPath: string): Effect.Effect<{
35
38
  readonly layerGraphs: {
36
39
  readonly [x: string]: {
37
40
  readonly description?: string | undefined;
41
+ readonly docsPath?: string | undefined;
38
42
  readonly rules: {
39
43
  readonly [x: string]: readonly string[];
40
44
  };
@@ -1 +1 @@
1
- {"version":3,"file":"analyze-project.d.ts","sourceRoot":"","sources":["../../../src/orchestrator/analyze-project/analyze-project.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAQhC,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+HAShD"}
1
+ {"version":3,"file":"analyze-project.d.ts","sourceRoot":"","sources":["../../../src/orchestrator/analyze-project/analyze-project.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAQhC,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+HAShD"}
@@ -53,10 +53,12 @@ export declare function inspectProject(configPath: string): Effect.Effect<{
53
53
  readonly sourceRoots: readonly string[];
54
54
  readonly ignoredPaths: readonly string[];
55
55
  readonly storiesPath?: string | undefined;
56
+ readonly storyTimeout?: string | undefined;
56
57
  readonly layers: {
57
58
  readonly [x: string]: {
58
59
  readonly paths: readonly string[];
59
60
  readonly description?: string | undefined;
61
+ readonly docsPath?: string | undefined;
60
62
  readonly modules: {
61
63
  readonly [x: string]: {
62
64
  readonly shared: boolean;
@@ -67,6 +69,7 @@ export declare function inspectProject(configPath: string): Effect.Effect<{
67
69
  readonly [x: string]: {
68
70
  readonly description?: string | undefined;
69
71
  readonly path: string;
72
+ readonly docsPath?: string | undefined;
70
73
  readonly modules: {
71
74
  readonly [x: string]: {
72
75
  readonly shared: boolean;
@@ -83,6 +86,7 @@ export declare function inspectProject(configPath: string): Effect.Effect<{
83
86
  readonly layerGraphs: {
84
87
  readonly [x: string]: {
85
88
  readonly description?: string | undefined;
89
+ readonly docsPath?: string | undefined;
86
90
  readonly rules: {
87
91
  readonly [x: string]: readonly string[];
88
92
  };
@@ -169,6 +173,7 @@ export declare function inspectLayer(configPath: string, target: string): Effect
169
173
  definition: {
170
174
  readonly paths: readonly string[];
171
175
  readonly description?: string | undefined;
176
+ readonly docsPath?: string | undefined;
172
177
  readonly modules: {
173
178
  readonly [x: string]: {
174
179
  readonly shared: boolean;
@@ -179,6 +184,7 @@ export declare function inspectLayer(configPath: string, target: string): Effect
179
184
  readonly [x: string]: {
180
185
  readonly description?: string | undefined;
181
186
  readonly path: string;
187
+ readonly docsPath?: string | undefined;
182
188
  readonly modules: {
183
189
  readonly [x: string]: {
184
190
  readonly shared: boolean;