@yeaft/webchat-agent 1.0.456 → 1.0.457
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/connection/message-router.js +21 -2
- package/local-runtime/server/handlers/agent-sync.js +19 -0
- package/local-runtime/server/handlers/client-misc.js +8 -0
- package/local-runtime/server/ws-utils.js +1 -0
- package/local-runtime/version.json +1 -1
- package/local-runtime/web/app.bundle.js +33 -32
- package/local-runtime/web/app.bundle.js.gz +0 -0
- package/local-runtime/web/index.html +2 -2
- package/local-runtime/web/style.bundle.css +1 -1
- package/local-runtime/web/style.bundle.css.gz +0 -0
- package/package.json +1 -1
- package/yeaft/config.js +2 -0
- package/yeaft/dream/session-wiring.js +21 -4
- package/yeaft/session.js +2 -0
|
Binary file
|
package/package.json
CHANGED
package/yeaft/config.js
CHANGED
|
@@ -377,6 +377,7 @@ function loadLegacyConfig(dir, overrides) {
|
|
|
377
377
|
// task-318: legacy path never had the `yeaft` section — defaults.
|
|
378
378
|
yeaft: normaliseYeaftSection(null),
|
|
379
379
|
telemetry: normaliseTelemetrySection(null),
|
|
380
|
+
dream: { enabled: true },
|
|
380
381
|
browserRuntime: normaliseBrowserRuntimeSection(null),
|
|
381
382
|
plugins: {},
|
|
382
383
|
providers: null,
|
|
@@ -534,6 +535,7 @@ export function loadConfig(overrides = {}) {
|
|
|
534
535
|
// don't pollute the flat config namespace used by chat code.
|
|
535
536
|
yeaft: normaliseYeaftSection(jsonConfig.yeaft),
|
|
536
537
|
telemetry: normaliseTelemetrySection(jsonConfig.telemetry),
|
|
538
|
+
dream: { enabled: jsonConfig.dream?.enabled !== false },
|
|
537
539
|
browserRuntime: normaliseBrowserRuntimeSection(jsonConfig.browserRuntime),
|
|
538
540
|
|
|
539
541
|
// Agent-level tools / skills / MCP server allowlists. Missing fields mean
|
|
@@ -668,8 +668,8 @@ export function createV2DreamScheduler(session) {
|
|
|
668
668
|
keepAlive: !!session?.config?.serverMode,
|
|
669
669
|
logger: session.config?.debug ? console : undefined,
|
|
670
670
|
});
|
|
671
|
-
|
|
672
|
-
v2.start();
|
|
671
|
+
let enabled = session?.config?.dream?.enabled !== false;
|
|
672
|
+
if (enabled) v2.start();
|
|
673
673
|
|
|
674
674
|
// task-710: wire `noteUserMessage` to a real per-session message
|
|
675
675
|
// counter. When the count crosses DREAM_NUDGE_AFTER_MESSAGES (default
|
|
@@ -685,6 +685,7 @@ export function createV2DreamScheduler(session) {
|
|
|
685
685
|
// immediately, defeating the 50-message guarantee.
|
|
686
686
|
let messagesSinceLastNudgeFire = 0;
|
|
687
687
|
function nudgeOnUserMessage() {
|
|
688
|
+
if (!enabled) return;
|
|
688
689
|
messagesSinceLastNudgeFire += 1;
|
|
689
690
|
if (messagesSinceLastNudgeFire < DREAM_NUDGE_AFTER_MESSAGES) return;
|
|
690
691
|
if (v2.isRunning()) {
|
|
@@ -709,8 +710,20 @@ export function createV2DreamScheduler(session) {
|
|
|
709
710
|
* below threshold are skipped — same shape as the interval timer
|
|
710
711
|
* tick. Used by `bootCatchUpStaleDream`.
|
|
711
712
|
*/
|
|
712
|
-
catchUpNudge() {
|
|
713
|
+
catchUpNudge() {
|
|
714
|
+
return enabled ? v2.nudge() : Promise.resolve({ skipped: true, skippedReason: 'disabled', trigger: 'auto' });
|
|
715
|
+
},
|
|
716
|
+
setEnabled(nextEnabled) {
|
|
717
|
+
enabled = nextEnabled !== false;
|
|
718
|
+
if (enabled) v2.start();
|
|
719
|
+
else {
|
|
720
|
+
messagesSinceLastNudgeFire = 0;
|
|
721
|
+
v2.stop();
|
|
722
|
+
}
|
|
723
|
+
return enabled;
|
|
724
|
+
},
|
|
713
725
|
shutdown() { v2.stop(); },
|
|
726
|
+
get enabled() { return enabled; },
|
|
714
727
|
get isRunning() { return v2.isRunning(); },
|
|
715
728
|
// Preserve direct access for tests.
|
|
716
729
|
_v2: v2,
|
|
@@ -727,12 +740,16 @@ export function createV2DreamScheduler(session) {
|
|
|
727
740
|
* Pure side-effect, fire-and-forget. Failure logs at debug only — never
|
|
728
741
|
* blocks session load.
|
|
729
742
|
*
|
|
730
|
-
* @param {{ yeaftDir: string, memoryIndex: import('../memory/index-db.js').SegmentIndex|null, dreamScheduler: { triggerDreamForScopes: (s:string[]) => Promise<any> }, config?: { debug?: boolean } }} args
|
|
743
|
+
* @param {{ yeaftDir: string, memoryIndex: import('../memory/index-db.js').SegmentIndex|null, dreamScheduler: { triggerDreamForScopes: (s:string[]) => Promise<any> }, config?: { debug?: boolean, dream?: { enabled?: boolean } } }} args
|
|
731
744
|
* @returns {Promise<{ triggered: string[] }>}
|
|
732
745
|
*/
|
|
733
746
|
export async function bootInitEmptyGroups(args) {
|
|
734
747
|
const out = { triggered: [] };
|
|
735
748
|
if (!args || !args.memoryIndex || !args.dreamScheduler) return out;
|
|
749
|
+
// This is automatic boot catch-up, not an explicit user trigger. The
|
|
750
|
+
// scheduler's scoped trigger intentionally remains manual-capable while
|
|
751
|
+
// disabled, so enforce the Agent toggle at this automatic entry point.
|
|
752
|
+
if (args.config?.dream?.enabled === false) return out;
|
|
736
753
|
const sessionsRoot = join(args.yeaftDir, 'sessions');
|
|
737
754
|
let ids;
|
|
738
755
|
try { ids = listSessionMetas(sessionsRoot).map(g => g.id); }
|
package/yeaft/session.js
CHANGED
|
@@ -136,6 +136,7 @@ export async function loadSession(options = {}) {
|
|
|
136
136
|
extraTools = [],
|
|
137
137
|
configOverrides = {},
|
|
138
138
|
serverMode = false,
|
|
139
|
+
dreamEnabled,
|
|
139
140
|
managedCliReady = null,
|
|
140
141
|
} = options;
|
|
141
142
|
|
|
@@ -172,6 +173,7 @@ export async function loadSession(options = {}) {
|
|
|
172
173
|
// can decide whether to keep its interval timer alive (server) or
|
|
173
174
|
// unref it (CLI / tests). Non-persisted — set per-session by caller.
|
|
174
175
|
if (serverMode) config.serverMode = true;
|
|
176
|
+
if (typeof dreamEnabled === 'boolean') config.dream.enabled = dreamEnabled;
|
|
175
177
|
|
|
176
178
|
// Propagate the (clamped) cold-start replay window to the conversation
|
|
177
179
|
// store. The default is 20 turns; a user wanting more recall after a
|