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,217 @@
|
|
|
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.blueprintsDir = blueprintsDir;
|
|
37
|
+
exports.createBlueprint = createBlueprint;
|
|
38
|
+
exports.loadBlueprint = loadBlueprint;
|
|
39
|
+
exports.saveBlueprint = saveBlueprint;
|
|
40
|
+
exports.listBlueprints = listBlueprints;
|
|
41
|
+
exports.markBuilt = markBuilt;
|
|
42
|
+
exports.addDeviation = addDeviation;
|
|
43
|
+
exports.updateBlueprintStatus = updateBlueprintStatus;
|
|
44
|
+
const fs = __importStar(require("fs"));
|
|
45
|
+
const path = __importStar(require("path"));
|
|
46
|
+
const crypto = __importStar(require("crypto"));
|
|
47
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
48
|
+
// Constants
|
|
49
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
50
|
+
const BLUEPRINT_VERSION = 1;
|
|
51
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
52
|
+
// Helpers
|
|
53
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
54
|
+
function generateId() {
|
|
55
|
+
return crypto.randomBytes(4).toString('hex') + '-' + Date.now().toString(36);
|
|
56
|
+
}
|
|
57
|
+
/** Returns ~/.aura/blueprints (or $AURA_BLUEPRINT_DIR if set). */
|
|
58
|
+
function blueprintsDir() {
|
|
59
|
+
return process.env.AURA_BLUEPRINT_DIR
|
|
60
|
+
?? path.join(process.env.HOME ?? '/tmp', '.aura', 'blueprints');
|
|
61
|
+
}
|
|
62
|
+
function blueprintPath(id) {
|
|
63
|
+
return path.join(blueprintsDir(), `${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
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
87
|
+
// createBlueprint
|
|
88
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
89
|
+
/**
|
|
90
|
+
* Creates a new blueprint from an architect's analysis.
|
|
91
|
+
* Persists to ~/.aura/blueprints/<id>.json.
|
|
92
|
+
*
|
|
93
|
+
* @param task — the original user task
|
|
94
|
+
* @param _projectRoot — the project root (reserved for future context loading)
|
|
95
|
+
* @param opts — optional overrides for files, models, deps, etc.
|
|
96
|
+
*/
|
|
97
|
+
async function createBlueprint(task, _projectRoot, opts = {}) {
|
|
98
|
+
const id = generateId();
|
|
99
|
+
const now = Date.now();
|
|
100
|
+
const blueprint = {
|
|
101
|
+
id,
|
|
102
|
+
task,
|
|
103
|
+
createdAt: now,
|
|
104
|
+
status: 'draft',
|
|
105
|
+
files: opts.files ?? [],
|
|
106
|
+
dataModels: opts.dataModels ?? [],
|
|
107
|
+
dependencies: opts.dependencies ?? [],
|
|
108
|
+
risks: opts.risks ?? [],
|
|
109
|
+
estimatedSteps: opts.estimatedSteps ?? 0,
|
|
110
|
+
deviations: [],
|
|
111
|
+
};
|
|
112
|
+
await writeJson(blueprintPath(id), { version: BLUEPRINT_VERSION, blueprint });
|
|
113
|
+
return blueprint;
|
|
114
|
+
}
|
|
115
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
116
|
+
// loadBlueprint
|
|
117
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
118
|
+
/** Loads a blueprint from disk by ID. Returns null if not found. */
|
|
119
|
+
async function loadBlueprint(id) {
|
|
120
|
+
const raw = await readJson(blueprintPath(id));
|
|
121
|
+
if (!raw || !raw.blueprint)
|
|
122
|
+
return null;
|
|
123
|
+
return raw.blueprint;
|
|
124
|
+
}
|
|
125
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
126
|
+
// saveBlueprint
|
|
127
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
128
|
+
/** Persists the current blueprint to disk. */
|
|
129
|
+
async function saveBlueprint(blueprint) {
|
|
130
|
+
await writeJson(blueprintPath(blueprint.id), { version: BLUEPRINT_VERSION, blueprint });
|
|
131
|
+
}
|
|
132
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
133
|
+
// listBlueprints
|
|
134
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
135
|
+
/**
|
|
136
|
+
* Lists all persisted blueprints.
|
|
137
|
+
* Returns an array of blueprints sorted by creation time (newest first).
|
|
138
|
+
*/
|
|
139
|
+
async function listBlueprints() {
|
|
140
|
+
const dir = blueprintsDir();
|
|
141
|
+
if (!fs.existsSync(dir))
|
|
142
|
+
return [];
|
|
143
|
+
const files = fs.readdirSync(dir).filter(f => f.endsWith('.json'));
|
|
144
|
+
const blueprints = [];
|
|
145
|
+
for (const file of files) {
|
|
146
|
+
const raw = await readJson(path.join(dir, file));
|
|
147
|
+
if (raw && raw.blueprint) {
|
|
148
|
+
blueprints.push(raw.blueprint);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
return blueprints.sort((a, b) => b.createdAt - a.createdAt);
|
|
152
|
+
}
|
|
153
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
154
|
+
// markBuilt
|
|
155
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
156
|
+
/**
|
|
157
|
+
* Marks a specific file in a blueprint as built.
|
|
158
|
+
* Updates the blueprint status: if all files are now built/skipped → 'complete',
|
|
159
|
+
* otherwise → 'partial'.
|
|
160
|
+
*
|
|
161
|
+
* @param id — blueprint ID
|
|
162
|
+
* @param filePath — the file path to mark as built
|
|
163
|
+
* @returns the updated blueprint, or null if not found
|
|
164
|
+
*/
|
|
165
|
+
async function markBuilt(id, filePath) {
|
|
166
|
+
const blueprint = await loadBlueprint(id);
|
|
167
|
+
if (!blueprint)
|
|
168
|
+
return null;
|
|
169
|
+
const file = blueprint.files.find(f => f.path === filePath);
|
|
170
|
+
if (!file)
|
|
171
|
+
return null;
|
|
172
|
+
file.status = 'built';
|
|
173
|
+
// Recalculate blueprint status
|
|
174
|
+
const allResolved = blueprint.files.every(f => f.status !== 'planned');
|
|
175
|
+
blueprint.status = allResolved ? 'complete' : 'partial';
|
|
176
|
+
blueprint.builtAt = allResolved ? Date.now() : blueprint.builtAt;
|
|
177
|
+
await saveBlueprint(blueprint);
|
|
178
|
+
return blueprint;
|
|
179
|
+
}
|
|
180
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
181
|
+
// addDeviation
|
|
182
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
183
|
+
/**
|
|
184
|
+
* Records a deviation from the original blueprint plan.
|
|
185
|
+
*
|
|
186
|
+
* @param id — blueprint ID
|
|
187
|
+
* @param deviation — description of what changed
|
|
188
|
+
* @returns the updated blueprint, or null if not found
|
|
189
|
+
*/
|
|
190
|
+
async function addDeviation(id, deviation) {
|
|
191
|
+
const blueprint = await loadBlueprint(id);
|
|
192
|
+
if (!blueprint)
|
|
193
|
+
return null;
|
|
194
|
+
const entry = {
|
|
195
|
+
description: deviation,
|
|
196
|
+
recordedAt: Date.now(),
|
|
197
|
+
};
|
|
198
|
+
blueprint.deviations.push(entry);
|
|
199
|
+
await saveBlueprint(blueprint);
|
|
200
|
+
return blueprint;
|
|
201
|
+
}
|
|
202
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
203
|
+
// updateBlueprintStatus
|
|
204
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
205
|
+
/** Updates the overall status of a blueprint. */
|
|
206
|
+
async function updateBlueprintStatus(id, status) {
|
|
207
|
+
const blueprint = await loadBlueprint(id);
|
|
208
|
+
if (!blueprint)
|
|
209
|
+
return null;
|
|
210
|
+
blueprint.status = status;
|
|
211
|
+
if (status === 'complete' && !blueprint.builtAt) {
|
|
212
|
+
blueprint.builtAt = Date.now();
|
|
213
|
+
}
|
|
214
|
+
await saveBlueprint(blueprint);
|
|
215
|
+
return blueprint;
|
|
216
|
+
}
|
|
217
|
+
//# sourceMappingURL=engine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/architect/engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/** Status of a single file in a blueprint. */
|
|
2
|
+
export type BlueprintFileStatus = 'planned' | 'built' | 'skipped';
|
|
3
|
+
/** A file proposed by the architect before any code is written. */
|
|
4
|
+
export interface BlueprintFile {
|
|
5
|
+
/** Relative path where the file will live (e.g. "src/auth/jwt.ts"). */
|
|
6
|
+
path: string;
|
|
7
|
+
/** What this file does — one sentence, action-oriented. */
|
|
8
|
+
purpose: string;
|
|
9
|
+
/** Exported symbols this file will provide. */
|
|
10
|
+
exports: string[];
|
|
11
|
+
/** Interfaces or types defined in this file. */
|
|
12
|
+
interfaces: string[];
|
|
13
|
+
/** Whether the file has been built, skipped, or is still planned. */
|
|
14
|
+
status: BlueprintFileStatus;
|
|
15
|
+
}
|
|
16
|
+
/** A data model proposed in the blueprint (schema / entity). */
|
|
17
|
+
export interface BlueprintDataModel {
|
|
18
|
+
/** Name of the data model (e.g. "User", "Session"). */
|
|
19
|
+
name: string;
|
|
20
|
+
/** Field definitions — each string is "fieldName: type" or freeform. */
|
|
21
|
+
fields: string[];
|
|
22
|
+
/** Description of what this model represents. */
|
|
23
|
+
description: string;
|
|
24
|
+
}
|
|
25
|
+
/** Overall status of a blueprint. */
|
|
26
|
+
export type BlueprintStatus = 'draft' | 'building' | 'complete' | 'partial';
|
|
27
|
+
/** A deviation recorded when the build diverges from the plan. */
|
|
28
|
+
export interface BlueprintDeviation {
|
|
29
|
+
/** What changed vs. the original plan. */
|
|
30
|
+
description: string;
|
|
31
|
+
/** Unix timestamp (ms) when the deviation was recorded. */
|
|
32
|
+
recordedAt: number;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* A blueprint — the architect's plan before any code is written.
|
|
36
|
+
* Saved to ~/.aura/blueprints/<id>.json.
|
|
37
|
+
*/
|
|
38
|
+
export interface Blueprint {
|
|
39
|
+
/** Unique identifier (hex-timestamp). */
|
|
40
|
+
id: string;
|
|
41
|
+
/** The original task that triggered this blueprint. */
|
|
42
|
+
task: string;
|
|
43
|
+
/** Unix timestamp (ms) when the blueprint was created. */
|
|
44
|
+
createdAt: number;
|
|
45
|
+
/** Overall lifecycle status. */
|
|
46
|
+
status: BlueprintStatus;
|
|
47
|
+
/** Files proposed in this blueprint. */
|
|
48
|
+
files: BlueprintFile[];
|
|
49
|
+
/** Data models proposed in this blueprint. */
|
|
50
|
+
dataModels: BlueprintDataModel[];
|
|
51
|
+
/** External dependencies or internal modules this blueprint depends on. */
|
|
52
|
+
dependencies: string[];
|
|
53
|
+
/** Known risks or concerns flagged by the architect. */
|
|
54
|
+
risks: string[];
|
|
55
|
+
/** Estimated number of implementation steps. */
|
|
56
|
+
estimatedSteps: number;
|
|
57
|
+
/** Deviations recorded during or after build. */
|
|
58
|
+
deviations: BlueprintDeviation[];
|
|
59
|
+
/** Unix timestamp (ms) when the blueprint was marked complete/built. */
|
|
60
|
+
builtAt?: number;
|
|
61
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
3
|
+
// Architect types — blueprint-first planning 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/architect/types.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,oDAAoD;AACpD,gFAAgF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function renderDiamond(): void;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.renderDiamond = renderDiamond;
|
|
7
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
+
const r = chalk_1.default.hex('#9b1b30');
|
|
9
|
+
const g = chalk_1.default.hex('#c9a84c');
|
|
10
|
+
const w = chalk_1.default.hex('#f0ece4');
|
|
11
|
+
function renderDiamond() {
|
|
12
|
+
console.log(r(' / / / \ \ \ '));
|
|
13
|
+
console.log(w(' /__|____|__|__\ '));
|
|
14
|
+
console.log(w(' \ | | | / '));
|
|
15
|
+
console.log(r(' \ \ / / / '));
|
|
16
|
+
console.log(r(' \ \ / // '));
|
|
17
|
+
console.log(r(' \ \/ // '));
|
|
18
|
+
console.log(g(' \ // '));
|
|
19
|
+
console.log(g(' \// '));
|
|
20
|
+
console.log(g(' V '));
|
|
21
|
+
console.log('');
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=diamond.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diamond.js","sourceRoot":"","sources":["../../src/cli/diamond.ts"],"names":[],"mappings":";;;;;AAMA,sCAWC;AAjBD,kDAA0B;AAE1B,MAAM,CAAC,GAAG,eAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAC/B,MAAM,CAAC,GAAG,eAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAC/B,MAAM,CAAC,GAAG,eAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAE/B,SAAgB,aAAa;IAC3B,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC;IACrD,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC;IACtD,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC;IACrD,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC;IACrD,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { ExecutionPlan, PlanStep } from '../orchestration/types.js';
|
|
2
|
+
export interface Display {
|
|
3
|
+
agentThinking(): void;
|
|
4
|
+
streamText(text: string): void;
|
|
5
|
+
streamEnd(): void;
|
|
6
|
+
toolStart(name: string, id: string): void;
|
|
7
|
+
toolCall(name: string, input: Record<string, unknown>): void;
|
|
8
|
+
toolResult(name: string, result: string, elapsedMs: number): void;
|
|
9
|
+
toolBlocked(name: string, reason: string): void;
|
|
10
|
+
warning(msg: string): void;
|
|
11
|
+
success(msg: string): void;
|
|
12
|
+
error(msg: string): void;
|
|
13
|
+
header(title: string, subtitle?: string): void;
|
|
14
|
+
summary(text: string, turns: number, toolCount: number): void;
|
|
15
|
+
/** Renders the full execution plan before running it. */
|
|
16
|
+
showPlan(plan: ExecutionPlan): void;
|
|
17
|
+
/** Emitted when a specialist step begins executing. */
|
|
18
|
+
stepStarted(step: PlanStep): void;
|
|
19
|
+
/** Emitted when a specialist step finishes (success or failure). */
|
|
20
|
+
stepCompleted(step: PlanStep, result: string): void;
|
|
21
|
+
/** Provider is backing off before a retry. */
|
|
22
|
+
retry?(info: {
|
|
23
|
+
provider: string;
|
|
24
|
+
attempt: number;
|
|
25
|
+
delayMs: number;
|
|
26
|
+
reason: string;
|
|
27
|
+
}): void;
|
|
28
|
+
/** Switched from one provider to a fallback. */
|
|
29
|
+
failover?(info: {
|
|
30
|
+
from: string;
|
|
31
|
+
to: string;
|
|
32
|
+
reason: string;
|
|
33
|
+
}): void;
|
|
34
|
+
/** Circuit breaker for a provider opened or closed. */
|
|
35
|
+
circuit?(info: {
|
|
36
|
+
provider: string;
|
|
37
|
+
state: 'closed' | 'open' | 'half-open';
|
|
38
|
+
}): void;
|
|
39
|
+
}
|
|
40
|
+
export declare function createTerminalDisplay(): Display;
|
|
41
|
+
/** Format a token count compactly: 1234 → "1.2K", 25400 → "25.4K", 1000000 → "1M". */
|
|
42
|
+
export declare function formatCompact(n: number): string;
|
|
43
|
+
/** Build the context-bar line, e.g. ` 25.4K/1M │ [████░░░░░░] 23%`. */
|
|
44
|
+
export declare function formatContextBar(used: number, limit: number, estimated: boolean): string;
|
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.createTerminalDisplay = createTerminalDisplay;
|
|
7
|
+
exports.formatCompact = formatCompact;
|
|
8
|
+
exports.formatContextBar = formatContextBar;
|
|
9
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
10
|
+
function createTerminalDisplay() {
|
|
11
|
+
let inStream = false;
|
|
12
|
+
let currentTool = '';
|
|
13
|
+
return {
|
|
14
|
+
agentThinking() {
|
|
15
|
+
// Subtle indicator — don't spam
|
|
16
|
+
},
|
|
17
|
+
streamText(text) {
|
|
18
|
+
if (!inStream) {
|
|
19
|
+
process.stdout.write('\n' + chalk_1.default.hex('#c8b5a0')(''));
|
|
20
|
+
inStream = true;
|
|
21
|
+
}
|
|
22
|
+
process.stdout.write(chalk_1.default.hex('#ede0cc')(text));
|
|
23
|
+
},
|
|
24
|
+
streamEnd() {
|
|
25
|
+
if (inStream) {
|
|
26
|
+
process.stdout.write('\n');
|
|
27
|
+
inStream = false;
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
toolStart(name, _id) {
|
|
31
|
+
currentTool = name;
|
|
32
|
+
},
|
|
33
|
+
toolCall(name, input) {
|
|
34
|
+
process.stdout.write('\n');
|
|
35
|
+
const icon = toolIcon(name);
|
|
36
|
+
const label = chalk_1.default.hex('#cc785c').bold(`${icon} ${name}`);
|
|
37
|
+
const detail = formatInput(name, input);
|
|
38
|
+
console.log(` ${label} ${chalk_1.default.hex('#8a7768')(detail)}`);
|
|
39
|
+
},
|
|
40
|
+
toolResult(name, result, elapsedMs) {
|
|
41
|
+
const lines = result.split('\n');
|
|
42
|
+
const preview = lines.length > 8
|
|
43
|
+
? lines.slice(0, 8).join('\n') + chalk_1.default.hex('#4e3d30')(`\n ... (${lines.length - 8} more lines)`)
|
|
44
|
+
: result;
|
|
45
|
+
const elapsed = chalk_1.default.hex('#4e3d30')(`${elapsedMs}ms`);
|
|
46
|
+
const isError = result.startsWith('Error:') || result.startsWith('Tool error');
|
|
47
|
+
if (isError) {
|
|
48
|
+
console.log(' ' + chalk_1.default.hex('#b15439')('✗ ') + chalk_1.default.hex('#8a7768')(preview.replace(/\n/g, '\n ')));
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
// Show a compact preview
|
|
52
|
+
const firstLine = lines[0] ?? '';
|
|
53
|
+
if (lines.length <= 3) {
|
|
54
|
+
console.log(' ' + chalk_1.default.hex('#5a9e6e')('✓ ') + chalk_1.default.hex('#8a7768')(result));
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
console.log(' ' + chalk_1.default.hex('#5a9e6e')('✓ ') + chalk_1.default.hex('#8a7768')(`${firstLine}`) + chalk_1.default.hex('#4e3d30')(` (+${lines.length - 1} lines) ${elapsed}`));
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
toolBlocked(name, reason) {
|
|
62
|
+
console.log(' ' + chalk_1.default.hex('#d4903a')(`⊘ ${name} blocked: ${reason}`));
|
|
63
|
+
},
|
|
64
|
+
warning(msg) {
|
|
65
|
+
console.log('\n' + chalk_1.default.hex('#d4903a')(` ⚠ ${msg}`));
|
|
66
|
+
},
|
|
67
|
+
success(msg) {
|
|
68
|
+
console.log('\n' + chalk_1.default.hex('#5a9e6e')(` ✓ ${msg}`));
|
|
69
|
+
},
|
|
70
|
+
error(msg) {
|
|
71
|
+
console.error('\n' + chalk_1.default.hex('#b15439')(` ✗ ${msg}`));
|
|
72
|
+
},
|
|
73
|
+
header(title, subtitle) {
|
|
74
|
+
const w = Math.min((process.stdout.columns ?? 80) - 2, 72);
|
|
75
|
+
const pad = (s) => ` ${s}`;
|
|
76
|
+
console.log('');
|
|
77
|
+
console.log(boxTop(w));
|
|
78
|
+
console.log(boxLine(chalk_1.default.hex('#cc785c').bold(pad(title)), w));
|
|
79
|
+
if (subtitle)
|
|
80
|
+
console.log(boxLine(chalk_1.default.hex('#8a7768')(pad(subtitle)), w));
|
|
81
|
+
console.log(boxBottom(w));
|
|
82
|
+
},
|
|
83
|
+
summary(text, turns, toolCount) {
|
|
84
|
+
const w = Math.min((process.stdout.columns ?? 80) - 2, 72);
|
|
85
|
+
const pad = (s) => ` ${s}`;
|
|
86
|
+
console.log('');
|
|
87
|
+
console.log(boxTop(w));
|
|
88
|
+
console.log(boxLine(chalk_1.default.hex('#5a9e6e').bold(pad('✓ Done')), w));
|
|
89
|
+
console.log(boxLine(chalk_1.default.hex('#8a7768')(pad(`${turns} turn${turns > 1 ? 's' : ''} · ${toolCount} tool call${toolCount > 1 ? 's' : ''}`)), w));
|
|
90
|
+
if (text) {
|
|
91
|
+
text.split('\n').forEach(l => console.log(boxLine(chalk_1.default.hex('#c8b5a0')(pad(l)), w)));
|
|
92
|
+
}
|
|
93
|
+
console.log(boxBottom(w) + '\n');
|
|
94
|
+
},
|
|
95
|
+
retry(info) {
|
|
96
|
+
const secs = (info.delayMs / 1000).toFixed(1);
|
|
97
|
+
console.log(chalk_1.default.hex('#d4903a')(` ⟳ ${info.provider} retrying in ${secs}s (attempt ${info.attempt}) — ${info.reason}`));
|
|
98
|
+
},
|
|
99
|
+
failover(info) {
|
|
100
|
+
console.log(chalk_1.default.hex('#d4903a')(` ⤳ Failing over ${info.from} → ${info.to} (${info.reason})`));
|
|
101
|
+
},
|
|
102
|
+
circuit(info) {
|
|
103
|
+
const colour = info.state === 'open' ? '#b15439' : info.state === 'half-open' ? '#d4903a' : '#5a9e6e';
|
|
104
|
+
console.log(chalk_1.default.hex(colour)(` ◯ Circuit ${info.provider}: ${info.state}`));
|
|
105
|
+
},
|
|
106
|
+
showPlan(plan) {
|
|
107
|
+
const w = Math.min((process.stdout.columns ?? 80) - 2, 72);
|
|
108
|
+
const pad = (s) => ` ${s}`;
|
|
109
|
+
// Build a position map so dependency arrows show step numbers, not raw UUIDs
|
|
110
|
+
const idxMap = new Map(plan.steps.map((s, i) => [s.id, i + 1]));
|
|
111
|
+
console.log('');
|
|
112
|
+
console.log(boxTop(w));
|
|
113
|
+
console.log(boxLine(chalk_1.default.hex('#cc785c').bold(pad('Execution Plan')), w));
|
|
114
|
+
console.log(boxLine(chalk_1.default.hex('#8a7768')(pad(`Goal: ${plan.goal}`)), w));
|
|
115
|
+
plan.steps.forEach((s, i) => {
|
|
116
|
+
const num = chalk_1.default.hex('#4e3d30')(`${i + 1}.`);
|
|
117
|
+
const spec = chalk_1.default.hex('#cc785c').bold(`[${s.specialist}]`);
|
|
118
|
+
const task = chalk_1.default.hex('#c8b5a0')(s.task.length > 55 ? s.task.slice(0, 52) + '…' : s.task);
|
|
119
|
+
const deps = s.dependsOn.length > 0
|
|
120
|
+
? chalk_1.default.hex('#4e3d30')(` ← ${s.dependsOn.map(d => idxMap.get(d) ?? '?').join(', ')}`)
|
|
121
|
+
: '';
|
|
122
|
+
console.log(boxLine(` ${num} ${spec} ${task}${deps}`, w));
|
|
123
|
+
});
|
|
124
|
+
console.log(boxBottom(w) + '\n');
|
|
125
|
+
},
|
|
126
|
+
stepStarted(step) {
|
|
127
|
+
const spec = chalk_1.default.hex('#d4903a').bold(`[${step.specialist}]`);
|
|
128
|
+
const task = chalk_1.default.hex('#8a7768')(step.task.length > 70 ? step.task.slice(0, 67) + '…' : step.task);
|
|
129
|
+
console.log('\n' + chalk_1.default.hex('#d4903a')(' →') + ` ${spec} ${task}`);
|
|
130
|
+
},
|
|
131
|
+
stepCompleted(step, _result) {
|
|
132
|
+
const spec = chalk_1.default.hex('#5a9e6e').bold(`[${step.specialist}]`);
|
|
133
|
+
const ms = step.durationMs != null ? `${step.durationMs}ms` : '?ms';
|
|
134
|
+
console.log(chalk_1.default.hex('#5a9e6e')(' ✓') + ` ${spec} ${chalk_1.default.hex('#4e3d30')(`done (${ms})`)}`);
|
|
135
|
+
},
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
// ── Box-drawing helpers ──────────────────────────────────────────────────────
|
|
139
|
+
/** Render a colored top border: ┌──────────┐ */
|
|
140
|
+
function boxTop(width, color = '#4e3d30') {
|
|
141
|
+
const inner = '─'.repeat(Math.max(width - 2, 2));
|
|
142
|
+
return chalk_1.default.hex(color)(`┌${inner}┐`);
|
|
143
|
+
}
|
|
144
|
+
/** Render a colored bottom border: └──────────┘ */
|
|
145
|
+
function boxBottom(width, color = '#4e3d30') {
|
|
146
|
+
const inner = '─'.repeat(Math.max(width - 2, 2));
|
|
147
|
+
return chalk_1.default.hex(color)(`└${inner}┘`);
|
|
148
|
+
}
|
|
149
|
+
/** Render a colored side-padded line: │ content │ */
|
|
150
|
+
function boxLine(text, width, color = '#4e3d30') {
|
|
151
|
+
const maxInner = Math.max(width - 2, 2);
|
|
152
|
+
// Strip ANSI to measure visible length
|
|
153
|
+
const visible = text.replace(/\x1b\[[0-9;]*m/g, '');
|
|
154
|
+
if (visible.length > maxInner) {
|
|
155
|
+
// Truncate with ellipsis to prevent box overflow.
|
|
156
|
+
// Reserve 1 visible char for '…' so total = 1 + (truncLen + 1) + 1 = width.
|
|
157
|
+
const truncLen = Math.max(maxInner - 1, 1);
|
|
158
|
+
// Walk text char-by-char to preserve ANSI boundaries during truncation
|
|
159
|
+
let visCount = 0;
|
|
160
|
+
let idx = 0;
|
|
161
|
+
const chars = [...text];
|
|
162
|
+
while (idx < chars.length && visCount < truncLen) {
|
|
163
|
+
if (chars[idx] === '\x1b') {
|
|
164
|
+
// Skip the entire ANSI escape sequence
|
|
165
|
+
while (idx < chars.length && chars[idx] !== 'm')
|
|
166
|
+
idx++;
|
|
167
|
+
idx++; // skip the 'm' terminator
|
|
168
|
+
}
|
|
169
|
+
else {
|
|
170
|
+
visCount++;
|
|
171
|
+
idx++;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
const truncated = text.slice(0, idx) + '…';
|
|
175
|
+
return chalk_1.default.hex(color)('│') + truncated + chalk_1.default.hex(color)('│');
|
|
176
|
+
}
|
|
177
|
+
const padding = maxInner - visible.length;
|
|
178
|
+
return chalk_1.default.hex(color)('│') + text + ' '.repeat(padding) + chalk_1.default.hex(color)('│');
|
|
179
|
+
}
|
|
180
|
+
// ── Context bar helpers ──────────────────────────────────────────────────────
|
|
181
|
+
/** Format a token count compactly: 1234 → "1.2K", 25400 → "25.4K", 1000000 → "1M". */
|
|
182
|
+
function formatCompact(n) {
|
|
183
|
+
if (n >= 1_000_000) {
|
|
184
|
+
const v = n / 1_000_000;
|
|
185
|
+
return (v % 1 === 0 ? v.toFixed(0) : v.toFixed(1)) + 'M';
|
|
186
|
+
}
|
|
187
|
+
if (n >= 1_000) {
|
|
188
|
+
const v = n / 1_000;
|
|
189
|
+
return (v % 1 === 0 ? v.toFixed(0) : v.toFixed(1)) + 'K';
|
|
190
|
+
}
|
|
191
|
+
return String(n);
|
|
192
|
+
}
|
|
193
|
+
/** Build the context-bar line, e.g. ` 25.4K/1M │ [████░░░░░░] 23%`. */
|
|
194
|
+
function formatContextBar(used, limit, estimated) {
|
|
195
|
+
const pct = Math.round((used / limit) * 100);
|
|
196
|
+
const filled = Math.round(pct / 10);
|
|
197
|
+
const empty = 10 - filled;
|
|
198
|
+
const bar = chalk_1.default.hex('#cc785c')('█'.repeat(filled)) + chalk_1.default.hex('#4e3d30')('░'.repeat(empty));
|
|
199
|
+
const left = estimated
|
|
200
|
+
? chalk_1.default.hex('#d4903a')(`~${formatCompact(used)}`)
|
|
201
|
+
: chalk_1.default.hex('#5a9e6e')(formatCompact(used));
|
|
202
|
+
const right = chalk_1.default.hex('#8a7768')(formatCompact(limit));
|
|
203
|
+
const pctStr = estimated
|
|
204
|
+
? chalk_1.default.hex('#d4903a')(`${pct}%`)
|
|
205
|
+
: chalk_1.default.hex('#8a7768')(`${pct}%`);
|
|
206
|
+
const estTag = estimated ? chalk_1.default.hex('#4e3d30')(' (estimated)') : '';
|
|
207
|
+
return ` ${left}/${right} │ [${bar}] ${pctStr}${estTag}`;
|
|
208
|
+
}
|
|
209
|
+
// ── Helpers ───────────────────────────────────────────────────────────────────
|
|
210
|
+
function toolIcon(name) {
|
|
211
|
+
const icons = {
|
|
212
|
+
read_file: '📄', list_dir: '📁', edit_file: '✏️',
|
|
213
|
+
write_file: '📝', search_code: '🔍', run_shell: '⚡',
|
|
214
|
+
run_tests: '🧪', git_status: '🌿', git_diff: '📊',
|
|
215
|
+
};
|
|
216
|
+
return icons[name] ?? '🔧';
|
|
217
|
+
}
|
|
218
|
+
function formatInput(name, input) {
|
|
219
|
+
switch (name) {
|
|
220
|
+
case 'read_file': {
|
|
221
|
+
const r = input.start_line ? ` :${input.start_line}-${input.end_line ?? '?'}` : '';
|
|
222
|
+
return `${input.path}${r}`;
|
|
223
|
+
}
|
|
224
|
+
case 'list_dir': return `${input.path ?? '.'}${input.recursive ? ' (recursive)' : ''}`;
|
|
225
|
+
case 'edit_file': return `${input.path}`;
|
|
226
|
+
case 'write_file': return `${input.path}`;
|
|
227
|
+
case 'search_code': return `"${input.pattern}"${input.path ? ` in ${input.path}` : ''}`;
|
|
228
|
+
case 'run_shell': return String(input.command);
|
|
229
|
+
case 'run_tests': return input.file_or_pattern ? String(input.file_or_pattern) : 'all tests';
|
|
230
|
+
case 'git_diff': return input.path ? String(input.path) : 'all files';
|
|
231
|
+
default: return JSON.stringify(input).slice(0, 60);
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
//# sourceMappingURL=display.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"display.js","sourceRoot":"","sources":["../../src/cli/display.ts"],"names":[],"mappings":"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"}
|