@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 CHANGED
@@ -10,17 +10,32 @@ npx taskcast
10
10
 
11
11
  The server starts on port `3721` by default.
12
12
 
13
- ## Options
13
+ ## Commands
14
14
 
15
15
  ```
16
- Usage: taskcast [options] [command]
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
- -c, --config Path to config file
23
- -p, --port Server port (default: 3721)
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
- const fileConfig = await loadConfigFile(options.config);
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 shortTerm;
88
+ let shortTermStore;
25
89
  let broadcast;
26
- let longTerm;
27
- if (redisUrl) {
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
- shortTerm = adapters.shortTerm;
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
- shortTerm = new MemoryShortTermStore();
111
+ shortTermStore = new MemoryShortTermStore();
39
112
  }
40
- if (postgresUrl) {
113
+ if (storage !== 'sqlite' && postgresUrl) {
41
114
  const sql = postgres(postgresUrl);
42
- longTerm = new PostgresLongTermStore(sql);
115
+ longTermStore = new PostgresLongTermStore(sql);
43
116
  }
44
- const engineOpts = { shortTerm, broadcast };
45
- if (longTerm !== undefined)
46
- engineOpts.longTerm = longTerm;
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":"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"}
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,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAC1C,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,IAAI,CAAA;AAC7C,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAA;AAC5B,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;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AAEvD,MAAM,mBAAmB,GAAG;;;;;;;;;;;;;;;;;;CAkB3B,CAAA;AAED,KAAK,UAAU,wBAAwB;IACrC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK;QAAE,OAAO,KAAK,CAAA;IAEtC,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,sBAAsB,CAAC,CAAA;IAE7E,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;QAC5E,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAA;QACpC,EAAE,CAAC,QAAQ,CACT,kEAAkE,gBAAgB,UAAU,EAC5F,CAAC,MAAM,EAAE,EAAE;YACT,EAAE,CAAC,KAAK,EAAE,CAAA;YACV,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;YAC3C,OAAO,CAAC,OAAO,KAAK,EAAE,IAAI,OAAO,KAAK,GAAG,IAAI,OAAO,KAAK,KAAK,CAAC,CAAA;QACjE,CAAC,CACF,CAAA;IACH,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,yBAAyB;IAChC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,CAAC,CAAA;IAC9C,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,EAAE,sBAAsB,CAAC,CAAA;IAChE,IAAI,CAAC;QACH,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QACzC,aAAa,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,CAAA;QACpD,OAAO,CAAC,GAAG,CAAC,wCAAwC,gBAAgB,EAAE,CAAC,CAAA;QACvE,OAAO,gBAAgB,CAAA;IACzB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,yCAAyC,gBAAgB,KAAM,GAAa,CAAC,OAAO,EAAE,CAAC,CAAA;QACpG,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAED,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAA;AAE7B,OAAO;KACJ,IAAI,CAAC,UAAU,CAAC;KAChB,WAAW,CAAC,wDAAwD,CAAC;KACrE,OAAO,CAAC,OAAO,CAAC,CAAA;AAEnB,OAAO;KACJ,OAAO,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;KACrC,WAAW,CAAC,mDAAmD,CAAC;KAChE,MAAM,CAAC,qBAAqB,EAAE,kBAAkB,CAAC;KACjD,MAAM,CAAC,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,CAAC;KACxD,MAAM,CAAC,sBAAsB,EAAE,0CAA0C,EAAE,QAAQ,CAAC;KACpF,MAAM,CAAC,kBAAkB,EAAE,oDAAoD,CAAC;KAChF,MAAM,CAAC,KAAK,EAAE,OAA6E,EAAE,EAAE;IAC9F,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IAEzE,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,MAAM,YAAY,GAAG,MAAM,wBAAwB,EAAE,CAAA;QACrD,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,WAAW,GAAG,yBAAyB,EAAE,CAAA;YAC/C,IAAI,WAAW,EAAE,CAAC;gBAChB,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,WAAW,CAAC,CAAA;gBACjD,UAAU,GAAG,OAAO,CAAC,MAAM,CAAA;YAC7B,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,UAAU,CAAC,IAAI,IAAI,IAAI,CAAC,CAAA;IAC5D,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,UAAU,CAAC,QAAQ,EAAE,SAAS,EAAE,GAAG,CAAA;IACzF,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,IAAI,UAAU,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,CAAA;IAE9F,IAAI,cAA8B,CAAA;IAClC,IAAI,SAA4B,CAAA;IAChC,IAAI,aAAwC,CAAA;IAE5C,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAA;IAErG,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;QACjE,MAAM,QAAQ,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAA;QACjD,SAAS,GAAG,IAAI,uBAAuB,EAAE,CAAA;QACzC,cAAc,GAAG,QAAQ,CAAC,SAAS,CAAA;QACnC,aAAa,GAAG,QAAQ,CAAC,QAAQ,CAAA;QACjC,OAAO,CAAC,GAAG,CAAC,sCAAsC,OAAO,CAAC,MAAM,IAAI,eAAe,EAAE,CAAC,CAAA;IACxF,CAAC;SAAM,IAAI,OAAO,KAAK,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC3C,MAAM,SAAS,GAAG,IAAI,KAAK,CAAC,QAAS,CAAC,CAAA;QACtC,MAAM,SAAS,GAAG,IAAI,KAAK,CAAC,QAAS,CAAC,CAAA;QACtC,MAAM,WAAW,GAAG,IAAI,KAAK,CAAC,QAAS,CAAC,CAAA;QACxC,MAAM,QAAQ,GAAG,mBAAmB,CAAC,SAAS,EAAE,SAAS,EAAE,WAAW,CAAC,CAAA;QACvE,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAA;QAC9B,cAAc,GAAG,QAAQ,CAAC,cAAc,CAAA;IAC1C,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,IAAI,CAAC,wEAAwE,CAAC,CAAA;QACtF,SAAS,GAAG,IAAI,uBAAuB,EAAE,CAAA;QACzC,cAAc,GAAG,IAAI,oBAAoB,EAAE,CAAA;IAC7C,CAAC;IAED,IAAI,OAAO,KAAK,QAAQ,IAAI,WAAW,EAAE,CAAC;QACxC,MAAM,GAAG,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAA;QACjC,aAAa,GAAG,IAAI,qBAAqB,CAAC,GAAG,CAAC,CAAA;IAChD,CAAC;IAED,MAAM,UAAU,GAAgD,EAAE,cAAc,EAAE,SAAS,EAAE,CAAA;IAC7F,IAAI,aAAa,KAAK,SAAS;QAAE,UAAU,CAAC,aAAa,GAAG,aAAa,CAAA;IACzE,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,UAAU,CAAC,CAAA;IAEzC,MAAM,QAAQ,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,UAAU,CAAC,IAAI,EAAE,IAAI,IAAI,MAAM,CAAmB,CAAA;IACzG,MAAM,GAAG,GAAG,iBAAiB,CAAC;QAC5B,MAAM;QACN,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;KACzB,CAAC,CAAA;IAEF,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAA;IACnD,KAAK,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE;QACrC,OAAO,CAAC,GAAG,CAAC,iDAAiD,IAAI,EAAE,CAAC,CAAA;IACtE,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEJ,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,gEAAgE,CAAC;KAC7E,MAAM,CAAC,GAAG,EAAE;IACX,OAAO,CAAC,KAAK,CAAC,yFAAyF,CAAC,CAAA;IACxG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC,CAAC,CAAA;AAEJ,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,mDAAmD,CAAC;KAChE,MAAM,CAAC,GAAG,EAAE;IACX,OAAO,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAA;IACvD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC,CAAC,CAAA;AAEJ,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,0CAA0C,CAAC;KACvD,MAAM,CAAC,GAAG,EAAE;IACX,OAAO,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAA;IACzD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC,CAAC,CAAA;AAEJ,OAAO,CAAC,KAAK,EAAE,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@taskcast/cli",
3
- "version": "0.1.2",
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/server": "0.1.2",
39
- "@taskcast/postgres": "0.1.2",
40
- "@taskcast/redis": "0.1.2",
41
- "@taskcast/core": "0.1.2"
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"