negotium 0.1.37 → 0.1.39

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 (64) hide show
  1. package/README.md +19 -0
  2. package/dist/agent-helpers.js +15637 -5674
  3. package/dist/agent-helpers.js.map +85 -37
  4. package/dist/browser-runtime.js +1600 -0
  5. package/dist/browser-runtime.js.map +28 -0
  6. package/dist/hosted-agent.js +8 -8
  7. package/dist/hosted-agent.js.map +6 -5
  8. package/dist/main.js +3790 -3113
  9. package/dist/main.js.map +33 -29
  10. package/dist/mcp-factories.js +15141 -301
  11. package/dist/mcp-factories.js.map +100 -7
  12. package/dist/prompts.js +117 -49
  13. package/dist/prompts.js.map +3 -3
  14. package/dist/query-runtime.js +310 -1
  15. package/dist/query-runtime.js.map +10 -5
  16. package/dist/runtime/src/agents/archiver.ts +407 -296
  17. package/dist/runtime/src/agents/mcp-tools/ask-user.ts +440 -274
  18. package/dist/runtime/src/agents/mcp-tools/self-config.ts +139 -65
  19. package/dist/runtime/src/agents/mcp-tools/spawn-subagent.ts +1037 -816
  20. package/dist/runtime/src/agents/public-helpers.ts +82 -0
  21. package/dist/runtime/src/agents/self-config-core.ts +574 -278
  22. package/dist/runtime/src/agents/topic-cleanup.ts +167 -129
  23. package/dist/runtime/src/index.ts +4 -1
  24. package/dist/runtime/src/mcp/factories/index.ts +9 -0
  25. package/dist/runtime/src/mcp/session-comm/topic-catalog.ts +132 -0
  26. package/dist/runtime/src/mcp/session-comm/topics.ts +23 -57
  27. package/dist/runtime/src/platform/mcp-config.ts +2 -4
  28. package/dist/runtime/src/platform/playwright/browser-processes.ts +3 -2
  29. package/dist/runtime/src/platform/playwright/capability.ts +5 -0
  30. package/dist/runtime/src/platform/playwright/manager.ts +380 -66
  31. package/dist/runtime/src/platform/playwright/public-runtime.ts +45 -0
  32. package/dist/runtime/src/platform/playwright/transport-probe.ts +89 -0
  33. package/dist/runtime/src/prompts/builders.ts +192 -51
  34. package/dist/runtime/src/query/active-rooms.ts +2 -0
  35. package/dist/runtime/src/query/public-runtime.ts +8 -0
  36. package/dist/runtime/src/query/state.ts +69 -33
  37. package/dist/runtime/src/query/types.ts +1 -0
  38. package/dist/runtime/src/runtime/playwright-turn-abort.ts +59 -0
  39. package/dist/runtime/src/runtime/turn-event-stream.ts +23 -6
  40. package/dist/runtime/src/runtime/turn-runner.ts +6 -1
  41. package/dist/runtime/src/version.ts +1 -1
  42. package/dist/types/packages/core/src/agents/api-topic-agent-switch.d.ts +38 -0
  43. package/dist/types/packages/core/src/agents/archiver.d.ts +52 -16
  44. package/dist/types/packages/core/src/agents/mcp-tools/ask-user.d.ts +75 -4
  45. package/dist/types/packages/core/src/agents/mcp-tools/self-config.d.ts +17 -0
  46. package/dist/types/packages/core/src/agents/mcp-tools/spawn-subagent.d.ts +112 -25
  47. package/dist/types/packages/core/src/agents/public-helpers.d.ts +7 -0
  48. package/dist/types/packages/core/src/agents/self-config-core.d.ts +185 -0
  49. package/dist/types/packages/core/src/agents/topic-cleanup.d.ts +30 -24
  50. package/dist/types/packages/core/src/mcp/factories/index.d.ts +1 -0
  51. package/dist/types/packages/core/src/mcp/session-comm/topic-catalog.d.ts +46 -0
  52. package/dist/types/packages/core/src/platform/mcp-config.d.ts +2 -1
  53. package/dist/types/packages/core/src/platform/playwright/capability.d.ts +1 -0
  54. package/dist/types/packages/core/src/platform/playwright/manager.d.ts +65 -5
  55. package/dist/types/packages/core/src/platform/playwright/public-runtime.d.ts +4 -0
  56. package/dist/types/packages/core/src/platform/playwright/transport-probe.d.ts +13 -0
  57. package/dist/types/packages/core/src/prompts/builders.d.ts +29 -3
  58. package/dist/types/packages/core/src/query/active-rooms.d.ts +2 -0
  59. package/dist/types/packages/core/src/query/public-runtime.d.ts +1 -0
  60. package/dist/types/packages/core/src/query/state.d.ts +13 -0
  61. package/dist/types/packages/core/src/query/types.d.ts +2 -1
  62. package/dist/types/packages/core/src/runtime/playwright-turn-abort.d.ts +12 -0
  63. package/dist/types/packages/core/src/version.d.ts +1 -1
  64. package/package.json +6 -1
@@ -429,6 +429,7 @@ var AbortReason;
429
429
  AbortReason2["None"] = "none";
430
430
  AbortReason2["Internal"] = "internal";
431
431
  AbortReason2["External"] = "external";
432
+ AbortReason2["Infrastructure"] = "infrastructure";
432
433
  })(AbortReason ||= {});
433
434
 
434
435
  // ../../packages/core/src/query/active-rooms.ts
@@ -590,15 +591,323 @@ var interSessionQueue = new InterSessionQueue;
590
591
  function wsAbortReason(reason) {
591
592
  return reason === "internal" /* Internal */ ? "superseded" : "stopped";
592
593
  }
594
+ // ../../packages/core/src/query/state.ts
595
+ import { mkdirSync as mkdirSync3, renameSync, unlinkSync, writeFileSync as writeFileSync2 } from "fs";
596
+ import { basename, join as join3 } from "path";
597
+
598
+ // ../../packages/core/src/platform/config.ts
599
+ import { execFileSync } from "child_process";
600
+ import { randomBytes } from "crypto";
601
+ import {
602
+ accessSync,
603
+ chmodSync,
604
+ constants,
605
+ existsSync,
606
+ mkdirSync as mkdirSync2,
607
+ readFileSync,
608
+ writeFileSync
609
+ } from "fs";
610
+ import { homedir as homedir2 } from "os";
611
+ import { dirname as dirname2, join as join2, resolve as resolve2 } from "path";
612
+ import { fileURLToPath } from "url";
613
+
614
+ // ../../packages/core/src/platform/config-helpers.ts
615
+ function readEnvText(env, key) {
616
+ const value = env[key]?.trim();
617
+ return value || undefined;
618
+ }
619
+ function parseRuntimePort(value, fallback) {
620
+ if (!value)
621
+ return fallback;
622
+ const port = Number.parseInt(value, 10);
623
+ return Number.isInteger(port) && port > 0 && port <= 65535 ? port : fallback;
624
+ }
625
+
626
+ // ../../packages/core/src/types.ts
627
+ var SUPPORTED_AGENTS = ["maestro", "claude", "codex"];
628
+ function isAgentKind(value) {
629
+ return typeof value === "string" && SUPPORTED_AGENTS.includes(value);
630
+ }
631
+
632
+ // ../../packages/core/src/platform/config.ts
633
+ function envText(envKey) {
634
+ return readEnvText(process.env, envKey);
635
+ }
636
+ function resolveAgentEnv(envKey, fallback, legacyEnvKey) {
637
+ const value = envText(envKey) ?? (legacyEnvKey ? envText(legacyEnvKey) : undefined);
638
+ return isAgentKind(value) ? value : fallback;
639
+ }
640
+ var HOME = homedir2();
641
+ function resolveProjectRoot() {
642
+ const moduleDir = dirname2(fileURLToPath(import.meta.url));
643
+ const packagedRuntime = resolve2(moduleDir, "runtime");
644
+ if (existsSync(resolve2(packagedRuntime, "src")))
645
+ return packagedRuntime;
646
+ return resolve2(moduleDir, "../..");
647
+ }
648
+ var PROJECT_ROOT = resolveProjectRoot();
649
+ function resolveDependencyBin(name) {
650
+ let dir = PROJECT_ROOT;
651
+ while (true) {
652
+ const candidate = resolve2(dir, "node_modules", ".bin", name);
653
+ if (existsSync(candidate))
654
+ return candidate;
655
+ const parent = dirname2(dir);
656
+ if (parent === dir)
657
+ return candidate;
658
+ dir = parent;
659
+ }
660
+ }
661
+ var STATE_DIR_ENV = envText("NEGOTIUM_STATE_DIR");
662
+ var STATE_DIR = STATE_DIR_ENV ? resolve2(STATE_DIR_ENV) : resolve2(HOME, ".negotium");
663
+ function resolveLocalStateDir(envKey, stateName) {
664
+ const envValue = envText(envKey);
665
+ if (envValue)
666
+ return resolve2(envValue);
667
+ return resolve2(STATE_DIR, stateName);
668
+ }
669
+ function parsePortEnv(envValue, fallback) {
670
+ return parseRuntimePort(envValue, fallback);
671
+ }
672
+ var WORKSPACE_DIR = resolveLocalStateDir("NEGOTIUM_WORKSPACE_DIR", "workspace");
673
+ var TOPIC_WORKSPACE_DIR = resolve2(WORKSPACE_DIR, "topics");
674
+ var SHARED_WIKI_DIR = resolve2(WORKSPACE_DIR, "wiki");
675
+ var CONTEXTS_DIR = resolve2(WORKSPACE_DIR, "contexts");
676
+ var BROWSER_PROFILES_DIR = resolve2(WORKSPACE_DIR, "browser-profiles");
677
+ var DM_WORKSPACE_DIR = resolve2(WORKSPACE_DIR, "dm");
678
+ var SESSION_WORKSPACE_DIR = resolve2(WORKSPACE_DIR, "sessions");
679
+ var CLAUDE_EXECUTABLE_ENV = envText("NEGOTIUM_CLAUDE_EXECUTABLE");
680
+ var CLAUDE_EXECUTABLE = CLAUDE_EXECUTABLE_ENV ? resolve2(CLAUDE_EXECUTABLE_ENV) : undefined;
681
+ function resolveBrowserMcpBin(envValue) {
682
+ const override = envValue?.trim();
683
+ if (override) {
684
+ if (!/(^|\/)(mcp-patchright|mcp-patchright-http\.mjs)$/.test(override)) {
685
+ throw new Error("NEGOTIUM_BROWSER_MCP_BIN must point to the authenticated mcp-patchright wrapper.");
686
+ }
687
+ return override;
688
+ }
689
+ return PATCHRIGHT_MCP_BIN;
690
+ }
691
+ var PATCHRIGHT_MCP_BIN = resolve2(PROJECT_ROOT, "scripts/mcp-patchright-http.mjs");
692
+ var PLAYWRIGHT_MCP_BIN = resolveBrowserMcpBin(envText("NEGOTIUM_BROWSER_MCP_BIN"));
693
+ var BROWSER_RS_VERSION = "v0.1.13";
694
+ var BROWSER_RS_MIN_SECURE_VERSION = "0.1.13";
695
+ function versionAtLeast(actualVersion, minimumVersion) {
696
+ const actual = actualVersion.split(".").map(Number);
697
+ const minimum = minimumVersion.split(".").map(Number);
698
+ if (actual.some(Number.isNaN) || minimum.some(Number.isNaN))
699
+ return false;
700
+ for (let index = 0;index < minimum.length; index += 1) {
701
+ if ((actual[index] ?? 0) > (minimum[index] ?? 0))
702
+ return true;
703
+ if ((actual[index] ?? 0) < (minimum[index] ?? 0))
704
+ return false;
705
+ }
706
+ return true;
707
+ }
708
+ function browserRsMeetsMinimumVersion(candidate) {
709
+ try {
710
+ const output = execFileSync(candidate, ["--version"], {
711
+ encoding: "utf8",
712
+ timeout: 2000,
713
+ stdio: ["ignore", "pipe", "ignore"]
714
+ }).trim();
715
+ const match = output.match(/^browser-rs (\d+)\.(\d+)\.(\d+)$/);
716
+ if (!match)
717
+ return false;
718
+ return versionAtLeast(match.slice(1).join("."), BROWSER_RS_MIN_SECURE_VERSION);
719
+ } catch {
720
+ return false;
721
+ }
722
+ }
723
+ function resolveBrowserRsBin(envValue) {
724
+ const override = envValue?.trim();
725
+ if (!override && !versionAtLeast(BROWSER_RS_VERSION.replace(/^v/, ""), BROWSER_RS_MIN_SECURE_VERSION)) {
726
+ return;
727
+ }
728
+ const candidate = override ? resolve2(override) : resolve2(STATE_DIR, "bin", "browser-rs", BROWSER_RS_VERSION, "browser-rs");
729
+ try {
730
+ accessSync(candidate, constants.X_OK);
731
+ return browserRsMeetsMinimumVersion(candidate) ? candidate : undefined;
732
+ } catch {
733
+ return;
734
+ }
735
+ }
736
+ var BROWSER_RS_BIN = resolveBrowserRsBin(envText("NEGOTIUM_BROWSER_RS_BIN"));
737
+ var TSX_BIN = resolveDependencyBin("tsx");
738
+ var TSCONFIG_PATH = resolve2(PROJECT_ROOT, "tsconfig.json");
739
+ var SESSION_COMM_SERVER = resolve2(PROJECT_ROOT, "src/mcp/session-comm/server.ts");
740
+ var TASK_SERVER = resolve2(PROJECT_ROOT, "src/mcp/task-server.ts");
741
+ var BROWSER_MCP_SSE_PROXY_SERVER = resolve2(PROJECT_ROOT, "src/mcp/browser-sse-proxy-server.ts");
742
+ var CANONICAL_MCP_PROXY_SERVER = resolve2(PROJECT_ROOT, "src/mcp/canonical-proxy-server.ts");
743
+ var WIKI_SERVER = resolve2(PROJECT_ROOT, "src/mcp/wiki-server.ts");
744
+ var TOKEN_STATS_SERVER = resolve2(PROJECT_ROOT, "src/mcp/token-stats-server.ts");
745
+ var COMPACTION_LOG_SERVER = resolve2(PROJECT_ROOT, "src/mcp/compaction-log-server.ts");
746
+ var SYSTEM_HEALTH_SERVER = resolve2(PROJECT_ROOT, "src/mcp/system-health-server.ts");
747
+ var AGENT_HEALTH_SERVER = resolve2(PROJECT_ROOT, "src/mcp/agent-health-server.ts");
748
+ var BACKGROUND_BASH_SERVER = resolve2(PROJECT_ROOT, "src/mcp/background-bash-server.ts");
749
+ var VAULT_SERVER = resolve2(PROJECT_ROOT, "src/mcp/vault-server.ts");
750
+ var BG_BASH_BASE_PORT = parsePortEnv(process.env.BG_BASH_BASE_PORT, 9700);
751
+ var BG_BASH_MAX_PORT = parsePortEnv(process.env.BG_BASH_MAX_PORT, 9799);
752
+ function loadOrCreateLocalSecret(envKey, filename, options = {}) {
753
+ const envValue = envText(envKey);
754
+ const secretFile = resolve2(STATE_DIR, filename);
755
+ mkdirSync2(dirname2(secretFile), { recursive: true });
756
+ if (envValue) {
757
+ if (options.persistEnvValue) {
758
+ writeFileSync(secretFile, `${envValue}
759
+ `, { mode: 384 });
760
+ chmodSync(secretFile, 384);
761
+ }
762
+ return envValue;
763
+ }
764
+ if (existsSync(secretFile)) {
765
+ const stored = readFileSync(secretFile, "utf-8").trim();
766
+ if (stored) {
767
+ chmodSync(secretFile, 384);
768
+ return stored;
769
+ }
770
+ }
771
+ const secret = randomBytes(32).toString("base64url");
772
+ try {
773
+ writeFileSync(secretFile, `${secret}
774
+ `, { mode: 384, flag: "wx" });
775
+ return secret;
776
+ } catch (error) {
777
+ if (error.code !== "EEXIST")
778
+ throw error;
779
+ const stored = readFileSync(secretFile, "utf-8").trim();
780
+ if (!stored)
781
+ throw new Error(`Secret file exists but is empty: ${secretFile}`);
782
+ chmodSync(secretFile, 384);
783
+ return stored;
784
+ }
785
+ }
786
+ var RUNTIME_MCP_SECRET = loadOrCreateLocalSecret("RUNTIME_MCP_SECRET", "runtime-mcp-secret");
787
+ var NODE_CONTROL_TOKEN = loadOrCreateLocalSecret("NEGOTIUM_CONTROL_TOKEN", "node-control-token");
788
+ var VAULT_MASTER_KEY = loadOrCreateLocalSecret("NEGOTIUM_VAULT_MASTER_KEY", "vault-master-key", { persistEnvValue: true });
789
+ delete process.env.NEGOTIUM_VAULT_MASTER_KEY;
790
+ var NEGOTIUM_PORT = parseInt(process.env.NEGOTIUM_PORT || "7777", 10);
791
+ var hostname = process.env.HOSTNAME || "127.0.0.1";
792
+ var DATA_DIR = resolveLocalStateDir("NEGOTIUM_DATA_DIR", "data");
793
+ var LOG_DIR = resolveLocalStateDir("NEGOTIUM_LOG_DIR", "logs");
794
+ var SESSIONS_DB = process.env.SESSIONS_DB_PATH ? resolve2(process.env.SESSIONS_DB_PATH) : resolve2(DATA_DIR, "sessions.db");
795
+ var DEBUG_FILE = resolve2(DATA_DIR, "debug-users.json");
796
+ var USERS_LOG_DIR = resolve2(DATA_DIR, "users");
797
+ var RUN_DIR = resolveLocalStateDir("NEGOTIUM_RUN_DIR", "run");
798
+ var PROGRESS_DIR = resolve2(RUN_DIR, "progress");
799
+ var DM_CMD_DIR = resolve2(RUN_DIR, "dm-commands");
800
+ var DM_RESP_DIR = resolve2(RUN_DIR, "dm-responses");
801
+ var SESSION_INBOX_DIR = resolve2(RUN_DIR, "session-inbox");
802
+ var SESSION_ASKS_DIR = resolve2(RUN_DIR, "session-asks");
803
+ var PLAYWRIGHT_BASE_PORT = parsePortEnv(process.env.PLAYWRIGHT_BASE_PORT, 9100);
804
+ var PLAYWRIGHT_MAX_PORT = parsePortEnv(process.env.PLAYWRIGHT_MAX_PORT, 9499);
805
+ var PLAYWRIGHT_PORTS_DIR = resolve2(RUN_DIR, "playwright-ports");
806
+ mkdirSync2(STATE_DIR, { recursive: true });
807
+ mkdirSync2(DATA_DIR, { recursive: true });
808
+ mkdirSync2(LOG_DIR, { recursive: true });
809
+ mkdirSync2(PROGRESS_DIR, { recursive: true });
810
+ mkdirSync2(DM_CMD_DIR, { recursive: true });
811
+ mkdirSync2(DM_RESP_DIR, { recursive: true });
812
+ mkdirSync2(SESSION_INBOX_DIR, { recursive: true });
813
+ mkdirSync2(SESSION_ASKS_DIR, { recursive: true });
814
+ mkdirSync2(PLAYWRIGHT_PORTS_DIR, { recursive: true });
815
+ mkdirSync2(WORKSPACE_DIR, { recursive: true });
816
+ mkdirSync2(TOPIC_WORKSPACE_DIR, { recursive: true });
817
+ mkdirSync2(SHARED_WIKI_DIR, { recursive: true });
818
+ mkdirSync2(CONTEXTS_DIR, { recursive: true });
819
+ mkdirSync2(BROWSER_PROFILES_DIR, { recursive: true });
820
+ mkdirSync2(DM_WORKSPACE_DIR, { recursive: true });
821
+ mkdirSync2(SESSION_WORKSPACE_DIR, { recursive: true });
822
+ var ACTIVE_QUERY_STALE_MS = 10 * 60 * 1000;
823
+ var AGENTS_PROMPTS_DIR = resolve2(PROJECT_ROOT, "src/prompts/agents");
824
+ var RESOURCES_DIR = resolve2(PROJECT_ROOT, "src/resources");
825
+ var FALLBACK_AGENT = resolveAgentEnv("FALLBACK_AGENT", "maestro", "DEFAULT_AGENT");
826
+ var SESSION_AGENT = resolveAgentEnv("SESSION_AGENT", FALLBACK_AGENT);
827
+ var GATEWAY_AGENT = resolveAgentEnv("GATEWAY_AGENT", FALLBACK_AGENT);
828
+ var FALLBACK_MODEL = envText("FALLBACK_MODEL") ?? envText("DEFAULT_MODEL");
829
+ function resolveModelEnv(envKey, agentConst) {
830
+ return envText(envKey) ?? (agentConst === FALLBACK_AGENT ? FALLBACK_MODEL : undefined);
831
+ }
832
+ var SESSION_MODEL = resolveModelEnv("SESSION_MODEL", SESSION_AGENT);
833
+ var GATEWAY_MODEL = resolveModelEnv("GATEWAY_MODEL", GATEWAY_AGENT);
834
+ var FFMPEG_BIN = envText("FFMPEG_BIN");
835
+ var FFPROBE_BIN = envText("FFPROBE_BIN");
836
+ var PYTHON_BIN = envText("PYTHON_BIN") ?? "python3";
837
+ var FASTER_WHISPER_WRAPPER = envText("FASTER_WHISPER_WRAPPER") ?? resolve2(PROJECT_ROOT, "scripts/faster-whisper-wrapper.py");
838
+ var WHISPER_MODEL = envText("WHISPER_MODEL_FILE") ?? "turbo";
839
+ var TESSERACT_BIN = envText("TESSERACT_BIN") ?? "tesseract";
840
+ var PDFTOTEXT_BIN = envText("PDFTOTEXT_BIN") ?? "pdftotext";
841
+ var _envMaxTellDepth = Number.parseInt(process.env.MAX_TELL_DEPTH ?? "", 10);
842
+ var MAX_TELL_DEPTH = Number.isInteger(_envMaxTellDepth) && _envMaxTellDepth > 0 ? _envMaxTellDepth : 20;
843
+
844
+ // ../../packages/core/src/security/sanitize.ts
845
+ function sanitizeId(id) {
846
+ return id.replace(/[^a-zA-Z0-9_-]/g, "_") || "_";
847
+ }
848
+
849
+ // ../../packages/core/src/query/state.ts
850
+ function createQueryStateStore(options) {
851
+ const sanitize = options.sanitizeTopicId ?? sanitizeId;
852
+ const queryStateDirPath = (userId) => join3(options.usersLogDir, String(userId), "active-queries");
853
+ const queryStateFile = (userId, topicId) => join3(queryStateDirPath(userId), `${sanitize(topicId)}.json`);
854
+ const legacyQueryStateFile = (userId, topicName) => {
855
+ if (!topicName || topicName === "." || topicName === ".." || basename(topicName) !== topicName) {
856
+ return null;
857
+ }
858
+ return join3(queryStateDirPath(userId), `${topicName}.json`);
859
+ };
860
+ return {
861
+ write(userId, topicId, topicName, task) {
862
+ const dir = queryStateDirPath(userId);
863
+ mkdirSync3(dir, { recursive: true });
864
+ const state = { topicId, topicName, since: new Date().toISOString() };
865
+ if (task)
866
+ state.task = [...task.replace(/\n+/g, " ").trim()].slice(0, 100).join("");
867
+ const target = queryStateFile(userId, topicId);
868
+ const tmp = `${target}.${process.pid}.${Date.now()}.tmp`;
869
+ writeFileSync2(tmp, JSON.stringify(state));
870
+ renameSync(tmp, target);
871
+ },
872
+ clear(userId, topicId, legacyTopicName) {
873
+ const paths = [
874
+ queryStateFile(userId, topicId),
875
+ legacyQueryStateFile(userId, legacyTopicName)
876
+ ].filter((path) => Boolean(path));
877
+ for (const path of new Set(paths)) {
878
+ try {
879
+ unlinkSync(path);
880
+ } catch (error) {
881
+ if (error?.code !== "ENOENT") {
882
+ options.logger?.warn({ err: error, userId, topicId, path }, "Failed to clear query state file");
883
+ }
884
+ }
885
+ }
886
+ }
887
+ };
888
+ }
889
+ var defaultQueryStateStore = createQueryStateStore({
890
+ usersLogDir: USERS_LOG_DIR,
891
+ logger
892
+ });
893
+ function writeQueryState(userId, topicId, topicName, task) {
894
+ defaultQueryStateStore.write(userId, topicId, topicName, task);
895
+ }
896
+ function clearQueryState(userId, topicId, legacyTopicName) {
897
+ defaultQueryStateStore.clear(userId, topicId, legacyTopicName);
898
+ }
593
899
  export {
594
900
  wsAbortReason,
901
+ writeQueryState,
595
902
  isolatedTurnRoomId,
596
903
  isUserOrigin,
597
904
  isIsolatedTurnRoomId,
598
905
  createRoomQueryRegistry,
906
+ createQueryStateStore,
907
+ clearQueryState,
599
908
  InterSessionQueue,
600
909
  DeferredInjectBatcher,
601
910
  AbortReason
602
911
  };
603
912
 
604
- //# debugId=A26B022AD368149164756E2164756E21
913
+ //# debugId=C8DEEEED5A27B0EF64756E2164756E21