@sokel-dev/plugin-sdk 0.3.0 → 0.5.3

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/dist/src/nats.js CHANGED
@@ -1,8 +1,12 @@
1
+ // Copyright 2026 The Sokel Authors
2
+ // SPDX-License-Identifier: Apache-2.0
1
3
  /**
2
- * NATS 承载:插件**出站**连 broker(无入站端口、无公网 IP、无防火墙洞)。
4
+ * The NATS transport: the plugin **dials out** to the broker (no inbound port, no public IP, no
5
+ * firewall hole).
3
6
  *
4
- * 流程与 Go / Python SDK 逐条对齐(协议 §1-§7):发现 → 连接 → 注册(上报契约)→
5
- * 订阅(队列组)→ 心跳续约 → 分发调用 → 优雅下线。事件源插件另有 per-credential supervisor。
7
+ * The flow matches the Go and Python SDKs step for step (protocol §1-§7): discover, connect,
8
+ * register (reporting the contract), subscribe (as a queue group), renew by heartbeat, dispatch
9
+ * calls, shut down gracefully. Event-source plugins additionally run a per-credential supervisor.
6
10
  */
7
11
  import { connect, headers as natsHeaders } from "nats";
8
12
  import { hostname } from "node:os";
@@ -11,11 +15,11 @@ import { createHash, randomBytes } from "node:crypto";
11
15
  import { OP_WEBHOOK } from "./contract.js";
12
16
  import { env } from "./env.js";
13
17
  import { CredEntry, SourceCtx, SourceSupervisor, desiredSourceCreds } from "./events.js";
14
- /** 同组多副本共享队列组 → 每次调用只投一个副本(真·负载均衡)。 */
18
+ /** Replicas of a group share one queue: each call goes to exactly one of them. */
15
19
  export const QUEUE_GROUP = "sokel-workers";
16
- /** 回包/流帧自报副本身份。 */
20
+ /** Replies and stream frames report which replica answered. */
17
21
  export const INSTANCE_HEADER = "Sokel-Instance";
18
- /** 1 MiB:字节不走操作 reply(受 max_payload 约束),走专用分块通道。 */
22
+ /** 1 MiB. Bytes never ride the operation reply (max_payload); they go through the chunk channel. */
19
23
  const FILE_CHUNK = 1 << 20;
20
24
  const HEARTBEAT_MS = 20_000;
21
25
  const RETRY_MS = 8_000;
@@ -23,7 +27,8 @@ const REQUEST_TIMEOUT_MS = 8_000;
23
27
  const FILE_TIMEOUT_MS = 30_000;
24
28
  const enc = new TextEncoder();
25
29
  const dec = new TextDecoder();
26
- /** 经同一条 NATS 连接与平台交换文件字节。不要求插件可达平台 HTTP —— 内网插件同样可用。 */
30
+ /** Exchange file bytes with the platform over the same NATS connection. The plugin never needs HTTP
31
+ * access to the platform, so a plugin behind NAT works the same way. */
27
32
  export class NatsFiles {
28
33
  nc;
29
34
  token;
@@ -34,7 +39,7 @@ export class NatsFiles {
34
39
  async fetch(f) {
35
40
  const id = f.id || (f.url ? f.url.split("/").pop() : "");
36
41
  if (!id)
37
- throw new Error("文件引用缺少 id/url");
42
+ throw new Error("the file reference has neither id nor url");
38
43
  const chunks = [];
39
44
  for (let seq = 0;; seq++) {
40
45
  const resp = await this.nc.request("sokel.file.get", enc.encode(JSON.stringify({ token: this.token, id, seq })), { timeout: FILE_TIMEOUT_MS });
@@ -46,19 +51,20 @@ export class NatsFiles {
46
51
  return Buffer.concat(chunks);
47
52
  }
48
53
  }
49
- /** 整块字节。走 storeStream —— 分块协议只该有一份实现。 */
54
+ /** Whole bytes. Delegates to storeStream: the chunking protocol should have one implementation. */
50
55
  async store(name, mime, data) {
51
56
  return this.storeStream(name, mime, (async function* () { yield data; })());
52
57
  }
53
- /** **边读边传**,内存占用恒为一个块。平台那侧本来就是逐块写进 blob 的。 */
58
+ /** **Stream while reading**; memory stays at one chunk. The platform already writes into blob
59
+ * storage chunk by chunk. */
54
60
  async storeStream(name, mime, src) {
55
61
  let uploadId = "";
56
62
  let seq = 0;
57
63
  let pending = Buffer.alloc(0);
58
64
  let done = false;
59
65
  const it = src[Symbol.asyncIterator]();
60
- // 攒够一块再发:上游给的分片大小由它自己定(fs 流默认 64KB),
61
- // 直接照发的话块数会翻十几倍,每块都是一次 request-reply。
66
+ // Fill a whole chunk before sending: the source decides its own slice size (a fs stream gives
67
+ // 64KB by default), and forwarding those as-is would multiply the round trips more than tenfold.
62
68
  while (!done) {
63
69
  while (pending.length < FILE_CHUNK) {
64
70
  const r = await it.next();
@@ -76,12 +82,12 @@ export class NatsFiles {
76
82
  uploadId = f.uploadId;
77
83
  if (last) {
78
84
  if (!f.file)
79
- throw new Error("平台未返回文件引用");
85
+ throw new Error("the platform returned no file reference");
80
86
  return f.file;
81
87
  }
82
88
  seq += 1;
83
89
  }
84
- throw new Error("上传未收到末块应答(不该发生)");
90
+ throw new Error("the upload never got a final-chunk reply (should not happen)");
85
91
  }
86
92
  async putChunk(name, mime, uploadId, seq, last, chunk) {
87
93
  {
@@ -105,18 +111,24 @@ export class NatsFiles {
105
111
  }
106
112
  export class NatsTransport {
107
113
  async run(p) {
108
- const target = await discover(p.endpoint, p.token);
109
- // broker 的传输层鉴权优先用 SOKEL_NATS_TOKEN;缺省回退接入 token(无鉴权 broker 会忽略它)
110
- const token = env("NATS_TOKEN") || p.token;
111
- const ca = env("NATS_CA");
114
+ const acc = await discover(p.endpoint, p.token);
115
+ // The broker authorizes per access group: connect with this group's own credentials, handed
116
+ // out by the platform. The legacy shared token remains only as a fallback for endpoints that
117
+ // skipped discovery (a literal nats:// URL).
118
+ const legacyToken = env("NATS_TOKEN") || p.token;
119
+ // Trusting the broker's certificate: the CA the platform shipped with the credentials wins
120
+ // (nothing to configure); SOKEL_NATS_CA (a local file) is the pinned-by-hand alternative.
121
+ // A broker reachable only by IP cannot get a publicly trusted certificate, so self-signed is
122
+ // the norm there.
123
+ const caFile = env("NATS_CA");
112
124
  const nc = await connectForever({
113
- servers: [target],
125
+ servers: [acc.url],
114
126
  name: p.name,
115
- token: token || undefined,
116
- maxReconnectAttempts: -1, // 无限重连;订阅在重连后自动恢复
127
+ ...(acc.user ? { user: acc.user, pass: acc.pass } : legacyToken ? { token: legacyToken } : {}),
128
+ maxReconnectAttempts: -1, // reconnect forever; subscriptions restore themselves
117
129
  reconnectTimeWait: 2_000,
118
- waitOnFirstConnect: true, // broker 未就绪时挂起等它,而不是启动失败退出
119
- ...(ca ? { tls: { caFile: ca } } : {}),
130
+ waitOnFirstConnect: true, // wait for a broker that is not up yet instead of exiting
131
+ ...(acc.ca ? { tls: { ca: acc.ca } } : caFile ? { tls: { caFile } } : {}),
120
132
  });
121
133
  const host = hostname();
122
134
  const instanceId = stableInstanceId(p.token);
@@ -130,17 +142,18 @@ export class NatsTransport {
130
142
  });
131
143
  const reg = JSON.parse(dec.decode(resp.data));
132
144
  if (!reg.ok || !reg.subject)
133
- throw new Error(`注册被拒:${reg.error ?? "平台未给 subject"}`);
145
+ throw new Error(`registration refused: ${reg.error ?? "the platform returned no subject"}`);
134
146
  if (reg.notify_subject)
135
147
  notifySubject = reg.notify_subject;
136
148
  let creds = (reg.credentials ?? []).map((c) => new CredEntry(c.id ?? "", c.fields ?? {}));
137
- // 旧平台只有单数形态 → 折算成单元素集合(行为与旧版一致)
149
+ // An older platform only sends the singular form; fold it into a one-element set.
138
150
  if (creds.length === 0 && (reg.credential_id || reg.credential)) {
139
151
  creds = [new CredEntry(reg.credential_id ?? "", reg.credential ?? {})];
140
152
  }
141
153
  return { subject: reg.subject, name: reg.name || p.name, creds };
142
154
  };
143
- // 启动注册失败不退出(broker / 平台可能尚未就绪),固定间隔重试直到成功
155
+ // A failed first registration is not fatal (broker or platform may still be starting): retry at
156
+ // a fixed interval until it succeeds.
144
157
  let first;
145
158
  for (;;) {
146
159
  try {
@@ -148,7 +161,7 @@ export class NatsTransport {
148
161
  break;
149
162
  }
150
163
  catch (e) {
151
- console.warn(`[sokel] 注册失败(${errText(e)}),${RETRY_MS / 1000}s 后重试…`);
164
+ console.warn(`[sokel] registration failed (${errText(e)}), retrying in ${RETRY_MS / 1000}s…`);
152
165
  await sleep(RETRY_MS);
153
166
  }
154
167
  }
@@ -158,20 +171,21 @@ export class NatsTransport {
158
171
  void this.dispatch(p, nc, msg, files, instanceId);
159
172
  }
160
173
  })();
161
- console.log(`[sokel] 已接入平台:插件「${first.name}」就绪,副本 ${instanceId} 监听 ${first.subject}`);
174
+ console.log(`[sokel] connected: plugin "${first.name}" ready, replica ${instanceId} listening on ${first.subject}`);
162
175
  let supervisor;
163
176
  if (p.sources.length > 0) {
164
177
  supervisor = makeSupervisor(p, nc, files);
165
178
  supervisor.reconcile(desiredSourceCreds(first.creds));
166
179
  if (notifySubject) {
167
- // 凭证变更即时通知:普通订阅(非队列组),组内每个副本都要收——各自的分配集合都可能变
180
+ // Credential-change notifications use a plain subscription (not a queue group): every
181
+ // replica in the group must hear it, since any assignment may have changed.
168
182
  const debounced = debounce(300, async () => {
169
183
  try {
170
184
  const { creds } = await register();
171
185
  supervisor.reconcile(desiredSourceCreds(creds));
172
186
  }
173
187
  catch (e) {
174
- console.warn(`[sokel] 凭证变更 re-register 失败: ${errText(e)}`);
188
+ console.warn(`[sokel] re-register after a credential change failed: ${errText(e)}`);
175
189
  }
176
190
  });
177
191
  const notifySub = nc.subscribe(notifySubject);
@@ -181,17 +195,19 @@ export class NatsTransport {
181
195
  })();
182
196
  }
183
197
  }
184
- // 心跳续约保持副本在线;SIGINT/SIGTERM(docker stop / Ctrl-C)→ 优雅下线:
185
- // 通知平台立即标记 offline(秒级感知),而非等心跳超时清扫(45s+)
198
+ // The heartbeat keeps the replica online. On SIGINT/SIGTERM (docker stop, Ctrl-C) it shuts down
199
+ // gracefully: tell the platform to mark this replica offline right away (seconds), instead of
200
+ // waiting for the heartbeat sweep (45s+).
186
201
  await new Promise((resolve) => {
187
202
  const timer = setInterval(async () => {
188
203
  try {
189
204
  const { creds } = await register();
190
- // 每拍按最新分配集合 reconcile:分片迁移 / 凭证增删 / 字段刷新 → 起停或重启源实例
205
+ // Reconcile against the latest assignment each tick: shard moves, credentials added or
206
+ // removed, fields refreshed.
191
207
  supervisor?.reconcile(desiredSourceCreds(creds));
192
208
  }
193
209
  catch (e) {
194
- console.warn(`[sokel] 心跳续约失败: ${errText(e)}`);
210
+ console.warn(`[sokel] heartbeat renewal failed: ${errText(e)}`);
195
211
  }
196
212
  }, HEARTBEAT_MS);
197
213
  const bye = (sig) => {
@@ -199,11 +215,11 @@ export class NatsTransport {
199
215
  supervisor?.stopAll();
200
216
  nc.publish("sokel.unregister", enc.encode(JSON.stringify({ token: p.token, instance_id: instanceId })));
201
217
  void nc
202
- .flush() // 确保下线通知先于断连送达
218
+ .flush() // make sure the goodbye lands before the connection drops
203
219
  .then(() => nc.drain())
204
220
  .catch(() => undefined)
205
221
  .then(() => {
206
- console.log(`[sokel] 收到 ${sig},已通知平台下线,退出`);
222
+ console.log(`[sokel] got ${sig}, told the platform we are going offline, exiting`);
207
223
  resolve();
208
224
  });
209
225
  };
@@ -219,15 +235,16 @@ export class NatsTransport {
219
235
  call = JSON.parse(dec.decode(msg.data));
220
236
  }
221
237
  catch {
222
- nc.publish(msg.reply, enc.encode(JSON.stringify({ error: "调用帧解不开" })));
238
+ nc.publish(msg.reply, enc.encode(JSON.stringify({ error: "could not parse the call frame" })));
223
239
  return;
224
240
  }
225
241
  const op = call.operation ?? "";
226
242
  const tag = traceTag(call.trace ?? {});
227
- // 平台代收 webhook 的特殊帧:分发前拦截(老 SDK 没这段会走 unknown operation,
228
- // 平台把它翻译成「插件未注册 webhook 处理器」)
243
+ // The platform-relayed webhook frame is intercepted before dispatch. An older SDK without this
244
+ // branch falls through to "unknown operation", which the platform translates into "the plugin
245
+ // registered no webhook handler".
229
246
  if (op === OP_WEBHOOK) {
230
- console.log(`[sokel] ← webhook 入站${tag}`);
247
+ console.log(`[sokel] ← webhook inbound${tag}`);
231
248
  const sctx = new SourceCtx({
232
249
  token: p.token,
233
250
  publish: (subject, data) => nc.publish(subject, data),
@@ -244,16 +261,16 @@ export class NatsTransport {
244
261
  const h = natsHeaders();
245
262
  h.set(INSTANCE_HEADER, instanceId);
246
263
  const started = Date.now();
247
- console.log(`[sokel] ← ${op} 开始${tag}`);
264
+ console.log(`[sokel] ← ${op} started${tag}`);
248
265
  if (p.contract.isStream(op)) {
249
- // 流式:逐帧发布到回复通道,末尾必发终止帧
266
+ // Streaming: publish frame by frame to the reply subject; the end frame is mandatory.
250
267
  const publishFrame = (f) => nc.publish(msg.reply, enc.encode(JSON.stringify(f)), { headers: h });
251
268
  try {
252
269
  await p.dispatch(call, publishFrame, files);
253
- console.log(`[sokel] ✓ ${op} 完成(${Date.now() - started}ms)${tag}`);
270
+ console.log(`[sokel] ✓ ${op} done (${Date.now() - started}ms)${tag}`);
254
271
  }
255
272
  catch (e) {
256
- console.warn(`[sokel] ✗ ${op} 失败(${Date.now() - started}ms)${tag}: ${errText(e)}`);
273
+ console.warn(`[sokel] ✗ ${op} failed (${Date.now() - started}ms)${tag}: ${errText(e)}`);
257
274
  publishFrame({ kind: "error", text: errText(e) });
258
275
  }
259
276
  publishFrame({ kind: "end" });
@@ -261,16 +278,17 @@ export class NatsTransport {
261
278
  }
262
279
  try {
263
280
  const vars = await p.dispatchBuffered(call, files);
264
- console.log(`[sokel] ✓ ${op} 完成(${Date.now() - started}ms)${tag}`);
281
+ console.log(`[sokel] ✓ ${op} done (${Date.now() - started}ms)${tag}`);
265
282
  nc.publish(msg.reply, enc.encode(JSON.stringify(vars)), { headers: h });
266
283
  }
267
284
  catch (e) {
268
- console.warn(`[sokel] ✗ ${op} 失败(${Date.now() - started}ms)${tag}: ${errText(e)}`);
285
+ console.warn(`[sokel] ✗ ${op} failed (${Date.now() - started}ms)${tag}: ${errText(e)}`);
269
286
  nc.publish(msg.reply, enc.encode(JSON.stringify({ error: errText(e) })), { headers: h });
270
287
  }
271
288
  }
272
289
  }
273
- /** 每个凭证一套源实例:ctx 绑定该凭证,trigger 自动回带其 credential_id。 */
290
+ /** One source instance per credential: its ctx is bound to that credential, and trigger carries the
291
+ * credential_id back automatically. */
274
292
  function makeSupervisor(p, nc, files) {
275
293
  return new SourceSupervisor((cred) => {
276
294
  const ctxs = [];
@@ -286,7 +304,7 @@ function makeSupervisor(p, nc, files) {
286
304
  files,
287
305
  });
288
306
  ctxs.push(sctx);
289
- console.log(`[sokel] 事件源「${src.id}」启动(credential=${cred.id || "(无凭证)"})`);
307
+ console.log(`[sokel] event source "${src.id}" started (credential=${cred.id || "(none)"})`);
290
308
  p.board.set(src.id, cred.id, "running");
291
309
  void src
292
310
  .fn(sctx)
@@ -296,43 +314,44 @@ function makeSupervisor(p, nc, files) {
296
314
  })
297
315
  .catch((e) => {
298
316
  if (sctx.stopped)
299
- return; // reconcile 停止:状态已由 stop() 整体移除
300
- console.warn(`[sokel] 事件源「${src.id}」退出(credential=${cred.id || "(无凭证)"}): ${errText(e)}`);
317
+ return; // stopped by reconcile: stop() already removed the state
318
+ console.warn(`[sokel] event source "${src.id}" exited (credential=${cred.id || "(none)"}): ${errText(e)}`);
301
319
  p.board.set(src.id, cred.id, "error", errText(e));
302
320
  });
303
321
  }
304
322
  return () => {
305
- // JS 没有任务取消:约定由源循环自己看 ctx.stopped 退出(长轮询在下一拍即感知)
323
+ // JS has no task cancellation: by convention the source loop watches ctx.stopped and exits
324
+ // (a long poll notices on its next tick).
306
325
  for (const c of ctxs)
307
326
  c.stopped = true;
308
327
  p.board.removeCred(cred.id);
309
328
  };
310
329
  });
311
330
  }
312
- /**
313
- * 统一 https 端点 → 经平台 /connect-info 发现真实承载地址。
314
- * 直填 nats:// / tls:// 时跳过发现(本地开发 / 离线场景)。
315
- */
316
331
  export async function discover(endpoint, token) {
317
332
  const ep = (endpoint ?? "").trim();
318
333
  if (ep.startsWith("nats://") || ep.startsWith("tls://"))
319
- return ep;
334
+ return { url: ep };
320
335
  if (!ep.startsWith("http://") && !ep.startsWith("https://")) {
321
- throw new Error(`端点 "${endpoint}" 不合法:应为平台地址(https://…)或 nats://`);
336
+ throw new Error(`invalid endpoint "${endpoint}": expected a platform URL (https://…) or nats://`);
322
337
  }
323
338
  const url = ep.replace(/\/+$/, "") + "/api/v1/connect-info";
324
339
  const resp = await fetch(url, { headers: { Authorization: `Bearer ${token}` } });
325
340
  if (!resp.ok)
326
- throw new Error(`平台发现失败 ${url}: HTTP ${resp.status}`);
341
+ throw new Error(`discovery failed at ${url}: HTTP ${resp.status}`);
327
342
  const info = (await resp.json());
343
+ if (info.nats?.url)
344
+ return info.nats;
328
345
  const target = info.transports?.nats;
329
346
  if (!target)
330
- throw new Error("平台未提供可用承载(connect-info.transports 为空)");
331
- return target;
347
+ throw new Error("the platform offers no transport (connect-info.transports is empty)");
348
+ return { url: target };
332
349
  }
333
350
  /**
334
- * 副本的稳定身份:重启复用,否则平台侧每次重启都多出一行永远 offline 的幽灵实例。
335
- * 1) SOKEL_INSTANCE_ID;2) 工作目录里按 token 指纹命名的落盘文件;3) 落盘失败 → host-pid。
351
+ * A stable replica identity, reused across restarts. Without it every restart leaves the platform
352
+ * holding another ghost row that stays offline forever.
353
+ * In order: 1) SOKEL_INSTANCE_ID; 2) a file in the working directory named after the token's
354
+ * fingerprint; 3) if writing that file fails, host-pid.
336
355
  */
337
356
  export function stableInstanceId(token) {
338
357
  const explicit = env("INSTANCE_ID");
@@ -347,7 +366,7 @@ export function stableInstanceId(token) {
347
366
  return existing;
348
367
  }
349
368
  catch {
350
- /* 首次运行:往下走,生成并落盘 */
369
+ /* first run: fall through, generate one and write it out */
351
370
  }
352
371
  const id = `${hostname()}-${randomBytes(4).toString("hex")}`;
353
372
  try {
@@ -364,7 +383,7 @@ async function connectForever(opts) {
364
383
  return await connect(opts);
365
384
  }
366
385
  catch (e) {
367
- console.warn(`[sokel] 连接平台失败(${errText(e)}),${RETRY_MS / 1000}s 后重试…`);
386
+ console.warn(`[sokel] could not connect to the platform (${errText(e)}), retrying in ${RETRY_MS / 1000}s…`);
368
387
  await sleep(RETRY_MS);
369
388
  }
370
389
  }
@@ -1 +1 @@
1
- {"version":3,"file":"nats.js","sourceRoot":"","sources":["../../src/nats.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"nats.js","sourceRoot":"","sources":["../../src/nats.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,9 @@
1
1
  /**
2
- * Plugin:注册表 + 分发。传输无关——NATS 那一层只负责收发字节。
2
+ * Plugin: the registry plus dispatch. Transport-agnostic — the NATS layer only moves bytes.
3
3
  *
4
- * 分发这段是**最值得单测的一段**(未知操作、流式与非流式的回复形态、webhook 帧的拦截),
5
- * 所以它一行都不碰 NATS:测试塞一个假 sink 就能跑完整条路径。
4
+ * Dispatch is the part **most worth unit-testing** (unknown operations, the reply shape for
5
+ * streaming versus non-streaming, intercepting the webhook frame), so it touches no NATS at all: a
6
+ * fake sink is enough to exercise the whole path.
6
7
  */
7
8
  import { Contract } from "./contract.js";
8
9
  import type { ContractData } from "./contract.js";
@@ -20,7 +21,7 @@ export interface Config {
20
21
  token?: string;
21
22
  version?: string;
22
23
  }
23
- /** 平台下发的一次调用(协议 §4)。 */
24
+ /** One call delivered by the platform (protocol §4). */
24
25
  export interface Call {
25
26
  operation?: string;
26
27
  input?: Record<string, unknown>;
@@ -42,39 +43,43 @@ export declare class Plugin {
42
43
  private webhookFn?;
43
44
  managed: boolean;
44
45
  constructor(cfg: Config);
45
- /** 低阶注册:fn(ctx, input, emitter)。生成的 onXxx 就是它的类型化外壳。 */
46
+ /** Low-level registration: fn(ctx, input, emitter). The generated onXxx is its typed shell. */
46
47
  register(opId: string, fn: Invoke): void;
47
- /** 注册常驻事件源;run() 时每个「源 × 凭证」起一个任务。 */
48
+ /** Register a long-running event source; run() starts one task per source × credential. */
48
49
  registerSource(id: string, label: string, fn: (ctx: SourceCtx) => Promise<void>): void;
49
- /** 注册 webhook 处理器(一个插件一个:按 header / path 自行分流上游事件类型)。 */
50
+ /** Register the webhook handler (one per plugin: route upstream event types yourself by header
51
+ * or path). */
50
52
  registerWebhook(fn: WebhookHandler): void;
51
53
  get hasWebhook(): boolean;
52
54
  /**
53
- * 挂上认证流的实现。形态(qr / input / oauth)在 sokel.yaml 里声明,这里只给实现。
55
+ * Attach the auth flow's implementation. The shape (qr / input / oauth) is declared in manifest.yml;
56
+ * only the implementation goes here.
54
57
  *
55
- * kind=oauth 的 start/poll 由**平台代答**(client_secret 在平台手里,插件构造不出
56
- * 同意页地址),所以那种插件一个 handler 都不用写。
58
+ * For kind=oauth the platform answers start/poll itself — the client secret lives there and a
59
+ * plugin cannot build the consent URL — so such a plugin writes no handler at all.
57
60
  */
58
61
  registerAuth(h: AuthHandlers): void;
59
- /** 声明本插件支持/不支持哪些**可选**能力(同一个操作做到什么程度)。 */
62
+ /** Declare which **optional** capabilities this plugin has — how far a given operation goes. */
60
63
  setCapabilities(caps: Record<string, boolean>): void;
61
64
  /**
62
- * 注册 / 心跳的载荷(协议 §3)。
65
+ * The registration / heartbeat payload (protocol §3).
63
66
  *
64
- * 单独一个方法是为了能测:**声明了却没上报**是这套自报机制最典型的静默失效——
65
- * 插件侧一切正常、平台侧什么也没发生,作者只能对着一个没反应的界面排查。
67
+ * It is a separate method so it can be tested: **declared but never reported** is the classic
68
+ * silent failure of a self-reporting mechanism. Everything looks fine on the plugin side, nothing
69
+ * happens on the platform side, and the author is left staring at an inert UI.
66
70
  */
67
71
  registerPayload(instanceId: string, host: string, startedAt: string): Record<string, unknown>;
68
72
  find(opId: string): Invoke | undefined;
69
- /** 跑一次调用,把各帧交给 sink。异常原样抛出,由传输层翻成 error 帧 / error 回复。 */
73
+ /** Run one call, handing frames to the sink. Exceptions propagate; the transport turns them into
74
+ * an error frame or an error reply. */
70
75
  dispatch(call: Call, sink: Sink, files?: FileRuntime): Promise<void>;
71
- /** 非流式:缓冲各帧,合并 variables 作为单次回复。 */
76
+ /** Non-streaming: buffer the frames and merge the variables into a single reply. */
72
77
  dispatchBuffered(call: Call, files?: FileRuntime): Promise<Record<string, unknown>>;
73
78
  /**
74
- * 处理一帧 __webhook__。应答带 events 计数——平台的 webhook 面板靠它回答
75
- * 「请求到了但为什么没起工作流」这一问。
79
+ * Handle one __webhook__ frame. The reply carries an events count: that is how the platform's
80
+ * webhook panel answers "the request arrived, so why did no workflow start?".
76
81
  */
77
82
  handleWebhook(sctx: SourceCtx, frame: WebhookFrame): Promise<Record<string, unknown>>;
78
- /** 连接平台、注册、心跳、分发调用。返回的 Promise 在收到 SIGINT/SIGTERM 后完成。 */
83
+ /** Connect, register, heartbeat and dispatch calls. The promise settles on SIGINT/SIGTERM. */
79
84
  run(): Promise<void>;
80
85
  }