@taskcast/cli 0.1.2 → 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/README.md +37 -6
- package/dist/index.js +106 -12
- package/dist/index.js.map +1 -1
- package/package.json +6 -5
package/README.md
CHANGED
|
@@ -10,17 +10,32 @@ npx taskcast
|
|
|
10
10
|
|
|
11
11
|
The server starts on port `3721` by default.
|
|
12
12
|
|
|
13
|
-
##
|
|
13
|
+
## Commands
|
|
14
14
|
|
|
15
15
|
```
|
|
16
|
-
Usage: taskcast [
|
|
16
|
+
Usage: taskcast [command] [options]
|
|
17
17
|
|
|
18
18
|
Commands:
|
|
19
|
-
start Start the Taskcast server (default)
|
|
19
|
+
start Start the Taskcast server in foreground (default)
|
|
20
|
+
daemon Start as a background service (not yet implemented)
|
|
21
|
+
stop Stop the background service (not yet implemented)
|
|
22
|
+
status Show server status (not yet implemented)
|
|
20
23
|
|
|
21
24
|
Options:
|
|
22
|
-
-
|
|
23
|
-
-
|
|
25
|
+
-V, --version Show version
|
|
26
|
+
-h, --help Show help
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
### `taskcast start`
|
|
30
|
+
|
|
31
|
+
Start the server in foreground mode. This is the default command — `taskcast` is equivalent to `taskcast start`.
|
|
32
|
+
|
|
33
|
+
```
|
|
34
|
+
Options:
|
|
35
|
+
-c, --config <path> Path to config file
|
|
36
|
+
-p, --port <port> Server port (default: 3721)
|
|
37
|
+
-s, --storage <type> Storage backend: memory | redis | sqlite (default: memory)
|
|
38
|
+
--db-path <path> SQLite database file path (default: ./taskcast.db)
|
|
24
39
|
```
|
|
25
40
|
|
|
26
41
|
## Configuration
|
|
@@ -28,7 +43,7 @@ Options:
|
|
|
28
43
|
### Config File
|
|
29
44
|
|
|
30
45
|
```bash
|
|
31
|
-
npx taskcast -p 8080 -c taskcast.config.yaml
|
|
46
|
+
npx taskcast start -p 8080 -c taskcast.config.yaml
|
|
32
47
|
```
|
|
33
48
|
|
|
34
49
|
Taskcast searches for config files in the current directory:
|
|
@@ -44,8 +59,24 @@ Taskcast searches for config files in the current directory:
|
|
|
44
59
|
| `TASKCAST_JWT_SECRET` | JWT HMAC secret | -- |
|
|
45
60
|
| `TASKCAST_REDIS_URL` | Redis connection URL | -- |
|
|
46
61
|
| `TASKCAST_POSTGRES_URL` | PostgreSQL connection URL | -- |
|
|
62
|
+
| `TASKCAST_STORAGE` | `memory` \| `redis` \| `sqlite` | `memory` |
|
|
63
|
+
| `TASKCAST_SQLITE_PATH` | SQLite database file path | `./taskcast.db` |
|
|
47
64
|
| `TASKCAST_LOG_LEVEL` | `debug` \| `info` \| `warn` \| `error` | `info` |
|
|
48
65
|
|
|
66
|
+
### SQLite Storage
|
|
67
|
+
|
|
68
|
+
For zero-dependency local development with persistent storage:
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
npx taskcast start --storage sqlite
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
Data is stored in `./taskcast.db` by default. Customize with `--db-path`:
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
npx taskcast start --storage sqlite --db-path /tmp/my-taskcast.db
|
|
78
|
+
```
|
|
79
|
+
|
|
49
80
|
## Part of Taskcast
|
|
50
81
|
|
|
51
82
|
This is the CLI package. See the [Taskcast monorepo](https://github.com/weightwave/taskcast) for the full project.
|
package/dist/index.js
CHANGED
|
@@ -2,10 +2,62 @@
|
|
|
2
2
|
import { Command } from 'commander';
|
|
3
3
|
import { Redis } from 'ioredis';
|
|
4
4
|
import postgres from 'postgres';
|
|
5
|
+
import { createInterface } from 'readline';
|
|
6
|
+
import { mkdirSync, writeFileSync } from 'fs';
|
|
7
|
+
import { join } from 'path';
|
|
8
|
+
import { homedir } from 'os';
|
|
5
9
|
import { TaskEngine, loadConfigFile, MemoryBroadcastProvider, MemoryShortTermStore, } from '@taskcast/core';
|
|
6
10
|
import { createTaskcastApp } from '@taskcast/server';
|
|
7
11
|
import { createRedisAdapters } from '@taskcast/redis';
|
|
8
12
|
import { PostgresLongTermStore } from '@taskcast/postgres';
|
|
13
|
+
import { createSqliteAdapters } from '@taskcast/sqlite';
|
|
14
|
+
const DEFAULT_CONFIG_YAML = `# Taskcast configuration
|
|
15
|
+
# Docs: https://github.com/weightwave/taskcast
|
|
16
|
+
|
|
17
|
+
port: 3721
|
|
18
|
+
|
|
19
|
+
# auth:
|
|
20
|
+
# mode: none # none | jwt
|
|
21
|
+
|
|
22
|
+
# adapters:
|
|
23
|
+
# broadcast:
|
|
24
|
+
# provider: memory # memory | redis
|
|
25
|
+
# # url: redis://localhost:6379
|
|
26
|
+
# shortTerm:
|
|
27
|
+
# provider: memory # memory | redis
|
|
28
|
+
# # url: redis://localhost:6379
|
|
29
|
+
# longTerm:
|
|
30
|
+
# provider: postgres
|
|
31
|
+
# # url: postgresql://localhost:5432/taskcast
|
|
32
|
+
`;
|
|
33
|
+
async function promptCreateGlobalConfig() {
|
|
34
|
+
if (!process.stdin.isTTY)
|
|
35
|
+
return false;
|
|
36
|
+
const globalConfigPath = join(homedir(), '.taskcast', 'taskcast.config.yaml');
|
|
37
|
+
return new Promise((resolve) => {
|
|
38
|
+
const rl = createInterface({ input: process.stdin, output: process.stdout });
|
|
39
|
+
rl.on('close', () => resolve(false));
|
|
40
|
+
rl.question(`[taskcast] No config file found.\n? Create a default config at ${globalConfigPath}? (Y/n) `, (answer) => {
|
|
41
|
+
rl.close();
|
|
42
|
+
const trimmed = answer.trim().toLowerCase();
|
|
43
|
+
resolve(trimmed === '' || trimmed === 'y' || trimmed === 'yes');
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
function createDefaultGlobalConfig() {
|
|
48
|
+
const globalDir = join(homedir(), '.taskcast');
|
|
49
|
+
const globalConfigPath = join(globalDir, 'taskcast.config.yaml');
|
|
50
|
+
try {
|
|
51
|
+
mkdirSync(globalDir, { recursive: true });
|
|
52
|
+
writeFileSync(globalConfigPath, DEFAULT_CONFIG_YAML);
|
|
53
|
+
console.log(`[taskcast] Created default config at ${globalConfigPath}`);
|
|
54
|
+
return globalConfigPath;
|
|
55
|
+
}
|
|
56
|
+
catch (err) {
|
|
57
|
+
console.warn(`[taskcast] Could not create config at ${globalConfigPath}: ${err.message}`);
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
9
61
|
const program = new Command();
|
|
10
62
|
program
|
|
11
63
|
.name('taskcast')
|
|
@@ -13,37 +65,58 @@ program
|
|
|
13
65
|
.version('0.1.0');
|
|
14
66
|
program
|
|
15
67
|
.command('start', { isDefault: true })
|
|
16
|
-
.description('Start the taskcast server')
|
|
68
|
+
.description('Start the taskcast server in foreground (default)')
|
|
17
69
|
.option('-c, --config <path>', 'config file path')
|
|
18
70
|
.option('-p, --port <port>', 'port to listen on', '3721')
|
|
71
|
+
.option('-s, --storage <type>', 'storage backend: memory | redis | sqlite', 'memory')
|
|
72
|
+
.option('--db-path <path>', 'SQLite database file path (default: ./taskcast.db)')
|
|
19
73
|
.action(async (options) => {
|
|
20
|
-
|
|
74
|
+
let { config: fileConfig, source } = await loadConfigFile(options.config);
|
|
75
|
+
if (source === 'none') {
|
|
76
|
+
const shouldCreate = await promptCreateGlobalConfig();
|
|
77
|
+
if (shouldCreate) {
|
|
78
|
+
const createdPath = createDefaultGlobalConfig();
|
|
79
|
+
if (createdPath) {
|
|
80
|
+
const created = await loadConfigFile(createdPath);
|
|
81
|
+
fileConfig = created.config;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
21
85
|
const port = Number(options.port ?? fileConfig.port ?? 3721);
|
|
22
86
|
const redisUrl = process.env['TASKCAST_REDIS_URL'] ?? fileConfig.adapters?.broadcast?.url;
|
|
23
87
|
const postgresUrl = process.env['TASKCAST_POSTGRES_URL'] ?? fileConfig.adapters?.longTerm?.url;
|
|
24
|
-
let
|
|
88
|
+
let shortTermStore;
|
|
25
89
|
let broadcast;
|
|
26
|
-
let
|
|
27
|
-
|
|
90
|
+
let longTermStore;
|
|
91
|
+
const storage = options.storage ?? process.env['TASKCAST_STORAGE'] ?? (redisUrl ? 'redis' : 'memory');
|
|
92
|
+
if (storage === 'sqlite') {
|
|
93
|
+
const sqliteOpts = options.dbPath ? { path: options.dbPath } : {};
|
|
94
|
+
const adapters = createSqliteAdapters(sqliteOpts);
|
|
95
|
+
broadcast = new MemoryBroadcastProvider();
|
|
96
|
+
shortTermStore = adapters.shortTerm;
|
|
97
|
+
longTermStore = adapters.longTerm;
|
|
98
|
+
console.log(`[taskcast] Using SQLite storage at ${options.dbPath ?? './taskcast.db'}`);
|
|
99
|
+
}
|
|
100
|
+
else if (storage === 'redis' || redisUrl) {
|
|
28
101
|
const pubClient = new Redis(redisUrl);
|
|
29
102
|
const subClient = new Redis(redisUrl);
|
|
30
103
|
const storeClient = new Redis(redisUrl);
|
|
31
104
|
const adapters = createRedisAdapters(pubClient, subClient, storeClient);
|
|
32
105
|
broadcast = adapters.broadcast;
|
|
33
|
-
|
|
106
|
+
shortTermStore = adapters.shortTermStore;
|
|
34
107
|
}
|
|
35
108
|
else {
|
|
36
109
|
console.warn('[taskcast] No TASKCAST_REDIS_URL configured — using in-memory adapters');
|
|
37
110
|
broadcast = new MemoryBroadcastProvider();
|
|
38
|
-
|
|
111
|
+
shortTermStore = new MemoryShortTermStore();
|
|
39
112
|
}
|
|
40
|
-
if (postgresUrl) {
|
|
113
|
+
if (storage !== 'sqlite' && postgresUrl) {
|
|
41
114
|
const sql = postgres(postgresUrl);
|
|
42
|
-
|
|
115
|
+
longTermStore = new PostgresLongTermStore(sql);
|
|
43
116
|
}
|
|
44
|
-
const engineOpts = {
|
|
45
|
-
if (
|
|
46
|
-
engineOpts.
|
|
117
|
+
const engineOpts = { shortTermStore, broadcast };
|
|
118
|
+
if (longTermStore !== undefined)
|
|
119
|
+
engineOpts.longTermStore = longTermStore;
|
|
47
120
|
const engine = new TaskEngine(engineOpts);
|
|
48
121
|
const authMode = (process.env['TASKCAST_AUTH_MODE'] ?? fileConfig.auth?.mode ?? 'none');
|
|
49
122
|
const app = createTaskcastApp({
|
|
@@ -55,5 +128,26 @@ program
|
|
|
55
128
|
console.log(`[taskcast] Server started on http://localhost:${port}`);
|
|
56
129
|
});
|
|
57
130
|
});
|
|
131
|
+
program
|
|
132
|
+
.command('daemon')
|
|
133
|
+
.description('Start the server as a background service (not yet implemented)')
|
|
134
|
+
.action(() => {
|
|
135
|
+
console.error('[taskcast] daemon mode is not yet implemented, use `taskcast start` for foreground mode');
|
|
136
|
+
process.exit(1);
|
|
137
|
+
});
|
|
138
|
+
program
|
|
139
|
+
.command('stop')
|
|
140
|
+
.description('Stop the background service (not yet implemented)')
|
|
141
|
+
.action(() => {
|
|
142
|
+
console.error('[taskcast] stop is not yet implemented');
|
|
143
|
+
process.exit(1);
|
|
144
|
+
});
|
|
145
|
+
program
|
|
146
|
+
.command('status')
|
|
147
|
+
.description('Show server status (not yet implemented)')
|
|
148
|
+
.action(() => {
|
|
149
|
+
console.error('[taskcast] status is not yet implemented');
|
|
150
|
+
process.exit(1);
|
|
151
|
+
});
|
|
58
152
|
program.parse();
|
|
59
153
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAC/B,OAAO,QAAQ,MAAM,UAAU,CAAA;AAC/B,OAAO,EACL,UAAU,EACV,cAAc,EACd,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,gBAAgB,CAAA;AAEvB,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@taskcast/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Standalone Taskcast server CLI — run with npx taskcast.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -35,10 +35,11 @@
|
|
|
35
35
|
"commander": "^12.1.0",
|
|
36
36
|
"ioredis": "^5.4.0",
|
|
37
37
|
"postgres": "^3.4.5",
|
|
38
|
-
"@taskcast/
|
|
39
|
-
"@taskcast/postgres": "0.
|
|
40
|
-
"@taskcast/
|
|
41
|
-
"@taskcast/core": "0.
|
|
38
|
+
"@taskcast/redis": "0.2.0",
|
|
39
|
+
"@taskcast/postgres": "0.2.0",
|
|
40
|
+
"@taskcast/server": "0.2.0",
|
|
41
|
+
"@taskcast/core": "0.2.0",
|
|
42
|
+
"@taskcast/sqlite": "0.2.0"
|
|
42
43
|
},
|
|
43
44
|
"devDependencies": {
|
|
44
45
|
"typescript": "^5.7.0"
|