natroc 0.0.4 → 0.0.6

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 (91) hide show
  1. package/README.md +343 -0
  2. package/package.json +1 -1
  3. package/server/dist/agent/home-context.d.ts +11 -1
  4. package/server/dist/agent/home-context.js +48 -5
  5. package/server/dist/agent/home-context.js.map +1 -1
  6. package/server/dist/app.js +7 -11
  7. package/server/dist/app.js.map +1 -1
  8. package/server/dist/channels/channel-runtime.d.ts +3 -4
  9. package/server/dist/channels/channel-runtime.js +5 -15
  10. package/server/dist/channels/channel-runtime.js.map +1 -1
  11. package/server/dist/cli/agent-deliver.d.ts +0 -2
  12. package/server/dist/cli/agent-deliver.js +1 -14
  13. package/server/dist/cli/agent-deliver.js.map +1 -1
  14. package/server/dist/cli/cli-token.js +0 -5
  15. package/server/dist/cli/cli-token.js.map +1 -1
  16. package/server/dist/cli/daemon.d.ts +2 -16
  17. package/server/dist/cli/daemon.js +5 -37
  18. package/server/dist/cli/daemon.js.map +1 -1
  19. package/server/dist/cli/setup.d.ts +0 -1
  20. package/server/dist/cli/setup.js +2 -20
  21. package/server/dist/cli/setup.js.map +1 -1
  22. package/server/dist/config/natroc-config.d.ts +35 -0
  23. package/server/dist/config/natroc-config.js +138 -0
  24. package/server/dist/config/natroc-config.js.map +1 -0
  25. package/server/dist/gateway/agent-service.d.ts +4 -4
  26. package/server/dist/gateway/agent-service.js +29 -9
  27. package/server/dist/gateway/agent-service.js.map +1 -1
  28. package/server/dist/gateway/connection.d.ts +6 -15
  29. package/server/dist/gateway/connection.js +12 -23
  30. package/server/dist/gateway/connection.js.map +1 -1
  31. package/server/dist/gateway/gateway.d.ts +2 -31
  32. package/server/dist/gateway/gateway.js +8 -35
  33. package/server/dist/gateway/gateway.js.map +1 -1
  34. package/server/dist/gateway/index.d.ts +0 -1
  35. package/server/dist/gateway/index.js +2 -1
  36. package/server/dist/gateway/index.js.map +1 -1
  37. package/server/dist/gateway/protocol.d.ts +12 -22
  38. package/server/dist/gateway/protocol.js +1 -4
  39. package/server/dist/gateway/protocol.js.map +1 -1
  40. package/server/dist/gateway/rpc/agent.d.ts +0 -1
  41. package/server/dist/gateway/rpc/agent.js +0 -1
  42. package/server/dist/gateway/rpc/agent.js.map +1 -1
  43. package/server/dist/gateway/rpc/auth.d.ts +0 -1
  44. package/server/dist/gateway/rpc/auth.js +4 -1
  45. package/server/dist/gateway/rpc/auth.js.map +1 -1
  46. package/server/dist/gateway/rpc/channels.js +0 -1
  47. package/server/dist/gateway/rpc/channels.js.map +1 -1
  48. package/server/dist/gateway/rpc/conversations.d.ts +0 -1
  49. package/server/dist/gateway/rpc/conversations.js +0 -1
  50. package/server/dist/gateway/rpc/conversations.js.map +1 -1
  51. package/server/dist/gateway/rpc/home.d.ts +2 -0
  52. package/server/dist/gateway/rpc/home.js +45 -0
  53. package/server/dist/gateway/rpc/home.js.map +1 -0
  54. package/server/dist/gateway/rpc/projects.d.ts +0 -1
  55. package/server/dist/gateway/rpc/projects.js +0 -1
  56. package/server/dist/gateway/rpc/projects.js.map +1 -1
  57. package/server/dist/gateway/rpc/providers.d.ts +0 -1
  58. package/server/dist/gateway/rpc/providers.js +0 -1
  59. package/server/dist/gateway/rpc/providers.js.map +1 -1
  60. package/server/dist/gateway/types.d.ts +1 -19
  61. package/server/dist/gateway/types.js +1 -5
  62. package/server/dist/gateway/types.js.map +1 -1
  63. package/server/dist/gateway/ws-server.d.ts +0 -6
  64. package/server/dist/gateway/ws-server.js +2 -6
  65. package/server/dist/gateway/ws-server.js.map +1 -1
  66. package/server/dist/local-runtime.d.ts +2 -0
  67. package/server/dist/local-runtime.js +5 -1
  68. package/server/dist/local-runtime.js.map +1 -1
  69. package/server/dist/runtime.d.ts +6 -4
  70. package/server/dist/runtime.js +2 -1
  71. package/server/dist/runtime.js.map +1 -1
  72. package/server/dist/server.js +6 -3
  73. package/server/dist/server.js.map +1 -1
  74. package/server/dist/storage/auth-repository.d.ts +1 -5
  75. package/server/dist/storage/auth-repository.js +1 -5
  76. package/server/dist/storage/auth-repository.js.map +1 -1
  77. package/server/dist/storage/channel-repository.d.ts +4 -4
  78. package/server/dist/storage/channel-repository.js +2 -2
  79. package/server/dist/storage/conversation-repository.d.ts +13 -0
  80. package/server/dist/storage/conversation-repository.js +83 -17
  81. package/server/dist/storage/conversation-repository.js.map +1 -1
  82. package/server/dist/storage/database.d.ts +1 -5
  83. package/server/dist/storage/database.js +4 -5
  84. package/server/dist/storage/database.js.map +1 -1
  85. package/server/dist/storage/tool-call-repository.d.ts +2 -0
  86. package/server/dist/storage/tool-call-repository.js +9 -6
  87. package/server/dist/storage/tool-call-repository.js.map +1 -1
  88. package/ui/dist/assets/{index-DKaFmZNO.js → index-BiU8FgKo.js} +3 -3
  89. package/ui/dist/assets/index-Dosh6wwG.css +2 -0
  90. package/ui/dist/index.html +2 -2
  91. package/ui/dist/assets/index-DOfPcjx3.css +0 -2
@@ -0,0 +1,138 @@
1
+ import { readFile, writeFile } from "node:fs/promises";
2
+ import { join } from "node:path";
3
+ export const DEFAULT_NATROC_CONFIG = {
4
+ server: {
5
+ host: "127.0.0.1",
6
+ port: 37789,
7
+ },
8
+ gateway: {
9
+ tickIntervalMs: 30 * 60 * 1000,
10
+ },
11
+ channels: {
12
+ telegramDefaults: {
13
+ dmPolicy: "allowlist",
14
+ groupPolicy: "disabled",
15
+ requireMention: true,
16
+ textChunkLimit: 4000,
17
+ },
18
+ whatsappDefaults: {
19
+ dmPolicy: "allowlist",
20
+ groupPolicy: "disabled",
21
+ requireMention: true,
22
+ textChunkLimit: 4000,
23
+ mediaMaxMb: 50,
24
+ sendReadReceipts: false,
25
+ },
26
+ },
27
+ };
28
+ export function getConfigPath(paths) {
29
+ return join(paths.root, "natroc.json");
30
+ }
31
+ /** Load and merge with defaults. Missing or invalid file returns defaults. */
32
+ export async function loadNatrocConfig(paths) {
33
+ const filePath = getConfigPath(paths);
34
+ let raw;
35
+ try {
36
+ raw = await readFile(filePath, "utf8");
37
+ }
38
+ catch {
39
+ return cloneDefaults();
40
+ }
41
+ let parsed;
42
+ try {
43
+ parsed = JSON.parse(raw);
44
+ }
45
+ catch {
46
+ return cloneDefaults();
47
+ }
48
+ return mergeWithDefaults(parsed);
49
+ }
50
+ /** Write defaults if the file does not exist yet. */
51
+ export async function ensureNatrocConfig(paths) {
52
+ const filePath = getConfigPath(paths);
53
+ try {
54
+ await readFile(filePath, "utf8");
55
+ return;
56
+ }
57
+ catch {
58
+ await writeFile(filePath, `${JSON.stringify(DEFAULT_NATROC_CONFIG, null, 2)}\n`, "utf8");
59
+ }
60
+ }
61
+ export async function writeNatrocConfig(paths, config) {
62
+ await writeFile(getConfigPath(paths), `${JSON.stringify(config, null, 2)}\n`, "utf8");
63
+ }
64
+ function cloneDefaults() {
65
+ return JSON.parse(JSON.stringify(DEFAULT_NATROC_CONFIG));
66
+ }
67
+ function mergeWithDefaults(input) {
68
+ const config = cloneDefaults();
69
+ if (!input || typeof input !== "object" || Array.isArray(input))
70
+ return config;
71
+ const root = input;
72
+ if (isRecord(root.server)) {
73
+ if (typeof root.server.host === "string") {
74
+ config.server.host = root.server.host;
75
+ }
76
+ if (typeof root.server.port === "number" && root.server.port > 0) {
77
+ config.server.port = Math.floor(root.server.port);
78
+ }
79
+ }
80
+ if (isRecord(root.gateway)) {
81
+ if (typeof root.gateway.tickIntervalMs === "number" &&
82
+ root.gateway.tickIntervalMs > 0) {
83
+ config.gateway.tickIntervalMs = Math.floor(root.gateway.tickIntervalMs);
84
+ }
85
+ }
86
+ if (isRecord(root.channels)) {
87
+ applyTelegramDefaults(config.channels.telegramDefaults, root.channels.telegramDefaults);
88
+ applyWhatsappDefaults(config.channels.whatsappDefaults, root.channels.whatsappDefaults);
89
+ }
90
+ return config;
91
+ }
92
+ function applyTelegramDefaults(target, source) {
93
+ if (!isRecord(source))
94
+ return;
95
+ if (isDmPolicy(source.dmPolicy))
96
+ target.dmPolicy = source.dmPolicy;
97
+ if (isGroupPolicy(source.groupPolicy))
98
+ target.groupPolicy = source.groupPolicy;
99
+ if (typeof source.requireMention === "boolean") {
100
+ target.requireMention = source.requireMention;
101
+ }
102
+ if (typeof source.textChunkLimit === "number" && source.textChunkLimit > 0) {
103
+ target.textChunkLimit = Math.floor(source.textChunkLimit);
104
+ }
105
+ }
106
+ function applyWhatsappDefaults(target, source) {
107
+ if (!isRecord(source))
108
+ return;
109
+ if (isDmPolicy(source.dmPolicy))
110
+ target.dmPolicy = source.dmPolicy;
111
+ if (isGroupPolicy(source.groupPolicy))
112
+ target.groupPolicy = source.groupPolicy;
113
+ if (typeof source.requireMention === "boolean") {
114
+ target.requireMention = source.requireMention;
115
+ }
116
+ if (typeof source.textChunkLimit === "number" && source.textChunkLimit > 0) {
117
+ target.textChunkLimit = Math.floor(source.textChunkLimit);
118
+ }
119
+ if (typeof source.mediaMaxMb === "number" && source.mediaMaxMb > 0) {
120
+ target.mediaMaxMb = source.mediaMaxMb;
121
+ }
122
+ if (typeof source.sendReadReceipts === "boolean") {
123
+ target.sendReadReceipts = source.sendReadReceipts;
124
+ }
125
+ }
126
+ function isRecord(value) {
127
+ return typeof value === "object" && value !== null && !Array.isArray(value);
128
+ }
129
+ function isDmPolicy(value) {
130
+ return (value === "pairing" ||
131
+ value === "allowlist" ||
132
+ value === "open" ||
133
+ value === "disabled");
134
+ }
135
+ function isGroupPolicy(value) {
136
+ return value === "allowlist" || value === "open" || value === "disabled";
137
+ }
138
+ //# sourceMappingURL=natroc-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"natroc-config.js","sourceRoot":"","sources":["../../src/config/natroc-config.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
- * Menjalankan satu giliran agent secara channel-agnostic: menyiapkan provider
7
- * aktif, system prompt (termasuk memory bersama lintas-channel), riwayat
8
- * percakapan, lalu menjalankan agent loop. Yield event antara; mengembalikan
9
- * hasil percakapan yang sudah dipersist (dikirim sebagai `result` frame `end`).
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
- * Menjalankan satu giliran agent secara channel-agnostic: menyiapkan provider
9
- * aktif, system prompt (termasuk memory bersama lintas-channel), riwayat
10
- * percakapan, lalu menjalankan agent loop. Yield event antara; mengembalikan
11
- * hasil percakapan yang sudah dipersist (dikirim sebagai `result` frame `end`).
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
@@ -40,7 +40,7 @@ export async function* runAgentTurn(runtime, input, options) {
40
40
  maxMessageCharacters: 700,
41
41
  maxMessagesPerConversation: 6,
42
42
  });
43
- const sharedSystemPrompt = buildAgentSystemPrompt(homeContext, memories, conversationThreads);
43
+ const sharedSystemPrompt = buildAgentSystemPrompt(homeContext, memories, conversationThreads, { workspacePath: runtime.paths?.homeDir });
44
44
  const baseSystemPrompt = selectedAgent?.systemPrompt
45
45
  ? `${sharedSystemPrompt}\n\nAgent-specific instructions:\n${selectedAgent.systemPrompt}`
46
46
  : sharedSystemPrompt;
@@ -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,
@@ -62,18 +65,31 @@ export async function* runAgentTurn(runtime, input, options) {
62
65
  model: selectedModel,
63
66
  thinking: input.thinking,
64
67
  mode: getToolMode(),
65
- context: { cwd: getAgentCwd() },
68
+ context: { cwd: runtime.paths?.homeDir ?? getAgentCwd() },
66
69
  })) {
67
70
  if (event.type === "done") {
68
71
  finalContent = event.content;
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
- * Meminta provider model membuat title singkat (3–6 kata) untuk conversation
220
- * baru meniru perilaku Chat AI populer. Gagal? Caller fallback ke
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":"AAAA,OAAO,EACL,YAAY,GAGb,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAClF,OAAO,EAAE,kCAAkC,EAAE,MAAM,gCAAgC,CAAA;AACnF,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAClE,OAAO,EAAE,wBAAwB,EAAE,MAAM,qCAAqC,CAAA;AAQ9E,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAI5C;;;;;GAKG;AACH,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,YAAY,CACjC,OAAqB,EACrB,KAAqB,EACrB,OAAsE;IAEtE,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO;QACjC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,EAAE,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;QACnE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IAEzD,IAAI,KAAK,CAAC,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC;QACpC,MAAM,IAAI,eAAe,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAA;IAC5D,CAAC;IAED,MAAM,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC,iBAAiB,CAAC;QACzD,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CAAA;IACF,MAAM,YAAY,GAChB,aAAa,EAAE,eAAe,IAAI,cAAc,EAAE,QAAQ,IAAI,IAAI,CAAA;IACpE,MAAM,aAAa,GACjB,KAAK,CAAC,KAAK,IAAI,aAAa,EAAE,YAAY,IAAI,cAAc,EAAE,YAAY,IAAI,SAAS,CAAA;IAEzF,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,IAAI,eAAe,CACvB,yDAAyD,EACzD,oBAAoB,CACrB,CAAA;IACH,CAAC;IAED,MAAM,OAAO,GAAG,wBAAwB,CAAC,YAAY,EAAE;QACrD,OAAO;QACP,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CAAA;IACF,MAAM,WAAW,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IACxD,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;QAC5C,KAAK,EAAE,EAAE;QACT,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CAAA;IACF,MAAM,mBAAmB,GAAG,OAAO,CAAC,aAAa,CAAC,uBAAuB,CAAC;QACxE,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,qBAAqB,EAAE,KAAK,CAAC,cAAc;QAC3C,oBAAoB,EAAE,GAAG;QACzB,0BAA0B,EAAE,CAAC;KAC9B,CAAC,CAAA;IACF,MAAM,kBAAkB,GAAG,sBAAsB,CAC/C,WAAW,EACX,QAAQ,EACR,mBAAmB,CACpB,CAAA;IACD,MAAM,gBAAgB,GAAG,aAAa,EAAE,YAAY;QAClD,CAAC,CAAC,GAAG,kBAAkB,qCAAqC,aAAa,CAAC,YAAY,EAAE;QACxF,CAAC,CAAC,kBAAkB,CAAA;IACtB,MAAM,OAAO,GAAG,KAAK,CAAC,cAAc;QAClC,CAAC,CAAC,OAAO,CAAC,aAAa;aAClB,WAAW,CAAC,KAAK,CAAC,cAAc,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;aAC7D,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QACzE,CAAC,CAAC,EAAE,CAAA;IAEN,IAAI,YAAY,GAAG,EAAE,CAAA;IACrB,IAAI,UAAU,GAAG,aAAa,IAAI,EAAE,CAAA;IACpC,IAAI,SAAS,GAA0B,EAAE,CAAA;IACzC,IAAI,KAAK,GAAoB,EAAE,CAAA;IAE/B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,YAAY,CAAC;QACrC,OAAO;QACP,QAAQ,EAAE,YAAY;QACtB,gBAAgB;QAChB,OAAO;QACP,WAAW,EAAE,KAAK,CAAC,OAAO;QAC1B,KAAK,EAAE,aAAa;QACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,IAAI,EAAE,WAAW,EAAE;QACnB,OAAO,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,EAAE;KAChC,CAAC,EAAE,CAAC;QACH,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC1B,YAAY,GAAG,KAAK,CAAC,OAAO,CAAA;YAC5B,UAAU,GAAG,KAAK,CAAC,KAAK,IAAI,UAAU,CAAA;YACtC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAA;YAC3B,KAAK,GAAG,KAAK,CAAC,KAAK,CAAA;YACnB,MAAK;QACP,CAAC;QAED,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC3B,MAAM,IAAI,eAAe,CAAC,KAAK,CAAC,KAAK,EAAE,aAAa,CAAC,CAAA;QACvD,CAAC;QAED,MAAM,KAAK,CAAA;IACb,CAAC;IAED,MAAM,oBAAoB,GAAG,KAAK,CAAC,cAAc;QAC/C,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,eAAe,CAAC,KAAK,CAAC,cAAc,EAAE;YAC1D,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC;QACJ,CAAC,CAAC,IAAI,CAAA;IACR,MAAM,cAAc,GAAG,oBAAoB;QACzC,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,MAAM,yBAAyB,CAC7B,OAAO,EACP,KAAK,CAAC,OAAO,EACb,YAAY,EACZ,aAAa,CACd,CAAA;IAEL,OAAO,gBAAgB,CAAC;QACtB,OAAO;QACP,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,OAAO,EAAE,aAAa,EAAE,EAAE,IAAI,IAAI;QAClC,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,KAAK;QACjC,QAAQ,EAAE,YAAY;QACtB,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,WAAW,EAAE,KAAK,CAAC,OAAO;QAC1B,OAAO,EAAE,YAAY;QACrB,KAAK,EAAE,UAAU;QACjB,SAAS;QACT,KAAK;QACL,cAAc;KACf,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,KAazB;IACC,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,CAAA;IACzB,MAAM,QAAQ,GAAG,KAAK,CAAC,cAAc;QACnC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,eAAe,CAAC,KAAK,CAAC,cAAc,EAAE;YAC1D,MAAM,EAAE,KAAK,CAAC,MAAM;SACrB,CAAC;QACJ,CAAC,CAAC,IAAI,CAAA;IACR,MAAM,KAAK,GAAG,QAAQ;QACpB,CAAC,CAAC,QAAQ,CAAC,KAAK;QAChB,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc,IAAI,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAA;IAC5D,MAAM,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC,kBAAkB,CAC3D,KAAK,CAAC,cAAc,EACpB,KAAK,EACL,KAAK,CAAC,QAAQ,EACd;QACE,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,OAAO,EAAE,KAAK,CAAC,OAAO;KACvB,CACF,CAAA;IACD,MAAM,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC;QACnD,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,cAAc,EAAE,YAAY,CAAC,EAAE;QAC/B,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,KAAK,CAAC,WAAW;QAC1B,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,IAAI;KAC3B,CAAC,CAAA;IACF,MAAM,gBAAgB,GAAG,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC;QACxD,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,cAAc,EAAE,YAAY,CAAC,EAAE;QAC/B,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,IAAI;KAC3B,CAAC,CAAA;IAEF,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;QACnC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC;YACvB,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,cAAc,EAAE,YAAY,CAAC,EAAE;YAC/B,QAAQ,EAAE,IAAI,CAAC,IAAI;YACnB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,CAAC,CAAA;IACJ,CAAC;IAED,MAAM,oBAAoB,GAAG,kCAAkC,CAAC;QAC9D,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,gBAAgB,EAAE,KAAK,CAAC,OAAO;QAC/B,cAAc,EAAE,YAAY,CAAC,EAAE;KAChC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAClB,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;QAC9B,GAAG,QAAQ;QACX,MAAM,EAAE,KAAK,CAAC,MAAM;KACrB,CAAC,CACH,CAAA;IACD,MAAM,WAAW,GAAG,kBAAkB,CAAC;QACrC,OAAO;QACP,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,SAAS;QAC/B,cAAc,EAAE,YAAY,CAAC,EAAE;QAC/B,SAAS,EAAE,gBAAgB,CAAC,EAAE;QAC9B,KAAK,EAAE,KAAK,CAAC,KAAK;KACnB,CAAC,CAAA;IAEF,OAAO;QACL,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,SAAS;QAC/B,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,cAAc,EAAE,YAAY,CAAC,EAAE;QAC/B,oBAAoB;QACpB,WAAW;QACX,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,QAAQ,EAAE;YACR,IAAI,EAAE,WAAW;YACjB,SAAS,EAAE,gBAAgB;SAC5B;KACF,CAAA;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,KAU3B;IACC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM;QAC9B,CAAC,CAAC,KAAK,CAAC,KAAK;QACb,CAAC,CAAC;YACE;gBACE,WAAW,EAAE,IAAI;gBACjB,YAAY,EAAE,IAAI;gBAClB,eAAe,EAAE,IAAI;gBACrB,WAAW,EAAE,IAAI;gBACjB,OAAO,EAAE,IAAI;gBACb,UAAU,EAAE,IAAI;gBAChB,GAAG,EAAE,IAAI;aACV;SACF,CAAA;IAEL,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACzB,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC;QAC9B,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,eAAe,EAAE,KAAK,CAAC,eAAe;QACtC,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,MAAM,EAAE,SAAS;QACjB,WAAW,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;QAC7C,QAAQ,EAAE,KAAK,CAAC,GAAG;KACpB,CAAC,CACH,CAAA;AACH,CAAC;AAED,SAAS,WAAW,CAAC,OAAe;IAClC,MAAM,SAAS,GAAG,OAAO;SACtB,KAAK,CAAC,OAAO,CAAC;SACd,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAC1B,IAAI,CAAC,OAAO,CAAC,CAAA;IAEhB,OAAO,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAA;AAChE,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,yBAAyB,CACtC,OAAwB,EACxB,WAAmB,EACnB,gBAAwB,EACxB,KAAyB;IAEzB,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC;YAClC,OAAO,EAAE,WAAW;YACpB,KAAK;YACL,QAAQ,EAAE;gBACR;oBACE,IAAI,EAAE,QAAQ;oBACd,OAAO,EACL,6HAA6H;iBAChI;gBACD;oBACE,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE,kDAAkD,WAAW,gBAAgB,gBAAgB,EAAE;iBACzG;aACF;SACF,CAAC,CAAA;QAEF,OAAO,uBAAuB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;IAClD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAA;IAClB,CAAC;AACH,CAAC;AAED,SAAS,uBAAuB,CAAC,KAAa;IAC5C,MAAM,SAAS,GAAG,KAAK;SACpB,KAAK,CAAC,OAAO,CAAC;SACd,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAC1B,IAAI,CAAC,OAAO,CAAC,CAAA;IAEhB,IAAI,CAAC,SAAS;QAAE,OAAO,kBAAkB,CAAA;IAEzC,MAAM,OAAO,GAAG,SAAS;SACtB,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC;SAC1B,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC;SAC5B,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC;SAC7B,IAAI,EAAE;SACN,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;SACZ,IAAI,EAAE,CAAA;IAET,OAAO,OAAO,IAAI,kBAAkB,CAAA;AACtC,CAAC"}
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
- * Mewakili satu koneksi WebSocket: mem-parse frame masuk, men-dispatch ke
4
- * method gateway, mengelola request streaming yang sedang berjalan, dan
5
- * menulis frame keluar.
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
- * Menerapkan token (jika ada) ke context. Tidak melempar token invalid
32
- * tetap menghasilkan handshake sukses dengan `auth.ok: false`, supaya
33
- * client bisa membersihkan token & redirect ke login dengan tertib.
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
- * Mewakili satu koneksi WebSocket: mem-parse frame masuk, men-dispatch ke
7
- * method gateway, mengelola request streaming yang sedang berjalan, dan
8
- * menulis frame keluar.
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
- // Tanpa id valid, frame tidak bisa dikorelasikan ke response — abaikan.
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
- * Menerapkan token (jika ada) ke context. Tidak melempar token invalid
124
- * tetap menghasilkan handshake sukses dengan `auth.ok: false`, supaya
125
- * client bisa membersihkan token & redirect ke login dengan tertib.
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 (Milestone 5). Aktif hanya bila params membawa
155
- // `idempotencyKey` string non-kosong DAN koneksi sudah authenticated
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
- // Catatan: replay duplikat stream hanya membawa `res` final event
216
- // antara tidak diulang. Cukup untuk safe-retry; client yang butuh
217
- // event historis sebaiknya tidak men-set ulang idempotencyKey.
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;
@@ -1 +1 @@
1
- {"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/gateway/connection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC,OAAO,EACL,cAAc,EACd,cAAc,EACd,sBAAsB,GAEvB,MAAM,cAAc,CAAA;AACrB,OAAO,EACL,wBAAwB,EACxB,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,GAMrB,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,eAAe,EAA0B,MAAM,YAAY,CAAA;AAEpE;;;;;;;GAOG;AACH,MAAM,OAAO,iBAAiB;IAST;IACA;IATV,EAAE,GAAG,UAAU,EAAE,CAAA;IAET,OAAO,CAAmB;IAC1B,QAAQ,GAAG,IAAI,GAAG,EAA2B,CAAA;IACtD,MAAM,GAAG,KAAK,CAAA;IACd,iBAAiB,GAAG,KAAK,CAAA;IAEjC,YACmB,OAAgB,EAChB,OAA+B;QAD/B,YAAO,GAAP,OAAO,CAAS;QAChB,YAAO,GAAP,OAAO,CAAwB;QAEhD,IAAI,CAAC,OAAO,GAAG;YACb,YAAY,EAAE,IAAI,CAAC,EAAE;YACrB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,MAAM,EAAE,IAAI;YACZ,KAAK,EAAE,IAAI;SACZ,CAAA;IACH,CAAC;IAED,oDAAoD;IACpD,gBAAgB,CAAC,GAAW;QAC1B,IAAI,KAAkB,CAAA;QAEtB,IAAI,CAAC;YACH,KAAK,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAA;QAC/B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,iBAAiB,EAAE,CAAC;gBACvC,wEAAwE;gBACxE,OAAM;YACR,CAAC;YACD,MAAM,KAAK,CAAA;QACb,CAAC;QAED,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC7B,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;YACzB,OAAM;QACR,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC5B,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;gBACzB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE;oBACvB,OAAO,EAAE,2CAA2C;oBACpD,IAAI,EAAE,gBAAgB;iBACvB,CAAC,CAAA;YACJ,CAAC;YACD,OAAM;QACR,CAAC;QAED,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC5B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAA;YACpC,OAAM;QACR,CAAC;QAED,KAAK,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC3B,CAAC;IAED,yEAAyE;IACzE,WAAW;QACT,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;QAClB,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;YAChD,UAAU,CAAC,KAAK,EAAE,CAAA;QACpB,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAA;QAErB,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC3B,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC,UAAU,EAAE;gBACtD,MAAM,EAAE,IAAI,CAAC,EAAE;gBACf,KAAK,EAAE,YAAY;gBACnB,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;aAC5B,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,aAAa,CAAC,KAAa,EAAE,OAAgB,EAAE,GAAW;QACxD,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAA;IACnD,CAAC;IAEO,IAAI,CAAC,KAAkB;QAC7B,IAAI,IAAI,CAAC,MAAM;YAAE,OAAM;QACvB,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAA;IAC3C,CAAC;IAEO,aAAa,CACnB,KAAgD;QAEhD,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC3B,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE;gBACvB,OAAO,EAAE,qBAAqB;gBAC9B,IAAI,EAAE,oBAAoB;aAC3B,CAAC,CAAA;YACF,OAAM;QACR,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QACtD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAA;QAE7B,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC,UAAU,EAAE;YACtD,MAAM,EAAE,IAAI,CAAC,EAAE;YACf,KAAK,EAAE,SAAS;YAChB,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;SAC5B,CAAC,CAAA;QAEF,MAAM,OAAO,GAAmB;YAC9B,IAAI,EAAE,UAAU;YAChB,QAAQ,EAAE,wBAAwB;YAClC,MAAM,EAAE,EAAE,OAAO,EAAE,sBAAsB,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE;YAC5D,QAAQ,EAAE;gBACR,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE;gBACvC,MAAM,EAAE,CAAC,GAAG,cAAc,CAAC;aAC5B;YACD,QAAQ,EAAE;gBACR,YAAY,EAAE,EAAE;gBAChB,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;aAClC;YACD,MAAM,EAAE,EAAE,GAAG,cAAc,EAAE;YAC7B,IAAI,EAAE,UAAU;SACjB,CAAA;QAED,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAA;IAC7D,CAAC;IAED;;;;OAIG;IACK,gBAAgB,CACtB,MAAiC;QAEjC,MAAM,KAAK,GAAG,MAAM,EAAE,IAAI,EAAE,KAAK,CAAA;QACjC,IAAI,CAAC,KAAK;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAA;QAEhC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA;QAC5D,IAAI,CAAC,IAAI;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAA;QAE/B,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAA;QAC7B,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAA;QAC1B,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,CAAA;IACtC,CAAC;IAEO,KAAK,CAAC,QAAQ,CACpB,KAA4C;QAE5C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QAEnD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE;gBACvB,OAAO,EAAE,mBAAmB,KAAK,CAAC,MAAM,EAAE;gBAC1C,IAAI,EAAE,kBAAkB;aACzB,CAAC,CAAA;YACF,OAAM;QACR,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;YACnD,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE;gBACvB,OAAO,EAAE,0BAA0B;gBACnC,IAAI,EAAE,iBAAiB;aACxB,CAAC,CAAA;YACF,OAAM;QACR,CAAC;QAED,mEAAmE;QACnE,qEAAqE;QACrE,gEAAgE;QAChE,MAAM,cAAc,GAAG,qBAAqB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QAC1D,MAAM,QAAQ,GACZ,cAAc,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM;YACnC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,IAAI,cAAc,EAAE;YAC5D,CAAC,CAAC,IAAI,CAAA;QAEV,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;YACnD,IAAI,MAAM,EAAE,CAAC;gBACX,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;oBACd,IAAI,CAAC,IAAI,CAAC;wBACR,IAAI,EAAE,KAAK;wBACX,EAAE,EAAE,KAAK,CAAC,EAAE;wBACZ,EAAE,EAAE,IAAI;wBACR,OAAO,EAAE,MAAM,CAAC,OAAO;qBACxB,CAAC,CAAA;gBACJ,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;gBACxC,CAAC;gBACD,OAAM;YACR,CAAC;QACH,CAAC;QAED,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC5B,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;gBAChE,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAA;gBAC3D,IAAI,QAAQ,EAAE,CAAC;oBACb,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAA;gBAC7D,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,GAAG,GAAG,cAAc,CAAC,KAAK,CAAC,CAAA;gBACjC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,CAAA;gBAC7B,IAAI,QAAQ,EAAE,CAAC;oBACb,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAA;gBACjE,CAAC;YACH,CAAC;YACD,OAAM;QACR,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAA;QACxC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,UAAU,CAAC,CAAA;QAEvC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAC3B,IAAI,CAAC,OAAO,EACZ,KAAK,CAAC,MAAM,EACZ,UAAU,CAAC,MAAM,CAClB,CAAA;YACD,IAAI,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAA;YAE9B,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBAClB,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;oBAC9B,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;oBAC9B,MAAK;gBACP,CAAC;gBACD,IAAI,CAAC,IAAI,CAAC;oBACR,IAAI,EAAE,OAAO;oBACb,EAAE,EAAE,KAAK,CAAC,EAAE;oBACZ,KAAK,EAAE,OAAO;oBACd,OAAO,EAAE,IAAI,CAAC,KAAK;iBACpB,CAAC,CAAA;gBACF,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAA;YAC5B,CAAC;YAED,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAA;YAClD,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAA;YAC3D,oEAAoE;YACpE,kEAAkE;YAClE,+DAA+D;YAC/D,IAAI,QAAQ,EAAE,CAAC;gBACb,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAA;YAC7D,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,GAAG,GAAG,cAAc,CAAC,KAAK,CAAC,CAAA;YACjC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,CAAA;YAC7B,IAAI,QAAQ,EAAE,CAAC;gBACb,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAA;YACjE,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QAChC,CAAC;IACH,CAAC;IAEO,SAAS,CAAC,EAAU,EAAE,KAAmB;QAC/C,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;IAClD,CAAC;CACF;AAED,4EAA4E;AAC5E,SAAS,qBAAqB,CAAC,MAAe;IAC5C,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACnE,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,MAAM,GAAG,GAAI,MAAkC,CAAC,cAAc,CAAA;IAC9D,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAA;AACpE,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,IAAI,KAAK,YAAY,eAAe,EAAE,CAAC;QACrC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAA;IACrD,CAAC;IAED,OAAO;QACL,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,yBAAyB;QAC3E,IAAI,EAAE,gBAAgB;KACvB,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/gateway/connection.ts"],"names":[],"mappings":"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"}
@@ -1,29 +1,14 @@
1
1
  import type { RuntimeState } from "../runtime.js";
2
2
  import { GatewayConnection } from "./connection.js";
3
3
  import type { MethodHandler, StreamHandler, UnaryHandler } from "./types.js";
4
- /**
5
- * Inti gateway: pemilik RuntimeState, registry method RPC, dan registry
6
- * koneksi aktif. Method didaftarkan oleh modul RPC pada milestone berikutnya.
7
- */
8
- /** Versi server gateway. Ditampilkan di payload `hello-ok`. */
9
4
  export declare const GATEWAY_SERVER_VERSION = "0.0.1";
10
- /** Policy default — dilaporkan via `hello-ok` agar client tahu batasannya. */
11
5
  export declare const GATEWAY_POLICY: {
12
- /** Ukuran payload maksimum per frame (bytes). */
13
6
  readonly maxPayload: number;
14
- /** Buffer outbound maksimum per koneksi (bytes). */
15
7
  readonly maxBufferedBytes: number;
16
- /** Interval event `tick` (ms). Dipakai mulai Milestone 6. */
17
8
  readonly tickIntervalMs: number;
18
9
  };
19
- /**
20
- * Daftar event server-push yang DIDUKUNG.
21
- * `agent` adalah event stream antara dari `agent.chat`; sisanya broadcast.
22
- */
23
10
  export declare const GATEWAY_EVENTS: readonly string[];
24
- /** TTL idempotency cache (5 menit) — mengikuti pola "short-lived dedup". */
25
11
  export declare const IDEMPOTENCY_TTL_MS: number;
26
- /** Hasil terakhir yang di-cache untuk satu `(user, method, key)`. */
27
12
  export type IdempotencyEntry = {
28
13
  ok: true;
29
14
  payload?: unknown;
@@ -43,36 +28,22 @@ export declare class Gateway {
43
28
  private readonly eventSeqByTopic;
44
29
  private tickTimer;
45
30
  constructor(runtime: RuntimeState);
46
- /**
47
- * Mengirim event broadcast ke SEMUA koneksi aktif dengan `seq`
48
- * monotonik per topic. Tanpa `id` — frame dianggap broadcast (Milestone 6).
49
- */
31
+ /** Fan out a broadcast event with a monotonic per-topic `seq`. */
50
32
  broadcast(event: string, payload: unknown): void;
51
- /** Memberhentikan timer + me-detach broadcaster — dipanggil saat shutdown. */
52
33
  dispose(): void;
53
- /**
54
- * Mengambil hasil cache idempotency. Mengembalikan undefined bila tidak ada
55
- * atau sudah kadaluarsa (entri kadaluarsa dibersihkan saat dilihat).
56
- */
34
+ /** Return the cached idempotency entry, evicting it if it has expired. */
57
35
  getIdempotent(key: string): IdempotencyEntry | undefined;
58
- /** Menyimpan hasil ke cache idempotency dengan TTL pendek. */
59
36
  setIdempotent(key: string, entry: IdempotencyEntry): void;
60
- /** Nama seluruh method RPC terdaftar — dipakai di payload `hello-ok`. */
61
37
  listMethodNames(): string[];
62
- /** Uptime gateway dalam milidetik sejak konstruksi. */
63
38
  uptimeMs(): number;
64
- /** Mendaftarkan method RPC request-response. */
65
39
  registerUnary(method: string, handler: UnaryHandler, options?: {
66
40
  public?: boolean;
67
41
  }): void;
68
- /** Mendaftarkan method RPC streaming. */
69
42
  registerStream(method: string, handler: StreamHandler, options?: {
70
43
  public?: boolean;
71
44
  }): void;
72
45
  getMethod(method: string): MethodHandler | undefined;
73
- /** Mendaftarkan koneksi WebSocket baru ke registry. */
74
46
  handleConnection(sendRaw: (data: string) => void): GatewayConnection;
75
- /** Melepas koneksi dari registry (dipanggil saat socket tertutup). */
76
47
  removeConnection(connectionId: string): void;
77
48
  get connectionCount(): number;
78
49
  private assertMethodFree;