natroc 0.0.3 → 0.0.5
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 +343 -0
- package/package.json +2 -1
- package/server/dist/app.js +37 -0
- package/server/dist/app.js.map +1 -1
- package/server/dist/channels/channel-runtime.d.ts +3 -4
- package/server/dist/channels/channel-runtime.js +5 -15
- package/server/dist/channels/channel-runtime.js.map +1 -1
- package/server/dist/cli/agent-deliver.d.ts +0 -2
- package/server/dist/cli/agent-deliver.js +1 -14
- package/server/dist/cli/agent-deliver.js.map +1 -1
- package/server/dist/cli/cli-token.js +0 -5
- package/server/dist/cli/cli-token.js.map +1 -1
- package/server/dist/cli/daemon.d.ts +2 -16
- package/server/dist/cli/daemon.js +5 -37
- package/server/dist/cli/daemon.js.map +1 -1
- package/server/dist/cli/setup.d.ts +0 -1
- package/server/dist/cli/setup.js +2 -20
- package/server/dist/cli/setup.js.map +1 -1
- package/server/dist/gateway/agent-service.d.ts +4 -4
- package/server/dist/gateway/agent-service.js +27 -7
- package/server/dist/gateway/agent-service.js.map +1 -1
- package/server/dist/gateway/connection.d.ts +6 -15
- package/server/dist/gateway/connection.js +12 -23
- package/server/dist/gateway/connection.js.map +1 -1
- package/server/dist/gateway/gateway.d.ts +2 -31
- package/server/dist/gateway/gateway.js +6 -34
- package/server/dist/gateway/gateway.js.map +1 -1
- package/server/dist/gateway/index.d.ts +0 -1
- package/server/dist/gateway/index.js +0 -1
- package/server/dist/gateway/index.js.map +1 -1
- package/server/dist/gateway/protocol.d.ts +12 -22
- package/server/dist/gateway/protocol.js +1 -4
- package/server/dist/gateway/protocol.js.map +1 -1
- package/server/dist/gateway/rpc/agent.d.ts +0 -1
- package/server/dist/gateway/rpc/agent.js +0 -1
- package/server/dist/gateway/rpc/agent.js.map +1 -1
- package/server/dist/gateway/rpc/auth.d.ts +0 -1
- package/server/dist/gateway/rpc/auth.js +0 -1
- package/server/dist/gateway/rpc/auth.js.map +1 -1
- package/server/dist/gateway/rpc/channels.js +0 -1
- package/server/dist/gateway/rpc/channels.js.map +1 -1
- package/server/dist/gateway/rpc/conversations.d.ts +0 -1
- package/server/dist/gateway/rpc/conversations.js +0 -1
- package/server/dist/gateway/rpc/conversations.js.map +1 -1
- package/server/dist/gateway/rpc/projects.d.ts +0 -1
- package/server/dist/gateway/rpc/projects.js +0 -1
- package/server/dist/gateway/rpc/projects.js.map +1 -1
- package/server/dist/gateway/rpc/providers.d.ts +0 -1
- package/server/dist/gateway/rpc/providers.js +0 -1
- package/server/dist/gateway/rpc/providers.js.map +1 -1
- package/server/dist/gateway/types.d.ts +1 -19
- package/server/dist/gateway/types.js +1 -5
- package/server/dist/gateway/types.js.map +1 -1
- package/server/dist/gateway/ws-server.d.ts +0 -6
- package/server/dist/gateway/ws-server.js +2 -6
- package/server/dist/gateway/ws-server.js.map +1 -1
- package/server/dist/runtime.d.ts +3 -3
- package/server/dist/storage/auth-repository.d.ts +1 -5
- package/server/dist/storage/auth-repository.js +1 -5
- package/server/dist/storage/auth-repository.js.map +1 -1
- package/server/dist/storage/channel-repository.d.ts +4 -4
- package/server/dist/storage/channel-repository.js +2 -2
- package/server/dist/storage/conversation-repository.d.ts +13 -0
- package/server/dist/storage/conversation-repository.js +83 -17
- package/server/dist/storage/conversation-repository.js.map +1 -1
- package/server/dist/storage/database.d.ts +1 -5
- package/server/dist/storage/database.js +4 -5
- package/server/dist/storage/database.js.map +1 -1
- package/server/dist/storage/tool-call-repository.d.ts +2 -0
- package/server/dist/storage/tool-call-repository.js +9 -6
- package/server/dist/storage/tool-call-repository.js.map +1 -1
- package/ui/dist/assets/{index-DKaFmZNO.js → index-BiVH3g6R.js} +2 -2
- package/ui/dist/index.html +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-deliver.js","sourceRoot":"","sources":["../../src/cli/agent-deliver.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"agent-deliver.js","sourceRoot":"","sources":["../../src/cli/agent-deliver.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Sub-command `natroc cli-token` (Milestone 9 helper): membuat session token
|
|
3
|
-
* untuk dipakai CLI yang nyambung ke gateway daemon, lalu menulisnya ke
|
|
4
|
-
* `~/.natroc/cli-token` dengan mode 0600.
|
|
5
|
-
*/
|
|
6
1
|
import { mkdir, writeFile } from "node:fs/promises";
|
|
7
2
|
import { join } from "node:path";
|
|
8
3
|
import { createLocalRuntime } from "../local-runtime.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-token.js","sourceRoot":"","sources":["../../src/cli/cli-token.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"cli-token.js","sourceRoot":"","sources":["../../src/cli/cli-token.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAExD,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,kBAAkB,EAAE,CAAA;IACrD,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,CAAA;IAE5C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CACb,6DAA6D,CAC9D,CAAA;IACH,CAAC;IAED,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;IAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,WAAW,CAAC,CAAA;IAE9C,MAAM,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAC5C,MAAM,SAAS,CAAC,QAAQ,EAAE,GAAG,OAAO,CAAC,KAAK,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;IAEhE,OAAO,CAAC,GAAG,CAAC,sBAAsB,QAAQ,EAAE,CAAC,CAAA;IAC7C,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAA;AAC7E,CAAC"}
|
|
@@ -1,22 +1,8 @@
|
|
|
1
|
-
/** Entrypoint sub-command `daemon`. */
|
|
2
1
|
export declare function runDaemon(subcommand: string | undefined): Promise<void>;
|
|
3
|
-
/**
|
|
4
|
-
* Cek apakah service Natroc sudah terpasang di OS ini.
|
|
5
|
-
* - Linux: file `~/.config/systemd/user/natroc.service` ada.
|
|
6
|
-
* - macOS: file `~/Library/LaunchAgents/ai.natroc.gateway.plist` ada.
|
|
7
|
-
* - Windows: `schtasks /Query /TN Natroc` exit 0.
|
|
8
|
-
*/
|
|
9
2
|
export declare function isServiceInstalled(): Promise<boolean>;
|
|
10
|
-
/**
|
|
11
|
-
* Install + start service tanpa cetak ke console (output dikuasai
|
|
12
|
-
* `@clack/prompts` di `natroc setup`). Idempoten via `isServiceInstalled`.
|
|
13
|
-
*/
|
|
3
|
+
/** Install + start the platform service with all stdout/stderr suppressed. */
|
|
14
4
|
export declare function installServiceQuiet(): Promise<void>;
|
|
15
|
-
/**
|
|
16
|
-
* TCP-probe `host:port` setiap `intervalMs` sampai connect berhasil atau
|
|
17
|
-
* `timeoutMs` lewat. Dipakai untuk konfirmasi gateway listening setelah
|
|
18
|
-
* service di-start.
|
|
19
|
-
*/
|
|
5
|
+
/** Resolve when a TCP listener is accepting connections on host:port. */
|
|
20
6
|
export declare function waitForPort(host: string, port: number, opts?: {
|
|
21
7
|
timeoutMs?: number;
|
|
22
8
|
intervalMs?: number;
|
|
@@ -1,14 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Daemon lifecycle (Milestone 7): generate + install service file per OS,
|
|
3
|
-
* lalu serahkan ke supervisor sistem (systemd / launchd / schtasks) untuk
|
|
4
|
-
* jaga gateway tetap hidup di latar belakang.
|
|
5
|
-
*
|
|
6
|
-
* Sub-perintah:
|
|
7
|
-
* - `natroc daemon install` pasang service & start.
|
|
8
|
-
* - `natroc daemon uninstall` hentikan service & hapus file unit.
|
|
9
|
-
* - `natroc daemon status` cek status service.
|
|
10
|
-
* - `natroc daemon run` alias `natroc server` — dipanggil supervisor.
|
|
11
|
-
*/
|
|
12
1
|
import { execFile } from "node:child_process";
|
|
13
2
|
import { access, mkdir, rm, writeFile } from "node:fs/promises";
|
|
14
3
|
import { createConnection } from "node:net";
|
|
@@ -16,10 +5,8 @@ import { homedir, platform } from "node:os";
|
|
|
16
5
|
import { join } from "node:path";
|
|
17
6
|
import { promisify } from "node:util";
|
|
18
7
|
import { getNatrocPaths } from "../config/natroc-home.js";
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
* Tidak rentan injection karena tidak ada interpolasi shell.
|
|
22
|
-
*/
|
|
8
|
+
// execFile (no shell) — arguments are passed through verbatim so no shell
|
|
9
|
+
// interpolation occurs.
|
|
23
10
|
const runProcess = promisify(execFile);
|
|
24
11
|
const SERVICE_LABEL = "ai.natroc.gateway";
|
|
25
12
|
const SERVICE_DESCRIPTION = "Natroc gateway daemon";
|
|
@@ -32,7 +19,6 @@ function resolveDaemonPaths() {
|
|
|
32
19
|
servicesDir: join(paths.root, "services"),
|
|
33
20
|
};
|
|
34
21
|
}
|
|
35
|
-
/** Entrypoint sub-command `daemon`. */
|
|
36
22
|
export async function runDaemon(subcommand) {
|
|
37
23
|
const paths = resolveDaemonPaths();
|
|
38
24
|
await mkdir(paths.logDir, { recursive: true });
|
|
@@ -48,7 +34,6 @@ export async function runDaemon(subcommand) {
|
|
|
48
34
|
await statusService();
|
|
49
35
|
return;
|
|
50
36
|
case "run":
|
|
51
|
-
// Alias `server` — biarkan caller (cli.ts) yang panggil startServer.
|
|
52
37
|
throw new Error("`daemon run` must be dispatched via cli.ts");
|
|
53
38
|
default:
|
|
54
39
|
printDaemonHelp();
|
|
@@ -111,7 +96,6 @@ async function statusService() {
|
|
|
111
96
|
console.log(`Daemon mode is not supported on ${platform()}.`);
|
|
112
97
|
}
|
|
113
98
|
}
|
|
114
|
-
// ---------- systemd (Linux/WSL) ----------
|
|
115
99
|
const SYSTEMD_UNIT_DIR = join(homedir(), ".config", "systemd", "user");
|
|
116
100
|
const SYSTEMD_UNIT_PATH = join(SYSTEMD_UNIT_DIR, "natroc.service");
|
|
117
101
|
async function installSystemd(paths) {
|
|
@@ -155,7 +139,6 @@ async function uninstallSystemd() {
|
|
|
155
139
|
await runProcess("systemctl", ["--user", "daemon-reload"]).catch(() => undefined);
|
|
156
140
|
console.log(`Removed: ${SYSTEMD_UNIT_PATH}`);
|
|
157
141
|
}
|
|
158
|
-
// ---------- launchd (macOS) ----------
|
|
159
142
|
const LAUNCH_AGENTS_DIR = join(homedir(), "Library", "LaunchAgents");
|
|
160
143
|
const LAUNCH_AGENT_PATH = join(LAUNCH_AGENTS_DIR, `${SERVICE_LABEL}.plist`);
|
|
161
144
|
async function installLaunchAgent(paths) {
|
|
@@ -196,7 +179,7 @@ async function installLaunchAgent(paths) {
|
|
|
196
179
|
]);
|
|
197
180
|
}
|
|
198
181
|
catch (error) {
|
|
199
|
-
// Fallback
|
|
182
|
+
// Fallback for macOS pre-Catalina (no `bootstrap` subcommand).
|
|
200
183
|
console.warn(`launchctl bootstrap failed (${error instanceof Error ? error.message : "unknown"}); falling back to legacy load.`);
|
|
201
184
|
await runProcess("launchctl", ["load", "-w", LAUNCH_AGENT_PATH]);
|
|
202
185
|
}
|
|
@@ -212,7 +195,6 @@ async function uninstallLaunchAgent() {
|
|
|
212
195
|
await rm(LAUNCH_AGENT_PATH, { force: true });
|
|
213
196
|
console.log(`Removed: ${LAUNCH_AGENT_PATH}`);
|
|
214
197
|
}
|
|
215
|
-
// ---------- Task Scheduler (Windows) ----------
|
|
216
198
|
async function installScheduledTask(paths) {
|
|
217
199
|
const tr = `"${paths.node}" "${paths.cli}" server`;
|
|
218
200
|
await runProcess("schtasks", [
|
|
@@ -250,13 +232,6 @@ async function runAndPrint(command, args) {
|
|
|
250
232
|
process.exitCode = 1;
|
|
251
233
|
}
|
|
252
234
|
}
|
|
253
|
-
// ---------- Public helpers (dipakai oleh `natroc setup` clack flow) ----------
|
|
254
|
-
/**
|
|
255
|
-
* Cek apakah service Natroc sudah terpasang di OS ini.
|
|
256
|
-
* - Linux: file `~/.config/systemd/user/natroc.service` ada.
|
|
257
|
-
* - macOS: file `~/Library/LaunchAgents/ai.natroc.gateway.plist` ada.
|
|
258
|
-
* - Windows: `schtasks /Query /TN Natroc` exit 0.
|
|
259
|
-
*/
|
|
260
235
|
export async function isServiceInstalled() {
|
|
261
236
|
switch (platform()) {
|
|
262
237
|
case "linux":
|
|
@@ -275,10 +250,7 @@ export async function isServiceInstalled() {
|
|
|
275
250
|
return false;
|
|
276
251
|
}
|
|
277
252
|
}
|
|
278
|
-
/**
|
|
279
|
-
* Install + start service tanpa cetak ke console (output dikuasai
|
|
280
|
-
* `@clack/prompts` di `natroc setup`). Idempoten via `isServiceInstalled`.
|
|
281
|
-
*/
|
|
253
|
+
/** Install + start the platform service with all stdout/stderr suppressed. */
|
|
282
254
|
export async function installServiceQuiet() {
|
|
283
255
|
const paths = resolveDaemonPaths();
|
|
284
256
|
await mkdir(paths.logDir, { recursive: true });
|
|
@@ -295,11 +267,7 @@ export async function installServiceQuiet() {
|
|
|
295
267
|
console.warn = originalWarn;
|
|
296
268
|
}
|
|
297
269
|
}
|
|
298
|
-
/**
|
|
299
|
-
* TCP-probe `host:port` setiap `intervalMs` sampai connect berhasil atau
|
|
300
|
-
* `timeoutMs` lewat. Dipakai untuk konfirmasi gateway listening setelah
|
|
301
|
-
* service di-start.
|
|
302
|
-
*/
|
|
270
|
+
/** Resolve when a TCP listener is accepting connections on host:port. */
|
|
303
271
|
export async function waitForPort(host, port, opts = {}) {
|
|
304
272
|
const timeoutMs = opts.timeoutMs ?? 15_000;
|
|
305
273
|
const intervalMs = opts.intervalMs ?? 250;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"daemon.js","sourceRoot":"","sources":["../../src/cli/daemon.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"daemon.js","sourceRoot":"","sources":["../../src/cli/daemon.ts"],"names":[],"mappings":"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"}
|
package/server/dist/cli/setup.js
CHANGED
|
@@ -1,13 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `natroc setup` — one-shot first-run experience.
|
|
3
|
-
*
|
|
4
|
-
* Banner + boxed loading steps via `@clack/prompts`, lalu auto-install
|
|
5
|
-
* service platform (systemd / launchd / Scheduled Task), tunggu port hidup,
|
|
6
|
-
* lalu print URL Web UI. Setelah selesai, kembali ke prompt — service
|
|
7
|
-
* tetap hidup di latar belakang.
|
|
8
|
-
*
|
|
9
|
-
* Idempoten: re-run aman. Step install di-skip kalau service sudah pasang.
|
|
10
|
-
*/
|
|
11
1
|
import { platform } from "node:os";
|
|
12
2
|
import { cancel, intro, log, note, outro, tasks, } from "@clack/prompts";
|
|
13
3
|
import { createLocalRuntime } from "../local-runtime.js";
|
|
@@ -16,7 +6,6 @@ const VERSION = "0.0.1";
|
|
|
16
6
|
const GATEWAY_HOST = "127.0.0.1";
|
|
17
7
|
const GATEWAY_PORT = 37789;
|
|
18
8
|
const GATEWAY_URL = `http://${GATEWAY_HOST}:${GATEWAY_PORT}`;
|
|
19
|
-
/** ASCII banner — sengaja simple, fit di 80 kolom. */
|
|
20
9
|
const BANNER = String.raw `
|
|
21
10
|
███╗ ██╗ █████╗ ████████╗██████╗ ██████╗ ██████╗
|
|
22
11
|
████╗ ██║██╔══██╗╚══██╔══╝██╔══██╗██╔═══██╗██╔════╝
|
|
@@ -25,9 +14,7 @@ const BANNER = String.raw `
|
|
|
25
14
|
██║ ╚████║██║ ██║ ██║ ██║ ██║╚██████╔╝╚██████╗
|
|
26
15
|
╚═╝ ╚═══╝╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═════╝
|
|
27
16
|
Personal AI Gateway`;
|
|
28
|
-
/** Entrypoint `natroc setup`. */
|
|
29
17
|
export async function runSetup() {
|
|
30
|
-
// Non-TTY (CI/Docker/piped): fallback plain output supaya tidak rusak.
|
|
31
18
|
if (!process.stdout.isTTY) {
|
|
32
19
|
await runSetupPlain();
|
|
33
20
|
return;
|
|
@@ -47,11 +34,7 @@ export async function runSetup() {
|
|
|
47
34
|
},
|
|
48
35
|
{
|
|
49
36
|
title: "Migrate database",
|
|
50
|
-
task: async () =>
|
|
51
|
-
// createLocalRuntime() di step 1 sudah memanggil migrateDatabase().
|
|
52
|
-
// Step ini hanya marker visual untuk UX.
|
|
53
|
-
return "Schema up to date";
|
|
54
|
-
},
|
|
37
|
+
task: async () => "Schema up to date",
|
|
55
38
|
},
|
|
56
39
|
{
|
|
57
40
|
title: "Install platform service",
|
|
@@ -94,11 +77,10 @@ export async function runSetup() {
|
|
|
94
77
|
" natroc daemon uninstall",
|
|
95
78
|
].join("\n"), "Ready");
|
|
96
79
|
if (platform() === "linux") {
|
|
97
|
-
log.info("Tip:
|
|
80
|
+
log.info("Tip: run `loginctl enable-linger $USER` once if you want the service to survive logout.");
|
|
98
81
|
}
|
|
99
82
|
outro(`Open ${GATEWAY_URL} in your browser to continue.`);
|
|
100
83
|
}
|
|
101
|
-
/** Fallback non-TTY: print line-by-line tanpa box drawing. */
|
|
102
84
|
async function runSetupPlain() {
|
|
103
85
|
console.log(`Natroc ${VERSION} — initializing...`);
|
|
104
86
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/cli/setup.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/cli/setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,10 +3,10 @@ import type { chatSchema } from "../routes/schemas.js";
|
|
|
3
3
|
import type { RuntimeState } from "../runtime.js";
|
|
4
4
|
type AgentChatInput = ReturnType<typeof chatSchema.parse>;
|
|
5
5
|
/**
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
6
|
+
* Run one channel-agnostic agent turn: assemble the active provider, system
|
|
7
|
+
* prompt (with shared memory injection), and conversation history, then drive
|
|
8
|
+
* the agent loop. Intermediate events are yielded; the generator returns the
|
|
9
|
+
* persisted result.
|
|
10
10
|
*/
|
|
11
11
|
export declare function runAgentTurn(runtime: RuntimeState, input: AgentChatInput, options: {
|
|
12
12
|
userId: string;
|
|
@@ -5,10 +5,10 @@ import { getAgentCwd, getToolMode } from "../agent/tools/index.js";
|
|
|
5
5
|
import { resolveConfiguredAdapter } from "../providers/configured-adapters.js";
|
|
6
6
|
import { GatewayRpcError } from "./types.js";
|
|
7
7
|
/**
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
8
|
+
* Run one channel-agnostic agent turn: assemble the active provider, system
|
|
9
|
+
* prompt (with shared memory injection), and conversation history, then drive
|
|
10
|
+
* the agent loop. Intermediate events are yielded; the generator returns the
|
|
11
|
+
* persisted result.
|
|
12
12
|
*/
|
|
13
13
|
export async function* runAgentTurn(runtime, input, options) {
|
|
14
14
|
const selectedAgent = input.agentId
|
|
@@ -53,6 +53,9 @@ export async function* runAgentTurn(runtime, input, options) {
|
|
|
53
53
|
let finalModel = selectedModel ?? "";
|
|
54
54
|
let toolCalls = [];
|
|
55
55
|
let usage = [];
|
|
56
|
+
let reasoningText = "";
|
|
57
|
+
let thinkingStartedAtMs = null;
|
|
58
|
+
let thinkingDurationMs = null;
|
|
56
59
|
for await (const event of runAgentLoop({
|
|
57
60
|
adapter,
|
|
58
61
|
provider: providerName,
|
|
@@ -69,11 +72,24 @@ export async function* runAgentTurn(runtime, input, options) {
|
|
|
69
72
|
finalModel = event.model || finalModel;
|
|
70
73
|
toolCalls = event.toolCalls;
|
|
71
74
|
usage = event.usage;
|
|
75
|
+
if (thinkingStartedAtMs !== null && thinkingDurationMs === null) {
|
|
76
|
+
thinkingDurationMs = Date.now() - thinkingStartedAtMs;
|
|
77
|
+
}
|
|
72
78
|
break;
|
|
73
79
|
}
|
|
74
80
|
if (event.type === "error") {
|
|
75
81
|
throw new GatewayRpcError(event.error, "agent_error");
|
|
76
82
|
}
|
|
83
|
+
if (event.type === "reasoning") {
|
|
84
|
+
if (thinkingStartedAtMs === null)
|
|
85
|
+
thinkingStartedAtMs = Date.now();
|
|
86
|
+
reasoningText += event.delta;
|
|
87
|
+
}
|
|
88
|
+
else if (event.type === "text" &&
|
|
89
|
+
thinkingStartedAtMs !== null &&
|
|
90
|
+
thinkingDurationMs === null) {
|
|
91
|
+
thinkingDurationMs = Date.now() - thinkingStartedAtMs;
|
|
92
|
+
}
|
|
77
93
|
yield event;
|
|
78
94
|
}
|
|
79
95
|
const existingConversation = input.conversationId
|
|
@@ -97,6 +113,8 @@ export async function* runAgentTurn(runtime, input, options) {
|
|
|
97
113
|
toolCalls,
|
|
98
114
|
usage,
|
|
99
115
|
generatedTitle,
|
|
116
|
+
reasoningText: reasoningText.length > 0 ? reasoningText : null,
|
|
117
|
+
thinkingDurationMs,
|
|
100
118
|
});
|
|
101
119
|
}
|
|
102
120
|
function persistAgentChat(input) {
|
|
@@ -127,6 +145,8 @@ function persistAgentChat(input) {
|
|
|
127
145
|
conversationId: conversation.id,
|
|
128
146
|
role: "assistant",
|
|
129
147
|
content: input.content,
|
|
148
|
+
reasoningText: input.reasoningText,
|
|
149
|
+
thinkingDurationMs: input.thinkingDurationMs,
|
|
130
150
|
provider: input.provider,
|
|
131
151
|
model: input.model || null,
|
|
132
152
|
});
|
|
@@ -135,6 +155,7 @@ function persistAgentChat(input) {
|
|
|
135
155
|
id: call.id,
|
|
136
156
|
userId: input.userId,
|
|
137
157
|
conversationId: conversation.id,
|
|
158
|
+
messageId: assistantMessage.id,
|
|
138
159
|
toolName: call.name,
|
|
139
160
|
args: call.args,
|
|
140
161
|
output: call.output,
|
|
@@ -216,9 +237,8 @@ function deriveTitle(message) {
|
|
|
216
237
|
return firstLine ? firstLine.slice(0, 60) : "New conversation";
|
|
217
238
|
}
|
|
218
239
|
/**
|
|
219
|
-
*
|
|
220
|
-
*
|
|
221
|
-
* `deriveTitle` (kalimat pertama user).
|
|
240
|
+
* Ask the model for a short 3–6 word title for a new conversation. On
|
|
241
|
+
* failure the caller falls back to `deriveTitle`.
|
|
222
242
|
*/
|
|
223
243
|
async function generateConversationTitle(adapter, userMessage, assistantContent, model) {
|
|
224
244
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-service.js","sourceRoot":"","sources":["../../src/gateway/agent-service.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"agent-service.js","sourceRoot":"","sources":["../../src/gateway/agent-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,8 @@
|
|
|
1
1
|
import { type Gateway } from "./gateway.js";
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* Frame pertama WAJIB `connect`. Sebelum handshake selesai, frame lain
|
|
8
|
-
* dijawab dengan `not_handshaked`.
|
|
3
|
+
* One live WebSocket connection. The first frame must be `connect`; any
|
|
4
|
+
* other frame received before the handshake completes is replied to with
|
|
5
|
+
* `not_handshaked`.
|
|
9
6
|
*/
|
|
10
7
|
export declare class GatewayConnection {
|
|
11
8
|
private readonly gateway;
|
|
@@ -16,21 +13,15 @@ export declare class GatewayConnection {
|
|
|
16
13
|
private closed;
|
|
17
14
|
private handshakeComplete;
|
|
18
15
|
constructor(gateway: Gateway, sendRaw: (data: string) => void);
|
|
19
|
-
/** Memproses satu teks frame mentah dari socket. */
|
|
20
16
|
handleRawMessage(raw: string): void;
|
|
21
|
-
/** Membersihkan saat socket tertutup: batalkan semua stream berjalan. */
|
|
22
17
|
handleClose(): void;
|
|
23
|
-
/**
|
|
24
|
-
* Mengirim event broadcast (tanpa `id`) ke socket ini. Dipanggil oleh
|
|
25
|
-
* {@link Gateway.broadcast} dengan `seq` monotonik per topic.
|
|
26
|
-
*/
|
|
27
18
|
sendBroadcast(event: string, payload: unknown, seq: number): void;
|
|
28
19
|
private send;
|
|
29
20
|
private handleConnect;
|
|
30
21
|
/**
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
*
|
|
22
|
+
* Apply an inbound token to the context. An invalid token does not fail
|
|
23
|
+
* the handshake — the reply just carries `auth.ok: false` so the client
|
|
24
|
+
* can clear stale credentials and prompt the user to log in again.
|
|
34
25
|
*/
|
|
35
26
|
private applyConnectAuth;
|
|
36
27
|
private dispatch;
|
|
@@ -3,12 +3,9 @@ import { GATEWAY_EVENTS, GATEWAY_POLICY, GATEWAY_SERVER_VERSION, } from "./gatew
|
|
|
3
3
|
import { GATEWAY_PROTOCOL_VERSION, GatewayFrameError, parseClientFrame, serializeServerFrame, } from "./protocol.js";
|
|
4
4
|
import { GatewayRpcError } from "./types.js";
|
|
5
5
|
/**
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* Frame pertama WAJIB `connect`. Sebelum handshake selesai, frame lain
|
|
11
|
-
* dijawab dengan `not_handshaked`.
|
|
6
|
+
* One live WebSocket connection. The first frame must be `connect`; any
|
|
7
|
+
* other frame received before the handshake completes is replied to with
|
|
8
|
+
* `not_handshaked`.
|
|
12
9
|
*/
|
|
13
10
|
export class GatewayConnection {
|
|
14
11
|
gateway;
|
|
@@ -28,7 +25,6 @@ export class GatewayConnection {
|
|
|
28
25
|
token: null,
|
|
29
26
|
};
|
|
30
27
|
}
|
|
31
|
-
/** Memproses satu teks frame mentah dari socket. */
|
|
32
28
|
handleRawMessage(raw) {
|
|
33
29
|
let frame;
|
|
34
30
|
try {
|
|
@@ -36,7 +32,7 @@ export class GatewayConnection {
|
|
|
36
32
|
}
|
|
37
33
|
catch (error) {
|
|
38
34
|
if (error instanceof GatewayFrameError) {
|
|
39
|
-
//
|
|
35
|
+
// Without a valid id there is nothing to correlate a response to.
|
|
40
36
|
return;
|
|
41
37
|
}
|
|
42
38
|
throw error;
|
|
@@ -60,7 +56,6 @@ export class GatewayConnection {
|
|
|
60
56
|
}
|
|
61
57
|
void this.dispatch(frame);
|
|
62
58
|
}
|
|
63
|
-
/** Membersihkan saat socket tertutup: batalkan semua stream berjalan. */
|
|
64
59
|
handleClose() {
|
|
65
60
|
this.closed = true;
|
|
66
61
|
for (const controller of this.inFlight.values()) {
|
|
@@ -75,10 +70,6 @@ export class GatewayConnection {
|
|
|
75
70
|
});
|
|
76
71
|
}
|
|
77
72
|
}
|
|
78
|
-
/**
|
|
79
|
-
* Mengirim event broadcast (tanpa `id`) ke socket ini. Dipanggil oleh
|
|
80
|
-
* {@link Gateway.broadcast} dengan `seq` monotonik per topic.
|
|
81
|
-
*/
|
|
82
73
|
sendBroadcast(event, payload, seq) {
|
|
83
74
|
this.send({ type: "event", event, payload, seq });
|
|
84
75
|
}
|
|
@@ -120,9 +111,9 @@ export class GatewayConnection {
|
|
|
120
111
|
this.send({ type: "res", id: frame.id, ok: true, payload });
|
|
121
112
|
}
|
|
122
113
|
/**
|
|
123
|
-
*
|
|
124
|
-
*
|
|
125
|
-
*
|
|
114
|
+
* Apply an inbound token to the context. An invalid token does not fail
|
|
115
|
+
* the handshake — the reply just carries `auth.ok: false` so the client
|
|
116
|
+
* can clear stale credentials and prompt the user to log in again.
|
|
126
117
|
*/
|
|
127
118
|
applyConnectAuth(params) {
|
|
128
119
|
const token = params?.auth?.token;
|
|
@@ -151,9 +142,8 @@ export class GatewayConnection {
|
|
|
151
142
|
});
|
|
152
143
|
return;
|
|
153
144
|
}
|
|
154
|
-
// Idempotency cache
|
|
155
|
-
//
|
|
156
|
-
// (key di-scope per user supaya tidak bertabrakan lintas-user).
|
|
145
|
+
// Idempotency cache is keyed per-user so that one user's retry cannot
|
|
146
|
+
// hit a cached entry from a different account.
|
|
157
147
|
const idempotencyKey = extractIdempotencyKey(frame.params);
|
|
158
148
|
const cacheKey = idempotencyKey && this.context.userId
|
|
159
149
|
? `${this.context.userId}:${frame.method}:${idempotencyKey}`
|
|
@@ -212,9 +202,9 @@ export class GatewayConnection {
|
|
|
212
202
|
}
|
|
213
203
|
const payload = step.done ? step.value : undefined;
|
|
214
204
|
this.send({ type: "res", id: frame.id, ok: true, payload });
|
|
215
|
-
//
|
|
216
|
-
//
|
|
217
|
-
//
|
|
205
|
+
// A cached stream replay sends only the terminal `res` — intermediate
|
|
206
|
+
// events are not replayed. Callers that depend on event history should
|
|
207
|
+
// not reuse the same idempotency key.
|
|
218
208
|
if (cacheKey) {
|
|
219
209
|
this.gateway.setIdempotent(cacheKey, { ok: true, payload });
|
|
220
210
|
}
|
|
@@ -234,7 +224,6 @@ export class GatewayConnection {
|
|
|
234
224
|
this.send({ type: "res", id, ok: false, error });
|
|
235
225
|
}
|
|
236
226
|
}
|
|
237
|
-
/** Mengambil `idempotencyKey` dari params bila berupa string non-kosong. */
|
|
238
227
|
function extractIdempotencyKey(params) {
|
|
239
228
|
if (!params || typeof params !== "object" || Array.isArray(params)) {
|
|
240
229
|
return undefined;
|