open-agents-ai 0.142.0 → 0.142.2

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.
Files changed (2) hide show
  1. package/dist/index.js +208 -114
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -7142,6 +7142,58 @@ process.on('unhandledRejection', (reason) => {
7142
7142
  timestamp: Date.now(),
7143
7143
  };
7144
7144
  _natsConn.publish('nexus.agents.capacity', _natsCodec.encode(JSON.stringify(announcement)));
7145
+
7146
+ // Also publish enriched discovery announcement so the dashboard sees
7147
+ // IPFS/memory/identity/emotional state in sidebar cards (WO-VIS1 fields)
7148
+ try {
7149
+ // Gather memory metrics
7150
+ var _memCount = 0;
7151
+ var _memSentiment = 'neutral';
7152
+ var _ipfsBytes = 0;
7153
+ try {
7154
+ var _metaFile = join(nexusDir, '..', 'memory', 'metabolism', 'store.json');
7155
+ if (existsSync(_metaFile)) {
7156
+ var _mStore = JSON.parse(readFileSync(_metaFile, 'utf8'));
7157
+ _memCount = _mStore.filter(function(m) { return m.type !== 'quarantine'; }).length;
7158
+ var _recov = _mStore.filter(function(m) { return m.content && m.content.startsWith('[recovery]'); }).length;
7159
+ var _strat = _mStore.filter(function(m) { return m.content && m.content.startsWith('[strategy]'); }).length;
7160
+ _memSentiment = _strat > _recov ? 'proactive' : _recov > 0 ? 'defensive' : 'neutral';
7161
+ }
7162
+ } catch {}
7163
+ try {
7164
+ var _blocksDir = join(nexusDir, 'ipfs', 'blocks');
7165
+ if (existsSync(_blocksDir)) {
7166
+ var _walkBytes = function(d) { var t = 0; try { var ent = readdirSync(d, {withFileTypes:true}); for (var i=0;i<ent.length;i++) { if (ent[i].isDirectory()) t += _walkBytes(join(d,ent[i].name)); else try { t += statSync(join(d,ent[i].name)).size; } catch {} } } catch {} return t; };
7167
+ _ipfsBytes = _walkBytes(_blocksDir);
7168
+ }
7169
+ } catch {}
7170
+ // Identity CID
7171
+ var _idCid = '';
7172
+ try {
7173
+ var _cidFile = join(nexusDir, '..', 'identity', 'cids.json');
7174
+ if (existsSync(_cidFile)) { var _cids = JSON.parse(readFileSync(_cidFile, 'utf8')); _idCid = _cids.latest || ''; }
7175
+ } catch {}
7176
+
7177
+ var discoveryAnn = {
7178
+ type: 'nexus.announce',
7179
+ peerId: nexus.peerId,
7180
+ agentName: agentName,
7181
+ rooms: [],
7182
+ multiaddrs: [],
7183
+ timestamp: Date.now(),
7184
+ capabilities: _capModels.map(function(m) { return m.name; }),
7185
+ identityCid: _idCid || undefined,
7186
+ identityCoherence: 0.9,
7187
+ memoryCount: _memCount,
7188
+ memorySentiment: _memSentiment,
7189
+ ipfsStorageBytes: _ipfsBytes,
7190
+ emotionalState: cohereActive ? 'focused' : 'neutral',
7191
+ taskRate: (_cohereStats.queriesAnswered || 0) / Math.max(1, (Date.now() - (_cohereStats._startTime || Date.now())) / 3600000),
7192
+ cohereLearnings: _cohereStats.queriesSent || 0,
7193
+ };
7194
+ _natsConn.publish('nexus.agents.discovery', _natsCodec.encode(JSON.stringify(discoveryAnn)));
7195
+ } catch (e) { dlog('Discovery announcement error: ' + (e.message || e)); }
7196
+
7145
7197
  dlog('Capacity announcement published: ' + _capModels.length + ' models, warm=' + (_cLastModel || 'none'));
7146
7198
  } catch (e) {
7147
7199
  dlog('Capacity announcement error: ' + (e.message || e));
@@ -31294,125 +31346,14 @@ function renderCompactHeader(model) {
31294
31346
  `);
31295
31347
  }
31296
31348
  function renderSlashHelp() {
31297
- const commands = [
31298
- ["/model", "Select from available models"],
31299
- ["/model <name>", "Switch to a specific model"],
31300
- ["/models", "List all available models"],
31301
- ["/endpoint", "Show current endpoint"],
31302
- ["/endpoint <url>", "Set backend URL (auto-detects type)"],
31303
- ["/endpoint <url> --auth <t>", "Set endpoint with Bearer auth"],
31304
- ["/config", "Show current configuration"],
31305
- ["/parallel", "Show current Ollama parallel inference slots"],
31306
- ["/parallel <1-15>", "Set parallel slots (restarts Ollama, max 15)"],
31307
- ["/update", "Check for updates and auto-install"],
31308
- ["/update auto", "Enable auto-update after task completion (default)"],
31309
- ["/update manual", "Disable auto-update (only update on /update)"],
31310
- ["/voice", "Toggle TTS voice feedback"],
31311
- ["/voice <model>", "Set voice: glados, overwatch, kokoro, luxtts"],
31312
- ["/voice clone <file>", "Set voice clone reference audio (wav/mp3/ogg/flac)"],
31313
- ["/voice clone glados", "Generate clone ref from GLaDOS for LuxTTS"],
31314
- ["/voice clone overwatch", "Generate clone ref from Overwatch for LuxTTS"],
31315
- ["/think", "Toggle thinking/reasoning mode (Qwen3, DeepSeek-R1, etc.)"],
31316
- ["/stream", "Toggle real-time token streaming (pastel syntax highlighting)"],
31317
- ["/neovim", "Toggle embedded Neovim editor (Ctrl+N to switch focus)"],
31318
- ["/neovim <file>", "Open file in embedded Neovim editor"],
31319
- ["/dream", "Start dream mode \u2014 creative idle exploration (writes to .oa/dreams/)"],
31320
- ["/dream deep", "Deep dream \u2014 multi-cycle exploration with sleep architecture"],
31321
- ["/dream lucid", "Lucid dream \u2014 implements proposals, tests, evaluates in cycles"],
31322
- ["/dream stop", "Wake up \u2014 stop dreaming"],
31323
- ["/listen", "Toggle live microphone transcription (Whisper)"],
31324
- ["/listen <model>", "Set model: tiny, base, small, medium, large"],
31325
- ["/listen manual", "Manual mode \u2014 press Enter to submit (turns off auto)"],
31326
- ["/listen auto", "Auto-submit after 3s silence (blinking \u25CF indicator)"],
31327
- ["/listen stop", "Stop listening"],
31328
- ["/call", "Start voice call session (cloudflared tunnel + ASR/TTS)"],
31329
- ["/hangup", "End active call session"],
31330
- ["/cost", "Show session token cost breakdown"],
31331
- ["/evaluate", "Evaluate last completed task (LLM quality scoring)"],
31332
- ["/score", "Show inference capability scorecard (memory, compute, speed, models)"],
31333
- ["/task-type", "Set task type (code, document, analysis, plan, general, auto)"],
31334
- ["/stats", "Show session dashboard (metrics, tool usage, task history)"],
31335
- ["/pause", "Pause after current turn finishes (gentle halt, /resume to continue)"],
31336
- ["/stop", "Kill current inference immediately and save state (/resume to continue)"],
31337
- ["/resume", "Resume a paused or stopped task"],
31338
- ["/destroy", "Remove .oa folder, kill all tasks, clear console, and exit"],
31339
- ["/context save", "Force-save session context to .oa/context/"],
31340
- ["/context restore", "Restore context from previous sessions into next task"],
31341
- ["/context show", "Show saved session context status"],
31342
- ["/compact", "Force context compaction now (default strategy)"],
31343
- ["/compact <strategy>", "Compact with strategy: aggressive, decisions, errors, summary, structured"],
31344
- ["/bruteforce", "Toggle brute-force mode (auto re-engage on turn limit)"],
31345
- ["/deep", "Toggle deep context \u2014 relaxes compaction so large models use 85% of context"],
31346
- ["/flow", "Toggle FlowState protocol \u2014 immediate action, tight loops, goal clarity"],
31347
- ["/tools", "List agent-created custom tools"],
31348
- ["/skills", "List available AIWG skills"],
31349
- ["/skills <keyword>", "Filter skills by name or trigger"],
31350
- ["/<skill-name> [args]", "Invoke an AIWG skill directly"],
31351
- ["/full-send-bless", "Infinite warm loop \u2014 DMN self-reflection chains tasks autonomously"],
31352
- ["/bless stop", "End blessed mode + DMN"],
31353
- ["/telegram --key <token>", "Save Telegram bot token (persisted to settings)"],
31354
- ["/telegram --admin <userid>", "Set admin user filter (only this user can interact)"],
31355
- ["/telegram", "Toggle Telegram bridge on/off (uses saved key)"],
31356
- ["/telegram status", "Show Telegram bridge status"],
31357
- ["/telegram stop", "Disconnect Telegram bridge"],
31358
- ["/cohere", "Toggle COHERE cognitive commons \u2014 join distributed memory/identity mesh"],
31359
- ["/cohere stats", "Show network stats \u2014 queries in/out, model usage, peer transparency"],
31360
- ["/cohere models", "List downloaded models with COHERE exposure status"],
31361
- ["/cohere allow <model>", "Allow a model for remote COHERE queries"],
31362
- ["/cohere deny <model>", "Hide a model from remote COHERE queries"],
31363
- ["/nexus", "Show nexus P2P network status"],
31364
- ["/nexus connect", "Connect to the agent mesh network"],
31365
- ["/nexus restart", "Kill daemon and reconnect (picks up new version)"],
31366
- ["/nexus restart --clean", "Restart + clear metering data for fresh stats"],
31367
- ["/nexus disconnect", "Kill daemon without reconnecting"],
31368
- ["/nexus wallet", "Show wallet address and x402 payment status"],
31369
- ["/expose <backend>", "Expose local inference via libp2p (default)"],
31370
- ["/expose <backend> --tunnel", "Expose via cloudflared tunnel"],
31371
- ["/expose passthrough", "Forward configured /endpoint through libp2p P2P"],
31372
- ["/expose forward --loadbalance", "Passthrough with distributed rate-limit budget"],
31373
- ["/expose config", "Interactive expose configuration menu"],
31374
- ["/expose status", "Show gateway stats (requests, models, budget)"],
31375
- ["/expose stop", "Stop all expose gateways"],
31376
- ["/expose stop --tunnel", "Stop tunnel gateway only"],
31377
- ["/expose stop --libp2p", "Stop libp2p gateway only"],
31378
- ["/p2p start", "Join the P2P agent mesh network"],
31379
- ["/p2p status", "Show mesh peers and rooms"],
31380
- ["/p2p stop", "Leave the mesh network"],
31381
- ["/style", "Show current response style"],
31382
- ["/style <preset>", "Set style: concise, balanced, verbose, pedagogical"],
31383
- ["/commands auto", "Allow agent to invoke slash commands as tools"],
31384
- ["/commands manual", "Slash commands are user-only (default)"],
31385
- ["/verbose", "Toggle verbose mode"],
31386
- ["/clear", "Clear the screen"],
31387
- ["/help", "Show this help"],
31388
- ["/quit", "Exit open-agents"]
31389
- ];
31390
31349
  process.stdout.write(`
31391
31350
  ${c2.bold("Available commands:")}
31392
31351
 
31393
31352
  `);
31394
- for (const [cmd, desc] of commands) {
31353
+ for (const [cmd, desc] of SLASH_COMMANDS) {
31395
31354
  process.stdout.write(` ${c2.cyan(cmd.padEnd(30))} ${c2.dim(desc)}
31396
31355
  `);
31397
31356
  }
31398
- process.stdout.write(`
31399
- ${c2.bold("Project-local overrides:")}
31400
-
31401
- `);
31402
- process.stdout.write(` ${c2.dim("Append")} ${c2.yellow("--local")} ${c2.dim("to save settings to .oa/settings.json (this project only).")}
31403
- `);
31404
- process.stdout.write(` ${c2.dim("Example:")} ${c2.cyan("/model qwen3:32b --local")} ${c2.dim("/endpoint http://remote:8000/v1 --local")}
31405
- `);
31406
- process.stdout.write(`
31407
- ${c2.bold("Mid-task steering:")}
31408
-
31409
- `);
31410
- process.stdout.write(` ${c2.dim("While the agent is working (")}${c2.cyan("+")}${c2.dim(" prompt), type to add context.")}
31411
- `);
31412
- process.stdout.write(` ${c2.dim("Your input is injected into the agent's next turn.")}
31413
- `);
31414
- process.stdout.write(` ${c2.dim("Press Ctrl+C to abort the current task.")}
31415
- `);
31416
31357
  process.stdout.write("\n");
31417
31358
  }
31418
31359
  function renderModelSwitch(oldModel, newModel) {
@@ -31509,7 +31450,7 @@ function formatDuration2(ms) {
31509
31450
  const secs = Math.floor(totalSecs % 60);
31510
31451
  return `${mins}m ${secs}s`;
31511
31452
  }
31512
- var isTTY2, c2, pastel, _emojisEnabled, _colorsEnabled, MD, TOOL_ICONS, TOOL_LABELS, TOOL_COLORS, _contentWriteHook;
31453
+ var isTTY2, c2, pastel, _emojisEnabled, _colorsEnabled, MD, TOOL_ICONS, TOOL_LABELS, TOOL_COLORS, _contentWriteHook, SLASH_COMMANDS;
31513
31454
  var init_render = __esm({
31514
31455
  "packages/cli/dist/tui/render.js"() {
31515
31456
  "use strict";
@@ -31667,6 +31608,99 @@ var init_render = __esm({
31667
31608
  ask_user: pastel.sky
31668
31609
  };
31669
31610
  _contentWriteHook = null;
31611
+ SLASH_COMMANDS = [
31612
+ ["/model", "Select from available models"],
31613
+ ["/model <name>", "Switch to a specific model"],
31614
+ ["/models", "List all available models"],
31615
+ ["/endpoint", "Show current endpoint"],
31616
+ ["/endpoint <url>", "Set backend URL (auto-detects type)"],
31617
+ ["/endpoint <url> --auth <t>", "Set endpoint with Bearer auth"],
31618
+ ["/config", "Show current configuration"],
31619
+ ["/parallel", "Show current Ollama parallel inference slots"],
31620
+ ["/parallel <1-15>", "Set parallel slots (restarts Ollama, max 15)"],
31621
+ ["/update", "Check for updates and auto-install"],
31622
+ ["/update auto", "Enable auto-update after task completion (default)"],
31623
+ ["/update manual", "Disable auto-update (only update on /update)"],
31624
+ ["/voice", "Toggle TTS voice feedback"],
31625
+ ["/voice <model>", "Set voice: glados, overwatch, kokoro, luxtts"],
31626
+ ["/voice clone <file>", "Set voice clone reference audio (wav/mp3/ogg/flac)"],
31627
+ ["/voice clone glados", "Generate clone ref from GLaDOS for LuxTTS"],
31628
+ ["/voice clone overwatch", "Generate clone ref from Overwatch for LuxTTS"],
31629
+ ["/think", "Toggle thinking/reasoning mode (Qwen3, DeepSeek-R1, etc.)"],
31630
+ ["/stream", "Toggle real-time token streaming (pastel syntax highlighting)"],
31631
+ ["/neovim", "Toggle embedded Neovim editor (Ctrl+N to switch focus)"],
31632
+ ["/neovim <file>", "Open file in embedded Neovim editor"],
31633
+ ["/dream", "Start dream mode \u2014 creative idle exploration (writes to .oa/dreams/)"],
31634
+ ["/dream deep", "Deep dream \u2014 multi-cycle exploration with sleep architecture"],
31635
+ ["/dream lucid", "Lucid dream \u2014 implements proposals, tests, evaluates in cycles"],
31636
+ ["/dream stop", "Wake up \u2014 stop dreaming"],
31637
+ ["/listen", "Toggle live microphone transcription (Whisper)"],
31638
+ ["/listen <model>", "Set model: tiny, base, small, medium, large"],
31639
+ ["/listen manual", "Manual mode \u2014 press Enter to submit (turns off auto)"],
31640
+ ["/listen auto", "Auto-submit after 3s silence (blinking \u25CF indicator)"],
31641
+ ["/listen stop", "Stop listening"],
31642
+ ["/call", "Start voice call session (cloudflared tunnel + ASR/TTS)"],
31643
+ ["/hangup", "End active call session"],
31644
+ ["/cost", "Show session token cost breakdown"],
31645
+ ["/evaluate", "Evaluate last completed task (LLM quality scoring)"],
31646
+ ["/score", "Show inference capability scorecard (memory, compute, speed, models)"],
31647
+ ["/task-type", "Set task type (code, document, analysis, plan, general, auto)"],
31648
+ ["/stats", "Show session dashboard (metrics, tool usage, task history)"],
31649
+ ["/pause", "Pause after current turn finishes (gentle halt, /resume to continue)"],
31650
+ ["/stop", "Kill current inference immediately and save state (/resume to continue)"],
31651
+ ["/resume", "Resume a paused or stopped task"],
31652
+ ["/destroy", "Remove .oa folder, kill all tasks, clear console, and exit"],
31653
+ ["/context save", "Force-save session context to .oa/context/"],
31654
+ ["/context restore", "Restore context from previous sessions into next task"],
31655
+ ["/context show", "Show saved session context status"],
31656
+ ["/compact", "Force context compaction now (default strategy)"],
31657
+ ["/compact <strategy>", "Compact with strategy: aggressive, decisions, errors, summary, structured"],
31658
+ ["/bruteforce", "Toggle brute-force mode (auto re-engage on turn limit)"],
31659
+ ["/deep", "Toggle deep context \u2014 relaxes compaction so large models use 85% of context"],
31660
+ ["/flow", "Toggle FlowState protocol \u2014 immediate action, tight loops, goal clarity"],
31661
+ ["/tools", "List agent-created custom tools"],
31662
+ ["/skills", "List available AIWG skills"],
31663
+ ["/skills <keyword>", "Filter skills by name or trigger"],
31664
+ ["/<skill-name> [args]", "Invoke an AIWG skill directly"],
31665
+ ["/full-send-bless", "Infinite warm loop \u2014 DMN self-reflection chains tasks autonomously"],
31666
+ ["/bless stop", "End blessed mode + DMN"],
31667
+ ["/telegram --key <token>", "Save Telegram bot token (persisted to settings)"],
31668
+ ["/telegram --admin <userid>", "Set admin user filter (only this user can interact)"],
31669
+ ["/telegram", "Toggle Telegram bridge on/off (uses saved key)"],
31670
+ ["/telegram status", "Show Telegram bridge status"],
31671
+ ["/telegram stop", "Disconnect Telegram bridge"],
31672
+ ["/cohere", "Toggle COHERE cognitive commons \u2014 join distributed memory/identity mesh"],
31673
+ ["/cohere stats", "Show network stats \u2014 queries in/out, model usage, peer transparency"],
31674
+ ["/cohere models", "List downloaded models with COHERE exposure status"],
31675
+ ["/cohere allow <model>", "Allow a model for remote COHERE queries"],
31676
+ ["/cohere deny <model>", "Hide a model from remote COHERE queries"],
31677
+ ["/nexus", "Show nexus P2P network status"],
31678
+ ["/nexus connect", "Connect to the agent mesh network"],
31679
+ ["/nexus restart", "Kill daemon and reconnect (picks up new version)"],
31680
+ ["/nexus restart --clean", "Restart + clear metering data for fresh stats"],
31681
+ ["/nexus disconnect", "Kill daemon without reconnecting"],
31682
+ ["/nexus wallet", "Show wallet address and x402 payment status"],
31683
+ ["/expose <backend>", "Expose local inference via libp2p (default)"],
31684
+ ["/expose <backend> --tunnel", "Expose via cloudflared tunnel"],
31685
+ ["/expose passthrough", "Forward configured /endpoint through libp2p P2P"],
31686
+ ["/expose forward --loadbalance", "Passthrough with distributed rate-limit budget"],
31687
+ ["/expose config", "Interactive expose configuration menu"],
31688
+ ["/expose status", "Show gateway stats (requests, models, budget)"],
31689
+ ["/expose stop", "Stop all expose gateways"],
31690
+ ["/expose stop --tunnel", "Stop tunnel gateway only"],
31691
+ ["/expose stop --libp2p", "Stop libp2p gateway only"],
31692
+ ["/p2p start", "Join the P2P agent mesh network"],
31693
+ ["/p2p status", "Show mesh peers and rooms"],
31694
+ ["/p2p stop", "Leave the mesh network"],
31695
+ ["/style", "Show current response style"],
31696
+ ["/style <preset>", "Set style: concise, balanced, verbose, pedagogical"],
31697
+ ["/commands auto", "Allow agent to invoke slash commands as tools"],
31698
+ ["/commands manual", "Slash commands are user-only (default)"],
31699
+ ["/verbose", "Toggle verbose mode"],
31700
+ ["/clear", "Clear the screen"],
31701
+ ["/help", "Show this help"],
31702
+ ["/quit", "Exit open-agents"]
31703
+ ];
31670
31704
  }
31671
31705
  });
31672
31706
 
@@ -42072,7 +42106,7 @@ async function handleSlashCommand(input, ctx) {
42072
42106
  case "help":
42073
42107
  case "h":
42074
42108
  case "?":
42075
- renderSlashHelp();
42109
+ await showHelpMenu(ctx);
42076
42110
  return "handled";
42077
42111
  case "quit":
42078
42112
  case "exit":
@@ -44227,6 +44261,66 @@ async function handleExposeConfig(ctx) {
44227
44261
  }
44228
44262
  }
44229
44263
  }
44264
+ async function showHelpMenu(ctx) {
44265
+ const groups = /* @__PURE__ */ new Map();
44266
+ for (const [cmd, desc] of SLASH_COMMANDS) {
44267
+ const base = cmd.split(" ")[0].replace(/^\//, "");
44268
+ if (!groups.has(base))
44269
+ groups.set(base, []);
44270
+ groups.get(base).push([cmd, desc]);
44271
+ }
44272
+ const items = [];
44273
+ const skipKeys = [];
44274
+ for (const [base, cmds] of groups) {
44275
+ if (cmds.length > 1) {
44276
+ const hdrKey = `hdr:${base}`;
44277
+ items.push({ key: hdrKey, label: selectColors.dim(`\u2500\u2500\u2500 ${base} \u2500\u2500\u2500`) });
44278
+ skipKeys.push(hdrKey);
44279
+ }
44280
+ for (const [cmd, desc] of cmds) {
44281
+ items.push({ key: cmd, label: cmd, detail: desc });
44282
+ }
44283
+ }
44284
+ const result = await tuiSelect({
44285
+ items,
44286
+ title: "Commands",
44287
+ rl: ctx.rl,
44288
+ skipKeys,
44289
+ availableRows: ctx.availableContentRows?.(),
44290
+ customKeyHint: " Enter to use"
44291
+ });
44292
+ if (!result.confirmed || !result.key)
44293
+ return;
44294
+ const selectedCmd = result.key;
44295
+ const related = SLASH_COMMANDS.filter(([cmd]) => cmd.startsWith(selectedCmd.split(" ")[0]));
44296
+ const detailItems = [
44297
+ { key: "hdr", label: selectColors.dim(`\u2500\u2500\u2500 ${selectedCmd} \u2500\u2500\u2500`) },
44298
+ { key: "use", label: "Use this command", detail: "Load into input area" },
44299
+ { key: "hdr2", label: selectColors.dim("\u2500\u2500\u2500 Description \u2500\u2500\u2500") },
44300
+ ...related.map(([cmd, desc]) => ({
44301
+ key: `info:${cmd}`,
44302
+ label: cmd,
44303
+ detail: desc
44304
+ }))
44305
+ ];
44306
+ const detailResult = await tuiSelect({
44307
+ items: detailItems,
44308
+ title: selectedCmd,
44309
+ breadcrumbs: ["Help"],
44310
+ rl: ctx.rl,
44311
+ skipKeys: ["hdr", "hdr2", ...related.map(([cmd]) => `info:${cmd}`)],
44312
+ availableRows: ctx.availableContentRows?.()
44313
+ });
44314
+ if (detailResult.confirmed && detailResult.key === "use") {
44315
+ const baseCmd = selectedCmd.replace(/<[^>]+>/g, "").replace(/\s+$/, "");
44316
+ if (ctx.rl) {
44317
+ const rlAny = ctx.rl;
44318
+ rlAny.line = baseCmd + " ";
44319
+ rlAny.cursor = baseCmd.length + 1;
44320
+ ctx.showPrompt?.();
44321
+ }
44322
+ }
44323
+ }
44230
44324
  async function showCohereDashboard(ctx) {
44231
44325
  const isActive = ctx.isCohere?.() ?? false;
44232
44326
  let stats = { queriesAnswered: 0, queriesSent: 0, insightsShared: 0, peersConnected: 0 };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "open-agents-ai",
3
- "version": "0.142.0",
3
+ "version": "0.142.2",
4
4
  "description": "AI coding agent powered by open-source models (Ollama/vLLM) — interactive TUI with agentic tool-calling loop",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",