aura-code 0.3.0
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/LICENSE +21 -0
- package/README.md +137 -0
- package/dist/agent/context.d.ts +13 -0
- package/dist/agent/context.js +183 -0
- package/dist/agent/context.js.map +1 -0
- package/dist/agent/loop.d.ts +60 -0
- package/dist/agent/loop.js +228 -0
- package/dist/agent/loop.js.map +1 -0
- package/dist/agent/session-store.d.ts +30 -0
- package/dist/agent/session-store.js +178 -0
- package/dist/agent/session-store.js.map +1 -0
- package/dist/agent/spawner.d.ts +57 -0
- package/dist/agent/spawner.js +112 -0
- package/dist/agent/spawner.js.map +1 -0
- package/dist/agent/system-prompt.d.ts +3 -0
- package/dist/agent/system-prompt.js +100 -0
- package/dist/agent/system-prompt.js.map +1 -0
- package/dist/architect/engine.d.ts +47 -0
- package/dist/architect/engine.js +217 -0
- package/dist/architect/engine.js.map +1 -0
- package/dist/architect/types.d.ts +61 -0
- package/dist/architect/types.js +6 -0
- package/dist/architect/types.js.map +1 -0
- package/dist/cli/diamond.d.ts +1 -0
- package/dist/cli/diamond.js +23 -0
- package/dist/cli/diamond.js.map +1 -0
- package/dist/cli/display.d.ts +44 -0
- package/dist/cli/display.js +234 -0
- package/dist/cli/display.js.map +1 -0
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/index.js +1734 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/config/defaults.d.ts +46 -0
- package/dist/config/defaults.js +106 -0
- package/dist/config/defaults.js.map +1 -0
- package/dist/config/project-config.d.ts +90 -0
- package/dist/config/project-config.js +141 -0
- package/dist/config/project-config.js.map +1 -0
- package/dist/harness/proposer.d.ts +26 -0
- package/dist/harness/proposer.js +204 -0
- package/dist/harness/proposer.js.map +1 -0
- package/dist/harness/weakness-miner.d.ts +28 -0
- package/dist/harness/weakness-miner.js +359 -0
- package/dist/harness/weakness-miner.js.map +1 -0
- package/dist/integrations/harnesses.d.ts +23 -0
- package/dist/integrations/harnesses.js +161 -0
- package/dist/integrations/harnesses.js.map +1 -0
- package/dist/orchestration/competence.d.ts +53 -0
- package/dist/orchestration/competence.js +181 -0
- package/dist/orchestration/competence.js.map +1 -0
- package/dist/orchestration/executor.d.ts +42 -0
- package/dist/orchestration/executor.js +206 -0
- package/dist/orchestration/executor.js.map +1 -0
- package/dist/orchestration/index.d.ts +20 -0
- package/dist/orchestration/index.js +39 -0
- package/dist/orchestration/index.js.map +1 -0
- package/dist/orchestration/orchestrator-prompts.d.ts +11 -0
- package/dist/orchestration/orchestrator-prompts.js +153 -0
- package/dist/orchestration/orchestrator-prompts.js.map +1 -0
- package/dist/orchestration/orchestrator.d.ts +27 -0
- package/dist/orchestration/orchestrator.js +169 -0
- package/dist/orchestration/orchestrator.js.map +1 -0
- package/dist/orchestration/plan-store.d.ts +53 -0
- package/dist/orchestration/plan-store.js +176 -0
- package/dist/orchestration/plan-store.js.map +1 -0
- package/dist/orchestration/router-prompts.d.ts +6 -0
- package/dist/orchestration/router-prompts.js +55 -0
- package/dist/orchestration/router-prompts.js.map +1 -0
- package/dist/orchestration/router.d.ts +23 -0
- package/dist/orchestration/router.js +70 -0
- package/dist/orchestration/router.js.map +1 -0
- package/dist/orchestration/ruby-detect.d.ts +6 -0
- package/dist/orchestration/ruby-detect.js +130 -0
- package/dist/orchestration/ruby-detect.js.map +1 -0
- package/dist/orchestration/ruby-types.d.ts +44 -0
- package/dist/orchestration/ruby-types.js +6 -0
- package/dist/orchestration/ruby-types.js.map +1 -0
- package/dist/orchestration/specialist-prompts.d.ts +19 -0
- package/dist/orchestration/specialist-prompts.js +143 -0
- package/dist/orchestration/specialist-prompts.js.map +1 -0
- package/dist/orchestration/specialists.d.ts +66 -0
- package/dist/orchestration/specialists.js +175 -0
- package/dist/orchestration/specialists.js.map +1 -0
- package/dist/orchestration/types.d.ts +82 -0
- package/dist/orchestration/types.js +6 -0
- package/dist/orchestration/types.js.map +1 -0
- package/dist/perception/extractor.d.ts +7 -0
- package/dist/perception/extractor.js +521 -0
- package/dist/perception/extractor.js.map +1 -0
- package/dist/perception/graph-store.d.ts +25 -0
- package/dist/perception/graph-store.js +117 -0
- package/dist/perception/graph-store.js.map +1 -0
- package/dist/perception/index.d.ts +4 -0
- package/dist/perception/index.js +18 -0
- package/dist/perception/index.js.map +1 -0
- package/dist/perception/queries.d.ts +29 -0
- package/dist/perception/queries.js +354 -0
- package/dist/perception/queries.js.map +1 -0
- package/dist/perception/types.d.ts +103 -0
- package/dist/perception/types.js +6 -0
- package/dist/perception/types.js.map +1 -0
- package/dist/providers/anthropic.d.ts +11 -0
- package/dist/providers/anthropic.js +172 -0
- package/dist/providers/anthropic.js.map +1 -0
- package/dist/providers/factory.d.ts +58 -0
- package/dist/providers/factory.js +354 -0
- package/dist/providers/factory.js.map +1 -0
- package/dist/providers/fallback.d.ts +24 -0
- package/dist/providers/fallback.js +72 -0
- package/dist/providers/fallback.js.map +1 -0
- package/dist/providers/google.d.ts +11 -0
- package/dist/providers/google.js +129 -0
- package/dist/providers/google.js.map +1 -0
- package/dist/providers/openai-compatible.d.ts +24 -0
- package/dist/providers/openai-compatible.js +216 -0
- package/dist/providers/openai-compatible.js.map +1 -0
- package/dist/providers/resilient-factory.d.ts +24 -0
- package/dist/providers/resilient-factory.js +57 -0
- package/dist/providers/resilient-factory.js.map +1 -0
- package/dist/providers/resilient.d.ts +63 -0
- package/dist/providers/resilient.js +145 -0
- package/dist/providers/resilient.js.map +1 -0
- package/dist/providers/types.d.ts +84 -0
- package/dist/providers/types.js +6 -0
- package/dist/providers/types.js.map +1 -0
- package/dist/ruby/alternator.d.ts +40 -0
- package/dist/ruby/alternator.js +233 -0
- package/dist/ruby/alternator.js.map +1 -0
- package/dist/ruby/competence.d.ts +34 -0
- package/dist/ruby/competence.js +264 -0
- package/dist/ruby/competence.js.map +1 -0
- package/dist/ruby/episode-capture.d.ts +56 -0
- package/dist/ruby/episode-capture.js +193 -0
- package/dist/ruby/episode-capture.js.map +1 -0
- package/dist/ruby/fine-tune.d.ts +16 -0
- package/dist/ruby/fine-tune.js +253 -0
- package/dist/ruby/fine-tune.js.map +1 -0
- package/dist/ruby/index.d.ts +10 -0
- package/dist/ruby/index.js +26 -0
- package/dist/ruby/index.js.map +1 -0
- package/dist/ruby/ruby-model.d.ts +36 -0
- package/dist/ruby/ruby-model.js +81 -0
- package/dist/ruby/ruby-model.js.map +1 -0
- package/dist/ruby/training-data.d.ts +11 -0
- package/dist/ruby/training-data.js +107 -0
- package/dist/ruby/training-data.js.map +1 -0
- package/dist/ruby/types.d.ts +136 -0
- package/dist/ruby/types.js +20 -0
- package/dist/ruby/types.js.map +1 -0
- package/dist/safety/permissions.d.ts +32 -0
- package/dist/safety/permissions.js +304 -0
- package/dist/safety/permissions.js.map +1 -0
- package/dist/server/index.d.ts +9 -0
- package/dist/server/index.js +342 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/session.d.ts +22 -0
- package/dist/server/session.js +16 -0
- package/dist/server/session.js.map +1 -0
- package/dist/setup/first-run.d.ts +41 -0
- package/dist/setup/first-run.js +386 -0
- package/dist/setup/first-run.js.map +1 -0
- package/dist/setup/global-config.d.ts +19 -0
- package/dist/setup/global-config.js +97 -0
- package/dist/setup/global-config.js.map +1 -0
- package/dist/tools/audio-transcribe.d.ts +8 -0
- package/dist/tools/audio-transcribe.js +156 -0
- package/dist/tools/audio-transcribe.js.map +1 -0
- package/dist/tools/browser.d.ts +15 -0
- package/dist/tools/browser.js +241 -0
- package/dist/tools/browser.js.map +1 -0
- package/dist/tools/calendar.d.ts +12 -0
- package/dist/tools/calendar.js +196 -0
- package/dist/tools/calendar.js.map +1 -0
- package/dist/tools/clipboard.d.ts +7 -0
- package/dist/tools/clipboard.js +90 -0
- package/dist/tools/clipboard.js.map +1 -0
- package/dist/tools/cron.d.ts +10 -0
- package/dist/tools/cron.js +167 -0
- package/dist/tools/cron.js.map +1 -0
- package/dist/tools/edit-file.d.ts +6 -0
- package/dist/tools/edit-file.js +98 -0
- package/dist/tools/edit-file.js.map +1 -0
- package/dist/tools/email.d.ts +11 -0
- package/dist/tools/email.js +153 -0
- package/dist/tools/email.js.map +1 -0
- package/dist/tools/git.d.ts +1 -0
- package/dist/tools/git.js +7 -0
- package/dist/tools/git.js.map +1 -0
- package/dist/tools/http-request.d.ts +12 -0
- package/dist/tools/http-request.js +91 -0
- package/dist/tools/http-request.js.map +1 -0
- package/dist/tools/image-read.d.ts +7 -0
- package/dist/tools/image-read.js +125 -0
- package/dist/tools/image-read.js.map +1 -0
- package/dist/tools/index.d.ts +3 -0
- package/dist/tools/index.js +201 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/list-dir.d.ts +1 -0
- package/dist/tools/list-dir.js +6 -0
- package/dist/tools/list-dir.js.map +1 -0
- package/dist/tools/mcp.d.ts +11 -0
- package/dist/tools/mcp.js +356 -0
- package/dist/tools/mcp.js.map +1 -0
- package/dist/tools/memory.d.ts +9 -0
- package/dist/tools/memory.js +124 -0
- package/dist/tools/memory.js.map +1 -0
- package/dist/tools/notify.d.ts +9 -0
- package/dist/tools/notify.js +40 -0
- package/dist/tools/notify.js.map +1 -0
- package/dist/tools/read-file.d.ts +6 -0
- package/dist/tools/read-file.js +76 -0
- package/dist/tools/read-file.js.map +1 -0
- package/dist/tools/run-shell.d.ts +1 -0
- package/dist/tools/run-shell.js +6 -0
- package/dist/tools/run-shell.js.map +1 -0
- package/dist/tools/run-tests.d.ts +1 -0
- package/dist/tools/run-tests.js +6 -0
- package/dist/tools/run-tests.js.map +1 -0
- package/dist/tools/search-code.d.ts +1 -0
- package/dist/tools/search-code.js +6 -0
- package/dist/tools/search-code.js.map +1 -0
- package/dist/tools/telegram-bot.d.ts +2 -0
- package/dist/tools/telegram-bot.js +693 -0
- package/dist/tools/telegram-bot.js.map +1 -0
- package/dist/tools/telegram-safety.d.ts +52 -0
- package/dist/tools/telegram-safety.js +189 -0
- package/dist/tools/telegram-safety.js.map +1 -0
- package/dist/tools/telegram.d.ts +16 -0
- package/dist/tools/telegram.js +227 -0
- package/dist/tools/telegram.js.map +1 -0
- package/dist/tools/tools.d.ts +48 -0
- package/dist/tools/tools.js +328 -0
- package/dist/tools/tools.js.map +1 -0
- package/dist/tools/web-fetch.d.ts +11 -0
- package/dist/tools/web-fetch.js +119 -0
- package/dist/tools/web-fetch.js.map +1 -0
- package/dist/tools/web-search.d.ts +8 -0
- package/dist/tools/web-search.js +81 -0
- package/dist/tools/web-search.js.map +1 -0
- package/dist/tools/whatsapp.d.ts +10 -0
- package/dist/tools/whatsapp.js +222 -0
- package/dist/tools/whatsapp.js.map +1 -0
- package/dist/tools/write-file.d.ts +1 -0
- package/dist/tools/write-file.js +6 -0
- package/dist/tools/write-file.js.map +1 -0
- package/dist/tools/youtube-transcript.d.ts +9 -0
- package/dist/tools/youtube-transcript.js +200 -0
- package/dist/tools/youtube-transcript.js.map +1 -0
- package/dist/util/circuit-breaker.d.ts +44 -0
- package/dist/util/circuit-breaker.js +78 -0
- package/dist/util/circuit-breaker.js.map +1 -0
- package/dist/util/env.d.ts +18 -0
- package/dist/util/env.js +39 -0
- package/dist/util/env.js.map +1 -0
- package/dist/util/errors.d.ts +42 -0
- package/dist/util/errors.js +121 -0
- package/dist/util/errors.js.map +1 -0
- package/dist/util/rate-limiter.d.ts +71 -0
- package/dist/util/rate-limiter.js +141 -0
- package/dist/util/rate-limiter.js.map +1 -0
- package/dist/util/retry.d.ts +30 -0
- package/dist/util/retry.js +57 -0
- package/dist/util/retry.js.map +1 -0
- package/dist/util/sanitize.d.ts +16 -0
- package/dist/util/sanitize.js +255 -0
- package/dist/util/sanitize.js.map +1 -0
- package/dist/verify/checks.d.ts +21 -0
- package/dist/verify/checks.js +311 -0
- package/dist/verify/checks.js.map +1 -0
- package/dist/verify/index.d.ts +33 -0
- package/dist/verify/index.js +127 -0
- package/dist/verify/index.js.map +1 -0
- package/dist/verify/types.d.ts +20 -0
- package/dist/verify/types.js +3 -0
- package/dist/verify/types.js.map +1 -0
- package/dist/versioncheck.d.ts +22 -0
- package/dist/versioncheck.js +203 -0
- package/dist/versioncheck.js.map +1 -0
- package/dist/viz/index.d.ts +2 -0
- package/dist/viz/index.js +733 -0
- package/dist/viz/index.js.map +1 -0
- package/dist/workflows/engine.d.ts +46 -0
- package/dist/workflows/engine.js +320 -0
- package/dist/workflows/engine.js.map +1 -0
- package/dist/workflows/types.d.ts +92 -0
- package/dist/workflows/types.js +6 -0
- package/dist/workflows/types.js.map +1 -0
- package/package.json +86 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../src/orchestration/executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export { routeTask } from './router.js';
|
|
2
|
+
export { createPlan } from './orchestrator.js';
|
|
3
|
+
export { executePlan, synthesise } from './executor.js';
|
|
4
|
+
export { runSpecialist, runResearcher, runReviewer, runCoder } from './specialists.js';
|
|
5
|
+
import type { ExecutionPlan, OrchestrationMemory } from './types.js';
|
|
6
|
+
export declare const savePlan: (plan: ExecutionPlan) => Promise<void>;
|
|
7
|
+
export declare const loadPlan: (id: string) => Promise<ExecutionPlan | null>;
|
|
8
|
+
export declare const listPlans: () => Promise<ExecutionPlan[]>;
|
|
9
|
+
export declare const deletePlan: (id: string) => Promise<void>;
|
|
10
|
+
export declare const saveMemory: (projectRoot: string, entry: OrchestrationMemory) => Promise<void>;
|
|
11
|
+
export declare const getMemory: (projectRoot: string, key: string) => Promise<OrchestrationMemory | null>;
|
|
12
|
+
export declare const listMemory: (projectRoot: string) => Promise<OrchestrationMemory[]>;
|
|
13
|
+
export type { ExecutionPlan, PlanStep, OrchestrationMemory, RouterDecision, } from './types.js';
|
|
14
|
+
export type { OrchestratorOptions } from './orchestrator.js';
|
|
15
|
+
export type { ExecutorOptions } from './executor.js';
|
|
16
|
+
export type { SpecialistOptions, SpecialistResult } from './specialists.js';
|
|
17
|
+
export type { RubyFramework, RubyTestFramework, RubyProjectContext, RubyDiamondSurface, RubyDiamondEnvelope, } from './ruby-types.js';
|
|
18
|
+
export { detectRubyProject } from './ruby-detect.js';
|
|
19
|
+
export type { SpecialistRole, CompetenceDomain, CompetenceScore, ProjectCompetence, StepOutcome, } from './competence.js';
|
|
20
|
+
export { PRIMARY_DOMAIN, defaultCompetenceMatrix, recommendSpecialist, applyOutcome, competenceStore, } from './competence.js';
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.competenceStore = exports.applyOutcome = exports.recommendSpecialist = exports.defaultCompetenceMatrix = exports.PRIMARY_DOMAIN = exports.detectRubyProject = exports.listMemory = exports.getMemory = exports.saveMemory = exports.deletePlan = exports.listPlans = exports.loadPlan = exports.savePlan = exports.runCoder = exports.runReviewer = exports.runResearcher = exports.runSpecialist = exports.synthesise = exports.executePlan = exports.createPlan = exports.routeTask = void 0;
|
|
4
|
+
var router_js_1 = require("./router.js");
|
|
5
|
+
Object.defineProperty(exports, "routeTask", { enumerable: true, get: function () { return router_js_1.routeTask; } });
|
|
6
|
+
var orchestrator_js_1 = require("./orchestrator.js");
|
|
7
|
+
Object.defineProperty(exports, "createPlan", { enumerable: true, get: function () { return orchestrator_js_1.createPlan; } });
|
|
8
|
+
var executor_js_1 = require("./executor.js");
|
|
9
|
+
Object.defineProperty(exports, "executePlan", { enumerable: true, get: function () { return executor_js_1.executePlan; } });
|
|
10
|
+
Object.defineProperty(exports, "synthesise", { enumerable: true, get: function () { return executor_js_1.synthesise; } });
|
|
11
|
+
var specialists_js_1 = require("./specialists.js");
|
|
12
|
+
Object.defineProperty(exports, "runSpecialist", { enumerable: true, get: function () { return specialists_js_1.runSpecialist; } });
|
|
13
|
+
Object.defineProperty(exports, "runResearcher", { enumerable: true, get: function () { return specialists_js_1.runResearcher; } });
|
|
14
|
+
Object.defineProperty(exports, "runReviewer", { enumerable: true, get: function () { return specialists_js_1.runReviewer; } });
|
|
15
|
+
Object.defineProperty(exports, "runCoder", { enumerable: true, get: function () { return specialists_js_1.runCoder; } });
|
|
16
|
+
const plan_store_js_1 = require("./plan-store.js");
|
|
17
|
+
const savePlan = (plan) => plan_store_js_1.planStore.save(plan);
|
|
18
|
+
exports.savePlan = savePlan;
|
|
19
|
+
const loadPlan = (id) => plan_store_js_1.planStore.load(id);
|
|
20
|
+
exports.loadPlan = loadPlan;
|
|
21
|
+
const listPlans = () => plan_store_js_1.planStore.list();
|
|
22
|
+
exports.listPlans = listPlans;
|
|
23
|
+
const deletePlan = (id) => plan_store_js_1.planStore.delete(id);
|
|
24
|
+
exports.deletePlan = deletePlan;
|
|
25
|
+
const saveMemory = (projectRoot, entry) => plan_store_js_1.planStore.saveMemory(projectRoot, entry);
|
|
26
|
+
exports.saveMemory = saveMemory;
|
|
27
|
+
const getMemory = (projectRoot, key) => plan_store_js_1.planStore.getMemory(projectRoot, key);
|
|
28
|
+
exports.getMemory = getMemory;
|
|
29
|
+
const listMemory = (projectRoot) => plan_store_js_1.planStore.listMemory(projectRoot);
|
|
30
|
+
exports.listMemory = listMemory;
|
|
31
|
+
var ruby_detect_js_1 = require("./ruby-detect.js");
|
|
32
|
+
Object.defineProperty(exports, "detectRubyProject", { enumerable: true, get: function () { return ruby_detect_js_1.detectRubyProject; } });
|
|
33
|
+
var competence_js_1 = require("./competence.js");
|
|
34
|
+
Object.defineProperty(exports, "PRIMARY_DOMAIN", { enumerable: true, get: function () { return competence_js_1.PRIMARY_DOMAIN; } });
|
|
35
|
+
Object.defineProperty(exports, "defaultCompetenceMatrix", { enumerable: true, get: function () { return competence_js_1.defaultCompetenceMatrix; } });
|
|
36
|
+
Object.defineProperty(exports, "recommendSpecialist", { enumerable: true, get: function () { return competence_js_1.recommendSpecialist; } });
|
|
37
|
+
Object.defineProperty(exports, "applyOutcome", { enumerable: true, get: function () { return competence_js_1.applyOutcome; } });
|
|
38
|
+
Object.defineProperty(exports, "competenceStore", { enumerable: true, get: function () { return competence_js_1.competenceStore; } });
|
|
39
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/orchestration/index.ts"],"names":[],"mappings":";;;AAAA,yCAAwC;AAA/B,sGAAA,SAAS,OAAA;AAClB,qDAA+C;AAAtC,6GAAA,UAAU,OAAA;AACnB,6CAAwD;AAA/C,0GAAA,WAAW,OAAA;AAAE,yGAAA,UAAU,OAAA;AAChC,mDAAuF;AAA9E,+GAAA,aAAa,OAAA;AAAE,+GAAA,aAAa,OAAA;AAAE,6GAAA,WAAW,OAAA;AAAE,0GAAA,QAAQ,OAAA;AAC5D,mDAA4C;AAErC,MAAM,QAAQ,GAAK,CAAC,IAAmB,EAAuC,EAAE,CAAC,yBAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAAhG,QAAA,QAAQ,YAAwF;AACtG,MAAM,QAAQ,GAAK,CAAC,EAAU,EAAgD,EAAE,CAAC,yBAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAA9F,QAAA,QAAQ,YAAsF;AACpG,MAAM,SAAS,GAAI,GAA4D,EAAE,CAAC,yBAAS,CAAC,IAAI,EAAE,CAAC;AAA7F,QAAA,SAAS,aAAoF;AACnG,MAAM,UAAU,GAAG,CAAC,EAAU,EAAgD,EAAE,CAAC,yBAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAAhG,QAAA,UAAU,cAAsF;AACtG,MAAM,UAAU,GAAG,CAAC,WAAmB,EAAE,KAA0B,EAAW,EAAE,CAAC,yBAAS,CAAC,UAAU,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;AAApH,QAAA,UAAU,cAA0G;AAC1H,MAAM,SAAS,GAAI,CAAC,WAAmB,EAAE,GAAW,EAA0B,EAAE,CAAC,yBAAS,CAAC,SAAS,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;AAAjH,QAAA,SAAS,aAAwG;AACvH,MAAM,UAAU,GAAG,CAAC,WAAmB,EAAuC,EAAE,CAAC,yBAAS,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAA7G,QAAA,UAAU,cAAmG;AAiB1H,mDAAqD;AAA5C,mHAAA,iBAAiB,OAAA;AAQ1B,iDAMyB;AALvB,+GAAA,cAAc,OAAA;AACd,wHAAA,uBAAuB,OAAA;AACvB,oHAAA,mBAAmB,OAAA;AACnB,6GAAA,YAAY,OAAA;AACZ,gHAAA,eAAe,OAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ProjectContext } from '../agent/context.js';
|
|
2
|
+
import type { ProjectPerception } from '../perception/types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Builds the system prompt injected when the orchestrator asks a model to
|
|
5
|
+
* decompose a task into a multi-step execution plan.
|
|
6
|
+
*
|
|
7
|
+
* Includes project context and, when available, perception risk areas so the
|
|
8
|
+
* model can make informed decisions about specialist assignments.
|
|
9
|
+
* The model must respond with a single JSON object and nothing else.
|
|
10
|
+
*/
|
|
11
|
+
export declare function ORCHESTRATOR_SYSTEM_PROMPT(context: ProjectContext, perception?: ProjectPerception): string;
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ORCHESTRATOR_SYSTEM_PROMPT = ORCHESTRATOR_SYSTEM_PROMPT;
|
|
4
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
5
|
+
// System prompts used by the orchestrator to build execution plans
|
|
6
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
7
|
+
/**
|
|
8
|
+
* Builds the system prompt injected when the orchestrator asks a model to
|
|
9
|
+
* decompose a task into a multi-step execution plan.
|
|
10
|
+
*
|
|
11
|
+
* Includes project context and, when available, perception risk areas so the
|
|
12
|
+
* model can make informed decisions about specialist assignments.
|
|
13
|
+
* The model must respond with a single JSON object and nothing else.
|
|
14
|
+
*/
|
|
15
|
+
function ORCHESTRATOR_SYSTEM_PROMPT(context, perception) {
|
|
16
|
+
const riskSection = buildRiskSection(perception);
|
|
17
|
+
const graphSection = context.graphSummary
|
|
18
|
+
? `\n## Codebase Knowledge Graph\n${context.graphSummary}\n`
|
|
19
|
+
: '';
|
|
20
|
+
return `You are the orchestration planner for Aura, a multi-agent coding system.
|
|
21
|
+
|
|
22
|
+
Project: ${context.name}
|
|
23
|
+
Language: ${context.language}
|
|
24
|
+
Framework: ${context.framework}
|
|
25
|
+
${riskSection}${graphSection}
|
|
26
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
27
|
+
AVAILABLE SPECIALISTS
|
|
28
|
+
|
|
29
|
+
researcher — Reads and understands code, files, and documentation.
|
|
30
|
+
Has read-only tool access. Never writes or modifies files.
|
|
31
|
+
Use to gather context before implementation begins.
|
|
32
|
+
|
|
33
|
+
coder — Implements changes. Has full tool access (read, write, shell).
|
|
34
|
+
Use for all file creation, modification, and execution tasks.
|
|
35
|
+
|
|
36
|
+
reviewer — Checks correctness, style, test coverage, and constraint compliance.
|
|
37
|
+
Has read-only tool access. Never writes or modifies files.
|
|
38
|
+
Use as a final gate after implementation.
|
|
39
|
+
|
|
40
|
+
planner — Decomposes complex or ambiguous subtasks into smaller steps.
|
|
41
|
+
Use only when a sub-goal is genuinely too large for one specialist.
|
|
42
|
+
|
|
43
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
44
|
+
PLANNING RULES
|
|
45
|
+
|
|
46
|
+
• Prefer 3–5 steps. Stop decomposing the moment a step is clear and actionable.
|
|
47
|
+
• Only split work that genuinely benefits from specialisation or sequencing.
|
|
48
|
+
• A researcher step makes sense only when the coder truly needs gathered context
|
|
49
|
+
first — not as a reflexive first step on every task.
|
|
50
|
+
• A reviewer step makes sense only when the implementation is non-trivial and
|
|
51
|
+
an independent correctness check adds real value.
|
|
52
|
+
• Never create a planner step unless a sub-goal is genuinely ambiguous and
|
|
53
|
+
cannot be expressed as a direct researcher/coder/reviewer sequence.
|
|
54
|
+
• dependsOn must be acyclic. A step may only depend on steps listed before it.
|
|
55
|
+
|
|
56
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
57
|
+
OUTPUT FORMAT — respond with ONLY valid JSON, no prose, no markdown fences:
|
|
58
|
+
|
|
59
|
+
{
|
|
60
|
+
"goal": string,
|
|
61
|
+
"steps": [
|
|
62
|
+
{
|
|
63
|
+
"id": string,
|
|
64
|
+
"specialist": "researcher" | "coder" | "reviewer" | "planner",
|
|
65
|
+
"task": string,
|
|
66
|
+
"context": string,
|
|
67
|
+
"dependsOn": string[]
|
|
68
|
+
}
|
|
69
|
+
]
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
Field rules:
|
|
73
|
+
• "goal" — restate the task in one clear sentence.
|
|
74
|
+
• "id" — short kebab-case slug, e.g. "step-1", "step-2".
|
|
75
|
+
• "specialist" — exactly one of: researcher, coder, reviewer, planner.
|
|
76
|
+
• "task" — specific, actionable description of what this step must do.
|
|
77
|
+
• "context" — what this specialist needs to know (relevant files, constraints,
|
|
78
|
+
prior step results to incorporate).
|
|
79
|
+
• "dependsOn" — array of step ids that must complete before this step starts;
|
|
80
|
+
use an empty array [] for the first step.
|
|
81
|
+
|
|
82
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
83
|
+
GOOD EXAMPLE — 3-step plan for "Add rate limiting to the API":
|
|
84
|
+
|
|
85
|
+
{
|
|
86
|
+
"goal": "Add per-IP rate limiting middleware to the Express API.",
|
|
87
|
+
"steps": [
|
|
88
|
+
{
|
|
89
|
+
"id": "step-1",
|
|
90
|
+
"specialist": "researcher",
|
|
91
|
+
"task": "Read src/server/index.ts and all middleware files. Identify where new middleware should be inserted and whether any rate-limit library is already installed.",
|
|
92
|
+
"context": "We are adding rate limiting to a Node.js API project. Need to understand current middleware stack before writing code.",
|
|
93
|
+
"dependsOn": []
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
"id": "step-2",
|
|
97
|
+
"specialist": "coder",
|
|
98
|
+
"task": "Implement a rate-limiting middleware using the existing dependencies (or install express-rate-limit if absent). Insert it before route handlers in src/server/index.ts. Add a unit test in tests/middleware/rate-limit.test.ts.",
|
|
99
|
+
"context": "Researcher found: middleware is applied in src/server/index.ts around line 40. No rate-limit library currently installed.",
|
|
100
|
+
"dependsOn": ["step-1"]
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
"id": "step-3",
|
|
104
|
+
"specialist": "reviewer",
|
|
105
|
+
"task": "Read the implemented middleware and its test. Verify the limiter is correctly scoped to API routes, that the test covers the reject path, and that no existing tests are broken.",
|
|
106
|
+
"context": "Coder added express-rate-limit in src/server/index.ts and tests/middleware/rate-limit.test.ts.",
|
|
107
|
+
"dependsOn": ["step-2"]
|
|
108
|
+
}
|
|
109
|
+
]
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
BAD EXAMPLE — over-decomposed 8-step plan for the same task (do NOT do this):
|
|
113
|
+
|
|
114
|
+
{
|
|
115
|
+
"goal": "Add rate limiting to the API.",
|
|
116
|
+
"steps": [
|
|
117
|
+
{ "id": "step-1", "specialist": "researcher", "task": "Read the project README.", "context": "", "dependsOn": [] },
|
|
118
|
+
{ "id": "step-2", "specialist": "researcher", "task": "List all files in src/server/.", "context": "", "dependsOn": ["step-1"] },
|
|
119
|
+
{ "id": "step-3", "specialist": "researcher", "task": "Read src/server/index.ts.", "context": "", "dependsOn": ["step-2"] },
|
|
120
|
+
{ "id": "step-4", "specialist": "planner", "task": "Decide which rate-limit library to use.", "context": "", "dependsOn": ["step-3"] },
|
|
121
|
+
{ "id": "step-5", "specialist": "coder", "task": "Install the library.", "context": "", "dependsOn": ["step-4"] },
|
|
122
|
+
{ "id": "step-6", "specialist": "coder", "task": "Write the middleware.", "context": "", "dependsOn": ["step-5"] },
|
|
123
|
+
{ "id": "step-7", "specialist": "coder", "task": "Write the test.", "context": "", "dependsOn": ["step-6"] },
|
|
124
|
+
{ "id": "step-8", "specialist": "reviewer", "task": "Review everything.", "context": "", "dependsOn": ["step-7"] }
|
|
125
|
+
]
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
The bad example splits trivially sequential work into micro-steps, uses planner
|
|
129
|
+
where a researcher note would suffice, and separates implementation from testing
|
|
130
|
+
unnecessarily. Combine related actions into single, well-contextualised steps.
|
|
131
|
+
|
|
132
|
+
Do NOT include any text, explanation, or formatting outside the JSON object.`;
|
|
133
|
+
}
|
|
134
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
135
|
+
// Internal helpers
|
|
136
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
137
|
+
function buildRiskSection(perception) {
|
|
138
|
+
if (!perception)
|
|
139
|
+
return '';
|
|
140
|
+
const { riskAreas, strictRules, readOnly } = perception.constraints;
|
|
141
|
+
const lines = [];
|
|
142
|
+
if (riskAreas.length > 0) {
|
|
143
|
+
lines.push(`Risk areas (high-fragility, handle with care): ${riskAreas.join(', ')}`);
|
|
144
|
+
}
|
|
145
|
+
if (strictRules.length > 0) {
|
|
146
|
+
lines.push(`Strict rules that must not be violated: ${strictRules.join('; ')}`);
|
|
147
|
+
}
|
|
148
|
+
if (readOnly.length > 0) {
|
|
149
|
+
lines.push(`Read-only paths (never modify): ${readOnly.join(', ')}`);
|
|
150
|
+
}
|
|
151
|
+
return lines.length > 0 ? lines.join('\n') + '\n' : '';
|
|
152
|
+
}
|
|
153
|
+
//# sourceMappingURL=orchestrator-prompts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orchestrator-prompts.js","sourceRoot":"","sources":["../../src/orchestration/orchestrator-prompts.ts"],"names":[],"mappings":";;AAeA,gEA0HC;AAtID,gFAAgF;AAChF,mEAAmE;AACnE,gFAAgF;AAEhF;;;;;;;GAOG;AACH,SAAgB,0BAA0B,CACxC,OAAuB,EACvB,UAA8B;IAE9B,MAAM,WAAW,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;IACjD,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY;QACvC,CAAC,CAAC,kCAAkC,OAAO,CAAC,YAAY,IAAI;QAC5D,CAAC,CAAC,EAAE,CAAC;IAEP,OAAO;;WAEE,OAAO,CAAC,IAAI;YACX,OAAO,CAAC,QAAQ;aACf,OAAO,CAAC,SAAS;EAC5B,WAAW,GAAG,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6EA2GiD,CAAC;AAC9E,CAAC;AAED,gFAAgF;AAChF,mBAAmB;AACnB,gFAAgF;AAEhF,SAAS,gBAAgB,CAAC,UAAyC;IACjE,IAAI,CAAC,UAAU;QAAE,OAAO,EAAE,CAAC;IAC3B,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,UAAU,CAAC,WAAW,CAAC;IAEpE,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC,kDAAkD,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACvF,CAAC;IACD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,2CAA2C,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClF,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,KAAK,CAAC,IAAI,CAAC,mCAAmC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACvE,CAAC;IAED,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;AACzD,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { LLMProvider } from '../providers/types.js';
|
|
2
|
+
import type { ProjectContext } from '../agent/context.js';
|
|
3
|
+
import type { ProjectPerception } from '../perception/types.js';
|
|
4
|
+
import type { ExecutionPlan, OrchestrationMemory } from './types.js';
|
|
5
|
+
/** Inputs required to produce an execution plan. */
|
|
6
|
+
export interface OrchestratorOptions {
|
|
7
|
+
/** Provider used to call the planning model. */
|
|
8
|
+
provider: LLMProvider;
|
|
9
|
+
/** Loaded project context (name, language, framework, tree, …). */
|
|
10
|
+
context: ProjectContext;
|
|
11
|
+
/** The raw user task to be decomposed. */
|
|
12
|
+
task: string;
|
|
13
|
+
/** Optional perception snapshot; surfaced to the planner for risk-aware step design. */
|
|
14
|
+
perception?: ProjectPerception;
|
|
15
|
+
/** Previously persisted memory entries to inject as additional context. */
|
|
16
|
+
memory?: OrchestrationMemory[];
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Calls the planning model and returns a fully initialised `ExecutionPlan`.
|
|
20
|
+
*
|
|
21
|
+
* Steps are assigned fresh UUIDs, statuses are set to `'waiting'`, and the
|
|
22
|
+
* plan status is set to `'pending'`. If the model response cannot be parsed
|
|
23
|
+
* or fails validation, a safe single-step fallback plan is returned instead.
|
|
24
|
+
*
|
|
25
|
+
* Never throws — always returns an `ExecutionPlan`.
|
|
26
|
+
*/
|
|
27
|
+
export declare function createPlan(opts: OrchestratorOptions): Promise<ExecutionPlan>;
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createPlan = createPlan;
|
|
4
|
+
const crypto_1 = require("crypto");
|
|
5
|
+
const orchestrator_prompts_js_1 = require("./orchestrator-prompts.js");
|
|
6
|
+
/**
|
|
7
|
+
* Calls the planning model and returns a fully initialised `ExecutionPlan`.
|
|
8
|
+
*
|
|
9
|
+
* Steps are assigned fresh UUIDs, statuses are set to `'waiting'`, and the
|
|
10
|
+
* plan status is set to `'pending'`. If the model response cannot be parsed
|
|
11
|
+
* or fails validation, a safe single-step fallback plan is returned instead.
|
|
12
|
+
*
|
|
13
|
+
* Never throws — always returns an `ExecutionPlan`.
|
|
14
|
+
*/
|
|
15
|
+
async function createPlan(opts) {
|
|
16
|
+
const { provider, context, task, perception, memory } = opts;
|
|
17
|
+
const system = (0, orchestrator_prompts_js_1.ORCHESTRATOR_SYSTEM_PROMPT)(context, perception);
|
|
18
|
+
const userMessage = buildUserMessage(task, memory);
|
|
19
|
+
const history = [{ role: 'user', content: userMessage }];
|
|
20
|
+
let rawText = '';
|
|
21
|
+
try {
|
|
22
|
+
const response = await provider.complete(system, history, []);
|
|
23
|
+
rawText = response.text.trim();
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
return fallbackPlan(task);
|
|
27
|
+
}
|
|
28
|
+
return parsePlan(rawText, task);
|
|
29
|
+
}
|
|
30
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
31
|
+
// Internal helpers
|
|
32
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
33
|
+
function buildUserMessage(task, memory) {
|
|
34
|
+
const lines = [`Task: ${task}`];
|
|
35
|
+
if (memory && memory.length > 0) {
|
|
36
|
+
lines.push('', 'Relevant memory from previous steps:');
|
|
37
|
+
for (const entry of memory) {
|
|
38
|
+
lines.push(` [${entry.key}] ${entry.value}`);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return lines.join('\n');
|
|
42
|
+
}
|
|
43
|
+
const VALID_SPECIALISTS = new Set(['researcher', 'coder', 'reviewer', 'planner']);
|
|
44
|
+
function parsePlan(raw, originalTask) {
|
|
45
|
+
let parsed;
|
|
46
|
+
try {
|
|
47
|
+
const cleaned = raw.replace(/^```(?:json)?\s*/i, '').replace(/\s*```\s*$/, '').trim();
|
|
48
|
+
parsed = JSON.parse(cleaned);
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
return fallbackPlan(originalTask);
|
|
52
|
+
}
|
|
53
|
+
if (typeof parsed !== 'object' || parsed === null) {
|
|
54
|
+
return fallbackPlan(originalTask);
|
|
55
|
+
}
|
|
56
|
+
const r = parsed;
|
|
57
|
+
const goal = typeof r.goal === 'string' && r.goal.length > 0 ? r.goal : originalTask;
|
|
58
|
+
if (!Array.isArray(r.steps) || r.steps.length === 0) {
|
|
59
|
+
return fallbackPlan(originalTask);
|
|
60
|
+
}
|
|
61
|
+
// BUG 5: reject absurdly large plans that are almost certainly model hallucinations
|
|
62
|
+
if (r.steps.length > 20)
|
|
63
|
+
return fallbackPlan(originalTask);
|
|
64
|
+
// BUG 3: reject plans where the model reused a step id
|
|
65
|
+
const rawIds = r.steps
|
|
66
|
+
.map(s => (typeof s === 'object' && s !== null ? s.id : undefined));
|
|
67
|
+
if (rawIds.some(id => typeof id !== 'string'))
|
|
68
|
+
return fallbackPlan(originalTask);
|
|
69
|
+
if (new Set(rawIds).size !== rawIds.length)
|
|
70
|
+
return fallbackPlan(originalTask);
|
|
71
|
+
// Validate each step shape and collect id → uuid mapping
|
|
72
|
+
const idMap = new Map();
|
|
73
|
+
const validatedRaw = [];
|
|
74
|
+
for (const s of r.steps) {
|
|
75
|
+
if (typeof s !== 'object' || s === null)
|
|
76
|
+
return fallbackPlan(originalTask);
|
|
77
|
+
const step = s;
|
|
78
|
+
if (typeof step.id !== 'string' || step.id.length === 0)
|
|
79
|
+
return fallbackPlan(originalTask);
|
|
80
|
+
if (typeof step.specialist !== 'string' || !VALID_SPECIALISTS.has(step.specialist))
|
|
81
|
+
return fallbackPlan(originalTask);
|
|
82
|
+
if (typeof step.task !== 'string' || step.task.length === 0)
|
|
83
|
+
return fallbackPlan(originalTask);
|
|
84
|
+
if (typeof step.context !== 'string')
|
|
85
|
+
return fallbackPlan(originalTask);
|
|
86
|
+
if (!Array.isArray(step.dependsOn))
|
|
87
|
+
return fallbackPlan(originalTask);
|
|
88
|
+
idMap.set(step.id, (0, crypto_1.randomUUID)());
|
|
89
|
+
validatedRaw.push(step);
|
|
90
|
+
}
|
|
91
|
+
// Validate dependsOn references and check for cycles
|
|
92
|
+
const knownIds = new Set(idMap.keys());
|
|
93
|
+
for (const step of validatedRaw) {
|
|
94
|
+
for (const dep of step.dependsOn) {
|
|
95
|
+
if (typeof dep !== 'string' || !knownIds.has(dep))
|
|
96
|
+
return fallbackPlan(originalTask);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
if (hasCycle(validatedRaw))
|
|
100
|
+
return fallbackPlan(originalTask);
|
|
101
|
+
// Build final steps with UUIDs and runtime-only fields
|
|
102
|
+
const steps = validatedRaw.map(s => ({
|
|
103
|
+
id: idMap.get(s.id) ?? (0, crypto_1.randomUUID)(),
|
|
104
|
+
specialist: s.specialist,
|
|
105
|
+
task: s.task,
|
|
106
|
+
context: s.context,
|
|
107
|
+
dependsOn: s.dependsOn.map(dep => idMap.get(dep) ?? dep),
|
|
108
|
+
status: 'waiting',
|
|
109
|
+
}));
|
|
110
|
+
return {
|
|
111
|
+
id: (0, crypto_1.randomUUID)(),
|
|
112
|
+
goal,
|
|
113
|
+
steps,
|
|
114
|
+
status: 'pending',
|
|
115
|
+
created: Date.now(),
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Topological cycle check using DFS with three-colour marking.
|
|
120
|
+
* Returns true if any cycle is detected among step dependencies.
|
|
121
|
+
*/
|
|
122
|
+
function hasCycle(steps) {
|
|
123
|
+
const WHITE = 0, GRAY = 1, BLACK = 2;
|
|
124
|
+
const colour = new Map();
|
|
125
|
+
const adj = new Map();
|
|
126
|
+
for (const s of steps) {
|
|
127
|
+
colour.set(s.id, WHITE);
|
|
128
|
+
adj.set(s.id, s.dependsOn);
|
|
129
|
+
}
|
|
130
|
+
function dfs(id) {
|
|
131
|
+
colour.set(id, GRAY);
|
|
132
|
+
for (const dep of adj.get(id) ?? []) {
|
|
133
|
+
const c = colour.get(dep) ?? WHITE;
|
|
134
|
+
if (c === GRAY)
|
|
135
|
+
return true;
|
|
136
|
+
if (c === WHITE && dfs(dep))
|
|
137
|
+
return true;
|
|
138
|
+
}
|
|
139
|
+
colour.set(id, BLACK);
|
|
140
|
+
return false;
|
|
141
|
+
}
|
|
142
|
+
for (const s of steps) {
|
|
143
|
+
if ((colour.get(s.id) ?? WHITE) === WHITE) {
|
|
144
|
+
if (dfs(s.id))
|
|
145
|
+
return true;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
return false;
|
|
149
|
+
}
|
|
150
|
+
/** Single-step fallback used whenever parsing or validation fails. */
|
|
151
|
+
function fallbackPlan(task) {
|
|
152
|
+
return {
|
|
153
|
+
id: (0, crypto_1.randomUUID)(),
|
|
154
|
+
goal: task,
|
|
155
|
+
steps: [
|
|
156
|
+
{
|
|
157
|
+
id: (0, crypto_1.randomUUID)(),
|
|
158
|
+
specialist: 'coder',
|
|
159
|
+
task,
|
|
160
|
+
context: 'Fallback single-step plan — orchestrator could not parse a structured plan.',
|
|
161
|
+
dependsOn: [],
|
|
162
|
+
status: 'waiting',
|
|
163
|
+
},
|
|
164
|
+
],
|
|
165
|
+
status: 'pending',
|
|
166
|
+
created: Date.now(),
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
//# sourceMappingURL=orchestrator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../src/orchestration/orchestrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import type { ExecutionPlan, OrchestrationMemory } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* On-disk persistence for execution plans and orchestration memory.
|
|
4
|
+
*
|
|
5
|
+
* Plans are stored as individual JSON files under ~/.aura/plans/{id}.json
|
|
6
|
+
* so they survive process restarts and can be inspected or replayed.
|
|
7
|
+
*
|
|
8
|
+
* Per-project memory is appended to {projectRoot}/.aura/memory.json and
|
|
9
|
+
* keyed by a string so specialists can share facts across steps.
|
|
10
|
+
*/
|
|
11
|
+
export declare const planStore: {
|
|
12
|
+
/** Returns the directory where plan files are stored. */
|
|
13
|
+
plansDir(): string;
|
|
14
|
+
/**
|
|
15
|
+
* Persists an execution plan to ~/.aura/plans/{id}.json.
|
|
16
|
+
* Uses a .tmp rename to avoid corrupt files on crash.
|
|
17
|
+
*/
|
|
18
|
+
save(plan: ExecutionPlan): Promise<void>;
|
|
19
|
+
/**
|
|
20
|
+
* Loads a plan by id.
|
|
21
|
+
* Returns `null` if the file does not exist or cannot be parsed.
|
|
22
|
+
*/
|
|
23
|
+
load(id: string): Promise<ExecutionPlan | null>;
|
|
24
|
+
/**
|
|
25
|
+
* Returns all saved plans, most recently created first.
|
|
26
|
+
* Silently skips files that cannot be parsed.
|
|
27
|
+
*/
|
|
28
|
+
list(): Promise<ExecutionPlan[]>;
|
|
29
|
+
/**
|
|
30
|
+
* Removes a plan file from disk.
|
|
31
|
+
* Resolves silently if the file does not exist.
|
|
32
|
+
*/
|
|
33
|
+
delete(id: string): Promise<void>;
|
|
34
|
+
/** Returns the path to the memory file for a given project root. */
|
|
35
|
+
memoryPath(projectRoot: string): string;
|
|
36
|
+
/**
|
|
37
|
+
* Appends a memory entry to {projectRoot}/.aura/memory.json.
|
|
38
|
+
* Creates the file (and parent directory) if they do not yet exist.
|
|
39
|
+
* Uses a .tmp rename to avoid corrupt files on crash.
|
|
40
|
+
*/
|
|
41
|
+
saveMemory(projectRoot: string, entry: OrchestrationMemory): Promise<void>;
|
|
42
|
+
/**
|
|
43
|
+
* Returns the most recent memory entry matching `key`, or `null` if none
|
|
44
|
+
* exists. When multiple entries share the same key, the latest timestamp
|
|
45
|
+
* wins.
|
|
46
|
+
*/
|
|
47
|
+
getMemory(projectRoot: string, key: string): Promise<OrchestrationMemory | null>;
|
|
48
|
+
/**
|
|
49
|
+
* Returns all memory entries for a project, sorted newest-first.
|
|
50
|
+
* Returns an empty array if the memory file does not exist.
|
|
51
|
+
*/
|
|
52
|
+
listMemory(projectRoot: string): Promise<OrchestrationMemory[]>;
|
|
53
|
+
};
|