@cogitator-ai/cli 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +70 -0
- package/dist/__tests__/init.test.d.ts +2 -0
- package/dist/__tests__/init.test.d.ts.map +1 -0
- package/dist/__tests__/init.test.js +59 -0
- package/dist/__tests__/init.test.js.map +1 -0
- package/dist/commands/init.d.ts +6 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +167 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/run.d.ts +6 -0
- package/dist/commands/run.d.ts.map +1 -0
- package/dist/commands/run.js +162 -0
- package/dist/commands/run.js.map +1 -0
- package/dist/commands/up.d.ts +7 -0
- package/dist/commands/up.d.ts.map +1 -0
- package/dist/commands/up.js +152 -0
- package/dist/commands/up.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +18 -0
- package/dist/index.js.map +1 -0
- package/dist/utils/logger.d.ts +13 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +24 -0
- package/dist/utils/logger.js.map +1 -0
- package/package.json +49 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Cogitator Contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# @cogitator-ai/cli
|
|
2
|
+
|
|
3
|
+
Command-line interface for the Cogitator AI agent runtime.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
pnpm add -g @cogitator-ai/cli
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Commands
|
|
12
|
+
|
|
13
|
+
### Initialize a new project
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
cogitator init my-project
|
|
17
|
+
cd my-project
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
### Start development services
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
cogitator up
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Starts Redis, PostgreSQL, and Ollama via Docker Compose.
|
|
27
|
+
|
|
28
|
+
### Stop services
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
cogitator down
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### Run an agent
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
cogitator run "Hello, what can you help me with?"
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
With a specific model:
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
cogitator run -m ollama/gemma3:4b "Explain quantum computing"
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Interactive mode:
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
cogitator run
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## Project Structure
|
|
53
|
+
|
|
54
|
+
After `cogitator init`, your project will have:
|
|
55
|
+
|
|
56
|
+
```
|
|
57
|
+
my-project/
|
|
58
|
+
├── package.json
|
|
59
|
+
├── cogitator.yml # Configuration
|
|
60
|
+
├── agent.ts # Your agent definition
|
|
61
|
+
└── docker-compose.yml # Local services
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## Documentation
|
|
65
|
+
|
|
66
|
+
See the [Cogitator documentation](https://github.com/eL1fe/cogitator) for full API reference.
|
|
67
|
+
|
|
68
|
+
## License
|
|
69
|
+
|
|
70
|
+
MIT
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/init.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { describe, it, expect, beforeEach, afterEach } from 'vitest';
|
|
2
|
+
import { existsSync, rmSync, readFileSync, mkdirSync } from 'node:fs';
|
|
3
|
+
import { join, dirname } from 'node:path';
|
|
4
|
+
import { execSync } from 'node:child_process';
|
|
5
|
+
import { tmpdir } from 'node:os';
|
|
6
|
+
import { fileURLToPath } from 'node:url';
|
|
7
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
8
|
+
const CLI_PATH = join(__dirname, '../../dist/index.js');
|
|
9
|
+
describe('cogitator init', () => {
|
|
10
|
+
const testDir = join(tmpdir(), 'cogitator-test-' + Date.now());
|
|
11
|
+
const projectName = 'test-project';
|
|
12
|
+
const projectPath = join(testDir, projectName);
|
|
13
|
+
beforeEach(() => {
|
|
14
|
+
if (existsSync(testDir)) {
|
|
15
|
+
rmSync(testDir, { recursive: true, force: true });
|
|
16
|
+
}
|
|
17
|
+
mkdirSync(testDir, { recursive: true });
|
|
18
|
+
});
|
|
19
|
+
afterEach(() => {
|
|
20
|
+
if (existsSync(testDir)) {
|
|
21
|
+
rmSync(testDir, { recursive: true, force: true });
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
it('creates project directory structure', () => {
|
|
25
|
+
execSync(`node ${CLI_PATH} init ${projectName} --no-install`, {
|
|
26
|
+
cwd: testDir,
|
|
27
|
+
stdio: 'pipe',
|
|
28
|
+
});
|
|
29
|
+
expect(existsSync(projectPath)).toBe(true);
|
|
30
|
+
expect(existsSync(join(projectPath, 'package.json'))).toBe(true);
|
|
31
|
+
expect(existsSync(join(projectPath, 'tsconfig.json'))).toBe(true);
|
|
32
|
+
expect(existsSync(join(projectPath, 'cogitator.yml'))).toBe(true);
|
|
33
|
+
expect(existsSync(join(projectPath, 'src/agent.ts'))).toBe(true);
|
|
34
|
+
expect(existsSync(join(projectPath, 'docker-compose.yml'))).toBe(true);
|
|
35
|
+
expect(existsSync(join(projectPath, '.gitignore'))).toBe(true);
|
|
36
|
+
});
|
|
37
|
+
it('creates valid package.json', () => {
|
|
38
|
+
execSync(`node ${CLI_PATH} init ${projectName} --no-install`, {
|
|
39
|
+
cwd: testDir,
|
|
40
|
+
stdio: 'pipe',
|
|
41
|
+
});
|
|
42
|
+
const pkgJson = JSON.parse(readFileSync(join(projectPath, 'package.json'), 'utf-8'));
|
|
43
|
+
expect(pkgJson.name).toBe(projectName);
|
|
44
|
+
expect(pkgJson.dependencies['@cogitator-ai/core']).toBeDefined();
|
|
45
|
+
});
|
|
46
|
+
it('fails if directory already exists', () => {
|
|
47
|
+
execSync(`node ${CLI_PATH} init ${projectName} --no-install`, {
|
|
48
|
+
cwd: testDir,
|
|
49
|
+
stdio: 'pipe',
|
|
50
|
+
});
|
|
51
|
+
expect(() => {
|
|
52
|
+
execSync(`node ${CLI_PATH} init ${projectName} --no-install`, {
|
|
53
|
+
cwd: testDir,
|
|
54
|
+
stdio: 'pipe',
|
|
55
|
+
});
|
|
56
|
+
}).toThrow();
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
//# sourceMappingURL=init.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.test.js","sourceRoot":"","sources":["../../src/__tests__/init.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,eAAO,MAAM,WAAW,SAiMpB,CAAC"}
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* cogitator init <name> - scaffold new project
|
|
3
|
+
*/
|
|
4
|
+
import { Command } from 'commander';
|
|
5
|
+
import { writeFileSync, mkdirSync, existsSync } from 'node:fs';
|
|
6
|
+
import { join, resolve } from 'node:path';
|
|
7
|
+
import { execSync } from 'node:child_process';
|
|
8
|
+
import ora from 'ora';
|
|
9
|
+
import chalk from 'chalk';
|
|
10
|
+
import { log, printBanner } from '../utils/logger';
|
|
11
|
+
export const initCommand = new Command('init')
|
|
12
|
+
.description('Create a new Cogitator project')
|
|
13
|
+
.argument('<name>', 'Project name')
|
|
14
|
+
.option('--no-install', 'Skip dependency installation')
|
|
15
|
+
.action(async (name, options) => {
|
|
16
|
+
printBanner();
|
|
17
|
+
const projectPath = resolve(process.cwd(), name);
|
|
18
|
+
if (existsSync(projectPath)) {
|
|
19
|
+
log.error(`Directory "${name}" already exists`);
|
|
20
|
+
process.exit(1);
|
|
21
|
+
}
|
|
22
|
+
log.info(`Creating project: ${chalk.bold(name)}`);
|
|
23
|
+
const spinner = ora('Setting up project structure...').start();
|
|
24
|
+
try {
|
|
25
|
+
mkdirSync(join(projectPath, 'src'), { recursive: true });
|
|
26
|
+
writeFileSync(join(projectPath, 'package.json'), JSON.stringify({
|
|
27
|
+
name,
|
|
28
|
+
version: '0.1.0',
|
|
29
|
+
type: 'module',
|
|
30
|
+
scripts: {
|
|
31
|
+
dev: 'tsx watch src/agent.ts',
|
|
32
|
+
start: 'tsx src/agent.ts',
|
|
33
|
+
build: 'tsc',
|
|
34
|
+
},
|
|
35
|
+
dependencies: {
|
|
36
|
+
'@cogitator-ai/core': '^0.1.0',
|
|
37
|
+
'@cogitator-ai/config': '^0.1.0',
|
|
38
|
+
zod: '^3.22.4',
|
|
39
|
+
},
|
|
40
|
+
devDependencies: {
|
|
41
|
+
'@types/node': '^20.10.0',
|
|
42
|
+
tsx: '^4.7.0',
|
|
43
|
+
typescript: '^5.3.0',
|
|
44
|
+
},
|
|
45
|
+
}, null, 2));
|
|
46
|
+
writeFileSync(join(projectPath, 'tsconfig.json'), JSON.stringify({
|
|
47
|
+
compilerOptions: {
|
|
48
|
+
target: 'ES2022',
|
|
49
|
+
module: 'NodeNext',
|
|
50
|
+
moduleResolution: 'NodeNext',
|
|
51
|
+
strict: true,
|
|
52
|
+
esModuleInterop: true,
|
|
53
|
+
skipLibCheck: true,
|
|
54
|
+
outDir: './dist',
|
|
55
|
+
rootDir: './src',
|
|
56
|
+
},
|
|
57
|
+
include: ['src/**/*'],
|
|
58
|
+
}, null, 2));
|
|
59
|
+
writeFileSync(join(projectPath, 'cogitator.yml'), `# Cogitator Configuration
|
|
60
|
+
llm:
|
|
61
|
+
defaultProvider: ollama
|
|
62
|
+
providers:
|
|
63
|
+
ollama:
|
|
64
|
+
baseUrl: http://localhost:11434
|
|
65
|
+
|
|
66
|
+
memory:
|
|
67
|
+
adapter: memory
|
|
68
|
+
`);
|
|
69
|
+
writeFileSync(join(projectPath, 'src', 'agent.ts'), `import { Cogitator, Agent, tool } from '@cogitator-ai/core';
|
|
70
|
+
import { z } from 'zod';
|
|
71
|
+
|
|
72
|
+
const greet = tool({
|
|
73
|
+
name: 'greet',
|
|
74
|
+
description: 'Greet someone by name',
|
|
75
|
+
parameters: z.object({
|
|
76
|
+
name: z.string().describe('Name to greet'),
|
|
77
|
+
}),
|
|
78
|
+
execute: async ({ name }) => \`Hello, \${name}! 👋\`,
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
const agent = new Agent({
|
|
82
|
+
id: 'my-agent',
|
|
83
|
+
name: 'My Agent',
|
|
84
|
+
model: 'ollama/llama3.1:8b',
|
|
85
|
+
instructions: 'You are a helpful assistant. Use the greet tool when asked to greet someone.',
|
|
86
|
+
tools: [greet],
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
const cog = new Cogitator();
|
|
90
|
+
|
|
91
|
+
const result = await cog.run(agent, {
|
|
92
|
+
input: 'Hello! Can you greet Alex?',
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
console.log('Agent:', result.output);
|
|
96
|
+
|
|
97
|
+
await cog.close();
|
|
98
|
+
`);
|
|
99
|
+
writeFileSync(join(projectPath, 'docker-compose.yml'), `name: ${name}
|
|
100
|
+
|
|
101
|
+
services:
|
|
102
|
+
redis:
|
|
103
|
+
image: redis:7-alpine
|
|
104
|
+
ports:
|
|
105
|
+
- "6379:6379"
|
|
106
|
+
volumes:
|
|
107
|
+
- redis-data:/data
|
|
108
|
+
|
|
109
|
+
postgres:
|
|
110
|
+
image: pgvector/pgvector:pg16
|
|
111
|
+
ports:
|
|
112
|
+
- "5432:5432"
|
|
113
|
+
environment:
|
|
114
|
+
POSTGRES_USER: cogitator
|
|
115
|
+
POSTGRES_PASSWORD: cogitator
|
|
116
|
+
POSTGRES_DB: cogitator
|
|
117
|
+
volumes:
|
|
118
|
+
- postgres-data:/var/lib/postgresql/data
|
|
119
|
+
|
|
120
|
+
ollama:
|
|
121
|
+
image: ollama/ollama:latest
|
|
122
|
+
ports:
|
|
123
|
+
- "11434:11434"
|
|
124
|
+
volumes:
|
|
125
|
+
- ollama-data:/root/.ollama
|
|
126
|
+
|
|
127
|
+
volumes:
|
|
128
|
+
redis-data:
|
|
129
|
+
postgres-data:
|
|
130
|
+
ollama-data:
|
|
131
|
+
`);
|
|
132
|
+
writeFileSync(join(projectPath, '.gitignore'), `node_modules/
|
|
133
|
+
dist/
|
|
134
|
+
.env
|
|
135
|
+
*.log
|
|
136
|
+
`);
|
|
137
|
+
spinner.succeed('Project structure created');
|
|
138
|
+
if (options.install) {
|
|
139
|
+
const installSpinner = ora('Installing dependencies...').start();
|
|
140
|
+
try {
|
|
141
|
+
execSync('pnpm install', { cwd: projectPath, stdio: 'pipe' });
|
|
142
|
+
installSpinner.succeed('Dependencies installed');
|
|
143
|
+
}
|
|
144
|
+
catch {
|
|
145
|
+
installSpinner.warn('Could not install dependencies. Run pnpm install manually.');
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
console.log();
|
|
149
|
+
log.success(`Project "${name}" created successfully!`);
|
|
150
|
+
console.log();
|
|
151
|
+
log.dim('Next steps:');
|
|
152
|
+
console.log();
|
|
153
|
+
console.log(` cd ${name}`);
|
|
154
|
+
if (!options.install) {
|
|
155
|
+
console.log(' pnpm install');
|
|
156
|
+
}
|
|
157
|
+
console.log(' cogitator up # Start Docker services');
|
|
158
|
+
console.log(' pnpm dev # Run your agent');
|
|
159
|
+
console.log();
|
|
160
|
+
}
|
|
161
|
+
catch (error) {
|
|
162
|
+
spinner.fail('Failed to create project');
|
|
163
|
+
log.error(error instanceof Error ? error.message : String(error));
|
|
164
|
+
process.exit(1);
|
|
165
|
+
}
|
|
166
|
+
});
|
|
167
|
+
//# sourceMappingURL=init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEnD,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC;KAC3C,WAAW,CAAC,gCAAgC,CAAC;KAC7C,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;KAClC,MAAM,CAAC,cAAc,EAAE,8BAA8B,CAAC;KACtD,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,OAA6B,EAAE,EAAE;IAC5D,WAAW,EAAE,CAAC;IAEd,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;IAEjD,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC5B,GAAG,CAAC,KAAK,CAAC,cAAc,IAAI,kBAAkB,CAAC,CAAC;QAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,GAAG,CAAC,IAAI,CAAC,qBAAqB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAElD,MAAM,OAAO,GAAG,GAAG,CAAC,iCAAiC,CAAC,CAAC,KAAK,EAAE,CAAC;IAE/D,IAAI,CAAC;QACH,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAEzD,aAAa,CACX,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,EACjC,IAAI,CAAC,SAAS,CACZ;YACE,IAAI;YACJ,OAAO,EAAE,OAAO;YAChB,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE;gBACP,GAAG,EAAE,wBAAwB;gBAC7B,KAAK,EAAE,kBAAkB;gBACzB,KAAK,EAAE,KAAK;aACb;YACD,YAAY,EAAE;gBACZ,oBAAoB,EAAE,QAAQ;gBAC9B,sBAAsB,EAAE,QAAQ;gBAChC,GAAG,EAAE,SAAS;aACf;YACD,eAAe,EAAE;gBACf,aAAa,EAAE,UAAU;gBACzB,GAAG,EAAE,QAAQ;gBACb,UAAU,EAAE,QAAQ;aACrB;SACF,EACD,IAAI,EACJ,CAAC,CACF,CACF,CAAC;QAEF,aAAa,CACX,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,EAClC,IAAI,CAAC,SAAS,CACZ;YACE,eAAe,EAAE;gBACf,MAAM,EAAE,QAAQ;gBAChB,MAAM,EAAE,UAAU;gBAClB,gBAAgB,EAAE,UAAU;gBAC5B,MAAM,EAAE,IAAI;gBACZ,eAAe,EAAE,IAAI;gBACrB,YAAY,EAAE,IAAI;gBAClB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE,OAAO;aACjB;YACD,OAAO,EAAE,CAAC,UAAU,CAAC;SACtB,EACD,IAAI,EACJ,CAAC,CACF,CACF,CAAC;QAEF,aAAa,CACX,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,EAClC;;;;;;;;;CASP,CACM,CAAC;QAEF,aAAa,CACX,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,UAAU,CAAC,EACpC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6BP,CACM,CAAC;QAEF,aAAa,CACX,IAAI,CAAC,WAAW,EAAE,oBAAoB,CAAC,EACvC,SAAS,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgCpB,CACM,CAAC;QAEF,aAAa,CACX,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,EAC/B;;;;CAIP,CACM,CAAC;QAEF,OAAO,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;QAE7C,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,cAAc,GAAG,GAAG,CAAC,4BAA4B,CAAC,CAAC,KAAK,EAAE,CAAC;YACjE,IAAI,CAAC;gBACH,QAAQ,CAAC,cAAc,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;gBAC9D,cAAc,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;YACnD,CAAC;YAAC,MAAM,CAAC;gBACP,cAAc,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAC;YACpF,CAAC;QACH,CAAC;QAED,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,GAAG,CAAC,OAAO,CAAC,YAAY,IAAI,yBAAyB,CAAC,CAAC;QACvD,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QACvB,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;QAC5B,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACrB,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAChC,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;QAC/D,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;QACxD,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QACzC,GAAG,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA2GpC,eAAO,MAAM,UAAU,SAsEnB,CAAC"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* cogitator run [message] - run agent
|
|
3
|
+
*/
|
|
4
|
+
import { Command } from 'commander';
|
|
5
|
+
import { existsSync, readFileSync } from 'node:fs';
|
|
6
|
+
import { resolve } from 'node:path';
|
|
7
|
+
import { createInterface } from 'node:readline';
|
|
8
|
+
import chalk from 'chalk';
|
|
9
|
+
import { log, printBanner } from '../utils/logger';
|
|
10
|
+
import { Cogitator, Agent } from '@cogitator-ai/core';
|
|
11
|
+
import { loadConfig } from '@cogitator-ai/config';
|
|
12
|
+
async function getOllamaModels() {
|
|
13
|
+
try {
|
|
14
|
+
const res = await fetch('http://localhost:11434/api/tags');
|
|
15
|
+
if (!res.ok)
|
|
16
|
+
return [];
|
|
17
|
+
const data = (await res.json());
|
|
18
|
+
return data.models.map((m) => m.name);
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
return [];
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
async function detectModel() {
|
|
25
|
+
const models = await getOllamaModels();
|
|
26
|
+
if (models.length === 0)
|
|
27
|
+
return null;
|
|
28
|
+
const preferred = ['llama3.1:8b', 'llama3:8b', 'gemma3:4b', 'gemma2:9b', 'mistral:7b'];
|
|
29
|
+
for (const p of preferred) {
|
|
30
|
+
if (models.includes(p))
|
|
31
|
+
return `ollama/${p}`;
|
|
32
|
+
}
|
|
33
|
+
return `ollama/${models[0]}`;
|
|
34
|
+
}
|
|
35
|
+
function findConfig(configPath) {
|
|
36
|
+
if (existsSync(configPath)) {
|
|
37
|
+
return resolve(configPath);
|
|
38
|
+
}
|
|
39
|
+
const names = ['cogitator.yml', 'cogitator.yaml', 'cogitator.json'];
|
|
40
|
+
for (const name of names) {
|
|
41
|
+
if (existsSync(name)) {
|
|
42
|
+
return resolve(name);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
async function runInteractive(cog, agent, stream) {
|
|
48
|
+
const rl = createInterface({
|
|
49
|
+
input: process.stdin,
|
|
50
|
+
output: process.stdout,
|
|
51
|
+
});
|
|
52
|
+
const threadId = `thread_${Date.now()}`;
|
|
53
|
+
console.log(chalk.dim('Interactive mode. Type "exit" or Ctrl+C to quit.\n'));
|
|
54
|
+
const prompt = () => {
|
|
55
|
+
rl.question(chalk.cyan('> '), async (input) => {
|
|
56
|
+
const trimmed = input.trim();
|
|
57
|
+
if (!trimmed) {
|
|
58
|
+
prompt();
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
if (trimmed.toLowerCase() === 'exit' || trimmed.toLowerCase() === 'quit') {
|
|
62
|
+
console.log(chalk.dim('\nGoodbye!'));
|
|
63
|
+
rl.close();
|
|
64
|
+
await cog.close();
|
|
65
|
+
process.exit(0);
|
|
66
|
+
}
|
|
67
|
+
try {
|
|
68
|
+
if (stream) {
|
|
69
|
+
process.stdout.write(chalk.green('→ '));
|
|
70
|
+
await cog.run(agent, {
|
|
71
|
+
input: trimmed,
|
|
72
|
+
threadId,
|
|
73
|
+
stream: true,
|
|
74
|
+
onToken: (token) => process.stdout.write(token),
|
|
75
|
+
});
|
|
76
|
+
console.log('\n');
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
const result = await cog.run(agent, { input: trimmed, threadId });
|
|
80
|
+
console.log(chalk.green('→'), result.output);
|
|
81
|
+
console.log();
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
catch (error) {
|
|
85
|
+
log.error(error instanceof Error ? error.message : String(error));
|
|
86
|
+
}
|
|
87
|
+
prompt();
|
|
88
|
+
});
|
|
89
|
+
};
|
|
90
|
+
prompt();
|
|
91
|
+
}
|
|
92
|
+
export const runCommand = new Command('run')
|
|
93
|
+
.description('Run agent with a message')
|
|
94
|
+
.argument('[message]', 'Message to send to agent')
|
|
95
|
+
.option('-c, --config <path>', 'Config file path', 'cogitator.yml')
|
|
96
|
+
.option('-m, --model <model>', 'Model to use (e.g. ollama/gemma3:4b)')
|
|
97
|
+
.option('-i, --interactive', 'Interactive mode')
|
|
98
|
+
.option('-s, --stream', 'Stream response tokens', true)
|
|
99
|
+
.option('--no-stream', 'Disable streaming')
|
|
100
|
+
.action(async (message, options) => {
|
|
101
|
+
let config = {};
|
|
102
|
+
const configPath = findConfig(options.config);
|
|
103
|
+
if (configPath) {
|
|
104
|
+
log.dim(`Using config: ${configPath}`);
|
|
105
|
+
try {
|
|
106
|
+
const raw = readFileSync(configPath, 'utf-8');
|
|
107
|
+
if (configPath.endsWith('.json')) {
|
|
108
|
+
config = JSON.parse(raw);
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
config = loadConfig();
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
catch {
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
let model = options.model;
|
|
118
|
+
if (!model) {
|
|
119
|
+
model = (await detectModel()) ?? undefined;
|
|
120
|
+
if (!model) {
|
|
121
|
+
log.error('No model specified and no Ollama models found');
|
|
122
|
+
log.dim('Use -m to specify a model, e.g.: cogitator run -m ollama/gemma3:4b "Hello"');
|
|
123
|
+
log.dim('Or start Ollama and pull a model: ollama pull gemma3:4b');
|
|
124
|
+
process.exit(1);
|
|
125
|
+
}
|
|
126
|
+
log.dim(`Auto-detected model: ${model}`);
|
|
127
|
+
}
|
|
128
|
+
const cog = new Cogitator(config);
|
|
129
|
+
const agent = new Agent({
|
|
130
|
+
id: 'cli-agent',
|
|
131
|
+
name: 'CLI Agent',
|
|
132
|
+
model,
|
|
133
|
+
instructions: 'You are a helpful AI assistant. Respond concisely and accurately.',
|
|
134
|
+
});
|
|
135
|
+
if (options.interactive || !message) {
|
|
136
|
+
printBanner();
|
|
137
|
+
await runInteractive(cog, agent, options.stream);
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
try {
|
|
141
|
+
if (options.stream) {
|
|
142
|
+
await cog.run(agent, {
|
|
143
|
+
input: message,
|
|
144
|
+
stream: true,
|
|
145
|
+
onToken: (token) => process.stdout.write(token),
|
|
146
|
+
});
|
|
147
|
+
console.log();
|
|
148
|
+
}
|
|
149
|
+
else {
|
|
150
|
+
const result = await cog.run(agent, { input: message });
|
|
151
|
+
console.log(result.output);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
catch (error) {
|
|
155
|
+
log.error(error instanceof Error ? error.message : String(error));
|
|
156
|
+
process.exit(1);
|
|
157
|
+
}
|
|
158
|
+
finally {
|
|
159
|
+
await cog.close();
|
|
160
|
+
}
|
|
161
|
+
});
|
|
162
|
+
//# sourceMappingURL=run.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAclD,KAAK,UAAU,eAAe;IAC5B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,iCAAiC,CAAC,CAAC;QAC3D,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,OAAO,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAA8B,CAAC;QAC7D,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,WAAW;IACxB,MAAM,MAAM,GAAG,MAAM,eAAe,EAAE,CAAC;IACvC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACrC,MAAM,SAAS,GAAG,CAAC,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;IACvF,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;QAC1B,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;YAAE,OAAO,UAAU,CAAC,EAAE,CAAC;IAC/C,CAAC;IACD,OAAO,UAAU,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;AAC/B,CAAC;AAED,SAAS,UAAU,CAAC,UAAkB;IACpC,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3B,OAAO,OAAO,CAAC,UAAU,CAAC,CAAC;IAC7B,CAAC;IACD,MAAM,KAAK,GAAG,CAAC,eAAe,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;IACpE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACrB,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,GAAc,EAAE,KAAY,EAAE,MAAe;IACzE,MAAM,EAAE,GAAG,eAAe,CAAC;QACzB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,UAAU,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;IAExC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC,CAAC;IAE7E,MAAM,MAAM,GAAG,GAAG,EAAE;QAClB,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YAC5C,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;YAE7B,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,EAAE,CAAC;gBACT,OAAO;YACT,CAAC;YAED,IAAI,OAAO,CAAC,WAAW,EAAE,KAAK,MAAM,IAAI,OAAO,CAAC,WAAW,EAAE,KAAK,MAAM,EAAE,CAAC;gBACzE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC;gBACrC,EAAE,CAAC,KAAK,EAAE,CAAC;gBACX,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC;gBAClB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,IAAI,CAAC;gBACH,IAAI,MAAM,EAAE,CAAC;oBACX,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;oBACxC,MAAM,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE;wBACnB,KAAK,EAAE,OAAO;wBACd,QAAQ;wBACR,MAAM,EAAE,IAAI;wBACZ,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;qBAChD,CAAC,CAAC;oBACH,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACpB,CAAC;qBAAM,CAAC;oBACN,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;oBAClE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;oBAC7C,OAAO,CAAC,GAAG,EAAE,CAAC;gBAChB,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,GAAG,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YACpE,CAAC;YAED,MAAM,EAAE,CAAC;QACX,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,EAAE,CAAC;AACX,CAAC;AAED,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC;KACzC,WAAW,CAAC,0BAA0B,CAAC;KACvC,QAAQ,CAAC,WAAW,EAAE,0BAA0B,CAAC;KACjD,MAAM,CAAC,qBAAqB,EAAE,kBAAkB,EAAE,eAAe,CAAC;KAClE,MAAM,CAAC,qBAAqB,EAAE,sCAAsC,CAAC;KACrE,MAAM,CAAC,mBAAmB,EAAE,kBAAkB,CAAC;KAC/C,MAAM,CAAC,cAAc,EAAE,wBAAwB,EAAE,IAAI,CAAC;KACtD,MAAM,CAAC,aAAa,EAAE,mBAAmB,CAAC;KAC1C,MAAM,CAAC,KAAK,EAAE,OAA2B,EAAE,OAAmB,EAAE,EAAE;IACjE,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9C,IAAI,UAAU,EAAE,CAAC;QACf,GAAG,CAAC,GAAG,CAAC,iBAAiB,UAAU,EAAE,CAAC,CAAC;QACvC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YAC9C,IAAI,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBACjC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC3B,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,UAAU,EAAE,CAAC;YACxB,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;QACT,CAAC;IACH,CAAC;IAED,IAAI,KAAK,GAAuB,OAAO,CAAC,KAAK,CAAC;IAC9C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,KAAK,GAAG,CAAC,MAAM,WAAW,EAAE,CAAC,IAAI,SAAS,CAAC;QAC3C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,GAAG,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;YAC3D,GAAG,CAAC,GAAG,CAAC,4EAA4E,CAAC,CAAC;YACtF,GAAG,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC;YACnE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,GAAG,CAAC,GAAG,CAAC,wBAAwB,KAAK,EAAE,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC;IAElC,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC;QACtB,EAAE,EAAE,WAAW;QACf,IAAI,EAAE,WAAW;QACjB,KAAK;QACL,YAAY,EACV,mEAAmE;KACtE,CAAC,CAAC;IAEH,IAAI,OAAO,CAAC,WAAW,IAAI,CAAC,OAAO,EAAE,CAAC;QACpC,WAAW,EAAE,CAAC;QACd,MAAM,cAAc,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QACjD,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,MAAM,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE;gBACnB,KAAK,EAAE,OAAO;gBACd,MAAM,EAAE,IAAI;gBACZ,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;aAChD,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,CAAC;aAAM,CAAC;YACN,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;YACxD,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,GAAG,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;YAAS,CAAC;QACT,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC;IACpB,CAAC;AACH,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"up.d.ts","sourceRoot":"","sources":["../../src/commands/up.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoCpC,eAAO,MAAM,SAAS,SAgGlB,CAAC;AAEL,eAAO,MAAM,WAAW,SAyBpB,CAAC"}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* cogitator up - start Docker services
|
|
3
|
+
*/
|
|
4
|
+
import { Command } from 'commander';
|
|
5
|
+
import { existsSync } from 'node:fs';
|
|
6
|
+
import { execSync, spawn } from 'node:child_process';
|
|
7
|
+
import { resolve, dirname } from 'node:path';
|
|
8
|
+
import ora from 'ora';
|
|
9
|
+
import chalk from 'chalk';
|
|
10
|
+
import { log } from '../utils/logger';
|
|
11
|
+
function findDockerCompose() {
|
|
12
|
+
if (existsSync('docker-compose.yml')) {
|
|
13
|
+
return resolve('docker-compose.yml');
|
|
14
|
+
}
|
|
15
|
+
if (existsSync('docker-compose.yaml')) {
|
|
16
|
+
return resolve('docker-compose.yaml');
|
|
17
|
+
}
|
|
18
|
+
let dir = process.cwd();
|
|
19
|
+
for (let i = 0; i < 5; i++) {
|
|
20
|
+
const parent = resolve(dir, '..');
|
|
21
|
+
if (parent === dir)
|
|
22
|
+
break;
|
|
23
|
+
dir = parent;
|
|
24
|
+
if (existsSync(resolve(dir, 'docker-compose.yml'))) {
|
|
25
|
+
return resolve(dir, 'docker-compose.yml');
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
function checkDocker() {
|
|
31
|
+
try {
|
|
32
|
+
execSync('docker --version', { stdio: 'pipe' });
|
|
33
|
+
return true;
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
export const upCommand = new Command('up')
|
|
40
|
+
.description('Start Docker services (Redis, Postgres, Ollama)')
|
|
41
|
+
.option('-d, --detach', 'Run in background (default)', true)
|
|
42
|
+
.option('--no-detach', 'Run in foreground')
|
|
43
|
+
.option('--pull', 'Pull latest images before starting')
|
|
44
|
+
.action(async (options) => {
|
|
45
|
+
log.info('Starting Cogitator services...');
|
|
46
|
+
if (!checkDocker()) {
|
|
47
|
+
log.error('Docker is not installed or not running');
|
|
48
|
+
log.dim('Install Docker: https://docs.docker.com/get-docker/');
|
|
49
|
+
process.exit(1);
|
|
50
|
+
}
|
|
51
|
+
const composePath = findDockerCompose();
|
|
52
|
+
if (!composePath) {
|
|
53
|
+
log.error('No docker-compose.yml found');
|
|
54
|
+
log.dim('Run "cogitator init <name>" to create a project with Docker setup');
|
|
55
|
+
process.exit(1);
|
|
56
|
+
}
|
|
57
|
+
const composeDir = dirname(composePath);
|
|
58
|
+
log.dim(`Using: ${composePath}`);
|
|
59
|
+
if (options.pull) {
|
|
60
|
+
const pullSpinner = ora('Pulling latest images...').start();
|
|
61
|
+
try {
|
|
62
|
+
execSync('docker compose pull', { cwd: composeDir, stdio: 'pipe' });
|
|
63
|
+
pullSpinner.succeed('Images pulled');
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
pullSpinner.fail('Failed to pull images');
|
|
67
|
+
log.error(error instanceof Error ? error.message : String(error));
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
const spinner = ora('Starting services...').start();
|
|
71
|
+
try {
|
|
72
|
+
const args = ['compose', 'up'];
|
|
73
|
+
if (options.detach) {
|
|
74
|
+
args.push('-d');
|
|
75
|
+
}
|
|
76
|
+
if (options.detach) {
|
|
77
|
+
execSync(['docker', ...args].join(' '), { cwd: composeDir, stdio: 'pipe' });
|
|
78
|
+
spinner.succeed('Services started');
|
|
79
|
+
await new Promise((r) => setTimeout(r, 2000));
|
|
80
|
+
const status = execSync('docker compose ps --format json', {
|
|
81
|
+
cwd: composeDir,
|
|
82
|
+
encoding: 'utf-8',
|
|
83
|
+
});
|
|
84
|
+
console.log();
|
|
85
|
+
log.success('Cogitator services are running:');
|
|
86
|
+
console.log();
|
|
87
|
+
try {
|
|
88
|
+
const services = status
|
|
89
|
+
.trim()
|
|
90
|
+
.split('\n')
|
|
91
|
+
.filter(Boolean)
|
|
92
|
+
.map((line) => JSON.parse(line));
|
|
93
|
+
for (const svc of services) {
|
|
94
|
+
const stateIcon = svc.State === 'running' ? chalk.green('●') : chalk.yellow('○');
|
|
95
|
+
console.log(` ${stateIcon} ${svc.Name} - ${svc.Status}`);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
catch {
|
|
99
|
+
console.log(status);
|
|
100
|
+
}
|
|
101
|
+
console.log();
|
|
102
|
+
log.dim('Connection info:');
|
|
103
|
+
console.log(' Redis: redis://localhost:6379');
|
|
104
|
+
console.log(' Postgres: postgresql://cogitator:cogitator@localhost:5432/cogitator');
|
|
105
|
+
console.log(' Ollama: http://localhost:11434');
|
|
106
|
+
console.log();
|
|
107
|
+
log.dim('Commands:');
|
|
108
|
+
console.log(' cogitator down - Stop services');
|
|
109
|
+
console.log(' docker compose logs -f - View logs');
|
|
110
|
+
console.log();
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
spinner.stop();
|
|
114
|
+
const proc = spawn('docker', args, {
|
|
115
|
+
cwd: composeDir,
|
|
116
|
+
stdio: 'inherit',
|
|
117
|
+
});
|
|
118
|
+
proc.on('exit', (code) => process.exit(code ?? 0));
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
catch (error) {
|
|
122
|
+
spinner.fail('Failed to start services');
|
|
123
|
+
log.error(error instanceof Error ? error.message : String(error));
|
|
124
|
+
process.exit(1);
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
export const downCommand = new Command('down')
|
|
128
|
+
.description('Stop Docker services')
|
|
129
|
+
.option('-v, --volumes', 'Remove volumes (deletes data)')
|
|
130
|
+
.action((options) => {
|
|
131
|
+
const composePath = findDockerCompose();
|
|
132
|
+
if (!composePath) {
|
|
133
|
+
log.error('No docker-compose.yml found');
|
|
134
|
+
process.exit(1);
|
|
135
|
+
}
|
|
136
|
+
const composeDir = dirname(composePath);
|
|
137
|
+
const spinner = ora('Stopping services...').start();
|
|
138
|
+
try {
|
|
139
|
+
const args = ['compose', 'down'];
|
|
140
|
+
if (options.volumes) {
|
|
141
|
+
args.push('-v');
|
|
142
|
+
}
|
|
143
|
+
execSync(['docker', ...args].join(' '), { cwd: composeDir, stdio: 'pipe' });
|
|
144
|
+
spinner.succeed('Services stopped');
|
|
145
|
+
}
|
|
146
|
+
catch (error) {
|
|
147
|
+
spinner.fail('Failed to stop services');
|
|
148
|
+
log.error(error instanceof Error ? error.message : String(error));
|
|
149
|
+
process.exit(1);
|
|
150
|
+
}
|
|
151
|
+
});
|
|
152
|
+
//# sourceMappingURL=up.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"up.js","sourceRoot":"","sources":["../../src/commands/up.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;GAEG"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Cogitator CLI
|
|
4
|
+
*/
|
|
5
|
+
import { Command } from 'commander';
|
|
6
|
+
import { initCommand } from './commands/init';
|
|
7
|
+
import { upCommand, downCommand } from './commands/up';
|
|
8
|
+
import { runCommand } from './commands/run';
|
|
9
|
+
const program = new Command()
|
|
10
|
+
.name('cogitator')
|
|
11
|
+
.description('Cogitator AI Agent Runtime CLI')
|
|
12
|
+
.version('0.1.0');
|
|
13
|
+
program.addCommand(initCommand);
|
|
14
|
+
program.addCommand(upCommand);
|
|
15
|
+
program.addCommand(downCommand);
|
|
16
|
+
program.addCommand(runCommand);
|
|
17
|
+
program.parse();
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE;KAC1B,IAAI,CAAC,WAAW,CAAC;KACjB,WAAW,CAAC,gCAAgC,CAAC;KAC7C,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AAC9B,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AAE/B,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI Logger with colored output
|
|
3
|
+
*/
|
|
4
|
+
export declare const log: {
|
|
5
|
+
info: (msg: string) => void;
|
|
6
|
+
success: (msg: string) => void;
|
|
7
|
+
warn: (msg: string) => void;
|
|
8
|
+
error: (msg: string) => void;
|
|
9
|
+
step: (msg: string) => void;
|
|
10
|
+
dim: (msg: string) => void;
|
|
11
|
+
};
|
|
12
|
+
export declare function printBanner(): void;
|
|
13
|
+
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,eAAO,MAAM,GAAG;gBACF,MAAM;mBACH,MAAM;gBACT,MAAM;iBACL,MAAM;gBACP,MAAM;eACP,MAAM;CAClB,CAAC;AAEF,wBAAgB,WAAW,SAU1B"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI Logger with colored output
|
|
3
|
+
*/
|
|
4
|
+
import chalk from 'chalk';
|
|
5
|
+
export const log = {
|
|
6
|
+
info: (msg) => console.log(chalk.blue('ℹ'), msg),
|
|
7
|
+
success: (msg) => console.log(chalk.green('✓'), msg),
|
|
8
|
+
warn: (msg) => console.log(chalk.yellow('⚠'), msg),
|
|
9
|
+
error: (msg) => console.log(chalk.red('✗'), msg),
|
|
10
|
+
step: (msg) => console.log(chalk.cyan('→'), msg),
|
|
11
|
+
dim: (msg) => console.log(chalk.dim(msg)),
|
|
12
|
+
};
|
|
13
|
+
export function printBanner() {
|
|
14
|
+
console.log(chalk.bold.cyan(`
|
|
15
|
+
___ _ _ _
|
|
16
|
+
/ __\\___ __ _(_) |_ __ _| |_ ___ _ __
|
|
17
|
+
/ / / _ \\ / _\` | | __/ _\` | __/ _ \\| '__|
|
|
18
|
+
/ /__| (_) | (_| | | || (_| | || (_) | |
|
|
19
|
+
\\____/\\___/ \\__, |_|\\__\\__,_|\\__\\___/|_|
|
|
20
|
+
|___/
|
|
21
|
+
`));
|
|
22
|
+
console.log(chalk.dim(' AI Agent Runtime v0.1.0\n'));
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,CAAC,MAAM,GAAG,GAAG;IACjB,IAAI,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC;IACxD,OAAO,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC;IAC5D,IAAI,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC;IAC1D,KAAK,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC;IACxD,IAAI,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC;IACxD,GAAG,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;CAClD,CAAC;AAEF,MAAM,UAAU,WAAW;IACzB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;;;CAO7B,CAAC,CAAC,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC,CAAC;AACxD,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@cogitator-ai/cli",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "CLI for Cogitator AI Agent Runtime",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"bin": {
|
|
9
|
+
"cogitator": "./dist/index.js"
|
|
10
|
+
},
|
|
11
|
+
"exports": {
|
|
12
|
+
".": {
|
|
13
|
+
"types": "./dist/index.d.ts",
|
|
14
|
+
"import": "./dist/index.js"
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
"files": [
|
|
18
|
+
"dist"
|
|
19
|
+
],
|
|
20
|
+
"dependencies": {
|
|
21
|
+
"commander": "^12.0.0",
|
|
22
|
+
"chalk": "^5.3.0",
|
|
23
|
+
"ora": "^8.0.0",
|
|
24
|
+
"@cogitator-ai/core": "0.1.0",
|
|
25
|
+
"@cogitator-ai/config": "0.1.0"
|
|
26
|
+
},
|
|
27
|
+
"devDependencies": {
|
|
28
|
+
"@types/node": "^20.10.0",
|
|
29
|
+
"typescript": "^5.3.0",
|
|
30
|
+
"vitest": "^1.0.0"
|
|
31
|
+
},
|
|
32
|
+
"repository": {
|
|
33
|
+
"type": "git",
|
|
34
|
+
"url": "https://github.com/eL1fe/cogitator.git",
|
|
35
|
+
"directory": "packages/cli"
|
|
36
|
+
},
|
|
37
|
+
"publishConfig": {
|
|
38
|
+
"access": "public"
|
|
39
|
+
},
|
|
40
|
+
"license": "MIT",
|
|
41
|
+
"scripts": {
|
|
42
|
+
"build": "tsc",
|
|
43
|
+
"dev": "tsc --watch",
|
|
44
|
+
"clean": "rm -rf dist",
|
|
45
|
+
"typecheck": "tsc --noEmit",
|
|
46
|
+
"test": "vitest run",
|
|
47
|
+
"test:watch": "vitest"
|
|
48
|
+
}
|
|
49
|
+
}
|