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,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 @@
|
|
|
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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"}
|