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,127 @@
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.collectFailingTests = exports.collectProjectFiles = void 0;
37
+ exports.buildSuggestion = buildSuggestion;
38
+ exports.shouldRetry = shouldRetry;
39
+ exports.verifyTask = verifyTask;
40
+ exports.runVerificationSync = runVerificationSync;
41
+ exports.runWithVerification = runWithVerification;
42
+ const checks_js_1 = require("./checks.js");
43
+ var checks_js_2 = require("./checks.js");
44
+ Object.defineProperty(exports, "collectProjectFiles", { enumerable: true, get: function () { return checks_js_2.collectProjectFiles; } });
45
+ Object.defineProperty(exports, "collectFailingTests", { enumerable: true, get: function () { return checks_js_2.collectFailingTests; } });
46
+ function buildSuggestion(checks) {
47
+ const failed = checks.filter(c => !c.passed);
48
+ if (failed.length === 0)
49
+ return '';
50
+ const reasons = failed.map(c => c.detail).join('; ');
51
+ return `Previous attempt failed: ${reasons}.`;
52
+ }
53
+ function shouldRetry(result, config) {
54
+ return !result.passed && result.attempts < config.maxRetries;
55
+ }
56
+ async function verifyTask(ctx, config, attempts = 1) {
57
+ const checks = (0, checks_js_1.runAllChecks)(ctx);
58
+ const passed = checks.every(c => c.passed);
59
+ const suggestion = passed ? '' : buildSuggestion(checks);
60
+ return { passed, checks, attempts, suggestion };
61
+ }
62
+ function runVerificationSync(ctx, config, attempts = 1) {
63
+ const checks = (0, checks_js_1.runAllChecks)(ctx);
64
+ const passed = checks.every(c => c.passed);
65
+ const suggestion = passed ? '' : buildSuggestion(checks);
66
+ return { passed, checks, attempts, suggestion };
67
+ }
68
+ /**
69
+ * External wrapper around runAgentLoop.
70
+ *
71
+ * Runs the agent loop, then verifies output. If verification fails and retries
72
+ * remain, prepends failure context and reruns. runAgentLoop itself is NOT
73
+ * modified — all retry logic lives here.
74
+ */
75
+ async function runWithVerification(opts) {
76
+ const { runAgentLoop } = await Promise.resolve().then(() => __importStar(require('../agent/loop.js')));
77
+ const { loopOpts, config, projectRoot, display } = opts;
78
+ const originalTask = loopOpts.task;
79
+ let currentTask = originalTask;
80
+ let loopResult;
81
+ let verifyResult;
82
+ // Capture pre-existing test failures so we don't blame the task for them
83
+ let baselineFailures;
84
+ if (config.testCommand) {
85
+ baselineFailures = (0, checks_js_1.collectFailingTests)(config.testCommand, projectRoot);
86
+ if (baselineFailures.size > 0) {
87
+ display.warning(`Baseline: ${baselineFailures.size} pre-existing test failure(s) — will be ignored`);
88
+ }
89
+ }
90
+ for (let attempt = 1; attempt <= config.maxRetries; attempt++) {
91
+ display.header(`Attempt ${attempt}/${config.maxRetries}`, originalTask);
92
+ const taskStartedAt = Date.now();
93
+ const filesBefore = (0, checks_js_1.collectProjectFiles)(projectRoot);
94
+ loopResult = await runAgentLoop({
95
+ ...loopOpts,
96
+ task: currentTask,
97
+ verify: false,
98
+ });
99
+ const ctx = {
100
+ projectRoot,
101
+ taskStartedAt,
102
+ task: originalTask,
103
+ toolCalls: loopResult.toolCallLog,
104
+ filesBefore,
105
+ testCommand: config.testCommand,
106
+ baselineFailures,
107
+ };
108
+ verifyResult = await verifyTask(ctx, config, attempt);
109
+ if (verifyResult.passed) {
110
+ if (attempt > 1) {
111
+ display.success(`Verification passed on attempt ${attempt}`);
112
+ }
113
+ break;
114
+ }
115
+ display.warning(`Verification failed (attempt ${attempt}/${config.maxRetries})`);
116
+ for (const c of verifyResult.checks) {
117
+ if (!c.passed) {
118
+ display.warning(` ${c.name}: ${c.detail}`);
119
+ }
120
+ }
121
+ if (attempt < config.maxRetries) {
122
+ currentTask = `${buildSuggestion(verifyResult.checks)} Retry: ${originalTask}`;
123
+ }
124
+ }
125
+ return { loopResult, verifyResult, totalAttempts: verifyResult.attempts };
126
+ }
127
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/verify/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,0CAKC;AAED,kCAEC;AAED,gCASC;AAED,kDASC;AAsBD,kDA+DC;AA5HD,2CAAwG;AAMxG,yCAAuE;AAA9D,gHAAA,mBAAmB,OAAA;AAAE,gHAAA,mBAAmB,OAAA;AAEjD,SAAgB,eAAe,CAAC,MAA6C;IAC3E,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAC7C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACnC,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrD,OAAO,4BAA4B,OAAO,GAAG,CAAC;AAChD,CAAC;AAED,SAAgB,WAAW,CAAC,MAA0B,EAAE,MAA0B;IAChF,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/D,CAAC;AAEM,KAAK,UAAU,UAAU,CAC9B,GAAiB,EACjB,MAA0B,EAC1B,WAAmB,CAAC;IAEpB,MAAM,MAAM,GAAG,IAAA,wBAAY,EAAC,GAAG,CAAC,CAAC;IACjC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAC3C,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IACzD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;AAClD,CAAC;AAED,SAAgB,mBAAmB,CACjC,GAAiB,EACjB,MAA0B,EAC1B,WAAmB,CAAC;IAEpB,MAAM,MAAM,GAAG,IAAA,wBAAY,EAAC,GAAG,CAAC,CAAC;IACjC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAC3C,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IACzD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;AAClD,CAAC;AAeD;;;;;;GAMG;AACI,KAAK,UAAU,mBAAmB,CACvC,IAA6B;IAE7B,MAAM,EAAE,YAAY,EAAE,GAAG,wDAAa,kBAAkB,GAAC,CAAC;IAC1D,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACxD,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC;IACnC,IAAI,WAAW,GAAG,YAAY,CAAC;IAC/B,IAAI,UAAuB,CAAC;IAC5B,IAAI,YAAiC,CAAC;IAEtC,yEAAyE;IACzE,IAAI,gBAAyC,CAAC;IAC9C,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;QACvB,gBAAgB,GAAG,IAAA,+BAAmB,EAAC,MAAM,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QACxE,IAAI,gBAAgB,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,OAAO,CAAC,aAAa,gBAAgB,CAAC,IAAI,iDAAiD,CAAC,CAAC;QACvG,CAAC;IACH,CAAC;IAED,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC;QAC9D,OAAO,CAAC,MAAM,CAAC,WAAW,OAAO,IAAI,MAAM,CAAC,UAAU,EAAE,EAAE,YAAY,CAAC,CAAC;QAExE,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACjC,MAAM,WAAW,GAAG,IAAA,+BAAmB,EAAC,WAAW,CAAC,CAAC;QAErD,UAAU,GAAG,MAAM,YAAY,CAAC;YAC9B,GAAG,QAAQ;YACX,IAAI,EAAE,WAAW;YACjB,MAAM,EAAE,KAAK;SACd,CAAC,CAAC;QAEH,MAAM,GAAG,GAAiB;YACxB,WAAW;YACX,aAAa;YACb,IAAI,EAAE,YAAY;YAClB,SAAS,EAAE,UAAU,CAAC,WAAW;YACjC,WAAW;YACX,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,gBAAgB;SACjB,CAAC;QAEF,YAAY,GAAG,MAAM,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAEtD,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC;YACxB,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;gBAChB,OAAO,CAAC,OAAO,CAAC,kCAAkC,OAAO,EAAE,CAAC,CAAC;YAC/D,CAAC;YACD,MAAM;QACR,CAAC;QAED,OAAO,CAAC,OAAO,CAAC,gCAAgC,OAAO,IAAI,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC;QACjF,KAAK,MAAM,CAAC,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC;YACpC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;gBACd,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;YAC9C,CAAC;QACH,CAAC;QAED,IAAI,OAAO,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;YAChC,WAAW,GAAG,GAAG,eAAe,CAAC,YAAY,CAAC,MAAM,CAAC,WAAW,YAAY,EAAE,CAAC;QACjF,CAAC;IACH,CAAC;IAED,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,CAAC,QAAQ,EAAE,CAAC;AAC5E,CAAC"}
@@ -0,0 +1,20 @@
1
+ export interface Check {
2
+ name: string;
3
+ passed: boolean;
4
+ detail: string;
5
+ }
6
+ export interface VerificationResult {
7
+ passed: boolean;
8
+ checks: Check[];
9
+ attempts: number;
10
+ suggestion: string;
11
+ }
12
+ export interface VerificationConfig {
13
+ enabled: boolean;
14
+ maxRetries: number;
15
+ testCommand?: string;
16
+ }
17
+ export interface ToolCallLogEntry {
18
+ name: string;
19
+ input: Record<string, unknown>;
20
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/verify/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * versionCheck.ts — Aura
3
+ *
4
+ * Runs at session startup. Hits GitHub releases API, compares against
5
+ * the local package.json version, prints a one-line banner if a newer
6
+ * version exists. Fully async and non-blocking — if the check fails for
7
+ * any reason (no network, rate limit, GitHub down) the session starts
8
+ * normally with zero noise.
9
+ *
10
+ * Hook it in the startup sequence AFTER the main banner prints:
11
+ *
12
+ * import { checkForUpdate } from './versionCheck.js';
13
+ * await checkForUpdate(); // non-blocking, swallows all errors
14
+ *
15
+ * Designed to be read and modified by a new team member in < 10 minutes.
16
+ */
17
+ /**
18
+ * Call once at session startup. Resolves quickly (cache hit) or after a
19
+ * short network round-trip. Never throws — all errors are swallowed so a
20
+ * failed version check never breaks a session.
21
+ */
22
+ export declare function checkForUpdate(): Promise<void>;
@@ -0,0 +1,203 @@
1
+ "use strict";
2
+ /**
3
+ * versionCheck.ts — Aura
4
+ *
5
+ * Runs at session startup. Hits GitHub releases API, compares against
6
+ * the local package.json version, prints a one-line banner if a newer
7
+ * version exists. Fully async and non-blocking — if the check fails for
8
+ * any reason (no network, rate limit, GitHub down) the session starts
9
+ * normally with zero noise.
10
+ *
11
+ * Hook it in the startup sequence AFTER the main banner prints:
12
+ *
13
+ * import { checkForUpdate } from './versionCheck.js';
14
+ * await checkForUpdate(); // non-blocking, swallows all errors
15
+ *
16
+ * Designed to be read and modified by a new team member in < 10 minutes.
17
+ */
18
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
19
+ if (k2 === undefined) k2 = k;
20
+ var desc = Object.getOwnPropertyDescriptor(m, k);
21
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
22
+ desc = { enumerable: true, get: function() { return m[k]; } };
23
+ }
24
+ Object.defineProperty(o, k2, desc);
25
+ }) : (function(o, m, k, k2) {
26
+ if (k2 === undefined) k2 = k;
27
+ o[k2] = m[k];
28
+ }));
29
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
30
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
31
+ }) : function(o, v) {
32
+ o["default"] = v;
33
+ });
34
+ var __importStar = (this && this.__importStar) || (function () {
35
+ var ownKeys = function(o) {
36
+ ownKeys = Object.getOwnPropertyNames || function (o) {
37
+ var ar = [];
38
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
39
+ return ar;
40
+ };
41
+ return ownKeys(o);
42
+ };
43
+ return function (mod) {
44
+ if (mod && mod.__esModule) return mod;
45
+ var result = {};
46
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
47
+ __setModuleDefault(result, mod);
48
+ return result;
49
+ };
50
+ })();
51
+ var __importDefault = (this && this.__importDefault) || function (mod) {
52
+ return (mod && mod.__esModule) ? mod : { "default": mod };
53
+ };
54
+ Object.defineProperty(exports, "__esModule", { value: true });
55
+ exports.checkForUpdate = checkForUpdate;
56
+ const node_path_1 = __importDefault(require("node:path"));
57
+ const node_process_1 = __importDefault(require("node:process"));
58
+ // ── Config ────────────────────────────────────────────────────────────────────
59
+ const REPO = "milodule3-debug/aura-code";
60
+ const API_URL = `https://api.github.com/repos/${REPO}/releases/latest`;
61
+ const TIMEOUT_MS = 4_000; // silent fail after this; never delay the session
62
+ const CHECK_INTERVAL_HOURS = 6; // don't hammer the API on every restart
63
+ const CACHE_FILE = node_path_1.default.join(node_process_1.default.env.HOME ?? "~", ".aura", "update-cache.json");
64
+ // ── Semver helpers ────────────────────────────────────────────────────────────
65
+ /**
66
+ * Parse "v0.3.0" or "0.3.0" → [major, minor, patch].
67
+ * Returns null if the string isn't a recognisable semver.
68
+ */
69
+ function parseSemver(raw) {
70
+ const match = raw.replace(/^v/, "").match(/^(\d+)\.(\d+)\.(\d+)/);
71
+ if (!match)
72
+ return null;
73
+ return [parseInt(match[1], 10), parseInt(match[2], 10), parseInt(match[3], 10)];
74
+ }
75
+ /** Returns true if `remote` is strictly newer than `local`. */
76
+ function isNewer(local, remote) {
77
+ const l = parseSemver(local);
78
+ const r = parseSemver(remote);
79
+ if (!l || !r)
80
+ return false;
81
+ for (let i = 0; i < 3; i++) {
82
+ if (r[i] > l[i])
83
+ return true;
84
+ if (r[i] < l[i])
85
+ return false;
86
+ }
87
+ return false; // equal
88
+ }
89
+ async function readCache() {
90
+ try {
91
+ const { readFile } = await Promise.resolve().then(() => __importStar(require("node:fs/promises")));
92
+ const raw = await readFile(CACHE_FILE, "utf8");
93
+ return JSON.parse(raw);
94
+ }
95
+ catch {
96
+ return null;
97
+ }
98
+ }
99
+ async function writeCache(data) {
100
+ try {
101
+ const { mkdir, writeFile } = await Promise.resolve().then(() => __importStar(require("node:fs/promises")));
102
+ await mkdir(node_path_1.default.dirname(CACHE_FILE), { recursive: true });
103
+ await writeFile(CACHE_FILE, JSON.stringify(data, null, 2), "utf8");
104
+ }
105
+ catch {
106
+ /* non-critical — just means we'll re-check next time */
107
+ }
108
+ }
109
+ function isCacheFresh(cache) {
110
+ const ageMs = Date.now() - cache.checkedAt;
111
+ return ageMs < CHECK_INTERVAL_HOURS * 60 * 60 * 1000;
112
+ }
113
+ async function fetchLatestRelease() {
114
+ const controller = new AbortController();
115
+ const timer = setTimeout(() => controller.abort(), TIMEOUT_MS);
116
+ try {
117
+ const res = await fetch(API_URL, {
118
+ signal: controller.signal,
119
+ headers: {
120
+ Accept: "application/vnd.github+json",
121
+ "User-Agent": "aura-code-version-check/1.0",
122
+ // No auth token needed for public repo at 100-user scale.
123
+ // If you hit rate limits (60 req/hr per IP), add:
124
+ // Authorization: `Bearer ${process.env.GITHUB_TOKEN}`
125
+ },
126
+ });
127
+ if (!res.ok)
128
+ return null; // 404 (no releases yet), 403 (rate limit), etc.
129
+ return (await res.json());
130
+ }
131
+ catch {
132
+ return null; // network error, timeout, JSON parse failure — all silent
133
+ }
134
+ finally {
135
+ clearTimeout(timer);
136
+ }
137
+ }
138
+ // ── Local version ─────────────────────────────────────────────────────────────
139
+ function getLocalVersion() {
140
+ try {
141
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
142
+ const pkg = require(node_path_1.default.join(__dirname, "../package.json"));
143
+ return pkg.version ?? "0.0.0";
144
+ }
145
+ catch {
146
+ return "0.0.0";
147
+ }
148
+ }
149
+ // ── Banner ────────────────────────────────────────────────────────────────────
150
+ const RUBY_RED = "\x1b[38;2;155;17;30m";
151
+ const GOLD = "\x1b[38;2;212;175;55m";
152
+ const DIM = "\x1b[2m";
153
+ const RESET = "\x1b[0m";
154
+ const BOLD = "\x1b[1m";
155
+ function printUpdateBanner(localVersion, latestTag, notes) {
156
+ // Extract first non-empty line of release notes as the "what's new" teaser.
157
+ const teaser = notes
158
+ .split("\n")
159
+ .map((l) => l.replace(/^#+\s*/, "").trim())
160
+ .find((l) => l.length > 0 && !l.startsWith("<!--"))
161
+ ?? "See release notes for details.";
162
+ const short = teaser.length > 72 ? teaser.slice(0, 71) + "…" : teaser;
163
+ console.log(`\n ${RUBY_RED}${BOLD}⚡ Update available:${RESET} ` +
164
+ `${DIM}v${localVersion}${RESET} → ${GOLD}${BOLD}${latestTag}${RESET}`);
165
+ console.log(` ${DIM}${short}${RESET}`);
166
+ console.log(` ${DIM}Run: ${RESET}npm update -g aura-code` +
167
+ ` ${DIM}or:${RESET} npx aura-code@latest\n`);
168
+ }
169
+ // ── Public entry point ────────────────────────────────────────────────────────
170
+ /**
171
+ * Call once at session startup. Resolves quickly (cache hit) or after a
172
+ * short network round-trip. Never throws — all errors are swallowed so a
173
+ * failed version check never breaks a session.
174
+ */
175
+ async function checkForUpdate() {
176
+ try {
177
+ const localVersion = getLocalVersion();
178
+ let latestTag;
179
+ let releaseNotes;
180
+ // Try cache first.
181
+ const cache = await readCache();
182
+ if (cache && isCacheFresh(cache)) {
183
+ latestTag = cache.latestTag;
184
+ releaseNotes = cache.releaseNotes;
185
+ }
186
+ else {
187
+ // Fetch from GitHub.
188
+ const release = await fetchLatestRelease();
189
+ if (!release)
190
+ return; // network unavailable — silent
191
+ latestTag = release.tag_name;
192
+ releaseNotes = release.body ?? "";
193
+ await writeCache({ checkedAt: Date.now(), latestTag, releaseNotes });
194
+ }
195
+ if (isNewer(localVersion, latestTag)) {
196
+ printUpdateBanner(localVersion, latestTag, releaseNotes);
197
+ }
198
+ }
199
+ catch {
200
+ // Last-resort catch: nothing should escape, but if it does, stay silent.
201
+ }
202
+ }
203
+ //# sourceMappingURL=versioncheck.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"versioncheck.js","sourceRoot":"","sources":["../src/versioncheck.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function generateDashboard(projectRoot: string): string;
2
+ export declare function openDashboard(filePath: string): void;