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.
- package/README.md +11 -2
- package/dist/{chunk-41ygvg5k.js → chunk-00q25k7p.js} +4 -4
- package/dist/{chunk-41ygvg5k.js.map → chunk-00q25k7p.js.map} +2 -2
- package/dist/{chunk-npd8n03v.js → chunk-03kv7mvj.js} +22 -22
- package/dist/{chunk-beqhdr9w.js → chunk-05pm51dh.js} +31 -31
- package/dist/{chunk-beqhdr9w.js.map → chunk-05pm51dh.js.map} +2 -2
- package/dist/{chunk-wx7ag4dd.js → chunk-0eh16bk1.js} +32 -32
- package/dist/{chunk-wx7ag4dd.js.map → chunk-0eh16bk1.js.map} +2 -2
- package/dist/{chunk-jtrk0khr.js → chunk-0yfqyv88.js} +6 -6
- package/dist/{chunk-28apmz4r.js → chunk-3gkfr9vb.js} +64 -64
- package/dist/{chunk-28apmz4r.js.map → chunk-3gkfr9vb.js.map} +2 -2
- package/dist/{chunk-sctcs5zb.js → chunk-5akd1gbj.js} +22 -22
- package/dist/{chunk-cxa7yghg.js → chunk-7k19pcg8.js} +35 -35
- package/dist/{chunk-cxa7yghg.js.map → chunk-7k19pcg8.js.map} +2 -2
- package/dist/chunk-81tbfbmt.js +10 -0
- package/dist/chunk-81tbfbmt.js.map +10 -0
- package/dist/{chunk-h980hb2n.js → chunk-82qhv1mq.js} +20 -20
- package/dist/{chunk-h980hb2n.js.map → chunk-82qhv1mq.js.map} +2 -2
- package/dist/{chunk-59d0shyj.js → chunk-8dy7e2a9.js} +12 -12
- package/dist/{chunk-59d0shyj.js.map → chunk-8dy7e2a9.js.map} +2 -2
- package/dist/{chunk-51rcsavw.js → chunk-8f2sqmrj.js} +86 -86
- package/dist/chunk-8f2sqmrj.js.map +18 -0
- package/dist/{chunk-rbvctv1n.js → chunk-9hjeemfz.js} +9 -3
- package/dist/chunk-9hjeemfz.js.map +10 -0
- package/dist/{chunk-2fvydfkx.js → chunk-a4aa2ccv.js} +24 -24
- package/dist/{chunk-gz12qcf0.js → chunk-a9y2rwxf.js} +2 -2
- package/dist/{chunk-gz12qcf0.js.map → chunk-a9y2rwxf.js.map} +2 -2
- package/dist/{chunk-5fzgvn79.js → chunk-bsg215q3.js} +23 -23
- package/dist/{chunk-wk2qf31s.js → chunk-bxnfsc7w.js} +21 -21
- package/dist/{chunk-01xcc856.js → chunk-cngrf7ab.js} +21 -21
- package/dist/{chunk-r31q21h5.js → chunk-d7tprf06.js} +21 -21
- package/dist/{chunk-znx1fpfd.js → chunk-ddnrmkrv.js} +1 -1
- package/dist/{chunk-f361dwba.js → chunk-ejcm6zx8.js} +83 -81
- package/dist/chunk-ejcm6zx8.js.map +11 -0
- package/dist/{chunk-qwy57177.js → chunk-ezs352qs.js} +2 -2
- package/dist/{chunk-qwy57177.js.map → chunk-ezs352qs.js.map} +2 -2
- package/dist/{chunk-h9vbhhgr.js → chunk-fbtb3v0s.js} +54 -52
- package/dist/{chunk-h9vbhhgr.js.map → chunk-fbtb3v0s.js.map} +3 -3
- package/dist/{chunk-m9e3tbr8.js → chunk-gaknyw04.js} +1 -1
- package/dist/{chunk-bftftsgq.js → chunk-gxmny6tq.js} +22 -22
- package/dist/{chunk-93krf6ng.js → chunk-h7bj5zwb.js} +47 -47
- package/dist/{chunk-93krf6ng.js.map → chunk-h7bj5zwb.js.map} +2 -2
- package/dist/{chunk-8cahx7xc.js → chunk-hp4g7wx7.js} +5 -5
- package/dist/{chunk-61px0717.js → chunk-k778y16p.js} +1 -1
- package/dist/{chunk-91ckrvk8.js → chunk-mnwaext5.js} +15 -15
- package/dist/{chunk-91ckrvk8.js.map → chunk-mnwaext5.js.map} +2 -2
- package/dist/{chunk-cjsnkvq2.js → chunk-nkgs40ch.js} +3 -3
- package/dist/{chunk-69k45zg8.js → chunk-pz57vwsm.js} +22 -22
- package/dist/{chunk-8f20fk4n.js → chunk-r6kdp7gn.js} +2 -2
- package/dist/{chunk-1b62d730.js → chunk-rkvrkcgx.js} +21 -21
- package/dist/{chunk-6d4fmea5.js → chunk-s74rdyqe.js} +4 -4
- package/dist/{chunk-1a6kv9vt.js → chunk-sffqdkvq.js} +11 -7
- package/dist/chunk-sffqdkvq.js.map +10 -0
- package/dist/{chunk-fswhzdf5.js → chunk-tcs9qjps.js} +1 -1
- package/dist/{chunk-6ah5farg.js → chunk-wx83ep8e.js} +19 -18
- package/dist/{chunk-6ah5farg.js.map → chunk-wx83ep8e.js.map} +2 -2
- package/dist/{chunk-tsstrcfc.js → chunk-xag86ng3.js} +1 -1
- package/dist/{chunk-4q966ttx.js → chunk-xfdkep71.js} +21 -21
- package/dist/{chunk-g144wdrs.js → chunk-xhm1rfpt.js} +22 -22
- package/dist/{chunk-g144wdrs.js.map → chunk-xhm1rfpt.js.map} +3 -3
- package/dist/{chunk-66y0hr8c.js → chunk-xpcps28p.js} +57 -55
- package/dist/{chunk-66y0hr8c.js.map → chunk-xpcps28p.js.map} +2 -2
- package/dist/{chunk-9qx1t77a.js → chunk-yb4rbev9.js} +9 -9
- package/dist/cron.js +245 -233
- package/dist/cron.js.map +11 -11
- package/dist/hosted-agent.js +3 -3
- package/dist/main.js +11 -11
- package/dist/prompts.js +2 -2
- package/dist/prompts.js.map +2 -2
- package/dist/registry.js +10 -6
- package/dist/registry.js.map +3 -3
- package/dist/rollout.js +1 -1
- package/dist/runtime/cron/store.ts +24 -1
- package/dist/runtime/src/platform/config.ts +2 -2
- package/dist/runtime/src/storage/api-messages.ts +7 -5
- package/dist/runtime/src/storage/api-topics.ts +5 -2
- package/dist/runtime/src/storage/forum-db.ts +4 -1
- package/dist/runtime/src/storage/session-asks.ts +13 -5
- package/dist/runtime/src/storage/storage-contract.ts +54 -0
- package/dist/runtime/src/storage/storage-host.ts +89 -36
- package/dist/runtime/src/storage/storage-public-host.ts +16 -0
- package/dist/runtime/src/storage/storage-public.ts +21 -5
- package/dist/runtime/src/storage/token-stats.ts +1 -1
- package/dist/runtime/src/version.ts +1 -1
- package/dist/runtime-helpers.js +29 -18
- package/dist/runtime-helpers.js.map +7 -6
- package/dist/storage.js +260 -202
- package/dist/storage.js.map +10 -8
- package/dist/types/packages/core/src/storage/api-messages.d.ts +6 -6
- package/dist/types/packages/core/src/storage/api-topics.d.ts +20 -2
- package/dist/types/packages/core/src/storage/forum-db.d.ts +2 -1
- package/dist/types/packages/core/src/storage/session-asks.d.ts +3 -2
- package/dist/types/packages/core/src/storage/storage-contract.d.ts +46 -0
- package/dist/types/packages/core/src/storage/storage-host.d.ts +12 -19
- package/dist/types/packages/core/src/storage/storage-public-host.d.ts +7 -0
- package/dist/types/packages/core/src/storage/storage-public.d.ts +4 -2
- package/dist/types/packages/core/src/version.d.ts +1 -1
- package/dist/types/packages/module-cron/src/store.d.ts +22 -2
- package/dist/vault.js +2 -2
- package/dist/vault.js.map +2 -2
- package/package.json +1 -1
- package/dist/chunk-1a6kv9vt.js.map +0 -10
- package/dist/chunk-51rcsavw.js.map +0 -18
- package/dist/chunk-f361dwba.js.map +0 -11
- package/dist/chunk-pg1azh6n.js +0 -2
- package/dist/chunk-pg1azh6n.js.map +0 -9
- package/dist/chunk-rbvctv1n.js.map +0 -10
- /package/dist/{chunk-npd8n03v.js.map → chunk-03kv7mvj.js.map} +0 -0
- /package/dist/{chunk-jtrk0khr.js.map → chunk-0yfqyv88.js.map} +0 -0
- /package/dist/{chunk-sctcs5zb.js.map → chunk-5akd1gbj.js.map} +0 -0
- /package/dist/{chunk-2fvydfkx.js.map → chunk-a4aa2ccv.js.map} +0 -0
- /package/dist/{chunk-5fzgvn79.js.map → chunk-bsg215q3.js.map} +0 -0
- /package/dist/{chunk-wk2qf31s.js.map → chunk-bxnfsc7w.js.map} +0 -0
- /package/dist/{chunk-01xcc856.js.map → chunk-cngrf7ab.js.map} +0 -0
- /package/dist/{chunk-r31q21h5.js.map → chunk-d7tprf06.js.map} +0 -0
- /package/dist/{chunk-znx1fpfd.js.map → chunk-ddnrmkrv.js.map} +0 -0
- /package/dist/{chunk-m9e3tbr8.js.map → chunk-gaknyw04.js.map} +0 -0
- /package/dist/{chunk-bftftsgq.js.map → chunk-gxmny6tq.js.map} +0 -0
- /package/dist/{chunk-8cahx7xc.js.map → chunk-hp4g7wx7.js.map} +0 -0
- /package/dist/{chunk-61px0717.js.map → chunk-k778y16p.js.map} +0 -0
- /package/dist/{chunk-cjsnkvq2.js.map → chunk-nkgs40ch.js.map} +0 -0
- /package/dist/{chunk-69k45zg8.js.map → chunk-pz57vwsm.js.map} +0 -0
- /package/dist/{chunk-8f20fk4n.js.map → chunk-r6kdp7gn.js.map} +0 -0
- /package/dist/{chunk-1b62d730.js.map → chunk-rkvrkcgx.js.map} +0 -0
- /package/dist/{chunk-6d4fmea5.js.map → chunk-s74rdyqe.js.map} +0 -0
- /package/dist/{chunk-fswhzdf5.js.map → chunk-tcs9qjps.js.map} +0 -0
- /package/dist/{chunk-tsstrcfc.js.map → chunk-xag86ng3.js.map} +0 -0
- /package/dist/{chunk-4q966ttx.js.map → chunk-xfdkep71.js.map} +0 -0
- /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": "
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
69
|
+
} from "./chunk-h7bj5zwb.js";
|
|
70
70
|
import {
|
|
71
71
|
checkAgentAuth
|
|
72
|
-
} from "./chunk-
|
|
72
|
+
} from "./chunk-tcs9qjps.js";
|
|
73
73
|
import {
|
|
74
74
|
sessionInboxPath
|
|
75
|
-
} from "./chunk-
|
|
75
|
+
} from "./chunk-7k19pcg8.js";
|
|
76
76
|
import {
|
|
77
77
|
failInterruptedRemoteAskCallbacks
|
|
78
|
-
} from "./chunk-
|
|
78
|
+
} from "./chunk-8dy7e2a9.js";
|
|
79
79
|
import {
|
|
80
80
|
clearPendingAsk
|
|
81
|
-
} from "./chunk-
|
|
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-
|
|
89
|
-
import"./chunk-
|
|
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-
|
|
96
|
+
} from "./chunk-xpcps28p.js";
|
|
97
97
|
import {
|
|
98
98
|
runtimeBus
|
|
99
|
-
} from "./chunk-
|
|
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-
|
|
110
|
-
import"./chunk-
|
|
109
|
+
} from "./chunk-ejcm6zx8.js";
|
|
110
|
+
import"./chunk-hp4g7wx7.js";
|
|
111
111
|
import {
|
|
112
112
|
getRegistry
|
|
113
|
-
} from "./chunk-
|
|
114
|
-
import"./chunk-
|
|
115
|
-
import"./chunk-
|
|
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-
|
|
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-
|
|
133
|
-
import"./chunk-
|
|
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-
|
|
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-
|
|
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
|
-
|
|
156
|
-
} from "./chunk-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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 =
|
|
769
|
-
|
|
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=
|
|
2936
|
+
//# debugId=F8CF1BBB03F509B664756E2164756E21
|