@mathzdevolper/phantomcode-cli 1.0.0 → 2.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.
Files changed (52) hide show
  1. package/bin/phantomcode.js +2 -0
  2. package/package.json +6 -26
  3. package/src/cli.js +65 -0
  4. package/src/commands/chat.js +50 -0
  5. package/src/commands/config.js +35 -0
  6. package/src/commands/interactive.js +87 -0
  7. package/src/commands/models.js +35 -0
  8. package/src/config.js +135 -0
  9. package/src/hf.js +67 -0
  10. package/src/logger.js +84 -0
  11. package/src/models.js +49 -0
  12. package/dist/commands/chat.d.ts +0 -9
  13. package/dist/commands/chat.js +0 -68
  14. package/dist/commands/chat.js.map +0 -1
  15. package/dist/commands/config.d.ts +0 -1
  16. package/dist/commands/config.js +0 -57
  17. package/dist/commands/config.js.map +0 -1
  18. package/dist/commands/interactive.d.ts +0 -7
  19. package/dist/commands/interactive.js +0 -155
  20. package/dist/commands/interactive.js.map +0 -1
  21. package/dist/commands/models.d.ts +0 -5
  22. package/dist/commands/models.js +0 -38
  23. package/dist/commands/models.js.map +0 -1
  24. package/dist/commands/session.d.ts +0 -1
  25. package/dist/commands/session.js +0 -77
  26. package/dist/commands/session.js.map +0 -1
  27. package/dist/config/manager.d.ts +0 -14
  28. package/dist/config/manager.js +0 -49
  29. package/dist/config/manager.js.map +0 -1
  30. package/dist/index.d.ts +0 -2
  31. package/dist/index.js +0 -90
  32. package/dist/index.js.map +0 -1
  33. package/dist/provider/dogrouter.d.ts +0 -28
  34. package/dist/provider/dogrouter.js +0 -58
  35. package/dist/provider/dogrouter.js.map +0 -1
  36. package/dist/session/manager.d.ts +0 -20
  37. package/dist/session/manager.js +0 -112
  38. package/dist/session/manager.js.map +0 -1
  39. package/dist/tui/colors.d.ts +0 -15
  40. package/dist/tui/colors.js +0 -47
  41. package/dist/tui/colors.js.map +0 -1
  42. package/src/commands/chat.ts +0 -81
  43. package/src/commands/config.ts +0 -74
  44. package/src/commands/interactive.ts +0 -140
  45. package/src/commands/models.ts +0 -41
  46. package/src/commands/session.ts +0 -93
  47. package/src/config/manager.ts +0 -49
  48. package/src/index.ts +0 -109
  49. package/src/provider/dogrouter.ts +0 -82
  50. package/src/session/manager.ts +0 -93
  51. package/src/tui/colors.ts +0 -43
  52. package/tsconfig.json +0 -17
@@ -1,68 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.handleChat = handleChat;
4
- const manager_1 = require("../config/manager");
5
- const dogrouter_1 = require("../provider/dogrouter");
6
- const colors_1 = require("../tui/colors");
7
- const manager_2 = require("../session/manager");
8
- async function handleChat(args) {
9
- let apiKey;
10
- try {
11
- apiKey = (0, manager_1.getApiKey)();
12
- }
13
- catch {
14
- console.error(colors_1.style.error("✗ API key nao configurada"));
15
- console.log(colors_1.style.muted(" Execute: phantomcode config set <sua-api-key>"));
16
- process.exit(1);
17
- }
18
- const model = args.model || (0, manager_1.getDefaultModel)();
19
- const messages = [];
20
- if (args.session) {
21
- const session = (0, manager_2.getSession)(args.session);
22
- if (session) {
23
- messages.push(...session.messages.map((m) => ({ role: m.role, content: m.content })));
24
- console.log(colors_1.style.muted(`↻ Continuando sessao: ${session.title}`));
25
- }
26
- }
27
- if (args.system) {
28
- messages.unshift({ role: "system", content: args.system });
29
- }
30
- messages.push({ role: "user", content: args.message });
31
- console.log(colors_1.style.separator());
32
- console.log(`${colors_1.style.label("Voce:")} ${args.message}`);
33
- console.log(colors_1.style.separator());
34
- try {
35
- const response = await (0, dogrouter_1.chat)(apiKey, messages, { model });
36
- console.log(`${colors_1.style.primary("Phantom:")} ${response.content}`);
37
- if (response.usage) {
38
- console.log(colors_1.style.separator());
39
- console.log(colors_1.style.muted(`↳ Modelo: ${response.model} | Tokens: ${response.usage.promptTokens}→${response.usage.completionTokens} (${response.usage.totalTokens})`));
40
- }
41
- if (!args.noSave) {
42
- if (!args.session) {
43
- const session = (0, manager_2.createSession)(model, args.message);
44
- (0, manager_2.addMessage)(session.id, "user", args.message);
45
- (0, manager_2.addMessage)(session.id, "assistant", response.content);
46
- console.log(colors_1.style.muted(`↳ Sessao salva: ${session.id}`));
47
- }
48
- else {
49
- (0, manager_2.addMessage)(args.session, "user", args.message);
50
- (0, manager_2.addMessage)(args.session, "assistant", response.content);
51
- }
52
- }
53
- }
54
- catch (error) {
55
- const err = error;
56
- if (err.status === 401) {
57
- console.error(colors_1.style.error("✗ API key invalida. Use: phantomcode config set <api-key>"));
58
- }
59
- else if (err.status === 429) {
60
- console.error(colors_1.style.error("✗ Limite de requisicoes excedido. Tente novamente mais tarde"));
61
- }
62
- else {
63
- console.error(colors_1.style.error(`✗ Erro: ${err.message || "Erro desconhecido"}`));
64
- }
65
- process.exit(1);
66
- }
67
- }
68
- //# sourceMappingURL=chat.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"chat.js","sourceRoot":"","sources":["../../src/commands/chat.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export declare function buildConfigCommand(yargs: any): any;
@@ -1,57 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.buildConfigCommand = buildConfigCommand;
4
- const manager_1 = require("../config/manager");
5
- const colors_1 = require("../tui/colors");
6
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
7
- function buildConfigCommand(yargs) {
8
- return yargs
9
- .command("set <api-key>", "Define a API key do DogRouter",
10
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
11
- (y) => y.positional("api-key", {
12
- describe: "Sua API key do DogRouter",
13
- type: "string",
14
- demandOption: true,
15
- }), (args) => {
16
- (0, manager_1.setApiKey)(args.apiKey);
17
- console.log(colors_1.style.success("✓ API key configurada com sucesso"));
18
- })
19
- .command("get", "Exibe as configuracoes atuais",
20
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
21
- (y) => y
22
- .option("api-key", { type: "boolean", desc: "Exibir apenas a API key" })
23
- .option("model", { type: "boolean", desc: "Exibir apenas o modelo padrao" })
24
- .option("all", { type: "boolean", desc: "Exibir todas as configuracoes" }), (args) => {
25
- if (args.apiKey) {
26
- console.log(colors_1.style.label(`API Key: ${(0, manager_1.hasApiKey)() ? colors_1.style.code((0, manager_1.getApiKey)()) : colors_1.style.warning("nao definida")}`));
27
- return;
28
- }
29
- if (args.model) {
30
- console.log(colors_1.style.label(`Modelo padrao: ${colors_1.style.code((0, manager_1.getDefaultModel)())}`));
31
- return;
32
- }
33
- const all = (0, manager_1.getAll)();
34
- console.log(colors_1.style.header("┌─ Configuracao ──────────────────────"));
35
- console.log(colors_1.style.label(`│ API Key: ${all.apiKey ? colors_1.style.code(all.apiKey.slice(0, 12) + "...") : colors_1.style.muted("nao definida")}`));
36
- console.log(colors_1.style.label(`│ Modelo padrao: ${colors_1.style.code(all.defaultModel || "dogrouter/auto")}`));
37
- console.log(colors_1.style.label(`│ Tema: ${colors_1.style.code(all.theme || "dark")}`));
38
- console.log(colors_1.style.header("└────────────────────────────────────"));
39
- })
40
- .command("reset", "Remove a API key configurada", () => ({}), () => {
41
- (0, manager_1.removeApiKey)();
42
- console.log(colors_1.style.warning("⚠ API key removida"));
43
- })
44
- .command("set-model <model>", "Define o modelo padrao",
45
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
46
- (y) => y.positional("model", {
47
- describe: "Nome do modelo (ex: dogrouter/auto)",
48
- type: "string",
49
- demandOption: true,
50
- }), (args) => {
51
- (0, manager_1.setDefaultModel)(args.model);
52
- console.log(colors_1.style.success(`✓ Modelo padrao alterado para: ${colors_1.style.code(args.model)}`));
53
- })
54
- .demandCommand(1, "Use: phantomcode config <comando>")
55
- .help();
56
- }
57
- //# sourceMappingURL=config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- interface InteractiveArgs {
2
- model?: string;
3
- session?: string;
4
- system?: string;
5
- }
6
- export declare function runInteractive(args: InteractiveArgs): Promise<void>;
7
- export {};
@@ -1,155 +0,0 @@
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.runInteractive = runInteractive;
37
- const readline = __importStar(require("readline"));
38
- const manager_1 = require("../config/manager");
39
- const dogrouter_1 = require("../provider/dogrouter");
40
- const colors_1 = require("../tui/colors");
41
- const manager_2 = require("../session/manager");
42
- async function runInteractive(args) {
43
- let apiKey;
44
- try {
45
- apiKey = (0, manager_1.getApiKey)();
46
- }
47
- catch {
48
- console.error(colors_1.style.error("✗ API key nao configurada"));
49
- console.log(colors_1.style.muted(" Execute: phantomcode config set <sua-api-key>"));
50
- process.exit(1);
51
- }
52
- const model = args.model || (0, manager_1.getDefaultModel)();
53
- let sessionId = null;
54
- const messages = [];
55
- if (args.session) {
56
- const existing = (0, manager_2.getSession)(args.session);
57
- if (existing) {
58
- sessionId = existing.id;
59
- messages.push(...existing.messages.map((m) => ({ role: m.role, content: m.content })));
60
- console.log(colors_1.style.muted(`↻ Continuando sessao: ${existing.title}\n`));
61
- }
62
- }
63
- if (args.system) {
64
- messages.unshift({ role: "system", content: args.system });
65
- }
66
- printBanner();
67
- const rl = readline.createInterface({
68
- input: process.stdin,
69
- output: process.stdout,
70
- prompt: colors_1.style.primary("» "),
71
- });
72
- rl.prompt();
73
- rl.on("line", async (line) => {
74
- const input = line.trim();
75
- if (input === "" || input === "/exit" || input === "/quit") {
76
- rl.close();
77
- return;
78
- }
79
- if (input === "/help") {
80
- printHelp();
81
- rl.prompt();
82
- return;
83
- }
84
- if (input === "/clear") {
85
- console.clear();
86
- printBanner();
87
- rl.prompt();
88
- return;
89
- }
90
- if (input === "/new") {
91
- messages.length = 0;
92
- if (args.system)
93
- messages.unshift({ role: "system", content: args.system });
94
- sessionId = null;
95
- console.log(colors_1.style.success("✓ Nova conversa iniciada\n"));
96
- rl.prompt();
97
- return;
98
- }
99
- if (input.startsWith("/model ")) {
100
- const newModel = input.slice(7).trim();
101
- if (newModel) {
102
- console.log(colors_1.style.muted(`Modelo alterado para: ${colors_1.style.code(newModel)}\n`));
103
- }
104
- rl.prompt();
105
- return;
106
- }
107
- messages.push({ role: "user", content: input });
108
- try {
109
- const response = await (0, dogrouter_1.chat)(apiKey, messages, { model });
110
- console.log(`\n${colors_1.style.primary("Phantom:")} ${response.content}\n`);
111
- messages.push({ role: "assistant", content: response.content });
112
- if (sessionId) {
113
- (0, manager_2.addMessage)(sessionId, "user", input);
114
- (0, manager_2.addMessage)(sessionId, "assistant", response.content);
115
- }
116
- else {
117
- const session = (0, manager_2.createSession)(model, input);
118
- sessionId = session.id;
119
- (0, manager_2.addMessage)(sessionId, "user", input);
120
- (0, manager_2.addMessage)(sessionId, "assistant", response.content);
121
- }
122
- }
123
- catch (error) {
124
- const err = error;
125
- console.error(`\n${colors_1.style.error(`✗ ${err.message || "Erro"}`)}\n`);
126
- }
127
- rl.prompt();
128
- });
129
- rl.on("close", () => {
130
- console.log(`\n${colors_1.style.muted("Sessao encerrada")}`);
131
- if (sessionId) {
132
- console.log(colors_1.style.muted(`ID da sessao: ${sessionId}`));
133
- }
134
- process.exit(0);
135
- });
136
- }
137
- function printBanner() {
138
- console.clear();
139
- console.log(colors_1.style.header("╔══════════════════════════════════════════════╗"));
140
- console.log(colors_1.style.header("║ PhantomCode - Modo Interativo ║"));
141
- console.log(colors_1.style.header("║ DogRouter AI Integration ║"));
142
- console.log(colors_1.style.header("╚══════════════════════════════════════════════╝"));
143
- console.log(colors_1.style.muted(" /help /exit /clear /new /model <nome>\n"));
144
- }
145
- function printHelp() {
146
- console.log(colors_1.style.header("\n┌─ Comandos Disponiveis ──────────────────────"));
147
- console.log(` ${colors_1.style.code("/exit")} ${colors_1.style.muted("Sair do modo interativo")}`);
148
- console.log(` ${colors_1.style.code("/quit")} ${colors_1.style.muted("Sair do modo interativo")}`);
149
- console.log(` ${colors_1.style.code("/clear")} ${colors_1.style.muted("Limpar a tela")}`);
150
- console.log(` ${colors_1.style.code("/new")} ${colors_1.style.muted("Iniciar nova conversa")}`);
151
- console.log(` ${colors_1.style.code("/model")} ${colors_1.style.muted("Alterar o modelo (ex: /model dogrouter/auto)")}`);
152
- console.log(` ${colors_1.style.code("/help")} ${colors_1.style.muted("Exibir esta ajuda")}`);
153
- console.log(colors_1.style.header("└───────────────────────────────────────────────┘\n"));
154
- }
155
- //# sourceMappingURL=interactive.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"interactive.js","sourceRoot":"","sources":["../../src/commands/interactive.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- interface ModelsArgs {
2
- search?: string;
3
- }
4
- export declare function handleModels(args: ModelsArgs): Promise<void>;
5
- export {};
@@ -1,38 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.handleModels = handleModels;
4
- const manager_1 = require("../config/manager");
5
- const dogrouter_1 = require("../provider/dogrouter");
6
- const colors_1 = require("../tui/colors");
7
- async function handleModels(args) {
8
- let apiKey;
9
- try {
10
- apiKey = (0, manager_1.getApiKey)();
11
- }
12
- catch {
13
- console.error(colors_1.style.error("✗ API key nao configurada"));
14
- console.log(colors_1.style.muted(" Execute: phantomcode config set <sua-api-key>"));
15
- process.exit(1);
16
- }
17
- try {
18
- const models = await (0, dogrouter_1.listModels)(apiKey);
19
- const filtered = args.search
20
- ? models.filter((m) => m.id.toLowerCase().includes(args.search.toLowerCase()))
21
- : models;
22
- if (filtered.length === 0) {
23
- console.log(colors_1.style.warning("Nenhum modelo encontrado"));
24
- return;
25
- }
26
- console.log(colors_1.style.header(`┌─ Modelos Disponiveis (${filtered.length}) ───────────`));
27
- for (const m of filtered) {
28
- console.log(`│ ${colors_1.style.code(m.id)}`);
29
- }
30
- console.log(colors_1.style.header("└───────────────────────────────────────────"));
31
- }
32
- catch (error) {
33
- const err = error;
34
- console.error(colors_1.style.error(`✗ Erro ao listar modelos: ${err.message || "Erro desconhecido"}`));
35
- process.exit(1);
36
- }
37
- }
38
- //# sourceMappingURL=models.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/commands/models.ts"],"names":[],"mappings":";;AAQA,oCAgCC;AAxCD,+CAA8C;AAC9C,qDAAmD;AACnD,0CAAsC;AAM/B,KAAK,UAAU,YAAY,CAAC,IAAgB;IACjD,IAAI,MAAc,CAAC;IACnB,IAAI,CAAC;QACH,MAAM,GAAG,IAAA,mBAAS,GAAE,CAAC;IACvB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,KAAK,CAAC,cAAK,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC,CAAC;QACxD,OAAO,CAAC,GAAG,CAAC,cAAK,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAC,CAAC;QAC5E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,IAAA,sBAAU,EAAC,MAAM,CAAC,CAAC;QAExC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM;YAC1B,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAO,CAAC,WAAW,EAAE,CAAC,CAAC;YAC/E,CAAC,CAAC,MAAM,CAAC;QAEX,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,cAAK,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC,CAAC;YACvD,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,cAAK,CAAC,MAAM,CAAC,2BAA2B,QAAQ,CAAC,MAAM,eAAe,CAAC,CAAC,CAAC;QACrF,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,KAAK,cAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACvC,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,cAAK,CAAC,MAAM,CAAC,8CAA8C,CAAC,CAAC,CAAC;IAC5E,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,MAAM,GAAG,GAAG,KAA6B,CAAC;QAC1C,OAAO,CAAC,KAAK,CAAC,cAAK,CAAC,KAAK,CAAC,6BAA6B,GAAG,CAAC,OAAO,IAAI,mBAAmB,EAAE,CAAC,CAAC,CAAC;QAC9F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -1 +0,0 @@
1
- export declare function buildSessionCommand(yargs: any): any;
@@ -1,77 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.buildSessionCommand = buildSessionCommand;
4
- const manager_1 = require("../session/manager");
5
- const colors_1 = require("../tui/colors");
6
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
7
- function buildSessionCommand(yargs) {
8
- return yargs
9
- .command("list", "Lista todas as sessoes salvas",
10
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
11
- (y) => y.option("limit", {
12
- alias: "n",
13
- describe: "Numero maximo de sessoes",
14
- type: "number",
15
- default: 10,
16
- }), (args) => {
17
- const sessions = (0, manager_1.listSessions)().slice(0, args.limit);
18
- if (sessions.length === 0) {
19
- console.log(colors_1.style.muted("Nenhuma sessao encontrada"));
20
- return;
21
- }
22
- console.log(colors_1.style.header(`┌─ Sessoes (${sessions.length}) ───────────────────────────`));
23
- for (const s of sessions) {
24
- const date = new Date(s.updatedAt).toLocaleString("pt-BR");
25
- console.log(`│ ${colors_1.style.code(s.id.slice(0, 8))}... ${colors_1.style.highlight(s.title)}`);
26
- console.log(`│ ${colors_1.style.muted(`${date} · ${s.model} · ${s.messages.length} msgs`)}`);
27
- console.log(`│`);
28
- }
29
- console.log(colors_1.style.header("└───────────────────────────────────────────"));
30
- })
31
- .command("show <id>", "Exibe detalhes de uma sessao",
32
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
33
- (y) => y.positional("id", {
34
- describe: "ID da sessao",
35
- type: "string",
36
- demandOption: true,
37
- }), (args) => {
38
- const session = (0, manager_1.getSession)(args.id);
39
- if (!session) {
40
- console.error(colors_1.style.error("✗ Sessao nao encontrada"));
41
- process.exit(1);
42
- }
43
- console.log(colors_1.style.header("┌─ Sessao ─────────────────────────────────"));
44
- console.log(`│ ID: ${colors_1.style.code(session.id)}`);
45
- console.log(`│ Titulo: ${colors_1.style.highlight(session.title)}`);
46
- console.log(`│ Modelo: ${colors_1.style.code(session.model)}`);
47
- console.log(`│ Mensagens: ${session.messages.length}`);
48
- console.log(`│ Criada: ${new Date(session.createdAt).toLocaleString("pt-BR")}`);
49
- console.log(colors_1.style.header("├─ Mensagens ──────────────────────────────"));
50
- for (const msg of session.messages) {
51
- const role = msg.role === "user" ? "Voce" : msg.role === "assistant" ? "Phantom" : "Sistema";
52
- const color = msg.role === "user" ? colors_1.style.label : msg.role === "assistant" ? colors_1.style.primary : colors_1.style.warning;
53
- const preview = msg.content.slice(0, 200) + (msg.content.length > 200 ? "..." : "");
54
- console.log(color(`${role}: ${preview}`));
55
- console.log("");
56
- }
57
- console.log(colors_1.style.header("└───────────────────────────────────────────"));
58
- })
59
- .command("delete <id>", "Deleta uma sessao",
60
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
61
- (y) => y.positional("id", {
62
- describe: "ID da sessao",
63
- type: "string",
64
- demandOption: true,
65
- }), (args) => {
66
- const session = (0, manager_1.getSession)(args.id);
67
- if (!session) {
68
- console.error(colors_1.style.error("✗ Sessao nao encontrada"));
69
- process.exit(1);
70
- }
71
- (0, manager_1.deleteSession)(args.id);
72
- console.log(colors_1.style.success(`✓ Sessao "${session.title}" deletada`));
73
- })
74
- .demandCommand(1, "Use: phantomcode session <comando>")
75
- .help();
76
- }
77
- //# sourceMappingURL=session.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/commands/session.ts"],"names":[],"mappings":"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"}
@@ -1,14 +0,0 @@
1
- interface PhantomConfig {
2
- apiKey?: string;
3
- defaultModel?: string;
4
- theme?: "light" | "dark";
5
- }
6
- export declare function getApiKey(): string;
7
- export declare function setApiKey(key: string): void;
8
- export declare function removeApiKey(): void;
9
- export declare function hasApiKey(): boolean;
10
- export declare function getDefaultModel(): string;
11
- export declare function setDefaultModel(model: string): void;
12
- export declare function getTheme(): string;
13
- export declare function getAll(): PhantomConfig;
14
- export {};
@@ -1,49 +0,0 @@
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.getApiKey = getApiKey;
7
- exports.setApiKey = setApiKey;
8
- exports.removeApiKey = removeApiKey;
9
- exports.hasApiKey = hasApiKey;
10
- exports.getDefaultModel = getDefaultModel;
11
- exports.setDefaultModel = setDefaultModel;
12
- exports.getTheme = getTheme;
13
- exports.getAll = getAll;
14
- const conf_1 = __importDefault(require("conf"));
15
- const store = new conf_1.default({
16
- projectName: "phantomcode",
17
- defaults: {
18
- defaultModel: "dogrouter/auto",
19
- theme: "dark",
20
- },
21
- });
22
- function getApiKey() {
23
- const key = store.get("apiKey");
24
- if (!key)
25
- throw new Error("API key nao configurada. Use: phantomcode config --set <api-key>");
26
- return key;
27
- }
28
- function setApiKey(key) {
29
- store.set("apiKey", key);
30
- }
31
- function removeApiKey() {
32
- store.delete("apiKey");
33
- }
34
- function hasApiKey() {
35
- return store.has("apiKey");
36
- }
37
- function getDefaultModel() {
38
- return store.get("defaultModel", "dogrouter/auto");
39
- }
40
- function setDefaultModel(model) {
41
- store.set("defaultModel", model);
42
- }
43
- function getTheme() {
44
- return store.get("theme", "dark");
45
- }
46
- function getAll() {
47
- return store.store;
48
- }
49
- //# sourceMappingURL=manager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/config/manager.ts"],"names":[],"mappings":";;;;;AAgBA,8BAIC;AAED,8BAEC;AAED,oCAEC;AAED,8BAEC;AAED,0CAEC;AAED,0CAEC;AAED,4BAEC;AAED,wBAEC;AAhDD,gDAAwB;AAQxB,MAAM,KAAK,GAAG,IAAI,cAAI,CAAgB;IACpC,WAAW,EAAE,aAAa;IAC1B,QAAQ,EAAE;QACR,YAAY,EAAE,gBAAgB;QAC9B,KAAK,EAAE,MAAM;KACd;CACF,CAAC,CAAC;AAEH,SAAgB,SAAS;IACvB,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAChC,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAC;IAC9F,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAgB,SAAS,CAAC,GAAW;IACnC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;AAC3B,CAAC;AAED,SAAgB,YAAY;IAC1B,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AACzB,CAAC;AAED,SAAgB,SAAS;IACvB,OAAO,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC7B,CAAC;AAED,SAAgB,eAAe;IAC7B,OAAO,KAAK,CAAC,GAAG,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAC;AACrD,CAAC;AAED,SAAgB,eAAe,CAAC,KAAa;IAC3C,KAAK,CAAC,GAAG,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;AACnC,CAAC;AAED,SAAgB,QAAQ;IACtB,OAAO,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AACpC,CAAC;AAED,SAAgB,MAAM;IACpB,OAAO,KAAK,CAAC,KAAK,CAAC;AACrB,CAAC"}
package/dist/index.d.ts DELETED
@@ -1,2 +0,0 @@
1
- #! /usr/bin/env node
2
- export {};
package/dist/index.js DELETED
@@ -1,90 +0,0 @@
1
- #! /usr/bin/env node
2
- "use strict";
3
- var __importDefault = (this && this.__importDefault) || function (mod) {
4
- return (mod && mod.__esModule) ? mod : { "default": mod };
5
- };
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- const yargs_1 = __importDefault(require("yargs"));
8
- const helpers_1 = require("yargs/helpers");
9
- const colors_1 = require("./tui/colors");
10
- const chat_1 = require("./commands/chat");
11
- const models_1 = require("./commands/models");
12
- const config_1 = require("./commands/config");
13
- const session_1 = require("./commands/session");
14
- const interactive_1 = require("./commands/interactive");
15
- const pkg = require("../package.json");
16
- (0, yargs_1.default)((0, helpers_1.hideBin)(process.argv))
17
- .scriptName("phantomcode")
18
- .version(`PhantomCode v${pkg.version}`)
19
- .command("chat <message>", "Envia mensagem para IA via DogRouter",
20
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
21
- ((y) => y
22
- .positional("message", {
23
- describe: "Mensagem a ser enviada",
24
- type: "string",
25
- demandOption: true,
26
- })
27
- .option("model", {
28
- alias: "m",
29
- describe: "Modelo a usar",
30
- type: "string",
31
- })
32
- .option("system", {
33
- alias: "s",
34
- describe: "System prompt",
35
- type: "string",
36
- })
37
- .option("session", {
38
- describe: "ID de sessao para continuar",
39
- type: "string",
40
- })
41
- .option("no-save", {
42
- describe: "Nao salvar em sessao",
43
- type: "boolean",
44
- default: false,
45
- })), chat_1.handleChat)
46
- .command("interactive", "Modo interativo com historico de conversa", ((y) => y
47
- .option("model", { alias: "m", describe: "Modelo a usar", type: "string" })
48
- .option("system", { alias: "s", describe: "System prompt", type: "string" })
49
- .option("session", { describe: "ID de sessao para continuar", type: "string" })), interactive_1.runInteractive)
50
- .command("models", "Lista modelos disponiveis via DogRouter", ((y) => y.option("search", {
51
- alias: "s",
52
- describe: "Filtrar modelos por nome",
53
- type: "string",
54
- })), models_1.handleModels)
55
- .command("config", "Gerencia configuracoes do CLI", config_1.buildConfigCommand, () => { })
56
- .command("session", "Gerencia sessoes de conversa", session_1.buildSessionCommand, () => { })
57
- .command("$0", "", () => { }, () => {
58
- printWelcome();
59
- })
60
- .demandCommand(0)
61
- .strict()
62
- .help()
63
- .fail((msg, err) => {
64
- if (err) {
65
- console.error(colors_1.style.error(`\n✗ ${err.message}`));
66
- }
67
- else {
68
- console.error(colors_1.style.error(`\n✗ ${msg}`));
69
- console.log(colors_1.style.muted("\n Use: phantomcode --help para ver os comandos disponiveis"));
70
- }
71
- process.exit(1);
72
- })
73
- .parse();
74
- function printWelcome() {
75
- console.log(colors_1.style.header(`
76
- ╔══════════════════════════════════════════════╗
77
- ║ ✦ PhantomCode - CLI v${pkg.version} ✦ ║
78
- ║ DogRouter AI Integration Platform ║
79
- ╚══════════════════════════════════════════════╝`));
80
- console.log(colors_1.style.muted("\n Um CLI poderoso para interagir com modelos de IA via DogRouter."));
81
- console.log(colors_1.style.muted(" Roteamento inteligente, multi-modelo, sessoes e historico.\n"));
82
- console.log(`${colors_1.style.primary(" USO:")}`);
83
- console.log(` ${colors_1.style.code("phantomcode chat <mensagem>")} ${colors_1.style.muted("Enviar mensagem para IA")}`);
84
- console.log(` ${colors_1.style.code("phantomcode interactive")} ${colors_1.style.muted("Modo interativo")}`);
85
- console.log(` ${colors_1.style.code("phantomcode models")} ${colors_1.style.muted("Listar modelos")}`);
86
- console.log(` ${colors_1.style.code("phantomcode config set <key>")} ${colors_1.style.muted("Configurar API key")}`);
87
- console.log(` ${colors_1.style.code("phantomcode session list")} ${colors_1.style.muted("Listar sessoes")}`);
88
- console.log(colors_1.style.muted(`\n Documentacao: https://dogrouter.ai\n`));
89
- }
90
- //# sourceMappingURL=index.js.map
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}