draken 0.1.4 → 0.1.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/cli.js CHANGED
@@ -40,6 +40,95 @@ Object.defineProperty(exports, "__esModule", { value: true });
40
40
  const path_1 = __importDefault(require("path"));
41
41
  const fs_1 = __importDefault(require("fs"));
42
42
  const os_1 = __importDefault(require("os"));
43
+ const https_1 = __importDefault(require("https"));
44
+ const pkg = JSON.parse(fs_1.default.readFileSync(path_1.default.join(__dirname, '../package.json'), 'utf-8'));
45
+ const currentVersion = pkg.version;
46
+ /**
47
+ * Check for updates (non-blocking, cached for 24h)
48
+ */
49
+ async function checkForUpdates() {
50
+ const dataDir = process.env.DRAKEN_DATA_DIR || path_1.default.join(os_1.default.homedir(), '.draken');
51
+ const cacheFile = path_1.default.join(dataDir, '.update-check');
52
+ // Check cache (24 hour TTL)
53
+ try {
54
+ if (fs_1.default.existsSync(cacheFile)) {
55
+ const cache = JSON.parse(fs_1.default.readFileSync(cacheFile, 'utf-8'));
56
+ const age = Date.now() - cache.timestamp;
57
+ if (age < 24 * 60 * 60 * 1000) {
58
+ // Cache still valid
59
+ if (cache.latest && cache.latest !== currentVersion) {
60
+ showUpdateMessage(cache.latest);
61
+ }
62
+ return;
63
+ }
64
+ }
65
+ }
66
+ catch { }
67
+ // Fetch latest version from npm
68
+ return new Promise((resolve) => {
69
+ const req = https_1.default.get('https://registry.npmjs.org/draken/latest', { timeout: 3000 }, (res) => {
70
+ let data = '';
71
+ res.on('data', chunk => data += chunk);
72
+ res.on('end', () => {
73
+ try {
74
+ const latest = JSON.parse(data).version;
75
+ // Save to cache
76
+ if (!fs_1.default.existsSync(dataDir)) {
77
+ fs_1.default.mkdirSync(dataDir, { recursive: true });
78
+ }
79
+ fs_1.default.writeFileSync(cacheFile, JSON.stringify({ latest, timestamp: Date.now() }));
80
+ if (latest !== currentVersion) {
81
+ showUpdateMessage(latest);
82
+ }
83
+ }
84
+ catch { }
85
+ resolve();
86
+ });
87
+ });
88
+ req.on('error', () => resolve());
89
+ req.on('timeout', () => { req.destroy(); resolve(); });
90
+ });
91
+ }
92
+ function showUpdateMessage(latest) {
93
+ console.log(`\n 📦 Update available: ${currentVersion} → ${latest}`);
94
+ console.log(` Run: npm i -g draken@latest\n`);
95
+ }
96
+ // Handle --version and --help before anything else
97
+ const args = process.argv.slice(2);
98
+ if (args.includes('--version') || args.includes('-v')) {
99
+ console.log(`draken v${currentVersion}`);
100
+ checkForUpdates().then(() => process.exit(0));
101
+ }
102
+ else if (args.includes('--help') || args.includes('-h')) {
103
+ }
104
+ else if (args.includes('--help') || args.includes('-h')) {
105
+ console.log(`
106
+ Draken v${currentVersion} - Claude Code Dashboard
107
+
108
+ Usage: draken [options]
109
+
110
+ Options:
111
+ -v, --version Show version
112
+ -h, --help Show this help
113
+
114
+ Environment Variables:
115
+ DRAKEN_USERNAME Username for dashboard auth
116
+ DRAKEN_PASSWORD Password for dashboard auth
117
+ DRAKEN_JWT_SECRET Secret for JWT tokens
118
+ DRAKEN_NO_AUTH Set to 'true' to disable auth
119
+ DRAKEN_PORT Server port (default: 40333)
120
+ DRAKEN_DATA_DIR Data directory (default: ~/.draken)
121
+
122
+ Claude Authentication (one required):
123
+ ANTHROPIC_API_KEY API key for Claude
124
+ - or run: claude login
125
+
126
+ Examples:
127
+ DRAKEN_NO_AUTH=true draken
128
+ DRAKEN_USERNAME=admin DRAKEN_PASSWORD=secret DRAKEN_JWT_SECRET=xyz draken
129
+ `);
130
+ process.exit(0);
131
+ }
43
132
  // Check for required environment variables
44
133
  const noAuth = process.env.DRAKEN_NO_AUTH === 'true';
45
134
  if (!noAuth) {
@@ -65,6 +154,8 @@ if (!hasOAuth && !hasApiKey) {
65
154
  console.log(' 2. Set: ANTHROPIC_API_KEY=your-key\n');
66
155
  process.exit(1);
67
156
  }
157
+ // Check for updates in background (non-blocking)
158
+ checkForUpdates();
68
159
  // Import and start the server
69
160
  Promise.resolve().then(() => __importStar(require('./server')));
70
161
  //# sourceMappingURL=cli.js.map
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,gDAAwB;AACxB,4CAAoB;AACpB,4CAAoB;AAEpB,2CAA2C;AAC3C,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,MAAM,CAAC;AACrD,IAAI,CAAC,MAAM,EAAE,CAAC;IACZ,MAAM,QAAQ,GAAG,CAAC,iBAAiB,EAAE,iBAAiB,EAAE,mBAAmB,CAAC,CAAC;IAC7E,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IAE1D,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,gEAAgE,CAAC,CAAC;QAC9E,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;QAC1D,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;QACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,kCAAkC;AAClC,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,cAAI,CAAC,IAAI,CAAC,YAAE,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;AAC5F,MAAM,QAAQ,GAAG,YAAE,CAAC,UAAU,CAAC,cAAI,CAAC,IAAI,CAAC,eAAe,EAAE,mBAAmB,CAAC,CAAC,CAAC;AAChF,MAAM,SAAS,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;AAElD,IAAI,CAAC,QAAQ,IAAI,CAAC,SAAS,EAAE,CAAC;IAC5B,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;IAC7D,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;IACxC,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;IACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,8BAA8B;AAC9B,kDAAO,UAAU,IAAE"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "draken",
3
- "version": "0.1.4",
3
+ "version": "0.1.6",
4
4
  "description": "Web dashboard for running Claude Code tasks across multiple projects in Docker containers",
5
5
  "main": "dist/server.js",
6
6
  "bin": {