@starlight-ai/discord-waifus 1.0.9 → 1.1.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.
@@ -145,9 +145,9 @@ async function stopCommand(dataRoot, options = {}) {
145
145
  return 0;
146
146
  }
147
147
  process.kill(pidState.pid, "SIGTERM");
148
- const stopped = await waitForExit(pidState.pid, 5_000);
148
+ const stopped = await waitForExit(pidState.pid, 10_000);
149
149
  if (!stopped) {
150
- console.error(`pid ${pidState.pid} did not stop within 5s`);
150
+ console.error(`pid ${pidState.pid} did not stop within 10s`);
151
151
  return 1;
152
152
  }
153
153
  await rm(appDataPath(dataRoot, "pid.json"), { force: true });
@@ -1 +1 @@
1
- {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/cli/commands.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/cli/commands.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,6 @@
1
1
  export declare function splitWaifuReply(content: string): string[];
2
+ export declare function planWaifuReplyChunks(chunks: string[]): {
3
+ immediateChunks: string[];
4
+ cachedChunks: string[];
5
+ };
2
6
  export declare function typingDelayMs(chunk: string): number;
@@ -7,10 +7,25 @@ export function splitWaifuReply(content) {
7
7
  .map((chunk) => chunk.trim())
8
8
  .filter((chunk) => chunk.length > 0);
9
9
  }
10
+ const IMMEDIATE_CHUNK_LIMIT = 2;
11
+ const SHORT_THIRD_CHUNK_CHAR_LIMIT = 18;
12
+ export function planWaifuReplyChunks(chunks) {
13
+ const immediateLimit = chunks[IMMEDIATE_CHUNK_LIMIT] &&
14
+ characterCount(chunks[IMMEDIATE_CHUNK_LIMIT]) < SHORT_THIRD_CHUNK_CHAR_LIMIT
15
+ ? IMMEDIATE_CHUNK_LIMIT + 1
16
+ : IMMEDIATE_CHUNK_LIMIT;
17
+ return {
18
+ immediateChunks: chunks.slice(0, immediateLimit),
19
+ cachedChunks: chunks.slice(immediateLimit)
20
+ };
21
+ }
10
22
  const MS_PER_CHAR = 30;
11
23
  const MIN_DELAY_MS = 600;
12
24
  const MAX_DELAY_MS = 4500;
13
25
  export function typingDelayMs(chunk) {
14
26
  return Math.min(MAX_DELAY_MS, Math.max(MIN_DELAY_MS, chunk.length * MS_PER_CHAR));
15
27
  }
28
+ function characterCount(value) {
29
+ return Array.from(value).length;
30
+ }
16
31
  //# sourceMappingURL=messageSplit.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"messageSplit.js","sourceRoot":"","sources":["../../src/orchestration/messageSplit.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,eAAe,CAAC,OAAe;IAC7C,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAC/B,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IACxB,OAAO,OAAO;SACX,KAAK,CAAC,eAAe,CAAC;SACtB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;SAC5B,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,WAAW,GAAG,EAAE,CAAC;AACvB,MAAM,YAAY,GAAG,GAAG,CAAC;AACzB,MAAM,YAAY,GAAG,IAAI,CAAC;AAE1B,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,OAAO,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,CAAC,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC;AACpF,CAAC"}
1
+ {"version":3,"file":"messageSplit.js","sourceRoot":"","sources":["../../src/orchestration/messageSplit.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,eAAe,CAAC,OAAe;IAC7C,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAC/B,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IACxB,OAAO,OAAO;SACX,KAAK,CAAC,eAAe,CAAC;SACtB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;SAC5B,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,qBAAqB,GAAG,CAAC,CAAC;AAChC,MAAM,4BAA4B,GAAG,EAAE,CAAC;AAExC,MAAM,UAAU,oBAAoB,CAAC,MAAgB;IAInD,MAAM,cAAc,GAClB,MAAM,CAAC,qBAAqB,CAAC;QAC7B,cAAc,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,GAAG,4BAA4B;QAC1E,CAAC,CAAC,qBAAqB,GAAG,CAAC;QAC3B,CAAC,CAAC,qBAAqB,CAAC;IAE5B,OAAO;QACL,eAAe,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC;QAChD,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC;KAC3C,CAAC;AACJ,CAAC;AAED,MAAM,WAAW,GAAG,EAAE,CAAC;AACvB,MAAM,YAAY,GAAG,GAAG,CAAC;AACzB,MAAM,YAAY,GAAG,IAAI,CAAC;AAE1B,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,OAAO,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,CAAC,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC;AACpF,CAAC;AAED,SAAS,cAAc,CAAC,KAAa;IACnC,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;AAClC,CAAC"}
@@ -8,6 +8,7 @@ export type RuntimeOrchestratorOptions = {
8
8
  discord: DiscordGatewayFacade;
9
9
  logger: Logger;
10
10
  maxAutomaticTurns?: number;
11
+ continuationIdleMs?: number;
11
12
  isPaused?: () => boolean;
12
13
  onActiveRunsChange?: (activeRuns: number) => void;
13
14
  createPipeline?: (modelId: string, credentials: PipelineCredentials) => ModelPipeline;
@@ -17,7 +18,9 @@ export declare class RuntimeOrchestrator {
17
18
  private readonly options;
18
19
  private readonly activeRuns;
19
20
  private readonly retriggerTimers;
21
+ private readonly continuationTimers;
20
22
  private readonly maxAutomaticTurns;
23
+ private readonly continuationIdleMs;
21
24
  private readonly createPipeline;
22
25
  private readonly sleep;
23
26
  private readonly recentSelfSentIds;
@@ -26,6 +29,7 @@ export declare class RuntimeOrchestrator {
26
29
  private readonly activeReviewerRuns;
27
30
  private readonly channelRunVersions;
28
31
  private static readonly SELF_SENT_TTL_MS;
32
+ private static readonly CONTINUATION_IDLE_MS;
29
33
  private unsubscribes;
30
34
  constructor(options: RuntimeOrchestratorOptions);
31
35
  start(): Promise<void>;
@@ -51,6 +55,14 @@ export declare class RuntimeOrchestrator {
51
55
  private clearLatestMessages;
52
56
  private applyStageManagerCalls;
53
57
  private scheduleRetrigger;
58
+ private sendCachedContinuationForSelection;
59
+ private sendCachedWaifuContinuation;
60
+ private sendCachedContinuationAfterIdle;
61
+ private cacheWaifuContinuation;
62
+ private clearCachedWaifuContinuation;
63
+ private scheduleContinuationTimer;
64
+ private setContinuationTimer;
65
+ private sendWaifuChunks;
54
66
  private setActivePipeline;
55
67
  private rememberSelfSent;
56
68
  private wasSelfSent;
@@ -68,6 +80,7 @@ export declare class RuntimeOrchestrator {
68
80
  private ensureChannelConfig;
69
81
  private channelHasWaifus;
70
82
  private ensureChannelSession;
83
+ private readChannelSession;
71
84
  private updateSession;
72
85
  private appendOrchestratorHistory;
73
86
  private appendStageManagerHistory;
@@ -2,7 +2,7 @@ import { randomUUID } from "node:crypto";
2
2
  import { readdir } from "node:fs/promises";
3
3
  import path from "node:path";
4
4
  import { modelVisibleEmojiToken, stripLeakedContextHeader } from "../discord/normalization.js";
5
- import { splitWaifuReply, typingDelayMs } from "./messageSplit.js";
5
+ import { planWaifuReplyChunks, splitWaifuReply, typingDelayMs } from "./messageSplit.js";
6
6
  import { getModel } from "../providers/catalog.js";
7
7
  import { createModelPipeline, ProviderPipelineError } from "../providers/pipelines.js";
8
8
  import { AgentConfigSchema, DiscordBotsFileSchema, GuildEmojisFileSchema, MemoryStoreSchema, OrchestratorHistoryFileSchema, ProviderCredentialsFileSchema, ReviewerHistoryFileSchema, ServerConfigSchema, StageManagerHistoryFileSchema, WaifuConfigSchema, createEmptyRevisionedFile } from "../shared/schemas/domain.js";
@@ -13,7 +13,9 @@ export class RuntimeOrchestrator {
13
13
  options;
14
14
  activeRuns = new Map();
15
15
  retriggerTimers = new Map();
16
+ continuationTimers = new Map();
16
17
  maxAutomaticTurns;
18
+ continuationIdleMs;
17
19
  createPipeline;
18
20
  sleep;
19
21
  recentSelfSentIds = new Map();
@@ -22,10 +24,12 @@ export class RuntimeOrchestrator {
22
24
  activeReviewerRuns = new Map();
23
25
  channelRunVersions = new Map();
24
26
  static SELF_SENT_TTL_MS = 60_000;
27
+ static CONTINUATION_IDLE_MS = 120_000;
25
28
  unsubscribes = [];
26
29
  constructor(options) {
27
30
  this.options = options;
28
31
  this.maxAutomaticTurns = options.maxAutomaticTurns ?? 8;
32
+ this.continuationIdleMs = options.continuationIdleMs ?? RuntimeOrchestrator.CONTINUATION_IDLE_MS;
29
33
  this.createPipeline = options.createPipeline ?? createModelPipeline;
30
34
  this.sleep = options.sleep ?? defaultSleep;
31
35
  }
@@ -60,10 +64,16 @@ export class RuntimeOrchestrator {
60
64
  clearTimeout(timer);
61
65
  }
62
66
  this.retriggerTimers.clear();
67
+ const continuationTimers = [...this.continuationTimers.values()];
68
+ for (const entry of continuationTimers) {
69
+ clearTimeout(entry.timer);
70
+ }
71
+ this.continuationTimers.clear();
63
72
  for (const run of this.activeRuns.values()) {
64
73
  run.controller.abort(new Error("runtime paused"));
65
74
  }
66
75
  await Promise.allSettled([...this.activeRuns.values()].map((run) => run.promise));
76
+ await Promise.allSettled(continuationTimers.map((entry) => this.clearCachedWaifuContinuation(entry.guildId, entry.channelId, "runtime paused")));
67
77
  this.activeRuns.clear();
68
78
  this.options.onActiveRunsChange?.(0);
69
79
  }
@@ -76,6 +86,7 @@ export class RuntimeOrchestrator {
76
86
  if (event.authorBot && this.activeWaifuSendChannels.has(event.channelId)) {
77
87
  return;
78
88
  }
89
+ await this.clearCachedWaifuContinuation(event.guildId, event.channelId, "new Discord activity");
79
90
  if (this.options.isPaused?.()) {
80
91
  this.options.logger.info("Discord message ignored because runtime is paused", {
81
92
  guildId: event.guildId,
@@ -375,22 +386,33 @@ export class RuntimeOrchestrator {
375
386
  });
376
387
  continue;
377
388
  }
378
- if (!waifu.modelId) {
379
- this.options.logger.warn("Orchestrator selected a waifu without a configured model", {
389
+ if (!waifu.botId) {
390
+ this.options.logger.warn("Orchestrator selected a waifu without a linked Discord bot", {
380
391
  guildId,
381
392
  channelId,
382
393
  selectedWaifuId: selected.waifuId
383
394
  });
384
395
  continue;
385
396
  }
386
- if (!waifu.botId) {
387
- this.options.logger.warn("Orchestrator selected a waifu without a linked Discord bot", {
397
+ if (await this.sendCachedContinuationForSelection({
398
+ guildId,
399
+ channelId,
400
+ selectedWaifuId: selected.waifuId,
401
+ sceneDirection: selected.sceneDirection,
402
+ signal
403
+ })) {
404
+ sentCount += 1;
405
+ continue;
406
+ }
407
+ if (!waifu.modelId) {
408
+ this.options.logger.warn("Orchestrator selected a waifu without a configured model", {
388
409
  guildId,
389
410
  channelId,
390
411
  selectedWaifuId: selected.waifuId
391
412
  });
392
413
  continue;
393
414
  }
415
+ await this.clearCachedWaifuContinuation(guildId, channelId, "new waifu generation");
394
416
  await this.setActivePipeline(guildId, channelId, "waifu");
395
417
  const waifuMessages = await this.options.discord.fetchFreshContext({
396
418
  guildId,
@@ -456,6 +478,7 @@ export class RuntimeOrchestrator {
456
478
  waifuId: waifu.id
457
479
  });
458
480
  }
481
+ const plannedChunks = planWaifuReplyChunks(chunks);
459
482
  const replyToMessageId = replyTargetForFreshContext(selected.replyToMessageId, waifuMessages);
460
483
  if (selected.replyToMessageId && !replyToMessageId) {
461
484
  this.options.logger.info("Omitting reply target because it is the latest context message", {
@@ -465,37 +488,26 @@ export class RuntimeOrchestrator {
465
488
  replyToMessageId: selected.replyToMessageId
466
489
  });
467
490
  }
468
- this.activeWaifuSendChannels.add(channelId);
469
- try {
470
- for (let i = 0; i < chunks.length; i++) {
471
- throwIfAborted(signal);
472
- if (i > 0) {
473
- void this.options.discord
474
- .sendTyping({ guildId, channelId, senderBotId: waifu.botId })
475
- .catch(() => undefined);
476
- await this.sleep(typingDelayMs(chunks[i]), signal);
477
- }
478
- const sentResult = await this.options.discord.sendWaifuMessage({
479
- guildId,
480
- channelId,
481
- senderBotId: waifu.botId,
482
- content: chunks[i],
483
- replyToMessageId: i === 0 ? replyToMessageId : undefined,
484
- allowedUserMentionIds: activeAuthorIds
485
- });
486
- this.rememberSelfSent(sentResult.messageId);
487
- this.options.logger.info("Waifu message chunk sent", {
488
- guildId,
489
- channelId,
490
- waifuId: waifu.id,
491
- chunkIndex: i,
492
- chunkCount: chunks.length,
493
- chunkLength: chunks[i].length
494
- });
495
- }
496
- }
497
- finally {
498
- this.activeWaifuSendChannels.delete(channelId);
491
+ await this.sendWaifuChunks({
492
+ guildId,
493
+ channelId,
494
+ waifuId: waifu.id,
495
+ senderBotId: waifu.botId,
496
+ chunks: plannedChunks.immediateChunks,
497
+ totalChunkCount: chunks.length,
498
+ replyToMessageId,
499
+ allowedUserMentionIds: activeAuthorIds,
500
+ signal
501
+ });
502
+ if (plannedChunks.cachedChunks.length > 0) {
503
+ await this.cacheWaifuContinuation({
504
+ guildId,
505
+ channelId,
506
+ waifuId: waifu.id,
507
+ senderBotId: waifu.botId,
508
+ chunks: plannedChunks.cachedChunks,
509
+ allowedUserMentionIds: activeAuthorIds
510
+ });
499
511
  }
500
512
  }
501
513
  finally {
@@ -848,6 +860,164 @@ export class RuntimeOrchestrator {
848
860
  }, bounded * 1000);
849
861
  this.retriggerTimers.set(key, timer);
850
862
  }
863
+ async sendCachedContinuationForSelection(input) {
864
+ if (input.sceneDirection?.trim()) {
865
+ return false;
866
+ }
867
+ const state = await this.readChannelSession(input.guildId, input.channelId);
868
+ const cached = state.cachedWaifuContinuation;
869
+ if (!cached || cached.waifuId !== input.selectedWaifuId) {
870
+ return false;
871
+ }
872
+ return this.sendCachedWaifuContinuation(input.guildId, input.channelId, "same-waifu-no-scene-direction", input.signal);
873
+ }
874
+ async sendCachedWaifuContinuation(guildId, channelId, reason, signal) {
875
+ throwIfAborted(signal);
876
+ const state = await this.readChannelSession(guildId, channelId);
877
+ const cached = state.cachedWaifuContinuation;
878
+ if (!cached) {
879
+ return false;
880
+ }
881
+ await this.clearCachedWaifuContinuation(guildId, channelId, `sending cached continuation: ${reason}`);
882
+ this.options.logger.info("Sending cached waifu continuation", {
883
+ guildId,
884
+ channelId,
885
+ waifuId: cached.waifuId,
886
+ reason,
887
+ chunkCount: cached.chunks.length
888
+ });
889
+ await this.sendWaifuChunks({
890
+ guildId,
891
+ channelId,
892
+ waifuId: cached.waifuId,
893
+ senderBotId: cached.senderBotId,
894
+ chunks: cached.chunks,
895
+ totalChunkCount: cached.chunks.length,
896
+ allowedUserMentionIds: cached.allowedUserMentionIds,
897
+ signal
898
+ });
899
+ return true;
900
+ }
901
+ async sendCachedContinuationAfterIdle(guildId, channelId) {
902
+ if (this.options.isPaused?.()) {
903
+ await this.clearCachedWaifuContinuation(guildId, channelId, "runtime paused before cached continuation");
904
+ return;
905
+ }
906
+ if (this.activeRuns.has(runKey(guildId))) {
907
+ this.setContinuationTimer(guildId, channelId, Math.min(1000, Math.max(1, this.continuationIdleMs)));
908
+ return;
909
+ }
910
+ await this.sendCachedWaifuContinuation(guildId, channelId, "idle-timeout");
911
+ }
912
+ async cacheWaifuContinuation(input) {
913
+ if (input.chunks.length === 0) {
914
+ return;
915
+ }
916
+ const cachedAt = nowIso();
917
+ const idleAfter = new Date(Date.now() + this.continuationIdleMs).toISOString();
918
+ await this.updateSession(input.guildId, input.channelId, (current) => ({
919
+ ...current,
920
+ cachedWaifuContinuation: {
921
+ waifuId: input.waifuId,
922
+ senderBotId: input.senderBotId,
923
+ chunks: input.chunks,
924
+ allowedUserMentionIds: input.allowedUserMentionIds,
925
+ cachedAt,
926
+ idleAfter
927
+ }
928
+ }));
929
+ this.scheduleContinuationTimer(input.guildId, input.channelId, idleAfter);
930
+ this.options.logger.info("Cached unsent waifu continuation chunks", {
931
+ guildId: input.guildId,
932
+ channelId: input.channelId,
933
+ waifuId: input.waifuId,
934
+ chunkCount: input.chunks.length,
935
+ idleAfter
936
+ });
937
+ }
938
+ async clearCachedWaifuContinuation(guildId, channelId, reason) {
939
+ const key = timerKey(guildId, channelId);
940
+ const timer = this.continuationTimers.get(key);
941
+ if (timer) {
942
+ clearTimeout(timer.timer);
943
+ this.continuationTimers.delete(key);
944
+ }
945
+ const state = await this.readChannelSession(guildId, channelId);
946
+ if (!state.cachedWaifuContinuation) {
947
+ return;
948
+ }
949
+ const cached = state.cachedWaifuContinuation;
950
+ await this.updateSession(guildId, channelId, (current) => ({
951
+ ...current,
952
+ cachedWaifuContinuation: null
953
+ }));
954
+ this.options.logger.info("Cleared cached waifu continuation chunks", {
955
+ guildId,
956
+ channelId,
957
+ waifuId: cached.waifuId,
958
+ reason,
959
+ chunkCount: cached.chunks.length
960
+ });
961
+ }
962
+ scheduleContinuationTimer(guildId, channelId, idleAfter) {
963
+ const delayMs = Math.max(0, new Date(idleAfter).getTime() - Date.now());
964
+ this.setContinuationTimer(guildId, channelId, delayMs);
965
+ }
966
+ setContinuationTimer(guildId, channelId, delayMs) {
967
+ const key = timerKey(guildId, channelId);
968
+ const existing = this.continuationTimers.get(key);
969
+ if (existing) {
970
+ clearTimeout(existing.timer);
971
+ }
972
+ const timer = setTimeout(() => {
973
+ this.continuationTimers.delete(key);
974
+ void this.sendCachedContinuationAfterIdle(guildId, channelId).catch((error) => {
975
+ this.options.logger.error("Cached waifu continuation failed", {
976
+ guildId,
977
+ channelId,
978
+ message: error instanceof Error ? error.message : String(error)
979
+ });
980
+ });
981
+ }, delayMs);
982
+ this.continuationTimers.set(key, { guildId, channelId, timer });
983
+ }
984
+ async sendWaifuChunks(input) {
985
+ if (input.chunks.length === 0) {
986
+ return;
987
+ }
988
+ this.activeWaifuSendChannels.add(input.channelId);
989
+ try {
990
+ for (let i = 0; i < input.chunks.length; i++) {
991
+ throwIfAborted(input.signal);
992
+ if (i > 0) {
993
+ void this.options.discord
994
+ .sendTyping({ guildId: input.guildId, channelId: input.channelId, senderBotId: input.senderBotId })
995
+ .catch(() => undefined);
996
+ await this.sleep(typingDelayMs(input.chunks[i]), input.signal);
997
+ }
998
+ const sentResult = await this.options.discord.sendWaifuMessage({
999
+ guildId: input.guildId,
1000
+ channelId: input.channelId,
1001
+ senderBotId: input.senderBotId,
1002
+ content: input.chunks[i],
1003
+ replyToMessageId: i === 0 ? input.replyToMessageId : undefined,
1004
+ allowedUserMentionIds: input.allowedUserMentionIds
1005
+ });
1006
+ this.rememberSelfSent(sentResult.messageId);
1007
+ this.options.logger.info("Waifu message chunk sent", {
1008
+ guildId: input.guildId,
1009
+ channelId: input.channelId,
1010
+ waifuId: input.waifuId,
1011
+ chunkIndex: i,
1012
+ chunkCount: input.totalChunkCount,
1013
+ chunkLength: input.chunks[i].length
1014
+ });
1015
+ }
1016
+ }
1017
+ finally {
1018
+ this.activeWaifuSendChannels.delete(input.channelId);
1019
+ }
1020
+ }
851
1021
  async setActivePipeline(guildId, channelId, kind) {
852
1022
  await this.updateSession(guildId, channelId, (current) => ({
853
1023
  ...current,
@@ -1002,9 +1172,9 @@ export class RuntimeOrchestrator {
1002
1172
  ].join("\n\n");
1003
1173
  const retriggerPacing = [
1004
1174
  "retriggerAfterSeconds decides when you wake yourself up to reconsider. Every wake-up costs another orchestrator call, so pace it to how alive the conversation actually is — read the timestamps on recent messages:",
1005
- "- Active chat (humans engaging within the last few minutes): short, ~100-300s.",
1175
+ "- Active chat (participants engaging within the last few minutes): short, ~100-300s.",
1006
1176
  "- Quiet but plausibly resuming (someone stepped away mid-thread): medium, ~600-1800s.",
1007
- "- Cold (last human message is hours old, or nobody has engaged with the bots in a while): long, ~3600-14400s, and keep growing each time you wake up to the same silence. Don't burn calls poking a dead channel."
1177
+ "- Cold (last participant message is hours old, or nobody has engaged with the bots in a while): long, ~3600-14400s, and keep growing each time you wake up to the same silence. Don't burn calls poking a dead channel."
1008
1178
  ].join("\n");
1009
1179
  const messageStructure = "Each message in the context is tagged with [index: #N], [timestamp: ISO-8601 UTC], and [sender: DisplayName] before its body, optionally followed by [reactions: ...] and [replying to: ...]. Reference messages by their #N index. replyToIndex must be one of the #N indices shown in the context.";
1010
1180
  const toolUse = [
@@ -1015,20 +1185,22 @@ export class RuntimeOrchestrator {
1015
1185
  "OR { \"action\": \"reviewer\", \"reasoning\": string }",
1016
1186
  "OR { \"action\": \"no_reply\", \"retriggerAfterSeconds\": number, \"reasoning\": string }."
1017
1187
  ].join("\n");
1188
+ const sections = orchestrator.promptSections;
1018
1189
  const behavior = [
1019
1190
  `<hard_rules>\n${hardRules}\n</hard_rules>`,
1020
1191
  `<task_instructions>\n${taskInstructions}\n</task_instructions>`,
1021
- `<loop_breaking>\n${loopBreaking}\n</loop_breaking>`,
1022
- `<retrigger_pacing>\n${retriggerPacing}\n</retrigger_pacing>`,
1023
- `<message_structure>\n${messageStructure}\n</message_structure>`,
1024
- `<tool_use>\n${toolUse}\n</tool_use>`
1025
- ].join("\n");
1192
+ sections.loopBreaking ? `<loop_breaking>\n${loopBreaking}\n</loop_breaking>` : null,
1193
+ sections.retriggerPacing ? `<retrigger_pacing>\n${retriggerPacing}\n</retrigger_pacing>` : null,
1194
+ sections.messageStructure ? `<message_structure>\n${messageStructure}\n</message_structure>` : null,
1195
+ sections.toolUse ? `<tool_use>\n${toolUse}\n</tool_use>` : null
1196
+ ]
1197
+ .filter((section) => Boolean(section))
1198
+ .join("\n");
1026
1199
  return [
1027
1200
  `<identity>\n${identity}\n</identity>`,
1028
1201
  `<behavior>\n${behavior}\n</behavior>`,
1029
1202
  `<discord_server_information>\n${server.name ?? server.guildId}\n</discord_server_information>`,
1030
- `<active_waifus>\n${activeWaifusContent}\n</active_waifus>`,
1031
- `<current_time>\n${formatTimestamp(new Date())} (UTC)\n</current_time>`
1203
+ `<active_waifus>\n${activeWaifusContent}\n</active_waifus>`
1032
1204
  ].join("\n");
1033
1205
  }
1034
1206
  async ensureServer(guildId) {
@@ -1074,6 +1246,9 @@ export class RuntimeOrchestrator {
1074
1246
  transform: (current) => current
1075
1247
  });
1076
1248
  }
1249
+ async readChannelSession(guildId, channelId) {
1250
+ return this.options.storage.withLocks([`session:${guildId}:${channelId}`], () => this.options.storage.readJson(sessionRelativePath(guildId, channelId), ChannelSessionStateSchema, createEmptyChannelSessionState(guildId, channelId)));
1251
+ }
1077
1252
  async updateSession(guildId, channelId, transform) {
1078
1253
  return this.options.storage.updateRevisionedJson({
1079
1254
  resourceKey: `session:${guildId}:${channelId}`,
@@ -1164,7 +1339,7 @@ function replyTargetForFreshContext(replyToMessageId, messages) {
1164
1339
  return latestMessage?.id === replyToMessageId ? undefined : replyToMessageId;
1165
1340
  }
1166
1341
  function throwIfAborted(signal) {
1167
- if (signal.aborted) {
1342
+ if (signal?.aborted) {
1168
1343
  throw signal.reason instanceof Error ? signal.reason : new Error("Request aborted.");
1169
1344
  }
1170
1345
  }
@@ -1232,7 +1407,7 @@ const DEFAULT_ORCHESTRATOR_PROMPT = [
1232
1407
  "- stage_manager when something memorable has happened (a new fact about a user, a relationship change, an event worth remembering) and the memory pass should run before the next reply.",
1233
1408
  "- reviewer when the latest waifu message looks like leaked internals or hallucinated private model text.",
1234
1409
  "",
1235
- "If a recent user message or direct ping was missed while the room moved on, prefer steering a waifu to acknowledge it so the chat stays socially inclusive — unless silence is clearly the more natural choice.",
1410
+ "If a recent chat participant message or direct ping was missed while the room moved on, prefer steering a waifu to acknowledge it so the chat stays socially inclusive — unless silence is clearly the more natural choice.",
1236
1411
  "",
1237
1412
  "Reach for sceneDirection when the next reply needs steering that personality alone won't provide: redirecting topic, closing a beat, creating an interruption, shifting momentum, or deliberately starting something new even when it cuts against the current flow. Prefer a natural bridge when pivoting, but a jarring shift is fine if the scene needs it. Keep sceneDirection short, concrete, and immediately actionable — one sentence is usually enough. When you refer to a specific person, use their actual display name from the chat history, never generic phrases like \"the user\". Name intended participants explicitly when more than one person is involved; avoid ambiguous group references like \"us\", \"them\", or \"everyone\". If multiple waifus respond in the same turn, each may receive a different sceneDirection."
1238
1413
  ].join("\n");