@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 +35 -9
- package/dist/index.d.ts +35 -9
- package/dist/index.js +304 -13
- package/dist/index.mjs +302 -13
- package/package.json +13 -1
- package/dist/.tsbuildinfo +0 -1
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
|
-
|
|
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
|
-
|
|
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 =
|
|
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
|
|
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,
|
|
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: `${
|
|
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: ${
|
|
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
|
-
|
|
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
|
-
|
|
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 =
|
|
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
|
|
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,
|
|
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: `${
|
|
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: ${
|
|
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.
|
|
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"}
|