negotium 0.1.11 → 0.1.12

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 (129) hide show
  1. package/README.md +11 -2
  2. package/dist/{chunk-41ygvg5k.js → chunk-00q25k7p.js} +4 -4
  3. package/dist/{chunk-41ygvg5k.js.map → chunk-00q25k7p.js.map} +2 -2
  4. package/dist/{chunk-npd8n03v.js → chunk-03kv7mvj.js} +22 -22
  5. package/dist/{chunk-beqhdr9w.js → chunk-05pm51dh.js} +31 -31
  6. package/dist/{chunk-beqhdr9w.js.map → chunk-05pm51dh.js.map} +2 -2
  7. package/dist/{chunk-wx7ag4dd.js → chunk-0eh16bk1.js} +32 -32
  8. package/dist/{chunk-wx7ag4dd.js.map → chunk-0eh16bk1.js.map} +2 -2
  9. package/dist/{chunk-jtrk0khr.js → chunk-0yfqyv88.js} +6 -6
  10. package/dist/{chunk-28apmz4r.js → chunk-3gkfr9vb.js} +64 -64
  11. package/dist/{chunk-28apmz4r.js.map → chunk-3gkfr9vb.js.map} +2 -2
  12. package/dist/{chunk-sctcs5zb.js → chunk-5akd1gbj.js} +22 -22
  13. package/dist/{chunk-cxa7yghg.js → chunk-7k19pcg8.js} +35 -35
  14. package/dist/{chunk-cxa7yghg.js.map → chunk-7k19pcg8.js.map} +2 -2
  15. package/dist/chunk-81tbfbmt.js +10 -0
  16. package/dist/chunk-81tbfbmt.js.map +10 -0
  17. package/dist/{chunk-h980hb2n.js → chunk-82qhv1mq.js} +20 -20
  18. package/dist/{chunk-h980hb2n.js.map → chunk-82qhv1mq.js.map} +2 -2
  19. package/dist/{chunk-59d0shyj.js → chunk-8dy7e2a9.js} +12 -12
  20. package/dist/{chunk-59d0shyj.js.map → chunk-8dy7e2a9.js.map} +2 -2
  21. package/dist/{chunk-51rcsavw.js → chunk-8f2sqmrj.js} +86 -86
  22. package/dist/chunk-8f2sqmrj.js.map +18 -0
  23. package/dist/{chunk-rbvctv1n.js → chunk-9hjeemfz.js} +9 -3
  24. package/dist/chunk-9hjeemfz.js.map +10 -0
  25. package/dist/{chunk-2fvydfkx.js → chunk-a4aa2ccv.js} +24 -24
  26. package/dist/{chunk-gz12qcf0.js → chunk-a9y2rwxf.js} +2 -2
  27. package/dist/{chunk-gz12qcf0.js.map → chunk-a9y2rwxf.js.map} +2 -2
  28. package/dist/{chunk-5fzgvn79.js → chunk-bsg215q3.js} +23 -23
  29. package/dist/{chunk-wk2qf31s.js → chunk-bxnfsc7w.js} +21 -21
  30. package/dist/{chunk-01xcc856.js → chunk-cngrf7ab.js} +21 -21
  31. package/dist/{chunk-r31q21h5.js → chunk-d7tprf06.js} +21 -21
  32. package/dist/{chunk-znx1fpfd.js → chunk-ddnrmkrv.js} +1 -1
  33. package/dist/{chunk-f361dwba.js → chunk-ejcm6zx8.js} +83 -81
  34. package/dist/chunk-ejcm6zx8.js.map +11 -0
  35. package/dist/{chunk-qwy57177.js → chunk-ezs352qs.js} +2 -2
  36. package/dist/{chunk-qwy57177.js.map → chunk-ezs352qs.js.map} +2 -2
  37. package/dist/{chunk-h9vbhhgr.js → chunk-fbtb3v0s.js} +54 -52
  38. package/dist/{chunk-h9vbhhgr.js.map → chunk-fbtb3v0s.js.map} +3 -3
  39. package/dist/{chunk-m9e3tbr8.js → chunk-gaknyw04.js} +1 -1
  40. package/dist/{chunk-bftftsgq.js → chunk-gxmny6tq.js} +22 -22
  41. package/dist/{chunk-93krf6ng.js → chunk-h7bj5zwb.js} +47 -47
  42. package/dist/{chunk-93krf6ng.js.map → chunk-h7bj5zwb.js.map} +2 -2
  43. package/dist/{chunk-8cahx7xc.js → chunk-hp4g7wx7.js} +5 -5
  44. package/dist/{chunk-61px0717.js → chunk-k778y16p.js} +1 -1
  45. package/dist/{chunk-91ckrvk8.js → chunk-mnwaext5.js} +15 -15
  46. package/dist/{chunk-91ckrvk8.js.map → chunk-mnwaext5.js.map} +2 -2
  47. package/dist/{chunk-cjsnkvq2.js → chunk-nkgs40ch.js} +3 -3
  48. package/dist/{chunk-69k45zg8.js → chunk-pz57vwsm.js} +22 -22
  49. package/dist/{chunk-8f20fk4n.js → chunk-r6kdp7gn.js} +2 -2
  50. package/dist/{chunk-1b62d730.js → chunk-rkvrkcgx.js} +21 -21
  51. package/dist/{chunk-6d4fmea5.js → chunk-s74rdyqe.js} +4 -4
  52. package/dist/{chunk-1a6kv9vt.js → chunk-sffqdkvq.js} +11 -7
  53. package/dist/chunk-sffqdkvq.js.map +10 -0
  54. package/dist/{chunk-fswhzdf5.js → chunk-tcs9qjps.js} +1 -1
  55. package/dist/{chunk-6ah5farg.js → chunk-wx83ep8e.js} +19 -18
  56. package/dist/{chunk-6ah5farg.js.map → chunk-wx83ep8e.js.map} +2 -2
  57. package/dist/{chunk-tsstrcfc.js → chunk-xag86ng3.js} +1 -1
  58. package/dist/{chunk-4q966ttx.js → chunk-xfdkep71.js} +21 -21
  59. package/dist/{chunk-g144wdrs.js → chunk-xhm1rfpt.js} +22 -22
  60. package/dist/{chunk-g144wdrs.js.map → chunk-xhm1rfpt.js.map} +3 -3
  61. package/dist/{chunk-66y0hr8c.js → chunk-xpcps28p.js} +57 -55
  62. package/dist/{chunk-66y0hr8c.js.map → chunk-xpcps28p.js.map} +2 -2
  63. package/dist/{chunk-9qx1t77a.js → chunk-yb4rbev9.js} +9 -9
  64. package/dist/cron.js +245 -233
  65. package/dist/cron.js.map +11 -11
  66. package/dist/hosted-agent.js +3 -3
  67. package/dist/main.js +11 -11
  68. package/dist/prompts.js +2 -2
  69. package/dist/prompts.js.map +2 -2
  70. package/dist/registry.js +10 -6
  71. package/dist/registry.js.map +3 -3
  72. package/dist/rollout.js +1 -1
  73. package/dist/runtime/cron/store.ts +24 -1
  74. package/dist/runtime/src/platform/config.ts +2 -2
  75. package/dist/runtime/src/storage/api-messages.ts +7 -5
  76. package/dist/runtime/src/storage/api-topics.ts +5 -2
  77. package/dist/runtime/src/storage/forum-db.ts +4 -1
  78. package/dist/runtime/src/storage/session-asks.ts +13 -5
  79. package/dist/runtime/src/storage/storage-contract.ts +54 -0
  80. package/dist/runtime/src/storage/storage-host.ts +89 -36
  81. package/dist/runtime/src/storage/storage-public-host.ts +16 -0
  82. package/dist/runtime/src/storage/storage-public.ts +21 -5
  83. package/dist/runtime/src/storage/token-stats.ts +1 -1
  84. package/dist/runtime/src/version.ts +1 -1
  85. package/dist/runtime-helpers.js +29 -18
  86. package/dist/runtime-helpers.js.map +7 -6
  87. package/dist/storage.js +260 -202
  88. package/dist/storage.js.map +10 -8
  89. package/dist/types/packages/core/src/storage/api-messages.d.ts +6 -6
  90. package/dist/types/packages/core/src/storage/api-topics.d.ts +20 -2
  91. package/dist/types/packages/core/src/storage/forum-db.d.ts +2 -1
  92. package/dist/types/packages/core/src/storage/session-asks.d.ts +3 -2
  93. package/dist/types/packages/core/src/storage/storage-contract.d.ts +46 -0
  94. package/dist/types/packages/core/src/storage/storage-host.d.ts +12 -19
  95. package/dist/types/packages/core/src/storage/storage-public-host.d.ts +7 -0
  96. package/dist/types/packages/core/src/storage/storage-public.d.ts +4 -2
  97. package/dist/types/packages/core/src/version.d.ts +1 -1
  98. package/dist/types/packages/module-cron/src/store.d.ts +22 -2
  99. package/dist/vault.js +2 -2
  100. package/dist/vault.js.map +2 -2
  101. package/package.json +1 -1
  102. package/dist/chunk-1a6kv9vt.js.map +0 -10
  103. package/dist/chunk-51rcsavw.js.map +0 -18
  104. package/dist/chunk-f361dwba.js.map +0 -11
  105. package/dist/chunk-pg1azh6n.js +0 -2
  106. package/dist/chunk-pg1azh6n.js.map +0 -9
  107. package/dist/chunk-rbvctv1n.js.map +0 -10
  108. /package/dist/{chunk-npd8n03v.js.map → chunk-03kv7mvj.js.map} +0 -0
  109. /package/dist/{chunk-jtrk0khr.js.map → chunk-0yfqyv88.js.map} +0 -0
  110. /package/dist/{chunk-sctcs5zb.js.map → chunk-5akd1gbj.js.map} +0 -0
  111. /package/dist/{chunk-2fvydfkx.js.map → chunk-a4aa2ccv.js.map} +0 -0
  112. /package/dist/{chunk-5fzgvn79.js.map → chunk-bsg215q3.js.map} +0 -0
  113. /package/dist/{chunk-wk2qf31s.js.map → chunk-bxnfsc7w.js.map} +0 -0
  114. /package/dist/{chunk-01xcc856.js.map → chunk-cngrf7ab.js.map} +0 -0
  115. /package/dist/{chunk-r31q21h5.js.map → chunk-d7tprf06.js.map} +0 -0
  116. /package/dist/{chunk-znx1fpfd.js.map → chunk-ddnrmkrv.js.map} +0 -0
  117. /package/dist/{chunk-m9e3tbr8.js.map → chunk-gaknyw04.js.map} +0 -0
  118. /package/dist/{chunk-bftftsgq.js.map → chunk-gxmny6tq.js.map} +0 -0
  119. /package/dist/{chunk-8cahx7xc.js.map → chunk-hp4g7wx7.js.map} +0 -0
  120. /package/dist/{chunk-61px0717.js.map → chunk-k778y16p.js.map} +0 -0
  121. /package/dist/{chunk-cjsnkvq2.js.map → chunk-nkgs40ch.js.map} +0 -0
  122. /package/dist/{chunk-69k45zg8.js.map → chunk-pz57vwsm.js.map} +0 -0
  123. /package/dist/{chunk-8f20fk4n.js.map → chunk-r6kdp7gn.js.map} +0 -0
  124. /package/dist/{chunk-1b62d730.js.map → chunk-rkvrkcgx.js.map} +0 -0
  125. /package/dist/{chunk-6d4fmea5.js.map → chunk-s74rdyqe.js.map} +0 -0
  126. /package/dist/{chunk-fswhzdf5.js.map → chunk-tcs9qjps.js.map} +0 -0
  127. /package/dist/{chunk-tsstrcfc.js.map → chunk-xag86ng3.js.map} +0 -0
  128. /package/dist/{chunk-4q966ttx.js.map → chunk-xfdkep71.js.map} +0 -0
  129. /package/dist/{chunk-9qx1t77a.js.map → chunk-yb4rbev9.js.map} +0 -0
@@ -5,7 +5,7 @@
5
5
  "import { db } from \"@negotium/core\";\n\nconst MAX_STORED_HISTORY = 500;\n\ninterface HistoryRow {\n text: string;\n}\n\ndb.exec(`\n CREATE TABLE IF NOT EXISTS terminal_input_history (\n seq INTEGER PRIMARY KEY AUTOINCREMENT,\n user_id TEXT NOT NULL,\n text TEXT NOT NULL,\n created_at INTEGER NOT NULL\n )\n`);\ndb.exec(\n \"CREATE INDEX IF NOT EXISTS idx_terminal_input_history_user_seq ON terminal_input_history(user_id, seq)\",\n);\n\nexport function loadTerminalInputHistory(userId: string, limit = 200): string[] {\n const safeLimit = Math.max(1, Math.min(limit, MAX_STORED_HISTORY));\n return db\n .query<HistoryRow, [string, number]>(\n `SELECT text FROM (\n SELECT seq, text\n FROM terminal_input_history\n WHERE user_id = ?\n ORDER BY seq DESC\n LIMIT ?\n ) ORDER BY seq ASC`,\n )\n .all(userId, safeLimit)\n .map((row) => row.text);\n}\n\nexport function appendTerminalInputHistory(userId: string, value: string): void {\n const text = value.trim();\n if (!text) return;\n db.transaction(() => {\n const latest = db\n .query<HistoryRow, [string]>(\n \"SELECT text FROM terminal_input_history WHERE user_id = ? ORDER BY seq DESC LIMIT 1\",\n )\n .get(userId);\n if (latest?.text === text) return;\n db.query(\"INSERT INTO terminal_input_history (user_id, text, created_at) VALUES (?, ?, ?)\").run(\n userId,\n text,\n Date.now(),\n );\n db.query(\n `DELETE FROM terminal_input_history\n WHERE user_id = ? AND seq NOT IN (\n SELECT seq FROM terminal_input_history\n WHERE user_id = ? ORDER BY seq DESC LIMIT ?\n )`,\n ).run(userId, userId, MAX_STORED_HISTORY);\n }).immediate();\n}\n",
6
6
  "import {\n type AgentKind,\n type BackgroundSessionDto,\n deleteVaultEntry,\n type EffortLevel,\n ensurePersonalGeneral,\n executeVaultCommand,\n getAllMessagesForTopic,\n getApiMessage,\n getVisibleTopics,\n listApiMessages,\n listBackgroundSessionsForUser,\n listRecentRuntimeEventsForTopic,\n listRunningTopicQueries,\n listVaultEntries,\n type MessageDto,\n type RuntimeBusEvent,\n runtimeBus,\n type SaveVaultEntryResult,\n saveVaultEntry,\n submitUserMessage,\n switchTopicEffort,\n switchTopicModel,\n type TopicDto,\n topicService,\n type VaultEntry,\n} from \"@negotium/core\";\nimport {\n NODE_CONTROL_BASE_PATH,\n NODE_CONTROL_PROTOCOL_VERSION,\n type NodeDaemonConnection,\n type NodeHandle,\n startDefaultNode,\n} from \"@negotium/node\";\nimport { appendTerminalInputHistory, loadTerminalInputHistory } from \"@/history-store\";\n\nexport type ClientResult<T> = T | Promise<T>;\n\nexport const MESSAGE_HISTORY_PAGE_SIZE = 50;\nexport const INITIAL_MESSAGE_HISTORY_PAGE_COUNT = 3;\nexport const INITIAL_MESSAGE_HISTORY_LIMIT =\n MESSAGE_HISTORY_PAGE_SIZE * INITIAL_MESSAGE_HISTORY_PAGE_COUNT;\n\nexport interface MessageHistoryPage {\n messages: MessageDto[];\n cursor?: string;\n hasMore: boolean;\n}\n\nexport interface NegotiumClient {\n start(onEvent: (event: RuntimeBusEvent) => void): Promise<void>;\n stop(): Promise<void>;\n listTopics(): ClientResult<TopicDto[]>;\n listBackgroundSessions?(): ClientResult<BackgroundSessionDto[]>;\n listMessages(topicId: string): ClientResult<MessageDto[]>;\n listMessagePage?(\n topicId: string,\n cursor?: string,\n limit?: number,\n ): ClientResult<MessageHistoryPage>;\n createTopic(title: string, agent?: AgentKind): ClientResult<TopicDto>;\n deriveTopic(topic: TopicDto, copyHistory: boolean, name?: string): Promise<TopicDto>;\n resetTopic(topic: TopicDto): Promise<string>;\n compactTopic(topic: TopicDto): Promise<string>;\n setModel(topic: TopicDto, model: string): ClientResult<string>;\n setEffort(topic: TopicDto, effort: EffortLevel): ClientResult<string>;\n deleteTopic(topic: TopicDto): Promise<void>;\n sendMessage(topic: TopicDto, text: string): ClientResult<MessageDto>;\n answerQuestion(\n topicId: string,\n messageId: string,\n label: string,\n ): ClientResult<{ ok: boolean; error?: string }>;\n abort(topicId: string): ClientResult<boolean>;\n runVaultCommand?(commandLine: string): ClientResult<string | null>;\n listVaultEntries?(): ClientResult<VaultEntry[]>;\n saveVaultEntry?(\n key: string,\n value: string,\n description: string,\n ): ClientResult<SaveVaultEntryResult>;\n deleteVaultEntry?(key: string): ClientResult<boolean>;\n listInputHistory?(): string[];\n appendInputHistory?(text: string): void;\n listRecentEvents?(topicId: string): ClientResult<RuntimeBusEvent[]>;\n}\n\nexport interface EmbeddedClientOptions {\n userId: string;\n port?: number;\n /** Start and own a node. False attaches to an already-running in-process node. */\n startNode?: boolean;\n}\n\n/**\n * Explicit in-process recovery/development host. The default CLI path uses\n * RemoteNegotiumClient so the UI does not own the node or active turns.\n */\nexport class EmbeddedNegotiumClient implements NegotiumClient {\n readonly #userId: string;\n readonly #port: number;\n readonly #startNode: boolean;\n #node: NodeHandle | null = null;\n #unsubscribe: (() => void) | null = null;\n #started = false;\n\n constructor(options: EmbeddedClientOptions) {\n this.#userId = options.userId;\n this.#port = options.port ?? 0;\n this.#startNode = options.startNode !== false;\n }\n\n async start(onEvent: (event: RuntimeBusEvent) => void): Promise<void> {\n if (this.#started) return;\n this.#started = true;\n this.#unsubscribe = runtimeBus().subscribe(onEvent);\n try {\n if (this.#startNode) this.#node = await startDefaultNode({ port: this.#port });\n ensurePersonalGeneral(this.#userId);\n } catch (error) {\n this.#unsubscribe?.();\n this.#unsubscribe = null;\n this.#started = false;\n throw error;\n }\n }\n\n async stop(): Promise<void> {\n this.#unsubscribe?.();\n this.#unsubscribe = null;\n this.#started = false;\n const node = this.#node;\n this.#node = null;\n if (node) await node.stop();\n }\n\n listTopics(): TopicDto[] {\n const runningTopics = listRunningTopicQueries();\n return getVisibleTopics()\n .filter((topic) =>\n topic.participants.some((participant) => participant.userId === this.#userId),\n )\n .map((topic) => {\n const runningQueryId = runningTopics.get(topic.id);\n return { ...topic, running: Boolean(runningQueryId), runningQueryId };\n });\n }\n\n listBackgroundSessions(): BackgroundSessionDto[] {\n return listBackgroundSessionsForUser(this.#userId);\n }\n\n listMessages(topicId: string): MessageDto[] {\n const rows = getAllMessagesForTopic(topicId) as Array<{ id?: unknown }>;\n return rows\n .map((row) => (typeof row.id === \"string\" ? getApiMessage(topicId, row.id) : null))\n .filter((message): message is MessageDto => message !== null);\n }\n\n listMessagePage(\n topicId: string,\n cursor?: string,\n limit = MESSAGE_HISTORY_PAGE_SIZE,\n ): MessageHistoryPage {\n const result = listApiMessages(topicId, { cursor, limit });\n return { messages: result.page, cursor: result.cursor, hasMore: result.hasMore };\n }\n\n listRecentEvents(topicId: string): RuntimeBusEvent[] {\n return listRecentRuntimeEventsForTopic(topicId).map((event) => ({\n type: event.type,\n topicId: event.topicId,\n payload: event.payload,\n seq: event.seq,\n createdAt: event.createdAt,\n }));\n }\n\n createTopic(title: string, agent?: AgentKind): TopicDto {\n return topicService.create({\n title,\n userId: this.#userId,\n kind: \"agent\",\n ...(agent ? { agent } : {}),\n });\n }\n\n async deriveTopic(topic: TopicDto, copyHistory: boolean, name?: string): Promise<TopicDto> {\n const derived = await topicService.derive({\n sourceTopicId: topic.id,\n userId: this.#userId,\n copyHistory,\n ...(name ? { name } : {}),\n });\n if (!derived) throw new Error(`Failed to ${copyHistory ? \"fork\" : \"spawn\"} \"${topic.title}\"`);\n return derived;\n }\n\n async resetTopic(topic: TopicDto): Promise<string> {\n const result = await topicService.reset({\n topicId: topic.id,\n userId: this.#userId,\n reason: \"terminal-session-reset\",\n });\n if (result.isError) throw new Error(result.text);\n return result.text;\n }\n\n async compactTopic(topic: TopicDto): Promise<string> {\n const result = await topicService.compact({\n topicId: topic.id,\n userId: this.#userId,\n reason: \"terminal-session-compact\",\n });\n if (result.isError) throw new Error(result.text);\n return result.text;\n }\n\n setModel(topic: TopicDto, model: string): string {\n const result = switchTopicModel({ topicId: topic.id, userId: this.#userId, model });\n if (!result.ok) throw new Error(result.error);\n return result.text;\n }\n\n setEffort(topic: TopicDto, effort: EffortLevel): string {\n const result = switchTopicEffort({ topicId: topic.id, userId: this.#userId, effort });\n if (!result.ok) throw new Error(result.error);\n return result.text;\n }\n\n async deleteTopic(topic: TopicDto): Promise<void> {\n await topicService.delete({ topicId: topic.id, userId: this.#userId });\n }\n\n sendMessage(topic: TopicDto, text: string): MessageDto {\n return submitUserMessage({\n topic,\n userId: this.#userId,\n text,\n sourceAdapter: \"terminal\",\n visualTools: false,\n }).message;\n }\n\n answerQuestion(\n topicId: string,\n messageId: string,\n label: string,\n ): { ok: boolean; error?: string } {\n const result = topicService.answerQuestion(topicId, messageId, label, this.#userId);\n return result.ok ? { ok: true } : { ok: false, error: result.error };\n }\n\n abort(topicId: string): boolean {\n return topicService.abortTurn(topicId, this.#userId);\n }\n\n runVaultCommand(commandLine: string): string | null {\n return executeVaultCommand(this.#userId, commandLine);\n }\n\n listVaultEntries(): VaultEntry[] {\n return listVaultEntries(this.#userId);\n }\n\n saveVaultEntry(key: string, value: string, description: string): SaveVaultEntryResult {\n return saveVaultEntry(this.#userId, key, value, description);\n }\n\n deleteVaultEntry(key: string): boolean {\n return deleteVaultEntry(this.#userId, key);\n }\n\n listInputHistory(): string[] {\n return loadTerminalInputHistory(this.#userId);\n }\n\n appendInputHistory(text: string): void {\n appendTerminalInputHistory(this.#userId, text);\n }\n}\n\nexport interface RemoteClientOptions extends NodeDaemonConnection {\n userId: string;\n}\n\ninterface ApiEnvelope {\n ok?: boolean;\n error?: string;\n [key: string]: unknown;\n}\n\nfunction missingControlRoute(error: unknown): boolean {\n const message = error instanceof Error ? error.message : String(error);\n return /not found|http 404/i.test(message);\n}\n\nfunction parseLegacyVaultList(output: string | null): VaultEntry[] {\n if (!output || /vault is empty/i.test(output)) return [];\n return output\n .split(\"\\n\")\n .slice(1)\n .flatMap((line) => {\n const match = line.match(/^- ([A-Z][A-Z0-9_]*)(?:: (.*))?$/);\n return match?.[1] ? [{ key: match[1], description: match[2] ?? \"\" }] : [];\n });\n}\n\nfunction isSecureControlTransport(baseUrl: string): boolean {\n const url = new URL(baseUrl);\n if (url.protocol === \"https:\") return true;\n if (url.protocol !== \"http:\") return false;\n const hostname = url.hostname.toLowerCase();\n if (hostname === \"localhost\" || hostname === \"::1\" || hostname === \"[::1]\") return true;\n const octets = hostname.split(\".\");\n return (\n octets.length === 4 &&\n octets[0] === \"127\" &&\n octets.every((octet) => /^\\d{1,3}$/.test(octet) && Number(octet) <= 255)\n );\n}\n\n/** REST/SSE client. Stopping it only disconnects the UI; it never stops the node. */\nexport class RemoteNegotiumClient implements NegotiumClient {\n readonly #userId: string;\n readonly #baseUrl: string;\n readonly #token: string;\n #onEvent: ((event: RuntimeBusEvent) => void) | null = null;\n #eventAbort: AbortController | null = null;\n #eventTask: Promise<void> | null = null;\n #started = false;\n\n constructor(options: RemoteClientOptions) {\n this.#userId = options.userId;\n this.#baseUrl = options.baseUrl.replace(/\\/+$/, \"\");\n if (!isSecureControlTransport(this.#baseUrl)) {\n throw new Error(\"Remote node control requires HTTPS or loopback HTTP\");\n }\n this.#token = options.token;\n }\n\n async start(onEvent: (event: RuntimeBusEvent) => void): Promise<void> {\n if (this.#started) return;\n const session = await this.#request(`/session?user=${encodeURIComponent(this.#userId)}`);\n if (session.protocolVersion !== NODE_CONTROL_PROTOCOL_VERSION) {\n throw new Error(\n `Node protocol ${String(session.protocolVersion)} is incompatible with terminal protocol ${NODE_CONTROL_PROTOCOL_VERSION}`,\n );\n }\n const cursor = Number(session.cursor ?? 0);\n this.#onEvent = onEvent;\n this.#eventAbort = new AbortController();\n try {\n const first = await this.#openEventStream(cursor, this.#eventAbort.signal);\n this.#started = true;\n this.#eventTask = this.#runEventLoop(first, cursor, this.#eventAbort.signal);\n } catch (error) {\n this.#eventAbort = null;\n this.#onEvent = null;\n throw error;\n }\n }\n\n async stop(): Promise<void> {\n this.#started = false;\n this.#eventAbort?.abort();\n this.#eventAbort = null;\n await this.#eventTask?.catch(() => {});\n this.#eventTask = null;\n this.#onEvent = null;\n }\n\n async listTopics(): Promise<TopicDto[]> {\n const result = await this.#request(`/topics?user=${encodeURIComponent(this.#userId)}`);\n return (result.topics ?? []) as TopicDto[];\n }\n\n async listBackgroundSessions(): Promise<BackgroundSessionDto[]> {\n const result = await this.#request(\n `/background-sessions?user=${encodeURIComponent(this.#userId)}`,\n );\n return (result.sessions ?? []) as BackgroundSessionDto[];\n }\n\n async listMessages(topicId: string): Promise<MessageDto[]> {\n const result = await this.#request(\n `/topics/${encodeURIComponent(topicId)}/messages?user=${encodeURIComponent(this.#userId)}`,\n );\n return (result.messages ?? []) as MessageDto[];\n }\n\n async listMessagePage(\n topicId: string,\n cursor?: string,\n limit = MESSAGE_HISTORY_PAGE_SIZE,\n ): Promise<MessageHistoryPage> {\n const query = new URLSearchParams({ user: this.#userId, limit: String(limit) });\n if (cursor) query.set(\"cursor\", cursor);\n const result = await this.#request(\n `/topics/${encodeURIComponent(topicId)}/messages?${query.toString()}`,\n );\n return {\n messages: (result.messages ?? []) as MessageDto[],\n cursor: typeof result.cursor === \"string\" ? result.cursor : undefined,\n hasMore: result.hasMore === true,\n };\n }\n\n async listRecentEvents(topicId: string): Promise<RuntimeBusEvent[]> {\n const result = await this.#request(\n `/topics/${encodeURIComponent(topicId)}/recent-events?user=${encodeURIComponent(this.#userId)}`,\n );\n return (result.events ?? []) as RuntimeBusEvent[];\n }\n\n async createTopic(title: string, agent?: AgentKind): Promise<TopicDto> {\n const result = await this.#request(\"/topics\", {\n method: \"POST\",\n body: JSON.stringify({ userId: this.#userId, title, agent }),\n });\n return result.topic as TopicDto;\n }\n\n async deriveTopic(topic: TopicDto, copyHistory: boolean, name?: string): Promise<TopicDto> {\n const result = await this.#request(`/topics/${encodeURIComponent(topic.id)}/derive`, {\n method: \"POST\",\n body: JSON.stringify({ userId: this.#userId, copyHistory, ...(name ? { name } : {}) }),\n });\n return result.topic as TopicDto;\n }\n\n async resetTopic(topic: TopicDto): Promise<string> {\n const result = await this.#request(`/topics/${encodeURIComponent(topic.id)}/session/reset`, {\n method: \"POST\",\n body: JSON.stringify({ userId: this.#userId }),\n });\n return String(result.result ?? `Session reset for \"${topic.title}\".`);\n }\n\n async compactTopic(topic: TopicDto): Promise<string> {\n const result = await this.#request(\n `/topics/${encodeURIComponent(topic.id)}/session/compact`,\n {\n method: \"POST\",\n body: JSON.stringify({ userId: this.#userId }),\n },\n 180_000,\n );\n return String(result.result ?? `Compacted context for \"${topic.title}\".`);\n }\n\n async setModel(topic: TopicDto, model: string): Promise<string> {\n const result = await this.#request(`/topics/${encodeURIComponent(topic.id)}/model`, {\n method: \"POST\",\n body: JSON.stringify({ userId: this.#userId, model }),\n });\n return String(result.result ?? `Model set to '${model}'.`);\n }\n\n async setEffort(topic: TopicDto, effort: EffortLevel): Promise<string> {\n const result = await this.#request(`/topics/${encodeURIComponent(topic.id)}/effort`, {\n method: \"POST\",\n body: JSON.stringify({ userId: this.#userId, effort }),\n });\n return String(result.result ?? `Effort set to '${effort}'.`);\n }\n\n async deleteTopic(topic: TopicDto): Promise<void> {\n await this.#request(\n `/topics/${encodeURIComponent(topic.id)}?user=${encodeURIComponent(this.#userId)}`,\n { method: \"DELETE\" },\n );\n }\n\n async sendMessage(topic: TopicDto, text: string): Promise<MessageDto> {\n const result = await this.#request(`/topics/${encodeURIComponent(topic.id)}/messages`, {\n method: \"POST\",\n body: JSON.stringify({ userId: this.#userId, text }),\n });\n return result.message as MessageDto;\n }\n\n async answerQuestion(\n topicId: string,\n messageId: string,\n label: string,\n ): Promise<{ ok: boolean; error?: string }> {\n try {\n const result = await this.#request(`/questions/${encodeURIComponent(messageId)}/answer`, {\n method: \"POST\",\n body: JSON.stringify({ topicId, userId: this.#userId, label }),\n });\n return result.ok ? { ok: true } : { ok: false, error: result.error };\n } catch (error) {\n return { ok: false, error: error instanceof Error ? error.message : String(error) };\n }\n }\n\n async abort(topicId: string): Promise<boolean> {\n const result = await this.#request(`/topics/${encodeURIComponent(topicId)}/abort`, {\n method: \"POST\",\n body: JSON.stringify({ userId: this.#userId }),\n });\n return result.aborted === true;\n }\n\n async runVaultCommand(commandLine: string): Promise<string | null> {\n const result = await this.#request(\"/vault/command\", {\n method: \"POST\",\n body: JSON.stringify({ userId: this.#userId, commandLine }),\n });\n return typeof result.result === \"string\" ? result.result : null;\n }\n\n async listVaultEntries(): Promise<VaultEntry[]> {\n try {\n const result = await this.#request(`/vault?user=${encodeURIComponent(this.#userId)}`);\n return (result.entries ?? []) as VaultEntry[];\n } catch (error) {\n if (!missingControlRoute(error)) throw error;\n return parseLegacyVaultList(await this.runVaultCommand(\"/vault list\"));\n }\n }\n\n async saveVaultEntry(\n key: string,\n value: string,\n description: string,\n ): Promise<SaveVaultEntryResult> {\n try {\n const result = await this.#request(\"/vault\", {\n method: \"POST\",\n body: JSON.stringify({ userId: this.#userId, key, value, description }),\n });\n return result.result as SaveVaultEntryResult;\n } catch (error) {\n if (!missingControlRoute(error)) throw error;\n if (/\\s\\|\\s/.test(value)) {\n throw new Error(\"Restart the Negotium node before saving a secret containing ' | '.\");\n }\n const output = await this.runVaultCommand(\n // Always include the legacy value/description delimiter. Without it,\n // a multi-word value with an empty description is parsed by old nodes\n // as a one-word secret plus a description, silently corrupting it.\n `/vault set ${key} ${value} | ${description}`,\n );\n if (!output) throw new Error(\"Vault save failed.\");\n return { key, updated: output.startsWith(\"Updated\") };\n }\n }\n\n async deleteVaultEntry(key: string): Promise<boolean> {\n try {\n const result = await this.#request(\n `/vault?user=${encodeURIComponent(this.#userId)}&key=${encodeURIComponent(key)}`,\n { method: \"DELETE\" },\n );\n return result.deleted === true;\n } catch (error) {\n if (!missingControlRoute(error)) throw error;\n const output = await this.runVaultCommand(`/vault del ${key}`);\n return output?.startsWith(\"Deleted\") === true;\n }\n }\n\n listInputHistory(): string[] {\n return loadTerminalInputHistory(this.#userId);\n }\n\n appendInputHistory(text: string): void {\n appendTerminalInputHistory(this.#userId, text);\n }\n\n async #request(path: string, init: RequestInit = {}, timeoutMs = 15_000): Promise<ApiEnvelope> {\n const controller = new AbortController();\n const timer = setTimeout(() => controller.abort(), timeoutMs);\n try {\n const response = await fetch(`${this.#baseUrl}${NODE_CONTROL_BASE_PATH}${path}`, {\n ...init,\n signal: controller.signal,\n headers: {\n authorization: `Bearer ${this.#token}`,\n ...(init.body ? { \"content-type\": \"application/json\" } : {}),\n ...init.headers,\n },\n });\n const result = (await response.json().catch(() => ({}))) as ApiEnvelope;\n if (!response.ok || result.ok === false) {\n throw new Error(result.error || `Node request failed with HTTP ${response.status}`);\n }\n return result;\n } finally {\n clearTimeout(timer);\n }\n }\n\n async #openEventStream(after: number, signal: AbortSignal): Promise<Response> {\n const response = await fetch(\n `${this.#baseUrl}${NODE_CONTROL_BASE_PATH}/events?user=${encodeURIComponent(this.#userId)}&after=${after}`,\n {\n signal,\n headers: {\n accept: \"text/event-stream\",\n authorization: `Bearer ${this.#token}`,\n },\n },\n );\n if (!response.ok || !response.body) {\n const result = (await response.json().catch(() => ({}))) as ApiEnvelope;\n throw new Error(result.error || `Event stream failed with HTTP ${response.status}`);\n }\n return response;\n }\n\n async #runEventLoop(first: Response, initialCursor: number, signal: AbortSignal): Promise<void> {\n let response = first;\n let cursor = initialCursor;\n while (!signal.aborted) {\n try {\n cursor = await this.#consumeEventStream(response, cursor, signal);\n } catch {\n if (signal.aborted) break;\n }\n if (signal.aborted) break;\n await new Promise((resolvePromise) => setTimeout(resolvePromise, 250));\n try {\n response = await this.#openEventStream(cursor, signal);\n } catch {\n if (signal.aborted) break;\n await new Promise((resolvePromise) => setTimeout(resolvePromise, 750));\n }\n }\n }\n\n async #consumeEventStream(\n response: Response,\n initialCursor: number,\n signal: AbortSignal,\n ): Promise<number> {\n const reader = response.body?.getReader();\n if (!reader) return initialCursor;\n const decoder = new TextDecoder();\n let cursor = initialCursor;\n let buffer = \"\";\n while (!signal.aborted) {\n const { done, value } = await reader.read();\n if (done) break;\n buffer += decoder.decode(value, { stream: true }).replaceAll(\"\\r\\n\", \"\\n\");\n let boundary = buffer.indexOf(\"\\n\\n\");\n while (boundary >= 0) {\n const block = buffer.slice(0, boundary);\n buffer = buffer.slice(boundary + 2);\n const fields = new Map<string, string>();\n for (const line of block.split(\"\\n\")) {\n if (!line || line.startsWith(\":\")) continue;\n const separator = line.indexOf(\":\");\n if (separator < 0) continue;\n fields.set(line.slice(0, separator), line.slice(separator + 1).trimStart());\n }\n const id = Number.parseInt(fields.get(\"id\") ?? \"\", 10);\n if (Number.isFinite(id)) cursor = Math.max(cursor, id);\n if (fields.get(\"event\") === \"runtime\" && fields.has(\"data\")) {\n try {\n this.#onEvent?.(JSON.parse(fields.get(\"data\") ?? \"null\") as RuntimeBusEvent);\n } catch {\n // Ignore one malformed event without dropping the durable stream.\n }\n }\n boundary = buffer.indexOf(\"\\n\\n\");\n }\n }\n return cursor;\n }\n}\n"
7
7
  ],
8
- "mappings": "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",
9
- "debugId": "3199F591C8E387AA64756E2164756E21",
8
+ "mappings": "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",
9
+ "debugId": "098757144B7A04D564756E2164756E21",
10
10
  "names": []
11
11
  }
@@ -6,7 +6,7 @@ import {
6
6
  parseEnrollmentInvite,
7
7
  pendingEnrollmentPath,
8
8
  previewEnrollment
9
- } from "./chunk-8f20fk4n.js";
9
+ } from "./chunk-r6kdp7gn.js";
10
10
  import {
11
11
  configureOtiumCentral,
12
12
  listPeerNodes,
@@ -16,7 +16,7 @@ import {
16
16
  resolvePeerNodeByCellId,
17
17
  selfPeerNode,
18
18
  verifyPeerToken
19
- } from "./chunk-01xcc856.js";
19
+ } from "./chunk-cngrf7ab.js";
20
20
  import {
21
21
  assertSecureRelayUrl,
22
22
  isJoinPersisted,
@@ -24,7 +24,7 @@ import {
24
24
  loadJoin,
25
25
  parseInviteCode,
26
26
  saveJoin
27
- } from "./chunk-4q966ttx.js";
27
+ } from "./chunk-xfdkep71.js";
28
28
  import {
29
29
  acknowledgePeerTerminal,
30
30
  bindOtiumTopic,
@@ -52,7 +52,7 @@ import {
52
52
  unbindOtiumTopic,
53
53
  upsertPeerReplyOutbox,
54
54
  upsertPeerTerminalOutbox
55
- } from "./chunk-28apmz4r.js";
55
+ } from "./chunk-3gkfr9vb.js";
56
56
  import {
57
57
  MAX_PEER_INPUT_FILE_BYTES,
58
58
  MAX_PEER_INPUT_REQUEST_BYTES,
@@ -66,37 +66,37 @@ import {
66
66
  import {
67
67
  executeExternalUserTurn,
68
68
  flushSessionInbox
69
- } from "./chunk-93krf6ng.js";
69
+ } from "./chunk-h7bj5zwb.js";
70
70
  import {
71
71
  checkAgentAuth
72
- } from "./chunk-fswhzdf5.js";
72
+ } from "./chunk-tcs9qjps.js";
73
73
  import {
74
74
  sessionInboxPath
75
- } from "./chunk-cxa7yghg.js";
75
+ } from "./chunk-7k19pcg8.js";
76
76
  import {
77
77
  failInterruptedRemoteAskCallbacks
78
- } from "./chunk-59d0shyj.js";
78
+ } from "./chunk-8dy7e2a9.js";
79
79
  import {
80
80
  clearPendingAsk
81
- } from "./chunk-rbvctv1n.js";
81
+ } from "./chunk-9hjeemfz.js";
82
82
  import {
83
83
  registerPeerSessionBridge
84
84
  } from "./chunk-1k7t7bnx.js";
85
85
  import {
86
86
  deliverAskCallbackToCaller,
87
87
  registerPeerRuntimeBridge
88
- } from "./chunk-g144wdrs.js";
89
- import"./chunk-91ckrvk8.js";
88
+ } from "./chunk-xhm1rfpt.js";
89
+ import"./chunk-mnwaext5.js";
90
90
  import {
91
91
  errorResult,
92
92
  fileHooks,
93
93
  resolveAttachmentByFileId,
94
94
  resolveUploadedFilePathByFileId,
95
95
  setFileHooks
96
- } from "./chunk-66y0hr8c.js";
96
+ } from "./chunk-xpcps28p.js";
97
97
  import {
98
98
  runtimeBus
99
- } from "./chunk-h9vbhhgr.js";
99
+ } from "./chunk-fbtb3v0s.js";
100
100
  import {
101
101
  clearTopicSessionId,
102
102
  getTopic,
@@ -106,17 +106,17 @@ import {
106
106
  isTopicVisible,
107
107
  listTopics,
108
108
  upsertTopic
109
- } from "./chunk-f361dwba.js";
110
- import"./chunk-8cahx7xc.js";
109
+ } from "./chunk-ejcm6zx8.js";
110
+ import"./chunk-hp4g7wx7.js";
111
111
  import {
112
112
  getRegistry
113
- } from "./chunk-6d4fmea5.js";
114
- import"./chunk-61px0717.js";
115
- import"./chunk-tsstrcfc.js";
113
+ } from "./chunk-s74rdyqe.js";
114
+ import"./chunk-k778y16p.js";
115
+ import"./chunk-xag86ng3.js";
116
116
  import {
117
117
  getApiTopicConfig,
118
118
  setApiTopicConfig
119
- } from "./chunk-6ah5farg.js";
119
+ } from "./chunk-wx83ep8e.js";
120
120
  import {
121
121
  NEGOTIUM_VERSION,
122
122
  OPTIONAL_FORUM_MCP_SERVERS,
@@ -129,8 +129,8 @@ import {
129
129
  vaultDel,
130
130
  vaultList,
131
131
  vaultSet
132
- } from "./chunk-41ygvg5k.js";
133
- import"./chunk-m9e3tbr8.js";
132
+ } from "./chunk-00q25k7p.js";
133
+ import"./chunk-gaknyw04.js";
134
134
  import {
135
135
  appendJsonlEntry
136
136
  } from "./chunk-mh5mexsf.js";
@@ -139,21 +139,21 @@ import {
139
139
  MAX_TELL_DEPTH,
140
140
  SUPPORTED_AGENTS,
141
141
  isAgentKind
142
- } from "./chunk-qwy57177.js";
142
+ } from "./chunk-ezs352qs.js";
143
143
  import {
144
144
  registerCanonicalMcpBridgeEnvProvider
145
145
  } from "./chunk-j0kjscb7.js";
146
146
  import {
147
147
  abortRoom,
148
148
  getRoomQuery
149
- } from "./chunk-h980hb2n.js";
149
+ } from "./chunk-82qhv1mq.js";
150
150
  import {
151
151
  logger
152
152
  } from "./chunk-ffefbd3r.js";
153
- import"./chunk-pg1azh6n.js";
154
153
  import {
155
- storageDatabase
156
- } from "./chunk-1a6kv9vt.js";
154
+ db
155
+ } from "./chunk-81tbfbmt.js";
156
+ import"./chunk-sffqdkvq.js";
157
157
  import"./chunk-f5xgprg1.js";
158
158
  import"./chunk-hwy3n31w.js";
159
159
 
@@ -679,7 +679,7 @@ import { randomUUID as randomUUID2 } from "crypto";
679
679
  import { copyFileSync, mkdirSync, rmSync, statSync } from "fs";
680
680
  import { basename, extname, join } from "path";
681
681
  var PEER_FILES_DIR = join(DATA_DIR, "otium-peer-files");
682
- storageDatabase.exec(`
682
+ db.exec(`
683
683
  CREATE TABLE IF NOT EXISTS otium_peer_files (
684
684
  id TEXT PRIMARY KEY,
685
685
  topic_id TEXT,
@@ -709,7 +709,7 @@ function attachment(row) {
709
709
  };
710
710
  }
711
711
  function rowFor(fileId) {
712
- return storageDatabase.query("SELECT * FROM otium_peer_files WHERE id = ?").get(fileId) ?? null;
712
+ return db.query("SELECT * FROM otium_peer_files WHERE id = ?").get(fileId) ?? null;
713
713
  }
714
714
  function peerFileAllowsAccess(fileId, access) {
715
715
  const row = rowFor(fileId);
@@ -735,7 +735,7 @@ function mimeFromPath(path) {
735
735
  return known[extension] ?? "application/octet-stream";
736
736
  }
737
737
  function recordFile(args) {
738
- storageDatabase.run(`INSERT INTO otium_peer_files
738
+ db.run(`INSERT INTO otium_peer_files
739
739
  (id, topic_id, owner_user_id, filename, mime_type, size_bytes, path, created_at)
740
740
  VALUES (?, ?, ?, ?, ?, ?, ?, ?)`, [
741
741
  args.id,
@@ -765,8 +765,8 @@ function insertLocalFile(args) {
765
765
  return recordFile({ id, path, sizeBytes: statSync(path).size, ...args });
766
766
  }
767
767
  function deletePeerFilesForTopic(topicId) {
768
- const rows = storageDatabase.query("SELECT path FROM otium_peer_files WHERE topic_id = ?").all(topicId);
769
- storageDatabase.run("DELETE FROM otium_peer_files WHERE topic_id = ?", [topicId]);
768
+ const rows = db.query("SELECT path FROM otium_peer_files WHERE topic_id = ?").all(topicId);
769
+ db.run("DELETE FROM otium_peer_files WHERE topic_id = ?", [topicId]);
770
770
  for (const row of rows)
771
771
  rmSync(row.path, { force: true });
772
772
  }
@@ -2933,4 +2933,4 @@ export {
2933
2933
  PEER_PROTOCOL_VERSION
2934
2934
  };
2935
2935
 
2936
- //# debugId=AFA40C5EA9E37A1664756E2164756E21
2936
+ //# debugId=F8CF1BBB03F509B664756E2164756E21