@indigoai-us/cq 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (177) hide show
  1. package/dist/__tests__/integration.test.d.ts +8 -0
  2. package/dist/__tests__/integration.test.d.ts.map +1 -0
  3. package/dist/__tests__/integration.test.js +233 -0
  4. package/dist/__tests__/integration.test.js.map +1 -0
  5. package/dist/budget/__tests__/budget.test.d.ts +2 -0
  6. package/dist/budget/__tests__/budget.test.d.ts.map +1 -0
  7. package/dist/budget/__tests__/budget.test.js +238 -0
  8. package/dist/budget/__tests__/budget.test.js.map +1 -0
  9. package/dist/budget/__tests__/token-tracker.test.d.ts +2 -0
  10. package/dist/budget/__tests__/token-tracker.test.d.ts.map +1 -0
  11. package/dist/budget/__tests__/token-tracker.test.js +292 -0
  12. package/dist/budget/__tests__/token-tracker.test.js.map +1 -0
  13. package/dist/budget/index.d.ts +38 -0
  14. package/dist/budget/index.d.ts.map +1 -0
  15. package/dist/budget/index.js +192 -0
  16. package/dist/budget/index.js.map +1 -0
  17. package/dist/budget/token-tracker.d.ts +62 -0
  18. package/dist/budget/token-tracker.d.ts.map +1 -0
  19. package/dist/budget/token-tracker.js +152 -0
  20. package/dist/budget/token-tracker.js.map +1 -0
  21. package/dist/budget/types.d.ts +41 -0
  22. package/dist/budget/types.d.ts.map +1 -0
  23. package/dist/budget/types.js +5 -0
  24. package/dist/budget/types.js.map +1 -0
  25. package/dist/confidence/__tests__/confidence.test.d.ts +2 -0
  26. package/dist/confidence/__tests__/confidence.test.d.ts.map +1 -0
  27. package/dist/confidence/__tests__/confidence.test.js +336 -0
  28. package/dist/confidence/__tests__/confidence.test.js.map +1 -0
  29. package/dist/confidence/erosion.d.ts +33 -0
  30. package/dist/confidence/erosion.d.ts.map +1 -0
  31. package/dist/confidence/erosion.js +42 -0
  32. package/dist/confidence/erosion.js.map +1 -0
  33. package/dist/confidence/index.d.ts +42 -0
  34. package/dist/confidence/index.d.ts.map +1 -0
  35. package/dist/confidence/index.js +168 -0
  36. package/dist/confidence/index.js.map +1 -0
  37. package/dist/confidence/types.d.ts +29 -0
  38. package/dist/confidence/types.d.ts.map +1 -0
  39. package/dist/confidence/types.js +5 -0
  40. package/dist/confidence/types.js.map +1 -0
  41. package/dist/curiosity/__tests__/curiosity.test.d.ts +2 -0
  42. package/dist/curiosity/__tests__/curiosity.test.d.ts.map +1 -0
  43. package/dist/curiosity/__tests__/curiosity.test.js +280 -0
  44. package/dist/curiosity/__tests__/curiosity.test.js.map +1 -0
  45. package/dist/curiosity/dedup.d.ts +29 -0
  46. package/dist/curiosity/dedup.d.ts.map +1 -0
  47. package/dist/curiosity/dedup.js +64 -0
  48. package/dist/curiosity/dedup.js.map +1 -0
  49. package/dist/curiosity/index.d.ts +56 -0
  50. package/dist/curiosity/index.d.ts.map +1 -0
  51. package/dist/curiosity/index.js +163 -0
  52. package/dist/curiosity/index.js.map +1 -0
  53. package/dist/curiosity/types.d.ts +29 -0
  54. package/dist/curiosity/types.d.ts.map +1 -0
  55. package/dist/curiosity/types.js +5 -0
  56. package/dist/curiosity/types.js.map +1 -0
  57. package/dist/index.d.ts +25 -0
  58. package/dist/index.d.ts.map +1 -0
  59. package/dist/index.js +16 -0
  60. package/dist/index.js.map +1 -0
  61. package/dist/index.test.d.ts +2 -0
  62. package/dist/index.test.d.ts.map +1 -0
  63. package/dist/index.test.js +7 -0
  64. package/dist/index.test.js.map +1 -0
  65. package/dist/init.d.ts +17 -0
  66. package/dist/init.d.ts.map +1 -0
  67. package/dist/init.js +153 -0
  68. package/dist/init.js.map +1 -0
  69. package/dist/knowledge-tree/__tests__/knowledge-tree.test.d.ts +2 -0
  70. package/dist/knowledge-tree/__tests__/knowledge-tree.test.d.ts.map +1 -0
  71. package/dist/knowledge-tree/__tests__/knowledge-tree.test.js +317 -0
  72. package/dist/knowledge-tree/__tests__/knowledge-tree.test.js.map +1 -0
  73. package/dist/knowledge-tree/format.d.ts +17 -0
  74. package/dist/knowledge-tree/format.d.ts.map +1 -0
  75. package/dist/knowledge-tree/format.js +48 -0
  76. package/dist/knowledge-tree/format.js.map +1 -0
  77. package/dist/knowledge-tree/index.d.ts +33 -0
  78. package/dist/knowledge-tree/index.d.ts.map +1 -0
  79. package/dist/knowledge-tree/index.js +182 -0
  80. package/dist/knowledge-tree/index.js.map +1 -0
  81. package/dist/knowledge-tree/types.d.ts +37 -0
  82. package/dist/knowledge-tree/types.d.ts.map +1 -0
  83. package/dist/knowledge-tree/types.js +5 -0
  84. package/dist/knowledge-tree/types.js.map +1 -0
  85. package/dist/metadata/__tests__/metadata.test.d.ts +2 -0
  86. package/dist/metadata/__tests__/metadata.test.d.ts.map +1 -0
  87. package/dist/metadata/__tests__/metadata.test.js +196 -0
  88. package/dist/metadata/__tests__/metadata.test.js.map +1 -0
  89. package/dist/metadata/__tests__/search.test.d.ts +2 -0
  90. package/dist/metadata/__tests__/search.test.d.ts.map +1 -0
  91. package/dist/metadata/__tests__/search.test.js +227 -0
  92. package/dist/metadata/__tests__/search.test.js.map +1 -0
  93. package/dist/metadata/index.d.ts +29 -0
  94. package/dist/metadata/index.d.ts.map +1 -0
  95. package/dist/metadata/index.js +108 -0
  96. package/dist/metadata/index.js.map +1 -0
  97. package/dist/metadata/schema.d.ts +8 -0
  98. package/dist/metadata/schema.d.ts.map +1 -0
  99. package/dist/metadata/schema.js +31 -0
  100. package/dist/metadata/schema.js.map +1 -0
  101. package/dist/metadata/search.d.ts +27 -0
  102. package/dist/metadata/search.d.ts.map +1 -0
  103. package/dist/metadata/search.js +57 -0
  104. package/dist/metadata/search.js.map +1 -0
  105. package/dist/metadata/types.d.ts +17 -0
  106. package/dist/metadata/types.d.ts.map +1 -0
  107. package/dist/metadata/types.js +5 -0
  108. package/dist/metadata/types.js.map +1 -0
  109. package/dist/orchestrator/__tests__/orchestrator.test.d.ts +2 -0
  110. package/dist/orchestrator/__tests__/orchestrator.test.d.ts.map +1 -0
  111. package/dist/orchestrator/__tests__/orchestrator.test.js +354 -0
  112. package/dist/orchestrator/__tests__/orchestrator.test.js.map +1 -0
  113. package/dist/orchestrator/index.d.ts +23 -0
  114. package/dist/orchestrator/index.d.ts.map +1 -0
  115. package/dist/orchestrator/index.js +302 -0
  116. package/dist/orchestrator/index.js.map +1 -0
  117. package/dist/orchestrator/scheduler.d.ts +32 -0
  118. package/dist/orchestrator/scheduler.d.ts.map +1 -0
  119. package/dist/orchestrator/scheduler.js +102 -0
  120. package/dist/orchestrator/scheduler.js.map +1 -0
  121. package/dist/orchestrator/types.d.ts +90 -0
  122. package/dist/orchestrator/types.d.ts.map +1 -0
  123. package/dist/orchestrator/types.js +5 -0
  124. package/dist/orchestrator/types.js.map +1 -0
  125. package/dist/pipeline/__tests__/pipeline.test.d.ts +2 -0
  126. package/dist/pipeline/__tests__/pipeline.test.d.ts.map +1 -0
  127. package/dist/pipeline/__tests__/pipeline.test.js +320 -0
  128. package/dist/pipeline/__tests__/pipeline.test.js.map +1 -0
  129. package/dist/pipeline/index.d.ts +23 -0
  130. package/dist/pipeline/index.d.ts.map +1 -0
  131. package/dist/pipeline/index.js +212 -0
  132. package/dist/pipeline/index.js.map +1 -0
  133. package/dist/pipeline/types.d.ts +41 -0
  134. package/dist/pipeline/types.d.ts.map +1 -0
  135. package/dist/pipeline/types.js +5 -0
  136. package/dist/pipeline/types.js.map +1 -0
  137. package/dist/providers/__tests__/providers.test.d.ts +2 -0
  138. package/dist/providers/__tests__/providers.test.d.ts.map +1 -0
  139. package/dist/providers/__tests__/providers.test.js +195 -0
  140. package/dist/providers/__tests__/providers.test.js.map +1 -0
  141. package/dist/providers/claude-model.d.ts +17 -0
  142. package/dist/providers/claude-model.d.ts.map +1 -0
  143. package/dist/providers/claude-model.js +119 -0
  144. package/dist/providers/claude-model.js.map +1 -0
  145. package/dist/providers/index.d.ts +22 -0
  146. package/dist/providers/index.d.ts.map +1 -0
  147. package/dist/providers/index.js +38 -0
  148. package/dist/providers/index.js.map +1 -0
  149. package/dist/providers/openai-search.d.ts +14 -0
  150. package/dist/providers/openai-search.d.ts.map +1 -0
  151. package/dist/providers/openai-search.js +97 -0
  152. package/dist/providers/openai-search.js.map +1 -0
  153. package/dist/providers/types.d.ts +42 -0
  154. package/dist/providers/types.d.ts.map +1 -0
  155. package/dist/providers/types.js +5 -0
  156. package/dist/providers/types.js.map +1 -0
  157. package/dist/types.d.ts +122 -0
  158. package/dist/types.d.ts.map +1 -0
  159. package/dist/types.js +5 -0
  160. package/dist/types.js.map +1 -0
  161. package/dist/vetter/__tests__/vetter.test.d.ts +2 -0
  162. package/dist/vetter/__tests__/vetter.test.d.ts.map +1 -0
  163. package/dist/vetter/__tests__/vetter.test.js +224 -0
  164. package/dist/vetter/__tests__/vetter.test.js.map +1 -0
  165. package/dist/vetter/index.d.ts +23 -0
  166. package/dist/vetter/index.d.ts.map +1 -0
  167. package/dist/vetter/index.js +177 -0
  168. package/dist/vetter/index.js.map +1 -0
  169. package/dist/vetter/resource-tracker.d.ts +49 -0
  170. package/dist/vetter/resource-tracker.d.ts.map +1 -0
  171. package/dist/vetter/resource-tracker.js +183 -0
  172. package/dist/vetter/resource-tracker.js.map +1 -0
  173. package/dist/vetter/types.d.ts +44 -0
  174. package/dist/vetter/types.d.ts.map +1 -0
  175. package/dist/vetter/types.js +5 -0
  176. package/dist/vetter/types.js.map +1 -0
  177. package/package.json +72 -0
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Resource Tracker — SQLite-backed usage tracking to prevent over-reliance
3
+ * on single sources and promote source diversity.
4
+ */
5
+ import Database from "better-sqlite3";
6
+ import type { ResourceUsage, DomainStats } from "./types.js";
7
+ export declare const CREATE_RESOURCE_USAGE = "\nCREATE TABLE IF NOT EXISTS resource_usage (\n url TEXT PRIMARY KEY,\n domain TEXT NOT NULL,\n first_used_at TEXT NOT NULL,\n last_used_at TEXT NOT NULL,\n use_count INTEGER NOT NULL DEFAULT 1,\n quality_scores TEXT NOT NULL DEFAULT '[]'\n);\n";
8
+ /** Initialise (or open) the resource tracker SQLite database with WAL journaling. */
9
+ export declare function initResourceTracker(dbPath: string): Database.Database;
10
+ /**
11
+ * Initialise the resource tracker using an existing database instance.
12
+ * Creates the resource_usage table if it doesn't exist.
13
+ */
14
+ export declare function initResourceTrackerWithDb(existingDb: Database.Database): void;
15
+ /** Close the database connection. */
16
+ export declare function closeResourceTracker(): void;
17
+ /** Return the current database instance (mainly for testing). */
18
+ export declare function getTrackerDb(): Database.Database | null;
19
+ /**
20
+ * Record or update resource usage. If the URL exists, increments use_count
21
+ * and appends the quality score.
22
+ */
23
+ export declare function trackResourceUsage(url: string, qualityScore: number): void;
24
+ /**
25
+ * Check if a resource URL is over-relied upon.
26
+ *
27
+ * @param url - The resource URL to check.
28
+ * @param maxUses - Maximum acceptable uses before flagging (default 5).
29
+ * @returns true if the resource has been used more than maxUses times.
30
+ */
31
+ export declare function isOverRelied(url: string, maxUses?: number): boolean;
32
+ /**
33
+ * Get a single resource's usage record.
34
+ */
35
+ export declare function getResourceUsage(url: string): ResourceUsage | undefined;
36
+ /**
37
+ * Get aggregate usage statistics for a domain.
38
+ */
39
+ export declare function getDomainUsage(domain: string): DomainStats | undefined;
40
+ /**
41
+ * Suggest domains that haven't been used (or are underused) from a list of
42
+ * known domains, promoting source diversity.
43
+ *
44
+ * @param knownDomains - Domains to check against existing usage.
45
+ * @param limit - Maximum number of suggestions to return (default 5).
46
+ * @returns Domains sorted by usage (least used first), up to `limit`.
47
+ */
48
+ export declare function getUnderexploredDomains(knownDomains: string[], limit?: number): string[];
49
+ //# sourceMappingURL=resource-tracker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource-tracker.d.ts","sourceRoot":"","sources":["../../src/vetter/resource-tracker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAM7D,eAAO,MAAM,qBAAqB,+SASjC,CAAC;AAQF,qFAAqF;AACrF,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAKrE;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAG7E;AAED,qCAAqC;AACrC,wBAAgB,oBAAoB,IAAI,IAAI,CAK3C;AAED,iEAAiE;AACjE,wBAAgB,YAAY,IAAI,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAEvD;AAuBD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAwB1E;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,SAAI,GAAG,OAAO,CAQ9D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAYvE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAkCtE;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,YAAY,EAAE,MAAM,EAAE,EAAE,KAAK,SAAI,GAAG,MAAM,EAAE,CAenF"}
@@ -0,0 +1,183 @@
1
+ /**
2
+ * Resource Tracker — SQLite-backed usage tracking to prevent over-reliance
3
+ * on single sources and promote source diversity.
4
+ */
5
+ import Database from "better-sqlite3";
6
+ // ---------------------------------------------------------------------------
7
+ // Schema
8
+ // ---------------------------------------------------------------------------
9
+ export const CREATE_RESOURCE_USAGE = `
10
+ CREATE TABLE IF NOT EXISTS resource_usage (
11
+ url TEXT PRIMARY KEY,
12
+ domain TEXT NOT NULL,
13
+ first_used_at TEXT NOT NULL,
14
+ last_used_at TEXT NOT NULL,
15
+ use_count INTEGER NOT NULL DEFAULT 1,
16
+ quality_scores TEXT NOT NULL DEFAULT '[]'
17
+ );
18
+ `;
19
+ // ---------------------------------------------------------------------------
20
+ // Database lifecycle
21
+ // ---------------------------------------------------------------------------
22
+ let db = null;
23
+ /** Initialise (or open) the resource tracker SQLite database with WAL journaling. */
24
+ export function initResourceTracker(dbPath) {
25
+ db = new Database(dbPath);
26
+ db.pragma("journal_mode = WAL");
27
+ db.exec(CREATE_RESOURCE_USAGE);
28
+ return db;
29
+ }
30
+ /**
31
+ * Initialise the resource tracker using an existing database instance.
32
+ * Creates the resource_usage table if it doesn't exist.
33
+ */
34
+ export function initResourceTrackerWithDb(existingDb) {
35
+ db = existingDb;
36
+ db.exec(CREATE_RESOURCE_USAGE);
37
+ }
38
+ /** Close the database connection. */
39
+ export function closeResourceTracker() {
40
+ if (db) {
41
+ db.close();
42
+ db = null;
43
+ }
44
+ }
45
+ /** Return the current database instance (mainly for testing). */
46
+ export function getTrackerDb() {
47
+ return db;
48
+ }
49
+ // ---------------------------------------------------------------------------
50
+ // Helpers
51
+ // ---------------------------------------------------------------------------
52
+ function extractDomain(url) {
53
+ try {
54
+ return new URL(url).hostname.replace(/^www\./, "");
55
+ }
56
+ catch {
57
+ return "unknown";
58
+ }
59
+ }
60
+ function requireDb() {
61
+ if (!db)
62
+ throw new Error("Resource tracker DB not initialised — call initResourceTracker first");
63
+ return db;
64
+ }
65
+ // ---------------------------------------------------------------------------
66
+ // Core operations
67
+ // ---------------------------------------------------------------------------
68
+ /**
69
+ * Record or update resource usage. If the URL exists, increments use_count
70
+ * and appends the quality score.
71
+ */
72
+ export function trackResourceUsage(url, qualityScore) {
73
+ const d = requireDb();
74
+ const now = new Date().toISOString();
75
+ const domain = extractDomain(url);
76
+ const existing = d
77
+ .prepare("SELECT quality_scores FROM resource_usage WHERE url = ?")
78
+ .get(url);
79
+ if (existing) {
80
+ const scores = JSON.parse(existing.quality_scores);
81
+ scores.push(qualityScore);
82
+ d.prepare(`
83
+ UPDATE resource_usage
84
+ SET last_used_at = ?, use_count = use_count + 1, quality_scores = ?
85
+ WHERE url = ?
86
+ `).run(now, JSON.stringify(scores), url);
87
+ }
88
+ else {
89
+ d.prepare(`
90
+ INSERT INTO resource_usage (url, domain, first_used_at, last_used_at, use_count, quality_scores)
91
+ VALUES (?, ?, ?, ?, 1, ?)
92
+ `).run(url, domain, now, now, JSON.stringify([qualityScore]));
93
+ }
94
+ }
95
+ /**
96
+ * Check if a resource URL is over-relied upon.
97
+ *
98
+ * @param url - The resource URL to check.
99
+ * @param maxUses - Maximum acceptable uses before flagging (default 5).
100
+ * @returns true if the resource has been used more than maxUses times.
101
+ */
102
+ export function isOverRelied(url, maxUses = 5) {
103
+ const d = requireDb();
104
+ const row = d
105
+ .prepare("SELECT use_count FROM resource_usage WHERE url = ?")
106
+ .get(url);
107
+ if (!row)
108
+ return false;
109
+ return row.use_count > maxUses;
110
+ }
111
+ /**
112
+ * Get a single resource's usage record.
113
+ */
114
+ export function getResourceUsage(url) {
115
+ const d = requireDb();
116
+ const row = d
117
+ .prepare("SELECT * FROM resource_usage WHERE url = ?")
118
+ .get(url);
119
+ if (!row)
120
+ return undefined;
121
+ return {
122
+ ...row,
123
+ quality_scores: JSON.parse(row.quality_scores),
124
+ };
125
+ }
126
+ /**
127
+ * Get aggregate usage statistics for a domain.
128
+ */
129
+ export function getDomainUsage(domain) {
130
+ const d = requireDb();
131
+ const row = d
132
+ .prepare(`
133
+ SELECT
134
+ domain,
135
+ SUM(use_count) as total_uses,
136
+ COUNT(*) as unique_urls,
137
+ last_used_at
138
+ FROM resource_usage
139
+ WHERE domain = ?
140
+ GROUP BY domain
141
+ `)
142
+ .get(domain);
143
+ if (!row)
144
+ return undefined;
145
+ // Compute average quality from all quality_scores for this domain
146
+ const allRows = d
147
+ .prepare("SELECT quality_scores FROM resource_usage WHERE domain = ?")
148
+ .all(domain);
149
+ const allScores = allRows.flatMap((r) => JSON.parse(r.quality_scores));
150
+ const avgQuality = allScores.length > 0
151
+ ? allScores.reduce((a, b) => a + b, 0) / allScores.length
152
+ : 0;
153
+ return {
154
+ domain: row.domain,
155
+ total_uses: row.total_uses,
156
+ unique_urls: row.unique_urls,
157
+ avg_quality: Math.round(avgQuality * 1000) / 1000,
158
+ last_used_at: row.last_used_at,
159
+ };
160
+ }
161
+ /**
162
+ * Suggest domains that haven't been used (or are underused) from a list of
163
+ * known domains, promoting source diversity.
164
+ *
165
+ * @param knownDomains - Domains to check against existing usage.
166
+ * @param limit - Maximum number of suggestions to return (default 5).
167
+ * @returns Domains sorted by usage (least used first), up to `limit`.
168
+ */
169
+ export function getUnderexploredDomains(knownDomains, limit = 5) {
170
+ const d = requireDb();
171
+ const domainUsage = new Map();
172
+ for (const domain of knownDomains) {
173
+ const row = d
174
+ .prepare("SELECT SUM(use_count) as total FROM resource_usage WHERE domain = ?")
175
+ .get(domain);
176
+ domainUsage.set(domain, row?.total ?? 0);
177
+ }
178
+ return [...domainUsage.entries()]
179
+ .sort((a, b) => a[1] - b[1])
180
+ .slice(0, limit)
181
+ .map(([domain]) => domain);
182
+ }
183
+ //# sourceMappingURL=resource-tracker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource-tracker.js","sourceRoot":"","sources":["../../src/vetter/resource-tracker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Type definitions for the resource vetter and usage tracker.
3
+ */
4
+ /** A single quality signal detected during vetting. */
5
+ export interface QualitySignal {
6
+ signal: string;
7
+ score: number;
8
+ weight: number;
9
+ }
10
+ /** Recommendation produced by the vetter. */
11
+ export type VetRecommendation = "accept" | "review" | "reject";
12
+ /** Result of vetting a single resource. */
13
+ export interface VetResult {
14
+ url: string;
15
+ qualityScore: number;
16
+ signals: QualitySignal[];
17
+ recommendation: VetRecommendation;
18
+ reason: string;
19
+ }
20
+ /** Configuration for the resource vetter. */
21
+ export interface VetConfig {
22
+ /** Quality threshold — resources below this score are rejected (default 0.5). */
23
+ qualityThreshold?: number;
24
+ /** Upper threshold — resources at or above this are accepted (default 0.75). */
25
+ acceptThreshold?: number;
26
+ }
27
+ /** A row in the resource_usage table. */
28
+ export interface ResourceUsage {
29
+ url: string;
30
+ domain: string;
31
+ first_used_at: string;
32
+ last_used_at: string;
33
+ use_count: number;
34
+ quality_scores: number[];
35
+ }
36
+ /** Aggregate domain usage statistics. */
37
+ export interface DomainStats {
38
+ domain: string;
39
+ total_uses: number;
40
+ unique_urls: number;
41
+ avg_quality: number;
42
+ last_used_at: string;
43
+ }
44
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/vetter/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,uDAAuD;AACvD,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,6CAA6C;AAC7C,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE/D,2CAA2C;AAC3C,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,cAAc,EAAE,iBAAiB,CAAC;IAClC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,6CAA6C;AAC7C,MAAM,WAAW,SAAS;IACxB,iFAAiF;IACjF,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gFAAgF;IAChF,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAMD,yCAAyC;AACzC,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,yCAAyC;AACzC,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Type definitions for the resource vetter and usage tracker.
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/vetter/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
package/package.json ADDED
@@ -0,0 +1,72 @@
1
+ {
2
+ "name": "@indigoai-us/cq",
3
+ "version": "0.0.1",
4
+ "publishConfig": {
5
+ "access": "public"
6
+ },
7
+ "type": "module",
8
+ "main": "./dist/index.js",
9
+ "types": "./dist/index.d.ts",
10
+ "exports": {
11
+ ".": {
12
+ "import": "./dist/index.js",
13
+ "types": "./dist/index.d.ts"
14
+ },
15
+ "./knowledge": {
16
+ "import": "./dist/knowledge-tree/index.js",
17
+ "types": "./dist/knowledge-tree/index.d.ts"
18
+ },
19
+ "./metadata": {
20
+ "import": "./dist/metadata/index.js",
21
+ "types": "./dist/metadata/index.d.ts"
22
+ },
23
+ "./curiosity": {
24
+ "import": "./dist/curiosity/index.js",
25
+ "types": "./dist/curiosity/index.d.ts"
26
+ },
27
+ "./confidence": {
28
+ "import": "./dist/confidence/index.js",
29
+ "types": "./dist/confidence/index.d.ts"
30
+ },
31
+ "./providers": {
32
+ "import": "./dist/providers/index.js",
33
+ "types": "./dist/providers/index.d.ts"
34
+ },
35
+ "./pipeline": {
36
+ "import": "./dist/pipeline/index.js",
37
+ "types": "./dist/pipeline/index.d.ts"
38
+ },
39
+ "./vetter": {
40
+ "import": "./dist/vetter/index.js",
41
+ "types": "./dist/vetter/index.d.ts"
42
+ },
43
+ "./budget": {
44
+ "import": "./dist/budget/index.js",
45
+ "types": "./dist/budget/index.d.ts"
46
+ },
47
+ "./orchestrator": {
48
+ "import": "./dist/orchestrator/index.js",
49
+ "types": "./dist/orchestrator/index.d.ts"
50
+ },
51
+ "./scheduler": {
52
+ "import": "./dist/orchestrator/scheduler.js",
53
+ "types": "./dist/orchestrator/scheduler.d.ts"
54
+ }
55
+ },
56
+ "files": [
57
+ "dist"
58
+ ],
59
+ "scripts": {
60
+ "build": "tsc",
61
+ "test": "vitest run"
62
+ },
63
+ "dependencies": {
64
+ "@anthropic-ai/sdk": "^0.80.0",
65
+ "better-sqlite3": "^12.8.0",
66
+ "openai": "^6.32.0",
67
+ "yaml": "^2.8.2"
68
+ },
69
+ "devDependencies": {
70
+ "@types/better-sqlite3": "^7.6.13"
71
+ }
72
+ }