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":"index.js","sourceRoot":"","sources":["../../src/viz/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { WorkflowStep, WorkflowState, StepResult } from './types.js';
|
|
2
|
+
/** Returns ~/.aura/workflows (or $AURA_WORKFLOW_DIR if set). */
|
|
3
|
+
export declare function workflowsDir(): string;
|
|
4
|
+
/** Callback the engine invokes to run a single step's task. */
|
|
5
|
+
export type RunStepFn = (task: string, stepIndex: number, previousResults: StepResult[]) => Promise<StepResult>;
|
|
6
|
+
/**
|
|
7
|
+
* Creates a new workflow definition and its initial state.
|
|
8
|
+
* Persists the state to ~/.aura/workflows/<id>.json.
|
|
9
|
+
* Returns the workflow state.
|
|
10
|
+
*/
|
|
11
|
+
export declare function createWorkflow(opts: {
|
|
12
|
+
name: string;
|
|
13
|
+
description?: string;
|
|
14
|
+
steps: WorkflowStep[];
|
|
15
|
+
}): Promise<WorkflowState>;
|
|
16
|
+
/** Persists the current workflow state to disk. */
|
|
17
|
+
export declare function saveWorkflowState(state: WorkflowState): Promise<void>;
|
|
18
|
+
/** Loads a workflow state from disk by ID. Returns null if not found. */
|
|
19
|
+
export declare function loadWorkflowState(id: string): Promise<WorkflowState | null>;
|
|
20
|
+
/**
|
|
21
|
+
* Lists all persisted workflows.
|
|
22
|
+
* Returns an array of workflow states sorted by creation time (newest first).
|
|
23
|
+
*/
|
|
24
|
+
export declare function listWorkflows(): Promise<WorkflowState[]>;
|
|
25
|
+
/**
|
|
26
|
+
* Executes a workflow from the beginning.
|
|
27
|
+
* Runs steps sequentially, persisting state after each step completes.
|
|
28
|
+
* Stops if a step fails.
|
|
29
|
+
*
|
|
30
|
+
* @param state — the workflow state to execute (from createWorkflow)
|
|
31
|
+
* @param runStep — callback that executes a single step's task
|
|
32
|
+
* @returns the final workflow state
|
|
33
|
+
*/
|
|
34
|
+
export declare function runWorkflow(state: WorkflowState, runStep: RunStepFn): Promise<WorkflowState>;
|
|
35
|
+
/**
|
|
36
|
+
* Resumes a workflow from disk.
|
|
37
|
+
* Finds the first non-done step and runs from there.
|
|
38
|
+
* Steps with status 'done' are skipped (their results are passed to runStep).
|
|
39
|
+
*
|
|
40
|
+
* @param id — the workflow ID to resume
|
|
41
|
+
* @param runStep — callback that executes a single step's task
|
|
42
|
+
* @returns the final workflow state, or null if the workflow was not found
|
|
43
|
+
*/
|
|
44
|
+
export declare function resumeWorkflow(id: string, runStep: RunStepFn): Promise<WorkflowState | null>;
|
|
45
|
+
/** Deletes a persisted workflow state file. Returns true if deleted. */
|
|
46
|
+
export declare function deleteWorkflow(id: string): Promise<boolean>;
|
|
@@ -0,0 +1,320 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.workflowsDir = workflowsDir;
|
|
37
|
+
exports.createWorkflow = createWorkflow;
|
|
38
|
+
exports.saveWorkflowState = saveWorkflowState;
|
|
39
|
+
exports.loadWorkflowState = loadWorkflowState;
|
|
40
|
+
exports.listWorkflows = listWorkflows;
|
|
41
|
+
exports.runWorkflow = runWorkflow;
|
|
42
|
+
exports.resumeWorkflow = resumeWorkflow;
|
|
43
|
+
exports.deleteWorkflow = deleteWorkflow;
|
|
44
|
+
const fs = __importStar(require("fs"));
|
|
45
|
+
const path = __importStar(require("path"));
|
|
46
|
+
const crypto = __importStar(require("crypto"));
|
|
47
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
48
|
+
// Constants
|
|
49
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
50
|
+
const WORKFLOW_VERSION = 1;
|
|
51
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
52
|
+
// Helpers
|
|
53
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
54
|
+
function generateId() {
|
|
55
|
+
return crypto.randomBytes(4).toString('hex') + '-' + Date.now().toString(36);
|
|
56
|
+
}
|
|
57
|
+
/** Returns ~/.aura/workflows (or $AURA_WORKFLOW_DIR if set). */
|
|
58
|
+
function workflowsDir() {
|
|
59
|
+
return process.env.AURA_WORKFLOW_DIR
|
|
60
|
+
?? path.join(process.env.HOME ?? '/tmp', '.aura', 'workflows');
|
|
61
|
+
}
|
|
62
|
+
function workflowPath(id) {
|
|
63
|
+
return path.join(workflowsDir(), `${id}.json`);
|
|
64
|
+
}
|
|
65
|
+
/** Atomically write JSON to a file using a .tmp rename. */
|
|
66
|
+
async function writeJson(filePath, data) {
|
|
67
|
+
const dir = path.dirname(filePath);
|
|
68
|
+
if (!fs.existsSync(dir))
|
|
69
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
70
|
+
const tmp = filePath + '.tmp';
|
|
71
|
+
await fs.promises.writeFile(tmp, JSON.stringify(data, null, 2), 'utf8');
|
|
72
|
+
await fs.promises.rename(tmp, filePath);
|
|
73
|
+
}
|
|
74
|
+
/** Read and parse a JSON file; returns null on any error. */
|
|
75
|
+
async function readJson(filePath) {
|
|
76
|
+
if (!fs.existsSync(filePath))
|
|
77
|
+
return null;
|
|
78
|
+
try {
|
|
79
|
+
const raw = await fs.promises.readFile(filePath, 'utf8');
|
|
80
|
+
return JSON.parse(raw);
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
return null;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
/** Build the initial StepState array from a definition's steps. */
|
|
87
|
+
function buildInitialStepStates(steps) {
|
|
88
|
+
return steps.map(s => ({
|
|
89
|
+
stepName: s.name,
|
|
90
|
+
status: 'pending',
|
|
91
|
+
}));
|
|
92
|
+
}
|
|
93
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
94
|
+
// createWorkflow
|
|
95
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
96
|
+
/**
|
|
97
|
+
* Creates a new workflow definition and its initial state.
|
|
98
|
+
* Persists the state to ~/.aura/workflows/<id>.json.
|
|
99
|
+
* Returns the workflow state.
|
|
100
|
+
*/
|
|
101
|
+
async function createWorkflow(opts) {
|
|
102
|
+
const id = generateId();
|
|
103
|
+
const now = Date.now();
|
|
104
|
+
const definition = {
|
|
105
|
+
id,
|
|
106
|
+
name: opts.name,
|
|
107
|
+
description: opts.description,
|
|
108
|
+
steps: opts.steps,
|
|
109
|
+
createdAt: now,
|
|
110
|
+
};
|
|
111
|
+
const state = {
|
|
112
|
+
definition,
|
|
113
|
+
status: 'pending',
|
|
114
|
+
stepStates: buildInitialStepStates(opts.steps),
|
|
115
|
+
currentStep: -1,
|
|
116
|
+
};
|
|
117
|
+
await writeJson(workflowPath(id), { version: WORKFLOW_VERSION, state });
|
|
118
|
+
return state;
|
|
119
|
+
}
|
|
120
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
121
|
+
// saveWorkflowState — persistence hook called after each step
|
|
122
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
123
|
+
/** Persists the current workflow state to disk. */
|
|
124
|
+
async function saveWorkflowState(state) {
|
|
125
|
+
await writeJson(workflowPath(state.definition.id), { version: WORKFLOW_VERSION, state });
|
|
126
|
+
}
|
|
127
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
128
|
+
// loadWorkflowState
|
|
129
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
130
|
+
/** Loads a workflow state from disk by ID. Returns null if not found. */
|
|
131
|
+
async function loadWorkflowState(id) {
|
|
132
|
+
const raw = await readJson(workflowPath(id));
|
|
133
|
+
if (!raw || !raw.state)
|
|
134
|
+
return null;
|
|
135
|
+
return raw.state;
|
|
136
|
+
}
|
|
137
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
138
|
+
// listWorkflows
|
|
139
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
140
|
+
/**
|
|
141
|
+
* Lists all persisted workflows.
|
|
142
|
+
* Returns an array of workflow states sorted by creation time (newest first).
|
|
143
|
+
*/
|
|
144
|
+
async function listWorkflows() {
|
|
145
|
+
const dir = workflowsDir();
|
|
146
|
+
if (!fs.existsSync(dir))
|
|
147
|
+
return [];
|
|
148
|
+
const files = fs.readdirSync(dir).filter(f => f.endsWith('.json'));
|
|
149
|
+
const workflows = [];
|
|
150
|
+
for (const file of files) {
|
|
151
|
+
const raw = await readJson(path.join(dir, file));
|
|
152
|
+
if (raw && raw.state) {
|
|
153
|
+
workflows.push(raw.state);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
return workflows.sort((a, b) => (b.definition.createdAt) - (a.definition.createdAt));
|
|
157
|
+
}
|
|
158
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
159
|
+
// runWorkflow
|
|
160
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
161
|
+
/**
|
|
162
|
+
* Executes a workflow from the beginning.
|
|
163
|
+
* Runs steps sequentially, persisting state after each step completes.
|
|
164
|
+
* Stops if a step fails.
|
|
165
|
+
*
|
|
166
|
+
* @param state — the workflow state to execute (from createWorkflow)
|
|
167
|
+
* @param runStep — callback that executes a single step's task
|
|
168
|
+
* @returns the final workflow state
|
|
169
|
+
*/
|
|
170
|
+
async function runWorkflow(state, runStep) {
|
|
171
|
+
state.status = 'running';
|
|
172
|
+
state.startedAt = Date.now();
|
|
173
|
+
state.currentStep = 0;
|
|
174
|
+
await saveWorkflowState(state);
|
|
175
|
+
const previousResults = [];
|
|
176
|
+
for (let i = 0; i < state.definition.steps.length; i++) {
|
|
177
|
+
const step = state.definition.steps[i];
|
|
178
|
+
const stepState = state.stepStates[i];
|
|
179
|
+
// Mark step as running
|
|
180
|
+
stepState.status = 'running';
|
|
181
|
+
stepState.startedAt = Date.now();
|
|
182
|
+
state.currentStep = i;
|
|
183
|
+
await saveWorkflowState(state);
|
|
184
|
+
try {
|
|
185
|
+
const result = await runStep(step.task, i, previousResults);
|
|
186
|
+
// Mark step as done
|
|
187
|
+
stepState.status = 'done';
|
|
188
|
+
stepState.result = result.summary;
|
|
189
|
+
stepState.turns = result.turns;
|
|
190
|
+
stepState.toolCallCount = result.toolCallCount;
|
|
191
|
+
stepState.tokensUsed = result.tokensUsed;
|
|
192
|
+
stepState.completedAt = Date.now();
|
|
193
|
+
state.totalTokens = (state.totalTokens ?? 0) + result.tokensUsed;
|
|
194
|
+
previousResults.push(result);
|
|
195
|
+
await saveWorkflowState(state);
|
|
196
|
+
}
|
|
197
|
+
catch (err) {
|
|
198
|
+
// Mark step as failed, pause workflow
|
|
199
|
+
stepState.status = 'failed';
|
|
200
|
+
stepState.error = err instanceof Error ? err.message : String(err);
|
|
201
|
+
stepState.completedAt = Date.now();
|
|
202
|
+
state.status = 'failed';
|
|
203
|
+
state.completedAt = Date.now();
|
|
204
|
+
state.outcome = `Workflow failed at step "${step.name}": ${stepState.error}`;
|
|
205
|
+
await saveWorkflowState(state);
|
|
206
|
+
return state;
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
// All steps completed
|
|
210
|
+
state.status = 'done';
|
|
211
|
+
state.completedAt = Date.now();
|
|
212
|
+
state.currentStep = state.definition.steps.length;
|
|
213
|
+
state.outcome = `Workflow "${state.definition.name}" completed — ${state.definition.steps.length} steps`;
|
|
214
|
+
await saveWorkflowState(state);
|
|
215
|
+
return state;
|
|
216
|
+
}
|
|
217
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
218
|
+
// resumeWorkflow
|
|
219
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
220
|
+
/**
|
|
221
|
+
* Resumes a workflow from disk.
|
|
222
|
+
* Finds the first non-done step and runs from there.
|
|
223
|
+
* Steps with status 'done' are skipped (their results are passed to runStep).
|
|
224
|
+
*
|
|
225
|
+
* @param id — the workflow ID to resume
|
|
226
|
+
* @param runStep — callback that executes a single step's task
|
|
227
|
+
* @returns the final workflow state, or null if the workflow was not found
|
|
228
|
+
*/
|
|
229
|
+
async function resumeWorkflow(id, runStep) {
|
|
230
|
+
const state = await loadWorkflowState(id);
|
|
231
|
+
if (!state)
|
|
232
|
+
return null;
|
|
233
|
+
// Cannot resume a completed workflow
|
|
234
|
+
if (state.status === 'done') {
|
|
235
|
+
return state;
|
|
236
|
+
}
|
|
237
|
+
state.status = 'running';
|
|
238
|
+
await saveWorkflowState(state);
|
|
239
|
+
// Reconstruct previousResults from completed steps
|
|
240
|
+
const previousResults = state.stepStates
|
|
241
|
+
.filter(ss => ss.status === 'done')
|
|
242
|
+
.map(ss => ({
|
|
243
|
+
success: true,
|
|
244
|
+
summary: ss.result ?? '',
|
|
245
|
+
turns: ss.turns ?? 0,
|
|
246
|
+
toolCallCount: ss.toolCallCount ?? 0,
|
|
247
|
+
tokensUsed: ss.tokensUsed ?? 0,
|
|
248
|
+
}));
|
|
249
|
+
// Find the first step that needs to run
|
|
250
|
+
let startIndex = state.definition.steps.findIndex((_, i) => state.stepStates[i].status !== 'done');
|
|
251
|
+
// If all steps are done (shouldn't happen since status isn't 'done'), just finish
|
|
252
|
+
if (startIndex === -1) {
|
|
253
|
+
state.status = 'done';
|
|
254
|
+
state.completedAt = Date.now();
|
|
255
|
+
state.outcome = `Workflow "${state.definition.name}" already completed`;
|
|
256
|
+
await saveWorkflowState(state);
|
|
257
|
+
return state;
|
|
258
|
+
}
|
|
259
|
+
// Reset a previously-failed step to pending so it retries
|
|
260
|
+
if (state.stepStates[startIndex].status === 'failed') {
|
|
261
|
+
state.stepStates[startIndex].status = 'pending';
|
|
262
|
+
state.stepStates[startIndex].error = undefined;
|
|
263
|
+
state.stepStates[startIndex].startedAt = undefined;
|
|
264
|
+
state.stepStates[startIndex].completedAt = undefined;
|
|
265
|
+
}
|
|
266
|
+
state.startedAt = state.startedAt ?? Date.now();
|
|
267
|
+
await saveWorkflowState(state);
|
|
268
|
+
for (let i = startIndex; i < state.definition.steps.length; i++) {
|
|
269
|
+
const step = state.definition.steps[i];
|
|
270
|
+
const stepState = state.stepStates[i];
|
|
271
|
+
// Mark step as running
|
|
272
|
+
stepState.status = 'running';
|
|
273
|
+
stepState.startedAt = Date.now();
|
|
274
|
+
state.currentStep = i;
|
|
275
|
+
await saveWorkflowState(state);
|
|
276
|
+
try {
|
|
277
|
+
const result = await runStep(step.task, i, previousResults);
|
|
278
|
+
// Mark step as done
|
|
279
|
+
stepState.status = 'done';
|
|
280
|
+
stepState.result = result.summary;
|
|
281
|
+
stepState.turns = result.turns;
|
|
282
|
+
stepState.toolCallCount = result.toolCallCount;
|
|
283
|
+
stepState.tokensUsed = result.tokensUsed;
|
|
284
|
+
stepState.completedAt = Date.now();
|
|
285
|
+
state.totalTokens = (state.totalTokens ?? 0) + result.tokensUsed;
|
|
286
|
+
previousResults.push(result);
|
|
287
|
+
await saveWorkflowState(state);
|
|
288
|
+
}
|
|
289
|
+
catch (err) {
|
|
290
|
+
// Mark step as failed, pause workflow
|
|
291
|
+
stepState.status = 'failed';
|
|
292
|
+
stepState.error = err instanceof Error ? err.message : String(err);
|
|
293
|
+
stepState.completedAt = Date.now();
|
|
294
|
+
state.status = 'failed';
|
|
295
|
+
state.completedAt = Date.now();
|
|
296
|
+
state.outcome = `Workflow failed at step "${step.name}": ${stepState.error}`;
|
|
297
|
+
await saveWorkflowState(state);
|
|
298
|
+
return state;
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
// All steps completed
|
|
302
|
+
state.status = 'done';
|
|
303
|
+
state.completedAt = Date.now();
|
|
304
|
+
state.currentStep = state.definition.steps.length;
|
|
305
|
+
state.outcome = `Workflow "${state.definition.name}" completed — ${state.definition.steps.length} steps`;
|
|
306
|
+
await saveWorkflowState(state);
|
|
307
|
+
return state;
|
|
308
|
+
}
|
|
309
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
310
|
+
// deleteWorkflow
|
|
311
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
312
|
+
/** Deletes a persisted workflow state file. Returns true if deleted. */
|
|
313
|
+
async function deleteWorkflow(id) {
|
|
314
|
+
const filePath = workflowPath(id);
|
|
315
|
+
if (!fs.existsSync(filePath))
|
|
316
|
+
return false;
|
|
317
|
+
await fs.promises.unlink(filePath);
|
|
318
|
+
return true;
|
|
319
|
+
}
|
|
320
|
+
//# sourceMappingURL=engine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/workflows/engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A single named task within a workflow.
|
|
3
|
+
* Steps are executed sequentially in the order they appear in the definition.
|
|
4
|
+
*/
|
|
5
|
+
export interface WorkflowStep {
|
|
6
|
+
/** Human-readable name for this step (unique within the workflow). */
|
|
7
|
+
name: string;
|
|
8
|
+
/** The task prompt sent to the agent loop for this step. */
|
|
9
|
+
task: string;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Static definition of a workflow — the blueprint before execution.
|
|
13
|
+
*/
|
|
14
|
+
export interface WorkflowDefinition {
|
|
15
|
+
/** Unique identifier for this workflow (generated on creation). */
|
|
16
|
+
id: string;
|
|
17
|
+
/** Human-readable workflow name. */
|
|
18
|
+
name: string;
|
|
19
|
+
/** Optional description of what this workflow accomplishes. */
|
|
20
|
+
description?: string;
|
|
21
|
+
/** Ordered list of steps to execute sequentially. */
|
|
22
|
+
steps: WorkflowStep[];
|
|
23
|
+
/** Unix timestamp (ms) when this workflow was created. */
|
|
24
|
+
createdAt: number;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Lifecycle state of a single step within a running workflow.
|
|
28
|
+
*/
|
|
29
|
+
export type StepStatus = 'pending' | 'running' | 'done' | 'failed' | 'skipped';
|
|
30
|
+
/**
|
|
31
|
+
* Runtime state of a workflow — persisted to disk after each step completes.
|
|
32
|
+
* Used for resume: the engine reads this to know which step to pick up from.
|
|
33
|
+
*/
|
|
34
|
+
export interface WorkflowState {
|
|
35
|
+
/** The full workflow definition (copied into state for self-contained files). */
|
|
36
|
+
definition: WorkflowDefinition;
|
|
37
|
+
/**
|
|
38
|
+
* Lifecycle state of the overall workflow.
|
|
39
|
+
* - `pending` — created but not yet started
|
|
40
|
+
* - `running` — at least one step is executing
|
|
41
|
+
* - `paused` — user or system paused; can be resumed
|
|
42
|
+
* - `done` — all steps completed successfully
|
|
43
|
+
* - `failed` — a step failed and execution halted
|
|
44
|
+
*/
|
|
45
|
+
status: 'pending' | 'running' | 'paused' | 'done' | 'failed';
|
|
46
|
+
/**
|
|
47
|
+
* Per-step status tracking, indexed in the same order as definition.steps.
|
|
48
|
+
* Each entry includes the step result (summary) and timing metadata.
|
|
49
|
+
*/
|
|
50
|
+
stepStates: StepState[];
|
|
51
|
+
/** Index of the step currently running or next to run (0-based). -1 if not started. */
|
|
52
|
+
currentStep: number;
|
|
53
|
+
/** Unix timestamp (ms) when workflow execution began. */
|
|
54
|
+
startedAt?: number;
|
|
55
|
+
/** Unix timestamp (ms) when workflow reached a terminal state. */
|
|
56
|
+
completedAt?: number;
|
|
57
|
+
/** Total number of tokens consumed across all completed steps. */
|
|
58
|
+
totalTokens?: number;
|
|
59
|
+
/** Overall result summary (set when status is 'done' or 'failed'). */
|
|
60
|
+
outcome?: string;
|
|
61
|
+
}
|
|
62
|
+
/** Result of a single step execution (returned by the runStep callback). */
|
|
63
|
+
export interface StepResult {
|
|
64
|
+
success: boolean;
|
|
65
|
+
summary: string;
|
|
66
|
+
turns: number;
|
|
67
|
+
toolCallCount: number;
|
|
68
|
+
tokensUsed: number;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Runtime state of a single step within a workflow.
|
|
72
|
+
*/
|
|
73
|
+
export interface StepState {
|
|
74
|
+
/** Name of the step (matches WorkflowStep.name). */
|
|
75
|
+
stepName: string;
|
|
76
|
+
/** Current lifecycle status of this step. */
|
|
77
|
+
status: StepStatus;
|
|
78
|
+
/** Result summary produced by the agent loop, if completed. */
|
|
79
|
+
result?: string;
|
|
80
|
+
/** Number of turns the agent loop took for this step. */
|
|
81
|
+
turns?: number;
|
|
82
|
+
/** Number of tool calls the agent loop made for this step. */
|
|
83
|
+
toolCallCount?: number;
|
|
84
|
+
/** Tokens consumed by this step. */
|
|
85
|
+
tokensUsed?: number;
|
|
86
|
+
/** Error message if status is 'failed'. */
|
|
87
|
+
error?: string;
|
|
88
|
+
/** Unix timestamp (ms) when this step started executing. */
|
|
89
|
+
startedAt?: number;
|
|
90
|
+
/** Unix timestamp (ms) when this step finished (done/failed). */
|
|
91
|
+
completedAt?: number;
|
|
92
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
3
|
+
// Workflow types — persistent sequential workflow engine
|
|
4
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/workflows/types.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yDAAyD;AACzD,gFAAgF"}
|
package/package.json
ADDED
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "aura-code",
|
|
3
|
+
"version": "0.3.0",
|
|
4
|
+
"description": "Aura Code — model-agnostic AI coding agent. Works with Claude, GPT, Gemini, MiMo, Ollama, and any OpenAI-compatible endpoint. MIT licensed.",
|
|
5
|
+
"bin": {
|
|
6
|
+
"aura": "dist/cli/index.js"
|
|
7
|
+
},
|
|
8
|
+
"main": "./dist/cli/index.js",
|
|
9
|
+
"homepage": "https://lean-progress-iq-site.vercel.app",
|
|
10
|
+
"repository": {
|
|
11
|
+
"type": "git",
|
|
12
|
+
"url": "git+https://github.com/milodule3-debug/aura-code.git"
|
|
13
|
+
},
|
|
14
|
+
"bugs": {
|
|
15
|
+
"url": "https://github.com/milodule3-debug/aura-code/issues"
|
|
16
|
+
},
|
|
17
|
+
"author": {
|
|
18
|
+
"name": "Dušan Milosavljević",
|
|
19
|
+
"email": "leanproiq@gmail.com",
|
|
20
|
+
"url": "https://lean-progress-iq-site.vercel.app"
|
|
21
|
+
},
|
|
22
|
+
"files": [
|
|
23
|
+
"dist/",
|
|
24
|
+
"LICENSE",
|
|
25
|
+
"README.md",
|
|
26
|
+
"package.json"
|
|
27
|
+
],
|
|
28
|
+
"scripts": {
|
|
29
|
+
"build": "tsc",
|
|
30
|
+
"dev": "ts-node src/cli/index.ts",
|
|
31
|
+
"start": "node dist/cli/index.js",
|
|
32
|
+
"clean": "rm -rf dist",
|
|
33
|
+
"test": "vitest run",
|
|
34
|
+
"test:watch": "vitest",
|
|
35
|
+
"test:coverage": "vitest run --coverage"
|
|
36
|
+
},
|
|
37
|
+
"dependencies": {
|
|
38
|
+
"@anthropic-ai/sdk": "^0.32.1",
|
|
39
|
+
"@google/generative-ai": "^0.21.0",
|
|
40
|
+
"chalk": "^4.1.2",
|
|
41
|
+
"express": "^5.2.1",
|
|
42
|
+
"glob": "^10.4.5",
|
|
43
|
+
"minimist": "^1.2.8",
|
|
44
|
+
"openai": "^4.68.4",
|
|
45
|
+
"pptxgenjs": "^4.0.1",
|
|
46
|
+
"puppeteer-core": "^25.1.0",
|
|
47
|
+
"ws": "^8.21.0"
|
|
48
|
+
},
|
|
49
|
+
"devDependencies": {
|
|
50
|
+
"@types/express": "^5.0.6",
|
|
51
|
+
"@types/minimist": "^1.2.5",
|
|
52
|
+
"@types/node": "^22.0.0",
|
|
53
|
+
"@types/ws": "^8.18.1",
|
|
54
|
+
"@vitest/coverage-v8": "^2.1.0",
|
|
55
|
+
"ts-node": "^10.9.2",
|
|
56
|
+
"typescript": "^5.5.4",
|
|
57
|
+
"vitest": "^2.1.0"
|
|
58
|
+
},
|
|
59
|
+
"engines": {
|
|
60
|
+
"node": ">=18.0.0"
|
|
61
|
+
},
|
|
62
|
+
"keywords": [
|
|
63
|
+
"ai",
|
|
64
|
+
"agent",
|
|
65
|
+
"coding",
|
|
66
|
+
"cli",
|
|
67
|
+
"model-agnostic",
|
|
68
|
+
"aura",
|
|
69
|
+
"praktess",
|
|
70
|
+
"claude",
|
|
71
|
+
"gpt",
|
|
72
|
+
"gemini",
|
|
73
|
+
"ollama",
|
|
74
|
+
"developer-tools",
|
|
75
|
+
"code-generation",
|
|
76
|
+
"autonomous-agent",
|
|
77
|
+
"llm",
|
|
78
|
+
"typescript"
|
|
79
|
+
],
|
|
80
|
+
"license": "MIT",
|
|
81
|
+
"directories": {
|
|
82
|
+
"test": "tests"
|
|
83
|
+
},
|
|
84
|
+
"type": "commonjs",
|
|
85
|
+
"types": "./dist/cli/index.d.ts"
|
|
86
|
+
}
|