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.
Files changed (288) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +137 -0
  3. package/dist/agent/context.d.ts +13 -0
  4. package/dist/agent/context.js +183 -0
  5. package/dist/agent/context.js.map +1 -0
  6. package/dist/agent/loop.d.ts +60 -0
  7. package/dist/agent/loop.js +228 -0
  8. package/dist/agent/loop.js.map +1 -0
  9. package/dist/agent/session-store.d.ts +30 -0
  10. package/dist/agent/session-store.js +178 -0
  11. package/dist/agent/session-store.js.map +1 -0
  12. package/dist/agent/spawner.d.ts +57 -0
  13. package/dist/agent/spawner.js +112 -0
  14. package/dist/agent/spawner.js.map +1 -0
  15. package/dist/agent/system-prompt.d.ts +3 -0
  16. package/dist/agent/system-prompt.js +100 -0
  17. package/dist/agent/system-prompt.js.map +1 -0
  18. package/dist/architect/engine.d.ts +47 -0
  19. package/dist/architect/engine.js +217 -0
  20. package/dist/architect/engine.js.map +1 -0
  21. package/dist/architect/types.d.ts +61 -0
  22. package/dist/architect/types.js +6 -0
  23. package/dist/architect/types.js.map +1 -0
  24. package/dist/cli/diamond.d.ts +1 -0
  25. package/dist/cli/diamond.js +23 -0
  26. package/dist/cli/diamond.js.map +1 -0
  27. package/dist/cli/display.d.ts +44 -0
  28. package/dist/cli/display.js +234 -0
  29. package/dist/cli/display.js.map +1 -0
  30. package/dist/cli/index.d.ts +2 -0
  31. package/dist/cli/index.js +1734 -0
  32. package/dist/cli/index.js.map +1 -0
  33. package/dist/config/defaults.d.ts +46 -0
  34. package/dist/config/defaults.js +106 -0
  35. package/dist/config/defaults.js.map +1 -0
  36. package/dist/config/project-config.d.ts +90 -0
  37. package/dist/config/project-config.js +141 -0
  38. package/dist/config/project-config.js.map +1 -0
  39. package/dist/harness/proposer.d.ts +26 -0
  40. package/dist/harness/proposer.js +204 -0
  41. package/dist/harness/proposer.js.map +1 -0
  42. package/dist/harness/weakness-miner.d.ts +28 -0
  43. package/dist/harness/weakness-miner.js +359 -0
  44. package/dist/harness/weakness-miner.js.map +1 -0
  45. package/dist/integrations/harnesses.d.ts +23 -0
  46. package/dist/integrations/harnesses.js +161 -0
  47. package/dist/integrations/harnesses.js.map +1 -0
  48. package/dist/orchestration/competence.d.ts +53 -0
  49. package/dist/orchestration/competence.js +181 -0
  50. package/dist/orchestration/competence.js.map +1 -0
  51. package/dist/orchestration/executor.d.ts +42 -0
  52. package/dist/orchestration/executor.js +206 -0
  53. package/dist/orchestration/executor.js.map +1 -0
  54. package/dist/orchestration/index.d.ts +20 -0
  55. package/dist/orchestration/index.js +39 -0
  56. package/dist/orchestration/index.js.map +1 -0
  57. package/dist/orchestration/orchestrator-prompts.d.ts +11 -0
  58. package/dist/orchestration/orchestrator-prompts.js +153 -0
  59. package/dist/orchestration/orchestrator-prompts.js.map +1 -0
  60. package/dist/orchestration/orchestrator.d.ts +27 -0
  61. package/dist/orchestration/orchestrator.js +169 -0
  62. package/dist/orchestration/orchestrator.js.map +1 -0
  63. package/dist/orchestration/plan-store.d.ts +53 -0
  64. package/dist/orchestration/plan-store.js +176 -0
  65. package/dist/orchestration/plan-store.js.map +1 -0
  66. package/dist/orchestration/router-prompts.d.ts +6 -0
  67. package/dist/orchestration/router-prompts.js +55 -0
  68. package/dist/orchestration/router-prompts.js.map +1 -0
  69. package/dist/orchestration/router.d.ts +23 -0
  70. package/dist/orchestration/router.js +70 -0
  71. package/dist/orchestration/router.js.map +1 -0
  72. package/dist/orchestration/ruby-detect.d.ts +6 -0
  73. package/dist/orchestration/ruby-detect.js +130 -0
  74. package/dist/orchestration/ruby-detect.js.map +1 -0
  75. package/dist/orchestration/ruby-types.d.ts +44 -0
  76. package/dist/orchestration/ruby-types.js +6 -0
  77. package/dist/orchestration/ruby-types.js.map +1 -0
  78. package/dist/orchestration/specialist-prompts.d.ts +19 -0
  79. package/dist/orchestration/specialist-prompts.js +143 -0
  80. package/dist/orchestration/specialist-prompts.js.map +1 -0
  81. package/dist/orchestration/specialists.d.ts +66 -0
  82. package/dist/orchestration/specialists.js +175 -0
  83. package/dist/orchestration/specialists.js.map +1 -0
  84. package/dist/orchestration/types.d.ts +82 -0
  85. package/dist/orchestration/types.js +6 -0
  86. package/dist/orchestration/types.js.map +1 -0
  87. package/dist/perception/extractor.d.ts +7 -0
  88. package/dist/perception/extractor.js +521 -0
  89. package/dist/perception/extractor.js.map +1 -0
  90. package/dist/perception/graph-store.d.ts +25 -0
  91. package/dist/perception/graph-store.js +117 -0
  92. package/dist/perception/graph-store.js.map +1 -0
  93. package/dist/perception/index.d.ts +4 -0
  94. package/dist/perception/index.js +18 -0
  95. package/dist/perception/index.js.map +1 -0
  96. package/dist/perception/queries.d.ts +29 -0
  97. package/dist/perception/queries.js +354 -0
  98. package/dist/perception/queries.js.map +1 -0
  99. package/dist/perception/types.d.ts +103 -0
  100. package/dist/perception/types.js +6 -0
  101. package/dist/perception/types.js.map +1 -0
  102. package/dist/providers/anthropic.d.ts +11 -0
  103. package/dist/providers/anthropic.js +172 -0
  104. package/dist/providers/anthropic.js.map +1 -0
  105. package/dist/providers/factory.d.ts +58 -0
  106. package/dist/providers/factory.js +354 -0
  107. package/dist/providers/factory.js.map +1 -0
  108. package/dist/providers/fallback.d.ts +24 -0
  109. package/dist/providers/fallback.js +72 -0
  110. package/dist/providers/fallback.js.map +1 -0
  111. package/dist/providers/google.d.ts +11 -0
  112. package/dist/providers/google.js +129 -0
  113. package/dist/providers/google.js.map +1 -0
  114. package/dist/providers/openai-compatible.d.ts +24 -0
  115. package/dist/providers/openai-compatible.js +216 -0
  116. package/dist/providers/openai-compatible.js.map +1 -0
  117. package/dist/providers/resilient-factory.d.ts +24 -0
  118. package/dist/providers/resilient-factory.js +57 -0
  119. package/dist/providers/resilient-factory.js.map +1 -0
  120. package/dist/providers/resilient.d.ts +63 -0
  121. package/dist/providers/resilient.js +145 -0
  122. package/dist/providers/resilient.js.map +1 -0
  123. package/dist/providers/types.d.ts +84 -0
  124. package/dist/providers/types.js +6 -0
  125. package/dist/providers/types.js.map +1 -0
  126. package/dist/ruby/alternator.d.ts +40 -0
  127. package/dist/ruby/alternator.js +233 -0
  128. package/dist/ruby/alternator.js.map +1 -0
  129. package/dist/ruby/competence.d.ts +34 -0
  130. package/dist/ruby/competence.js +264 -0
  131. package/dist/ruby/competence.js.map +1 -0
  132. package/dist/ruby/episode-capture.d.ts +56 -0
  133. package/dist/ruby/episode-capture.js +193 -0
  134. package/dist/ruby/episode-capture.js.map +1 -0
  135. package/dist/ruby/fine-tune.d.ts +16 -0
  136. package/dist/ruby/fine-tune.js +253 -0
  137. package/dist/ruby/fine-tune.js.map +1 -0
  138. package/dist/ruby/index.d.ts +10 -0
  139. package/dist/ruby/index.js +26 -0
  140. package/dist/ruby/index.js.map +1 -0
  141. package/dist/ruby/ruby-model.d.ts +36 -0
  142. package/dist/ruby/ruby-model.js +81 -0
  143. package/dist/ruby/ruby-model.js.map +1 -0
  144. package/dist/ruby/training-data.d.ts +11 -0
  145. package/dist/ruby/training-data.js +107 -0
  146. package/dist/ruby/training-data.js.map +1 -0
  147. package/dist/ruby/types.d.ts +136 -0
  148. package/dist/ruby/types.js +20 -0
  149. package/dist/ruby/types.js.map +1 -0
  150. package/dist/safety/permissions.d.ts +32 -0
  151. package/dist/safety/permissions.js +304 -0
  152. package/dist/safety/permissions.js.map +1 -0
  153. package/dist/server/index.d.ts +9 -0
  154. package/dist/server/index.js +342 -0
  155. package/dist/server/index.js.map +1 -0
  156. package/dist/server/session.d.ts +22 -0
  157. package/dist/server/session.js +16 -0
  158. package/dist/server/session.js.map +1 -0
  159. package/dist/setup/first-run.d.ts +41 -0
  160. package/dist/setup/first-run.js +386 -0
  161. package/dist/setup/first-run.js.map +1 -0
  162. package/dist/setup/global-config.d.ts +19 -0
  163. package/dist/setup/global-config.js +97 -0
  164. package/dist/setup/global-config.js.map +1 -0
  165. package/dist/tools/audio-transcribe.d.ts +8 -0
  166. package/dist/tools/audio-transcribe.js +156 -0
  167. package/dist/tools/audio-transcribe.js.map +1 -0
  168. package/dist/tools/browser.d.ts +15 -0
  169. package/dist/tools/browser.js +241 -0
  170. package/dist/tools/browser.js.map +1 -0
  171. package/dist/tools/calendar.d.ts +12 -0
  172. package/dist/tools/calendar.js +196 -0
  173. package/dist/tools/calendar.js.map +1 -0
  174. package/dist/tools/clipboard.d.ts +7 -0
  175. package/dist/tools/clipboard.js +90 -0
  176. package/dist/tools/clipboard.js.map +1 -0
  177. package/dist/tools/cron.d.ts +10 -0
  178. package/dist/tools/cron.js +167 -0
  179. package/dist/tools/cron.js.map +1 -0
  180. package/dist/tools/edit-file.d.ts +6 -0
  181. package/dist/tools/edit-file.js +98 -0
  182. package/dist/tools/edit-file.js.map +1 -0
  183. package/dist/tools/email.d.ts +11 -0
  184. package/dist/tools/email.js +153 -0
  185. package/dist/tools/email.js.map +1 -0
  186. package/dist/tools/git.d.ts +1 -0
  187. package/dist/tools/git.js +7 -0
  188. package/dist/tools/git.js.map +1 -0
  189. package/dist/tools/http-request.d.ts +12 -0
  190. package/dist/tools/http-request.js +91 -0
  191. package/dist/tools/http-request.js.map +1 -0
  192. package/dist/tools/image-read.d.ts +7 -0
  193. package/dist/tools/image-read.js +125 -0
  194. package/dist/tools/image-read.js.map +1 -0
  195. package/dist/tools/index.d.ts +3 -0
  196. package/dist/tools/index.js +201 -0
  197. package/dist/tools/index.js.map +1 -0
  198. package/dist/tools/list-dir.d.ts +1 -0
  199. package/dist/tools/list-dir.js +6 -0
  200. package/dist/tools/list-dir.js.map +1 -0
  201. package/dist/tools/mcp.d.ts +11 -0
  202. package/dist/tools/mcp.js +356 -0
  203. package/dist/tools/mcp.js.map +1 -0
  204. package/dist/tools/memory.d.ts +9 -0
  205. package/dist/tools/memory.js +124 -0
  206. package/dist/tools/memory.js.map +1 -0
  207. package/dist/tools/notify.d.ts +9 -0
  208. package/dist/tools/notify.js +40 -0
  209. package/dist/tools/notify.js.map +1 -0
  210. package/dist/tools/read-file.d.ts +6 -0
  211. package/dist/tools/read-file.js +76 -0
  212. package/dist/tools/read-file.js.map +1 -0
  213. package/dist/tools/run-shell.d.ts +1 -0
  214. package/dist/tools/run-shell.js +6 -0
  215. package/dist/tools/run-shell.js.map +1 -0
  216. package/dist/tools/run-tests.d.ts +1 -0
  217. package/dist/tools/run-tests.js +6 -0
  218. package/dist/tools/run-tests.js.map +1 -0
  219. package/dist/tools/search-code.d.ts +1 -0
  220. package/dist/tools/search-code.js +6 -0
  221. package/dist/tools/search-code.js.map +1 -0
  222. package/dist/tools/telegram-bot.d.ts +2 -0
  223. package/dist/tools/telegram-bot.js +693 -0
  224. package/dist/tools/telegram-bot.js.map +1 -0
  225. package/dist/tools/telegram-safety.d.ts +52 -0
  226. package/dist/tools/telegram-safety.js +189 -0
  227. package/dist/tools/telegram-safety.js.map +1 -0
  228. package/dist/tools/telegram.d.ts +16 -0
  229. package/dist/tools/telegram.js +227 -0
  230. package/dist/tools/telegram.js.map +1 -0
  231. package/dist/tools/tools.d.ts +48 -0
  232. package/dist/tools/tools.js +328 -0
  233. package/dist/tools/tools.js.map +1 -0
  234. package/dist/tools/web-fetch.d.ts +11 -0
  235. package/dist/tools/web-fetch.js +119 -0
  236. package/dist/tools/web-fetch.js.map +1 -0
  237. package/dist/tools/web-search.d.ts +8 -0
  238. package/dist/tools/web-search.js +81 -0
  239. package/dist/tools/web-search.js.map +1 -0
  240. package/dist/tools/whatsapp.d.ts +10 -0
  241. package/dist/tools/whatsapp.js +222 -0
  242. package/dist/tools/whatsapp.js.map +1 -0
  243. package/dist/tools/write-file.d.ts +1 -0
  244. package/dist/tools/write-file.js +6 -0
  245. package/dist/tools/write-file.js.map +1 -0
  246. package/dist/tools/youtube-transcript.d.ts +9 -0
  247. package/dist/tools/youtube-transcript.js +200 -0
  248. package/dist/tools/youtube-transcript.js.map +1 -0
  249. package/dist/util/circuit-breaker.d.ts +44 -0
  250. package/dist/util/circuit-breaker.js +78 -0
  251. package/dist/util/circuit-breaker.js.map +1 -0
  252. package/dist/util/env.d.ts +18 -0
  253. package/dist/util/env.js +39 -0
  254. package/dist/util/env.js.map +1 -0
  255. package/dist/util/errors.d.ts +42 -0
  256. package/dist/util/errors.js +121 -0
  257. package/dist/util/errors.js.map +1 -0
  258. package/dist/util/rate-limiter.d.ts +71 -0
  259. package/dist/util/rate-limiter.js +141 -0
  260. package/dist/util/rate-limiter.js.map +1 -0
  261. package/dist/util/retry.d.ts +30 -0
  262. package/dist/util/retry.js +57 -0
  263. package/dist/util/retry.js.map +1 -0
  264. package/dist/util/sanitize.d.ts +16 -0
  265. package/dist/util/sanitize.js +255 -0
  266. package/dist/util/sanitize.js.map +1 -0
  267. package/dist/verify/checks.d.ts +21 -0
  268. package/dist/verify/checks.js +311 -0
  269. package/dist/verify/checks.js.map +1 -0
  270. package/dist/verify/index.d.ts +33 -0
  271. package/dist/verify/index.js +127 -0
  272. package/dist/verify/index.js.map +1 -0
  273. package/dist/verify/types.d.ts +20 -0
  274. package/dist/verify/types.js +3 -0
  275. package/dist/verify/types.js.map +1 -0
  276. package/dist/versioncheck.d.ts +22 -0
  277. package/dist/versioncheck.js +203 -0
  278. package/dist/versioncheck.js.map +1 -0
  279. package/dist/viz/index.d.ts +2 -0
  280. package/dist/viz/index.js +733 -0
  281. package/dist/viz/index.js.map +1 -0
  282. package/dist/workflows/engine.d.ts +46 -0
  283. package/dist/workflows/engine.js +320 -0
  284. package/dist/workflows/engine.js.map +1 -0
  285. package/dist/workflows/types.d.ts +92 -0
  286. package/dist/workflows/types.js +6 -0
  287. package/dist/workflows/types.js.map +1 -0
  288. 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
+ }