@cereworker/cli 26.328.4 → 26.328.6

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/dist/index.js CHANGED
@@ -1,20 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- // Suppress node:sqlite ExperimentalWarning (stable API, flag removed in Node 22.13+)
4
- const _origEmit = process.emit;
5
- // @ts-expect-error — filtering warning events before they reach stderr
6
- process.emit = function (event, ...args) {
7
- if (event === 'warning' && typeof args[0] === 'object' && args[0] !== null) {
8
- const w = args[0];
9
- // Suppress node:sqlite ExperimentalWarning (stable API, flag removed in Node 22.13+)
10
- if (w.name === 'ExperimentalWarning' && String(w.message).includes('SQLite'))
11
- return false;
12
- // Suppress punycode deprecation from transitive dependencies
13
- if (w.name === 'DeprecationWarning' && String(w.message).includes('punycode'))
14
- return false;
15
- }
16
- return _origEmit.apply(this, [event, ...args]);
17
- };
3
+ import { installWarningFilter } from './warnings.js';
4
+ installWarningFilter();
18
5
  import { render, Text, Box } from 'ink';
19
6
  import { createRequire } from 'node:module';
20
7
  import { loadConfig } from '@cereworker/config';
@@ -109,6 +96,11 @@ async function main() {
109
96
  }
110
97
  await exitOneShot(0);
111
98
  }
99
+ if (subcommand === 'upgrade') {
100
+ const { runUpgrade } = await import('./upgrade.js');
101
+ await runUpgrade();
102
+ await exitOneShot(0);
103
+ }
112
104
  if (subcommand === 'serve') {
113
105
  const { runHeadlessService } = await import('./serve.js');
114
106
  const config = loadConfig();
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function runUpgrade(): Promise<void>;
2
+ //# sourceMappingURL=upgrade.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upgrade.d.ts","sourceRoot":"","sources":["../src/upgrade.ts"],"names":[],"mappings":"AAGA,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CA+DhD"}
@@ -0,0 +1,63 @@
1
+ import { execSync } from 'node:child_process';
2
+ import { loadConfig } from '@cereworker/config';
3
+ export async function runUpgrade() {
4
+ const config = loadConfig();
5
+ const image = config.cerebellum.docker.image;
6
+ // Detect docker binary
7
+ let dockerBin = '';
8
+ try {
9
+ dockerBin = execSync('which docker', { stdio: 'pipe' }).toString().trim();
10
+ }
11
+ catch {
12
+ for (const c of ['/usr/bin/docker', '/usr/local/bin/docker', '/snap/bin/docker']) {
13
+ try {
14
+ execSync(`test -x ${c}`, { stdio: 'pipe' });
15
+ dockerBin = c;
16
+ break;
17
+ }
18
+ catch { }
19
+ }
20
+ }
21
+ if (!dockerBin) {
22
+ console.error('Docker is not installed.');
23
+ process.exit(1);
24
+ }
25
+ // Detect sudo requirement
26
+ let prefix = '';
27
+ try {
28
+ execSync(`${dockerBin} info`, { stdio: 'pipe', timeout: 10_000 });
29
+ }
30
+ catch {
31
+ try {
32
+ execSync(`sudo -n ${dockerBin} info`, { stdio: 'pipe', timeout: 10_000 });
33
+ prefix = 'sudo ';
34
+ }
35
+ catch {
36
+ console.error('Docker permission denied. Run: sudo usermod -aG docker $USER && newgrp docker');
37
+ process.exit(1);
38
+ }
39
+ }
40
+ // Pull latest image
41
+ console.log(`Pulling ${image}...`);
42
+ try {
43
+ execSync(`${prefix}docker pull ${image}`, { stdio: 'inherit', timeout: 3_600_000 });
44
+ }
45
+ catch {
46
+ console.error(`Failed to pull ${image}`);
47
+ process.exit(1);
48
+ }
49
+ // Recreate container if it exists
50
+ try {
51
+ const existing = execSync(`${prefix}docker ps -aq -f name=cereworker-cerebellum`, { stdio: 'pipe' }).toString().trim();
52
+ if (existing) {
53
+ console.log('Stopping old container...');
54
+ execSync(`${prefix}docker rm -f cereworker-cerebellum`, { stdio: 'pipe' });
55
+ console.log('Old container removed. It will be recreated on next start.');
56
+ }
57
+ }
58
+ catch {
59
+ // No container to remove — that's fine
60
+ }
61
+ console.log('Upgrade complete.');
62
+ }
63
+ //# sourceMappingURL=upgrade.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upgrade.js","sourceRoot":"","sources":["../src/upgrade.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,MAAM,CAAC,KAAK,UAAU,UAAU;IAC9B,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC;IAE7C,uBAAuB;IACvB,IAAI,SAAS,GAAG,EAAE,CAAC;IACnB,IAAI,CAAC;QACH,SAAS,GAAG,QAAQ,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;IAC5E,CAAC;IAAC,MAAM,CAAC;QACP,KAAK,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,uBAAuB,EAAE,kBAAkB,CAAC,EAAE,CAAC;YACjF,IAAI,CAAC;gBACH,QAAQ,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;gBAC5C,SAAS,GAAG,CAAC,CAAC;gBACd,MAAM;YACR,CAAC;YAAC,MAAM,CAAC,CAAA,CAAC;QACZ,CAAC;IACH,CAAC;IAED,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC1C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,0BAA0B;IAC1B,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,CAAC;QACH,QAAQ,CAAC,GAAG,SAAS,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;IACpE,CAAC;IAAC,MAAM,CAAC;QACP,IAAI,CAAC;YACH,QAAQ,CAAC,WAAW,SAAS,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;YAC1E,MAAM,GAAG,OAAO,CAAC;QACnB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,KAAK,CAAC,+EAA+E,CAAC,CAAC;YAC/F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED,oBAAoB;IACpB,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,KAAK,CAAC,CAAC;IACnC,IAAI,CAAC;QACH,QAAQ,CAAC,GAAG,MAAM,eAAe,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;IACtF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,KAAK,CAAC,kBAAkB,KAAK,EAAE,CAAC,CAAC;QACzC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,kCAAkC;IAClC,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,QAAQ,CACvB,GAAG,MAAM,6CAA6C,EACtD,EAAE,KAAK,EAAE,MAAM,EAAE,CAClB,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;QAEpB,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;YACzC,QAAQ,CAAC,GAAG,MAAM,oCAAoC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YAC3E,OAAO,CAAC,GAAG,CAAC,4DAA4D,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,uCAAuC;IACzC,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;AACnC,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare function shouldSuppressWarning(args: unknown[]): boolean;
2
+ export declare function installWarningFilter(): void;
3
+ //# sourceMappingURL=warnings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"warnings.d.ts","sourceRoot":"","sources":["../src/warnings.ts"],"names":[],"mappings":"AA0BA,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAa9D;AAID,wBAAgB,oBAAoB,IAAI,IAAI,CAY3C"}
@@ -0,0 +1,51 @@
1
+ function getWarningType(args) {
2
+ const second = args[1];
3
+ if (typeof second === 'string')
4
+ return second;
5
+ if (second && typeof second === 'object' && 'type' in second && typeof second.type === 'string') {
6
+ return second.type;
7
+ }
8
+ return undefined;
9
+ }
10
+ function getWarningName(args) {
11
+ const first = args[0];
12
+ if (first && typeof first === 'object' && 'name' in first && typeof first.name === 'string') {
13
+ return first.name;
14
+ }
15
+ return getWarningType(args);
16
+ }
17
+ function getWarningMessage(args) {
18
+ const first = args[0];
19
+ if (typeof first === 'string')
20
+ return first;
21
+ if (first && typeof first === 'object' && 'message' in first && typeof first.message === 'string') {
22
+ return first.message;
23
+ }
24
+ return '';
25
+ }
26
+ export function shouldSuppressWarning(args) {
27
+ const name = getWarningName(args);
28
+ const message = getWarningMessage(args);
29
+ if (name === 'ExperimentalWarning' && message.includes('SQLite')) {
30
+ return true;
31
+ }
32
+ if (name === 'DeprecationWarning' && message.includes('punycode')) {
33
+ return true;
34
+ }
35
+ return false;
36
+ }
37
+ let installed = false;
38
+ export function installWarningFilter() {
39
+ if (installed)
40
+ return;
41
+ installed = true;
42
+ const originalEmitWarning = process.emitWarning.bind(process);
43
+ process.emitWarning = ((warning, ...rest) => {
44
+ const args = [warning, ...rest];
45
+ if (shouldSuppressWarning(args)) {
46
+ return;
47
+ }
48
+ return originalEmitWarning(warning, ...rest);
49
+ });
50
+ }
51
+ //# sourceMappingURL=warnings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"warnings.js","sourceRoot":"","sources":["../src/warnings.ts"],"names":[],"mappings":"AAAA,SAAS,cAAc,CAAC,IAAe;IACrC,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACvB,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC;IAC9C,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAChG,OAAO,MAAM,CAAC,IAAI,CAAC;IACrB,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,cAAc,CAAC,IAAe;IACrC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACtB,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC5F,OAAO,KAAK,CAAC,IAAI,CAAC;IACpB,CAAC;IACD,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAe;IACxC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACtB,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,SAAS,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QAClG,OAAO,KAAK,CAAC,OAAO,CAAC;IACvB,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,IAAe;IACnD,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,OAAO,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAExC,IAAI,IAAI,KAAK,qBAAqB,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACjE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,IAAI,KAAK,oBAAoB,IAAI,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QAClE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,IAAI,SAAS,GAAG,KAAK,CAAC;AAEtB,MAAM,UAAU,oBAAoB;IAClC,IAAI,SAAS;QAAE,OAAO;IACtB,SAAS,GAAG,IAAI,CAAC;IAEjB,MAAM,mBAAmB,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9D,OAAO,CAAC,WAAW,GAAG,CAAC,CAAC,OAAuB,EAAE,GAAG,IAAe,EAAE,EAAE;QACrE,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;QAChC,IAAI,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC;YAChC,OAAO;QACT,CAAC;QACD,OAAO,mBAAmB,CAAC,OAAyB,EAAE,GAAG,IAAU,CAAC,CAAC;IACvE,CAAC,CAA+B,CAAC;AACnC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=warnings.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"warnings.test.d.ts","sourceRoot":"","sources":["../src/warnings.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,23 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { shouldSuppressWarning } from './warnings.js';
3
+ describe('shouldSuppressWarning', () => {
4
+ it('suppresses the node:sqlite experimental warning', () => {
5
+ expect(shouldSuppressWarning([
6
+ 'SQLite is an experimental feature and might change at any time',
7
+ 'ExperimentalWarning',
8
+ ])).toBe(true);
9
+ });
10
+ it('suppresses the transitive punycode deprecation warning', () => {
11
+ expect(shouldSuppressWarning([
12
+ 'The punycode module is deprecated.',
13
+ 'DeprecationWarning',
14
+ ])).toBe(true);
15
+ });
16
+ it('does not suppress unrelated warnings', () => {
17
+ expect(shouldSuppressWarning([
18
+ 'Something else happened',
19
+ 'ExperimentalWarning',
20
+ ])).toBe(false);
21
+ });
22
+ });
23
+ //# sourceMappingURL=warnings.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"warnings.test.js","sourceRoot":"","sources":["../src/warnings.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAEtD,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,MAAM,CAAC,qBAAqB,CAAC;YAC3B,gEAAgE;YAChE,qBAAqB;SACtB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,MAAM,CAAC,qBAAqB,CAAC;YAC3B,oCAAoC;YACpC,oBAAoB;SACrB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,CAAC,qBAAqB,CAAC;YAC3B,yBAAyB;YACzB,qBAAqB;SACtB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cereworker/cli",
3
- "version": "26.328.4",
3
+ "version": "26.328.6",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "cereworker": "dist/index.js"
@@ -22,15 +22,15 @@
22
22
  "ink": "^5.1.0",
23
23
  "@inkjs/ui": "^2.0.0",
24
24
  "react": "^18.3.1",
25
- "@cereworker/core": "26.328.4",
26
- "@cereworker/cerebellum-client": "26.328.4",
27
- "@cereworker/skills": "26.328.4",
28
- "@cereworker/cerebrum": "26.328.4",
29
- "@cereworker/channels": "26.328.4",
30
- "@cereworker/browser": "26.328.4",
31
- "@cereworker/hippocampus": "26.328.4",
32
- "@cereworker/config": "26.328.4",
33
- "@cereworker/gateway": "26.328.4"
25
+ "@cereworker/core": "26.328.6",
26
+ "@cereworker/config": "26.328.6",
27
+ "@cereworker/cerebrum": "26.328.6",
28
+ "@cereworker/cerebellum-client": "26.328.6",
29
+ "@cereworker/skills": "26.328.6",
30
+ "@cereworker/browser": "26.328.6",
31
+ "@cereworker/gateway": "26.328.6",
32
+ "@cereworker/channels": "26.328.6",
33
+ "@cereworker/hippocampus": "26.328.6"
34
34
  },
35
35
  "devDependencies": {
36
36
  "@types/react": "^18.3.0",
@@ -1,11 +1,13 @@
1
1
  #!/usr/bin/env node
2
- // Copy browser extension to ~/.cereworker/extension/ on npm install
2
+ // Post-install: copy browser extension + pull Cerebellum Docker image
3
3
 
4
4
  import { existsSync, cpSync, mkdirSync } from 'node:fs';
5
5
  import { homedir } from 'node:os';
6
- import { join, dirname } from 'node:path';
6
+ import { join } from 'node:path';
7
7
  import { createRequire } from 'node:module';
8
- import { fileURLToPath } from 'node:url';
8
+ import { execSync } from 'node:child_process';
9
+
10
+ // --- 1. Copy browser extension to ~/.cereworker/extension/ ---
9
11
 
10
12
  const dest = join(homedir(), '.cereworker', 'extension');
11
13
 
@@ -14,15 +16,39 @@ try {
14
16
  const browserPkg = require.resolve('@cereworker/browser');
15
17
  const extensionSrc = join(browserPkg.substring(0, browserPkg.lastIndexOf('dist')), 'extension');
16
18
 
17
- if (!existsSync(extensionSrc)) {
18
- // Browser package not found — skip silently
19
+ if (existsSync(extensionSrc)) {
20
+ mkdirSync(dest, { recursive: true });
21
+ cpSync(extensionSrc, dest, { recursive: true });
22
+ console.log(`CereWorker: Browser extension copied to ${dest}`);
23
+ console.log(' Load it in Chrome: chrome://extensions → Load unpacked → select that folder');
24
+ }
25
+ } catch {
26
+ // Non-critical — don't fail the install
27
+ }
28
+
29
+ // --- 2. Pull latest Cerebellum Docker image ---
30
+
31
+ let dockerCmd = 'docker';
32
+
33
+ try {
34
+ execSync('docker info', { stdio: 'pipe', timeout: 10_000 });
35
+ } catch {
36
+ // Docker not available directly — try with sudo
37
+ try {
38
+ execSync('sudo -n docker info', { stdio: 'pipe', timeout: 10_000 });
39
+ dockerCmd = 'sudo docker';
40
+ } catch {
41
+ console.log('CereWorker: Docker not available — skipping Cerebellum image pull.');
42
+ console.log(' Install Docker and run "cereworker upgrade" to pull the image later.');
19
43
  process.exit(0);
20
44
  }
45
+ }
21
46
 
22
- mkdirSync(dest, { recursive: true });
23
- cpSync(extensionSrc, dest, { recursive: true });
24
- console.log(`CereWorker: Browser extension copied to ${dest}`);
25
- console.log(' Load it in Chrome: chrome://extensions Load unpacked → select that folder');
47
+ const image = 'cereworker/cerebellum:latest';
48
+ console.log(`CereWorker: Pulling ${image}...`);
49
+ try {
50
+ execSync(`${dockerCmd} pull ${image}`, { stdio: 'inherit', timeout: 3_600_000 });
51
+ console.log(`CereWorker: Cerebellum image updated.`);
26
52
  } catch {
27
- // Non-critical don't fail the install
53
+ console.log(`CereWorker: Could not pull ${image} (non-fatal). Run "cereworker upgrade" to retry.`);
28
54
  }