@harness-engineering/graph 0.2.1 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -1,8 +1,8 @@
1
1
  import { z } from 'zod';
2
2
 
3
- declare const NODE_TYPES: readonly ["repository", "module", "file", "class", "interface", "function", "method", "variable", "adr", "decision", "learning", "failure", "issue", "document", "skill", "conversation", "commit", "build", "test_result", "span", "metric", "log", "layer", "pattern", "constraint", "violation"];
3
+ declare const NODE_TYPES: readonly ["repository", "module", "file", "class", "interface", "function", "method", "variable", "adr", "decision", "learning", "failure", "issue", "document", "skill", "conversation", "commit", "build", "test_result", "span", "metric", "log", "layer", "pattern", "constraint", "violation", "design_token", "aesthetic_intent", "design_constraint"];
4
4
  type NodeType = (typeof NODE_TYPES)[number];
5
- declare const EDGE_TYPES: readonly ["contains", "imports", "calls", "implements", "inherits", "references", "applies_to", "caused_by", "resolved_by", "documents", "violates", "specifies", "decided", "co_changes_with", "triggered_by", "failed_in", "executed_by", "measured_by"];
5
+ declare const EDGE_TYPES: readonly ["contains", "imports", "calls", "implements", "inherits", "references", "applies_to", "caused_by", "resolved_by", "documents", "violates", "specifies", "decided", "co_changes_with", "triggered_by", "failed_in", "executed_by", "measured_by", "uses_token", "declares_intent", "violates_design", "platform_binding"];
6
6
  type EdgeType = (typeof EDGE_TYPES)[number];
7
7
  declare const OBSERVABILITY_TYPES: ReadonlySet<NodeType>;
8
8
  interface SourceLocation {
@@ -70,7 +70,7 @@ interface GraphMetadata {
70
70
  declare const CURRENT_SCHEMA_VERSION = 1;
71
71
  declare const GraphNodeSchema: z.ZodObject<{
72
72
  id: z.ZodString;
73
- type: z.ZodEnum<["repository", "module", "file", "class", "interface", "function", "method", "variable", "adr", "decision", "learning", "failure", "issue", "document", "skill", "conversation", "commit", "build", "test_result", "span", "metric", "log", "layer", "pattern", "constraint", "violation"]>;
73
+ type: z.ZodEnum<["repository", "module", "file", "class", "interface", "function", "method", "variable", "adr", "decision", "learning", "failure", "issue", "document", "skill", "conversation", "commit", "build", "test_result", "span", "metric", "log", "layer", "pattern", "constraint", "violation", "design_token", "aesthetic_intent", "design_constraint"]>;
74
74
  name: z.ZodString;
75
75
  path: z.ZodOptional<z.ZodString>;
76
76
  location: z.ZodOptional<z.ZodObject<{
@@ -99,7 +99,7 @@ declare const GraphNodeSchema: z.ZodObject<{
99
99
  lastModified: z.ZodOptional<z.ZodString>;
100
100
  }, "strip", z.ZodTypeAny, {
101
101
  id: string;
102
- type: "function" | "repository" | "module" | "file" | "class" | "interface" | "method" | "variable" | "adr" | "decision" | "learning" | "failure" | "issue" | "document" | "skill" | "conversation" | "commit" | "build" | "test_result" | "span" | "metric" | "log" | "layer" | "pattern" | "constraint" | "violation";
102
+ type: "function" | "repository" | "module" | "file" | "class" | "interface" | "method" | "variable" | "adr" | "decision" | "learning" | "failure" | "issue" | "document" | "skill" | "conversation" | "commit" | "build" | "test_result" | "span" | "metric" | "log" | "layer" | "pattern" | "constraint" | "violation" | "design_token" | "aesthetic_intent" | "design_constraint";
103
103
  name: string;
104
104
  metadata: Record<string, unknown>;
105
105
  path?: string | undefined;
@@ -116,7 +116,7 @@ declare const GraphNodeSchema: z.ZodObject<{
116
116
  lastModified?: string | undefined;
117
117
  }, {
118
118
  id: string;
119
- type: "function" | "repository" | "module" | "file" | "class" | "interface" | "method" | "variable" | "adr" | "decision" | "learning" | "failure" | "issue" | "document" | "skill" | "conversation" | "commit" | "build" | "test_result" | "span" | "metric" | "log" | "layer" | "pattern" | "constraint" | "violation";
119
+ type: "function" | "repository" | "module" | "file" | "class" | "interface" | "method" | "variable" | "adr" | "decision" | "learning" | "failure" | "issue" | "document" | "skill" | "conversation" | "commit" | "build" | "test_result" | "span" | "metric" | "log" | "layer" | "pattern" | "constraint" | "violation" | "design_token" | "aesthetic_intent" | "design_constraint";
120
120
  name: string;
121
121
  metadata: Record<string, unknown>;
122
122
  path?: string | undefined;
@@ -135,17 +135,17 @@ declare const GraphNodeSchema: z.ZodObject<{
135
135
  declare const GraphEdgeSchema: z.ZodObject<{
136
136
  from: z.ZodString;
137
137
  to: z.ZodString;
138
- type: z.ZodEnum<["contains", "imports", "calls", "implements", "inherits", "references", "applies_to", "caused_by", "resolved_by", "documents", "violates", "specifies", "decided", "co_changes_with", "triggered_by", "failed_in", "executed_by", "measured_by"]>;
138
+ type: z.ZodEnum<["contains", "imports", "calls", "implements", "inherits", "references", "applies_to", "caused_by", "resolved_by", "documents", "violates", "specifies", "decided", "co_changes_with", "triggered_by", "failed_in", "executed_by", "measured_by", "uses_token", "declares_intent", "violates_design", "platform_binding"]>;
139
139
  confidence: z.ZodOptional<z.ZodNumber>;
140
140
  metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
141
141
  }, "strip", z.ZodTypeAny, {
142
- type: "contains" | "imports" | "calls" | "implements" | "inherits" | "references" | "applies_to" | "caused_by" | "resolved_by" | "documents" | "violates" | "specifies" | "decided" | "co_changes_with" | "triggered_by" | "failed_in" | "executed_by" | "measured_by";
142
+ type: "contains" | "imports" | "calls" | "implements" | "inherits" | "references" | "applies_to" | "caused_by" | "resolved_by" | "documents" | "violates" | "specifies" | "decided" | "co_changes_with" | "triggered_by" | "failed_in" | "executed_by" | "measured_by" | "uses_token" | "declares_intent" | "violates_design" | "platform_binding";
143
143
  from: string;
144
144
  to: string;
145
145
  metadata?: Record<string, unknown> | undefined;
146
146
  confidence?: number | undefined;
147
147
  }, {
148
- type: "contains" | "imports" | "calls" | "implements" | "inherits" | "references" | "applies_to" | "caused_by" | "resolved_by" | "documents" | "violates" | "specifies" | "decided" | "co_changes_with" | "triggered_by" | "failed_in" | "executed_by" | "measured_by";
148
+ type: "contains" | "imports" | "calls" | "implements" | "inherits" | "references" | "applies_to" | "caused_by" | "resolved_by" | "documents" | "violates" | "specifies" | "decided" | "co_changes_with" | "triggered_by" | "failed_in" | "executed_by" | "measured_by" | "uses_token" | "declares_intent" | "violates_design" | "platform_binding";
149
149
  from: string;
150
150
  to: string;
151
151
  metadata?: Record<string, unknown> | undefined;
@@ -608,6 +608,32 @@ declare class GraphConstraintAdapter {
608
608
  private resolveLayer;
609
609
  }
610
610
 
611
+ declare class DesignIngestor {
612
+ private readonly store;
613
+ constructor(store: GraphStore);
614
+ ingestTokens(tokensPath: string): Promise<IngestResult>;
615
+ ingestDesignIntent(designPath: string): Promise<IngestResult>;
616
+ ingestAll(designDir: string): Promise<IngestResult>;
617
+ }
618
+
619
+ interface DesignViolation {
620
+ code: string;
621
+ file: string;
622
+ message: string;
623
+ severity: 'error' | 'warn' | 'info';
624
+ value?: string;
625
+ suggestion?: string;
626
+ }
627
+ type DesignStrictness = 'strict' | 'standard' | 'permissive';
628
+ declare class DesignConstraintAdapter {
629
+ private readonly store;
630
+ constructor(store: GraphStore);
631
+ checkForHardcodedColors(source: string, file: string, strictness?: DesignStrictness): DesignViolation[];
632
+ checkForHardcodedFonts(source: string, file: string, strictness?: DesignStrictness): DesignViolation[];
633
+ checkAll(source: string, file: string, strictness?: DesignStrictness): DesignViolation[];
634
+ private mapSeverity;
635
+ }
636
+
611
637
  interface GraphImpactData {
612
638
  readonly affectedTests: ReadonlyArray<{
613
639
  testFile: string;
@@ -636,4 +662,4 @@ declare class GraphFeedbackAdapter {
636
662
 
637
663
  declare const VERSION = "0.2.0";
638
664
 
639
- export { type AssembledContext, Assembler, CIConnector, CURRENT_SCHEMA_VERSION, CodeIngestor, ConfluenceConnector, type ConnectorConfig, ContextQL, type ContextQLParams, type ContextQLResult, EDGE_TYPES, type EdgeQuery, type EdgeType, FusionLayer, type FusionResult, GitIngestor, type GitRunner, type GraphBudget, GraphComplexityAdapter, type GraphComplexityHotspot, type GraphComplexityResult, type GraphConnector, GraphConstraintAdapter, GraphCouplingAdapter, type GraphCouplingFileData, type GraphCouplingResult, type GraphCoverageReport, type GraphDeadCodeData, type GraphDependencyData, type GraphDriftData, type GraphEdge, GraphEdgeSchema, GraphEntropyAdapter, GraphFeedbackAdapter, type GraphFilterResult, type GraphHarnessCheckData, type GraphImpactData, type GraphLayerViolation, type GraphMetadata, type GraphNode, GraphNodeSchema, type GraphSnapshotSummary, GraphStore, type HttpClient, type IngestResult, JiraConnector, KnowledgeIngestor, type LinkResult, NODE_TYPES, type NodeQuery, type NodeType, OBSERVABILITY_TYPES, type ProjectionSpec, SlackConnector, type SourceLocation, SyncManager, type SyncMetadata, TopologicalLinker, VERSION, type VectorSearchResult, VectorStore, linkToCode, loadGraph, project, saveGraph };
665
+ export { type AssembledContext, Assembler, CIConnector, CURRENT_SCHEMA_VERSION, CodeIngestor, ConfluenceConnector, type ConnectorConfig, ContextQL, type ContextQLParams, type ContextQLResult, DesignConstraintAdapter, DesignIngestor, type DesignStrictness, type DesignViolation, EDGE_TYPES, type EdgeQuery, type EdgeType, FusionLayer, type FusionResult, GitIngestor, type GitRunner, type GraphBudget, GraphComplexityAdapter, type GraphComplexityHotspot, type GraphComplexityResult, type GraphConnector, GraphConstraintAdapter, GraphCouplingAdapter, type GraphCouplingFileData, type GraphCouplingResult, type GraphCoverageReport, type GraphDeadCodeData, type GraphDependencyData, type GraphDriftData, type GraphEdge, GraphEdgeSchema, GraphEntropyAdapter, GraphFeedbackAdapter, type GraphFilterResult, type GraphHarnessCheckData, type GraphImpactData, type GraphLayerViolation, type GraphMetadata, type GraphNode, GraphNodeSchema, type GraphSnapshotSummary, GraphStore, type HttpClient, type IngestResult, JiraConnector, KnowledgeIngestor, type LinkResult, NODE_TYPES, type NodeQuery, type NodeType, OBSERVABILITY_TYPES, type ProjectionSpec, SlackConnector, type SourceLocation, SyncManager, type SyncMetadata, TopologicalLinker, VERSION, type VectorSearchResult, VectorStore, linkToCode, loadGraph, project, saveGraph };
package/dist/index.d.ts CHANGED
@@ -1,8 +1,8 @@
1
1
  import { z } from 'zod';
2
2
 
3
- declare const NODE_TYPES: readonly ["repository", "module", "file", "class", "interface", "function", "method", "variable", "adr", "decision", "learning", "failure", "issue", "document", "skill", "conversation", "commit", "build", "test_result", "span", "metric", "log", "layer", "pattern", "constraint", "violation"];
3
+ declare const NODE_TYPES: readonly ["repository", "module", "file", "class", "interface", "function", "method", "variable", "adr", "decision", "learning", "failure", "issue", "document", "skill", "conversation", "commit", "build", "test_result", "span", "metric", "log", "layer", "pattern", "constraint", "violation", "design_token", "aesthetic_intent", "design_constraint"];
4
4
  type NodeType = (typeof NODE_TYPES)[number];
5
- declare const EDGE_TYPES: readonly ["contains", "imports", "calls", "implements", "inherits", "references", "applies_to", "caused_by", "resolved_by", "documents", "violates", "specifies", "decided", "co_changes_with", "triggered_by", "failed_in", "executed_by", "measured_by"];
5
+ declare const EDGE_TYPES: readonly ["contains", "imports", "calls", "implements", "inherits", "references", "applies_to", "caused_by", "resolved_by", "documents", "violates", "specifies", "decided", "co_changes_with", "triggered_by", "failed_in", "executed_by", "measured_by", "uses_token", "declares_intent", "violates_design", "platform_binding"];
6
6
  type EdgeType = (typeof EDGE_TYPES)[number];
7
7
  declare const OBSERVABILITY_TYPES: ReadonlySet<NodeType>;
8
8
  interface SourceLocation {
@@ -70,7 +70,7 @@ interface GraphMetadata {
70
70
  declare const CURRENT_SCHEMA_VERSION = 1;
71
71
  declare const GraphNodeSchema: z.ZodObject<{
72
72
  id: z.ZodString;
73
- type: z.ZodEnum<["repository", "module", "file", "class", "interface", "function", "method", "variable", "adr", "decision", "learning", "failure", "issue", "document", "skill", "conversation", "commit", "build", "test_result", "span", "metric", "log", "layer", "pattern", "constraint", "violation"]>;
73
+ type: z.ZodEnum<["repository", "module", "file", "class", "interface", "function", "method", "variable", "adr", "decision", "learning", "failure", "issue", "document", "skill", "conversation", "commit", "build", "test_result", "span", "metric", "log", "layer", "pattern", "constraint", "violation", "design_token", "aesthetic_intent", "design_constraint"]>;
74
74
  name: z.ZodString;
75
75
  path: z.ZodOptional<z.ZodString>;
76
76
  location: z.ZodOptional<z.ZodObject<{
@@ -99,7 +99,7 @@ declare const GraphNodeSchema: z.ZodObject<{
99
99
  lastModified: z.ZodOptional<z.ZodString>;
100
100
  }, "strip", z.ZodTypeAny, {
101
101
  id: string;
102
- type: "function" | "repository" | "module" | "file" | "class" | "interface" | "method" | "variable" | "adr" | "decision" | "learning" | "failure" | "issue" | "document" | "skill" | "conversation" | "commit" | "build" | "test_result" | "span" | "metric" | "log" | "layer" | "pattern" | "constraint" | "violation";
102
+ type: "function" | "repository" | "module" | "file" | "class" | "interface" | "method" | "variable" | "adr" | "decision" | "learning" | "failure" | "issue" | "document" | "skill" | "conversation" | "commit" | "build" | "test_result" | "span" | "metric" | "log" | "layer" | "pattern" | "constraint" | "violation" | "design_token" | "aesthetic_intent" | "design_constraint";
103
103
  name: string;
104
104
  metadata: Record<string, unknown>;
105
105
  path?: string | undefined;
@@ -116,7 +116,7 @@ declare const GraphNodeSchema: z.ZodObject<{
116
116
  lastModified?: string | undefined;
117
117
  }, {
118
118
  id: string;
119
- type: "function" | "repository" | "module" | "file" | "class" | "interface" | "method" | "variable" | "adr" | "decision" | "learning" | "failure" | "issue" | "document" | "skill" | "conversation" | "commit" | "build" | "test_result" | "span" | "metric" | "log" | "layer" | "pattern" | "constraint" | "violation";
119
+ type: "function" | "repository" | "module" | "file" | "class" | "interface" | "method" | "variable" | "adr" | "decision" | "learning" | "failure" | "issue" | "document" | "skill" | "conversation" | "commit" | "build" | "test_result" | "span" | "metric" | "log" | "layer" | "pattern" | "constraint" | "violation" | "design_token" | "aesthetic_intent" | "design_constraint";
120
120
  name: string;
121
121
  metadata: Record<string, unknown>;
122
122
  path?: string | undefined;
@@ -135,17 +135,17 @@ declare const GraphNodeSchema: z.ZodObject<{
135
135
  declare const GraphEdgeSchema: z.ZodObject<{
136
136
  from: z.ZodString;
137
137
  to: z.ZodString;
138
- type: z.ZodEnum<["contains", "imports", "calls", "implements", "inherits", "references", "applies_to", "caused_by", "resolved_by", "documents", "violates", "specifies", "decided", "co_changes_with", "triggered_by", "failed_in", "executed_by", "measured_by"]>;
138
+ type: z.ZodEnum<["contains", "imports", "calls", "implements", "inherits", "references", "applies_to", "caused_by", "resolved_by", "documents", "violates", "specifies", "decided", "co_changes_with", "triggered_by", "failed_in", "executed_by", "measured_by", "uses_token", "declares_intent", "violates_design", "platform_binding"]>;
139
139
  confidence: z.ZodOptional<z.ZodNumber>;
140
140
  metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
141
141
  }, "strip", z.ZodTypeAny, {
142
- type: "contains" | "imports" | "calls" | "implements" | "inherits" | "references" | "applies_to" | "caused_by" | "resolved_by" | "documents" | "violates" | "specifies" | "decided" | "co_changes_with" | "triggered_by" | "failed_in" | "executed_by" | "measured_by";
142
+ type: "contains" | "imports" | "calls" | "implements" | "inherits" | "references" | "applies_to" | "caused_by" | "resolved_by" | "documents" | "violates" | "specifies" | "decided" | "co_changes_with" | "triggered_by" | "failed_in" | "executed_by" | "measured_by" | "uses_token" | "declares_intent" | "violates_design" | "platform_binding";
143
143
  from: string;
144
144
  to: string;
145
145
  metadata?: Record<string, unknown> | undefined;
146
146
  confidence?: number | undefined;
147
147
  }, {
148
- type: "contains" | "imports" | "calls" | "implements" | "inherits" | "references" | "applies_to" | "caused_by" | "resolved_by" | "documents" | "violates" | "specifies" | "decided" | "co_changes_with" | "triggered_by" | "failed_in" | "executed_by" | "measured_by";
148
+ type: "contains" | "imports" | "calls" | "implements" | "inherits" | "references" | "applies_to" | "caused_by" | "resolved_by" | "documents" | "violates" | "specifies" | "decided" | "co_changes_with" | "triggered_by" | "failed_in" | "executed_by" | "measured_by" | "uses_token" | "declares_intent" | "violates_design" | "platform_binding";
149
149
  from: string;
150
150
  to: string;
151
151
  metadata?: Record<string, unknown> | undefined;
@@ -608,6 +608,32 @@ declare class GraphConstraintAdapter {
608
608
  private resolveLayer;
609
609
  }
610
610
 
611
+ declare class DesignIngestor {
612
+ private readonly store;
613
+ constructor(store: GraphStore);
614
+ ingestTokens(tokensPath: string): Promise<IngestResult>;
615
+ ingestDesignIntent(designPath: string): Promise<IngestResult>;
616
+ ingestAll(designDir: string): Promise<IngestResult>;
617
+ }
618
+
619
+ interface DesignViolation {
620
+ code: string;
621
+ file: string;
622
+ message: string;
623
+ severity: 'error' | 'warn' | 'info';
624
+ value?: string;
625
+ suggestion?: string;
626
+ }
627
+ type DesignStrictness = 'strict' | 'standard' | 'permissive';
628
+ declare class DesignConstraintAdapter {
629
+ private readonly store;
630
+ constructor(store: GraphStore);
631
+ checkForHardcodedColors(source: string, file: string, strictness?: DesignStrictness): DesignViolation[];
632
+ checkForHardcodedFonts(source: string, file: string, strictness?: DesignStrictness): DesignViolation[];
633
+ checkAll(source: string, file: string, strictness?: DesignStrictness): DesignViolation[];
634
+ private mapSeverity;
635
+ }
636
+
611
637
  interface GraphImpactData {
612
638
  readonly affectedTests: ReadonlyArray<{
613
639
  testFile: string;
@@ -636,4 +662,4 @@ declare class GraphFeedbackAdapter {
636
662
 
637
663
  declare const VERSION = "0.2.0";
638
664
 
639
- export { type AssembledContext, Assembler, CIConnector, CURRENT_SCHEMA_VERSION, CodeIngestor, ConfluenceConnector, type ConnectorConfig, ContextQL, type ContextQLParams, type ContextQLResult, EDGE_TYPES, type EdgeQuery, type EdgeType, FusionLayer, type FusionResult, GitIngestor, type GitRunner, type GraphBudget, GraphComplexityAdapter, type GraphComplexityHotspot, type GraphComplexityResult, type GraphConnector, GraphConstraintAdapter, GraphCouplingAdapter, type GraphCouplingFileData, type GraphCouplingResult, type GraphCoverageReport, type GraphDeadCodeData, type GraphDependencyData, type GraphDriftData, type GraphEdge, GraphEdgeSchema, GraphEntropyAdapter, GraphFeedbackAdapter, type GraphFilterResult, type GraphHarnessCheckData, type GraphImpactData, type GraphLayerViolation, type GraphMetadata, type GraphNode, GraphNodeSchema, type GraphSnapshotSummary, GraphStore, type HttpClient, type IngestResult, JiraConnector, KnowledgeIngestor, type LinkResult, NODE_TYPES, type NodeQuery, type NodeType, OBSERVABILITY_TYPES, type ProjectionSpec, SlackConnector, type SourceLocation, SyncManager, type SyncMetadata, TopologicalLinker, VERSION, type VectorSearchResult, VectorStore, linkToCode, loadGraph, project, saveGraph };
665
+ export { type AssembledContext, Assembler, CIConnector, CURRENT_SCHEMA_VERSION, CodeIngestor, ConfluenceConnector, type ConnectorConfig, ContextQL, type ContextQLParams, type ContextQLResult, DesignConstraintAdapter, DesignIngestor, type DesignStrictness, type DesignViolation, EDGE_TYPES, type EdgeQuery, type EdgeType, FusionLayer, type FusionResult, GitIngestor, type GitRunner, type GraphBudget, GraphComplexityAdapter, type GraphComplexityHotspot, type GraphComplexityResult, type GraphConnector, GraphConstraintAdapter, GraphCouplingAdapter, type GraphCouplingFileData, type GraphCouplingResult, type GraphCoverageReport, type GraphDeadCodeData, type GraphDependencyData, type GraphDriftData, type GraphEdge, GraphEdgeSchema, GraphEntropyAdapter, GraphFeedbackAdapter, type GraphFilterResult, type GraphHarnessCheckData, type GraphImpactData, type GraphLayerViolation, type GraphMetadata, type GraphNode, GraphNodeSchema, type GraphSnapshotSummary, GraphStore, type HttpClient, type IngestResult, JiraConnector, KnowledgeIngestor, type LinkResult, NODE_TYPES, type NodeQuery, type NodeType, OBSERVABILITY_TYPES, type ProjectionSpec, SlackConnector, type SourceLocation, SyncManager, type SyncMetadata, TopologicalLinker, VERSION, type VectorSearchResult, VectorStore, linkToCode, loadGraph, project, saveGraph };
package/dist/index.js CHANGED
@@ -36,6 +36,8 @@ __export(index_exports, {
36
36
  CodeIngestor: () => CodeIngestor,
37
37
  ConfluenceConnector: () => ConfluenceConnector,
38
38
  ContextQL: () => ContextQL,
39
+ DesignConstraintAdapter: () => DesignConstraintAdapter,
40
+ DesignIngestor: () => DesignIngestor,
39
41
  EDGE_TYPES: () => EDGE_TYPES,
40
42
  FusionLayer: () => FusionLayer,
41
43
  GitIngestor: () => GitIngestor,
@@ -96,7 +98,11 @@ var NODE_TYPES = [
96
98
  "layer",
97
99
  "pattern",
98
100
  "constraint",
99
- "violation"
101
+ "violation",
102
+ // Design
103
+ "design_token",
104
+ "aesthetic_intent",
105
+ "design_constraint"
100
106
  ];
101
107
  var EDGE_TYPES = [
102
108
  // Code relationships
@@ -120,7 +126,12 @@ var EDGE_TYPES = [
120
126
  "failed_in",
121
127
  // Execution relationships (future)
122
128
  "executed_by",
123
- "measured_by"
129
+ "measured_by",
130
+ // Design relationships
131
+ "uses_token",
132
+ "declares_intent",
133
+ "violates_design",
134
+ "platform_binding"
124
135
  ];
125
136
  var OBSERVABILITY_TYPES = /* @__PURE__ */ new Set(["span", "metric", "log"]);
126
137
  var CURRENT_SCHEMA_VERSION = 1;
@@ -189,6 +200,14 @@ async function loadGraph(dirPath) {
189
200
  }
190
201
 
191
202
  // src/store/GraphStore.ts
203
+ var POISONED_KEYS = /* @__PURE__ */ new Set(["__proto__", "constructor", "prototype"]);
204
+ function safeMerge(target, source) {
205
+ for (const key of Object.keys(source)) {
206
+ if (!POISONED_KEYS.has(key)) {
207
+ target[key] = source[key];
208
+ }
209
+ }
210
+ }
192
211
  var GraphStore = class {
193
212
  db;
194
213
  nodes;
@@ -207,7 +226,7 @@ var GraphStore = class {
207
226
  addNode(node) {
208
227
  const existing = this.nodes.by("id", node.id);
209
228
  if (existing) {
210
- Object.assign(existing, node);
229
+ safeMerge(existing, node);
211
230
  this.nodes.update(existing);
212
231
  } else {
213
232
  this.nodes.insert({ ...node });
@@ -251,7 +270,7 @@ var GraphStore = class {
251
270
  });
252
271
  if (existing) {
253
272
  if (edge.metadata) {
254
- Object.assign(existing, edge);
273
+ safeMerge(existing, edge);
255
274
  this.edges.update(existing);
256
275
  }
257
276
  return;
@@ -1149,8 +1168,9 @@ var TopologicalLinker = class {
1149
1168
  // src/ingest/KnowledgeIngestor.ts
1150
1169
  var fs2 = __toESM(require("fs/promises"));
1151
1170
  var path3 = __toESM(require("path"));
1171
+
1172
+ // src/ingest/ingestUtils.ts
1152
1173
  var crypto = __toESM(require("crypto"));
1153
- var CODE_NODE_TYPES = ["file", "function", "class", "method", "interface", "variable"];
1154
1174
  function hash(text) {
1155
1175
  return crypto.createHash("md5").update(text).digest("hex").slice(0, 8);
1156
1176
  }
@@ -1167,6 +1187,9 @@ function mergeResults(...results) {
1167
1187
  function emptyResult(durationMs = 0) {
1168
1188
  return { nodesAdded: 0, nodesUpdated: 0, edgesAdded: 0, edgesUpdated: 0, errors: [], durationMs };
1169
1189
  }
1190
+
1191
+ // src/ingest/KnowledgeIngestor.ts
1192
+ var CODE_NODE_TYPES = ["file", "function", "class", "method", "interface", "variable"];
1170
1193
  var KnowledgeIngestor = class {
1171
1194
  constructor(store) {
1172
1195
  this.store = store;
@@ -1358,6 +1381,22 @@ var KnowledgeIngestor = class {
1358
1381
 
1359
1382
  // src/ingest/connectors/ConnectorUtils.ts
1360
1383
  var CODE_NODE_TYPES2 = ["file", "function", "class", "method", "interface", "variable"];
1384
+ function sanitizeExternalText(text, maxLength = 2e3) {
1385
+ let sanitized = text.replace(
1386
+ /<\/?(?:system|instruction|prompt|role|context|tool_call|function_call|assistant|human|user)[^>]*>/gi,
1387
+ ""
1388
+ ).replace(/^#{1,3}\s*(?:system|instruction|prompt)\s*[::]\s*/gim, "").replace(
1389
+ /(?:ignore|disregard|forget)\s+(?:all\s+)?(?:previous|prior|above)\s+(?:instructions?|prompts?|context)/gi,
1390
+ "[filtered]"
1391
+ ).replace(
1392
+ /you\s+are\s+now\s+(?:a\s+)?(?:helpful\s+)?(?:an?\s+)?(?:assistant|system|ai|bot|agent|tool)\b/gi,
1393
+ "[filtered]"
1394
+ );
1395
+ if (sanitized.length > maxLength) {
1396
+ sanitized = sanitized.slice(0, maxLength) + "\u2026";
1397
+ }
1398
+ return sanitized;
1399
+ }
1361
1400
  function linkToCode(store, content, sourceNodeId, edgeType, options) {
1362
1401
  let edgesCreated = 0;
1363
1402
  for (const type of CODE_NODE_TYPES2) {
@@ -1525,7 +1564,7 @@ var JiraConnector = class {
1525
1564
  store.addNode({
1526
1565
  id: nodeId,
1527
1566
  type: "issue",
1528
- name: issue.fields.summary,
1567
+ name: sanitizeExternalText(issue.fields.summary, 500),
1529
1568
  metadata: {
1530
1569
  key: issue.key,
1531
1570
  status: issue.fields.status?.name,
@@ -1535,7 +1574,9 @@ var JiraConnector = class {
1535
1574
  }
1536
1575
  });
1537
1576
  nodesAdded++;
1538
- const searchText = [issue.fields.summary, issue.fields.description ?? ""].join(" ");
1577
+ const searchText = sanitizeExternalText(
1578
+ [issue.fields.summary, issue.fields.description ?? ""].join(" ")
1579
+ );
1539
1580
  edgesAdded += linkToCode(store, searchText, nodeId, "applies_to");
1540
1581
  }
1541
1582
  startAt += maxResults;
@@ -1611,7 +1652,8 @@ var SlackConnector = class {
1611
1652
  }
1612
1653
  for (const message of data.messages) {
1613
1654
  const nodeId = `conversation:slack:${channel}:${message.ts}`;
1614
- const snippet = message.text.length > 100 ? message.text.slice(0, 100) : message.text;
1655
+ const sanitizedText = sanitizeExternalText(message.text);
1656
+ const snippet = sanitizedText.length > 100 ? sanitizedText.slice(0, 100) : sanitizedText;
1615
1657
  store.addNode({
1616
1658
  id: nodeId,
1617
1659
  type: "conversation",
@@ -1623,7 +1665,9 @@ var SlackConnector = class {
1623
1665
  }
1624
1666
  });
1625
1667
  nodesAdded++;
1626
- edgesAdded += linkToCode(store, message.text, nodeId, "references", { checkPaths: true });
1668
+ edgesAdded += linkToCode(store, sanitizedText, nodeId, "references", {
1669
+ checkPaths: true
1670
+ });
1627
1671
  }
1628
1672
  } catch (err) {
1629
1673
  errors.push(
@@ -1686,7 +1730,7 @@ var ConfluenceConnector = class {
1686
1730
  store.addNode({
1687
1731
  id: nodeId,
1688
1732
  type: "document",
1689
- name: page.title,
1733
+ name: sanitizeExternalText(page.title, 500),
1690
1734
  metadata: {
1691
1735
  source: "confluence",
1692
1736
  spaceKey,
@@ -1696,7 +1740,7 @@ var ConfluenceConnector = class {
1696
1740
  }
1697
1741
  });
1698
1742
  nodesAdded++;
1699
- const text = `${page.title} ${page.body?.storage?.value ?? ""}`;
1743
+ const text = sanitizeExternalText(`${page.title} ${page.body?.storage?.value ?? ""}`);
1700
1744
  edgesAdded += linkToCode(store, text, nodeId, "documents");
1701
1745
  }
1702
1746
  nextUrl = data._links?.next ? `${baseUrl}${data._links.next}` : null;
@@ -1761,10 +1805,11 @@ var CIConnector = class {
1761
1805
  const data = await response.json();
1762
1806
  for (const run of data.workflow_runs) {
1763
1807
  const buildId = `build:${run.id}`;
1808
+ const safeName = sanitizeExternalText(run.name, 200);
1764
1809
  store.addNode({
1765
1810
  id: buildId,
1766
1811
  type: "build",
1767
- name: `${run.name} #${run.id}`,
1812
+ name: `${safeName} #${run.id}`,
1768
1813
  metadata: {
1769
1814
  source: "github-actions",
1770
1815
  status: run.status,
@@ -1786,7 +1831,7 @@ var CIConnector = class {
1786
1831
  store.addNode({
1787
1832
  id: testResultId,
1788
1833
  type: "test_result",
1789
- name: `Failed: ${run.name} #${run.id}`,
1834
+ name: `Failed: ${safeName} #${run.id}`,
1790
1835
  metadata: {
1791
1836
  source: "github-actions",
1792
1837
  buildId: String(run.id),
@@ -2534,6 +2579,250 @@ var GraphConstraintAdapter = class {
2534
2579
  }
2535
2580
  };
2536
2581
 
2582
+ // src/ingest/DesignIngestor.ts
2583
+ var fs4 = __toESM(require("fs/promises"));
2584
+ var path5 = __toESM(require("path"));
2585
+ function isDTCGToken(obj) {
2586
+ return typeof obj === "object" && obj !== null && "$value" in obj && "$type" in obj;
2587
+ }
2588
+ async function readFileOrNull(filePath) {
2589
+ try {
2590
+ return await fs4.readFile(filePath, "utf-8");
2591
+ } catch {
2592
+ return null;
2593
+ }
2594
+ }
2595
+ function parseJsonOrError(content, filePath) {
2596
+ try {
2597
+ return { data: JSON.parse(content) };
2598
+ } catch (err) {
2599
+ return {
2600
+ error: `Failed to parse ${filePath}: ${err instanceof Error ? err.message : String(err)}`
2601
+ };
2602
+ }
2603
+ }
2604
+ function walkDTCGTokens(store, obj, groupPath, topGroup, tokensPath) {
2605
+ let count = 0;
2606
+ for (const [key, value] of Object.entries(obj)) {
2607
+ if (key.startsWith("$")) continue;
2608
+ if (isDTCGToken(value)) {
2609
+ const tokenPath = [...groupPath, key].join(".");
2610
+ store.addNode({
2611
+ id: `design_token:${tokenPath}`,
2612
+ type: "design_token",
2613
+ name: tokenPath,
2614
+ path: tokensPath,
2615
+ metadata: {
2616
+ tokenType: value.$type,
2617
+ value: value.$value,
2618
+ group: topGroup || groupPath[0] || key,
2619
+ ...value.$description ? { description: value.$description } : {}
2620
+ }
2621
+ });
2622
+ count++;
2623
+ } else if (typeof value === "object" && value !== null) {
2624
+ count += walkDTCGTokens(
2625
+ store,
2626
+ value,
2627
+ [...groupPath, key],
2628
+ topGroup || key,
2629
+ tokensPath
2630
+ );
2631
+ }
2632
+ }
2633
+ return count;
2634
+ }
2635
+ function parseAestheticDirection(content) {
2636
+ const extract = (pattern) => {
2637
+ const m = content.match(pattern);
2638
+ return m ? m[1].trim() : void 0;
2639
+ };
2640
+ const result = {};
2641
+ const style = extract(/\*\*Style:\*\*\s*(.+)/);
2642
+ if (style !== void 0) result.style = style;
2643
+ const tone = extract(/\*\*Tone:\*\*\s*(.+)/);
2644
+ if (tone !== void 0) result.tone = tone;
2645
+ const differentiator = extract(/\*\*Differentiator:\*\*\s*(.+)/);
2646
+ if (differentiator !== void 0) result.differentiator = differentiator;
2647
+ const strictness = extract(/^level:\s*(strict|standard|permissive)\s*$/m);
2648
+ if (strictness !== void 0) result.strictness = strictness;
2649
+ return result;
2650
+ }
2651
+ function parseAntiPatterns(content) {
2652
+ const lines = content.split("\n");
2653
+ const patterns = [];
2654
+ let inSection = false;
2655
+ for (const line of lines) {
2656
+ if (/^##\s+Anti-Patterns/i.test(line)) {
2657
+ inSection = true;
2658
+ continue;
2659
+ }
2660
+ if (inSection && /^##\s+/.test(line)) {
2661
+ break;
2662
+ }
2663
+ if (inSection) {
2664
+ const bulletMatch = line.match(/^-\s+(.+)/);
2665
+ if (bulletMatch) {
2666
+ patterns.push(bulletMatch[1].trim());
2667
+ }
2668
+ }
2669
+ }
2670
+ return patterns;
2671
+ }
2672
+ var DesignIngestor = class {
2673
+ constructor(store) {
2674
+ this.store = store;
2675
+ }
2676
+ async ingestTokens(tokensPath) {
2677
+ const start = Date.now();
2678
+ const content = await readFileOrNull(tokensPath);
2679
+ if (content === null) return emptyResult(Date.now() - start);
2680
+ const parsed = parseJsonOrError(content, tokensPath);
2681
+ if ("error" in parsed) {
2682
+ return { ...emptyResult(Date.now() - start), errors: [parsed.error] };
2683
+ }
2684
+ const nodesAdded = walkDTCGTokens(this.store, parsed.data, [], "", tokensPath);
2685
+ return {
2686
+ nodesAdded,
2687
+ nodesUpdated: 0,
2688
+ edgesAdded: 0,
2689
+ edgesUpdated: 0,
2690
+ errors: [],
2691
+ durationMs: Date.now() - start
2692
+ };
2693
+ }
2694
+ async ingestDesignIntent(designPath) {
2695
+ const start = Date.now();
2696
+ const content = await readFileOrNull(designPath);
2697
+ if (content === null) return emptyResult(Date.now() - start);
2698
+ let nodesAdded = 0;
2699
+ const direction = parseAestheticDirection(content);
2700
+ const metadata = {};
2701
+ if (direction.style) metadata.style = direction.style;
2702
+ if (direction.tone) metadata.tone = direction.tone;
2703
+ if (direction.differentiator) metadata.differentiator = direction.differentiator;
2704
+ if (direction.strictness) metadata.strictness = direction.strictness;
2705
+ this.store.addNode({
2706
+ id: "aesthetic_intent:project",
2707
+ type: "aesthetic_intent",
2708
+ name: "project",
2709
+ path: designPath,
2710
+ metadata
2711
+ });
2712
+ nodesAdded++;
2713
+ for (const text of parseAntiPatterns(content)) {
2714
+ this.store.addNode({
2715
+ id: `design_constraint:${hash(text)}`,
2716
+ type: "design_constraint",
2717
+ name: text,
2718
+ path: designPath,
2719
+ metadata: { rule: text, severity: "warn", scope: "project" }
2720
+ });
2721
+ nodesAdded++;
2722
+ }
2723
+ return {
2724
+ nodesAdded,
2725
+ nodesUpdated: 0,
2726
+ edgesAdded: 0,
2727
+ edgesUpdated: 0,
2728
+ errors: [],
2729
+ durationMs: Date.now() - start
2730
+ };
2731
+ }
2732
+ async ingestAll(designDir) {
2733
+ const start = Date.now();
2734
+ const [tokensResult, intentResult] = await Promise.all([
2735
+ this.ingestTokens(path5.join(designDir, "tokens.json")),
2736
+ this.ingestDesignIntent(path5.join(designDir, "DESIGN.md"))
2737
+ ]);
2738
+ const merged = mergeResults(tokensResult, intentResult);
2739
+ return { ...merged, durationMs: Date.now() - start };
2740
+ }
2741
+ };
2742
+
2743
+ // src/constraints/DesignConstraintAdapter.ts
2744
+ var DesignConstraintAdapter = class {
2745
+ constructor(store) {
2746
+ this.store = store;
2747
+ }
2748
+ checkForHardcodedColors(source, file, strictness) {
2749
+ const severity = this.mapSeverity(strictness);
2750
+ const tokenNodes = this.store.findNodes({ type: "design_token" });
2751
+ const colorValues = /* @__PURE__ */ new Set();
2752
+ for (const node of tokenNodes) {
2753
+ if (node.metadata.tokenType === "color" && typeof node.metadata.value === "string") {
2754
+ colorValues.add(node.metadata.value.toLowerCase());
2755
+ }
2756
+ }
2757
+ const hexPattern = /#[0-9a-fA-F]{3,8}\b/g;
2758
+ const violations = [];
2759
+ let match;
2760
+ while ((match = hexPattern.exec(source)) !== null) {
2761
+ const hexValue = match[0];
2762
+ if (!colorValues.has(hexValue.toLowerCase())) {
2763
+ violations.push({
2764
+ code: "DESIGN-001",
2765
+ file,
2766
+ message: `Hardcoded color ${hexValue} is not in the design token set`,
2767
+ severity,
2768
+ value: hexValue
2769
+ });
2770
+ }
2771
+ }
2772
+ return violations;
2773
+ }
2774
+ checkForHardcodedFonts(source, file, strictness) {
2775
+ const severity = this.mapSeverity(strictness);
2776
+ const tokenNodes = this.store.findNodes({ type: "design_token" });
2777
+ const fontFamilies = /* @__PURE__ */ new Set();
2778
+ for (const node of tokenNodes) {
2779
+ if (node.metadata.tokenType === "typography") {
2780
+ const value = node.metadata.value;
2781
+ if (typeof value === "object" && value !== null && "fontFamily" in value) {
2782
+ fontFamilies.add(value.fontFamily.toLowerCase());
2783
+ }
2784
+ }
2785
+ }
2786
+ const fontPatterns = [/fontFamily:\s*['"]([^'"]+)['"]/g, /font-family:\s*['"]([^'"]+)['"]/g];
2787
+ const violations = [];
2788
+ const seen = /* @__PURE__ */ new Set();
2789
+ for (const pattern of fontPatterns) {
2790
+ let match;
2791
+ while ((match = pattern.exec(source)) !== null) {
2792
+ const fontName = match[1];
2793
+ if (seen.has(fontName.toLowerCase())) continue;
2794
+ seen.add(fontName.toLowerCase());
2795
+ if (!fontFamilies.has(fontName.toLowerCase())) {
2796
+ violations.push({
2797
+ code: "DESIGN-002",
2798
+ file,
2799
+ message: `Hardcoded font family "${fontName}" is not in the design token set`,
2800
+ severity,
2801
+ value: fontName
2802
+ });
2803
+ }
2804
+ }
2805
+ }
2806
+ return violations;
2807
+ }
2808
+ checkAll(source, file, strictness) {
2809
+ return [
2810
+ ...this.checkForHardcodedColors(source, file, strictness),
2811
+ ...this.checkForHardcodedFonts(source, file, strictness)
2812
+ ];
2813
+ }
2814
+ mapSeverity(strictness = "standard") {
2815
+ switch (strictness) {
2816
+ case "permissive":
2817
+ return "info";
2818
+ case "standard":
2819
+ return "warn";
2820
+ case "strict":
2821
+ return "error";
2822
+ }
2823
+ }
2824
+ };
2825
+
2537
2826
  // src/feedback/GraphFeedbackAdapter.ts
2538
2827
  var GraphFeedbackAdapter = class {
2539
2828
  constructor(store) {
@@ -2615,6 +2904,8 @@ var VERSION = "0.2.0";
2615
2904
  CodeIngestor,
2616
2905
  ConfluenceConnector,
2617
2906
  ContextQL,
2907
+ DesignConstraintAdapter,
2908
+ DesignIngestor,
2618
2909
  EDGE_TYPES,
2619
2910
  FusionLayer,
2620
2911
  GitIngestor,
package/dist/index.mjs CHANGED
@@ -31,7 +31,11 @@ var NODE_TYPES = [
31
31
  "layer",
32
32
  "pattern",
33
33
  "constraint",
34
- "violation"
34
+ "violation",
35
+ // Design
36
+ "design_token",
37
+ "aesthetic_intent",
38
+ "design_constraint"
35
39
  ];
36
40
  var EDGE_TYPES = [
37
41
  // Code relationships
@@ -55,7 +59,12 @@ var EDGE_TYPES = [
55
59
  "failed_in",
56
60
  // Execution relationships (future)
57
61
  "executed_by",
58
- "measured_by"
62
+ "measured_by",
63
+ // Design relationships
64
+ "uses_token",
65
+ "declares_intent",
66
+ "violates_design",
67
+ "platform_binding"
59
68
  ];
60
69
  var OBSERVABILITY_TYPES = /* @__PURE__ */ new Set(["span", "metric", "log"]);
61
70
  var CURRENT_SCHEMA_VERSION = 1;
@@ -124,6 +133,14 @@ async function loadGraph(dirPath) {
124
133
  }
125
134
 
126
135
  // src/store/GraphStore.ts
136
+ var POISONED_KEYS = /* @__PURE__ */ new Set(["__proto__", "constructor", "prototype"]);
137
+ function safeMerge(target, source) {
138
+ for (const key of Object.keys(source)) {
139
+ if (!POISONED_KEYS.has(key)) {
140
+ target[key] = source[key];
141
+ }
142
+ }
143
+ }
127
144
  var GraphStore = class {
128
145
  db;
129
146
  nodes;
@@ -142,7 +159,7 @@ var GraphStore = class {
142
159
  addNode(node) {
143
160
  const existing = this.nodes.by("id", node.id);
144
161
  if (existing) {
145
- Object.assign(existing, node);
162
+ safeMerge(existing, node);
146
163
  this.nodes.update(existing);
147
164
  } else {
148
165
  this.nodes.insert({ ...node });
@@ -186,7 +203,7 @@ var GraphStore = class {
186
203
  });
187
204
  if (existing) {
188
205
  if (edge.metadata) {
189
- Object.assign(existing, edge);
206
+ safeMerge(existing, edge);
190
207
  this.edges.update(existing);
191
208
  }
192
209
  return;
@@ -1084,8 +1101,9 @@ var TopologicalLinker = class {
1084
1101
  // src/ingest/KnowledgeIngestor.ts
1085
1102
  import * as fs2 from "fs/promises";
1086
1103
  import * as path3 from "path";
1104
+
1105
+ // src/ingest/ingestUtils.ts
1087
1106
  import * as crypto from "crypto";
1088
- var CODE_NODE_TYPES = ["file", "function", "class", "method", "interface", "variable"];
1089
1107
  function hash(text) {
1090
1108
  return crypto.createHash("md5").update(text).digest("hex").slice(0, 8);
1091
1109
  }
@@ -1102,6 +1120,9 @@ function mergeResults(...results) {
1102
1120
  function emptyResult(durationMs = 0) {
1103
1121
  return { nodesAdded: 0, nodesUpdated: 0, edgesAdded: 0, edgesUpdated: 0, errors: [], durationMs };
1104
1122
  }
1123
+
1124
+ // src/ingest/KnowledgeIngestor.ts
1125
+ var CODE_NODE_TYPES = ["file", "function", "class", "method", "interface", "variable"];
1105
1126
  var KnowledgeIngestor = class {
1106
1127
  constructor(store) {
1107
1128
  this.store = store;
@@ -1293,6 +1314,22 @@ var KnowledgeIngestor = class {
1293
1314
 
1294
1315
  // src/ingest/connectors/ConnectorUtils.ts
1295
1316
  var CODE_NODE_TYPES2 = ["file", "function", "class", "method", "interface", "variable"];
1317
+ function sanitizeExternalText(text, maxLength = 2e3) {
1318
+ let sanitized = text.replace(
1319
+ /<\/?(?:system|instruction|prompt|role|context|tool_call|function_call|assistant|human|user)[^>]*>/gi,
1320
+ ""
1321
+ ).replace(/^#{1,3}\s*(?:system|instruction|prompt)\s*[::]\s*/gim, "").replace(
1322
+ /(?:ignore|disregard|forget)\s+(?:all\s+)?(?:previous|prior|above)\s+(?:instructions?|prompts?|context)/gi,
1323
+ "[filtered]"
1324
+ ).replace(
1325
+ /you\s+are\s+now\s+(?:a\s+)?(?:helpful\s+)?(?:an?\s+)?(?:assistant|system|ai|bot|agent|tool)\b/gi,
1326
+ "[filtered]"
1327
+ );
1328
+ if (sanitized.length > maxLength) {
1329
+ sanitized = sanitized.slice(0, maxLength) + "\u2026";
1330
+ }
1331
+ return sanitized;
1332
+ }
1296
1333
  function linkToCode(store, content, sourceNodeId, edgeType, options) {
1297
1334
  let edgesCreated = 0;
1298
1335
  for (const type of CODE_NODE_TYPES2) {
@@ -1460,7 +1497,7 @@ var JiraConnector = class {
1460
1497
  store.addNode({
1461
1498
  id: nodeId,
1462
1499
  type: "issue",
1463
- name: issue.fields.summary,
1500
+ name: sanitizeExternalText(issue.fields.summary, 500),
1464
1501
  metadata: {
1465
1502
  key: issue.key,
1466
1503
  status: issue.fields.status?.name,
@@ -1470,7 +1507,9 @@ var JiraConnector = class {
1470
1507
  }
1471
1508
  });
1472
1509
  nodesAdded++;
1473
- const searchText = [issue.fields.summary, issue.fields.description ?? ""].join(" ");
1510
+ const searchText = sanitizeExternalText(
1511
+ [issue.fields.summary, issue.fields.description ?? ""].join(" ")
1512
+ );
1474
1513
  edgesAdded += linkToCode(store, searchText, nodeId, "applies_to");
1475
1514
  }
1476
1515
  startAt += maxResults;
@@ -1546,7 +1585,8 @@ var SlackConnector = class {
1546
1585
  }
1547
1586
  for (const message of data.messages) {
1548
1587
  const nodeId = `conversation:slack:${channel}:${message.ts}`;
1549
- const snippet = message.text.length > 100 ? message.text.slice(0, 100) : message.text;
1588
+ const sanitizedText = sanitizeExternalText(message.text);
1589
+ const snippet = sanitizedText.length > 100 ? sanitizedText.slice(0, 100) : sanitizedText;
1550
1590
  store.addNode({
1551
1591
  id: nodeId,
1552
1592
  type: "conversation",
@@ -1558,7 +1598,9 @@ var SlackConnector = class {
1558
1598
  }
1559
1599
  });
1560
1600
  nodesAdded++;
1561
- edgesAdded += linkToCode(store, message.text, nodeId, "references", { checkPaths: true });
1601
+ edgesAdded += linkToCode(store, sanitizedText, nodeId, "references", {
1602
+ checkPaths: true
1603
+ });
1562
1604
  }
1563
1605
  } catch (err) {
1564
1606
  errors.push(
@@ -1621,7 +1663,7 @@ var ConfluenceConnector = class {
1621
1663
  store.addNode({
1622
1664
  id: nodeId,
1623
1665
  type: "document",
1624
- name: page.title,
1666
+ name: sanitizeExternalText(page.title, 500),
1625
1667
  metadata: {
1626
1668
  source: "confluence",
1627
1669
  spaceKey,
@@ -1631,7 +1673,7 @@ var ConfluenceConnector = class {
1631
1673
  }
1632
1674
  });
1633
1675
  nodesAdded++;
1634
- const text = `${page.title} ${page.body?.storage?.value ?? ""}`;
1676
+ const text = sanitizeExternalText(`${page.title} ${page.body?.storage?.value ?? ""}`);
1635
1677
  edgesAdded += linkToCode(store, text, nodeId, "documents");
1636
1678
  }
1637
1679
  nextUrl = data._links?.next ? `${baseUrl}${data._links.next}` : null;
@@ -1696,10 +1738,11 @@ var CIConnector = class {
1696
1738
  const data = await response.json();
1697
1739
  for (const run of data.workflow_runs) {
1698
1740
  const buildId = `build:${run.id}`;
1741
+ const safeName = sanitizeExternalText(run.name, 200);
1699
1742
  store.addNode({
1700
1743
  id: buildId,
1701
1744
  type: "build",
1702
- name: `${run.name} #${run.id}`,
1745
+ name: `${safeName} #${run.id}`,
1703
1746
  metadata: {
1704
1747
  source: "github-actions",
1705
1748
  status: run.status,
@@ -1721,7 +1764,7 @@ var CIConnector = class {
1721
1764
  store.addNode({
1722
1765
  id: testResultId,
1723
1766
  type: "test_result",
1724
- name: `Failed: ${run.name} #${run.id}`,
1767
+ name: `Failed: ${safeName} #${run.id}`,
1725
1768
  metadata: {
1726
1769
  source: "github-actions",
1727
1770
  buildId: String(run.id),
@@ -2469,6 +2512,250 @@ var GraphConstraintAdapter = class {
2469
2512
  }
2470
2513
  };
2471
2514
 
2515
+ // src/ingest/DesignIngestor.ts
2516
+ import * as fs4 from "fs/promises";
2517
+ import * as path5 from "path";
2518
+ function isDTCGToken(obj) {
2519
+ return typeof obj === "object" && obj !== null && "$value" in obj && "$type" in obj;
2520
+ }
2521
+ async function readFileOrNull(filePath) {
2522
+ try {
2523
+ return await fs4.readFile(filePath, "utf-8");
2524
+ } catch {
2525
+ return null;
2526
+ }
2527
+ }
2528
+ function parseJsonOrError(content, filePath) {
2529
+ try {
2530
+ return { data: JSON.parse(content) };
2531
+ } catch (err) {
2532
+ return {
2533
+ error: `Failed to parse ${filePath}: ${err instanceof Error ? err.message : String(err)}`
2534
+ };
2535
+ }
2536
+ }
2537
+ function walkDTCGTokens(store, obj, groupPath, topGroup, tokensPath) {
2538
+ let count = 0;
2539
+ for (const [key, value] of Object.entries(obj)) {
2540
+ if (key.startsWith("$")) continue;
2541
+ if (isDTCGToken(value)) {
2542
+ const tokenPath = [...groupPath, key].join(".");
2543
+ store.addNode({
2544
+ id: `design_token:${tokenPath}`,
2545
+ type: "design_token",
2546
+ name: tokenPath,
2547
+ path: tokensPath,
2548
+ metadata: {
2549
+ tokenType: value.$type,
2550
+ value: value.$value,
2551
+ group: topGroup || groupPath[0] || key,
2552
+ ...value.$description ? { description: value.$description } : {}
2553
+ }
2554
+ });
2555
+ count++;
2556
+ } else if (typeof value === "object" && value !== null) {
2557
+ count += walkDTCGTokens(
2558
+ store,
2559
+ value,
2560
+ [...groupPath, key],
2561
+ topGroup || key,
2562
+ tokensPath
2563
+ );
2564
+ }
2565
+ }
2566
+ return count;
2567
+ }
2568
+ function parseAestheticDirection(content) {
2569
+ const extract = (pattern) => {
2570
+ const m = content.match(pattern);
2571
+ return m ? m[1].trim() : void 0;
2572
+ };
2573
+ const result = {};
2574
+ const style = extract(/\*\*Style:\*\*\s*(.+)/);
2575
+ if (style !== void 0) result.style = style;
2576
+ const tone = extract(/\*\*Tone:\*\*\s*(.+)/);
2577
+ if (tone !== void 0) result.tone = tone;
2578
+ const differentiator = extract(/\*\*Differentiator:\*\*\s*(.+)/);
2579
+ if (differentiator !== void 0) result.differentiator = differentiator;
2580
+ const strictness = extract(/^level:\s*(strict|standard|permissive)\s*$/m);
2581
+ if (strictness !== void 0) result.strictness = strictness;
2582
+ return result;
2583
+ }
2584
+ function parseAntiPatterns(content) {
2585
+ const lines = content.split("\n");
2586
+ const patterns = [];
2587
+ let inSection = false;
2588
+ for (const line of lines) {
2589
+ if (/^##\s+Anti-Patterns/i.test(line)) {
2590
+ inSection = true;
2591
+ continue;
2592
+ }
2593
+ if (inSection && /^##\s+/.test(line)) {
2594
+ break;
2595
+ }
2596
+ if (inSection) {
2597
+ const bulletMatch = line.match(/^-\s+(.+)/);
2598
+ if (bulletMatch) {
2599
+ patterns.push(bulletMatch[1].trim());
2600
+ }
2601
+ }
2602
+ }
2603
+ return patterns;
2604
+ }
2605
+ var DesignIngestor = class {
2606
+ constructor(store) {
2607
+ this.store = store;
2608
+ }
2609
+ async ingestTokens(tokensPath) {
2610
+ const start = Date.now();
2611
+ const content = await readFileOrNull(tokensPath);
2612
+ if (content === null) return emptyResult(Date.now() - start);
2613
+ const parsed = parseJsonOrError(content, tokensPath);
2614
+ if ("error" in parsed) {
2615
+ return { ...emptyResult(Date.now() - start), errors: [parsed.error] };
2616
+ }
2617
+ const nodesAdded = walkDTCGTokens(this.store, parsed.data, [], "", tokensPath);
2618
+ return {
2619
+ nodesAdded,
2620
+ nodesUpdated: 0,
2621
+ edgesAdded: 0,
2622
+ edgesUpdated: 0,
2623
+ errors: [],
2624
+ durationMs: Date.now() - start
2625
+ };
2626
+ }
2627
+ async ingestDesignIntent(designPath) {
2628
+ const start = Date.now();
2629
+ const content = await readFileOrNull(designPath);
2630
+ if (content === null) return emptyResult(Date.now() - start);
2631
+ let nodesAdded = 0;
2632
+ const direction = parseAestheticDirection(content);
2633
+ const metadata = {};
2634
+ if (direction.style) metadata.style = direction.style;
2635
+ if (direction.tone) metadata.tone = direction.tone;
2636
+ if (direction.differentiator) metadata.differentiator = direction.differentiator;
2637
+ if (direction.strictness) metadata.strictness = direction.strictness;
2638
+ this.store.addNode({
2639
+ id: "aesthetic_intent:project",
2640
+ type: "aesthetic_intent",
2641
+ name: "project",
2642
+ path: designPath,
2643
+ metadata
2644
+ });
2645
+ nodesAdded++;
2646
+ for (const text of parseAntiPatterns(content)) {
2647
+ this.store.addNode({
2648
+ id: `design_constraint:${hash(text)}`,
2649
+ type: "design_constraint",
2650
+ name: text,
2651
+ path: designPath,
2652
+ metadata: { rule: text, severity: "warn", scope: "project" }
2653
+ });
2654
+ nodesAdded++;
2655
+ }
2656
+ return {
2657
+ nodesAdded,
2658
+ nodesUpdated: 0,
2659
+ edgesAdded: 0,
2660
+ edgesUpdated: 0,
2661
+ errors: [],
2662
+ durationMs: Date.now() - start
2663
+ };
2664
+ }
2665
+ async ingestAll(designDir) {
2666
+ const start = Date.now();
2667
+ const [tokensResult, intentResult] = await Promise.all([
2668
+ this.ingestTokens(path5.join(designDir, "tokens.json")),
2669
+ this.ingestDesignIntent(path5.join(designDir, "DESIGN.md"))
2670
+ ]);
2671
+ const merged = mergeResults(tokensResult, intentResult);
2672
+ return { ...merged, durationMs: Date.now() - start };
2673
+ }
2674
+ };
2675
+
2676
+ // src/constraints/DesignConstraintAdapter.ts
2677
+ var DesignConstraintAdapter = class {
2678
+ constructor(store) {
2679
+ this.store = store;
2680
+ }
2681
+ checkForHardcodedColors(source, file, strictness) {
2682
+ const severity = this.mapSeverity(strictness);
2683
+ const tokenNodes = this.store.findNodes({ type: "design_token" });
2684
+ const colorValues = /* @__PURE__ */ new Set();
2685
+ for (const node of tokenNodes) {
2686
+ if (node.metadata.tokenType === "color" && typeof node.metadata.value === "string") {
2687
+ colorValues.add(node.metadata.value.toLowerCase());
2688
+ }
2689
+ }
2690
+ const hexPattern = /#[0-9a-fA-F]{3,8}\b/g;
2691
+ const violations = [];
2692
+ let match;
2693
+ while ((match = hexPattern.exec(source)) !== null) {
2694
+ const hexValue = match[0];
2695
+ if (!colorValues.has(hexValue.toLowerCase())) {
2696
+ violations.push({
2697
+ code: "DESIGN-001",
2698
+ file,
2699
+ message: `Hardcoded color ${hexValue} is not in the design token set`,
2700
+ severity,
2701
+ value: hexValue
2702
+ });
2703
+ }
2704
+ }
2705
+ return violations;
2706
+ }
2707
+ checkForHardcodedFonts(source, file, strictness) {
2708
+ const severity = this.mapSeverity(strictness);
2709
+ const tokenNodes = this.store.findNodes({ type: "design_token" });
2710
+ const fontFamilies = /* @__PURE__ */ new Set();
2711
+ for (const node of tokenNodes) {
2712
+ if (node.metadata.tokenType === "typography") {
2713
+ const value = node.metadata.value;
2714
+ if (typeof value === "object" && value !== null && "fontFamily" in value) {
2715
+ fontFamilies.add(value.fontFamily.toLowerCase());
2716
+ }
2717
+ }
2718
+ }
2719
+ const fontPatterns = [/fontFamily:\s*['"]([^'"]+)['"]/g, /font-family:\s*['"]([^'"]+)['"]/g];
2720
+ const violations = [];
2721
+ const seen = /* @__PURE__ */ new Set();
2722
+ for (const pattern of fontPatterns) {
2723
+ let match;
2724
+ while ((match = pattern.exec(source)) !== null) {
2725
+ const fontName = match[1];
2726
+ if (seen.has(fontName.toLowerCase())) continue;
2727
+ seen.add(fontName.toLowerCase());
2728
+ if (!fontFamilies.has(fontName.toLowerCase())) {
2729
+ violations.push({
2730
+ code: "DESIGN-002",
2731
+ file,
2732
+ message: `Hardcoded font family "${fontName}" is not in the design token set`,
2733
+ severity,
2734
+ value: fontName
2735
+ });
2736
+ }
2737
+ }
2738
+ }
2739
+ return violations;
2740
+ }
2741
+ checkAll(source, file, strictness) {
2742
+ return [
2743
+ ...this.checkForHardcodedColors(source, file, strictness),
2744
+ ...this.checkForHardcodedFonts(source, file, strictness)
2745
+ ];
2746
+ }
2747
+ mapSeverity(strictness = "standard") {
2748
+ switch (strictness) {
2749
+ case "permissive":
2750
+ return "info";
2751
+ case "standard":
2752
+ return "warn";
2753
+ case "strict":
2754
+ return "error";
2755
+ }
2756
+ }
2757
+ };
2758
+
2472
2759
  // src/feedback/GraphFeedbackAdapter.ts
2473
2760
  var GraphFeedbackAdapter = class {
2474
2761
  constructor(store) {
@@ -2549,6 +2836,8 @@ export {
2549
2836
  CodeIngestor,
2550
2837
  ConfluenceConnector,
2551
2838
  ContextQL,
2839
+ DesignConstraintAdapter,
2840
+ DesignIngestor,
2552
2841
  EDGE_TYPES,
2553
2842
  FusionLayer,
2554
2843
  GitIngestor,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@harness-engineering/graph",
3
- "version": "0.2.1",
3
+ "version": "0.2.2",
4
4
  "license": "MIT",
5
5
  "description": "Knowledge graph for context assembly in Harness Engineering",
6
6
  "main": "./dist/index.js",
@@ -28,6 +28,18 @@
28
28
  "tree-sitter": "^0.22.4",
29
29
  "tree-sitter-typescript": "^0.23.2"
30
30
  },
31
+ "publishConfig": {
32
+ "access": "public"
33
+ },
34
+ "repository": {
35
+ "type": "git",
36
+ "url": "https://github.com/Intense-Visions/harness-engineering.git",
37
+ "directory": "packages/graph"
38
+ },
39
+ "bugs": {
40
+ "url": "https://github.com/Intense-Visions/harness-engineering/issues"
41
+ },
42
+ "homepage": "https://github.com/Intense-Visions/harness-engineering/tree/main/packages/graph#readme",
31
43
  "devDependencies": {
32
44
  "@types/node": "^22.0.0",
33
45
  "@vitest/coverage-v8": "^4.0.18",
package/dist/.tsbuildinfo DELETED
@@ -1 +0,0 @@
1
- {"fileNames":["../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.array.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.error.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.object.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.string.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/typealiases.d.cts","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/util.d.cts","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/index.d.cts","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/zoderror.d.cts","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/locales/en.d.cts","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/errors.d.cts","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/parseutil.d.cts","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/enumutil.d.cts","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/errorutil.d.cts","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/partialutil.d.cts","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/standard-schema.d.cts","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/types.d.cts","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/external.d.cts","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/index.d.cts","../src/types.ts","../src/store/serializer.ts","../src/store/graphstore.ts","../src/store/vectorstore.ts","../src/query/contextql.ts","../src/query/projection.ts","../src/ingest/codeingestor.ts","../src/ingest/gitingestor.ts","../src/ingest/topologicallinker.ts","../src/ingest/knowledgeingestor.ts","../src/ingest/connectors/connectorinterface.ts","../src/ingest/connectors/connectorutils.ts","../src/ingest/connectors/syncmanager.ts","../src/ingest/connectors/jiraconnector.ts","../src/ingest/connectors/slackconnector.ts","../src/ingest/connectors/confluenceconnector.ts","../src/ingest/connectors/ciconnector.ts","../src/search/fusionlayer.ts","../src/entropy/graphentropyadapter.ts","../src/entropy/graphcomplexityadapter.ts","../src/entropy/graphcouplingadapter.ts","../src/context/assembler.ts","../../../node_modules/.pnpm/minimatch@10.2.4/node_modules/minimatch/dist/esm/ast.d.ts","../../../node_modules/.pnpm/minimatch@10.2.4/node_modules/minimatch/dist/esm/escape.d.ts","../../../node_modules/.pnpm/minimatch@10.2.4/node_modules/minimatch/dist/esm/unescape.d.ts","../../../node_modules/.pnpm/minimatch@10.2.4/node_modules/minimatch/dist/esm/index.d.ts","../src/constraints/graphconstraintadapter.ts","../src/feedback/graphfeedbackadapter.ts","../src/index.ts","../src/lokijs.d.ts","../../../node_modules/.pnpm/@types+node@22.19.15/node_modules/@types/node/compatibility/disposable.d.ts","../../../node_modules/.pnpm/@types+node@22.19.15/node_modules/@types/node/compatibility/indexable.d.ts","../../../node_modules/.pnpm/@types+node@22.19.15/node_modules/@types/node/compatibility/iterators.d.ts","../../../node_modules/.pnpm/@types+node@22.19.15/node_modules/@types/node/compatibility/index.d.ts","../../../node_modules/.pnpm/@types+node@22.19.15/node_modules/@types/node/globals.typedarray.d.ts","../../../node_modules/.pnpm/@types+node@22.19.15/node_modules/@types/node/buffer.buffer.d.ts","../../../node_modules/.pnpm/@types+node@22.19.15/node_modules/@types/node/globals.d.ts","../../../node_modules/.pnpm/@types+node@22.19.15/node_modules/@types/node/web-globals/abortcontroller.d.ts","../../../node_modules/.pnpm/@types+node@22.19.15/node_modules/@types/node/web-globals/domexception.d.ts","../../../node_modules/.pnpm/@types+node@22.19.15/node_modules/@types/node/web-globals/events.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/header.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/readable.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/file.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/fetch.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/formdata.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/connector.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/client.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/errors.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/dispatcher.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/global-dispatcher.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/global-origin.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/pool-stats.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/pool.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/handlers.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/balanced-pool.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/agent.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-interceptor.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-agent.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-client.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-pool.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-errors.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/proxy-agent.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/env-http-proxy-agent.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/retry-handler.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/retry-agent.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/api.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/interceptors.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/util.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/cookies.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/patch.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/websocket.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/eventsource.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/filereader.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/diagnostics-channel.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/content-type.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/cache.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/index.d.ts","../../../node_modules/.pnpm/@types+node@22.19.15/node_modules/@types/node/web-globals/fetch.d.ts","../../../node_modules/.pnpm/@types+node@22.19.15/node_modules/@types/node/web-globals/navigator.d.ts","../../../node_modules/.pnpm/@types+node@22.19.15/node_modules/@types/node/web-globals/storage.d.ts","../../../node_modules/.pnpm/@types+node@22.19.15/node_modules/@types/node/assert.d.ts","../../../node_modules/.pnpm/@types+node@22.19.15/node_modules/@types/node/assert/strict.d.ts","../../../node_modules/.pnpm/@types+node@22.19.15/node_modules/@types/node/async_hooks.d.ts","../../../node_modules/.pnpm/@types+node@22.19.15/node_modules/@types/node/buffer.d.ts","../../../node_modules/.pnpm/@types+node@22.19.15/node_modules/@types/node/child_process.d.ts","../../../node_modules/.pnpm/@types+node@22.19.15/node_modules/@types/node/cluster.d.ts","../../../node_modules/.pnpm/@types+node@22.19.15/node_modules/@types/node/console.d.ts","../../../node_modules/.pnpm/@types+node@22.19.15/node_modules/@types/node/constants.d.ts","../../../node_modules/.pnpm/@types+node@22.19.15/node_modules/@types/node/crypto.d.ts","../../../node_modules/.pnpm/@types+node@22.19.15/node_modules/@types/node/dgram.d.ts","../../../node_modules/.pnpm/@types+node@22.19.15/node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/.pnpm/@types+node@22.19.15/node_modules/@types/node/dns.d.ts","../../../node_modules/.pnpm/@types+node@22.19.15/node_modules/@types/node/dns/promises.d.ts","../../../node_modules/.pnpm/@types+node@22.19.15/node_modules/@types/node/domain.d.ts","../../../node_modules/.pnpm/@types+node@22.19.15/node_modules/@types/node/events.d.ts","../../../node_modules/.pnpm/@types+node@22.19.15/node_modules/@types/node/fs.d.ts","../../../node_modules/.pnpm/@types+node@22.19.15/node_modules/@types/node/fs/promises.d.ts","../../../node_modules/.pnpm/@types+node@22.19.15/node_modules/@types/node/http.d.ts","../../../node_modules/.pnpm/@types+node@22.19.15/node_modules/@types/node/http2.d.ts","../../../node_modules/.pnpm/@types+node@22.19.15/node_modules/@types/node/https.d.ts","../../../node_modules/.pnpm/@types+node@22.19.15/node_modules/@types/node/inspector.d.ts","../../../node_modules/.pnpm/@types+node@22.19.15/node_modules/@types/node/inspector.generated.d.ts","../../../node_modules/.pnpm/@types+node@22.19.15/node_modules/@types/node/module.d.ts","../../../node_modules/.pnpm/@types+node@22.19.15/node_modules/@types/node/net.d.ts","../../../node_modules/.pnpm/@types+node@22.19.15/node_modules/@types/node/os.d.ts","../../../node_modules/.pnpm/@types+node@22.19.15/node_modules/@types/node/path.d.ts","../../../node_modules/.pnpm/@types+node@22.19.15/node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/.pnpm/@types+node@22.19.15/node_modules/@types/node/process.d.ts","../../../node_modules/.pnpm/@types+node@22.19.15/node_modules/@types/node/punycode.d.ts","../../../node_modules/.pnpm/@types+node@22.19.15/node_modules/@types/node/querystring.d.ts","../../../node_modules/.pnpm/@types+node@22.19.15/node_modules/@types/node/readline.d.ts","../../../node_modules/.pnpm/@types+node@22.19.15/node_modules/@types/node/readline/promises.d.ts","../../../node_modules/.pnpm/@types+node@22.19.15/node_modules/@types/node/repl.d.ts","../../../node_modules/.pnpm/@types+node@22.19.15/node_modules/@types/node/sea.d.ts","../../../node_modules/.pnpm/@types+node@22.19.15/node_modules/@types/node/sqlite.d.ts","../../../node_modules/.pnpm/@types+node@22.19.15/node_modules/@types/node/stream.d.ts","../../../node_modules/.pnpm/@types+node@22.19.15/node_modules/@types/node/stream/promises.d.ts","../../../node_modules/.pnpm/@types+node@22.19.15/node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/.pnpm/@types+node@22.19.15/node_modules/@types/node/stream/web.d.ts","../../../node_modules/.pnpm/@types+node@22.19.15/node_modules/@types/node/string_decoder.d.ts","../../../node_modules/.pnpm/@types+node@22.19.15/node_modules/@types/node/test.d.ts","../../../node_modules/.pnpm/@types+node@22.19.15/node_modules/@types/node/timers.d.ts","../../../node_modules/.pnpm/@types+node@22.19.15/node_modules/@types/node/timers/promises.d.ts","../../../node_modules/.pnpm/@types+node@22.19.15/node_modules/@types/node/tls.d.ts","../../../node_modules/.pnpm/@types+node@22.19.15/node_modules/@types/node/trace_events.d.ts","../../../node_modules/.pnpm/@types+node@22.19.15/node_modules/@types/node/tty.d.ts","../../../node_modules/.pnpm/@types+node@22.19.15/node_modules/@types/node/url.d.ts","../../../node_modules/.pnpm/@types+node@22.19.15/node_modules/@types/node/util.d.ts","../../../node_modules/.pnpm/@types+node@22.19.15/node_modules/@types/node/v8.d.ts","../../../node_modules/.pnpm/@types+node@22.19.15/node_modules/@types/node/vm.d.ts","../../../node_modules/.pnpm/@types+node@22.19.15/node_modules/@types/node/wasi.d.ts","../../../node_modules/.pnpm/@types+node@22.19.15/node_modules/@types/node/worker_threads.d.ts","../../../node_modules/.pnpm/@types+node@22.19.15/node_modules/@types/node/zlib.d.ts","../../../node_modules/.pnpm/@types+node@22.19.15/node_modules/@types/node/index.d.ts"],"fileIdsList":[[107,152,153,155,172,173],[107,154,155,172,173],[155,172,173],[107,155,160,172,173,190],[107,155,156,161,166,172,173,175,187,198],[107,155,156,157,166,172,173,175],[107,155,172,173],[102,103,104,107,155,172,173],[107,155,158,172,173,199],[107,155,159,160,167,172,173,176],[107,155,160,172,173,187,195],[107,155,161,163,166,172,173,175],[107,154,155,162,172,173],[107,155,163,164,172,173],[107,155,165,166,172,173],[107,154,155,166,172,173],[107,155,166,167,168,172,173,187,198],[107,155,166,167,168,172,173,182,187,190],[107,148,155,163,166,169,172,173,175,187,198],[107,155,166,167,169,170,172,173,175,187,195,198],[107,155,169,171,172,173,187,195,198],[105,106,107,108,109,110,111,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204],[107,155,166,172,173],[107,155,172,173,174,198],[107,155,163,166,172,173,175,187],[107,155,172,173,176],[107,155,172,173,177],[107,154,155,172,173,178],[107,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204],[107,155,172,173,180],[107,155,172,173,181],[107,155,166,172,173,182,183],[107,155,172,173,182,184,199,201],[107,155,167,172,173],[107,155,166,172,173,187,188,190],[107,155,172,173,189,190],[107,155,172,173,187,188],[107,155,172,173,190],[107,155,172,173,191],[107,152,155,172,173,187,192,198],[107,155,166,172,173,193,194],[107,155,172,173,193,194],[107,155,160,172,173,175,187,195],[107,155,172,173,196],[107,155,172,173,175,197],[107,155,169,172,173,181,198],[107,155,160,172,173,199],[107,155,172,173,187,200],[107,155,172,173,174,201],[107,155,172,173,202],[107,148,155,172,173],[107,148,155,166,168,172,173,178,187,190,198,200,201,203],[107,155,172,173,187,204],[97,107,155,172,173],[94,95,96,107,155,172,173],[107,120,124,155,172,173,198],[107,120,155,172,173,187,198],[107,115,155,172,173],[107,117,120,155,172,173,195,198],[107,155,172,173,175,195],[107,155,172,173,205],[107,115,155,172,173,205],[107,117,120,155,172,173,175,198],[107,112,113,116,119,155,166,172,173,187,198],[107,120,127,155,172,173],[107,112,118,155,172,173],[107,120,141,142,155,172,173],[107,116,120,155,172,173,190,198,205],[107,141,155,172,173,205],[107,114,115,155,172,173,205],[107,120,155,172,173],[107,114,115,116,117,118,119,120,121,122,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,142,143,144,145,146,147,155,172,173],[107,120,135,155,172,173],[107,120,127,128,155,172,173],[107,118,120,128,129,155,172,173],[107,119,155,172,173],[107,112,115,120,155,172,173],[107,120,124,128,129,155,172,173],[107,124,155,172,173],[107,118,120,123,155,172,173,198],[107,112,117,120,127,155,172,173],[107,155,172,173,187],[107,115,120,141,155,172,173,203,205],[70,107,155,172,173],[61,62,107,155,172,173],[58,59,61,63,64,69,107,155,172,173],[59,61,107,155,172,173],[69,107,155,172,173],[61,107,155,172,173],[58,59,61,64,65,66,67,68,107,155,172,173],[58,59,60,107,155,172,173],[74,97,107,155,172,173,177],[72,74,75,76,89,107,155,172,173],[74,107,155,172,173],[72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,98,99,107,155,172,173],[72,74,107,155,168,172,173,177],[72,74,82,107,155,172,173],[72,74,82,83,107,155,172,173],[72,74,107,155,172,173],[72,74,82,107,155,168,172,173,177],[72,74,107,155,156,172,173,199],[72,74,107,155,160,168,172,173,177],[74,107,155,172,173,177],[72,107,155,172,173],[72,74,75,107,155,172,173],[72,73,101,107,155,172,173],[72,107,155,168,172,173,177],[71,107,155,172,173]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"8cdf8847677ac7d20486e54dd3fcf09eda95812ac8ace44b4418da1bbbab6eb8","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"d3cfde44f8089768ebb08098c96d01ca260b88bccf238d55eee93f1c620ff5a5","impliedFormat":1},{"version":"293eadad9dead44c6fd1db6de552663c33f215c55a1bfa2802a1bceed88ff0ec","impliedFormat":1},{"version":"833e92c058d033cde3f29a6c7603f517001d1ddd8020bc94d2067a3bc69b2a8e","impliedFormat":1},{"version":"08b2fae7b0f553ad9f79faec864b179fc58bc172e295a70943e8585dd85f600c","impliedFormat":1},{"version":"f12edf1672a94c578eca32216839604f1e1c16b40a1896198deabf99c882b340","impliedFormat":1},{"version":"e3498cf5e428e6c6b9e97bd88736f26d6cf147dedbfa5a8ad3ed8e05e059af8a","impliedFormat":1},{"version":"dba3f34531fd9b1b6e072928b6f885aa4d28dd6789cbd0e93563d43f4b62da53","impliedFormat":1},{"version":"f672c876c1a04a223cf2023b3d91e8a52bb1544c576b81bf64a8fec82be9969c","impliedFormat":1},{"version":"e4b03ddcf8563b1c0aee782a185286ed85a255ce8a30df8453aade2188bbc904","impliedFormat":1},{"version":"2329d90062487e1eaca87b5e06abcbbeeecf80a82f65f949fd332cfcf824b87b","impliedFormat":1},{"version":"25b3f581e12ede11e5739f57a86e8668fbc0124f6649506def306cad2c59d262","impliedFormat":1},{"version":"4fdb529707247a1a917a4626bfb6a293d52cd8ee57ccf03830ec91d39d606d6d","impliedFormat":1},{"version":"a9ebb67d6bbead6044b43714b50dcb77b8f7541ffe803046fdec1714c1eba206","impliedFormat":1},{"version":"5780b706cece027f0d4444fbb4e1af62dc51e19da7c3d3719f67b22b033859b9","impliedFormat":1},"3ef48b62839ddb5d36f570abb298dd976fcb537d936756cb0de18c8808ed0600","d33627d48721fe14237a591dc1eb560a5ea42f5bbede7d0b54d2efee2b8c7253",{"version":"22c11ae5e6aac16aa5795d21cda106055db58f4b4523406f6fe22343fa3eefdd","signature":"d3d12e2f4deb3e7b89f2d4e0c467bcded3af6d145590f6151d08bf1512678ea0"},"4355ca6da646f746cd3170304ef94c5d70fbd00dcdae05387925bdf26068118c","7f4c69945e6bcb824d261cc101f890c135a218fa163b71676c5041e28386c4c5","07b7470b3b8b67009b5f2d4761f9c3d3c89f4816a85606ae26420da712fc9cd7",{"version":"69527d1af5e80d335610e01e8164fa341c055a6eeaed2298bdf0c55fcc8bb2f9","signature":"abc4ef9182f00ceb23449dcb114fd96d9fb5fc5bf64b9d5c6b3a86a5edd691b3"},"1552a69159608d1ac2d81c616076849e5f78b645130d4b0e7ecb46a23bd01364","97b306995de9a6540831e57df57fd9cd98c3f4214555f335f83a32850ce7e408","da50cc6785d5f9c73d79ef4c6ac1ebcfbf66dc20e9e035f645a91a7ad3855b33","4ee0513085263da17de0625a04f324b3850bce8dd1744680c83270f0a192714f","e8272ea5379082933ae82124588ac8af96134ed9c00a412885072473de15d7f2","9c6211a949fb16b940c5846fbd85feae11def6c8051707833a58e9570de0c9a2","81854d7ebd3098f663b4ad39eb2a62b3a4d883da872e3bd70a9377db5bbb5da4","56a187a5c6a68dfcbaa4b7fb64c546d1b8cb618a4b005c3e42640925962f56e1",{"version":"a29b0e0ee8101ec28d9a25dbca3bdb58d858e2319237a7b92632b4bc01d1e0d0","signature":"982b8f9821b48df98070ca55b846fed368da19f4ddf55b4a3ce41b3934ecc4e9"},{"version":"fe1e2a1c9cb7e2a5cb3f57d5cc8dfd02e37818d984c5e6368bab8e305df5880d","signature":"5b9709c4e13d214f564f563b5a879b0db6a1395276f636c3f1293f8f47601eac"},"45968568e1ea3a48119d7d98267595428d36324a0b0130188dfa30834b62d52a",{"version":"5982856c4e13a2127692596862755b00c46f1639d35ed6b3aba84d1a55cf445e","signature":"9b9166d71c5ed51e1bcd6803659e154ed9cc78704b7f1223105a4faf222996dc"},{"version":"fc94320fee6ffc0484347ad8de6ddadf36e574abaa4eab0e3ce16aa207b6d68e","signature":"0c3ba28b5f5c9618363452df7570461b57e34a3cc12e3eaa45fbed7fe24007bd"},{"version":"0dcfdc504d3478280da55428a4273143601d5e4b25188edf4d11c127297cc823","signature":"6f7f9f0d49e88e40408b0c447629519aeff35fd4bfe11943ca3e519bca2f95fc"},"c01daf7ecc914ad10c6daed22c9e8230d5e4834cf9b56453f8eb251edf8c1357",{"version":"ba2b8858ace0b631b318392c75c167fc3b2f819b0afb6706da4635346db92451","impliedFormat":99},{"version":"d8a6b3f899917210f00ddf13b564a2a4fdcf1e50c5a22e8d3abcfd4f1c4f9ae1","impliedFormat":99},{"version":"fd5eab954b31e761a72234031dadc3aab768763942a9637e380aed441cc94f59","impliedFormat":99},{"version":"6d719ee5051d87a0f5c94d9481d86221cfbe350f3f80c12bb3fe6ab7ea30f1ab","impliedFormat":99},{"version":"ab51a2fc192e0a7bdc1eec87724b07c092453c58a757342d4e924139f9187a5a","signature":"214b94d2f782ca911bec61148e27a7f919af4f15433ffe71917ff99216a649b0"},{"version":"839a7f41ca1e0cb5a9c2229af6fb65dea87936e815bc9d5dc9e344ee7af0242e","signature":"e675bff89e0944f0e764c85cf564be1d0ce50b1e8419ee025b849067c7adc5f8"},{"version":"4c71bdfd075ed216df6623e457ed2a2fd3204eb1ce7778ad2ba70b63c478d718","signature":"1dad4a3cc3eac6e092d39fcb6bc29c3ba55d361072e2b1b1b5ab746c5bfeafc8"},"6c3c543acd52bc6b0b59c78843c66950e837d147d94c413e71ecce7be556aee4",{"version":"6c7176368037af28cb72f2392010fa1cef295d6d6744bca8cfb54985f3a18c3e","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab41ef1f2cdafb8df48be20cd969d875602483859dc194e9c97c8a576892c052","affectsGlobalScope":true,"impliedFormat":1},{"version":"437e20f2ba32abaeb7985e0afe0002de1917bc74e949ba585e49feba65da6ca1","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"98cffbf06d6bab333473c70a893770dbe990783904002c4f1a960447b4b53dca","affectsGlobalScope":true,"impliedFormat":1},{"version":"3af97acf03cc97de58a3a4bc91f8f616408099bc4233f6d0852e72a8ffb91ac9","affectsGlobalScope":true,"impliedFormat":1},{"version":"808069bba06b6768b62fd22429b53362e7af342da4a236ed2d2e1c89fcca3b4a","affectsGlobalScope":true,"impliedFormat":1},{"version":"1db0b7dca579049ca4193d034d835f6bfe73096c73663e5ef9a0b5779939f3d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"f26b11d8d8e4b8028f1c7d618b22274c892e4b0ef5b3678a8ccbad85419aef43","affectsGlobalScope":true,"impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"763fe0f42b3d79b440a9b6e51e9ba3f3f91352469c1e4b3b67bfa4ff6352f3f4","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","impliedFormat":1},{"version":"7f182617db458e98fc18dfb272d40aa2fff3a353c44a89b2c0ccb3937709bfb5","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","impliedFormat":1},{"version":"a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"b52476feb4a0cbcb25e5931b930fc73cb6643fb1a5060bf8a3dda0eeae5b4b68","affectsGlobalScope":true,"impliedFormat":1},{"version":"f9501cc13ce624c72b61f12b3963e84fad210fbdf0ffbc4590e08460a3f04eba","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"0fa06ada475b910e2106c98c68b10483dc8811d0c14a8a8dd36efb2672485b29","impliedFormat":1},{"version":"33e5e9aba62c3193d10d1d33ae1fa75c46a1171cf76fef750777377d53b0303f","impliedFormat":1},{"version":"2b06b93fd01bcd49d1a6bd1f9b65ddcae6480b9a86e9061634d6f8e354c1468f","impliedFormat":1},{"version":"6a0cd27e5dc2cfbe039e731cf879d12b0e2dded06d1b1dedad07f7712de0d7f4","affectsGlobalScope":true,"impliedFormat":1},{"version":"13f5c844119c43e51ce777c509267f14d6aaf31eafb2c2b002ca35584cd13b29","impliedFormat":1},{"version":"e60477649d6ad21542bd2dc7e3d9ff6853d0797ba9f689ba2f6653818999c264","impliedFormat":1},{"version":"c2510f124c0293ab80b1777c44d80f812b75612f297b9857406468c0f4dafe29","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"4c829ab315f57c5442c6667b53769975acbf92003a66aef19bce151987675bd1","affectsGlobalScope":true,"impliedFormat":1},{"version":"b2ade7657e2db96d18315694789eff2ddd3d8aea7215b181f8a0b303277cc579","impliedFormat":1},{"version":"9855e02d837744303391e5623a531734443a5f8e6e8755e018c41d63ad797db2","impliedFormat":1},{"version":"4d631b81fa2f07a0e63a9a143d6a82c25c5f051298651a9b69176ba28930756d","impliedFormat":1},{"version":"836a356aae992ff3c28a0212e3eabcb76dd4b0cc06bcb9607aeef560661b860d","impliedFormat":1},{"version":"1e0d1f8b0adfa0b0330e028c7941b5a98c08b600efe7f14d2d2a00854fb2f393","impliedFormat":1},{"version":"41670ee38943d9cbb4924e436f56fc19ee94232bc96108562de1a734af20dc2c","affectsGlobalScope":true,"impliedFormat":1},{"version":"c906fb15bd2aabc9ed1e3f44eb6a8661199d6c320b3aa196b826121552cb3695","impliedFormat":1},{"version":"22295e8103f1d6d8ea4b5d6211e43421fe4564e34d0dd8e09e520e452d89e659","impliedFormat":1},{"version":"58647d85d0f722a1ce9de50955df60a7489f0593bf1a7015521efe901c06d770","impliedFormat":1},{"version":"6b4e081d55ac24fc8a4631d5dd77fe249fa25900abd7d046abb87d90e3b45645","impliedFormat":1},{"version":"a10f0e1854f3316d7ee437b79649e5a6ae3ae14ffe6322b02d4987071a95362e","impliedFormat":1},{"version":"e208f73ef6a980104304b0d2ca5f6bf1b85de6009d2c7e404028b875020fa8f2","impliedFormat":1},{"version":"d163b6bc2372b4f07260747cbc6c0a6405ab3fbcea3852305e98ac43ca59f5bc","impliedFormat":1},{"version":"e6fa9ad47c5f71ff733744a029d1dc472c618de53804eae08ffc243b936f87ff","affectsGlobalScope":true,"impliedFormat":1},{"version":"83e63d6ccf8ec004a3bb6d58b9bb0104f60e002754b1e968024b320730cc5311","impliedFormat":1},{"version":"24826ed94a78d5c64bd857570fdbd96229ad41b5cb654c08d75a9845e3ab7dde","impliedFormat":1},{"version":"8b479a130ccb62e98f11f136d3ac80f2984fdc07616516d29881f3061f2dd472","impliedFormat":1},{"version":"928af3d90454bf656a52a48679f199f64c1435247d6189d1caf4c68f2eaf921f","affectsGlobalScope":true,"impliedFormat":1},{"version":"bceb58df66ab8fb00170df20cd813978c5ab84be1d285710c4eb005d8e9d8efb","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f16a7e4deafa527ed9995a772bb380eb7d3c2c0fd4ae178c5263ed18394db2c","impliedFormat":1},{"version":"933921f0bb0ec12ef45d1062a1fc0f27635318f4d294e4d99de9a5493e618ca2","impliedFormat":1},{"version":"71a0f3ad612c123b57239a7749770017ecfe6b66411488000aba83e4546fde25","impliedFormat":1},{"version":"77fbe5eecb6fac4b6242bbf6eebfc43e98ce5ccba8fa44e0ef6a95c945ff4d98","impliedFormat":1},{"version":"4f9d8ca0c417b67b69eeb54c7ca1bedd7b56034bb9bfd27c5d4f3bc4692daca7","impliedFormat":1},{"version":"814118df420c4e38fe5ae1b9a3bafb6e9c2aa40838e528cde908381867be6466","impliedFormat":1},{"version":"a3fc63c0d7b031693f665f5494412ba4b551fe644ededccc0ab5922401079c95","impliedFormat":1},{"version":"f27524f4bef4b6519c604bdb23bf4465bddcccbf3f003abb901acbd0d7404d99","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"45650f47bfb376c8a8ed39d4bcda5902ab899a3150029684ee4c10676d9fbaee","impliedFormat":1},{"version":"6b039f55681caaf111d5eb84d292b9bee9e0131d0db1ad0871eef0964f533c73","affectsGlobalScope":true,"impliedFormat":1},{"version":"18fd40412d102c5564136f29735e5d1c3b455b8a37f920da79561f1fde068208","impliedFormat":1},{"version":"c8d3e5a18ba35629954e48c4cc8f11dc88224650067a172685c736b27a34a4dc","impliedFormat":1},{"version":"f0be1b8078cd549d91f37c30c222c2a187ac1cf981d994fb476a1adc61387b14","affectsGlobalScope":true,"impliedFormat":1},{"version":"0aaed1d72199b01234152f7a60046bc947f1f37d78d182e9ae09c4289e06a592","impliedFormat":1},{"version":"2b55d426ff2b9087485e52ac4bc7cfafe1dc420fc76dad926cd46526567c501a","impliedFormat":1},{"version":"66ba1b2c3e3a3644a1011cd530fb444a96b1b2dfe2f5e837a002d41a1a799e60","impliedFormat":1},{"version":"7e514f5b852fdbc166b539fdd1f4e9114f29911592a5eb10a94bb3a13ccac3c4","impliedFormat":1},{"version":"5b7aa3c4c1a5d81b411e8cb302b45507fea9358d3569196b27eb1a27ae3a90ef","affectsGlobalScope":true,"impliedFormat":1},{"version":"5987a903da92c7462e0b35704ce7da94d7fdc4b89a984871c0e2b87a8aae9e69","affectsGlobalScope":true,"impliedFormat":1},{"version":"ea08a0345023ade2b47fbff5a76d0d0ed8bff10bc9d22b83f40858a8e941501c","impliedFormat":1},{"version":"47613031a5a31510831304405af561b0ffaedb734437c595256bb61a90f9311b","impliedFormat":1},{"version":"ae062ce7d9510060c5d7e7952ae379224fb3f8f2dd74e88959878af2057c143b","impliedFormat":1},{"version":"8a1a0d0a4a06a8d278947fcb66bf684f117bf147f89b06e50662d79a53be3e9f","affectsGlobalScope":true,"impliedFormat":1},{"version":"358765d5ea8afd285d4fd1532e78b88273f18cb3f87403a9b16fef61ac9fdcfe","impliedFormat":1},{"version":"9f55299850d4f0921e79b6bf344b47c420ce0f507b9dcf593e532b09ea7eeea1","impliedFormat":1}],"root":[[72,93],[98,101]],"options":{"composite":true,"declaration":true,"declarationMap":true,"esModuleInterop":true,"exactOptionalPropertyTypes":true,"module":99,"noFallthroughCasesInSwitch":true,"noUncheckedIndexedAccess":true,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"./","rootDir":"../src","skipLibCheck":true,"sourceMap":true,"strict":true,"target":9,"tsBuildInfoFile":"./.tsbuildinfo"},"referencedMap":[[152,1],[153,1],[154,2],[107,3],[155,4],[156,5],[157,6],[102,7],[105,8],[103,7],[104,7],[158,9],[159,10],[160,11],[161,12],[162,13],[163,14],[164,14],[165,15],[166,16],[167,17],[168,18],[108,7],[106,7],[169,19],[170,20],[171,21],[205,22],[172,23],[173,7],[174,24],[175,25],[176,26],[177,27],[178,28],[179,29],[180,30],[181,31],[182,32],[183,32],[184,33],[185,7],[186,34],[187,35],[189,36],[188,37],[190,38],[191,39],[192,40],[193,41],[194,42],[195,43],[196,44],[197,45],[198,46],[199,47],[200,48],[201,49],[202,50],[109,7],[110,7],[111,7],[149,51],[150,7],[151,7],[203,52],[204,53],[94,54],[95,54],[97,55],[96,54],[56,7],[57,7],[11,7],[10,7],[2,7],[12,7],[13,7],[14,7],[15,7],[16,7],[17,7],[18,7],[19,7],[3,7],[20,7],[21,7],[4,7],[22,7],[26,7],[23,7],[24,7],[25,7],[27,7],[28,7],[29,7],[5,7],[30,7],[31,7],[32,7],[33,7],[6,7],[37,7],[34,7],[35,7],[36,7],[38,7],[7,7],[39,7],[44,7],[45,7],[40,7],[41,7],[42,7],[43,7],[8,7],[49,7],[46,7],[47,7],[48,7],[50,7],[9,7],[51,7],[52,7],[53,7],[55,7],[54,7],[1,7],[127,56],[137,57],[126,56],[147,58],[118,59],[117,60],[146,61],[140,62],[145,63],[120,64],[134,65],[119,66],[143,67],[115,68],[114,61],[144,69],[116,70],[121,71],[122,7],[125,71],[112,7],[148,72],[138,73],[129,74],[130,75],[132,76],[128,77],[131,78],[141,61],[123,79],[124,80],[133,81],[113,82],[136,73],[135,71],[139,7],[142,83],[71,84],[63,85],[70,86],[65,7],[66,7],[64,87],[67,88],[58,7],[59,7],[60,84],[62,89],[68,7],[69,90],[61,91],[98,92],[93,93],[91,94],[92,94],[90,94],[99,94],[100,95],[78,96],[88,97],[87,98],[82,99],[83,99],[85,98],[86,98],[84,100],[79,101],[81,102],[80,103],[101,7],[76,99],[77,104],[89,105],[74,106],[73,107],[75,7],[72,108]],"affectedFilesPendingEmit":[[98,51],[93,51],[91,51],[92,51],[90,51],[99,51],[100,51],[78,51],[88,51],[87,51],[82,51],[83,51],[85,51],[86,51],[84,51],[79,51],[81,51],[80,51],[76,51],[77,51],[89,51],[74,51],[73,51],[75,51],[72,51]],"emitSignatures":[72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,98,99,100],"version":"5.9.3"}