@sokel-dev/plugin-sdk 0.2.0

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nats.js","sourceRoot":"","sources":["../../src/nats.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,80 @@
1
+ /**
2
+ * Plugin:注册表 + 分发。传输无关——NATS 那一层只负责收发字节。
3
+ *
4
+ * 分发这段是**最值得单测的一段**(未知操作、流式与非流式的回复形态、webhook 帧的拦截),
5
+ * 所以它一行都不碰 NATS:测试塞一个假 sink 就能跑完整条路径。
6
+ */
7
+ import { Contract } from "./contract.js";
8
+ import type { ContractData } from "./contract.js";
9
+ import type { AuthHandlers } from "./auth.js";
10
+ import { SourceCtx, StateBoard } from "./events.js";
11
+ import type { Source } from "./events.js";
12
+ import { Ctx, Emitter } from "./runtime.js";
13
+ import type { FileRuntime, Sink } from "./runtime.js";
14
+ import { WebhookRequest } from "./webhook.js";
15
+ import type { WebhookFrame, WebhookResponse } from "./webhook.js";
16
+ export interface Config {
17
+ contract: ContractData;
18
+ name?: string;
19
+ endpoint?: string;
20
+ token?: string;
21
+ version?: string;
22
+ }
23
+ /** 平台下发的一次调用(协议 §4)。 */
24
+ export interface Call {
25
+ operation?: string;
26
+ input?: Record<string, unknown>;
27
+ credential?: Record<string, string>;
28
+ credential_id?: string;
29
+ trace?: Record<string, string>;
30
+ }
31
+ export type Invoke = (ctx: Ctx, input: Record<string, unknown>, out: Emitter<unknown>) => Promise<void>;
32
+ export type WebhookHandler = (ctx: SourceCtx, req: WebhookRequest) => Promise<WebhookResponse | void> | WebhookResponse | void;
33
+ export declare class Plugin {
34
+ readonly contract: Contract;
35
+ readonly name: string;
36
+ readonly endpoint: string;
37
+ readonly token: string;
38
+ readonly version: string;
39
+ readonly board: StateBoard;
40
+ readonly sources: Source[];
41
+ private readonly ops;
42
+ private webhookFn?;
43
+ managed: boolean;
44
+ constructor(cfg: Config);
45
+ /** 低阶注册:fn(ctx, input, emitter)。生成的 onXxx 就是它的类型化外壳。 */
46
+ register(opId: string, fn: Invoke): void;
47
+ /** 注册常驻事件源;run() 时每个「源 × 凭证」起一个任务。 */
48
+ registerSource(id: string, label: string, fn: (ctx: SourceCtx) => Promise<void>): void;
49
+ /** 注册 webhook 处理器(一个插件一个:按 header / path 自行分流上游事件类型)。 */
50
+ registerWebhook(fn: WebhookHandler): void;
51
+ get hasWebhook(): boolean;
52
+ /**
53
+ * 挂上认证流的实现。形态(qr / input / oauth)在 sokel.yaml 里声明,这里只给实现。
54
+ *
55
+ * kind=oauth 的 start/poll 由**平台代答**(client_secret 在平台手里,插件构造不出
56
+ * 同意页地址),所以那种插件一个 handler 都不用写。
57
+ */
58
+ registerAuth(h: AuthHandlers): void;
59
+ /** 声明本插件支持/不支持哪些**可选**能力(同一个操作做到什么程度)。 */
60
+ setCapabilities(caps: Record<string, boolean>): void;
61
+ /**
62
+ * 注册 / 心跳的载荷(协议 §3)。
63
+ *
64
+ * 单独一个方法是为了能测:**声明了却没上报**是这套自报机制最典型的静默失效——
65
+ * 插件侧一切正常、平台侧什么也没发生,作者只能对着一个没反应的界面排查。
66
+ */
67
+ registerPayload(instanceId: string, host: string, startedAt: string): Record<string, unknown>;
68
+ find(opId: string): Invoke | undefined;
69
+ /** 跑一次调用,把各帧交给 sink。异常原样抛出,由传输层翻成 error 帧 / error 回复。 */
70
+ dispatch(call: Call, sink: Sink, files?: FileRuntime): Promise<void>;
71
+ /** 非流式:缓冲各帧,合并 variables 作为单次回复。 */
72
+ dispatchBuffered(call: Call, files?: FileRuntime): Promise<Record<string, unknown>>;
73
+ /**
74
+ * 处理一帧 __webhook__。应答带 events 计数——平台的 webhook 面板靠它回答
75
+ * 「请求到了但为什么没起工作流」这一问。
76
+ */
77
+ handleWebhook(sctx: SourceCtx, frame: WebhookFrame): Promise<Record<string, unknown>>;
78
+ /** 连接平台、注册、心跳、分发调用。返回的 Promise 在收到 SIGINT/SIGTERM 后完成。 */
79
+ run(): Promise<void>;
80
+ }
@@ -0,0 +1,188 @@
1
+ /**
2
+ * Plugin:注册表 + 分发。传输无关——NATS 那一层只负责收发字节。
3
+ *
4
+ * 分发这段是**最值得单测的一段**(未知操作、流式与非流式的回复形态、webhook 帧的拦截),
5
+ * 所以它一行都不碰 NATS:测试塞一个假 sink 就能跑完整条路径。
6
+ */
7
+ import { CAP_WEBHOOK, Contract, OP_AUTH_POLL, OP_AUTH_START, OP_AUTH_SUBMIT } from "./contract.js";
8
+ import { CONFIRMED, PENDING } from "./auth.js";
9
+ import { StateBoard } from "./events.js";
10
+ import { BufferSink, Ctx, Emitter } from "./runtime.js";
11
+ import { env, envOr } from "./env.js";
12
+ import { WebhookRequest, responseFrame } from "./webhook.js";
13
+ export class Plugin {
14
+ contract;
15
+ name;
16
+ endpoint;
17
+ token;
18
+ version;
19
+ board = new StateBoard();
20
+ sources = [];
21
+ ops = new Map();
22
+ webhookFn;
23
+ managed = false;
24
+ constructor(cfg) {
25
+ this.contract = new Contract(cfg.contract);
26
+ this.name = cfg.name || cfg.contract.name || "sokel-plugin";
27
+ this.endpoint = cfg.endpoint || envOr("ENDPOINT", "http://localhost:8088");
28
+ this.token = cfg.token || env("TOKEN");
29
+ // 版本三档:显式参数 > 契约里声明的(sokel.yaml 的 plugin.version)> 环境变量 > 兜底
30
+ this.version = cfg.version || cfg.contract.version || env("VERSION") || "sdk-node";
31
+ }
32
+ /** 低阶注册:fn(ctx, input, emitter)。生成的 onXxx 就是它的类型化外壳。 */
33
+ register(opId, fn) {
34
+ if (!opId.includes(".") && !this.contract.operation(opId)) {
35
+ throw new Error(`操作 "${opId}" 不在契约里 —— 先在 sokel.yaml 的 operations 声明它,再重新生成`);
36
+ }
37
+ if (this.ops.has(opId))
38
+ throw new Error(`操作 "${opId}" 重复注册`);
39
+ this.ops.set(opId, fn);
40
+ }
41
+ /** 注册常驻事件源;run() 时每个「源 × 凭证」起一个任务。 */
42
+ registerSource(id, label, fn) {
43
+ this.sources.push({ id, label, fn });
44
+ }
45
+ /** 注册 webhook 处理器(一个插件一个:按 header / path 自行分流上游事件类型)。 */
46
+ registerWebhook(fn) {
47
+ this.webhookFn = fn;
48
+ // 能力位不靠自报靠事实:注册了处理器就是支持,作者忘声明不该让入口按钮消失
49
+ this.contract.data.capabilities = { ...(this.contract.data.capabilities ?? {}), [CAP_WEBHOOK]: true };
50
+ }
51
+ get hasWebhook() {
52
+ return this.webhookFn !== undefined;
53
+ }
54
+ /**
55
+ * 挂上认证流的实现。形态(qr / input / oauth)在 sokel.yaml 里声明,这里只给实现。
56
+ *
57
+ * kind=oauth 的 start/poll 由**平台代答**(client_secret 在平台手里,插件构造不出
58
+ * 同意页地址),所以那种插件一个 handler 都不用写。
59
+ */
60
+ registerAuth(h) {
61
+ const declared = this.contract.data.auth_flow;
62
+ const steps = declared?.steps ?? [];
63
+ const requireStep = (step) => {
64
+ if (!steps.includes(step)) {
65
+ throw new Error(`契约里的认证流没有 "${step}" 这一步(当前 ${steps.join("/") || "未声明"})——` +
66
+ "步骤由 credential.auth.kind 定死,实现多于声明就是一份永远不会被调用的代码");
67
+ }
68
+ };
69
+ if (h.start) {
70
+ requireStep("start");
71
+ this.ops.set(OP_AUTH_START, async (ctx, _in, out) => {
72
+ const ch = await h.start(ctx);
73
+ if (!ch)
74
+ throw new Error("认证流 start 未返回挑战");
75
+ out.vars({
76
+ auth_id: ch.authId || `auth_${Date.now()}`,
77
+ challenge: { kind: ch.kind ?? declared?.kind ?? "", qr_image: ch.qrImage ?? "", prompt: ch.prompt ?? "" },
78
+ expires_in: ch.expiresIn ?? 0,
79
+ });
80
+ });
81
+ }
82
+ if (h.poll) {
83
+ requireStep("poll");
84
+ this.ops.set(OP_AUTH_POLL, async (ctx, input, out) => {
85
+ const st = (await h.poll(ctx, String(input.auth_id ?? ""))) ?? { status: PENDING };
86
+ const vars = { status: st.status };
87
+ // session 只在 confirmed 时带出去;pending 时带一个 null 会让平台反复覆写凭证行
88
+ if (st.status === CONFIRMED && st.session)
89
+ vars.session = st.session;
90
+ out.vars(vars);
91
+ });
92
+ }
93
+ if (h.submit) {
94
+ requireStep("submit");
95
+ this.ops.set(OP_AUTH_SUBMIT, async (ctx, input, out) => {
96
+ await h.submit(ctx, String(input.auth_id ?? ""), String(input.input ?? ""));
97
+ out.vars({ ok: true });
98
+ });
99
+ }
100
+ }
101
+ /** 声明本插件支持/不支持哪些**可选**能力(同一个操作做到什么程度)。 */
102
+ setCapabilities(caps) {
103
+ this.contract.data.capabilities = { ...(this.contract.data.capabilities ?? {}), ...caps };
104
+ }
105
+ /**
106
+ * 注册 / 心跳的载荷(协议 §3)。
107
+ *
108
+ * 单独一个方法是为了能测:**声明了却没上报**是这套自报机制最典型的静默失效——
109
+ * 插件侧一切正常、平台侧什么也没发生,作者只能对着一个没反应的界面排查。
110
+ */
111
+ registerPayload(instanceId, host, startedAt) {
112
+ const body = {
113
+ token: this.token,
114
+ instance_id: instanceId,
115
+ host,
116
+ // 进程启动时刻:注册与每拍心跳重发同一值,平台据此区分「重新上线的新副本」与「一直活着的老副本」
117
+ started_at: startedAt,
118
+ version: this.version,
119
+ transport: "nats",
120
+ managed: this.managed,
121
+ ...this.contract.payload(),
122
+ };
123
+ const region = env("REGION");
124
+ if (region)
125
+ body.region = region;
126
+ if (this.sources.length > 0)
127
+ body.source_states = this.board.snapshot();
128
+ return body;
129
+ }
130
+ find(opId) {
131
+ const fn = this.ops.get(opId);
132
+ if (fn)
133
+ return fn;
134
+ // 单操作插件:operation 省略(或对不上)时默认唯一操作,与 Go SDK 同一条兜底
135
+ const business = [...this.ops.keys()].filter((k) => !k.includes("."));
136
+ return business.length === 1 ? this.ops.get(business[0]) : undefined;
137
+ }
138
+ /** 跑一次调用,把各帧交给 sink。异常原样抛出,由传输层翻成 error 帧 / error 回复。 */
139
+ async dispatch(call, sink, files) {
140
+ const opId = call.operation ?? "";
141
+ const fn = this.find(opId);
142
+ if (!fn)
143
+ throw new Error(`unknown operation "${opId}"`);
144
+ const ctx = new Ctx({ credential: call.credential, trace: call.trace, files });
145
+ await fn(ctx, call.input ?? {}, new Emitter(sink));
146
+ }
147
+ /** 非流式:缓冲各帧,合并 variables 作为单次回复。 */
148
+ async dispatchBuffered(call, files) {
149
+ const buf = new BufferSink();
150
+ await this.dispatch(call, buf.sink, files);
151
+ return buf.vars;
152
+ }
153
+ /**
154
+ * 处理一帧 __webhook__。应答带 events 计数——平台的 webhook 面板靠它回答
155
+ * 「请求到了但为什么没起工作流」这一问。
156
+ */
157
+ async handleWebhook(sctx, frame) {
158
+ if (!this.webhookFn)
159
+ return { status: 0, error: "插件未注册 webhook 处理器" };
160
+ const req = new WebhookRequest(frame ?? {});
161
+ let events = 0;
162
+ const counted = new Proxy(sctx, {
163
+ get(target, prop, recv) {
164
+ if (prop === "trigger") {
165
+ return async (event, eventId, payload) => {
166
+ await target.trigger(event, eventId, payload);
167
+ events += 1;
168
+ };
169
+ }
170
+ const v = Reflect.get(target, prop, recv);
171
+ return typeof v === "function" ? v.bind(target) : v;
172
+ },
173
+ });
174
+ try {
175
+ const resp = (await this.webhookFn(counted, req)) ?? { status: 200 };
176
+ return responseFrame(resp, events);
177
+ }
178
+ catch (e) {
179
+ return { status: 0, error: `${e instanceof Error ? e.message : e}` };
180
+ }
181
+ }
182
+ /** 连接平台、注册、心跳、分发调用。返回的 Promise 在收到 SIGINT/SIGTERM 后完成。 */
183
+ async run() {
184
+ const { NatsTransport } = await import("./nats.js");
185
+ await new NatsTransport().run(this);
186
+ }
187
+ }
188
+ //# sourceMappingURL=plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/plugin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,75 @@
1
+ /**
2
+ * 运行时形状:文件引用、产出帧、调用上下文。
3
+ *
4
+ * 与传输无关——NATS 只提供「取字节 / 存字节 / 发帧」三个回调,剩下的语义都在这里。
5
+ * 测试因此不需要 broker:塞一个假的文件运行时与假的 sink 就能跑完整条分发路径。
6
+ */
7
+ /** 文件引用(画布里只流转引用,不内联字节)。 */
8
+ export interface SokelFile {
9
+ id?: string;
10
+ url?: string;
11
+ name?: string;
12
+ mime?: string;
13
+ size?: number;
14
+ /** data:无平台文件层时(单元测试)直接携带的字节,不参与序列化。 */
15
+ data?: Uint8Array;
16
+ }
17
+ /** 文件字节的取/存后端,由传输层注入。 */
18
+ export interface FileRuntime {
19
+ fetch(f: SokelFile): Promise<Uint8Array>;
20
+ store(name: string, mime: string, data: Uint8Array): Promise<SokelFile>;
21
+ }
22
+ export declare const FRAME_TEXT = "text";
23
+ export declare const FRAME_JSON = "json";
24
+ export declare const FRAME_VARS = "variables";
25
+ export interface Frame {
26
+ kind: string;
27
+ text?: string;
28
+ json?: unknown;
29
+ vars?: Record<string, unknown>;
30
+ }
31
+ export type Sink = (f: Frame) => void;
32
+ /** 类型化产出器。多次调用 = 多帧(流式);非流式由 SDK 缓冲合并成一次回复。 */
33
+ export declare class Emitter<Out> {
34
+ private readonly sink;
35
+ constructor(sink: Sink);
36
+ /** 人类可读文本(展示 / tracing)。 */
37
+ text(s: string): void;
38
+ /** 结构化 JSON(展示 / tracing)。 */
39
+ json(v: unknown): void;
40
+ /** 类型化输出变量(进下游节点)。可多次调用,后帧覆盖同名字段。 */
41
+ vars(out: Out): void;
42
+ }
43
+ export declare function toVars(value: unknown): Record<string, unknown>;
44
+ /** 非流式汇聚:只收 variables 帧,合并成一个输出对象(text/json 仅流式展示用)。 */
45
+ export declare class BufferSink {
46
+ readonly vars: Record<string, unknown>;
47
+ readonly sink: Sink;
48
+ }
49
+ /** 操作 handler 的上下文:凭证、追踪、文件取存。 */
50
+ export declare class Ctx {
51
+ readonly credential: Record<string, string>;
52
+ private readonly traceMap;
53
+ private readonly files?;
54
+ constructor(opts?: {
55
+ credential?: Record<string, string>;
56
+ trace?: Record<string, string>;
57
+ files?: FileRuntime;
58
+ });
59
+ /**
60
+ * 平台下发的追踪上下文(run_id / workflow_id / node_id)。
61
+ *
62
+ * 非工作流调用(试调用、健康检查)没有这些值,返回空串——**调用方要把空串当
63
+ * 「没有重试语义」处理**,而不是当成一个恒定的键(那会把两次独立调用错误地去重)。
64
+ */
65
+ trace(key: string): string;
66
+ /**
67
+ * 凭证按类型化形状读出。返回 Partial<T> 而不是 T —— 平台下发的是「这条凭证有哪些字段」,
68
+ * 生成的 Credential 里标必填的字段在运行时仍可能缺(凭证刚建、还没登录)。
69
+ * 假装它一定在,只会把一次 undefined 推迟到更远的地方炸。
70
+ */
71
+ credentialAs<T extends object>(): Partial<T>;
72
+ fetch(f: SokelFile): Promise<Uint8Array>;
73
+ /** 产出一个文件:字节交回平台登记,返回可放进出参的引用。 */
74
+ upload(name: string, mime: string, data: Uint8Array): Promise<SokelFile>;
75
+ }
@@ -0,0 +1,94 @@
1
+ /**
2
+ * 运行时形状:文件引用、产出帧、调用上下文。
3
+ *
4
+ * 与传输无关——NATS 只提供「取字节 / 存字节 / 发帧」三个回调,剩下的语义都在这里。
5
+ * 测试因此不需要 broker:塞一个假的文件运行时与假的 sink 就能跑完整条分发路径。
6
+ */
7
+ export const FRAME_TEXT = "text";
8
+ export const FRAME_JSON = "json";
9
+ export const FRAME_VARS = "variables";
10
+ /** 类型化产出器。多次调用 = 多帧(流式);非流式由 SDK 缓冲合并成一次回复。 */
11
+ export class Emitter {
12
+ sink;
13
+ constructor(sink) {
14
+ this.sink = sink;
15
+ }
16
+ /** 人类可读文本(展示 / tracing)。 */
17
+ text(s) {
18
+ this.sink({ kind: FRAME_TEXT, text: s });
19
+ }
20
+ /** 结构化 JSON(展示 / tracing)。 */
21
+ json(v) {
22
+ this.sink({ kind: FRAME_JSON, json: v });
23
+ }
24
+ /** 类型化输出变量(进下游节点)。可多次调用,后帧覆盖同名字段。 */
25
+ vars(out) {
26
+ const m = toVars(out);
27
+ if (Object.keys(m).length > 0)
28
+ this.sink({ kind: FRAME_VARS, vars: m });
29
+ }
30
+ }
31
+ export function toVars(value) {
32
+ if (value === null || value === undefined)
33
+ return {};
34
+ if (typeof value !== "object" || Array.isArray(value)) {
35
+ throw new TypeError(`输出必须是对象,收到 ${typeof value}`);
36
+ }
37
+ const out = {};
38
+ for (const [k, v] of Object.entries(value)) {
39
+ if (v !== undefined)
40
+ out[k] = v;
41
+ }
42
+ return out;
43
+ }
44
+ /** 非流式汇聚:只收 variables 帧,合并成一个输出对象(text/json 仅流式展示用)。 */
45
+ export class BufferSink {
46
+ vars = {};
47
+ sink = (f) => {
48
+ if (f.kind !== FRAME_VARS)
49
+ return;
50
+ Object.assign(this.vars, f.vars ?? {});
51
+ };
52
+ }
53
+ /** 操作 handler 的上下文:凭证、追踪、文件取存。 */
54
+ export class Ctx {
55
+ credential;
56
+ traceMap;
57
+ files;
58
+ constructor(opts = {}) {
59
+ this.credential = opts.credential ?? {};
60
+ this.traceMap = opts.trace ?? {};
61
+ this.files = opts.files;
62
+ }
63
+ /**
64
+ * 平台下发的追踪上下文(run_id / workflow_id / node_id)。
65
+ *
66
+ * 非工作流调用(试调用、健康检查)没有这些值,返回空串——**调用方要把空串当
67
+ * 「没有重试语义」处理**,而不是当成一个恒定的键(那会把两次独立调用错误地去重)。
68
+ */
69
+ trace(key) {
70
+ return this.traceMap[key] ?? "";
71
+ }
72
+ /**
73
+ * 凭证按类型化形状读出。返回 Partial<T> 而不是 T —— 平台下发的是「这条凭证有哪些字段」,
74
+ * 生成的 Credential 里标必填的字段在运行时仍可能缺(凭证刚建、还没登录)。
75
+ * 假装它一定在,只会把一次 undefined 推迟到更远的地方炸。
76
+ */
77
+ credentialAs() {
78
+ return this.credential;
79
+ }
80
+ async fetch(f) {
81
+ if (f.data)
82
+ return f.data;
83
+ if (!this.files)
84
+ throw new Error("文件运行时未就绪");
85
+ return this.files.fetch(f);
86
+ }
87
+ /** 产出一个文件:字节交回平台登记,返回可放进出参的引用。 */
88
+ async upload(name, mime, data) {
89
+ if (!this.files)
90
+ return { name, mime, size: data.length, data };
91
+ return this.files.store(name, mime, data);
92
+ }
93
+ }
94
+ //# sourceMappingURL=runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/runtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * 平台代插件收 webhook:外部系统 → 平台 /hooks/{token} → __webhook__ 帧到这里(协议 §7b)。
3
+ *
4
+ * handler 的职责:用凭证里的 secret 验上游签名(各家算法不同,平台不懂上游、插件懂)→
5
+ * 解析 body → ctx.trigger 推 typed 事件(走既有声明校验与平台去重)→ 返回响应
6
+ * (GitLab 要 2xx、飞书 URL 校验要回 challenge,由 handler 决定)。
7
+ */
8
+ export interface WebhookFrame {
9
+ method?: string;
10
+ path?: string;
11
+ query?: string;
12
+ headers?: Record<string, string>;
13
+ body_b64?: string;
14
+ }
15
+ /** 一次入站 webhook(平台已剥掉 Cookie 等平台侧头)。 */
16
+ export declare class WebhookRequest {
17
+ readonly method: string;
18
+ readonly path: string;
19
+ readonly query: string;
20
+ readonly headers: Record<string, string>;
21
+ /** body 走 base64 保原始字节:HMAC 类验签必须逐字节一致,JSON 重编码会破坏签名。 */
22
+ readonly body: Buffer;
23
+ constructor(frame: WebhookFrame);
24
+ /** 大小写不敏感取头(HTTP 语义;X-Gitlab-Event 与 x-gitlab-event 都认)。 */
25
+ header(name: string): string;
26
+ /** body 按 JSON 解。解不开时抛错——上游发了坏 JSON 该是一次可见的失败。 */
27
+ json<T = unknown>(): T;
28
+ }
29
+ /** 回给上游的应答。status=0 + error 表示处理失败(平台翻译成 5xx)。 */
30
+ export interface WebhookResponse {
31
+ status: number;
32
+ headers?: Record<string, string>;
33
+ body?: Buffer | string;
34
+ }
35
+ export declare function ok(): WebhookResponse;
36
+ /** 要回 body 的场景(飞书 URL 校验的 challenge 这类)。 */
37
+ export declare function text(status: number, body: string): WebhookResponse;
38
+ export declare function responseFrame(resp: WebhookResponse, events: number): Record<string, unknown>;
@@ -0,0 +1,53 @@
1
+ /**
2
+ * 平台代插件收 webhook:外部系统 → 平台 /hooks/{token} → __webhook__ 帧到这里(协议 §7b)。
3
+ *
4
+ * handler 的职责:用凭证里的 secret 验上游签名(各家算法不同,平台不懂上游、插件懂)→
5
+ * 解析 body → ctx.trigger 推 typed 事件(走既有声明校验与平台去重)→ 返回响应
6
+ * (GitLab 要 2xx、飞书 URL 校验要回 challenge,由 handler 决定)。
7
+ */
8
+ /** 一次入站 webhook(平台已剥掉 Cookie 等平台侧头)。 */
9
+ export class WebhookRequest {
10
+ method;
11
+ path;
12
+ query;
13
+ headers;
14
+ /** body 走 base64 保原始字节:HMAC 类验签必须逐字节一致,JSON 重编码会破坏签名。 */
15
+ body;
16
+ constructor(frame) {
17
+ this.method = frame.method ?? "POST";
18
+ this.path = frame.path ?? "";
19
+ this.query = frame.query ?? "";
20
+ this.headers = frame.headers ?? {};
21
+ this.body = Buffer.from(frame.body_b64 ?? "", "base64");
22
+ }
23
+ /** 大小写不敏感取头(HTTP 语义;X-Gitlab-Event 与 x-gitlab-event 都认)。 */
24
+ header(name) {
25
+ const lowered = name.toLowerCase();
26
+ for (const [k, v] of Object.entries(this.headers)) {
27
+ if (k.toLowerCase() === lowered)
28
+ return v;
29
+ }
30
+ return "";
31
+ }
32
+ /** body 按 JSON 解。解不开时抛错——上游发了坏 JSON 该是一次可见的失败。 */
33
+ json() {
34
+ return JSON.parse(this.body.toString("utf8"));
35
+ }
36
+ }
37
+ export function ok() {
38
+ return { status: 200 };
39
+ }
40
+ /** 要回 body 的场景(飞书 URL 校验的 challenge 这类)。 */
41
+ export function text(status, body) {
42
+ return { status, body };
43
+ }
44
+ export function responseFrame(resp, events) {
45
+ const body = resp.body === undefined ? Buffer.alloc(0) : Buffer.from(resp.body);
46
+ return {
47
+ status: resp.status || 200,
48
+ headers: resp.headers ?? null,
49
+ body_b64: body.toString("base64"),
50
+ events,
51
+ };
52
+ }
53
+ //# sourceMappingURL=webhook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhook.js","sourceRoot":"","sources":["../../src/webhook.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAUH,wCAAwC;AACxC,MAAM,OAAO,cAAc;IAChB,MAAM,CAAS;IACf,IAAI,CAAS;IACb,KAAK,CAAS;IACd,OAAO,CAAyB;IACzC,yDAAyD;IAChD,IAAI,CAAS;IAEtB,YAAY,KAAmB;QAC7B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,MAAM,CAAC;QACrC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;QAC7B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;QAC/B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC;QACnC,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,EAAE,QAAQ,CAAC,CAAC;IAC1D,CAAC;IAED,4DAA4D;IAC5D,MAAM,CAAC,IAAY;QACjB,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACnC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAClD,IAAI,CAAC,CAAC,WAAW,EAAE,KAAK,OAAO;gBAAE,OAAO,CAAC,CAAC;QAC5C,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,kDAAkD;IAClD,IAAI;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAM,CAAC;IACrD,CAAC;CACF;AASD,MAAM,UAAU,EAAE;IAChB,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AACzB,CAAC;AAED,4CAA4C;AAC5C,MAAM,UAAU,IAAI,CAAC,MAAc,EAAE,IAAY;IAC/C,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAqB,EAAE,MAAc;IACjE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAa,CAAC,CAAC;IACzF,OAAO;QACL,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,GAAG;QAC1B,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI;QAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACjC,MAAM;KACP,CAAC;AACJ,CAAC"}
package/package.json ADDED
@@ -0,0 +1,56 @@
1
+ {
2
+ "name": "@sokel-dev/plugin-sdk",
3
+ "version": "0.2.0",
4
+ "description": "Sokel plugin SDK for Node.js — declare the contract in sokel.yaml, implement typed handlers.",
5
+ "license": "Apache-2.0",
6
+ "homepage": "https://github.com/sokel-dev/sokel-plugin-sdk/tree/main/sdk-node",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "git+https://github.com/sokel-dev/sokel-plugin-sdk.git",
10
+ "directory": "sdk-node"
11
+ },
12
+ "bugs": {
13
+ "url": "https://github.com/sokel-dev/sokel-plugin-sdk/issues"
14
+ },
15
+ "keywords": [
16
+ "sokel",
17
+ "plugin",
18
+ "sdk",
19
+ "nats",
20
+ "workflow",
21
+ "automation"
22
+ ],
23
+ "type": "module",
24
+ "main": "./dist/src/index.js",
25
+ "types": "./dist/src/index.d.ts",
26
+ "exports": {
27
+ ".": {
28
+ "types": "./dist/src/index.d.ts",
29
+ "default": "./dist/src/index.js"
30
+ }
31
+ },
32
+ "files": [
33
+ "dist/src",
34
+ "README.md",
35
+ "LICENSE"
36
+ ],
37
+ "engines": {
38
+ "node": ">=20"
39
+ },
40
+ "scripts": {
41
+ "build": "tsc -p tsconfig.json",
42
+ "test": "tsc -p tsconfig.json && node --test dist/test/*.test.js",
43
+ "prepublishOnly": "npm run build"
44
+ },
45
+ "dependencies": {
46
+ "nats": "^2.29.0"
47
+ },
48
+ "devDependencies": {
49
+ "@types/node": "^22.10.0",
50
+ "typescript": "^5.7.0"
51
+ },
52
+ "publishConfig": {
53
+ "access": "public",
54
+ "provenance": true
55
+ }
56
+ }