aura-code 0.3.7 → 0.5.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 (109) hide show
  1. package/README.md +54 -2
  2. package/dist/agent/compactor.d.ts +26 -0
  3. package/dist/agent/compactor.js +156 -0
  4. package/dist/agent/compactor.js.map +1 -0
  5. package/dist/agent/design.d.ts +17 -0
  6. package/dist/agent/design.js +175 -0
  7. package/dist/agent/design.js.map +1 -0
  8. package/dist/agent/loop.js +8 -1
  9. package/dist/agent/loop.js.map +1 -1
  10. package/dist/agent/system-prompt.d.ts +1 -1
  11. package/dist/agent/system-prompt.js +5 -2
  12. package/dist/agent/system-prompt.js.map +1 -1
  13. package/dist/cli/display.js +40 -4
  14. package/dist/cli/display.js.map +1 -1
  15. package/dist/cli/index.js +258 -44
  16. package/dist/cli/index.js.map +1 -1
  17. package/dist/config/defaults.js +1 -1
  18. package/dist/config/defaults.js.map +1 -1
  19. package/dist/config/project-config.d.ts +6 -0
  20. package/dist/config/project-config.js +2 -0
  21. package/dist/config/project-config.js.map +1 -1
  22. package/dist/dream/dream.d.ts +48 -0
  23. package/dist/dream/dream.js +187 -0
  24. package/dist/dream/dream.js.map +1 -0
  25. package/dist/kanban/index.d.ts +5 -0
  26. package/dist/kanban/index.js +11 -0
  27. package/dist/kanban/index.js.map +1 -0
  28. package/dist/kanban/pipeline.d.ts +16 -0
  29. package/dist/kanban/pipeline.js +910 -0
  30. package/dist/kanban/pipeline.js.map +1 -0
  31. package/dist/kanban/server.d.ts +5 -0
  32. package/dist/kanban/server.js +820 -0
  33. package/dist/kanban/server.js.map +1 -0
  34. package/dist/kanban/types.d.ts +75 -0
  35. package/dist/kanban/types.js +6 -0
  36. package/dist/kanban/types.js.map +1 -0
  37. package/dist/learnlight/driven.d.ts +2 -0
  38. package/dist/learnlight/driven.js +109 -0
  39. package/dist/learnlight/driven.js.map +1 -0
  40. package/dist/learnlight/index.d.ts +4 -0
  41. package/dist/learnlight/index.js +32 -0
  42. package/dist/learnlight/index.js.map +1 -0
  43. package/dist/learnlight/lesson-prep.d.ts +36 -0
  44. package/dist/learnlight/lesson-prep.js +224 -0
  45. package/dist/learnlight/lesson-prep.js.map +1 -0
  46. package/dist/learnlight/report.d.ts +2 -0
  47. package/dist/learnlight/report.js +37 -0
  48. package/dist/learnlight/report.js.map +1 -0
  49. package/dist/learnlight/types.d.ts +72 -0
  50. package/dist/learnlight/types.js +6 -0
  51. package/dist/learnlight/types.js.map +1 -0
  52. package/dist/perception/graph-store.d.ts +11 -0
  53. package/dist/perception/graph-store.js +33 -0
  54. package/dist/perception/graph-store.js.map +1 -1
  55. package/dist/perception/index.d.ts +1 -1
  56. package/dist/perception/index.js +2 -1
  57. package/dist/perception/index.js.map +1 -1
  58. package/dist/providers/factory.d.ts +16 -0
  59. package/dist/providers/factory.js +72 -0
  60. package/dist/providers/factory.js.map +1 -1
  61. package/dist/providers/openai-compatible.js +80 -49
  62. package/dist/providers/openai-compatible.js.map +1 -1
  63. package/dist/research/council.d.ts +26 -0
  64. package/dist/research/council.js +225 -0
  65. package/dist/research/council.js.map +1 -0
  66. package/dist/research/research.d.ts +24 -0
  67. package/dist/research/research.js +116 -0
  68. package/dist/research/research.js.map +1 -0
  69. package/dist/ruby/alternator.d.ts +36 -1
  70. package/dist/ruby/alternator.js +40 -31
  71. package/dist/ruby/alternator.js.map +1 -1
  72. package/dist/ruby/stats.js +10 -11
  73. package/dist/ruby/stats.js.map +1 -1
  74. package/dist/ruby/types.js +1 -1
  75. package/dist/ruby/types.js.map +1 -1
  76. package/dist/safety/permissions.d.ts +8 -0
  77. package/dist/safety/permissions.js +12 -0
  78. package/dist/safety/permissions.js.map +1 -1
  79. package/dist/setup/provider-registry.js +14 -0
  80. package/dist/setup/provider-registry.js.map +1 -1
  81. package/dist/setup/provider-test.js +24 -2
  82. package/dist/setup/provider-test.js.map +1 -1
  83. package/dist/setup/telegram-wizard.d.ts +57 -0
  84. package/dist/setup/telegram-wizard.js +343 -0
  85. package/dist/setup/telegram-wizard.js.map +1 -0
  86. package/dist/tools/audio-transcribe.d.ts +20 -0
  87. package/dist/tools/audio-transcribe.js +39 -28
  88. package/dist/tools/audio-transcribe.js.map +1 -1
  89. package/dist/tools/gmail-tool.d.ts +11 -0
  90. package/dist/tools/gmail-tool.js +221 -0
  91. package/dist/tools/gmail-tool.js.map +1 -0
  92. package/dist/tools/read-file.js +13 -0
  93. package/dist/tools/read-file.js.map +1 -1
  94. package/dist/tools/telegram-bot.js +103 -18
  95. package/dist/tools/telegram-bot.js.map +1 -1
  96. package/dist/tools/telegram-voice.d.ts +22 -0
  97. package/dist/tools/telegram-voice.js +203 -0
  98. package/dist/tools/telegram-voice.js.map +1 -0
  99. package/dist/tools/telegram.d.ts +6 -1
  100. package/dist/tools/telegram.js +115 -5
  101. package/dist/tools/telegram.js.map +1 -1
  102. package/dist/tools/video-render.d.ts +11 -0
  103. package/dist/tools/video-render.js +189 -0
  104. package/dist/tools/video-render.js.map +1 -0
  105. package/dist/util/errors.js +6 -0
  106. package/dist/util/errors.js.map +1 -1
  107. package/dist/viz/index.js +816 -30
  108. package/dist/viz/index.js.map +1 -1
  109. package/package.json +2 -1
@@ -0,0 +1,189 @@
1
+ "use strict";
2
+ /// <reference lib="dom" />
3
+ /// <reference lib="dom" />
4
+ // ─────────────────────────────────────────────────────────────────────────────
5
+ // Video Renderer — Puppeteer frame capture + ffmpeg MP4 encoding
6
+ // Takes an HTML file with CSS animations, captures every frame via Puppeteer,
7
+ // pipes PNGs to ffmpeg, produces an MP4. No new dependencies required.
8
+ // ─────────────────────────────────────────────────────────────────────────────
9
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ var desc = Object.getOwnPropertyDescriptor(m, k);
12
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
13
+ desc = { enumerable: true, get: function() { return m[k]; } };
14
+ }
15
+ Object.defineProperty(o, k2, desc);
16
+ }) : (function(o, m, k, k2) {
17
+ if (k2 === undefined) k2 = k;
18
+ o[k2] = m[k];
19
+ }));
20
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
21
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
22
+ }) : function(o, v) {
23
+ o["default"] = v;
24
+ });
25
+ var __importStar = (this && this.__importStar) || (function () {
26
+ var ownKeys = function(o) {
27
+ ownKeys = Object.getOwnPropertyNames || function (o) {
28
+ var ar = [];
29
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
30
+ return ar;
31
+ };
32
+ return ownKeys(o);
33
+ };
34
+ return function (mod) {
35
+ if (mod && mod.__esModule) return mod;
36
+ var result = {};
37
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
38
+ __setModuleDefault(result, mod);
39
+ return result;
40
+ };
41
+ })();
42
+ Object.defineProperty(exports, "__esModule", { value: true });
43
+ exports.renderVideo = renderVideo;
44
+ const path = __importStar(require("path"));
45
+ const fs = __importStar(require("fs"));
46
+ const os = __importStar(require("os"));
47
+ const child_process_1 = require("child_process");
48
+ // ─────────────────────────────────────────────────────────────────────────────
49
+ // Chrome detection
50
+ // ─────────────────────────────────────────────────────────────────────────────
51
+ function findChrome() {
52
+ const candidates = [
53
+ 'google-chrome-stable', 'google-chrome', 'chromium-browser', 'chromium',
54
+ ];
55
+ for (const cmd of candidates) {
56
+ try {
57
+ const result = (0, child_process_1.execSync)(`which ${cmd}`, { stdio: 'pipe' });
58
+ return result.toString().trim();
59
+ }
60
+ catch { }
61
+ }
62
+ // Direct paths as fallback
63
+ const directPaths = [
64
+ '/usr/bin/google-chrome-stable', '/usr/bin/google-chrome',
65
+ '/usr/bin/chromium-browser', '/snap/bin/chromium',
66
+ ];
67
+ for (const p of directPaths) {
68
+ if (fs.existsSync(p))
69
+ return p;
70
+ }
71
+ throw new Error('Chrome/Chromium not found.');
72
+ }
73
+ // ─────────────────────────────────────────────────────────────────────────────
74
+ // Main render function
75
+ // ─────────────────────────────────────────────────────────────────────────────
76
+ async function renderVideo(options) {
77
+ const { htmlPath, output, fps = 30, width = 1920, height = 1080, keepFrames = false, onProgress, } = options;
78
+ const absHtml = path.resolve(htmlPath);
79
+ if (!fs.existsSync(absHtml))
80
+ throw new Error(`HTML not found: ${absHtml}`);
81
+ const absOutput = path.resolve(output);
82
+ const outDir = path.dirname(absOutput);
83
+ if (!fs.existsSync(outDir))
84
+ fs.mkdirSync(outDir, { recursive: true });
85
+ const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'aura-video-'));
86
+ const framePattern = path.join(tmpDir, 'frame-%06d.png');
87
+ // Puppeteer
88
+ const puppeteer = await Promise.resolve().then(() => __importStar(require('puppeteer-core')));
89
+ const browser = await puppeteer.launch({
90
+ executablePath: findChrome(),
91
+ headless: true,
92
+ args: ['--no-sandbox', '--disable-gpu', '--disable-dev-shm-usage'],
93
+ });
94
+ let totalFrames = 0;
95
+ try {
96
+ const page = await browser.newPage();
97
+ await page.setViewport({ width, height, deviceScaleFactor: 1 });
98
+ await page.goto(`file://${absHtml}`, { waitUntil: 'networkidle0', timeout: 15000 });
99
+ const pageDuration = options.duration ??
100
+ (await page.evaluate(() => {
101
+ const el = document.getElementById('__duration');
102
+ return el ? parseFloat(el.textContent || '5') : 5;
103
+ }));
104
+ totalFrames = Math.ceil(pageDuration * fps);
105
+ // Inject animation seek controller
106
+ await page.evaluate(() => {
107
+ const style = document.createElement('style');
108
+ style.id = '__aura-control';
109
+ style.textContent = `.aura-el { animation-play-state: paused !important; opacity: 0; }`;
110
+ document.head.appendChild(style);
111
+ window.__seek = (t) => {
112
+ document.querySelectorAll('.aura-el').forEach((el) => {
113
+ const enter = parseFloat(el.dataset.enter || '0');
114
+ const exit = parseFloat(el.dataset.exit || '9999');
115
+ const dur = parseFloat(el.dataset.dur || '0.5');
116
+ const enterAnim = el.dataset.enterAnim || 'fadeIn';
117
+ const exitAnim = el.dataset.exitAnim || 'fadeOut';
118
+ const centered = 'translate(-50%, -50%)';
119
+ if (t < enter) {
120
+ el.style.opacity = '0';
121
+ el.style.animation = 'none';
122
+ el.style.transform = centered;
123
+ }
124
+ else if (t >= enter && t < enter + dur) {
125
+ const elapsed = t - enter;
126
+ el.style.animation = `${enterAnim} ${dur}s ease-out 1 forwards`;
127
+ el.style.animationDelay = `-${elapsed}s`;
128
+ el.style.animationPlayState = 'paused';
129
+ }
130
+ else if (t >= enter + dur && t < exit) {
131
+ el.style.opacity = '1';
132
+ el.style.animation = 'none';
133
+ el.style.transform = centered;
134
+ }
135
+ else if (t >= exit && t < exit + dur) {
136
+ const elapsed = t - exit;
137
+ el.style.animation = `${exitAnim} ${dur}s ease-in 1 forwards`;
138
+ el.style.animationDelay = `-${elapsed}s`;
139
+ el.style.animationPlayState = 'paused';
140
+ }
141
+ else {
142
+ el.style.opacity = '0';
143
+ el.style.animation = 'none';
144
+ el.style.transform = centered;
145
+ }
146
+ });
147
+ };
148
+ });
149
+ // Capture frames
150
+ let lastLog = -1;
151
+ for (let frame = 0; frame < totalFrames; frame++) {
152
+ const t = frame / fps;
153
+ await page.evaluate((time) => { window.__seek?.(time); }, t);
154
+ const fp = path.join(tmpDir, `frame-${String(frame).padStart(6, '0')}.png`);
155
+ await page.screenshot({ path: fp, type: 'png' });
156
+ const pct = Math.round((frame / totalFrames) * 100);
157
+ if (pct >= lastLog + 10) {
158
+ lastLog = pct;
159
+ onProgress?.(frame, totalFrames);
160
+ }
161
+ }
162
+ await page.close();
163
+ }
164
+ finally {
165
+ await browser.close();
166
+ }
167
+ onProgress?.(totalFrames, totalFrames);
168
+ // ffmpeg stitch
169
+ await new Promise((resolve, reject) => {
170
+ const ffmpeg = (0, child_process_1.spawn)('ffmpeg', [
171
+ '-y', '-framerate', String(fps), '-i', framePattern,
172
+ '-c:v', 'libx264', '-preset', 'medium', '-crf', '18',
173
+ '-pix_fmt', 'yuv420p', '-movflags', '+faststart', absOutput,
174
+ ], { stdio: ['ignore', 'pipe', 'pipe'] });
175
+ let stderr = '';
176
+ ffmpeg.stderr.on('data', (d) => { stderr += d.toString(); });
177
+ ffmpeg.on('close', (code) => {
178
+ if (code === 0)
179
+ resolve();
180
+ else
181
+ reject(new Error(`ffmpeg exit ${code}: ${stderr.slice(-400)}`));
182
+ });
183
+ ffmpeg.on('error', reject);
184
+ });
185
+ if (!keepFrames)
186
+ fs.rmSync(tmpDir, { recursive: true, force: true });
187
+ return absOutput;
188
+ }
189
+ //# sourceMappingURL=video-render.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"video-render.js","sourceRoot":"","sources":["../../src/tools/video-render.ts"],"names":[],"mappings":"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"}
@@ -67,6 +67,12 @@ function normaliseError(e, provider) {
67
67
  }
68
68
  catch { /* ignore */ }
69
69
  }
70
+ else if (err.response?.data != null) {
71
+ try {
72
+ message += ` — ${JSON.stringify(err.response.data)}`;
73
+ }
74
+ catch { /* ignore */ }
75
+ }
70
76
  const retryAfterMs = parseRetryAfter(err.headers) ?? parseGoogleRetryAfter(err.errorDetails);
71
77
  // Network/timeout: status 0
72
78
  const isNetwork = status === 0 || err.code === 'ETIMEDOUT' || err.code === 'ECONNRESET' || err.code === 'ENOTFOUND' || err.name === 'AbortError';
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/util/errors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/util/errors.ts"],"names":[],"mappings":"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"}