open-agents-ai 0.187.360 → 0.187.361
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 +324 -49
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -40874,11 +40874,11 @@ var require_eventemitter3 = __commonJS({
|
|
|
40874
40874
|
if (--emitter._eventsCount === 0) emitter._events = new Events();
|
|
40875
40875
|
else delete emitter._events[evt];
|
|
40876
40876
|
}
|
|
40877
|
-
function
|
|
40877
|
+
function EventEmitter12() {
|
|
40878
40878
|
this._events = new Events();
|
|
40879
40879
|
this._eventsCount = 0;
|
|
40880
40880
|
}
|
|
40881
|
-
|
|
40881
|
+
EventEmitter12.prototype.eventNames = function eventNames() {
|
|
40882
40882
|
var names = [], events, name10;
|
|
40883
40883
|
if (this._eventsCount === 0) return names;
|
|
40884
40884
|
for (name10 in events = this._events) {
|
|
@@ -40889,7 +40889,7 @@ var require_eventemitter3 = __commonJS({
|
|
|
40889
40889
|
}
|
|
40890
40890
|
return names;
|
|
40891
40891
|
};
|
|
40892
|
-
|
|
40892
|
+
EventEmitter12.prototype.listeners = function listeners(event) {
|
|
40893
40893
|
var evt = prefix ? prefix + event : event, handlers = this._events[evt];
|
|
40894
40894
|
if (!handlers) return [];
|
|
40895
40895
|
if (handlers.fn) return [handlers.fn];
|
|
@@ -40898,13 +40898,13 @@ var require_eventemitter3 = __commonJS({
|
|
|
40898
40898
|
}
|
|
40899
40899
|
return ee;
|
|
40900
40900
|
};
|
|
40901
|
-
|
|
40901
|
+
EventEmitter12.prototype.listenerCount = function listenerCount(event) {
|
|
40902
40902
|
var evt = prefix ? prefix + event : event, listeners = this._events[evt];
|
|
40903
40903
|
if (!listeners) return 0;
|
|
40904
40904
|
if (listeners.fn) return 1;
|
|
40905
40905
|
return listeners.length;
|
|
40906
40906
|
};
|
|
40907
|
-
|
|
40907
|
+
EventEmitter12.prototype.emit = function emit2(event, a1, a2, a3, a4, a5) {
|
|
40908
40908
|
var evt = prefix ? prefix + event : event;
|
|
40909
40909
|
if (!this._events[evt]) return false;
|
|
40910
40910
|
var listeners = this._events[evt], len = arguments.length, args, i2;
|
|
@@ -40955,13 +40955,13 @@ var require_eventemitter3 = __commonJS({
|
|
|
40955
40955
|
}
|
|
40956
40956
|
return true;
|
|
40957
40957
|
};
|
|
40958
|
-
|
|
40958
|
+
EventEmitter12.prototype.on = function on2(event, fn, context2) {
|
|
40959
40959
|
return addListener2(this, event, fn, context2, false);
|
|
40960
40960
|
};
|
|
40961
|
-
|
|
40961
|
+
EventEmitter12.prototype.once = function once(event, fn, context2) {
|
|
40962
40962
|
return addListener2(this, event, fn, context2, true);
|
|
40963
40963
|
};
|
|
40964
|
-
|
|
40964
|
+
EventEmitter12.prototype.removeListener = function removeListener2(event, fn, context2, once) {
|
|
40965
40965
|
var evt = prefix ? prefix + event : event;
|
|
40966
40966
|
if (!this._events[evt]) return this;
|
|
40967
40967
|
if (!fn) {
|
|
@@ -40984,7 +40984,7 @@ var require_eventemitter3 = __commonJS({
|
|
|
40984
40984
|
}
|
|
40985
40985
|
return this;
|
|
40986
40986
|
};
|
|
40987
|
-
|
|
40987
|
+
EventEmitter12.prototype.removeAllListeners = function removeAllListeners(event) {
|
|
40988
40988
|
var evt;
|
|
40989
40989
|
if (event) {
|
|
40990
40990
|
evt = prefix ? prefix + event : event;
|
|
@@ -40995,12 +40995,12 @@ var require_eventemitter3 = __commonJS({
|
|
|
40995
40995
|
}
|
|
40996
40996
|
return this;
|
|
40997
40997
|
};
|
|
40998
|
-
|
|
40999
|
-
|
|
41000
|
-
|
|
41001
|
-
|
|
40998
|
+
EventEmitter12.prototype.off = EventEmitter12.prototype.removeListener;
|
|
40999
|
+
EventEmitter12.prototype.addListener = EventEmitter12.prototype.on;
|
|
41000
|
+
EventEmitter12.prefixed = prefix;
|
|
41001
|
+
EventEmitter12.EventEmitter = EventEmitter12;
|
|
41002
41002
|
if ("undefined" !== typeof module) {
|
|
41003
|
-
module.exports =
|
|
41003
|
+
module.exports = EventEmitter12;
|
|
41004
41004
|
}
|
|
41005
41005
|
}
|
|
41006
41006
|
});
|
|
@@ -113772,10 +113772,10 @@ var require_wrap_handler = __commonJS({
|
|
|
113772
113772
|
var require_dispatcher = __commonJS({
|
|
113773
113773
|
"../node_modules/undici/lib/dispatcher/dispatcher.js"(exports, module) {
|
|
113774
113774
|
"use strict";
|
|
113775
|
-
var
|
|
113775
|
+
var EventEmitter12 = __require("node:events");
|
|
113776
113776
|
var WrapHandler = require_wrap_handler();
|
|
113777
113777
|
var wrapInterceptor = (dispatch) => (opts, handler) => dispatch(opts, WrapHandler.wrap(handler));
|
|
113778
|
-
var Dispatcher2 = class extends
|
|
113778
|
+
var Dispatcher2 = class extends EventEmitter12 {
|
|
113779
113779
|
dispatch() {
|
|
113780
113780
|
throw new Error("not implemented");
|
|
113781
113781
|
}
|
|
@@ -121058,7 +121058,7 @@ var require_socks5_utils = __commonJS({
|
|
|
121058
121058
|
var require_socks5_client = __commonJS({
|
|
121059
121059
|
"../node_modules/undici/lib/core/socks5-client.js"(exports, module) {
|
|
121060
121060
|
"use strict";
|
|
121061
|
-
var { EventEmitter:
|
|
121061
|
+
var { EventEmitter: EventEmitter12 } = __require("node:events");
|
|
121062
121062
|
var { Buffer: Buffer7 } = __require("node:buffer");
|
|
121063
121063
|
var { InvalidArgumentError, Socks5ProxyError } = require_errors2();
|
|
121064
121064
|
var { debuglog } = __require("node:util");
|
|
@@ -121101,7 +121101,7 @@ var require_socks5_client = __commonJS({
|
|
|
121101
121101
|
ERROR: "error",
|
|
121102
121102
|
CLOSED: "closed"
|
|
121103
121103
|
};
|
|
121104
|
-
var Socks5Client = class extends
|
|
121104
|
+
var Socks5Client = class extends EventEmitter12 {
|
|
121105
121105
|
constructor(socket, options2 = {}) {
|
|
121106
121106
|
super();
|
|
121107
121107
|
if (!socket) {
|
|
@@ -127486,9 +127486,9 @@ var require_memory_cache_store = __commonJS({
|
|
|
127486
127486
|
"../node_modules/undici/lib/cache/memory-cache-store.js"(exports, module) {
|
|
127487
127487
|
"use strict";
|
|
127488
127488
|
var { Writable } = __require("node:stream");
|
|
127489
|
-
var { EventEmitter:
|
|
127489
|
+
var { EventEmitter: EventEmitter12 } = __require("node:events");
|
|
127490
127490
|
var { assertCacheKey, assertCacheValue } = require_cache();
|
|
127491
|
-
var MemoryCacheStore = class extends
|
|
127491
|
+
var MemoryCacheStore = class extends EventEmitter12 {
|
|
127492
127492
|
#maxCount = 1024;
|
|
127493
127493
|
#maxSize = 104857600;
|
|
127494
127494
|
// 100MB
|
|
@@ -231525,7 +231525,7 @@ var require_extension2 = __commonJS({
|
|
|
231525
231525
|
var require_websocket2 = __commonJS({
|
|
231526
231526
|
"../node_modules/ws/lib/websocket.js"(exports, module) {
|
|
231527
231527
|
"use strict";
|
|
231528
|
-
var
|
|
231528
|
+
var EventEmitter12 = __require("events");
|
|
231529
231529
|
var https4 = __require("https");
|
|
231530
231530
|
var http6 = __require("http");
|
|
231531
231531
|
var net5 = __require("net");
|
|
@@ -231557,7 +231557,7 @@ var require_websocket2 = __commonJS({
|
|
|
231557
231557
|
var protocolVersions = [8, 13];
|
|
231558
231558
|
var readyStates = ["CONNECTING", "OPEN", "CLOSING", "CLOSED"];
|
|
231559
231559
|
var subprotocolRegex = /^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/;
|
|
231560
|
-
var WebSocket6 = class _WebSocket extends
|
|
231560
|
+
var WebSocket6 = class _WebSocket extends EventEmitter12 {
|
|
231561
231561
|
/**
|
|
231562
231562
|
* Create a new `WebSocket`.
|
|
231563
231563
|
*
|
|
@@ -232554,7 +232554,7 @@ var require_subprotocol = __commonJS({
|
|
|
232554
232554
|
var require_websocket_server = __commonJS({
|
|
232555
232555
|
"../node_modules/ws/lib/websocket-server.js"(exports, module) {
|
|
232556
232556
|
"use strict";
|
|
232557
|
-
var
|
|
232557
|
+
var EventEmitter12 = __require("events");
|
|
232558
232558
|
var http6 = __require("http");
|
|
232559
232559
|
var { Duplex: Duplex3 } = __require("stream");
|
|
232560
232560
|
var { createHash: createHash13 } = __require("crypto");
|
|
@@ -232567,7 +232567,7 @@ var require_websocket_server = __commonJS({
|
|
|
232567
232567
|
var RUNNING = 0;
|
|
232568
232568
|
var CLOSING = 1;
|
|
232569
232569
|
var CLOSED = 2;
|
|
232570
|
-
var WebSocketServer4 = class extends
|
|
232570
|
+
var WebSocketServer4 = class extends EventEmitter12 {
|
|
232571
232571
|
/**
|
|
232572
232572
|
* Create a `WebSocketServer` instance.
|
|
232573
232573
|
*
|
|
@@ -499760,6 +499760,56 @@ var init_dist4 = __esm({
|
|
|
499760
499760
|
}
|
|
499761
499761
|
});
|
|
499762
499762
|
|
|
499763
|
+
// packages/execution/dist/tools/code-graph-events.js
|
|
499764
|
+
import { EventEmitter as EventEmitter3 } from "node:events";
|
|
499765
|
+
function emitIndexed(payload) {
|
|
499766
|
+
codeGraphEvents.publish({ type: "indexed", timestamp: Date.now(), ...payload });
|
|
499767
|
+
}
|
|
499768
|
+
function emitLinked(payload) {
|
|
499769
|
+
codeGraphEvents.publish({ type: "linked", timestamp: Date.now(), ...payload });
|
|
499770
|
+
}
|
|
499771
|
+
function emitQueried(payload) {
|
|
499772
|
+
codeGraphEvents.publish({ type: "queried", timestamp: Date.now(), ...payload });
|
|
499773
|
+
}
|
|
499774
|
+
function emitPruned(payload) {
|
|
499775
|
+
codeGraphEvents.publish({ type: "pruned", timestamp: Date.now(), ...payload });
|
|
499776
|
+
}
|
|
499777
|
+
var MAX_RECENT, CodeGraphEventBus, codeGraphEvents;
|
|
499778
|
+
var init_code_graph_events = __esm({
|
|
499779
|
+
"packages/execution/dist/tools/code-graph-events.js"() {
|
|
499780
|
+
"use strict";
|
|
499781
|
+
MAX_RECENT = 256;
|
|
499782
|
+
CodeGraphEventBus = class extends EventEmitter3 {
|
|
499783
|
+
ring = [];
|
|
499784
|
+
constructor() {
|
|
499785
|
+
super();
|
|
499786
|
+
this.setMaxListeners(64);
|
|
499787
|
+
}
|
|
499788
|
+
publish(event) {
|
|
499789
|
+
this.ring.push(event);
|
|
499790
|
+
if (this.ring.length > MAX_RECENT) {
|
|
499791
|
+
this.ring.splice(0, this.ring.length - MAX_RECENT);
|
|
499792
|
+
}
|
|
499793
|
+
this.emit("event", event);
|
|
499794
|
+
this.emit(event.type, event);
|
|
499795
|
+
}
|
|
499796
|
+
/** Snapshot of the most recent N events (default all buffered). */
|
|
499797
|
+
recent(limit) {
|
|
499798
|
+
if (!limit || limit >= this.ring.length)
|
|
499799
|
+
return [...this.ring];
|
|
499800
|
+
return this.ring.slice(this.ring.length - limit);
|
|
499801
|
+
}
|
|
499802
|
+
/** Test / shutdown helper — drains the buffer. */
|
|
499803
|
+
reset() {
|
|
499804
|
+
this.ring = [];
|
|
499805
|
+
this.removeAllListeners();
|
|
499806
|
+
this.setMaxListeners(64);
|
|
499807
|
+
}
|
|
499808
|
+
};
|
|
499809
|
+
codeGraphEvents = new CodeGraphEventBus();
|
|
499810
|
+
}
|
|
499811
|
+
});
|
|
499812
|
+
|
|
499763
499813
|
// packages/execution/dist/tools/code-graph-client.js
|
|
499764
499814
|
import { existsSync as existsSync29, statSync as statSync10, readdirSync as readdirSync8 } from "node:fs";
|
|
499765
499815
|
import { join as join47, relative as relative5, sep } from "node:path";
|
|
@@ -499799,7 +499849,19 @@ function getCodeGraphDB(workingDir, opts = {}) {
|
|
|
499799
499849
|
const stats = db.getStats();
|
|
499800
499850
|
if (opts.force || stats.fileCount === 0) {
|
|
499801
499851
|
const files = collectSources(workingDir);
|
|
499802
|
-
|
|
499852
|
+
for (const rel of files) {
|
|
499853
|
+
const changed = db.indexFile(rel);
|
|
499854
|
+
if (changed) {
|
|
499855
|
+
const syms = db.getFileSymbols(rel);
|
|
499856
|
+
const imports = db.getImports(rel);
|
|
499857
|
+
emitIndexed({
|
|
499858
|
+
filePath: rel,
|
|
499859
|
+
hash: db.getFileHash(rel) ?? "",
|
|
499860
|
+
symbolCount: syms.length,
|
|
499861
|
+
importCount: imports.length
|
|
499862
|
+
});
|
|
499863
|
+
}
|
|
499864
|
+
}
|
|
499803
499865
|
}
|
|
499804
499866
|
cache4.set(workingDir, db);
|
|
499805
499867
|
return db;
|
|
@@ -499846,6 +499908,7 @@ var init_code_graph_client = __esm({
|
|
|
499846
499908
|
"packages/execution/dist/tools/code-graph-client.js"() {
|
|
499847
499909
|
"use strict";
|
|
499848
499910
|
init_dist4();
|
|
499911
|
+
init_code_graph_events();
|
|
499849
499912
|
INDEX_EXT_REGEX = /\.(ts|tsx|js|jsx|mjs|cjs|py)$/;
|
|
499850
499913
|
SKIP_DIRS = /* @__PURE__ */ new Set([
|
|
499851
499914
|
"node_modules",
|
|
@@ -499874,6 +499937,7 @@ var init_symbol_search = __esm({
|
|
|
499874
499937
|
"packages/execution/dist/tools/symbol-search.js"() {
|
|
499875
499938
|
"use strict";
|
|
499876
499939
|
init_code_graph_client();
|
|
499940
|
+
init_code_graph_events();
|
|
499877
499941
|
KIND_VALUES = /* @__PURE__ */ new Set([
|
|
499878
499942
|
"function",
|
|
499879
499943
|
"class",
|
|
@@ -499930,6 +499994,13 @@ var init_symbol_search = __esm({
|
|
|
499930
499994
|
const db = getCodeGraphDB(this.workingDir);
|
|
499931
499995
|
const rows = name10 ? db.getSymbolsByExactName(name10) : db.searchSymbols(pattern);
|
|
499932
499996
|
const filtered = (kind ? rows.filter((r2) => r2.kind === kind) : rows).slice(0, limit);
|
|
499997
|
+
const durationMs = Math.round(performance.now() - start2);
|
|
499998
|
+
emitQueried({
|
|
499999
|
+
tool: "symbol_search",
|
|
500000
|
+
argsPreview: name10 ? `name=${name10}` : `pattern=${pattern}${kind ? ` kind=${kind}` : ""}`,
|
|
500001
|
+
resultCount: filtered.length,
|
|
500002
|
+
durationMs
|
|
500003
|
+
});
|
|
499933
500004
|
if (filtered.length === 0) {
|
|
499934
500005
|
return {
|
|
499935
500006
|
success: true,
|
|
@@ -499966,6 +500037,7 @@ var init_impact_analysis = __esm({
|
|
|
499966
500037
|
"packages/execution/dist/tools/impact-analysis.js"() {
|
|
499967
500038
|
"use strict";
|
|
499968
500039
|
init_code_graph_client();
|
|
500040
|
+
init_code_graph_events();
|
|
499969
500041
|
ImpactAnalysisTool = class {
|
|
499970
500042
|
name = "impact_analysis";
|
|
499971
500043
|
description = "Estimate the blast radius of changing a file or symbol: which other files/symbols transitively depend on it (would need updating) and which it depends on. Useful before refactoring or deleting code. For symbols, also reports class/interface inheritors. Backed by the persistent code-graph; depth is bounded (default 2, max 5).";
|
|
@@ -500072,10 +500144,17 @@ var init_impact_analysis = __esm({
|
|
|
500072
500144
|
lines.push(` ... +${inheritors.length - 20} more`);
|
|
500073
500145
|
}
|
|
500074
500146
|
}
|
|
500147
|
+
const durationMs = Math.round(performance.now() - start2);
|
|
500148
|
+
emitQueried({
|
|
500149
|
+
tool: "impact_analysis",
|
|
500150
|
+
argsPreview: file ? `file=${file}` : `symbol=${symbol3} depth=${depth}`,
|
|
500151
|
+
resultCount: lines.length,
|
|
500152
|
+
durationMs
|
|
500153
|
+
});
|
|
500075
500154
|
return {
|
|
500076
500155
|
success: true,
|
|
500077
500156
|
output: lines.join("\n"),
|
|
500078
|
-
durationMs
|
|
500157
|
+
durationMs
|
|
500079
500158
|
};
|
|
500080
500159
|
} catch (err) {
|
|
500081
500160
|
return {
|
|
@@ -500096,6 +500175,7 @@ var init_code_neighbors = __esm({
|
|
|
500096
500175
|
"packages/execution/dist/tools/code-neighbors.js"() {
|
|
500097
500176
|
"use strict";
|
|
500098
500177
|
init_code_graph_client();
|
|
500178
|
+
init_code_graph_events();
|
|
500099
500179
|
KIND_VALUES2 = ["imports", "inherits", "calls"];
|
|
500100
500180
|
CodeNeighborsTool = class {
|
|
500101
500181
|
name = "code_neighbors";
|
|
@@ -500164,10 +500244,17 @@ var init_code_neighbors = __esm({
|
|
|
500164
500244
|
if (nodes.length > 40)
|
|
500165
500245
|
lines.push(` ... +${nodes.length - 40} more`);
|
|
500166
500246
|
}
|
|
500247
|
+
const durationMs = Math.round(performance.now() - t0);
|
|
500248
|
+
emitQueried({
|
|
500249
|
+
tool: "code_neighbors",
|
|
500250
|
+
argsPreview: `start=${start2} depth=${depth} kinds=[${(kinds.length ? kinds : KIND_VALUES2).join(",")}]`,
|
|
500251
|
+
resultCount: result.nodes.length,
|
|
500252
|
+
durationMs
|
|
500253
|
+
});
|
|
500167
500254
|
return {
|
|
500168
500255
|
success: true,
|
|
500169
500256
|
output: lines.join("\n"),
|
|
500170
|
-
durationMs
|
|
500257
|
+
durationMs
|
|
500171
500258
|
};
|
|
500172
500259
|
} catch (err) {
|
|
500173
500260
|
return {
|
|
@@ -509061,6 +509148,7 @@ __export(dist_exports, {
|
|
|
509061
509148
|
clearWorkingNotes: () => clearWorkingNotes,
|
|
509062
509149
|
closeAllCodeGraphDBs: () => closeAllCodeGraphDBs,
|
|
509063
509150
|
codeGraphDBExists: () => codeGraphDBExists,
|
|
509151
|
+
codeGraphEvents: () => codeGraphEvents,
|
|
509064
509152
|
collectSnapshot: () => collectSnapshot,
|
|
509065
509153
|
createAgentWorktree: () => createWorktree,
|
|
509066
509154
|
createFortemiBridgeTools: () => createFortemiBridgeTools,
|
|
@@ -509071,6 +509159,10 @@ __export(dist_exports, {
|
|
|
509071
509159
|
detectSearchProvider: () => detectSearchProvider,
|
|
509072
509160
|
discoverPlugins: () => discoverPlugins,
|
|
509073
509161
|
discoverSkills: () => discoverSkills,
|
|
509162
|
+
emitIndexed: () => emitIndexed,
|
|
509163
|
+
emitLinked: () => emitLinked,
|
|
509164
|
+
emitPruned: () => emitPruned,
|
|
509165
|
+
emitQueried: () => emitQueried,
|
|
509074
509166
|
ensureAllDesktopDeps: () => ensureAllDesktopDeps,
|
|
509075
509167
|
ensureCommand: () => ensureCommand,
|
|
509076
509168
|
ensureDepsForGroup: () => ensureDepsForGroup,
|
|
@@ -509222,6 +509314,7 @@ var init_dist5 = __esm({
|
|
|
509222
509314
|
init_impact_analysis();
|
|
509223
509315
|
init_code_neighbors();
|
|
509224
509316
|
init_code_graph_client();
|
|
509317
|
+
init_code_graph_events();
|
|
509225
509318
|
init_process_health();
|
|
509226
509319
|
init_camera_capture();
|
|
509227
509320
|
init_audio_capture();
|
|
@@ -514720,6 +514813,14 @@ function linkCodeSymbolsToKg(params) {
|
|
|
514720
514813
|
} catch {
|
|
514721
514814
|
}
|
|
514722
514815
|
}
|
|
514816
|
+
if (symbolNodesCreated > 0 || containsEdgesCreated > 0) {
|
|
514817
|
+
emitLinked({
|
|
514818
|
+
toolName: params.toolName,
|
|
514819
|
+
filePath: params.filePath,
|
|
514820
|
+
symbolNodesCreated,
|
|
514821
|
+
containsEdgesCreated
|
|
514822
|
+
});
|
|
514823
|
+
}
|
|
514723
514824
|
return { linked: true, fileNodeId, symbolNodesCreated, containsEdgesCreated };
|
|
514724
514825
|
} catch (err) {
|
|
514725
514826
|
return {
|
|
@@ -514733,6 +514834,7 @@ function linkCodeSymbolsToKg(params) {
|
|
|
514733
514834
|
var init_codeGraphLink = __esm({
|
|
514734
514835
|
"packages/orchestrator/dist/codeGraphLink.js"() {
|
|
514735
514836
|
"use strict";
|
|
514837
|
+
init_dist5();
|
|
514736
514838
|
}
|
|
514737
514839
|
});
|
|
514738
514840
|
|
|
@@ -523940,7 +524042,7 @@ import { existsSync as existsSync56, mkdirSync as mkdirSync32, writeFileSync as
|
|
|
523940
524042
|
import { join as join72, dirname as dirname20 } from "node:path";
|
|
523941
524043
|
import { homedir as homedir24 } from "node:os";
|
|
523942
524044
|
import { fileURLToPath as fileURLToPath10 } from "node:url";
|
|
523943
|
-
import { EventEmitter as
|
|
524045
|
+
import { EventEmitter as EventEmitter4 } from "node:events";
|
|
523944
524046
|
import { createInterface as createInterface2 } from "node:readline";
|
|
523945
524047
|
function isAudioPath(path6) {
|
|
523946
524048
|
const ext = path6.toLowerCase().split(".").pop();
|
|
@@ -524142,7 +524244,7 @@ var init_listen = __esm({
|
|
|
524142
524244
|
".m4v",
|
|
524143
524245
|
".ts"
|
|
524144
524246
|
]);
|
|
524145
|
-
WhisperFallbackTranscriber = class extends
|
|
524247
|
+
WhisperFallbackTranscriber = class extends EventEmitter4 {
|
|
524146
524248
|
constructor(model, scriptPath2) {
|
|
524147
524249
|
super();
|
|
524148
524250
|
this.model = model;
|
|
@@ -524251,7 +524353,7 @@ var init_listen = __esm({
|
|
|
524251
524353
|
this._ready = false;
|
|
524252
524354
|
}
|
|
524253
524355
|
};
|
|
524254
|
-
ListenEngine = class extends
|
|
524356
|
+
ListenEngine = class extends EventEmitter4 {
|
|
524255
524357
|
config;
|
|
524256
524358
|
micProcess = null;
|
|
524257
524359
|
liveTranscriber = null;
|
|
@@ -526909,7 +527011,7 @@ var require_extension3 = __commonJS({
|
|
|
526909
527011
|
var require_websocket3 = __commonJS({
|
|
526910
527012
|
"node_modules/.pnpm/ws@8.19.0/node_modules/ws/lib/websocket.js"(exports, module) {
|
|
526911
527013
|
"use strict";
|
|
526912
|
-
var
|
|
527014
|
+
var EventEmitter12 = __require("events");
|
|
526913
527015
|
var https4 = __require("https");
|
|
526914
527016
|
var http6 = __require("http");
|
|
526915
527017
|
var net5 = __require("net");
|
|
@@ -526941,7 +527043,7 @@ var require_websocket3 = __commonJS({
|
|
|
526941
527043
|
var protocolVersions = [8, 13];
|
|
526942
527044
|
var readyStates = ["CONNECTING", "OPEN", "CLOSING", "CLOSED"];
|
|
526943
527045
|
var subprotocolRegex = /^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/;
|
|
526944
|
-
var WebSocket6 = class _WebSocket extends
|
|
527046
|
+
var WebSocket6 = class _WebSocket extends EventEmitter12 {
|
|
526945
527047
|
/**
|
|
526946
527048
|
* Create a new `WebSocket`.
|
|
526947
527049
|
*
|
|
@@ -527938,7 +528040,7 @@ var require_subprotocol2 = __commonJS({
|
|
|
527938
528040
|
var require_websocket_server2 = __commonJS({
|
|
527939
528041
|
"node_modules/.pnpm/ws@8.19.0/node_modules/ws/lib/websocket-server.js"(exports, module) {
|
|
527940
528042
|
"use strict";
|
|
527941
|
-
var
|
|
528043
|
+
var EventEmitter12 = __require("events");
|
|
527942
528044
|
var http6 = __require("http");
|
|
527943
528045
|
var { Duplex: Duplex3 } = __require("stream");
|
|
527944
528046
|
var { createHash: createHash13 } = __require("crypto");
|
|
@@ -527951,7 +528053,7 @@ var require_websocket_server2 = __commonJS({
|
|
|
527951
528053
|
var RUNNING = 0;
|
|
527952
528054
|
var CLOSING = 1;
|
|
527953
528055
|
var CLOSED = 2;
|
|
527954
|
-
var WebSocketServer4 = class extends
|
|
528056
|
+
var WebSocketServer4 = class extends EventEmitter12 {
|
|
527955
528057
|
/**
|
|
527956
528058
|
* Create a `WebSocketServer` instance.
|
|
527957
528059
|
*
|
|
@@ -543930,6 +544032,25 @@ async function destroyOrphanProcesses(ctx3, global2) {
|
|
|
543930
544032
|
}
|
|
543931
544033
|
return killed;
|
|
543932
544034
|
}
|
|
544035
|
+
function formatCodegraphEventLine(ev) {
|
|
544036
|
+
const pathTail = (p2, max = 60) => {
|
|
544037
|
+
const s2 = String(p2 ?? "");
|
|
544038
|
+
if (s2.length <= max) return s2;
|
|
544039
|
+
return "…" + s2.slice(s2.length - max + 1);
|
|
544040
|
+
};
|
|
544041
|
+
switch (ev.type) {
|
|
544042
|
+
case "indexed":
|
|
544043
|
+
return `indexed ${pathTail(ev["filePath"])} (${ev["symbolCount"]} sym, ${ev["importCount"]} imp)`;
|
|
544044
|
+
case "linked":
|
|
544045
|
+
return `linked ${pathTail(ev["filePath"])} via ${ev["toolName"]} (+${ev["symbolNodesCreated"]} sym, +${ev["containsEdgesCreated"]} edges)`;
|
|
544046
|
+
case "queried":
|
|
544047
|
+
return `queried ${ev["tool"]} ${pathTail(ev["argsPreview"], 80)} → ${ev["resultCount"]} (${ev["durationMs"]}ms)`;
|
|
544048
|
+
case "pruned":
|
|
544049
|
+
return `pruned ${pathTail(ev["filePath"])} reason=${ev["reason"]}`;
|
|
544050
|
+
default:
|
|
544051
|
+
return `${ev.type} ${JSON.stringify(ev).slice(0, 120)}`;
|
|
544052
|
+
}
|
|
544053
|
+
}
|
|
543933
544054
|
async function handleSlashCommand(input, ctx3) {
|
|
543934
544055
|
const trimmed = input.trim();
|
|
543935
544056
|
if (!trimmed.startsWith("/")) return "not_a_command";
|
|
@@ -547366,6 +547487,109 @@ sleep 1
|
|
|
547366
547487
|
renderInfo2(" Add --local to scope settings to this project only");
|
|
547367
547488
|
return "handled";
|
|
547368
547489
|
}
|
|
547490
|
+
case "codegraph":
|
|
547491
|
+
case "cg": {
|
|
547492
|
+
const tokens = (arg || "").trim().length ? (arg || "").trim().split(/\s+/) : [];
|
|
547493
|
+
const sub = (tokens[0] || "show").toLowerCase();
|
|
547494
|
+
const base3 = `http://127.0.0.1:${process.env["OA_PORT"] || "11435"}`;
|
|
547495
|
+
const authHeaders = () => {
|
|
547496
|
+
const token = process.env["OA_API_KEY"] || "";
|
|
547497
|
+
return token ? { Authorization: `Bearer ${token}` } : {};
|
|
547498
|
+
};
|
|
547499
|
+
if (sub === "show" || sub === "status") {
|
|
547500
|
+
try {
|
|
547501
|
+
const resp = await fetch(`${base3}/v1/codegraph/snapshot`, { headers: authHeaders() });
|
|
547502
|
+
if (!resp.ok) {
|
|
547503
|
+
renderWarning2(`Code-graph snapshot HTTP ${resp.status}. Is the daemon running?`);
|
|
547504
|
+
return "handled";
|
|
547505
|
+
}
|
|
547506
|
+
const snap = await resp.json();
|
|
547507
|
+
renderInfo2(
|
|
547508
|
+
`Code Graph: ${snap.stats.fileCount} files, ${snap.stats.symbolCount} symbols, ${snap.stats.edgeCount} edges` + (snap.stats.lastFullIndex ? ` • last index ${snap.stats.lastFullIndex}` : "")
|
|
547509
|
+
);
|
|
547510
|
+
if (snap.stats.fileCount === 0) {
|
|
547511
|
+
renderInfo2("Index is empty. Trigger a build via symbol_search / impact_analysis / code_neighbors, or run any agent task that touches code.");
|
|
547512
|
+
return "handled";
|
|
547513
|
+
}
|
|
547514
|
+
renderInfo2("");
|
|
547515
|
+
renderInfo2("Top files (by imported-by count):");
|
|
547516
|
+
for (const f2 of snap.topFiles.slice(0, 10)) {
|
|
547517
|
+
renderInfo2(` ${String(f2.importCount).padStart(3)} importers ${String(f2.symbolCount).padStart(3)} symbols ${f2.path}`);
|
|
547518
|
+
}
|
|
547519
|
+
renderInfo2("");
|
|
547520
|
+
renderInfo2(`Recent events (${snap.recent.length} buffered):`);
|
|
547521
|
+
if (snap.recent.length === 0) {
|
|
547522
|
+
renderInfo2(" (none yet — use /codegraph watch to see events live)");
|
|
547523
|
+
} else {
|
|
547524
|
+
const tail = snap.recent.slice(-8);
|
|
547525
|
+
for (const ev of tail) {
|
|
547526
|
+
const ago = Math.max(0, Math.round((Date.now() - ev.timestamp) / 1e3));
|
|
547527
|
+
const detail = formatCodegraphEventLine(ev);
|
|
547528
|
+
renderInfo2(` [${String(ago).padStart(3)}s ago] ${detail}`);
|
|
547529
|
+
}
|
|
547530
|
+
}
|
|
547531
|
+
} catch (err) {
|
|
547532
|
+
renderError2(`/codegraph failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
547533
|
+
}
|
|
547534
|
+
return "handled";
|
|
547535
|
+
}
|
|
547536
|
+
if (sub === "watch") {
|
|
547537
|
+
const seconds = Math.max(1, Math.min(600, Number(tokens[1]) || 30));
|
|
547538
|
+
renderInfo2(`Watching /v1/codegraph/events for ${seconds}s (Ctrl+C to stop early)...`);
|
|
547539
|
+
const ac = new AbortController();
|
|
547540
|
+
const deadline = Date.now() + seconds * 1e3;
|
|
547541
|
+
setTimeout(() => ac.abort(), seconds * 1e3);
|
|
547542
|
+
try {
|
|
547543
|
+
const resp = await fetch(`${base3}/v1/codegraph/events`, {
|
|
547544
|
+
headers: authHeaders(),
|
|
547545
|
+
signal: ac.signal
|
|
547546
|
+
});
|
|
547547
|
+
if (!resp.ok || !resp.body) {
|
|
547548
|
+
renderWarning2(`Code-graph events HTTP ${resp.status}. Is the daemon running?`);
|
|
547549
|
+
return "handled";
|
|
547550
|
+
}
|
|
547551
|
+
const reader = resp.body.getReader();
|
|
547552
|
+
const decoder = new TextDecoder();
|
|
547553
|
+
let buf = "";
|
|
547554
|
+
let frames = 0;
|
|
547555
|
+
try {
|
|
547556
|
+
while (Date.now() < deadline) {
|
|
547557
|
+
const { value: value2, done } = await reader.read();
|
|
547558
|
+
if (done) break;
|
|
547559
|
+
buf += decoder.decode(value2, { stream: true });
|
|
547560
|
+
let idx;
|
|
547561
|
+
while ((idx = buf.indexOf("\n\n")) >= 0) {
|
|
547562
|
+
const frame = buf.slice(0, idx);
|
|
547563
|
+
buf = buf.slice(idx + 2);
|
|
547564
|
+
const dataLine = frame.split("\n").find((l2) => l2.startsWith("data: "));
|
|
547565
|
+
if (!dataLine) continue;
|
|
547566
|
+
try {
|
|
547567
|
+
const ev = JSON.parse(dataLine.slice(6));
|
|
547568
|
+
renderInfo2(` ${formatCodegraphEventLine(ev)}`);
|
|
547569
|
+
frames++;
|
|
547570
|
+
} catch {
|
|
547571
|
+
}
|
|
547572
|
+
}
|
|
547573
|
+
}
|
|
547574
|
+
} finally {
|
|
547575
|
+
try {
|
|
547576
|
+
reader.cancel();
|
|
547577
|
+
} catch {
|
|
547578
|
+
}
|
|
547579
|
+
}
|
|
547580
|
+
renderInfo2(`Watch ended. ${frames} event(s) observed.`);
|
|
547581
|
+
} catch (err) {
|
|
547582
|
+
if (err?.name !== "AbortError") {
|
|
547583
|
+
renderError2(`/codegraph watch failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
547584
|
+
}
|
|
547585
|
+
}
|
|
547586
|
+
return "handled";
|
|
547587
|
+
}
|
|
547588
|
+
renderInfo2("Usage: /codegraph [show|watch [seconds]]");
|
|
547589
|
+
renderInfo2(" show One-shot snapshot of index state + recent events (default).");
|
|
547590
|
+
renderInfo2(" watch [N] Subscribe to SSE events for N seconds (default 30, max 600).");
|
|
547591
|
+
return "handled";
|
|
547592
|
+
}
|
|
547369
547593
|
default: {
|
|
547370
547594
|
const skills = discoverSkills(ctx3.repoRoot);
|
|
547371
547595
|
const skill = skills.find(
|
|
@@ -552095,6 +552319,9 @@ var init_render2 = __esm({
|
|
|
552095
552319
|
["/scheduler menu", "Interactive scheduler menu (toggle/kill)"],
|
|
552096
552320
|
["/scheduler list", "List all scheduled tasks and timers"],
|
|
552097
552321
|
["/scheduler kill", "Kill schedulers + active runs (with escalation if needed)"],
|
|
552322
|
+
["/codegraph", "Code-graph snapshot: stats, top files, recent activity"],
|
|
552323
|
+
["/codegraph watch [N]", "Subscribe to live code-graph events for N seconds (default 30)"],
|
|
552324
|
+
["/cg", "Alias for /codegraph"],
|
|
552098
552325
|
["/host <host[:port]>", "Set bind host:port (OA_HOST) and restart daemon"],
|
|
552099
552326
|
["/network config", "Interactive network access menu"],
|
|
552100
552327
|
["/p2p start", "Join the P2P agent mesh network"],
|
|
@@ -552122,7 +552349,7 @@ var init_render2 = __esm({
|
|
|
552122
552349
|
// packages/cli/src/tui/voice-session.ts
|
|
552123
552350
|
import { createServer as createServer3 } from "node:http";
|
|
552124
552351
|
import { spawn as spawn22, execSync as execSync50 } from "node:child_process";
|
|
552125
|
-
import { EventEmitter as
|
|
552352
|
+
import { EventEmitter as EventEmitter5 } from "node:events";
|
|
552126
552353
|
function generateFrontendHTML() {
|
|
552127
552354
|
return `<!DOCTYPE html>
|
|
552128
552355
|
<html lang="en">
|
|
@@ -552856,7 +553083,7 @@ var init_voice_session = __esm({
|
|
|
552856
553083
|
"use strict";
|
|
552857
553084
|
init_wrapper2();
|
|
552858
553085
|
init_render2();
|
|
552859
|
-
VoiceSession = class extends
|
|
553086
|
+
VoiceSession = class extends EventEmitter5 {
|
|
552860
553087
|
state;
|
|
552861
553088
|
server = null;
|
|
552862
553089
|
wss = null;
|
|
@@ -553240,7 +553467,7 @@ var init_voice_session = __esm({
|
|
|
553240
553467
|
// packages/cli/src/tui/expose.ts
|
|
553241
553468
|
import { createServer as createServer4, request as httpRequest } from "node:http";
|
|
553242
553469
|
import { spawn as spawn23, exec as exec4 } from "node:child_process";
|
|
553243
|
-
import { EventEmitter as
|
|
553470
|
+
import { EventEmitter as EventEmitter6 } from "node:events";
|
|
553244
553471
|
import { randomBytes as randomBytes17 } from "node:crypto";
|
|
553245
553472
|
import { URL as URL2 } from "node:url";
|
|
553246
553473
|
import { loadavg as loadavg3, cpus as cpus4, totalmem as totalmem5, freemem as freemem4 } from "node:os";
|
|
@@ -553429,7 +553656,7 @@ var init_expose = __esm({
|
|
|
553429
553656
|
custom: "http://127.0.0.1:11434"
|
|
553430
553657
|
};
|
|
553431
553658
|
STATE_FILE_NAME = "expose-state.json";
|
|
553432
|
-
ExposeGateway = class _ExposeGateway extends
|
|
553659
|
+
ExposeGateway = class _ExposeGateway extends EventEmitter6 {
|
|
553433
553660
|
constructor(options2) {
|
|
553434
553661
|
super();
|
|
553435
553662
|
this.options = options2;
|
|
@@ -554284,7 +554511,7 @@ ${this.formatConnectionInfo()}`);
|
|
|
554284
554511
|
}
|
|
554285
554512
|
};
|
|
554286
554513
|
P2P_STATE_FILE_NAME = "expose-p2p-state.json";
|
|
554287
|
-
ExposeP2PGateway = class _ExposeP2PGateway extends
|
|
554514
|
+
ExposeP2PGateway = class _ExposeP2PGateway extends EventEmitter6 {
|
|
554288
554515
|
_nexusTool;
|
|
554289
554516
|
// NexusTool instance
|
|
554290
554517
|
_kind;
|
|
@@ -555055,7 +555282,7 @@ var init_secret_vault = __esm({
|
|
|
555055
555282
|
});
|
|
555056
555283
|
|
|
555057
555284
|
// packages/cli/src/tui/p2p/peer-mesh.ts
|
|
555058
|
-
import { EventEmitter as
|
|
555285
|
+
import { EventEmitter as EventEmitter7 } from "node:events";
|
|
555059
555286
|
import { createServer as createServer5 } from "node:http";
|
|
555060
555287
|
import { randomBytes as randomBytes19, createHash as createHash9, generateKeyPairSync } from "node:crypto";
|
|
555061
555288
|
var PING_INTERVAL_MS, PEER_TIMEOUT_MS, GOSSIP_INTERVAL_MS, MAX_PEERS, PeerMesh;
|
|
@@ -555067,7 +555294,7 @@ var init_peer_mesh = __esm({
|
|
|
555067
555294
|
PEER_TIMEOUT_MS = 9e4;
|
|
555068
555295
|
GOSSIP_INTERVAL_MS = 6e4;
|
|
555069
555296
|
MAX_PEERS = 50;
|
|
555070
|
-
PeerMesh = class extends
|
|
555297
|
+
PeerMesh = class extends EventEmitter7 {
|
|
555071
555298
|
constructor(options2) {
|
|
555072
555299
|
super();
|
|
555073
555300
|
this.options = options2;
|
|
@@ -555513,7 +555740,7 @@ var init_peer_mesh = __esm({
|
|
|
555513
555740
|
});
|
|
555514
555741
|
|
|
555515
555742
|
// packages/cli/src/tui/p2p/inference-router.ts
|
|
555516
|
-
import { EventEmitter as
|
|
555743
|
+
import { EventEmitter as EventEmitter8 } from "node:events";
|
|
555517
555744
|
var TRUST_WEIGHTS, InferenceRouter;
|
|
555518
555745
|
var init_inference_router = __esm({
|
|
555519
555746
|
"packages/cli/src/tui/p2p/inference-router.ts"() {
|
|
@@ -555525,7 +555752,7 @@ var init_inference_router = __esm({
|
|
|
555525
555752
|
verified: 5,
|
|
555526
555753
|
public: 2
|
|
555527
555754
|
};
|
|
555528
|
-
InferenceRouter = class extends
|
|
555755
|
+
InferenceRouter = class extends EventEmitter8 {
|
|
555529
555756
|
mesh;
|
|
555530
555757
|
vault;
|
|
555531
555758
|
defaultTimeoutMs;
|
|
@@ -555723,7 +555950,7 @@ var init_p2p = __esm({
|
|
|
555723
555950
|
});
|
|
555724
555951
|
|
|
555725
555952
|
// packages/cli/src/tui/call-agent.ts
|
|
555726
|
-
import { EventEmitter as
|
|
555953
|
+
import { EventEmitter as EventEmitter9 } from "node:events";
|
|
555727
555954
|
import crypto13 from "node:crypto";
|
|
555728
555955
|
function adaptTool(tool) {
|
|
555729
555956
|
return {
|
|
@@ -555781,7 +556008,7 @@ var init_call_agent = __esm({
|
|
|
555781
556008
|
}
|
|
555782
556009
|
};
|
|
555783
556010
|
_globalFeed = null;
|
|
555784
|
-
CallSubAgent = class extends
|
|
556011
|
+
CallSubAgent = class extends EventEmitter9 {
|
|
555785
556012
|
tier;
|
|
555786
556013
|
clientId;
|
|
555787
556014
|
runner = null;
|
|
@@ -563371,12 +563598,12 @@ var direct_input_exports = {};
|
|
|
563371
563598
|
__export(direct_input_exports, {
|
|
563372
563599
|
DirectInput: () => DirectInput
|
|
563373
563600
|
});
|
|
563374
|
-
import { EventEmitter as
|
|
563601
|
+
import { EventEmitter as EventEmitter10 } from "node:events";
|
|
563375
563602
|
var DirectInput;
|
|
563376
563603
|
var init_direct_input = __esm({
|
|
563377
563604
|
"packages/cli/src/tui/direct-input.ts"() {
|
|
563378
563605
|
"use strict";
|
|
563379
|
-
DirectInput = class extends
|
|
563606
|
+
DirectInput = class extends EventEmitter10 {
|
|
563380
563607
|
/** Current input line text */
|
|
563381
563608
|
line = "";
|
|
563382
563609
|
/** Cursor position within .line (0-based) */
|
|
@@ -574561,6 +574788,54 @@ async function handleRequest(req2, res, ollamaUrl, verbose) {
|
|
|
574561
574788
|
});
|
|
574562
574789
|
return;
|
|
574563
574790
|
}
|
|
574791
|
+
if (pathname === "/v1/codegraph/snapshot" && method === "GET") {
|
|
574792
|
+
const workingDir = process.cwd();
|
|
574793
|
+
const db = getCodeGraphDBIfReady(workingDir);
|
|
574794
|
+
const stats = db ? db.getStats() : { fileCount: 0, symbolCount: 0, edgeCount: 0, lastFullIndex: null };
|
|
574795
|
+
const topFiles = db ? db.getTopFiles(15) : [];
|
|
574796
|
+
const recent = codeGraphEvents.recent(50);
|
|
574797
|
+
jsonResponse(res, 200, { stats, topFiles, recent });
|
|
574798
|
+
return;
|
|
574799
|
+
}
|
|
574800
|
+
if (pathname === "/v1/codegraph/events" && method === "GET") {
|
|
574801
|
+
res.writeHead(200, {
|
|
574802
|
+
"Content-Type": "text/event-stream",
|
|
574803
|
+
"Cache-Control": "no-cache",
|
|
574804
|
+
"Connection": "keep-alive",
|
|
574805
|
+
"X-Accel-Buffering": "no"
|
|
574806
|
+
});
|
|
574807
|
+
res.write(": connected\n\n");
|
|
574808
|
+
const onEvent = (ev) => {
|
|
574809
|
+
try {
|
|
574810
|
+
res.write(`event: ${ev.type}
|
|
574811
|
+
`);
|
|
574812
|
+
res.write(`data: ${JSON.stringify(ev)}
|
|
574813
|
+
|
|
574814
|
+
`);
|
|
574815
|
+
} catch {
|
|
574816
|
+
}
|
|
574817
|
+
};
|
|
574818
|
+
codeGraphEvents.on("event", onEvent);
|
|
574819
|
+
const keepAlive = setInterval(() => {
|
|
574820
|
+
try {
|
|
574821
|
+
res.write(`: keepalive ${Date.now()}
|
|
574822
|
+
|
|
574823
|
+
`);
|
|
574824
|
+
} catch {
|
|
574825
|
+
}
|
|
574826
|
+
}, 15e3);
|
|
574827
|
+
const cleanup = () => {
|
|
574828
|
+
clearInterval(keepAlive);
|
|
574829
|
+
codeGraphEvents.off("event", onEvent);
|
|
574830
|
+
try {
|
|
574831
|
+
res.end();
|
|
574832
|
+
} catch {
|
|
574833
|
+
}
|
|
574834
|
+
};
|
|
574835
|
+
req2.on("close", cleanup);
|
|
574836
|
+
req2.on("error", cleanup);
|
|
574837
|
+
return;
|
|
574838
|
+
}
|
|
574564
574839
|
if (pathname === "/v1/scheduled" && method === "GET") {
|
|
574565
574840
|
jsonResponse(res, 200, { tasks: listScheduledTasks() });
|
|
574566
574841
|
return;
|
|
@@ -576915,7 +577190,7 @@ var voicechat_exports = {};
|
|
|
576915
577190
|
__export(voicechat_exports, {
|
|
576916
577191
|
VoiceChatSession: () => VoiceChatSession
|
|
576917
577192
|
});
|
|
576918
|
-
import { EventEmitter as
|
|
577193
|
+
import { EventEmitter as EventEmitter11 } from "node:events";
|
|
576919
577194
|
function clamp01(x) {
|
|
576920
577195
|
return x < 0 ? 0 : x > 1 ? 1 : x;
|
|
576921
577196
|
}
|
|
@@ -577025,7 +577300,7 @@ Rules:
|
|
|
577025
577300
|
- Prefer tools for factual queries; otherwise, answer directly with a short reply.`;
|
|
577026
577301
|
MIN_SIGNAL_SCORE = 0.4;
|
|
577027
577302
|
NOISE_ONLY_RE = /^(?:[.·…\s,;:!?\-–—_()\[\]{}"'`]+|(?:uh|um|erm|hmm|mm+|uhh+|umm+)[\s.!?]*)+$/i;
|
|
577028
|
-
VoiceChatSession = class extends
|
|
577303
|
+
VoiceChatSession = class extends EventEmitter11 {
|
|
577029
577304
|
voice;
|
|
577030
577305
|
listen;
|
|
577031
577306
|
backendUrl;
|
package/package.json
CHANGED