@nexagent-cli/cli 0.2.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/CHANGELOG.md +66 -0
- package/LICENSE +21 -0
- package/README.md +40 -0
- package/dist/agent/loop.d.ts +45 -0
- package/dist/agent/loop.d.ts.map +1 -0
- package/dist/agent/loop.js +270 -0
- package/dist/agent/loop.js.map +1 -0
- package/dist/agent/prompt.d.ts +3 -0
- package/dist/agent/prompt.d.ts.map +1 -0
- package/dist/agent/prompt.js +43 -0
- package/dist/agent/prompt.js.map +1 -0
- package/dist/commands/agent.d.ts +21 -0
- package/dist/commands/agent.d.ts.map +1 -0
- package/dist/commands/agent.js +111 -0
- package/dist/commands/agent.js.map +1 -0
- package/dist/commands/chat.d.ts +18 -0
- package/dist/commands/chat.d.ts.map +1 -0
- package/dist/commands/chat.js +115 -0
- package/dist/commands/chat.js.map +1 -0
- package/dist/commands/config.d.ts +10 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +96 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/doctor.d.ts +8 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +201 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/memory.d.ts +13 -0
- package/dist/commands/memory.d.ts.map +1 -0
- package/dist/commands/memory.js +97 -0
- package/dist/commands/memory.js.map +1 -0
- package/dist/commands/models.d.ts +2 -0
- package/dist/commands/models.d.ts.map +1 -0
- package/dist/commands/models.js +5 -0
- package/dist/commands/models.js.map +1 -0
- package/dist/commands/run.d.ts +13 -0
- package/dist/commands/run.d.ts.map +1 -0
- package/dist/commands/run.js +74 -0
- package/dist/commands/run.js.map +1 -0
- package/dist/commands/server.d.ts +8 -0
- package/dist/commands/server.d.ts.map +1 -0
- package/dist/commands/server.js +73 -0
- package/dist/commands/server.js.map +1 -0
- package/dist/commands/session.d.ts +11 -0
- package/dist/commands/session.d.ts.map +1 -0
- package/dist/commands/session.js +77 -0
- package/dist/commands/session.js.map +1 -0
- package/dist/commands/update.d.ts +17 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +320 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/config/loader.d.ts +4 -0
- package/dist/config/loader.d.ts.map +1 -0
- package/dist/config/loader.js +83 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/config/wizard.d.ts +4 -0
- package/dist/config/wizard.d.ts.map +1 -0
- package/dist/config/wizard.js +131 -0
- package/dist/config/wizard.js.map +1 -0
- package/dist/db/database.d.ts +4 -0
- package/dist/db/database.d.ts.map +1 -0
- package/dist/db/database.js +130 -0
- package/dist/db/database.js.map +1 -0
- package/dist/db/session-store.d.ts +17 -0
- package/dist/db/session-store.d.ts.map +1 -0
- package/dist/db/session-store.js +117 -0
- package/dist/db/session-store.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +207 -0
- package/dist/index.js.map +1 -0
- package/dist/llm/providers/anthropic.d.ts +21 -0
- package/dist/llm/providers/anthropic.d.ts.map +1 -0
- package/dist/llm/providers/anthropic.js +186 -0
- package/dist/llm/providers/anthropic.js.map +1 -0
- package/dist/llm/providers/google.d.ts +13 -0
- package/dist/llm/providers/google.d.ts.map +1 -0
- package/dist/llm/providers/google.js +83 -0
- package/dist/llm/providers/google.js.map +1 -0
- package/dist/llm/providers/ollama.d.ts +12 -0
- package/dist/llm/providers/ollama.d.ts.map +1 -0
- package/dist/llm/providers/ollama.js +110 -0
- package/dist/llm/providers/ollama.js.map +1 -0
- package/dist/llm/providers/openai.d.ts +15 -0
- package/dist/llm/providers/openai.d.ts.map +1 -0
- package/dist/llm/providers/openai.js +180 -0
- package/dist/llm/providers/openai.js.map +1 -0
- package/dist/llm/router.d.ts +20 -0
- package/dist/llm/router.d.ts.map +1 -0
- package/dist/llm/router.js +52 -0
- package/dist/llm/router.js.map +1 -0
- package/dist/memory/manager.d.ts +16 -0
- package/dist/memory/manager.d.ts.map +1 -0
- package/dist/memory/manager.js +114 -0
- package/dist/memory/manager.js.map +1 -0
- package/dist/safety/gate.d.ts +14 -0
- package/dist/safety/gate.d.ts.map +1 -0
- package/dist/safety/gate.js +102 -0
- package/dist/safety/gate.js.map +1 -0
- package/dist/subagents/orchestrator.d.ts +20 -0
- package/dist/subagents/orchestrator.d.ts.map +1 -0
- package/dist/subagents/orchestrator.js +151 -0
- package/dist/subagents/orchestrator.js.map +1 -0
- package/dist/tools/file-delete.d.ts +15 -0
- package/dist/tools/file-delete.d.ts.map +1 -0
- package/dist/tools/file-delete.js +94 -0
- package/dist/tools/file-delete.js.map +1 -0
- package/dist/tools/file-edit.d.ts +19 -0
- package/dist/tools/file-edit.d.ts.map +1 -0
- package/dist/tools/file-edit.js +182 -0
- package/dist/tools/file-edit.js.map +1 -0
- package/dist/tools/file-list.d.ts +13 -0
- package/dist/tools/file-list.d.ts.map +1 -0
- package/dist/tools/file-list.js +92 -0
- package/dist/tools/file-list.js.map +1 -0
- package/dist/tools/file-read.d.ts +13 -0
- package/dist/tools/file-read.d.ts.map +1 -0
- package/dist/tools/file-read.js +68 -0
- package/dist/tools/file-read.js.map +1 -0
- package/dist/tools/file-search.d.ts +14 -0
- package/dist/tools/file-search.d.ts.map +1 -0
- package/dist/tools/file-search.js +133 -0
- package/dist/tools/file-search.js.map +1 -0
- package/dist/tools/file-write.d.ts +14 -0
- package/dist/tools/file-write.d.ts.map +1 -0
- package/dist/tools/file-write.js +80 -0
- package/dist/tools/file-write.js.map +1 -0
- package/dist/tools/memory-read.d.ts +22 -0
- package/dist/tools/memory-read.d.ts.map +1 -0
- package/dist/tools/memory-read.js +114 -0
- package/dist/tools/memory-read.js.map +1 -0
- package/dist/tools/memory-write.d.ts +2 -0
- package/dist/tools/memory-write.d.ts.map +1 -0
- package/dist/tools/memory-write.js +5 -0
- package/dist/tools/memory-write.js.map +1 -0
- package/dist/tools/registry.d.ts +12 -0
- package/dist/tools/registry.d.ts.map +1 -0
- package/dist/tools/registry.js +66 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/tools/shell-exec.d.ts +14 -0
- package/dist/tools/shell-exec.d.ts.map +1 -0
- package/dist/tools/shell-exec.js +112 -0
- package/dist/tools/shell-exec.js.map +1 -0
- package/dist/tools/web-fetch.d.ts +12 -0
- package/dist/tools/web-fetch.d.ts.map +1 -0
- package/dist/tools/web-fetch.js +91 -0
- package/dist/tools/web-fetch.js.map +1 -0
- package/dist/tools/web-search.d.ts +12 -0
- package/dist/tools/web-search.d.ts.map +1 -0
- package/dist/tools/web-search.js +88 -0
- package/dist/tools/web-search.js.map +1 -0
- package/dist/ui/ChatApp.d.ts +22 -0
- package/dist/ui/ChatApp.d.ts.map +1 -0
- package/dist/ui/ChatApp.js +94 -0
- package/dist/ui/ChatApp.js.map +1 -0
- package/dist/ui/ConfirmDialog.d.ts +20 -0
- package/dist/ui/ConfirmDialog.d.ts.map +1 -0
- package/dist/ui/ConfirmDialog.js +23 -0
- package/dist/ui/ConfirmDialog.js.map +1 -0
- package/dist/ui/InputBar.d.ts +15 -0
- package/dist/ui/InputBar.d.ts.map +1 -0
- package/dist/ui/InputBar.js +49 -0
- package/dist/ui/InputBar.js.map +1 -0
- package/dist/ui/MessageList.d.ts +21 -0
- package/dist/ui/MessageList.d.ts.map +1 -0
- package/dist/ui/MessageList.js +29 -0
- package/dist/ui/MessageList.js.map +1 -0
- package/dist/ui/Spinner.d.ts +8 -0
- package/dist/ui/Spinner.d.ts.map +1 -0
- package/dist/ui/Spinner.js +16 -0
- package/dist/ui/Spinner.js.map +1 -0
- package/dist/ui/StatusBar.d.ts +32 -0
- package/dist/ui/StatusBar.d.ts.map +1 -0
- package/dist/ui/StatusBar.js +42 -0
- package/dist/ui/StatusBar.js.map +1 -0
- package/dist/ui/ToolPanel.d.ts +2 -0
- package/dist/ui/ToolPanel.d.ts.map +1 -0
- package/dist/ui/ToolPanel.js +5 -0
- package/dist/ui/ToolPanel.js.map +1 -0
- package/dist/utils/changelog.d.ts +19 -0
- package/dist/utils/changelog.d.ts.map +1 -0
- package/dist/utils/changelog.js +111 -0
- package/dist/utils/changelog.js.map +1 -0
- package/dist/utils/env.d.ts +9 -0
- package/dist/utils/env.d.ts.map +1 -0
- package/dist/utils/env.js +37 -0
- package/dist/utils/env.js.map +1 -0
- package/package.json +72 -0
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
// ============================================================
|
|
2
|
+
// Command: nexagent memory
|
|
3
|
+
// ============================================================
|
|
4
|
+
import chalk from 'chalk';
|
|
5
|
+
import { homedir } from 'node:os';
|
|
6
|
+
import { join } from 'node:path';
|
|
7
|
+
import { openDatabase } from '../db/database.js';
|
|
8
|
+
import { MemoryManager } from '../memory/manager.js';
|
|
9
|
+
import { SYM } from '@nexagent-cli/shared';
|
|
10
|
+
import boxen from 'boxen';
|
|
11
|
+
export async function runMemory(subcommand, opts) {
|
|
12
|
+
const agentName = opts.agent ?? 'default';
|
|
13
|
+
const dataDir = opts.dataDir ?? join(homedir(), '.nexagent');
|
|
14
|
+
const db = await openDatabase(join(dataDir, 'agents', agentName));
|
|
15
|
+
const manager = new MemoryManager(db, agentName);
|
|
16
|
+
switch (subcommand) {
|
|
17
|
+
case 'list': {
|
|
18
|
+
const blocks = manager.listAll();
|
|
19
|
+
if (opts.json) {
|
|
20
|
+
console.log(JSON.stringify(blocks, null, 2));
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
if (blocks.length === 0) {
|
|
24
|
+
console.log(chalk.dim('No memory blocks found.'));
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
for (const b of blocks) {
|
|
28
|
+
const pin = b.pinned ? chalk.yellow(' [pinned]') : '';
|
|
29
|
+
const arc = b.archived ? chalk.dim(' [archived]') : '';
|
|
30
|
+
console.log(`${chalk.cyan(b.id.slice(0, 8))} ${chalk.bold(b.blockType)}${pin}${arc}`);
|
|
31
|
+
console.log(chalk.dim(` v${b.version} · ${b.tokenEstimate} tokens · ${new Date(b.updatedAt).toLocaleDateString()}`));
|
|
32
|
+
console.log(chalk.white(` ${b.content.slice(0, 120)}${b.content.length > 120 ? '…' : ''}`));
|
|
33
|
+
console.log();
|
|
34
|
+
}
|
|
35
|
+
break;
|
|
36
|
+
}
|
|
37
|
+
case 'show': {
|
|
38
|
+
const block = opts.blockId ? manager.getBlock(opts.blockId) : null;
|
|
39
|
+
if (!block) {
|
|
40
|
+
console.error(chalk.red(`Block not found: ${opts.blockId ?? ''}`));
|
|
41
|
+
process.exit(1);
|
|
42
|
+
}
|
|
43
|
+
if (opts.json) {
|
|
44
|
+
console.log(JSON.stringify(block, null, 2));
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
console.log(boxen(block.content, {
|
|
48
|
+
title: `${block.blockType} · v${block.version}`,
|
|
49
|
+
titleAlignment: 'left',
|
|
50
|
+
borderColor: 'cyan',
|
|
51
|
+
padding: 1,
|
|
52
|
+
}));
|
|
53
|
+
break;
|
|
54
|
+
}
|
|
55
|
+
case 'delete': {
|
|
56
|
+
if (!opts.blockId) {
|
|
57
|
+
console.error(chalk.red('blockId required'));
|
|
58
|
+
process.exit(1);
|
|
59
|
+
}
|
|
60
|
+
if (!opts.force) {
|
|
61
|
+
const { confirm } = await import('@inquirer/prompts');
|
|
62
|
+
const ok = await confirm({ message: `Delete block ${opts.blockId}?`, default: false });
|
|
63
|
+
if (!ok) {
|
|
64
|
+
console.log(chalk.dim('Cancelled.'));
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
manager.deleteBlock(opts.blockId);
|
|
69
|
+
console.log(chalk.green(`${SYM.SUCCESS} Deleted block ${opts.blockId}`));
|
|
70
|
+
break;
|
|
71
|
+
}
|
|
72
|
+
case 'export': {
|
|
73
|
+
const blocks = manager.listAll(true);
|
|
74
|
+
const pkg = JSON.stringify({ version: 1, agent: agentName, blocks, exportedAt: Date.now() }, null, 2);
|
|
75
|
+
const outPath = opts.out ?? `${agentName}-memory.nxpkg`;
|
|
76
|
+
const { writeFile } = await import('node:fs/promises');
|
|
77
|
+
await writeFile(outPath, pkg, 'utf-8');
|
|
78
|
+
console.log(chalk.green(`${SYM.SUCCESS} Exported ${blocks.length} blocks to ${outPath}`));
|
|
79
|
+
break;
|
|
80
|
+
}
|
|
81
|
+
case 'import': {
|
|
82
|
+
if (!opts.file) {
|
|
83
|
+
console.error(chalk.red('file path required'));
|
|
84
|
+
process.exit(1);
|
|
85
|
+
}
|
|
86
|
+
const { readFile } = await import('node:fs/promises');
|
|
87
|
+
const raw = await readFile(opts.file, 'utf-8');
|
|
88
|
+
const pkg = JSON.parse(raw);
|
|
89
|
+
for (const block of pkg.blocks) {
|
|
90
|
+
manager.upsertBlock(block.blockType, block.content);
|
|
91
|
+
}
|
|
92
|
+
console.log(chalk.green(`${SYM.SUCCESS} Imported ${pkg.blocks.length} blocks`));
|
|
93
|
+
break;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=memory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory.js","sourceRoot":"","sources":["../../../../src/commands/memory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../../src/commands/models.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
// ============================================================
|
|
2
|
+
// Command stubs for remaining commands (imported by index.ts)
|
|
3
|
+
// ============================================================
|
|
4
|
+
export { runModels, runUpdate } from './agent.js';
|
|
5
|
+
//# sourceMappingURL=models.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"models.js","sourceRoot":"","sources":["../../../../src/commands/models.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,8DAA8D;AAC9D,+DAA+D;AAC/D,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
interface RunOptions {
|
|
2
|
+
agent: string;
|
|
3
|
+
model?: string;
|
|
4
|
+
maxTurns: string;
|
|
5
|
+
cwd?: string;
|
|
6
|
+
dryRun?: boolean;
|
|
7
|
+
json?: boolean;
|
|
8
|
+
debug?: boolean;
|
|
9
|
+
dataDir?: string;
|
|
10
|
+
}
|
|
11
|
+
export declare function runRun(prompt: string, opts: RunOptions): Promise<void>;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=run.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../../src/commands/run.ts"],"names":[],"mappings":"AAmBA,UAAU,UAAU;IAClB,KAAK,EAAO,MAAM,CAAC;IACnB,KAAK,CAAC,EAAM,MAAM,CAAC;IACnB,QAAQ,EAAI,MAAM,CAAC;IACnB,GAAG,CAAC,EAAQ,MAAM,CAAC;IACnB,MAAM,CAAC,EAAK,OAAO,CAAC;IACpB,IAAI,CAAC,EAAO,OAAO,CAAC;IACpB,KAAK,CAAC,EAAM,OAAO,CAAC;IACpB,OAAO,CAAC,EAAI,MAAM,CAAC;CACpB;AAED,wBAAsB,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAkE5E"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
// ============================================================
|
|
2
|
+
// Command: nexagent run <prompt> — non-interactive single shot
|
|
3
|
+
// ============================================================
|
|
4
|
+
import { resolve } from 'node:path';
|
|
5
|
+
import { homedir } from 'node:os';
|
|
6
|
+
import { join } from 'node:path';
|
|
7
|
+
import chalk from 'chalk';
|
|
8
|
+
import { openDatabase } from '../db/database.js';
|
|
9
|
+
import { SessionStore } from '../db/session-store.js';
|
|
10
|
+
import { MemoryManager } from '../memory/manager.js';
|
|
11
|
+
import { AgentLoop, AgentEventEmitter } from '../agent/loop.js';
|
|
12
|
+
import { LLMRouter } from '../llm/router.js';
|
|
13
|
+
import { SafetyGate } from '../safety/gate.js';
|
|
14
|
+
import { createDefaultRegistry } from '../tools/registry.js';
|
|
15
|
+
import { loadConfig } from '../config/loader.js';
|
|
16
|
+
import { SYM } from '@nexagent-cli/shared';
|
|
17
|
+
export async function runRun(prompt, opts) {
|
|
18
|
+
const dataDir = opts.dataDir ?? join(homedir(), '.nexagent');
|
|
19
|
+
const config = await loadConfig(dataDir);
|
|
20
|
+
const agentDataDir = join(dataDir, 'agents', opts.agent);
|
|
21
|
+
const db = await openDatabase(agentDataDir);
|
|
22
|
+
const sessions = new SessionStore(db);
|
|
23
|
+
const memory = new MemoryManager(db, opts.agent);
|
|
24
|
+
const registry = await createDefaultRegistry();
|
|
25
|
+
const provider = config.defaults.provider;
|
|
26
|
+
const model = opts.model ?? config.defaults.model;
|
|
27
|
+
const providerCfg = config.providers[provider];
|
|
28
|
+
const llm = new LLMRouter({ provider, apiKey: providerCfg?.apiKey, baseUrl: providerCfg?.baseUrl });
|
|
29
|
+
const safety = new SafetyGate(registry);
|
|
30
|
+
const events = new AgentEventEmitter();
|
|
31
|
+
const workspaceDir = resolve(opts.cwd ?? process.cwd());
|
|
32
|
+
const session = sessions.createSession(opts.agent, model, workspaceDir);
|
|
33
|
+
const agentConfig = {
|
|
34
|
+
name: opts.agent,
|
|
35
|
+
model,
|
|
36
|
+
provider,
|
|
37
|
+
maxTurns: parseInt(opts.maxTurns, 10),
|
|
38
|
+
maxTokensPerTurn: 8096,
|
|
39
|
+
temperature: config.defaults.temperature,
|
|
40
|
+
workspaceDir,
|
|
41
|
+
memoryEnabled: config.defaults.memoryEnabled,
|
|
42
|
+
subagentsEnabled: false, // disabled for run mode
|
|
43
|
+
safetyLevel: opts.dryRun ? 'permissive' : config.defaults.safetyLevel,
|
|
44
|
+
allowedTools: [],
|
|
45
|
+
blockedTools: [],
|
|
46
|
+
};
|
|
47
|
+
const loop = new AgentLoop({
|
|
48
|
+
config: agentConfig, llm, tools: registry, memory, safety, sessions, events,
|
|
49
|
+
sessionId: session.id,
|
|
50
|
+
});
|
|
51
|
+
// Stream to stdout unless --json
|
|
52
|
+
if (!opts.json) {
|
|
53
|
+
process.stderr.write(chalk.dim(`${SYM.AGENT} NexAgent · ${opts.agent} · ${model}\n\n`));
|
|
54
|
+
events.on('stream:text', ({ text }) => process.stdout.write(text));
|
|
55
|
+
events.on('tool:start', ({ toolName }) => process.stderr.write(chalk.dim(`\n${SYM.TOOL} ${toolName}…\n`)));
|
|
56
|
+
events.on('tool:result', ({ toolName, durationMs }) => process.stderr.write(chalk.dim(`${SYM.SUCCESS} ${toolName} (${durationMs}ms)\n`)));
|
|
57
|
+
events.on('error', ({ message }) => process.stderr.write(chalk.red(`\n${SYM.ERROR} ${message}\n`)));
|
|
58
|
+
}
|
|
59
|
+
safety.resetLoopCounter(session.id);
|
|
60
|
+
const result = await loop.run(prompt, async () => false); // auto-deny in non-interactive mode
|
|
61
|
+
sessions.endSession(session.id, 'completed');
|
|
62
|
+
if (opts.json) {
|
|
63
|
+
process.stdout.write(JSON.stringify({
|
|
64
|
+
session_id: session.id,
|
|
65
|
+
response: result,
|
|
66
|
+
model,
|
|
67
|
+
timestamp: Date.now(),
|
|
68
|
+
}) + '\n');
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
process.stdout.write('\n');
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=run.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../../../src/commands/run.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../../src/commands/server.ts"],"names":[],"mappings":"AASA,UAAU,aAAa;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAsB,SAAS,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAyElE"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
// ============================================================
|
|
2
|
+
// Command: nexagent server — HTTP/WebSocket bridge for remote access
|
|
3
|
+
// v0.1.0 stub: spins up a basic HTTP server with health endpoint
|
|
4
|
+
// ============================================================
|
|
5
|
+
import { createServer } from 'node:http';
|
|
6
|
+
import chalk from 'chalk';
|
|
7
|
+
import { SYM } from '@nexagent-cli/shared';
|
|
8
|
+
export async function runServer(opts) {
|
|
9
|
+
const port = parseInt(opts.port ?? '7373', 10);
|
|
10
|
+
const host = opts.host ?? '127.0.0.1';
|
|
11
|
+
const server = createServer((req, res) => {
|
|
12
|
+
const url = req.url ?? '/';
|
|
13
|
+
const method = req.method ?? 'GET';
|
|
14
|
+
// CORS headers
|
|
15
|
+
res.setHeader('Access-Control-Allow-Origin', '*');
|
|
16
|
+
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS');
|
|
17
|
+
res.setHeader('Access-Control-Allow-Headers', 'Content-Type');
|
|
18
|
+
if (method === 'OPTIONS') {
|
|
19
|
+
res.writeHead(204);
|
|
20
|
+
res.end();
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
// Health check
|
|
24
|
+
if (url === '/health' && method === 'GET') {
|
|
25
|
+
res.writeHead(200, { 'Content-Type': 'application/json' });
|
|
26
|
+
res.end(JSON.stringify({
|
|
27
|
+
status: 'ok',
|
|
28
|
+
service: 'nexagent-server',
|
|
29
|
+
version: '0.1.0',
|
|
30
|
+
timestamp: new Date().toISOString(),
|
|
31
|
+
}));
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
// Root
|
|
35
|
+
if (url === '/' && method === 'GET') {
|
|
36
|
+
res.writeHead(200, { 'Content-Type': 'application/json' });
|
|
37
|
+
res.end(JSON.stringify({
|
|
38
|
+
name: 'NexAgent Server',
|
|
39
|
+
version: '0.1.0',
|
|
40
|
+
endpoints: ['/health', '/api/v1/chat (POST — stub)'],
|
|
41
|
+
}));
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
// Stub chat endpoint
|
|
45
|
+
if (url === '/api/v1/chat' && method === 'POST') {
|
|
46
|
+
let body = '';
|
|
47
|
+
req.on('data', chunk => body += chunk);
|
|
48
|
+
req.on('end', () => {
|
|
49
|
+
res.writeHead(501, { 'Content-Type': 'application/json' });
|
|
50
|
+
res.end(JSON.stringify({
|
|
51
|
+
error: 'Not yet implemented',
|
|
52
|
+
message: 'The HTTP chat bridge is planned for v0.2.0. Use `nexagent chat` locally for now.',
|
|
53
|
+
}));
|
|
54
|
+
});
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
// 404
|
|
58
|
+
res.writeHead(404, { 'Content-Type': 'application/json' });
|
|
59
|
+
res.end(JSON.stringify({ error: 'Not found' }));
|
|
60
|
+
});
|
|
61
|
+
server.listen(port, host, () => {
|
|
62
|
+
console.log(chalk.bold(`\n ${SYM.SUCCESS} NexAgent server running`));
|
|
63
|
+
console.log(chalk.dim(` http://${host}:${port}`));
|
|
64
|
+
console.log(chalk.dim(` Health: http://${host}:${port}/health\n`));
|
|
65
|
+
console.log(chalk.dim(' Press Ctrl+C to stop\n'));
|
|
66
|
+
});
|
|
67
|
+
// Graceful shutdown
|
|
68
|
+
process.on('SIGINT', () => {
|
|
69
|
+
console.log(chalk.dim('\n Shutting down server...'));
|
|
70
|
+
server.close(() => process.exit(0));
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../../src/commands/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
interface SessionOpts {
|
|
2
|
+
agent?: string;
|
|
3
|
+
limit?: string;
|
|
4
|
+
json?: boolean;
|
|
5
|
+
sessionId?: string;
|
|
6
|
+
force?: boolean;
|
|
7
|
+
dataDir?: string;
|
|
8
|
+
}
|
|
9
|
+
export declare function runSession(subcommand: string, opts: SessionOpts): Promise<void>;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=session.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../../src/commands/session.ts"],"names":[],"mappings":"AAYA,UAAU,WAAW;IACnB,KAAK,CAAC,EAAM,MAAM,CAAC;IACnB,KAAK,CAAC,EAAM,MAAM,CAAC;IACnB,IAAI,CAAC,EAAO,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAM,OAAO,CAAC;IACpB,OAAO,CAAC,EAAI,MAAM,CAAC;CACpB;AAED,wBAAsB,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAqDrF"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
// ============================================================
|
|
2
|
+
// Command: nexagent session
|
|
3
|
+
// ============================================================
|
|
4
|
+
import chalk from 'chalk';
|
|
5
|
+
import { homedir } from 'node:os';
|
|
6
|
+
import { join } from 'node:path';
|
|
7
|
+
import { openDatabase } from '../db/database.js';
|
|
8
|
+
import { SessionStore } from '../db/session-store.js';
|
|
9
|
+
import { SYM } from '@nexagent-cli/shared';
|
|
10
|
+
export async function runSession(subcommand, opts) {
|
|
11
|
+
const agentName = opts.agent ?? 'default';
|
|
12
|
+
const dataDir = opts.dataDir ?? join(homedir(), '.nexagent');
|
|
13
|
+
const db = await openDatabase(join(dataDir, 'agents', agentName));
|
|
14
|
+
const store = new SessionStore(db);
|
|
15
|
+
switch (subcommand) {
|
|
16
|
+
case 'list': {
|
|
17
|
+
const limit = parseInt(opts.limit ?? '20', 10);
|
|
18
|
+
const sessions = store.listSessions(agentName, limit);
|
|
19
|
+
if (opts.json) {
|
|
20
|
+
console.log(JSON.stringify(sessions, null, 2));
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
if (sessions.length === 0) {
|
|
24
|
+
console.log(chalk.dim('No sessions found.'));
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
console.log(chalk.bold(` Sessions for agent "${agentName}"\n`));
|
|
28
|
+
for (const s of sessions) {
|
|
29
|
+
const date = new Date(s.startedAt).toLocaleString();
|
|
30
|
+
const status = s.status === 'completed'
|
|
31
|
+
? chalk.green(SYM.SUCCESS)
|
|
32
|
+
: s.status === 'error' ? chalk.red(SYM.ERROR) : chalk.yellow(SYM.DOTS);
|
|
33
|
+
const cost = s.totalCostUsd > 0 ? chalk.dim(` $${s.totalCostUsd.toFixed(5)}`) : '';
|
|
34
|
+
console.log(`${status} ${chalk.cyan(s.id.slice(0, 8))} ${chalk.white(date)} ${s.turnCount} turns${cost}`);
|
|
35
|
+
}
|
|
36
|
+
break;
|
|
37
|
+
}
|
|
38
|
+
case 'show': {
|
|
39
|
+
if (!opts.sessionId) {
|
|
40
|
+
console.error(chalk.red('sessionId required'));
|
|
41
|
+
process.exit(1);
|
|
42
|
+
}
|
|
43
|
+
const turns = store.getTurns(opts.sessionId);
|
|
44
|
+
if (opts.json) {
|
|
45
|
+
console.log(JSON.stringify(turns, null, 2));
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
for (const t of turns) {
|
|
49
|
+
const role = t.role === 'user' ? chalk.blue(SYM.USER) : chalk.magenta(SYM.AGENT);
|
|
50
|
+
const time = new Date(t.createdAt).toLocaleTimeString();
|
|
51
|
+
console.log(`\n${role} ${chalk.dim(time)}`);
|
|
52
|
+
console.log(t.content.slice(0, 2000));
|
|
53
|
+
if (t.content.length > 2000)
|
|
54
|
+
console.log(chalk.dim('[...truncated]'));
|
|
55
|
+
}
|
|
56
|
+
break;
|
|
57
|
+
}
|
|
58
|
+
case 'delete': {
|
|
59
|
+
if (!opts.sessionId) {
|
|
60
|
+
console.error(chalk.red('sessionId required'));
|
|
61
|
+
process.exit(1);
|
|
62
|
+
}
|
|
63
|
+
if (!opts.force) {
|
|
64
|
+
const { confirm } = await import('@inquirer/prompts');
|
|
65
|
+
const ok = await confirm({ message: `Delete session ${opts.sessionId}?`, default: false });
|
|
66
|
+
if (!ok) {
|
|
67
|
+
console.log(chalk.dim('Cancelled.'));
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
store.deleteSession(opts.sessionId);
|
|
72
|
+
console.log(chalk.green(`${SYM.SUCCESS} Deleted session ${opts.sessionId}`));
|
|
73
|
+
break;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../../../src/commands/session.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
interface UpdateOpts {
|
|
2
|
+
check?: boolean;
|
|
3
|
+
changelog?: boolean;
|
|
4
|
+
version?: string;
|
|
5
|
+
preview?: boolean;
|
|
6
|
+
yes?: boolean;
|
|
7
|
+
dataDir?: string;
|
|
8
|
+
json?: boolean;
|
|
9
|
+
}
|
|
10
|
+
export declare function runUpdate(opts: UpdateOpts): Promise<void>;
|
|
11
|
+
interface ChangelogCmdOpts {
|
|
12
|
+
all?: boolean;
|
|
13
|
+
json?: boolean;
|
|
14
|
+
}
|
|
15
|
+
export declare function runChangelog(versionArg: string | undefined, opts: ChangelogCmdOpts): Promise<void>;
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=update.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../../src/commands/update.ts"],"names":[],"mappings":"AA0BA,UAAU,UAAU;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AA+HD,wBAAsB,SAAS,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CA0J/D;AAMD,UAAU,gBAAgB;IACxB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wBAAsB,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CA+CxG"}
|