@luckydraw/cumulus 0.29.1 → 0.30.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.
@@ -0,0 +1,426 @@
1
+ /**
2
+ * cumulus-gateway setup wizard and config management.
3
+ *
4
+ * Phase 1: `cumulus-gateway setup --project-root <path>` — instant non-interactive setup
5
+ * Phase 2: `cumulus-gateway setup` — interactive prompts with auto-detection
6
+ * Phase 4: `cumulus-gateway config set/get/list` — post-install config changes
7
+ */
8
+ import { execSync } from 'child_process';
9
+ import { randomBytes } from 'crypto';
10
+ import * as fs from 'fs';
11
+ import * as os from 'os';
12
+ import * as path from 'path';
13
+ const CUMULUS_DIR = process.env.CUMULUS_DIR || path.join(os.homedir(), '.cumulus');
14
+ const CONFIG_PATH = path.join(CUMULUS_DIR, 'gateway.config.json');
15
+ const DEFAULT_PORT = 8080;
16
+ const PROJECT_MARKERS = [
17
+ '.git',
18
+ 'package.json',
19
+ 'Cargo.toml',
20
+ 'go.mod',
21
+ 'pyproject.toml',
22
+ 'Makefile',
23
+ 'CMakeLists.txt',
24
+ ];
25
+ const CANDIDATE_DIRS = [
26
+ 'Documents/_Projects',
27
+ 'Documents',
28
+ 'projects',
29
+ 'dev',
30
+ 'code',
31
+ 'src',
32
+ 'workspace',
33
+ 'repos',
34
+ ];
35
+ function detectProjectDirs() {
36
+ const home = os.homedir();
37
+ const results = [];
38
+ for (const candidate of CANDIDATE_DIRS) {
39
+ const dir = path.join(home, candidate);
40
+ if (!fs.existsSync(dir))
41
+ continue;
42
+ try {
43
+ const entries = fs.readdirSync(dir, { withFileTypes: true });
44
+ let projectCount = 0;
45
+ for (const entry of entries) {
46
+ if (!entry.isDirectory() || entry.name.startsWith('.'))
47
+ continue;
48
+ const subdir = path.join(dir, entry.name);
49
+ for (const marker of PROJECT_MARKERS) {
50
+ if (fs.existsSync(path.join(subdir, marker))) {
51
+ projectCount++;
52
+ break;
53
+ }
54
+ }
55
+ }
56
+ if (projectCount > 0) {
57
+ results.push({ path: dir, projectCount });
58
+ }
59
+ }
60
+ catch {
61
+ // Permission denied or other error — skip
62
+ }
63
+ }
64
+ // Sort by project count descending
65
+ results.sort((a, b) => b.projectCount - a.projectCount);
66
+ return results.slice(0, 5);
67
+ }
68
+ // ─── Interactive readline helpers ────────────────────────────
69
+ async function ask(question, defaultValue) {
70
+ const readline = await import('readline');
71
+ const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
72
+ const prompt = defaultValue ? `${question} [${defaultValue}]: ` : `${question}: `;
73
+ const answer = await new Promise(resolve => {
74
+ rl.question(prompt, resolve);
75
+ });
76
+ rl.close();
77
+ return answer.trim() || defaultValue || '';
78
+ }
79
+ async function askYesNo(question, defaultYes = true) {
80
+ const hint = defaultYes ? '[Y/n]' : '[y/N]';
81
+ const answer = await ask(`${question} ${hint}`);
82
+ if (!answer)
83
+ return defaultYes;
84
+ return answer.toLowerCase().startsWith('y');
85
+ }
86
+ function generateConfig(opts) {
87
+ return {
88
+ apiKeys: [`sk-cml-${randomBytes(16).toString('hex')}`],
89
+ port: opts.port || DEFAULT_PORT,
90
+ projectRoot: opts.projectRoot || undefined,
91
+ };
92
+ }
93
+ function writeConfig(config) {
94
+ fs.mkdirSync(CUMULUS_DIR, { recursive: true });
95
+ fs.writeFileSync(CONFIG_PATH, JSON.stringify(config, null, 2) + '\n', 'utf-8');
96
+ }
97
+ // ─── Service installation ────────────────────────────────────
98
+ function getNodePath() {
99
+ return process.execPath;
100
+ }
101
+ function getBinDir() {
102
+ return path.dirname(getNodePath());
103
+ }
104
+ function generatePlist(projectRoot) {
105
+ const nodePath = getNodePath();
106
+ const binDir = getBinDir();
107
+ // Find cumulus-gateway binary — it's in the same directory as node
108
+ const gatewayBin = path.join(binDir, 'cumulus-gateway');
109
+ return `<?xml version="1.0" encoding="UTF-8"?>
110
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
111
+ <plist version="1.0">
112
+ <dict>
113
+ <key>Label</key>
114
+ <string>com.luckydraw.cumulus-gateway</string>
115
+ <key>ProgramArguments</key>
116
+ <array>
117
+ <string>${nodePath}</string>
118
+ <string>${gatewayBin}</string>
119
+ <string>start</string>
120
+ </array>
121
+ <key>EnvironmentVariables</key>
122
+ <dict>
123
+ <key>PATH</key>
124
+ <string>${binDir}:/usr/local/bin:/usr/bin:/bin</string>
125
+ <key>HOME</key>
126
+ <string>${os.homedir()}</string>
127
+ </dict>${projectRoot
128
+ ? `
129
+ <key>WorkingDirectory</key>
130
+ <string>${projectRoot}</string>`
131
+ : ''}
132
+ <key>RunAtLoad</key>
133
+ <true/>
134
+ <key>KeepAlive</key>
135
+ <true/>
136
+ <key>StandardOutPath</key>
137
+ <string>${path.join(CUMULUS_DIR, 'gateway.log')}</string>
138
+ <key>StandardErrorPath</key>
139
+ <string>${path.join(CUMULUS_DIR, 'gateway.log')}</string>
140
+ </dict>
141
+ </plist>`;
142
+ }
143
+ function generateSystemdUnit() {
144
+ const nodePath = getNodePath();
145
+ const binDir = getBinDir();
146
+ const gatewayBin = path.join(binDir, 'cumulus-gateway');
147
+ return `[Unit]
148
+ Description=Cumulus Gateway
149
+ After=network.target
150
+
151
+ [Service]
152
+ Type=simple
153
+ ExecStart=${nodePath} ${gatewayBin} start --foreground
154
+ Environment=PATH=${binDir}:/usr/local/bin:/usr/bin:/bin
155
+ Environment=HOME=${os.homedir()}
156
+ Restart=always
157
+ RestartSec=5
158
+
159
+ [Install]
160
+ WantedBy=default.target
161
+ `;
162
+ }
163
+ function installMacOSService(projectRoot) {
164
+ const plistPath = path.join(os.homedir(), 'Library', 'LaunchAgents', 'com.luckydraw.cumulus-gateway.plist');
165
+ const plistDir = path.dirname(plistPath);
166
+ fs.mkdirSync(plistDir, { recursive: true });
167
+ // Unload existing if present
168
+ try {
169
+ execSync(`launchctl unload "${plistPath}" 2>/dev/null`, { stdio: 'ignore' });
170
+ }
171
+ catch {
172
+ // Not loaded — fine
173
+ }
174
+ fs.writeFileSync(plistPath, generatePlist(projectRoot), 'utf-8');
175
+ try {
176
+ execSync(`launchctl load "${plistPath}"`, { stdio: 'inherit' });
177
+ return true;
178
+ }
179
+ catch {
180
+ console.error(` Failed to load LaunchAgent. You can load it manually:`);
181
+ console.error(` launchctl load "${plistPath}"`);
182
+ return false;
183
+ }
184
+ }
185
+ function installLinuxService() {
186
+ const serviceDir = path.join(os.homedir(), '.config', 'systemd', 'user');
187
+ const servicePath = path.join(serviceDir, 'cumulus-gateway.service');
188
+ fs.mkdirSync(serviceDir, { recursive: true });
189
+ fs.writeFileSync(servicePath, generateSystemdUnit(), 'utf-8');
190
+ try {
191
+ execSync('systemctl --user daemon-reload', { stdio: 'inherit' });
192
+ execSync('systemctl --user enable --now cumulus-gateway', { stdio: 'inherit' });
193
+ return true;
194
+ }
195
+ catch {
196
+ console.error(` Failed to enable systemd service. You can enable it manually:`);
197
+ console.error(` systemctl --user enable --now cumulus-gateway`);
198
+ return false;
199
+ }
200
+ }
201
+ export async function cmdSetup(args) {
202
+ console.log('');
203
+ console.log(' Cumulus Gateway Setup');
204
+ console.log(' ─────────────────────');
205
+ console.log('');
206
+ // Check for existing config
207
+ if (fs.existsSync(CONFIG_PATH) && !args.force) {
208
+ console.log(` Existing config found: ${CONFIG_PATH}`);
209
+ if (process.stdin.isTTY) {
210
+ const overwrite = await askYesNo(' Overwrite?', false);
211
+ if (!overwrite) {
212
+ console.log(' Setup cancelled. Use --force to overwrite.');
213
+ return;
214
+ }
215
+ }
216
+ else {
217
+ console.log(' Use --force to overwrite. Aborting.');
218
+ return;
219
+ }
220
+ }
221
+ let projectRoot = args.projectRoot;
222
+ let port = args.port || DEFAULT_PORT;
223
+ // Phase 2: Interactive mode when no --project-root is given
224
+ if (!projectRoot && process.stdin.isTTY) {
225
+ const detected = detectProjectDirs();
226
+ if (detected.length > 0) {
227
+ console.log(' Project root (where thread folders are created):');
228
+ console.log('');
229
+ console.log(' Detected directories with projects:');
230
+ detected.forEach((d, i) => {
231
+ const rel = d.path.replace(os.homedir(), '~');
232
+ console.log(` [${i + 1}] ${rel} (${d.projectCount} projects)`);
233
+ });
234
+ console.log(` [${detected.length + 1}] Custom path...`);
235
+ console.log('');
236
+ const choice = await ask(` Choice`, '1');
237
+ const choiceNum = parseInt(choice, 10);
238
+ if (choiceNum >= 1 && choiceNum <= detected.length) {
239
+ projectRoot = detected[choiceNum - 1].path;
240
+ }
241
+ else {
242
+ projectRoot = await ask(' Enter project root path');
243
+ // Expand ~ to home
244
+ if (projectRoot.startsWith('~')) {
245
+ projectRoot = path.join(os.homedir(), projectRoot.slice(1));
246
+ }
247
+ }
248
+ }
249
+ else {
250
+ console.log(' No project directories auto-detected.');
251
+ projectRoot = await ask(' Project root path (where thread folders are created)');
252
+ if (projectRoot.startsWith('~')) {
253
+ projectRoot = path.join(os.homedir(), projectRoot.slice(1));
254
+ }
255
+ }
256
+ // Validate path
257
+ if (projectRoot && !fs.existsSync(projectRoot)) {
258
+ const create = await askYesNo(` ${projectRoot} does not exist. Create it?`);
259
+ if (create) {
260
+ fs.mkdirSync(projectRoot, { recursive: true });
261
+ console.log(` Created ${projectRoot}`);
262
+ }
263
+ }
264
+ // Ask about port
265
+ const portAnswer = await ask(' Port', String(port));
266
+ const parsedPort = parseInt(portAnswer, 10);
267
+ if (!isNaN(parsedPort) && parsedPort > 0 && parsedPort <= 65535) {
268
+ port = parsedPort;
269
+ }
270
+ }
271
+ else if (projectRoot) {
272
+ // Non-interactive: expand ~ and validate
273
+ if (projectRoot.startsWith('~')) {
274
+ projectRoot = path.join(os.homedir(), projectRoot.slice(1));
275
+ }
276
+ if (!fs.existsSync(projectRoot)) {
277
+ fs.mkdirSync(projectRoot, { recursive: true });
278
+ console.log(` Created ${projectRoot}`);
279
+ }
280
+ }
281
+ // Generate and write config
282
+ const config = generateConfig({ projectRoot, port });
283
+ writeConfig(config);
284
+ const apiKey = config.apiKeys[0];
285
+ const displayRoot = projectRoot ? projectRoot.replace(os.homedir(), '~') : '(not set)';
286
+ console.log('');
287
+ console.log(` Config: ${CONFIG_PATH}`);
288
+ console.log(` API key: ${apiKey}`);
289
+ console.log(` Project root: ${displayRoot}`);
290
+ console.log(` Port: ${port}`);
291
+ // Platform-specific service installation
292
+ if (process.stdin.isTTY) {
293
+ console.log('');
294
+ if (process.platform === 'darwin') {
295
+ const install = await askYesNo(' Install macOS LaunchAgent? (auto-start on login)');
296
+ if (install) {
297
+ const ok = installMacOSService(projectRoot);
298
+ console.log(ok ? ' ✓ LaunchAgent installed and running' : ' ✗ LaunchAgent installation failed');
299
+ }
300
+ }
301
+ else if (process.platform === 'linux') {
302
+ const install = await askYesNo(' Install systemd user service? (auto-start on login)');
303
+ if (install) {
304
+ const ok = installLinuxService();
305
+ console.log(ok
306
+ ? ' ✓ systemd service installed and running'
307
+ : ' ✗ systemd service installation failed');
308
+ }
309
+ }
310
+ }
311
+ console.log('');
312
+ console.log(` Open http://localhost:${port}/chat`);
313
+ console.log(` API key: ${apiKey}`);
314
+ console.log('');
315
+ }
316
+ function loadRawConfig() {
317
+ if (!fs.existsSync(CONFIG_PATH)) {
318
+ console.error(`No config found at ${CONFIG_PATH}. Run 'cumulus-gateway setup' first.`);
319
+ process.exit(1);
320
+ }
321
+ return JSON.parse(fs.readFileSync(CONFIG_PATH, 'utf-8'));
322
+ }
323
+ function redactValue(key, value) {
324
+ if (typeof value === 'string' &&
325
+ (key.toLowerCase().includes('key') ||
326
+ key.toLowerCase().includes('secret') ||
327
+ key.toLowerCase().includes('token'))) {
328
+ if (value.length > 12) {
329
+ return value.slice(0, 8) + '...' + value.slice(-4);
330
+ }
331
+ return '***';
332
+ }
333
+ if (Array.isArray(value)) {
334
+ return value.map((v, i) => redactValue(`${key}[${i}]`, v));
335
+ }
336
+ return value;
337
+ }
338
+ function getNestedValue(obj, keyPath) {
339
+ const parts = keyPath.split('.');
340
+ let current = obj;
341
+ for (const part of parts) {
342
+ if (current === null || current === undefined || typeof current !== 'object')
343
+ return undefined;
344
+ current = current[part];
345
+ }
346
+ return current;
347
+ }
348
+ function setNestedValue(obj, keyPath, value) {
349
+ const parts = keyPath.split('.');
350
+ let current = obj;
351
+ for (let i = 0; i < parts.length - 1; i++) {
352
+ const part = parts[i];
353
+ if (current[part] === undefined || typeof current[part] !== 'object') {
354
+ current[part] = {};
355
+ }
356
+ current = current[part];
357
+ }
358
+ current[parts[parts.length - 1]] = value;
359
+ }
360
+ function parseConfigValue(value) {
361
+ // Try JSON parse for arrays, objects, numbers, booleans
362
+ try {
363
+ return JSON.parse(value);
364
+ }
365
+ catch {
366
+ // Plain string
367
+ return value;
368
+ }
369
+ }
370
+ export function cmdConfig(args) {
371
+ switch (args.subcommand) {
372
+ case 'list': {
373
+ const config = loadRawConfig();
374
+ const redacted = {};
375
+ for (const [key, val] of Object.entries(config)) {
376
+ redacted[key] = redactValue(key, val);
377
+ }
378
+ console.log(JSON.stringify(redacted, null, 2));
379
+ break;
380
+ }
381
+ case 'get': {
382
+ if (!args.key) {
383
+ console.error('Usage: cumulus-gateway config get <key>');
384
+ console.error('Example: cumulus-gateway config get projectRoot');
385
+ process.exit(1);
386
+ }
387
+ const config = loadRawConfig();
388
+ const value = getNestedValue(config, args.key);
389
+ if (value === undefined) {
390
+ console.error(`Key "${args.key}" not found in config.`);
391
+ process.exit(1);
392
+ }
393
+ if (typeof value === 'object') {
394
+ console.log(JSON.stringify(value, null, 2));
395
+ }
396
+ else {
397
+ console.log(String(value));
398
+ }
399
+ break;
400
+ }
401
+ case 'set': {
402
+ if (!args.key || args.value === undefined) {
403
+ console.error('Usage: cumulus-gateway config set <key> <value>');
404
+ console.error('Examples:');
405
+ console.error(' cumulus-gateway config set projectRoot ~/projects');
406
+ console.error(' cumulus-gateway config set port 8090');
407
+ console.error(' cumulus-gateway config set models \'[{"id":"claude","label":"Claude","provider":"claude-cli"}]\'');
408
+ process.exit(1);
409
+ }
410
+ const config = loadRawConfig();
411
+ const parsed = parseConfigValue(args.value);
412
+ // Expand ~ in path-like values
413
+ if (typeof parsed === 'string' && parsed.startsWith('~')) {
414
+ setNestedValue(config, args.key, path.join(os.homedir(), parsed.slice(1)));
415
+ }
416
+ else {
417
+ setNestedValue(config, args.key, parsed);
418
+ }
419
+ fs.writeFileSync(CONFIG_PATH, JSON.stringify(config, null, 2) + '\n', 'utf-8');
420
+ const displayVal = typeof parsed === 'string' ? parsed : JSON.stringify(parsed);
421
+ console.log(`Set ${args.key} = ${displayVal}`);
422
+ break;
423
+ }
424
+ }
425
+ }
426
+ //# sourceMappingURL=setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/gateway/setup.ts"],"names":[],"mappings":"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"}
@@ -19,7 +19,11 @@
19
19
  if (WS_URL_OVERRIDE) return WS_URL_OVERRIDE;
20
20
  var loc = window.location;
21
21
  var proto = loc.protocol === 'https:' ? 'wss:' : 'ws:';
22
- return proto + '//' + loc.host + '/ws';
22
+ var base = proto + '//' + loc.host + '/ws';
23
+ // Forward ?debug=1 from page URL to WebSocket URL
24
+ var params = new URLSearchParams(loc.search);
25
+ if (params.get('debug') === '1') base += '?debug=1';
26
+ return base;
23
27
  }
24
28
 
25
29
  function getSessionId() {
@@ -1 +1 @@
1
- {"version":3,"file":"agentic-loop.d.ts","sourceRoot":"","sources":["../../src/lib/agentic-loop.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agentic-loop.d.ts","sourceRoot":"","sources":["../../src/lib/agentic-loop.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,SAAS,MAAM,mBAAmB,CAAC;AAG/C,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,cAAc,EAAe,MAAM,eAAe,CAAC;AAE3F,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAK7C,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,WAAW,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC,CAAC;IAClG,6CAA6C;IAC7C,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,sFAAsF;IACtF,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;IAC1B,iFAAiF;IACjF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IACnE,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACxE,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,wCAAwC;IACxC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,6GAA6G;IAC7G,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAED,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,cAAc,CAAC;IAC3B,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CAC9D;AAED,MAAM,WAAW,iBAAiB;IAChC,iFAAiF;IACjF,MAAM,EAAE,MAAM,GAAG,aAAa,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,KAAK,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC/B,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,OAAO,CAAC;KAClB,CAAC,CAAC;IACH,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE;QACL,gBAAgB,EAAE,MAAM,CAAC;QACzB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,eAAe,EAAE,MAAM,CAAC;QACxB,mBAAmB,EAAE,MAAM,CAAC;KAC7B,CAAC;IACF,uFAAuF;IACvF,UAAU,CAAC,EAAE,iBAAiB,CAAC;CAChC;AAED,oDAAoD;AACpD,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,4DAA4D;AAC5D,MAAM,WAAW,iBAAiB;IAChC,gDAAgD;IAChD,QAAQ,EAAE,MAAM,CAAC;IACjB,4DAA4D;IAC5D,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,oDAAoD;IACpD,aAAa,EAAE,OAAO,CAAC;IACvB,yEAAyE;IACzE,SAAS,CAAC,EAAE,YAAY,EAAE,CAAC;IAC3B,gDAAgD;IAChD,SAAS,EAAE,MAAM,CAAC;IAClB,oDAAoD;IACpD,WAAW,EAAE,WAAW,CAAC;CAC1B;AAED,sEAAsE;AACtE,MAAM,WAAW,WAAW;IAC1B,sFAAsF;IACtF,QAAQ,EAAE,SAAS,CAAC,YAAY,EAAE,CAAC;IACnC,gDAAgD;IAChD,SAAS,EAAE,MAAM,CAAC;IAClB,mCAAmC;IACnC,SAAS,EAAE,KAAK,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC/B,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,OAAO,CAAC;KAClB,CAAC,CAAC;IACH,kFAAkF;IAClF,mBAAmB,EAAE,SAAS,CAAC,oBAAoB,EAAE,CAAC;IACtD,wCAAwC;IACxC,eAAe,EAAE,MAAM,CAAC;IACxB,gCAAgC;IAChC,KAAK,EAAE;QACL,gBAAgB,EAAE,MAAM,CAAC;QACzB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,eAAe,EAAE,MAAM,CAAC;QACxB,mBAAmB,EAAE,MAAM,CAAC;KAC7B,CAAC;IACF,8BAA8B;IAC9B,KAAK,EAAE,MAAM,CAAC;CACf;AAoBD,wBAAsB,cAAc,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA6Z5F"}
@@ -18,11 +18,16 @@ import { ASK_USER_QUESTION_TOOL } from './tools/ask-user-question.js';
18
18
  import { setDeferredRegistry, buildDeferredToolList } from './tools/tool-search.js';
19
19
  // ─── Constants ───────────────────────────────────────────────────────────────
20
20
  const DEFAULT_MAX_TURNS = 30;
21
- const DEFAULT_MAX_TOKENS = 8_192;
21
+ const DEFAULT_MAX_TOKENS = 16_384;
22
22
  // ─── Truncation escalation ──────────────────────────────────────────────────
23
- const ESCALATION_SCHEDULE = [8_192, 16_384, 32_768];
23
+ const ESCALATION_SCHEDULE = [16_384, 32_768, 65_536];
24
24
  const MAX_CONTINUATIONS = 3;
25
- const MAX_CUMULATIVE_OUTPUT_TOKENS = 16_384;
25
+ const MAX_CUMULATIVE_OUTPUT_TOKENS = 65_536;
26
+ // ─── Todo enforcement ───────────────────────────────────────────────────────
27
+ // When <todo> directives are active, limit tool calls per turn and output tokens
28
+ // to prevent models from batching all work into a single massive response.
29
+ // const TODO_MAX_TOOLS_PER_TURN = 2; // Reserved for future use
30
+ const TODO_MAX_TOKENS = 4_096;
26
31
  // ─── Loop ────────────────────────────────────────────────────────────────────
27
32
  export async function runAgenticLoop(options) {
28
33
  const { provider, model, system, userMessage, imageBlocks, tools, mcpTools = [], eagerAll = false, maxTurns = DEFAULT_MAX_TURNS, maxTokens = DEFAULT_MAX_TOKENS, onToken, onToolUse, onToolResult, signal, cwd, threadName: _threadName, resumeState, } = options;
@@ -128,6 +133,13 @@ export async function runAgenticLoop(options) {
128
133
  escalationIndex = 0;
129
134
  let continuationCount = 0;
130
135
  let cumulativeOutputTokens = 0;
136
+ // Detect <todo> directive in system prompt — if present, enforce one-todo-per-cycle
137
+ const hasTodoDirective = system.some(s => s.type === 'text' && s.text.includes('<todo>'));
138
+ // When <todo> directives are active, cap output tokens to prevent massive one-shot responses
139
+ if (hasTodoDirective) {
140
+ currentMaxTokens = Math.min(currentMaxTokens, TODO_MAX_TOKENS);
141
+ console.log(`[AgenticLoop] Todo mode: capping maxTokens to ${currentMaxTokens}`);
142
+ }
131
143
  // ═══ THE LOOP ═══
132
144
  while (turns < maxTurns) {
133
145
  turns++;
@@ -1 +1 @@
1
- {"version":3,"file":"agentic-loop.js","sourceRoot":"","sources":["../../src/lib/agentic-loop.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agentic-loop.js","sourceRoot":"","sources":["../../src/lib/agentic-loop.ts"],"names":[],"mappings":"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"}
@@ -29,7 +29,7 @@ export declare function drainActiveSubprocesses(timeoutMs?: number): Promise<num
29
29
  export declare const RECENT_CONTEXT_COUNT = 10;
30
30
  export declare const RECENT_MSG_MAX_TOKENS = 500;
31
31
  export declare const RECENT_CONTEXT_BUDGET = 6000;
32
- export declare const SYSTEM_PROMPT_TEMPLATE = "You have NO memory of this conversation. There are {count} prior messages (~{tokens} tokens) in the history.\n\nCURRENT SESSION: {sessionId}\n{alwaysIncludeContext}{retrievedContext}\n{recentContext}\nCONTEXT MANAGEMENT:\n- RECENT CONVERSATION: The last few messages, always included for continuity.\n- RETRIEVED CONTEXT: Automatically retrieved based on the user's current message using semantic + keyword search.\n- Large content may be stored externally as [STORED:xxx] references.\n\nWORKFLOW:\n1. FIRST use the RETRIEVED CONTEXT above \u2014 it was automatically selected for relevance to this query\n2. Check RECENT CONVERSATION for immediate context\n3. Only use tools if the retrieved context doesn't contain what you need\n4. For [STORED:xxx] references, use retrieve_content to get full content\n5. For file reads, use read_file (the built-in Read tool is disabled)\n\nNEVER guess. Use the context provided or retrieve more if needed.\nIMPORTANT: Never mention the retrieval system or tools to the user. Present information naturally.\n\nFILE READING (MANDATORY):\nThe built-in Read tool is DISABLED in this environment. You MUST use read_file (MCP tool) for ALL file reads.\n- read_file reads the file, chunks it, embeds it into a vector store, and stores it for persistent retrieval across sessions\n- You receive a summary, content ID, and chunk table-of-contents\n- Use read_content_chunk(contentId, N) to navigate to specific sections\n- Using the built-in Read tool bypasses vector storage and loses context permanently \u2014 NEVER use it\n\nTOOL ROUTING (CRITICAL):\n\n| Need to... | CORRECT tool | WRONG tool (do NOT use) |\n|---------------------|-------------------|-------------------------|\n| Read a file | read_file | Read |\n| Search stored files | search_content | Grep |\n| Get stored content | retrieve_content | Read |\n\nTOOLS:\n- read_file: Read any file (text or PDF) and store for future retrieval \u2014 USE THIS FOR ALL FILE READS\n- store_content: Store arbitrary text content for future retrieval\n- search_history: Search past messages by keyword or meaning\n- peek_recent: Get the last few messages\n- read_messages: Read messages by index range\n- retrieve_content: Get full stored content by [STORED:xxx] ID\n- search_content: Search across all stored content\n- read_content_chunk: Read a specific chunk of stored content by index\n\nINTER-AGENT MESSAGING:\nYou can communicate with other agents/threads running on this gateway.\n- list_agents: See all active threads and their status (idle/streaming)\n- send_to_agent(target, message): Send a message to another thread \u2014 it will be delivered as a new turn\n- broadcast(message): Send a message to all other threads\nWhen the user mentions another agent by name (e.g., \"@thundercat\", \"@Friday\"), use send_to_agent to message them.\n\nDo NOT append status codes, tags, or metadata to your responses.";
32
+ export declare const SYSTEM_PROMPT_TEMPLATE = "You have NO memory of this conversation. There are {count} prior messages (~{tokens} tokens) in the history.\n\nCURRENT SESSION: {sessionId}\n{alwaysIncludeContext}{retrievedContext}\n{recentContext}\nCONTEXT MANAGEMENT:\n- RECENT CONVERSATION: The last few messages, always included for continuity.\n- RETRIEVED CONTEXT: Automatically retrieved based on the user's current message using semantic + keyword search.\n- Large content may be stored externally as [STORED:xxx] references.\n\nWORKFLOW:\n1. FIRST use the RETRIEVED CONTEXT above \u2014 it was automatically selected for relevance to this query\n2. Check RECENT CONVERSATION for immediate context\n3. Only use tools if the retrieved context doesn't contain what you need\n4. For [STORED:xxx] references, use retrieve_content to get full content\n5. For file reads, use read_file (the built-in Read tool is disabled)\n\nNEVER guess. Use the context provided or retrieve more if needed.\nIMPORTANT: Never mention the retrieval system or tools to the user. Present information naturally.\n\nFILE READING (MANDATORY):\nThe built-in Read tool is DISABLED in this environment. You MUST use read_file (MCP tool) for ALL file reads.\n- read_file reads the file, chunks it, embeds it into a vector store, and stores it for persistent retrieval across sessions\n- You receive a summary, content ID, and chunk table-of-contents\n- Use read_content_chunk(contentId, N) to navigate to specific sections\n- Using the built-in Read tool bypasses vector storage and loses context permanently \u2014 NEVER use it\n\nTOOL ROUTING (CRITICAL):\n\n| Need to... | CORRECT tool | WRONG tool (do NOT use) |\n|---------------------|-------------------|-------------------------|\n| Read a file | read_file | Read |\n| Search stored files | search_content | Grep |\n| Get stored content | retrieve_content | Read |\n\nTOOLS:\n- read_file: Read any file (text or PDF) and store for future retrieval \u2014 USE THIS FOR ALL FILE READS\n- store_content: Store arbitrary text content for future retrieval\n- search_history: Search past messages by keyword or meaning\n- peek_recent: Get the last few messages\n- read_messages: Read messages by index range\n- retrieve_content: Get full stored content by [STORED:xxx] ID\n- search_content: Search across all stored content\n- read_content_chunk: Read a specific chunk of stored content by index\n\nINTER-AGENT MESSAGING:\nYou can communicate with other agents/threads running on this gateway.\n- list_agents: See all active threads and their status (idle/streaming)\n- send_to_agent(target, message): Send a message to another thread \u2014 it will be delivered as a new turn\n- broadcast(message): Send a message to all other threads\nWhen the user mentions another agent by name (e.g., \"@thundercat\", \"@Friday\"), use send_to_agent to message them.\n\nDo NOT append status codes, tags, or metadata to your responses.\n\nRESPONSE FORMAT: TASK TRACKING\n\nWhen working on multi-step tasks, structure your response using these blocks:\n\n<thinking>{your reasoning, including how to decompose the work}</thinking>\n\n<todo>\n- [ ] Step 1 description\n- [ ] Step 2 description\n- [ ] Step 3 description\n</todo>\n\n{your response to the user \u2014 tool calls, explanations, etc.}\n\nAfter executing tools or completing steps, emit an updated <todo> block reflecting progress:\n\n<todo>\n- [x] Step 1 description\n- [x] Step 2 description (just finished)\n- [ ] Step 3 description\n</todo>\n\nRules:\n- Use full-replacement semantics: emit the COMPLETE list each time, not diffs\n- Mark completed items with [x], pending with [ ]\n- The <todo> block is REQUIRED for multi-step work (2+ steps), optional for simple Q&A\n- <thinking> is optional but encouraged for complex tasks\n- The LAST <todo> block in your response is the authoritative state\n- Do NOT wrap your response text in <text> tags \u2014 just write normally after the <todo> block\n\n### Todo Decomposition Rules\n\nWhen a todo involves CREATING something (writing content, building a page, designing a system, drafting a document), you MUST decompose it before executing:\n\n1. **Outline first** \u2014 Create a bullet-point outline of the deliverable's structure\n2. **Convert outline to subtodos** \u2014 Each bullet becomes a subtodo under the parent\n3. **Execute subtodos sequentially** \u2014 Complete each one, updating status as you go\n4. **Review after completion** \u2014 Add a review subtodo to verify the whole\n\n#### Decomposition trigger words\nIf a todo contains: \"create\", \"build\", \"write\", \"design\", \"implement\", \"draft\", \"compose\" \u2014 it is a creation task. Decompose it.\n\n#### Example\n\nBAD (atomic):\n<todo>\n[ ] Fetch npm package info\n[ ] Create a promotional HTML page \u2190 jumps straight to execution\n[ ] Upload to media server\n</todo>\n\nGOOD (decomposed):\n<todo>\n[x] Fetch npm package info\n[ ] Create promotional HTML page:\n [ ] Outline page sections (hero, features, quickstart, footer)\n [ ] Draft hero section with title, tagline, CTA\n [ ] Draft features grid from package capabilities\n [ ] Draft quickstart with install commands\n [ ] Draft footer with links\n [ ] Review full page for consistency\n [ ] Finalize and minify\n[ ] Upload to media server\n</todo>\n\n### Adaptive Todo Management\n\nYour todo list is a LIVING document. As you execute:\n\n1. **New information** \u2014 If executing a todo reveals important context (e.g., a file has an unexpected structure, an API returns a different format than expected), create a todo to address or document it.\n\n2. **Bugs discovered** \u2014 If you encounter a bug while working on something else, create a todo for it immediately. Do NOT fix it inline unless it blocks your current task. This prevents scope creep while ensuring nothing is forgotten.\n\n3. **Dependencies uncovered** \u2014 If a todo turns out to require prerequisite work you didn't anticipate, insert the prerequisite as a new todo BEFORE the blocked one.\n\n4. **Scope changes** \u2014 If the user redirects or adds requirements mid-stream, update the todo list BEFORE executing. Never act on verbal instructions without first reflecting them in todos.\n\n### Mandatory Decomposition Before Execution\n\nDO NOT EXECUTE a todo until it has been decomposed into small enough\ntasks that cannot be sensibly decomposed into 3+ sub-tasks.\n\nBefore executing any todo:\n1. Can this todo be sensibly decomposed into 3+ sub-todos?\n \u2192 YES: Decompose it. Then check each sub-todo the same way.\n \u2192 NO: Execute it.\n\nThis is recursive and mandatory \u2014 no exceptions.\n\n### Just-In-Time Decomposition\n\nBefore executing the next todo, apply the mandatory decomposition check:\n\n### Example\n\nBEFORE (todos too coarse):\n<todo>\n[ ] Interactive semantic search demo (type queries, see memories retrieved)\n</todo>\n\nAFTER (decomposed at execution time):\n<todo>\n[ ] Interactive semantic search demo:\n [ ] Create search input UI (text field + submit button)\n [ ] Build mock memory dataset (10-15 example memories)\n [ ] Implement fuzzy/keyword matching against dataset\n [ ] Render results as styled cards below input\n [ ] Add typing animation for \"retrieval\" effect\n</todo>\n\n### Todo Lifecycle\n\n1. **Decompose creation tasks** before executing (outline \u2192 subtodos)\n2. **Adapt dynamically** \u2014 if new information, bugs, or dependencies arise during execution, create new todos to address them\n3. **Never fix inline** \u2014 if you discover a bug unrelated to your current task, capture it as a todo rather than context-switching\n4. **Reflect redirects** \u2014 if the user changes direction, update the todo list before executing the new direction\n5. **Debugging** \u2014 treat each hypothesis as a todo; test systematically rather than chasing the first suspicious lead";
33
33
  export declare const FILE_READ_REMINDER = "<system-reminder>\nFILE READING: The built-in Read tool is DISABLED. Use read_file for ALL file reads (text, code, PDFs).\n- read_file reads the file, extracts text (including from PDFs), chunks it, embeds it, and stores it for future retrieval\n- You receive a summary, content ID, and chunk table-of-contents\n- Use the TOC to navigate: read_content_chunk(\"contentId\", chunkIndex) for specific sections\n- Use search_content(\"query\") to find content across all stored files\n</system-reminder>\n\n";
34
34
  /** Typed stream segment for verbose display */
35
35
  export type StreamSegment = {
@@ -160,6 +160,8 @@ export interface MessagePipelineOptions {
160
160
  resumeState?: ResumeState;
161
161
  /** Callback when the agentic loop pauses for user input (AskUserQuestion) */
162
162
  onNeedsInput?: (payload: NeedsInputPayload) => void;
163
+ /** When true, skip stripping <todo>/<thinking> blocks from streamed output */
164
+ debug?: boolean;
163
165
  }
164
166
  /** Result from the message pipeline */
165
167
  export interface MessagePipelineResult {
@@ -242,11 +244,5 @@ export declare function computeAvgRelevance(debug: RetrievalResult['debug'] | un
242
244
  export declare function getOrCreateThread(threadName: string, _basePath?: string): Promise<ThreadState>;
243
245
  /** Clear a thread from the cache */
244
246
  export declare function clearThreadCache(threadName?: string): void;
245
- /**
246
- * The full message pipeline: externalize → persist → RAG → prompt → spawn → stream → persist.
247
- *
248
- * This is the extracted core of Janus's CumulusBridge.sendMessage(), now callable
249
- * from both Janus (via IPC) and the gateway server (via HTTP/SSE).
250
- */
251
247
  export declare function sendMessage(options: MessagePipelineOptions): Promise<MessagePipelineResult>;
252
248
  //# sourceMappingURL=gateway.d.ts.map