@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.
- package/dist/__tests__/integration.test.d.ts +8 -0
- package/dist/__tests__/integration.test.d.ts.map +1 -0
- package/dist/__tests__/integration.test.js +233 -0
- package/dist/__tests__/integration.test.js.map +1 -0
- package/dist/budget/__tests__/budget.test.d.ts +2 -0
- package/dist/budget/__tests__/budget.test.d.ts.map +1 -0
- package/dist/budget/__tests__/budget.test.js +238 -0
- package/dist/budget/__tests__/budget.test.js.map +1 -0
- package/dist/budget/__tests__/token-tracker.test.d.ts +2 -0
- package/dist/budget/__tests__/token-tracker.test.d.ts.map +1 -0
- package/dist/budget/__tests__/token-tracker.test.js +292 -0
- package/dist/budget/__tests__/token-tracker.test.js.map +1 -0
- package/dist/budget/index.d.ts +38 -0
- package/dist/budget/index.d.ts.map +1 -0
- package/dist/budget/index.js +192 -0
- package/dist/budget/index.js.map +1 -0
- package/dist/budget/token-tracker.d.ts +62 -0
- package/dist/budget/token-tracker.d.ts.map +1 -0
- package/dist/budget/token-tracker.js +152 -0
- package/dist/budget/token-tracker.js.map +1 -0
- package/dist/budget/types.d.ts +41 -0
- package/dist/budget/types.d.ts.map +1 -0
- package/dist/budget/types.js +5 -0
- package/dist/budget/types.js.map +1 -0
- package/dist/confidence/__tests__/confidence.test.d.ts +2 -0
- package/dist/confidence/__tests__/confidence.test.d.ts.map +1 -0
- package/dist/confidence/__tests__/confidence.test.js +336 -0
- package/dist/confidence/__tests__/confidence.test.js.map +1 -0
- package/dist/confidence/erosion.d.ts +33 -0
- package/dist/confidence/erosion.d.ts.map +1 -0
- package/dist/confidence/erosion.js +42 -0
- package/dist/confidence/erosion.js.map +1 -0
- package/dist/confidence/index.d.ts +42 -0
- package/dist/confidence/index.d.ts.map +1 -0
- package/dist/confidence/index.js +168 -0
- package/dist/confidence/index.js.map +1 -0
- package/dist/confidence/types.d.ts +29 -0
- package/dist/confidence/types.d.ts.map +1 -0
- package/dist/confidence/types.js +5 -0
- package/dist/confidence/types.js.map +1 -0
- package/dist/curiosity/__tests__/curiosity.test.d.ts +2 -0
- package/dist/curiosity/__tests__/curiosity.test.d.ts.map +1 -0
- package/dist/curiosity/__tests__/curiosity.test.js +280 -0
- package/dist/curiosity/__tests__/curiosity.test.js.map +1 -0
- package/dist/curiosity/dedup.d.ts +29 -0
- package/dist/curiosity/dedup.d.ts.map +1 -0
- package/dist/curiosity/dedup.js +64 -0
- package/dist/curiosity/dedup.js.map +1 -0
- package/dist/curiosity/index.d.ts +56 -0
- package/dist/curiosity/index.d.ts.map +1 -0
- package/dist/curiosity/index.js +163 -0
- package/dist/curiosity/index.js.map +1 -0
- package/dist/curiosity/types.d.ts +29 -0
- package/dist/curiosity/types.d.ts.map +1 -0
- package/dist/curiosity/types.js +5 -0
- package/dist/curiosity/types.js.map +1 -0
- package/dist/index.d.ts +25 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +16 -0
- package/dist/index.js.map +1 -0
- package/dist/index.test.d.ts +2 -0
- package/dist/index.test.d.ts.map +1 -0
- package/dist/index.test.js +7 -0
- package/dist/index.test.js.map +1 -0
- package/dist/init.d.ts +17 -0
- package/dist/init.d.ts.map +1 -0
- package/dist/init.js +153 -0
- package/dist/init.js.map +1 -0
- package/dist/knowledge-tree/__tests__/knowledge-tree.test.d.ts +2 -0
- package/dist/knowledge-tree/__tests__/knowledge-tree.test.d.ts.map +1 -0
- package/dist/knowledge-tree/__tests__/knowledge-tree.test.js +317 -0
- package/dist/knowledge-tree/__tests__/knowledge-tree.test.js.map +1 -0
- package/dist/knowledge-tree/format.d.ts +17 -0
- package/dist/knowledge-tree/format.d.ts.map +1 -0
- package/dist/knowledge-tree/format.js +48 -0
- package/dist/knowledge-tree/format.js.map +1 -0
- package/dist/knowledge-tree/index.d.ts +33 -0
- package/dist/knowledge-tree/index.d.ts.map +1 -0
- package/dist/knowledge-tree/index.js +182 -0
- package/dist/knowledge-tree/index.js.map +1 -0
- package/dist/knowledge-tree/types.d.ts +37 -0
- package/dist/knowledge-tree/types.d.ts.map +1 -0
- package/dist/knowledge-tree/types.js +5 -0
- package/dist/knowledge-tree/types.js.map +1 -0
- package/dist/metadata/__tests__/metadata.test.d.ts +2 -0
- package/dist/metadata/__tests__/metadata.test.d.ts.map +1 -0
- package/dist/metadata/__tests__/metadata.test.js +196 -0
- package/dist/metadata/__tests__/metadata.test.js.map +1 -0
- package/dist/metadata/__tests__/search.test.d.ts +2 -0
- package/dist/metadata/__tests__/search.test.d.ts.map +1 -0
- package/dist/metadata/__tests__/search.test.js +227 -0
- package/dist/metadata/__tests__/search.test.js.map +1 -0
- package/dist/metadata/index.d.ts +29 -0
- package/dist/metadata/index.d.ts.map +1 -0
- package/dist/metadata/index.js +108 -0
- package/dist/metadata/index.js.map +1 -0
- package/dist/metadata/schema.d.ts +8 -0
- package/dist/metadata/schema.d.ts.map +1 -0
- package/dist/metadata/schema.js +31 -0
- package/dist/metadata/schema.js.map +1 -0
- package/dist/metadata/search.d.ts +27 -0
- package/dist/metadata/search.d.ts.map +1 -0
- package/dist/metadata/search.js +57 -0
- package/dist/metadata/search.js.map +1 -0
- package/dist/metadata/types.d.ts +17 -0
- package/dist/metadata/types.d.ts.map +1 -0
- package/dist/metadata/types.js +5 -0
- package/dist/metadata/types.js.map +1 -0
- package/dist/orchestrator/__tests__/orchestrator.test.d.ts +2 -0
- package/dist/orchestrator/__tests__/orchestrator.test.d.ts.map +1 -0
- package/dist/orchestrator/__tests__/orchestrator.test.js +354 -0
- package/dist/orchestrator/__tests__/orchestrator.test.js.map +1 -0
- package/dist/orchestrator/index.d.ts +23 -0
- package/dist/orchestrator/index.d.ts.map +1 -0
- package/dist/orchestrator/index.js +302 -0
- package/dist/orchestrator/index.js.map +1 -0
- package/dist/orchestrator/scheduler.d.ts +32 -0
- package/dist/orchestrator/scheduler.d.ts.map +1 -0
- package/dist/orchestrator/scheduler.js +102 -0
- package/dist/orchestrator/scheduler.js.map +1 -0
- package/dist/orchestrator/types.d.ts +90 -0
- package/dist/orchestrator/types.d.ts.map +1 -0
- package/dist/orchestrator/types.js +5 -0
- package/dist/orchestrator/types.js.map +1 -0
- package/dist/pipeline/__tests__/pipeline.test.d.ts +2 -0
- package/dist/pipeline/__tests__/pipeline.test.d.ts.map +1 -0
- package/dist/pipeline/__tests__/pipeline.test.js +320 -0
- package/dist/pipeline/__tests__/pipeline.test.js.map +1 -0
- package/dist/pipeline/index.d.ts +23 -0
- package/dist/pipeline/index.d.ts.map +1 -0
- package/dist/pipeline/index.js +212 -0
- package/dist/pipeline/index.js.map +1 -0
- package/dist/pipeline/types.d.ts +41 -0
- package/dist/pipeline/types.d.ts.map +1 -0
- package/dist/pipeline/types.js +5 -0
- package/dist/pipeline/types.js.map +1 -0
- package/dist/providers/__tests__/providers.test.d.ts +2 -0
- package/dist/providers/__tests__/providers.test.d.ts.map +1 -0
- package/dist/providers/__tests__/providers.test.js +195 -0
- package/dist/providers/__tests__/providers.test.js.map +1 -0
- package/dist/providers/claude-model.d.ts +17 -0
- package/dist/providers/claude-model.d.ts.map +1 -0
- package/dist/providers/claude-model.js +119 -0
- package/dist/providers/claude-model.js.map +1 -0
- package/dist/providers/index.d.ts +22 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +38 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/openai-search.d.ts +14 -0
- package/dist/providers/openai-search.d.ts.map +1 -0
- package/dist/providers/openai-search.js +97 -0
- package/dist/providers/openai-search.js.map +1 -0
- package/dist/providers/types.d.ts +42 -0
- package/dist/providers/types.d.ts.map +1 -0
- package/dist/providers/types.js +5 -0
- package/dist/providers/types.js.map +1 -0
- package/dist/types.d.ts +122 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- package/dist/vetter/__tests__/vetter.test.d.ts +2 -0
- package/dist/vetter/__tests__/vetter.test.d.ts.map +1 -0
- package/dist/vetter/__tests__/vetter.test.js +224 -0
- package/dist/vetter/__tests__/vetter.test.js.map +1 -0
- package/dist/vetter/index.d.ts +23 -0
- package/dist/vetter/index.d.ts.map +1 -0
- package/dist/vetter/index.js +177 -0
- package/dist/vetter/index.js.map +1 -0
- package/dist/vetter/resource-tracker.d.ts +49 -0
- package/dist/vetter/resource-tracker.d.ts.map +1 -0
- package/dist/vetter/resource-tracker.js +183 -0
- package/dist/vetter/resource-tracker.js.map +1 -0
- package/dist/vetter/types.d.ts +44 -0
- package/dist/vetter/types.d.ts.map +1 -0
- package/dist/vetter/types.js +5 -0
- package/dist/vetter/types.js.map +1 -0
- package/package.json +72 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orchestrator.test.js","sourceRoot":"","sources":["../../../src/orchestrator/__tests__/orchestrator.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Research Orchestrator — two-phase execution engine.
|
|
3
|
+
*
|
|
4
|
+
* Phase 1 (Curiosity): processes pending curiosity queue items via runPipeline.
|
|
5
|
+
* Phase 2 (Proactive): refreshes low-confidence entries and fills thin categories.
|
|
6
|
+
*
|
|
7
|
+
* Tracks run history in the research_job_log table.
|
|
8
|
+
*/
|
|
9
|
+
import type { OrchestratorOptions, OrchestratorResult, RunLogEntry } from "./types.js";
|
|
10
|
+
export type { OrchestratorOptions, OrchestratorResult, CuriosityPhaseResult, ProactivePhaseResult, RunLogEntry, SchedulerConfig, } from "./types.js";
|
|
11
|
+
/** Create the research_job_log table if it doesn't exist. */
|
|
12
|
+
export declare function initJobLog(db: import("better-sqlite3").Database): void;
|
|
13
|
+
/** Return recent orchestrator runs, most recent first. */
|
|
14
|
+
export declare function getRecentRuns(db: import("better-sqlite3").Database, limit?: number): RunLogEntry[];
|
|
15
|
+
/**
|
|
16
|
+
* Run the full two-phase research orchestrator.
|
|
17
|
+
*
|
|
18
|
+
* Phase 1 processes pending curiosity items by priority.
|
|
19
|
+
* Phase 2 refreshes low-confidence entries and fills thin categories
|
|
20
|
+
* (only runs if remaining budget >= proactiveMinBudgetUsd).
|
|
21
|
+
*/
|
|
22
|
+
export declare function runOrchestrator(options: OrchestratorOptions): Promise<OrchestratorResult>;
|
|
23
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/orchestrator/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAQH,OAAO,KAAK,EACV,mBAAmB,EACnB,kBAAkB,EAGlB,WAAW,EACZ,MAAM,YAAY,CAAC;AAEpB,YAAY,EACV,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,WAAW,EACX,eAAe,GAChB,MAAM,YAAY,CAAC;AAwBpB,6DAA6D;AAC7D,wBAAgB,UAAU,CAAC,EAAE,EAAE,OAAO,gBAAgB,EAAE,QAAQ,GAAG,IAAI,CAEtE;AAMD,0DAA0D;AAC1D,wBAAgB,aAAa,CAC3B,EAAE,EAAE,OAAO,gBAAgB,EAAE,QAAQ,EACrC,KAAK,SAAK,GACT,WAAW,EAAE,CAOf;AAgOD;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,kBAAkB,CAAC,CAoE7B"}
|
|
@@ -0,0 +1,302 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Research Orchestrator — two-phase execution engine.
|
|
3
|
+
*
|
|
4
|
+
* Phase 1 (Curiosity): processes pending curiosity queue items via runPipeline.
|
|
5
|
+
* Phase 2 (Proactive): refreshes low-confidence entries and fills thin categories.
|
|
6
|
+
*
|
|
7
|
+
* Tracks run history in the research_job_log table.
|
|
8
|
+
*/
|
|
9
|
+
import { fetchPending, addCuriosity } from "../curiosity/index.js";
|
|
10
|
+
import { runPipeline } from "../pipeline/index.js";
|
|
11
|
+
import { checkBudget, charge as budgetCharge } from "../budget/index.js";
|
|
12
|
+
import { getRefreshCandidates } from "../confidence/index.js";
|
|
13
|
+
import { listCategories } from "../knowledge-tree/index.js";
|
|
14
|
+
// ---------------------------------------------------------------------------
|
|
15
|
+
// Schema
|
|
16
|
+
// ---------------------------------------------------------------------------
|
|
17
|
+
const CREATE_JOB_LOG = `
|
|
18
|
+
CREATE TABLE IF NOT EXISTS research_job_log (
|
|
19
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
20
|
+
run_date TEXT NOT NULL,
|
|
21
|
+
status TEXT NOT NULL,
|
|
22
|
+
phase1_processed INTEGER NOT NULL DEFAULT 0,
|
|
23
|
+
phase2_processed INTEGER NOT NULL DEFAULT 0,
|
|
24
|
+
total_cost_usd REAL NOT NULL DEFAULT 0,
|
|
25
|
+
duration_ms INTEGER NOT NULL DEFAULT 0,
|
|
26
|
+
error TEXT,
|
|
27
|
+
created_at TEXT NOT NULL
|
|
28
|
+
);
|
|
29
|
+
`;
|
|
30
|
+
// ---------------------------------------------------------------------------
|
|
31
|
+
// Initialisation
|
|
32
|
+
// ---------------------------------------------------------------------------
|
|
33
|
+
/** Create the research_job_log table if it doesn't exist. */
|
|
34
|
+
export function initJobLog(db) {
|
|
35
|
+
db.exec(CREATE_JOB_LOG);
|
|
36
|
+
}
|
|
37
|
+
// ---------------------------------------------------------------------------
|
|
38
|
+
// Run history
|
|
39
|
+
// ---------------------------------------------------------------------------
|
|
40
|
+
/** Return recent orchestrator runs, most recent first. */
|
|
41
|
+
export function getRecentRuns(db, limit = 10) {
|
|
42
|
+
initJobLog(db);
|
|
43
|
+
return db
|
|
44
|
+
.prepare("SELECT * FROM research_job_log ORDER BY created_at DESC LIMIT ?")
|
|
45
|
+
.all(limit);
|
|
46
|
+
}
|
|
47
|
+
/** Insert a run log entry. */
|
|
48
|
+
function logRun(db, result) {
|
|
49
|
+
initJobLog(db);
|
|
50
|
+
const phase2Processed = result.phases.proactive
|
|
51
|
+
? result.phases.proactive.refreshed + result.phases.proactive.thinCategoryFilled
|
|
52
|
+
: 0;
|
|
53
|
+
db.prepare(`
|
|
54
|
+
INSERT INTO research_job_log (run_date, status, phase1_processed, phase2_processed, total_cost_usd, duration_ms, error, created_at)
|
|
55
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?)
|
|
56
|
+
`).run(result.runDate, result.status, result.phases.curiosity.processed, phase2Processed, result.totalBudgetUsedUsd, result.totalDurationMs, result.error ?? null, new Date().toISOString());
|
|
57
|
+
}
|
|
58
|
+
// ---------------------------------------------------------------------------
|
|
59
|
+
// Phase 1: Curiosity
|
|
60
|
+
// ---------------------------------------------------------------------------
|
|
61
|
+
async function runCuriosityPhase(options) {
|
|
62
|
+
const maxItems = options.maxCuriosityItems ?? 10;
|
|
63
|
+
const items = fetchPending(maxItems);
|
|
64
|
+
const phase = {
|
|
65
|
+
processed: 0,
|
|
66
|
+
succeeded: 0,
|
|
67
|
+
failed: 0,
|
|
68
|
+
skipped: 0,
|
|
69
|
+
costUsd: 0,
|
|
70
|
+
};
|
|
71
|
+
for (const item of items) {
|
|
72
|
+
// Check budget before each item
|
|
73
|
+
const budget = checkBudget();
|
|
74
|
+
if (!budget.allowed) {
|
|
75
|
+
phase.skipped += items.length - phase.processed;
|
|
76
|
+
break;
|
|
77
|
+
}
|
|
78
|
+
let itemCost = 0;
|
|
79
|
+
const chargeTracker = (type, costUsd) => {
|
|
80
|
+
itemCost += costUsd;
|
|
81
|
+
budgetCharge(type, costUsd);
|
|
82
|
+
};
|
|
83
|
+
let result;
|
|
84
|
+
try {
|
|
85
|
+
result = await runPipeline(item.id, item.question, {
|
|
86
|
+
dataDir: options.dataDir,
|
|
87
|
+
searchProvider: options.searchProvider,
|
|
88
|
+
modelProvider: options.modelProvider,
|
|
89
|
+
checkBudget: () => {
|
|
90
|
+
const b = checkBudget();
|
|
91
|
+
return { allowed: b.allowed, remainingUsd: b.remainingUsd };
|
|
92
|
+
},
|
|
93
|
+
charge: chargeTracker,
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
catch {
|
|
97
|
+
phase.processed++;
|
|
98
|
+
phase.failed++;
|
|
99
|
+
continue;
|
|
100
|
+
}
|
|
101
|
+
phase.processed++;
|
|
102
|
+
phase.costUsd += itemCost;
|
|
103
|
+
if (result.success) {
|
|
104
|
+
if (result.action === "skipped_duplicate" || result.action === "skipped_budget") {
|
|
105
|
+
phase.skipped++;
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
phase.succeeded++;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
if (result.action === "skipped_budget") {
|
|
113
|
+
phase.skipped++;
|
|
114
|
+
// Budget exhausted — skip remaining
|
|
115
|
+
phase.skipped += items.length - phase.processed;
|
|
116
|
+
break;
|
|
117
|
+
}
|
|
118
|
+
phase.failed++;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
return phase;
|
|
122
|
+
}
|
|
123
|
+
// ---------------------------------------------------------------------------
|
|
124
|
+
// Phase 2: Proactive
|
|
125
|
+
// ---------------------------------------------------------------------------
|
|
126
|
+
async function runProactivePhase(options) {
|
|
127
|
+
const maxRefresh = options.maxRefreshItems ?? 5;
|
|
128
|
+
const thinThreshold = options.thinCategoryThreshold ?? 3;
|
|
129
|
+
const maxThinItems = options.maxThinCategoryItems ?? 3;
|
|
130
|
+
const phase = {
|
|
131
|
+
refreshed: 0,
|
|
132
|
+
thinCategoryFilled: 0,
|
|
133
|
+
costUsd: 0,
|
|
134
|
+
};
|
|
135
|
+
// --- Refresh low-confidence entries ---
|
|
136
|
+
const candidates = getRefreshCandidates(maxRefresh);
|
|
137
|
+
for (const candidate of candidates) {
|
|
138
|
+
const budget = checkBudget();
|
|
139
|
+
if (!budget.allowed)
|
|
140
|
+
break;
|
|
141
|
+
// Create a curiosity item to re-research this topic
|
|
142
|
+
const question = `Refresh: ${candidate.title} (current confidence: ${candidate.computed_confidence.toFixed(2)})`;
|
|
143
|
+
const curiosityItem = addCuriosity({
|
|
144
|
+
question,
|
|
145
|
+
context: `Refresh of ${candidate.category}/${candidate.slug} — confidence dropped to ${candidate.computed_confidence.toFixed(2)}`,
|
|
146
|
+
source: "system",
|
|
147
|
+
priority: 7,
|
|
148
|
+
});
|
|
149
|
+
if (!curiosityItem)
|
|
150
|
+
continue; // Dedup hit
|
|
151
|
+
let itemCost = 0;
|
|
152
|
+
const chargeTracker = (type, costUsd) => {
|
|
153
|
+
itemCost += costUsd;
|
|
154
|
+
budgetCharge(type, costUsd);
|
|
155
|
+
};
|
|
156
|
+
try {
|
|
157
|
+
const result = await runPipeline(curiosityItem.id, curiosityItem.question, {
|
|
158
|
+
dataDir: options.dataDir,
|
|
159
|
+
searchProvider: options.searchProvider,
|
|
160
|
+
modelProvider: options.modelProvider,
|
|
161
|
+
checkBudget: () => {
|
|
162
|
+
const b = checkBudget();
|
|
163
|
+
return { allowed: b.allowed, remainingUsd: b.remainingUsd };
|
|
164
|
+
},
|
|
165
|
+
charge: chargeTracker,
|
|
166
|
+
});
|
|
167
|
+
if (result.success) {
|
|
168
|
+
phase.refreshed++;
|
|
169
|
+
}
|
|
170
|
+
phase.costUsd += itemCost;
|
|
171
|
+
}
|
|
172
|
+
catch {
|
|
173
|
+
// Non-fatal — continue with next candidate
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
// --- Fill thin categories ---
|
|
177
|
+
let categories;
|
|
178
|
+
try {
|
|
179
|
+
categories = await listCategories(options.dataDir);
|
|
180
|
+
}
|
|
181
|
+
catch {
|
|
182
|
+
return phase;
|
|
183
|
+
}
|
|
184
|
+
const thinCategories = categories.filter((c) => c.entryCount < thinThreshold);
|
|
185
|
+
let thinFilled = 0;
|
|
186
|
+
for (const cat of thinCategories) {
|
|
187
|
+
if (thinFilled >= maxThinItems)
|
|
188
|
+
break;
|
|
189
|
+
const budget = checkBudget();
|
|
190
|
+
if (!budget.allowed)
|
|
191
|
+
break;
|
|
192
|
+
const question = `Expand knowledge about "${cat.name}" — currently only ${cat.entryCount} entries`;
|
|
193
|
+
const curiosityItem = addCuriosity({
|
|
194
|
+
question,
|
|
195
|
+
context: `Thin category fill: ${cat.name} has ${cat.entryCount} entries (threshold: ${thinThreshold})`,
|
|
196
|
+
source: "system",
|
|
197
|
+
priority: 4,
|
|
198
|
+
});
|
|
199
|
+
if (!curiosityItem)
|
|
200
|
+
continue;
|
|
201
|
+
let itemCost = 0;
|
|
202
|
+
const chargeTracker = (type, costUsd) => {
|
|
203
|
+
itemCost += costUsd;
|
|
204
|
+
budgetCharge(type, costUsd);
|
|
205
|
+
};
|
|
206
|
+
try {
|
|
207
|
+
const result = await runPipeline(curiosityItem.id, curiosityItem.question, {
|
|
208
|
+
dataDir: options.dataDir,
|
|
209
|
+
searchProvider: options.searchProvider,
|
|
210
|
+
modelProvider: options.modelProvider,
|
|
211
|
+
checkBudget: () => {
|
|
212
|
+
const b = checkBudget();
|
|
213
|
+
return { allowed: b.allowed, remainingUsd: b.remainingUsd };
|
|
214
|
+
},
|
|
215
|
+
charge: chargeTracker,
|
|
216
|
+
});
|
|
217
|
+
if (result.success) {
|
|
218
|
+
phase.thinCategoryFilled++;
|
|
219
|
+
thinFilled++;
|
|
220
|
+
}
|
|
221
|
+
phase.costUsd += itemCost;
|
|
222
|
+
}
|
|
223
|
+
catch {
|
|
224
|
+
// Non-fatal
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
return phase;
|
|
228
|
+
}
|
|
229
|
+
// ---------------------------------------------------------------------------
|
|
230
|
+
// Main orchestrator
|
|
231
|
+
// ---------------------------------------------------------------------------
|
|
232
|
+
/**
|
|
233
|
+
* Run the full two-phase research orchestrator.
|
|
234
|
+
*
|
|
235
|
+
* Phase 1 processes pending curiosity items by priority.
|
|
236
|
+
* Phase 2 refreshes low-confidence entries and fills thin categories
|
|
237
|
+
* (only runs if remaining budget >= proactiveMinBudgetUsd).
|
|
238
|
+
*/
|
|
239
|
+
export async function runOrchestrator(options) {
|
|
240
|
+
const startTime = Date.now();
|
|
241
|
+
const runDate = new Date().toISOString();
|
|
242
|
+
const proactiveMinBudget = options.proactiveMinBudgetUsd ?? 0.10;
|
|
243
|
+
// Ensure job log table exists
|
|
244
|
+
initJobLog(options.db);
|
|
245
|
+
let curiosityPhase;
|
|
246
|
+
let proactivePhase = null;
|
|
247
|
+
let status = "completed";
|
|
248
|
+
let error;
|
|
249
|
+
// --- Phase 1: Curiosity ---
|
|
250
|
+
try {
|
|
251
|
+
curiosityPhase = await runCuriosityPhase(options);
|
|
252
|
+
}
|
|
253
|
+
catch (err) {
|
|
254
|
+
const result = {
|
|
255
|
+
runDate,
|
|
256
|
+
status: "failed",
|
|
257
|
+
phases: {
|
|
258
|
+
curiosity: { processed: 0, succeeded: 0, failed: 0, skipped: 0, costUsd: 0 },
|
|
259
|
+
proactive: null,
|
|
260
|
+
},
|
|
261
|
+
totalDurationMs: Date.now() - startTime,
|
|
262
|
+
totalBudgetUsedUsd: 0,
|
|
263
|
+
error: `Phase 1 failed: ${err instanceof Error ? err.message : String(err)}`,
|
|
264
|
+
};
|
|
265
|
+
logRun(options.db, result);
|
|
266
|
+
return result;
|
|
267
|
+
}
|
|
268
|
+
// --- Phase 2: Proactive (if budget allows) ---
|
|
269
|
+
const budgetStatus = checkBudget();
|
|
270
|
+
if (budgetStatus.allowed && budgetStatus.remainingUsd >= proactiveMinBudget) {
|
|
271
|
+
try {
|
|
272
|
+
proactivePhase = await runProactivePhase(options);
|
|
273
|
+
}
|
|
274
|
+
catch (err) {
|
|
275
|
+
// Phase 2 failure is non-fatal — report as partial
|
|
276
|
+
status = "partial";
|
|
277
|
+
error = `Phase 2 failed: ${err instanceof Error ? err.message : String(err)}`;
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
// --- Determine overall status ---
|
|
281
|
+
if (curiosityPhase.failed > 0 && curiosityPhase.succeeded === 0) {
|
|
282
|
+
status = "failed";
|
|
283
|
+
}
|
|
284
|
+
else if (curiosityPhase.failed > 0) {
|
|
285
|
+
status = "partial";
|
|
286
|
+
}
|
|
287
|
+
const totalCost = curiosityPhase.costUsd + (proactivePhase?.costUsd ?? 0);
|
|
288
|
+
const result = {
|
|
289
|
+
runDate,
|
|
290
|
+
status,
|
|
291
|
+
phases: {
|
|
292
|
+
curiosity: curiosityPhase,
|
|
293
|
+
proactive: proactivePhase,
|
|
294
|
+
},
|
|
295
|
+
totalDurationMs: Date.now() - startTime,
|
|
296
|
+
totalBudgetUsedUsd: totalCost,
|
|
297
|
+
error,
|
|
298
|
+
};
|
|
299
|
+
logRun(options.db, result);
|
|
300
|
+
return result;
|
|
301
|
+
}
|
|
302
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/orchestrator/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Research Scheduler — cron-based automatic orchestrator execution.
|
|
3
|
+
*
|
|
4
|
+
* Uses a simple 3-field cron pattern (minute hour dayOfMonth) with
|
|
5
|
+
* setInterval to check every 60 seconds. No external cron library needed.
|
|
6
|
+
*/
|
|
7
|
+
import type { SchedulerConfig } from "./types.js";
|
|
8
|
+
/**
|
|
9
|
+
* Parse and match a simplified cron expression against a Date.
|
|
10
|
+
*
|
|
11
|
+
* Format: "minute hour dayOfMonth" (3 fields, space-separated).
|
|
12
|
+
* Each field supports: exact number, "*" (any), comma-separated values.
|
|
13
|
+
*
|
|
14
|
+
* Examples:
|
|
15
|
+
* "0 3 *" → 3:00 AM every day
|
|
16
|
+
* "30 * *" → every hour at :30
|
|
17
|
+
* "0 6,18 *" → 6 AM and 6 PM daily
|
|
18
|
+
* "0 0 1" → midnight on the 1st of each month
|
|
19
|
+
*/
|
|
20
|
+
export declare function matchesCron(cron: string, date: Date): boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Start the scheduler. Checks every 60 seconds if the current time
|
|
23
|
+
* matches the cron expression, and if so, runs the orchestrator.
|
|
24
|
+
*
|
|
25
|
+
* Prevents double-runs within the same minute.
|
|
26
|
+
*/
|
|
27
|
+
export declare function startScheduler(config: SchedulerConfig): void;
|
|
28
|
+
/** Stop the scheduler. */
|
|
29
|
+
export declare function stopScheduler(): void;
|
|
30
|
+
/** Check whether the scheduler is currently running. */
|
|
31
|
+
export declare function isSchedulerRunning(): boolean;
|
|
32
|
+
//# sourceMappingURL=scheduler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../../src/orchestrator/scheduler.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAsB,MAAM,YAAY,CAAC;AActE;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO,CAgB7D;AAcD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI,CAkC5D;AAED,0BAA0B;AAC1B,wBAAgB,aAAa,IAAI,IAAI,CAOpC;AAED,wDAAwD;AACxD,wBAAgB,kBAAkB,IAAI,OAAO,CAE5C"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Research Scheduler — cron-based automatic orchestrator execution.
|
|
3
|
+
*
|
|
4
|
+
* Uses a simple 3-field cron pattern (minute hour dayOfMonth) with
|
|
5
|
+
* setInterval to check every 60 seconds. No external cron library needed.
|
|
6
|
+
*/
|
|
7
|
+
import { runOrchestrator } from "./index.js";
|
|
8
|
+
// ---------------------------------------------------------------------------
|
|
9
|
+
// State
|
|
10
|
+
// ---------------------------------------------------------------------------
|
|
11
|
+
let intervalId = null;
|
|
12
|
+
let lastRunMinute = null;
|
|
13
|
+
let running = false;
|
|
14
|
+
// ---------------------------------------------------------------------------
|
|
15
|
+
// Cron matching
|
|
16
|
+
// ---------------------------------------------------------------------------
|
|
17
|
+
/**
|
|
18
|
+
* Parse and match a simplified cron expression against a Date.
|
|
19
|
+
*
|
|
20
|
+
* Format: "minute hour dayOfMonth" (3 fields, space-separated).
|
|
21
|
+
* Each field supports: exact number, "*" (any), comma-separated values.
|
|
22
|
+
*
|
|
23
|
+
* Examples:
|
|
24
|
+
* "0 3 *" → 3:00 AM every day
|
|
25
|
+
* "30 * *" → every hour at :30
|
|
26
|
+
* "0 6,18 *" → 6 AM and 6 PM daily
|
|
27
|
+
* "0 0 1" → midnight on the 1st of each month
|
|
28
|
+
*/
|
|
29
|
+
export function matchesCron(cron, date) {
|
|
30
|
+
const parts = cron.trim().split(/\s+/);
|
|
31
|
+
if (parts.length !== 3) {
|
|
32
|
+
throw new Error(`Invalid cron expression "${cron}" — expected 3 fields (minute hour dayOfMonth)`);
|
|
33
|
+
}
|
|
34
|
+
const [minuteField, hourField, dayField] = parts;
|
|
35
|
+
const minute = date.getMinutes();
|
|
36
|
+
const hour = date.getHours();
|
|
37
|
+
const day = date.getDate();
|
|
38
|
+
return (matchesField(minuteField, minute) &&
|
|
39
|
+
matchesField(hourField, hour) &&
|
|
40
|
+
matchesField(dayField, day));
|
|
41
|
+
}
|
|
42
|
+
/** Check if a single cron field matches a value. Supports "*" and comma-separated numbers. */
|
|
43
|
+
function matchesField(field, value) {
|
|
44
|
+
if (field === "*")
|
|
45
|
+
return true;
|
|
46
|
+
const parts = field.split(",");
|
|
47
|
+
return parts.some((p) => parseInt(p, 10) === value);
|
|
48
|
+
}
|
|
49
|
+
// ---------------------------------------------------------------------------
|
|
50
|
+
// Scheduler
|
|
51
|
+
// ---------------------------------------------------------------------------
|
|
52
|
+
/**
|
|
53
|
+
* Start the scheduler. Checks every 60 seconds if the current time
|
|
54
|
+
* matches the cron expression, and if so, runs the orchestrator.
|
|
55
|
+
*
|
|
56
|
+
* Prevents double-runs within the same minute.
|
|
57
|
+
*/
|
|
58
|
+
export function startScheduler(config) {
|
|
59
|
+
if (intervalId !== null) {
|
|
60
|
+
throw new Error("Scheduler is already running — call stopScheduler() first");
|
|
61
|
+
}
|
|
62
|
+
const cronExpr = config.cron ?? "0 3 *";
|
|
63
|
+
lastRunMinute = null;
|
|
64
|
+
running = false;
|
|
65
|
+
intervalId = setInterval(() => {
|
|
66
|
+
const now = new Date();
|
|
67
|
+
// Prevent double-runs within the same minute
|
|
68
|
+
const minuteKey = `${now.getFullYear()}-${now.getMonth()}-${now.getDate()}-${now.getHours()}-${now.getMinutes()}`;
|
|
69
|
+
if (minuteKey === lastRunMinute)
|
|
70
|
+
return;
|
|
71
|
+
if (!matchesCron(cronExpr, now))
|
|
72
|
+
return;
|
|
73
|
+
// Prevent overlapping runs
|
|
74
|
+
if (running)
|
|
75
|
+
return;
|
|
76
|
+
lastRunMinute = minuteKey;
|
|
77
|
+
running = true;
|
|
78
|
+
runOrchestrator(config.orchestratorOptions)
|
|
79
|
+
.then((result) => {
|
|
80
|
+
running = false;
|
|
81
|
+
config.onComplete?.(result);
|
|
82
|
+
})
|
|
83
|
+
.catch((err) => {
|
|
84
|
+
running = false;
|
|
85
|
+
config.onError?.(err instanceof Error ? err : new Error(String(err)));
|
|
86
|
+
});
|
|
87
|
+
}, 60_000);
|
|
88
|
+
}
|
|
89
|
+
/** Stop the scheduler. */
|
|
90
|
+
export function stopScheduler() {
|
|
91
|
+
if (intervalId !== null) {
|
|
92
|
+
clearInterval(intervalId);
|
|
93
|
+
intervalId = null;
|
|
94
|
+
}
|
|
95
|
+
running = false;
|
|
96
|
+
lastRunMinute = null;
|
|
97
|
+
}
|
|
98
|
+
/** Check whether the scheduler is currently running. */
|
|
99
|
+
export function isSchedulerRunning() {
|
|
100
|
+
return intervalId !== null;
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=scheduler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../../src/orchestrator/scheduler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Orchestrator + Scheduler type definitions.
|
|
3
|
+
*/
|
|
4
|
+
import type { SearchProvider, ModelProvider } from "../providers/types.js";
|
|
5
|
+
import type Database from "better-sqlite3";
|
|
6
|
+
/** Options for runOrchestrator. */
|
|
7
|
+
export interface OrchestratorOptions {
|
|
8
|
+
/** better-sqlite3 Database instance (already initialised). */
|
|
9
|
+
db: Database.Database;
|
|
10
|
+
/** Root directory for the knowledge tree. */
|
|
11
|
+
dataDir: string;
|
|
12
|
+
/** Search provider instance. */
|
|
13
|
+
searchProvider: SearchProvider;
|
|
14
|
+
/** Model provider instance. */
|
|
15
|
+
modelProvider: ModelProvider;
|
|
16
|
+
/** Maximum curiosity items to process in Phase 1. Default 10. */
|
|
17
|
+
maxCuriosityItems?: number;
|
|
18
|
+
/** Maximum refresh candidates to process in Phase 2. Default 5. */
|
|
19
|
+
maxRefreshItems?: number;
|
|
20
|
+
/** Minimum budget (USD) required to enter Phase 2. Default 0.10. */
|
|
21
|
+
proactiveMinBudgetUsd?: number;
|
|
22
|
+
/** Minimum entries a category must have to not be "thin". Default 3. */
|
|
23
|
+
thinCategoryThreshold?: number;
|
|
24
|
+
/** Maximum thin-category items to generate in Phase 2. Default 3. */
|
|
25
|
+
maxThinCategoryItems?: number;
|
|
26
|
+
}
|
|
27
|
+
/** Phase 1 (curiosity) result details. */
|
|
28
|
+
export interface CuriosityPhaseResult {
|
|
29
|
+
/** Number of items processed. */
|
|
30
|
+
processed: number;
|
|
31
|
+
/** Number of items that succeeded. */
|
|
32
|
+
succeeded: number;
|
|
33
|
+
/** Number of items that failed. */
|
|
34
|
+
failed: number;
|
|
35
|
+
/** Number of items skipped (budget, duplicate, etc.). */
|
|
36
|
+
skipped: number;
|
|
37
|
+
/** Total cost in USD for this phase. */
|
|
38
|
+
costUsd: number;
|
|
39
|
+
}
|
|
40
|
+
/** Phase 2 (proactive) result details. */
|
|
41
|
+
export interface ProactivePhaseResult {
|
|
42
|
+
/** Number of refresh candidates processed. */
|
|
43
|
+
refreshed: number;
|
|
44
|
+
/** Number of thin-category items generated and processed. */
|
|
45
|
+
thinCategoryFilled: number;
|
|
46
|
+
/** Total cost in USD for this phase. */
|
|
47
|
+
costUsd: number;
|
|
48
|
+
}
|
|
49
|
+
/** Result returned by runOrchestrator. */
|
|
50
|
+
export interface OrchestratorResult {
|
|
51
|
+
/** ISO 8601 date string of the run. */
|
|
52
|
+
runDate: string;
|
|
53
|
+
/** Overall status: "completed" | "partial" | "failed". */
|
|
54
|
+
status: "completed" | "partial" | "failed";
|
|
55
|
+
/** Phase results. */
|
|
56
|
+
phases: {
|
|
57
|
+
curiosity: CuriosityPhaseResult;
|
|
58
|
+
proactive: ProactivePhaseResult | null;
|
|
59
|
+
};
|
|
60
|
+
/** Total wall-clock duration in milliseconds. */
|
|
61
|
+
totalDurationMs: number;
|
|
62
|
+
/** Total budget used across both phases in USD. */
|
|
63
|
+
totalBudgetUsedUsd: number;
|
|
64
|
+
/** Error message if status is "failed". */
|
|
65
|
+
error?: string;
|
|
66
|
+
}
|
|
67
|
+
/** A row from the research_job_log table. */
|
|
68
|
+
export interface RunLogEntry {
|
|
69
|
+
id: number;
|
|
70
|
+
run_date: string;
|
|
71
|
+
status: string;
|
|
72
|
+
phase1_processed: number;
|
|
73
|
+
phase2_processed: number;
|
|
74
|
+
total_cost_usd: number;
|
|
75
|
+
duration_ms: number;
|
|
76
|
+
error: string | null;
|
|
77
|
+
created_at: string;
|
|
78
|
+
}
|
|
79
|
+
/** Configuration for the cron scheduler. */
|
|
80
|
+
export interface SchedulerConfig {
|
|
81
|
+
/** Cron expression: "minute hour dayOfMonth" (simplified 3-field). Default "0 3 *" (3 AM daily). */
|
|
82
|
+
cron?: string;
|
|
83
|
+
/** Orchestrator options passed to each run. */
|
|
84
|
+
orchestratorOptions: OrchestratorOptions;
|
|
85
|
+
/** Called when a scheduled run completes. */
|
|
86
|
+
onComplete?: (result: OrchestratorResult) => void;
|
|
87
|
+
/** Called when a scheduled run fails with an unhandled error. */
|
|
88
|
+
onError?: (error: Error) => void;
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/orchestrator/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3E,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAM3C,mCAAmC;AACnC,MAAM,WAAW,mBAAmB;IAClC,8DAA8D;IAC9D,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC;IAEtB,6CAA6C;IAC7C,OAAO,EAAE,MAAM,CAAC;IAEhB,gCAAgC;IAChC,cAAc,EAAE,cAAc,CAAC;IAE/B,+BAA+B;IAC/B,aAAa,EAAE,aAAa,CAAC;IAE7B,iEAAiE;IACjE,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B,mEAAmE;IACnE,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,oEAAoE;IACpE,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B,wEAAwE;IACxE,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B,qEAAqE;IACrE,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAMD,0CAA0C;AAC1C,MAAM,WAAW,oBAAoB;IACnC,iCAAiC;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,sCAAsC;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,mCAAmC;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,yDAAyD;IACzD,OAAO,EAAE,MAAM,CAAC;IAChB,wCAAwC;IACxC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,0CAA0C;AAC1C,MAAM,WAAW,oBAAoB;IACnC,8CAA8C;IAC9C,SAAS,EAAE,MAAM,CAAC;IAClB,6DAA6D;IAC7D,kBAAkB,EAAE,MAAM,CAAC;IAC3B,wCAAwC;IACxC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,0CAA0C;AAC1C,MAAM,WAAW,kBAAkB;IACjC,uCAAuC;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,0DAA0D;IAC1D,MAAM,EAAE,WAAW,GAAG,SAAS,GAAG,QAAQ,CAAC;IAC3C,qBAAqB;IACrB,MAAM,EAAE;QACN,SAAS,EAAE,oBAAoB,CAAC;QAChC,SAAS,EAAE,oBAAoB,GAAG,IAAI,CAAC;KACxC,CAAC;IACF,iDAAiD;IACjD,eAAe,EAAE,MAAM,CAAC;IACxB,mDAAmD;IACnD,kBAAkB,EAAE,MAAM,CAAC;IAC3B,2CAA2C;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAMD,6CAA6C;AAC7C,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB;AAMD,4CAA4C;AAC5C,MAAM,WAAW,eAAe;IAC9B,oGAAoG;IACpG,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,+CAA+C;IAC/C,mBAAmB,EAAE,mBAAmB,CAAC;IAEzC,6CAA6C;IAC7C,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAElD,iEAAiE;IACjE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAClC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/orchestrator/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipeline.test.d.ts","sourceRoot":"","sources":["../../../src/pipeline/__tests__/pipeline.test.ts"],"names":[],"mappings":""}
|