devcore-ai 1.0.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/README.md +191 -0
- package/dist/ai/index.d.ts +20 -0
- package/dist/ai/index.d.ts.map +1 -0
- package/dist/ai/index.js +251 -0
- package/dist/ai/index.js.map +1 -0
- package/dist/commands/config-cmd.d.ts +3 -0
- package/dist/commands/config-cmd.d.ts.map +1 -0
- package/dist/commands/config-cmd.js +106 -0
- package/dist/commands/config-cmd.js.map +1 -0
- package/dist/commands/files-cmd.d.ts +3 -0
- package/dist/commands/files-cmd.d.ts.map +1 -0
- package/dist/commands/files-cmd.js +29 -0
- package/dist/commands/files-cmd.js.map +1 -0
- package/dist/commands/git-cmd.d.ts +3 -0
- package/dist/commands/git-cmd.d.ts.map +1 -0
- package/dist/commands/git-cmd.js +114 -0
- package/dist/commands/git-cmd.js.map +1 -0
- package/dist/commands/help.d.ts +12 -0
- package/dist/commands/help.d.ts.map +1 -0
- package/dist/commands/help.js +97 -0
- package/dist/commands/help.js.map +1 -0
- package/dist/commands/image-cmd.d.ts +3 -0
- package/dist/commands/image-cmd.d.ts.map +1 -0
- package/dist/commands/image-cmd.js +38 -0
- package/dist/commands/image-cmd.js.map +1 -0
- package/dist/commands/index.d.ts +9 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +263 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/review-cmd.d.ts +4 -0
- package/dist/commands/review-cmd.d.ts.map +1 -0
- package/dist/commands/review-cmd.js +72 -0
- package/dist/commands/review-cmd.js.map +1 -0
- package/dist/commands/terminal-cmd.d.ts +2 -0
- package/dist/commands/terminal-cmd.d.ts.map +1 -0
- package/dist/commands/terminal-cmd.js +34 -0
- package/dist/commands/terminal-cmd.js.map +1 -0
- package/dist/config/index.d.ts +6 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +56 -0
- package/dist/config/index.js.map +1 -0
- package/dist/filesystem/index.d.ts +5 -0
- package/dist/filesystem/index.d.ts.map +1 -0
- package/dist/filesystem/index.js +174 -0
- package/dist/filesystem/index.js.map +1 -0
- package/dist/git/index.d.ts +9 -0
- package/dist/git/index.d.ts.map +1 -0
- package/dist/git/index.js +121 -0
- package/dist/git/index.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +108 -0
- package/dist/index.js.map +1 -0
- package/dist/memory/index.d.ts +10 -0
- package/dist/memory/index.d.ts.map +1 -0
- package/dist/memory/index.js +88 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/terminal/index.d.ts +11 -0
- package/dist/terminal/index.d.ts.map +1 -0
- package/dist/terminal/index.js +64 -0
- package/dist/terminal/index.js.map +1 -0
- package/dist/types.d.ts +67 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/dist/ui/index.d.ts +15 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +74 -0
- package/dist/ui/index.js.map +1 -0
- package/dist/ui/stream-renderer.d.ts +15 -0
- package/dist/ui/stream-renderer.d.ts.map +1 -0
- package/dist/ui/stream-renderer.js +78 -0
- package/dist/ui/stream-renderer.js.map +1 -0
- package/dist/utils/index.d.ts +13 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +68 -0
- package/dist/utils/index.js.map +1 -0
- package/package.json +58 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Session, ChatMessage } from "../types";
|
|
2
|
+
export declare function createSession(): Promise<Session>;
|
|
3
|
+
export declare function saveSession(session: Session): Promise<void>;
|
|
4
|
+
export declare function loadSession(id: string): Promise<Session | null>;
|
|
5
|
+
export declare function listSessions(): Promise<Session[]>;
|
|
6
|
+
export declare function deleteSession(id: string): Promise<boolean>;
|
|
7
|
+
export declare function addMessage(session: Session, role: "user" | "assistant" | "system", content: string): ChatMessage;
|
|
8
|
+
export declare function getRecentMessages(session: Session, count?: number): ChatMessage[];
|
|
9
|
+
export declare function clearSession(session: Session): void;
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/memory/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAShD,wBAAsB,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC,CAWtD;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAKjE;AAED,wBAAsB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAQrE;AAED,wBAAsB,YAAY,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,CAcvD;AAED,wBAAsB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOhE;AAED,wBAAgB,UAAU,CACxB,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,EACrC,OAAO,EAAE,MAAM,GACd,WAAW,CAKb;AAED,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,OAAO,EAChB,KAAK,GAAE,MAAW,GACjB,WAAW,EAAE,CAEf;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAGnD"}
|
|
@@ -0,0 +1,88 @@
|
|
|
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.createSession = createSession;
|
|
7
|
+
exports.saveSession = saveSession;
|
|
8
|
+
exports.loadSession = loadSession;
|
|
9
|
+
exports.listSessions = listSessions;
|
|
10
|
+
exports.deleteSession = deleteSession;
|
|
11
|
+
exports.addMessage = addMessage;
|
|
12
|
+
exports.getRecentMessages = getRecentMessages;
|
|
13
|
+
exports.clearSession = clearSession;
|
|
14
|
+
const promises_1 = __importDefault(require("fs/promises"));
|
|
15
|
+
const path_1 = __importDefault(require("path"));
|
|
16
|
+
const utils_1 = require("../utils");
|
|
17
|
+
const SESSIONS_DIR = path_1.default.join(process.cwd(), ".devcore", "sessions");
|
|
18
|
+
async function ensureDir() {
|
|
19
|
+
await promises_1.default.mkdir(SESSIONS_DIR, { recursive: true });
|
|
20
|
+
}
|
|
21
|
+
async function createSession() {
|
|
22
|
+
await ensureDir();
|
|
23
|
+
const session = {
|
|
24
|
+
id: (0, utils_1.generateId)(),
|
|
25
|
+
messages: [],
|
|
26
|
+
createdAt: Date.now(),
|
|
27
|
+
updatedAt: Date.now(),
|
|
28
|
+
workingDirectory: process.cwd(),
|
|
29
|
+
};
|
|
30
|
+
await saveSession(session);
|
|
31
|
+
return session;
|
|
32
|
+
}
|
|
33
|
+
async function saveSession(session) {
|
|
34
|
+
await ensureDir();
|
|
35
|
+
session.updatedAt = Date.now();
|
|
36
|
+
const filePath = path_1.default.join(SESSIONS_DIR, `${session.id}.json`);
|
|
37
|
+
await promises_1.default.writeFile(filePath, JSON.stringify(session, null, 2), "utf-8");
|
|
38
|
+
}
|
|
39
|
+
async function loadSession(id) {
|
|
40
|
+
try {
|
|
41
|
+
const filePath = path_1.default.join(SESSIONS_DIR, `${id}.json`);
|
|
42
|
+
const raw = await promises_1.default.readFile(filePath, "utf-8");
|
|
43
|
+
return JSON.parse(raw);
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
async function listSessions() {
|
|
50
|
+
await ensureDir();
|
|
51
|
+
try {
|
|
52
|
+
const files = await promises_1.default.readdir(SESSIONS_DIR);
|
|
53
|
+
const sessions = [];
|
|
54
|
+
for (const file of files) {
|
|
55
|
+
if (!file.endsWith(".json"))
|
|
56
|
+
continue;
|
|
57
|
+
const raw = await promises_1.default.readFile(path_1.default.join(SESSIONS_DIR, file), "utf-8");
|
|
58
|
+
sessions.push(JSON.parse(raw));
|
|
59
|
+
}
|
|
60
|
+
return sessions.sort((a, b) => b.updatedAt - a.updatedAt);
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
return [];
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
async function deleteSession(id) {
|
|
67
|
+
try {
|
|
68
|
+
await promises_1.default.unlink(path_1.default.join(SESSIONS_DIR, `${id}.json`));
|
|
69
|
+
return true;
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
return false;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
function addMessage(session, role, content) {
|
|
76
|
+
const msg = { role, content, timestamp: Date.now() };
|
|
77
|
+
session.messages.push(msg);
|
|
78
|
+
session.updatedAt = Date.now();
|
|
79
|
+
return msg;
|
|
80
|
+
}
|
|
81
|
+
function getRecentMessages(session, count = 20) {
|
|
82
|
+
return session.messages.slice(-count);
|
|
83
|
+
}
|
|
84
|
+
function clearSession(session) {
|
|
85
|
+
session.messages = [];
|
|
86
|
+
session.updatedAt = Date.now();
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/memory/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { CommandExecution } from "../types";
|
|
2
|
+
export interface ExecResult {
|
|
3
|
+
exitCode: number;
|
|
4
|
+
stdout: string;
|
|
5
|
+
stderr: string;
|
|
6
|
+
success: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare function executeCommand(cmd: CommandExecution, onStdout?: (data: string) => void, onStderr?: (data: string) => void): Promise<ExecResult>;
|
|
9
|
+
export declare function parseCommand(input: string): CommandExecution;
|
|
10
|
+
export declare function formatExecResult(result: ExecResult): string;
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/terminal/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5C,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,wBAAsB,cAAc,CAClC,GAAG,EAAE,gBAAgB,EACrB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EACjC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAChC,OAAO,CAAC,UAAU,CAAC,CAyBrB;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,gBAAgB,CAU5D;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAiB3D"}
|
|
@@ -0,0 +1,64 @@
|
|
|
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.executeCommand = executeCommand;
|
|
7
|
+
exports.parseCommand = parseCommand;
|
|
8
|
+
exports.formatExecResult = formatExecResult;
|
|
9
|
+
const execa = require("execa");
|
|
10
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
11
|
+
async function executeCommand(cmd, onStdout, onStderr) {
|
|
12
|
+
try {
|
|
13
|
+
const result = await execa(cmd.command, cmd.args, {
|
|
14
|
+
cwd: cmd.cwd,
|
|
15
|
+
shell: true,
|
|
16
|
+
env: { ...process.env, FORCE_COLOR: "0" },
|
|
17
|
+
});
|
|
18
|
+
if (onStdout && result.stdout)
|
|
19
|
+
onStdout(result.stdout);
|
|
20
|
+
if (onStderr && result.stderr)
|
|
21
|
+
onStderr(result.stderr);
|
|
22
|
+
return {
|
|
23
|
+
exitCode: result.exitCode,
|
|
24
|
+
stdout: result.stdout,
|
|
25
|
+
stderr: result.stderr,
|
|
26
|
+
success: true,
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
catch (err) {
|
|
30
|
+
return {
|
|
31
|
+
exitCode: err.exitCode || 1,
|
|
32
|
+
stdout: err.stdout || "",
|
|
33
|
+
stderr: err.stderr || err.message || "Command failed",
|
|
34
|
+
success: false,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
function parseCommand(input) {
|
|
39
|
+
const parts = input.trim().split(/\s+/);
|
|
40
|
+
const command = parts[0] || "";
|
|
41
|
+
const args = parts.slice(1);
|
|
42
|
+
return {
|
|
43
|
+
command,
|
|
44
|
+
args,
|
|
45
|
+
cwd: process.cwd(),
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
function formatExecResult(result) {
|
|
49
|
+
let output = "";
|
|
50
|
+
if (result.success) {
|
|
51
|
+
output += chalk_1.default.green(`✓ Command completed (exit ${result.exitCode})\n`);
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
output += chalk_1.default.red(`✗ Command failed (exit ${result.exitCode})\n`);
|
|
55
|
+
}
|
|
56
|
+
if (result.stdout) {
|
|
57
|
+
output += chalk_1.default.dim("stdout:\n") + result.stdout + "\n";
|
|
58
|
+
}
|
|
59
|
+
if (result.stderr) {
|
|
60
|
+
output += chalk_1.default.yellow("stderr:\n") + result.stderr + "\n";
|
|
61
|
+
}
|
|
62
|
+
return output;
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/terminal/index.ts"],"names":[],"mappings":";;;;;AAWA,wCA6BC;AAED,oCAUC;AAED,4CAiBC;AAvED,+BAAgC;AAChC,kDAA0B;AAUnB,KAAK,UAAU,cAAc,CAClC,GAAqB,EACrB,QAAiC,EACjC,QAAiC;IAEjC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,EAAE;YAChD,GAAG,EAAE,GAAG,CAAC,GAAG;YACZ,KAAK,EAAE,IAAI;YACX,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE;SAC1C,CAAC,CAAC;QAEH,IAAI,QAAQ,IAAI,MAAM,CAAC,MAAM;YAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACvD,IAAI,QAAQ,IAAI,MAAM,CAAC,MAAM;YAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAEvD,OAAO;YACL,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,OAAO;YACL,QAAQ,EAAE,GAAG,CAAC,QAAQ,IAAI,CAAC;YAC3B,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,EAAE;YACxB,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,OAAO,IAAI,gBAAgB;YACrD,OAAO,EAAE,KAAK;SACf,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAgB,YAAY,CAAC,KAAa;IACxC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACxC,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC/B,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAE5B,OAAO;QACL,OAAO;QACP,IAAI;QACJ,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;KACnB,CAAC;AACJ,CAAC;AAED,SAAgB,gBAAgB,CAAC,MAAkB;IACjD,IAAI,MAAM,GAAG,EAAE,CAAC;IAEhB,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,MAAM,IAAI,eAAK,CAAC,KAAK,CAAC,6BAA6B,MAAM,CAAC,QAAQ,KAAK,CAAC,CAAC;IAC3E,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,eAAK,CAAC,GAAG,CAAC,0BAA0B,MAAM,CAAC,QAAQ,KAAK,CAAC,CAAC;IACtE,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,MAAM,IAAI,eAAK,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;IAC1D,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,MAAM,IAAI,eAAK,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;IAC7D,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
export interface AppConfig {
|
|
2
|
+
apiKey: string;
|
|
3
|
+
model: string;
|
|
4
|
+
temperature: number;
|
|
5
|
+
maxTokens: number;
|
|
6
|
+
provider: "openai" | "anthropic" | "gemini" | "groq";
|
|
7
|
+
theme: "default" | "minimal";
|
|
8
|
+
}
|
|
9
|
+
export interface ChatMessage {
|
|
10
|
+
role: "system" | "user" | "assistant";
|
|
11
|
+
content: string;
|
|
12
|
+
timestamp: number;
|
|
13
|
+
}
|
|
14
|
+
export interface Session {
|
|
15
|
+
id: string;
|
|
16
|
+
messages: ChatMessage[];
|
|
17
|
+
createdAt: number;
|
|
18
|
+
updatedAt: number;
|
|
19
|
+
workingDirectory: string;
|
|
20
|
+
}
|
|
21
|
+
export interface ProjectContext {
|
|
22
|
+
rootPath: string;
|
|
23
|
+
packageJson: Record<string, unknown> | null;
|
|
24
|
+
framework: string;
|
|
25
|
+
dependencies: string[];
|
|
26
|
+
devDependencies: string[];
|
|
27
|
+
structure: string[];
|
|
28
|
+
configFiles: string[];
|
|
29
|
+
sourceFiles: string[];
|
|
30
|
+
}
|
|
31
|
+
export interface FileOperation {
|
|
32
|
+
type: "create" | "modify" | "rename" | "delete";
|
|
33
|
+
path: string;
|
|
34
|
+
newPath?: string;
|
|
35
|
+
content?: string;
|
|
36
|
+
backup?: string;
|
|
37
|
+
}
|
|
38
|
+
export interface CommandExecution {
|
|
39
|
+
command: string;
|
|
40
|
+
cwd: string;
|
|
41
|
+
args: string[];
|
|
42
|
+
}
|
|
43
|
+
export interface AIStreamChunk {
|
|
44
|
+
content: string;
|
|
45
|
+
done: boolean;
|
|
46
|
+
}
|
|
47
|
+
export interface CodeReviewResult {
|
|
48
|
+
bugs: string[];
|
|
49
|
+
security: string[];
|
|
50
|
+
readability: string[];
|
|
51
|
+
performance: string[];
|
|
52
|
+
architecture: string[];
|
|
53
|
+
suggestions: string[];
|
|
54
|
+
}
|
|
55
|
+
export interface GitStatus {
|
|
56
|
+
branch: string;
|
|
57
|
+
staged: string[];
|
|
58
|
+
modified: string[];
|
|
59
|
+
untracked: string[];
|
|
60
|
+
clean: boolean;
|
|
61
|
+
}
|
|
62
|
+
export interface ImageGenerationRequest {
|
|
63
|
+
prompt: string;
|
|
64
|
+
size?: "256x256" | "512x512" | "1024x1024";
|
|
65
|
+
outputPath: string;
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,QAAQ,GAAG,WAAW,GAAG,QAAQ,GAAG,MAAM,CAAC;IACrD,KAAK,EAAE,SAAS,GAAG,SAAS,CAAC;CAC9B;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC5C,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAChD,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,CAAC;IAC3C,UAAU,EAAE,MAAM,CAAC;CACpB"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export declare const LOGO: string;
|
|
2
|
+
export declare const MINI_LOGO: string;
|
|
3
|
+
export declare function success(msg: string): string;
|
|
4
|
+
export declare function error(msg: string): string;
|
|
5
|
+
export declare function warning(msg: string): string;
|
|
6
|
+
export declare function info(msg: string): string;
|
|
7
|
+
export declare function dim(msg: string): string;
|
|
8
|
+
export declare function bold(msg: string): string;
|
|
9
|
+
export declare function cyan(msg: string): string;
|
|
10
|
+
export declare function header(msg: string): string;
|
|
11
|
+
export declare function divider(): string;
|
|
12
|
+
export declare function prompt(): string;
|
|
13
|
+
export declare function assistantPrefix(): string;
|
|
14
|
+
export declare function renderMarkdown(text: string): string;
|
|
15
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,IAAI,QAQhB,CAAC;AAEF,eAAO,MAAM,SAAS,QAA+B,CAAC;AAEtD,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE3C;AAED,wBAAgB,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEzC;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE3C;AAED,wBAAgB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAExC;AAED,wBAAgB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEvC;AAED,wBAAgB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAExC;AAED,wBAAgB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAExC;AAED,wBAAgB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE1C;AAED,wBAAgB,OAAO,IAAI,MAAM,CAEhC;AAED,wBAAgB,MAAM,IAAI,MAAM,CAE/B;AAED,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAanD"}
|
package/dist/ui/index.js
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
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.MINI_LOGO = exports.LOGO = void 0;
|
|
7
|
+
exports.success = success;
|
|
8
|
+
exports.error = error;
|
|
9
|
+
exports.warning = warning;
|
|
10
|
+
exports.info = info;
|
|
11
|
+
exports.dim = dim;
|
|
12
|
+
exports.bold = bold;
|
|
13
|
+
exports.cyan = cyan;
|
|
14
|
+
exports.header = header;
|
|
15
|
+
exports.divider = divider;
|
|
16
|
+
exports.prompt = prompt;
|
|
17
|
+
exports.assistantPrefix = assistantPrefix;
|
|
18
|
+
exports.renderMarkdown = renderMarkdown;
|
|
19
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
20
|
+
exports.LOGO = `
|
|
21
|
+
${chalk_1.default.cyan("██╗ ██╗███████╗██╗ ██╗██╗ ██████╗")}
|
|
22
|
+
${chalk_1.default.cyan("██║ ██║██╔════╝╚██╗ ██╔╝██║██╔════╝")}
|
|
23
|
+
${chalk_1.default.cyan("██║ ██║█████╗ ╚████╔╝ ██║██║ ")}
|
|
24
|
+
${chalk_1.default.cyan("╚██╗ ██╔╝██╔══╝ ╚██╔╝ ██║██║ ")}
|
|
25
|
+
${chalk_1.default.cyan(" ╚████╔╝ ███████╗ ██║ ██║╚██████╗")}
|
|
26
|
+
${chalk_1.default.cyan(" ╚═══╝ ╚══════╝ ╚═╝ ╚═╝ ╚═════╝")}
|
|
27
|
+
${chalk_1.default.gray(" AI-Powered Coding Assistant v1.0.0")}
|
|
28
|
+
`;
|
|
29
|
+
exports.MINI_LOGO = chalk_1.default.cyan.bold("⚡ devcore");
|
|
30
|
+
function success(msg) {
|
|
31
|
+
return chalk_1.default.green("✓ ") + msg;
|
|
32
|
+
}
|
|
33
|
+
function error(msg) {
|
|
34
|
+
return chalk_1.default.red("✗ ") + msg;
|
|
35
|
+
}
|
|
36
|
+
function warning(msg) {
|
|
37
|
+
return chalk_1.default.yellow("⚠ ") + msg;
|
|
38
|
+
}
|
|
39
|
+
function info(msg) {
|
|
40
|
+
return chalk_1.default.blue("ℹ ") + msg;
|
|
41
|
+
}
|
|
42
|
+
function dim(msg) {
|
|
43
|
+
return chalk_1.default.dim(msg);
|
|
44
|
+
}
|
|
45
|
+
function bold(msg) {
|
|
46
|
+
return chalk_1.default.bold(msg);
|
|
47
|
+
}
|
|
48
|
+
function cyan(msg) {
|
|
49
|
+
return chalk_1.default.cyan(msg);
|
|
50
|
+
}
|
|
51
|
+
function header(msg) {
|
|
52
|
+
return chalk_1.default.bold.cyan(`\n━━━ ${msg} ━━━\n`);
|
|
53
|
+
}
|
|
54
|
+
function divider() {
|
|
55
|
+
return chalk_1.default.dim("─".repeat(60));
|
|
56
|
+
}
|
|
57
|
+
function prompt() {
|
|
58
|
+
return chalk_1.default.cyan("▸ ");
|
|
59
|
+
}
|
|
60
|
+
function assistantPrefix() {
|
|
61
|
+
return chalk_1.default.magenta("◆ ");
|
|
62
|
+
}
|
|
63
|
+
function renderMarkdown(text) {
|
|
64
|
+
let out = text;
|
|
65
|
+
out = out.replace(/```(\w+)?\n([\s\S]*?)```/g, (_m, lang, code) => {
|
|
66
|
+
const highlighted = code.trim();
|
|
67
|
+
return chalk_1.default.dim("```" + (lang || "") + "\n") + highlighted + chalk_1.default.dim("\n```");
|
|
68
|
+
});
|
|
69
|
+
out = out.replace(/\*\*(.+?)\*\*/g, (_m, p1) => chalk_1.default.bold(p1));
|
|
70
|
+
out = out.replace(/\*(.+?)\*/g, (_m, p1) => chalk_1.default.italic(p1));
|
|
71
|
+
out = out.replace(/`([^`]+)`/g, (_m, p1) => chalk_1.default.cyan(p1));
|
|
72
|
+
return out;
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export declare class StreamRenderer {
|
|
2
|
+
private buffer;
|
|
3
|
+
private inCodeBlock;
|
|
4
|
+
private codeBlockLang;
|
|
5
|
+
private codeBuffer;
|
|
6
|
+
append(token: string): void;
|
|
7
|
+
private processToken;
|
|
8
|
+
private detectCodeBlockStart;
|
|
9
|
+
private flushCodeBlock;
|
|
10
|
+
private colorInlineCode;
|
|
11
|
+
forceFlush(): void;
|
|
12
|
+
getFullOutput(): string;
|
|
13
|
+
reset(): void;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=stream-renderer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stream-renderer.d.ts","sourceRoot":"","sources":["../../src/ui/stream-renderer.ts"],"names":[],"mappings":"AAEA,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,aAAa,CAAc;IACnC,OAAO,CAAC,UAAU,CAAgB;IAElC,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK3B,OAAO,CAAC,YAAY;IAmBpB,OAAO,CAAC,oBAAoB;IAiB5B,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,eAAe;IAIvB,UAAU,IAAI,IAAI;IAMlB,aAAa,IAAI,MAAM;IAIvB,KAAK,IAAI,IAAI;CAMd"}
|
|
@@ -0,0 +1,78 @@
|
|
|
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.StreamRenderer = void 0;
|
|
7
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
+
class StreamRenderer {
|
|
9
|
+
constructor() {
|
|
10
|
+
this.buffer = "";
|
|
11
|
+
this.inCodeBlock = false;
|
|
12
|
+
this.codeBlockLang = "";
|
|
13
|
+
this.codeBuffer = [];
|
|
14
|
+
}
|
|
15
|
+
append(token) {
|
|
16
|
+
this.buffer += token;
|
|
17
|
+
this.processToken(token);
|
|
18
|
+
}
|
|
19
|
+
processToken(token) {
|
|
20
|
+
if (this.inCodeBlock) {
|
|
21
|
+
if (token.includes("```")) {
|
|
22
|
+
this.flushCodeBlock();
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
this.codeBuffer.push(token);
|
|
26
|
+
process.stdout.write(chalk_1.default.dim(token));
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
if (this.detectCodeBlockStart(token)) {
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
const colored = this.colorInlineCode(token);
|
|
33
|
+
process.stdout.write(colored);
|
|
34
|
+
}
|
|
35
|
+
detectCodeBlockStart(token) {
|
|
36
|
+
const tripleBacktick = "```";
|
|
37
|
+
const recent = this.buffer.slice(-10);
|
|
38
|
+
if (recent.includes(tripleBacktick)) {
|
|
39
|
+
const match = recent.match(/```(\w*)/);
|
|
40
|
+
if (match) {
|
|
41
|
+
this.inCodeBlock = true;
|
|
42
|
+
this.codeBlockLang = match[1] || "";
|
|
43
|
+
this.codeBuffer = [];
|
|
44
|
+
const prefix = chalk_1.default.dim("```" + this.codeBlockLang);
|
|
45
|
+
process.stdout.write("\r" + prefix + "\n");
|
|
46
|
+
return true;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
flushCodeBlock() {
|
|
52
|
+
this.inCodeBlock = false;
|
|
53
|
+
const code = this.codeBuffer.join("");
|
|
54
|
+
process.stdout.write(code);
|
|
55
|
+
process.stdout.write(chalk_1.default.dim("\n```\n"));
|
|
56
|
+
this.codeBuffer = [];
|
|
57
|
+
this.codeBlockLang = "";
|
|
58
|
+
}
|
|
59
|
+
colorInlineCode(text) {
|
|
60
|
+
return text.replace(/`([^`]+)`/g, (_m, p1) => chalk_1.default.cyan(p1));
|
|
61
|
+
}
|
|
62
|
+
forceFlush() {
|
|
63
|
+
if (this.inCodeBlock) {
|
|
64
|
+
this.flushCodeBlock();
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
getFullOutput() {
|
|
68
|
+
return this.buffer;
|
|
69
|
+
}
|
|
70
|
+
reset() {
|
|
71
|
+
this.buffer = "";
|
|
72
|
+
this.inCodeBlock = false;
|
|
73
|
+
this.codeBuffer = [];
|
|
74
|
+
this.codeBlockLang = "";
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
exports.StreamRenderer = StreamRenderer;
|
|
78
|
+
//# sourceMappingURL=stream-renderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stream-renderer.js","sourceRoot":"","sources":["../../src/ui/stream-renderer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export declare function generateId(): string;
|
|
2
|
+
export declare function formatTimestamp(ts: number): string;
|
|
3
|
+
export declare function truncate(str: string, maxLen: number): string;
|
|
4
|
+
export declare function sanitizePath(p: string): string;
|
|
5
|
+
export declare function escapeShellArg(arg: string): string;
|
|
6
|
+
export declare function isDangerousCommand(command: string): boolean;
|
|
7
|
+
export declare function extractCodeBlocks(text: string): {
|
|
8
|
+
lang: string;
|
|
9
|
+
code: string;
|
|
10
|
+
}[];
|
|
11
|
+
export declare function sleep(ms: number): Promise<void>;
|
|
12
|
+
export declare function pluralize(count: number, singular: string, plural?: string): string;
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAGA,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAED,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAElD;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAG5D;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAKlD;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAe3D;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,CAQhF;AAED,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/C;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAElF"}
|
|
@@ -0,0 +1,68 @@
|
|
|
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.generateId = generateId;
|
|
7
|
+
exports.formatTimestamp = formatTimestamp;
|
|
8
|
+
exports.truncate = truncate;
|
|
9
|
+
exports.sanitizePath = sanitizePath;
|
|
10
|
+
exports.escapeShellArg = escapeShellArg;
|
|
11
|
+
exports.isDangerousCommand = isDangerousCommand;
|
|
12
|
+
exports.extractCodeBlocks = extractCodeBlocks;
|
|
13
|
+
exports.sleep = sleep;
|
|
14
|
+
exports.pluralize = pluralize;
|
|
15
|
+
const crypto_1 = __importDefault(require("crypto"));
|
|
16
|
+
const path_1 = __importDefault(require("path"));
|
|
17
|
+
function generateId() {
|
|
18
|
+
return crypto_1.default.randomBytes(8).toString("hex");
|
|
19
|
+
}
|
|
20
|
+
function formatTimestamp(ts) {
|
|
21
|
+
return new Date(ts).toLocaleString();
|
|
22
|
+
}
|
|
23
|
+
function truncate(str, maxLen) {
|
|
24
|
+
if (str.length <= maxLen)
|
|
25
|
+
return str;
|
|
26
|
+
return str.slice(0, maxLen - 3) + "...";
|
|
27
|
+
}
|
|
28
|
+
function sanitizePath(p) {
|
|
29
|
+
return path_1.default.normalize(p).replace(/^(\.\.[/\\])+/, "");
|
|
30
|
+
}
|
|
31
|
+
function escapeShellArg(arg) {
|
|
32
|
+
if (process.platform === "win32") {
|
|
33
|
+
return `"${arg.replace(/"/g, '\\"')}"`;
|
|
34
|
+
}
|
|
35
|
+
return `'${arg.replace(/'/g, "'\\''")}'`;
|
|
36
|
+
}
|
|
37
|
+
function isDangerousCommand(command) {
|
|
38
|
+
const dangerous = [
|
|
39
|
+
"rm -rf /",
|
|
40
|
+
"rm -rf ~",
|
|
41
|
+
"sudo rm",
|
|
42
|
+
"mkfs",
|
|
43
|
+
"dd if=",
|
|
44
|
+
"> /dev/sda",
|
|
45
|
+
"chmod -R 777 /",
|
|
46
|
+
"shutdown",
|
|
47
|
+
"reboot",
|
|
48
|
+
":(){:|:&};:",
|
|
49
|
+
];
|
|
50
|
+
const lower = command.toLowerCase().trim();
|
|
51
|
+
return dangerous.some((d) => lower.includes(d));
|
|
52
|
+
}
|
|
53
|
+
function extractCodeBlocks(text) {
|
|
54
|
+
const regex = /```(\w+)?\n([\s\S]*?)```/g;
|
|
55
|
+
const blocks = [];
|
|
56
|
+
let match;
|
|
57
|
+
while ((match = regex.exec(text)) !== null) {
|
|
58
|
+
blocks.push({ lang: match[1] || "", code: match[2].trim() });
|
|
59
|
+
}
|
|
60
|
+
return blocks;
|
|
61
|
+
}
|
|
62
|
+
function sleep(ms) {
|
|
63
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
64
|
+
}
|
|
65
|
+
function pluralize(count, singular, plural) {
|
|
66
|
+
return count === 1 ? singular : (plural || singular + "s");
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;AAGA,gCAEC;AAED,0CAEC;AAED,4BAGC;AAED,oCAEC;AAED,wCAKC;AAED,gDAeC;AAED,8CAQC;AAED,sBAEC;AAED,8BAEC;AA5DD,oDAA4B;AAC5B,gDAAwB;AAExB,SAAgB,UAAU;IACxB,OAAO,gBAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC/C,CAAC;AAED,SAAgB,eAAe,CAAC,EAAU;IACxC,OAAO,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,cAAc,EAAE,CAAC;AACvC,CAAC;AAED,SAAgB,QAAQ,CAAC,GAAW,EAAE,MAAc;IAClD,IAAI,GAAG,CAAC,MAAM,IAAI,MAAM;QAAE,OAAO,GAAG,CAAC;IACrC,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;AAC1C,CAAC;AAED,SAAgB,YAAY,CAAC,CAAS;IACpC,OAAO,cAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;AACxD,CAAC;AAED,SAAgB,cAAc,CAAC,GAAW;IACxC,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC;IACzC,CAAC;IACD,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC;AAC3C,CAAC;AAED,SAAgB,kBAAkB,CAAC,OAAe;IAChD,MAAM,SAAS,GAAG;QAChB,UAAU;QACV,UAAU;QACV,SAAS;QACT,MAAM;QACN,QAAQ;QACR,YAAY;QACZ,gBAAgB;QAChB,UAAU;QACV,QAAQ;QACR,aAAa;KACd,CAAC;IACF,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;IAC3C,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,CAAC;AAED,SAAgB,iBAAiB,CAAC,IAAY;IAC5C,MAAM,KAAK,GAAG,2BAA2B,CAAC;IAC1C,MAAM,MAAM,GAAqC,EAAE,CAAC;IACpD,IAAI,KAAK,CAAC;IACV,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAC3C,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAC/D,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAgB,KAAK,CAAC,EAAU;IAC9B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,SAAgB,SAAS,CAAC,KAAa,EAAE,QAAgB,EAAE,MAAe;IACxE,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,QAAQ,GAAG,GAAG,CAAC,CAAC;AAC7D,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "devcore-ai",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "DevCore AI — AI-Powered Coding Assistant for the terminal",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"bin": {
|
|
7
|
+
"devcore": "dist/index.js"
|
|
8
|
+
},
|
|
9
|
+
"files": [
|
|
10
|
+
"dist"
|
|
11
|
+
],
|
|
12
|
+
"scripts": {
|
|
13
|
+
"build": "tsc",
|
|
14
|
+
"dev": "ts-node src/index.ts",
|
|
15
|
+
"start": "node dist/index.js",
|
|
16
|
+
"typecheck": "tsc --noEmit",
|
|
17
|
+
"prepublishOnly": "npm run build"
|
|
18
|
+
},
|
|
19
|
+
"keywords": [
|
|
20
|
+
"ai",
|
|
21
|
+
"cli",
|
|
22
|
+
"coding",
|
|
23
|
+
"assistant",
|
|
24
|
+
"devcore",
|
|
25
|
+
"openai",
|
|
26
|
+
"anthropic",
|
|
27
|
+
"gemini",
|
|
28
|
+
"groq",
|
|
29
|
+
"code-review",
|
|
30
|
+
"terminal"
|
|
31
|
+
],
|
|
32
|
+
"author": "DevCore",
|
|
33
|
+
"license": "MIT",
|
|
34
|
+
"repository": {
|
|
35
|
+
"type": "git",
|
|
36
|
+
"url": "https://github.com/your-username/devcore-ai.git"
|
|
37
|
+
},
|
|
38
|
+
"engines": {
|
|
39
|
+
"node": ">=16.0.0"
|
|
40
|
+
},
|
|
41
|
+
"dependencies": {
|
|
42
|
+
"axios": "^1.7.0",
|
|
43
|
+
"chalk": "^4.1.2",
|
|
44
|
+
"cli-highlight": "^2.1.11",
|
|
45
|
+
"commander": "^12.1.0",
|
|
46
|
+
"dotenv": "^16.4.5",
|
|
47
|
+
"execa": "^5.1.1",
|
|
48
|
+
"inquirer": "^8.2.6",
|
|
49
|
+
"marked": "^12.0.2",
|
|
50
|
+
"ora": "^5.4.1",
|
|
51
|
+
"simple-git": "^3.25.0"
|
|
52
|
+
},
|
|
53
|
+
"devDependencies": {
|
|
54
|
+
"@types/inquirer": "^8.2.6",
|
|
55
|
+
"@types/node": "^20.14.0",
|
|
56
|
+
"typescript": "^5.4.5"
|
|
57
|
+
}
|
|
58
|
+
}
|