@objectstack/plugin-webhooks 17.0.0-rc.6 → 17.0.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.
package/dist/schema.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  SysWebhook
3
- } from "./chunk-3QGZLM3T.js";
3
+ } from "./chunk-GDCWDVDT.js";
4
4
  export {
5
5
  SysWebhook
6
6
  };
@@ -3,14 +3,14 @@ var enObjects = {
3
3
  sys_webhook: {
4
4
  label: "Webhook",
5
5
  pluralLabel: "Webhooks",
6
- description: "Outbound HTTP webhook subscription. Authored via defineWebhook() in code or the Studio editor; executed by the HTTP connector plugin.",
6
+ description: "Outbound HTTP webhook subscription. Declared in code via defineStack({ webhooks }) / defineWebhook() (materialized into rows on boot) or authored directly in the Studio editor; dispatched by the webhook auto-enqueuer onto the shared HTTP outbox.",
7
7
  fields: {
8
8
  id: {
9
9
  label: "Webhook ID"
10
10
  },
11
11
  name: {
12
12
  label: "Name",
13
- help: "Unique snake_case name \u2014 referenced in logs and audit"
13
+ help: "snake_case name, unique per organization \u2014 referenced in logs and audit"
14
14
  },
15
15
  label: {
16
16
  label: "Display Label"
@@ -21,7 +21,7 @@ var enObjects = {
21
21
  },
22
22
  triggers: {
23
23
  label: "Triggers",
24
- help: "Record events that fire this webhook. bulk_update / bulk_delete fire on predicate writes and deliver a count, not a record.",
24
+ help: "Record events that fire this webhook (bulk_* deliver a count, not a record)",
25
25
  options: {
26
26
  create: "create",
27
27
  update: "update",
@@ -36,7 +36,7 @@ var enObjects = {
36
36
  },
37
37
  method: {
38
38
  label: "HTTP Method",
39
- help: "GET / POST / PUT / PATCH / DELETE",
39
+ help: "HTTP method used for the callback request",
40
40
  options: {
41
41
  get: "GET",
42
42
  post: "POST",
@@ -54,7 +54,15 @@ var enObjects = {
54
54
  },
55
55
  definition_json: {
56
56
  label: "Definition",
57
- help: "Serialised Webhook JSON (see @objectstack/spec/automation/webhook) \u2014 full headers/auth/retry/payload config"
57
+ help: "Serialised Webhook JSON (see @objectstack/spec/automation/webhook) \u2014 timeout and the rest of the authored envelope. Credentials are NOT stored here: the signing secret lives in the encrypted `signing_secret` field and the custom headers in the encrypted `headers_secret` field."
58
+ },
59
+ headers_secret: {
60
+ label: "Custom Headers",
61
+ help: 'Custom HTTP headers sent with each delivery, as a JSON object ({"Authorization": "Bearer \u2026"}). Encrypted at rest into sys_secret; reads return a mask, never the headers. Leave the mask untouched to keep the current value.'
62
+ },
63
+ signing_secret: {
64
+ label: "Signing Secret",
65
+ help: "HMAC-SHA256 key used to sign deliveries (X-Objectstack-Signature). Encrypted at rest into sys_secret; reads return a mask, never the key. Leave the mask untouched to keep the current value."
58
66
  },
59
67
  managed_by: {
60
68
  label: "Managed By",
@@ -105,7 +113,7 @@ var zhCNObjects = {
105
113
  },
106
114
  name: {
107
115
  label: "\u540D\u79F0",
108
- help: "\u552F\u4E00\u7684 snake_case \u540D\u79F0\u2014\u2014\u7528\u4E8E\u65E5\u5FD7\u548C\u5BA1\u8BA1\u5F15\u7528"
116
+ help: "snake_case \u540D\u79F0\uFF0C\u5728\u6BCF\u4E2A\u7EC4\u7EC7\u5185\u552F\u4E00\u2014\u2014\u7528\u4E8E\u65E5\u5FD7\u548C\u5BA1\u8BA1\u5F15\u7528"
109
117
  },
110
118
  label: {
111
119
  label: "\u663E\u793A\u6807\u7B7E"
@@ -151,6 +159,14 @@ var zhCNObjects = {
151
159
  label: "\u5B9A\u4E49",
152
160
  help: "\u5E8F\u5217\u5316\u7684 Webhook JSON\uFF08\u53C2\u89C1 @objectstack/spec/automation/webhook\uFF09\u2014\u2014\u5305\u542B\u5B8C\u6574\u7684 headers/auth/retry/payload \u914D\u7F6E"
153
161
  },
162
+ headers_secret: {
163
+ label: "\u81EA\u5B9A\u4E49\u8BF7\u6C42\u5934",
164
+ help: '\u968F\u6BCF\u6B21\u6295\u9012\u53D1\u9001\u7684\u81EA\u5B9A\u4E49 HTTP \u8BF7\u6C42\u5934\uFF0C\u91C7\u7528 JSON \u5BF9\u8C61\u683C\u5F0F\uFF08{"Authorization": "Bearer \u2026"}\uFF09\u3002\u9759\u6001\u5B58\u50A8\u65F6\u52A0\u5BC6\u5199\u5165 sys_secret\uFF1B\u8BFB\u53D6\u53EA\u8FD4\u56DE\u63A9\u7801\uFF0C\u7EDD\u4E0D\u8FD4\u56DE\u8BF7\u6C42\u5934\u5185\u5BB9\u3002\u4FDD\u6301\u63A9\u7801\u4E0D\u53D8\u5373\u4FDD\u7559\u5F53\u524D\u503C\u3002'
165
+ },
166
+ signing_secret: {
167
+ label: "\u7B7E\u540D\u5BC6\u94A5",
168
+ help: "\u7528\u4E8E\u5BF9\u6295\u9012\u8BF7\u6C42\u7B7E\u540D\u7684 HMAC-SHA256 \u5BC6\u94A5\uFF08X-Objectstack-Signature\uFF09\u3002\u9759\u6001\u5B58\u50A8\u65F6\u52A0\u5BC6\u5199\u5165 sys_secret\uFF1B\u8BFB\u53D6\u53EA\u8FD4\u56DE\u63A9\u7801\uFF0C\u7EDD\u4E0D\u8FD4\u56DE\u5BC6\u94A5\u3002\u4FDD\u6301\u63A9\u7801\u4E0D\u53D8\u5373\u4FDD\u7559\u5F53\u524D\u503C\u3002"
169
+ },
154
170
  managed_by: {
155
171
  label: "\u7BA1\u7406\u6765\u6E90",
156
172
  help: "\u8BB0\u5F55\u6765\u6E90\uFF1Aplatform = \u6846\u67B6\u5185\u7F6E / package = \u5E94\u7528\u5305\u58F0\u660E\uFF08\u7531 defineStack \u7684 webhooks \u5728\u542F\u52A8\u65F6\u79CD\u5165\uFF09/ admin = \u5728 Setup \u4E2D\u521B\u5EFA\u3002",
@@ -200,7 +216,7 @@ var jaJPObjects = {
200
216
  },
201
217
  name: {
202
218
  label: "\u540D\u524D",
203
- help: "\u4E00\u610F\u306E snake_case \u540D \u2014 \u30ED\u30B0\u304A\u3088\u3073\u76E3\u67FB\u3067\u53C2\u7167"
219
+ help: "snake_case \u540D\uFF08\u7D44\u7E54\u3054\u3068\u306B\u4E00\u610F\uFF09\u2014 \u30ED\u30B0\u304A\u3088\u3073\u76E3\u67FB\u3067\u53C2\u7167"
204
220
  },
205
221
  label: {
206
222
  label: "\u8868\u793A\u540D"
@@ -246,6 +262,14 @@ var jaJPObjects = {
246
262
  label: "\u5B9A\u7FA9",
247
263
  help: "\u30B7\u30EA\u30A2\u30E9\u30A4\u30BA\u3055\u308C\u305F Webhook JSON\uFF08@objectstack/spec/automation/webhook \u53C2\u7167\uFF09\u2014 \u30D8\u30C3\u30C0\u30FC/\u8A8D\u8A3C/\u30EA\u30C8\u30E9\u30A4/\u30DA\u30A4\u30ED\u30FC\u30C9\u8A2D\u5B9A\u3092\u542B\u3080"
248
264
  },
265
+ headers_secret: {
266
+ label: "\u30AB\u30B9\u30BF\u30E0\u30D8\u30C3\u30C0\u30FC",
267
+ help: '\u5404\u914D\u4FE1\u3067\u9001\u4FE1\u3059\u308B\u30AB\u30B9\u30BF\u30E0 HTTP \u30D8\u30C3\u30C0\u30FC\u3002JSON \u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u5F62\u5F0F\uFF08{"Authorization": "Bearer \u2026"}\uFF09\u3002\u4FDD\u5B58\u6642\u306F sys_secret \u306B\u6697\u53F7\u5316\u3055\u308C\u3001\u8AAD\u307F\u53D6\u308A\u3067\u306F\u30DE\u30B9\u30AF\u306E\u307F\u304C\u8FD4\u308A\u30D8\u30C3\u30C0\u30FC\u306F\u8FD4\u308A\u307E\u305B\u3093\u3002\u30DE\u30B9\u30AF\u3092\u305D\u306E\u307E\u307E\u306B\u3059\u308B\u3068\u73FE\u5728\u306E\u5024\u304C\u7DAD\u6301\u3055\u308C\u307E\u3059\u3002'
268
+ },
269
+ signing_secret: {
270
+ label: "\u7F72\u540D\u30B7\u30FC\u30AF\u30EC\u30C3\u30C8",
271
+ help: "\u914D\u4FE1\u306E\u7F72\u540D\u306B\u4F7F\u3046 HMAC-SHA256 \u30AD\u30FC\uFF08X-Objectstack-Signature\uFF09\u3002\u4FDD\u5B58\u6642\u306F sys_secret \u306B\u6697\u53F7\u5316\u3055\u308C\u3001\u8AAD\u307F\u53D6\u308A\u3067\u306F\u30DE\u30B9\u30AF\u306E\u307F\u304C\u8FD4\u308A\u30AD\u30FC\u306F\u8FD4\u308A\u307E\u305B\u3093\u3002\u30DE\u30B9\u30AF\u3092\u305D\u306E\u307E\u307E\u306B\u3059\u308B\u3068\u73FE\u5728\u306E\u5024\u304C\u7DAD\u6301\u3055\u308C\u307E\u3059\u3002"
272
+ },
249
273
  managed_by: {
250
274
  label: "\u7BA1\u7406\u5143",
251
275
  help: "\u30EC\u30B3\u30FC\u30C9\u306E\u51FA\u6240: platform = \u30D5\u30EC\u30FC\u30E0\u30EF\u30FC\u30AF\u7D44\u307F\u8FBC\u307F / package = \u30A2\u30D7\u30EA\u30FB\u30D1\u30C3\u30B1\u30FC\u30B8\u5BA3\u8A00\uFF08defineStack \u306E webhooks \u304B\u3089\u8D77\u52D5\u6642\u30B7\u30FC\u30C9\uFF09/ admin = Setup \u3067\u4F5C\u6210\u3002",
@@ -295,7 +319,7 @@ var esESObjects = {
295
319
  },
296
320
  name: {
297
321
  label: "Nombre",
298
- help: "Nombre snake_case \xFAnico; se usa en los registros y en la auditor\xEDa."
322
+ help: "Nombre snake_case, \xFAnico por organizaci\xF3n; se usa en los registros y en la auditor\xEDa."
299
323
  },
300
324
  label: {
301
325
  label: "Nombre visible"
@@ -341,6 +365,14 @@ var esESObjects = {
341
365
  label: "Definici\xF3n",
342
366
  help: "JSON serializado de Webhook (consulte @objectstack/spec/automation/webhook): configuraci\xF3n completa de cabeceras/auth/reintentos/payload."
343
367
  },
368
+ headers_secret: {
369
+ label: "Cabeceras personalizadas",
370
+ help: 'Cabeceras HTTP personalizadas enviadas con cada entrega, como un objeto JSON ({"Authorization": "Bearer \u2026"}). Se cifran en reposo en sys_secret; las lecturas devuelven una m\xE1scara, nunca las cabeceras. Deje la m\xE1scara sin tocar para conservar el valor actual.'
371
+ },
372
+ signing_secret: {
373
+ label: "Secreto de firma",
374
+ help: "Clave HMAC-SHA256 usada para firmar las entregas (X-Objectstack-Signature). Se cifra en reposo en sys_secret; las lecturas devuelven una m\xE1scara, nunca la clave. Deje la m\xE1scara sin tocar para conservar el valor actual."
375
+ },
344
376
  managed_by: {
345
377
  label: "Gestionado por",
346
378
  help: "Procedencia del registro: platform = integrado en el framework / package = declarado por app o paquete (sembrado al arrancar desde los webhooks de defineStack) / admin = creado en Setup.",
@@ -388,4 +420,4 @@ var WebhooksTranslations = {
388
420
 
389
421
 
390
422
  exports.WebhooksTranslations = WebhooksTranslations;
391
- //# sourceMappingURL=translations-BWS57U2V.cjs.map
423
+ //# sourceMappingURL=translations-H5ZYI6YP.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/objectstack/objectstack/packages/plugins/plugin-webhooks/dist/translations-H5ZYI6YP.cjs","../src/translations/en.objects.generated.ts","../src/translations/zh-CN.objects.generated.ts","../src/translations/ja-JP.objects.generated.ts","../src/translations/es-ES.objects.generated.ts","../src/translations/index.ts"],"names":[],"mappings":"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","file":"/home/runner/work/objectstack/objectstack/packages/plugins/plugin-webhooks/dist/translations-H5ZYI6YP.cjs","sourcesContent":[null,"// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\n/**\n * Auto-generated by 'os i18n extract' for locale 'en'.\n * Edit translations in place; re-run extract (with --merge) to fill new gaps.\n * Do not hand-edit the structure — only the leaf string values.\n */\n\nimport type { TranslationData } from '@objectstack/spec/system';\n\nexport const enObjects: NonNullable<TranslationData['objects']> = {\n sys_webhook: {\n label: \"Webhook\",\n pluralLabel: \"Webhooks\",\n description: \"Outbound HTTP webhook subscription. Declared in code via defineStack({ webhooks }) / defineWebhook() (materialized into rows on boot) or authored directly in the Studio editor; dispatched by the webhook auto-enqueuer onto the shared HTTP outbox.\",\n fields: {\n id: {\n label: \"Webhook ID\"\n },\n name: {\n label: \"Name\",\n help: \"snake_case name, unique per organization — referenced in logs and audit\"\n },\n label: {\n label: \"Display Label\"\n },\n object_name: {\n label: \"Object\",\n help: \"Short object name whose record events (create/update/delete) fire this webhook\"\n },\n triggers: {\n label: \"Triggers\",\n help: \"Record events that fire this webhook (bulk_* deliver a count, not a record)\",\n options: {\n create: \"create\",\n update: \"update\",\n delete: \"delete\",\n bulk_update: \"bulk_update\",\n bulk_delete: \"bulk_delete\"\n }\n },\n url: {\n label: \"Target URL\",\n help: \"External endpoint that receives the POST\"\n },\n method: {\n label: \"HTTP Method\",\n help: \"HTTP method used for the callback request\",\n options: {\n get: \"GET\",\n post: \"POST\",\n put: \"PUT\",\n patch: \"PATCH\",\n delete: \"DELETE\"\n }\n },\n description: {\n label: \"Description\"\n },\n active: {\n label: \"Active\",\n help: \"Inactive webhooks are skipped by the dispatcher\"\n },\n definition_json: {\n label: \"Definition\",\n help: \"Serialised Webhook JSON (see @objectstack/spec/automation/webhook) — timeout and the rest of the authored envelope. Credentials are NOT stored here: the signing secret lives in the encrypted `signing_secret` field and the custom headers in the encrypted `headers_secret` field.\"\n },\n headers_secret: {\n label: \"Custom Headers\",\n help: \"Custom HTTP headers sent with each delivery, as a JSON object ({\\\"Authorization\\\": \\\"Bearer …\\\"}). Encrypted at rest into sys_secret; reads return a mask, never the headers. Leave the mask untouched to keep the current value.\"\n },\n signing_secret: {\n label: \"Signing Secret\",\n help: \"HMAC-SHA256 key used to sign deliveries (X-Objectstack-Signature). Encrypted at rest into sys_secret; reads return a mask, never the key. Leave the mask untouched to keep the current value.\"\n },\n managed_by: {\n label: \"Managed By\",\n help: \"Record provenance: platform = framework built-in / package = app/package-declared (boot-seeded from defineStack webhooks) / admin = created in Setup.\",\n options: {\n platform: \"platform\",\n package: \"package\",\n admin: \"admin\"\n }\n },\n customized: {\n label: \"Customized\",\n help: \"Set when an admin edits a package-declared webhook; boot seeding will no longer overwrite the row (a deactivated noisy webhook survives redeploys). Meaningless on admin rows.\"\n },\n created_at: {\n label: \"Created At\"\n },\n updated_at: {\n label: \"Updated At\"\n }\n },\n _views: {\n active: {\n label: \"Active\"\n },\n inactive: {\n label: \"Inactive\"\n },\n by_object: {\n label: \"By Object\"\n },\n all_webhooks: {\n label: \"All\"\n }\n }\n }\n};\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\n/**\n * Auto-generated by 'os i18n extract' for locale 'zh-CN'.\n * Edit translations in place; re-run extract (with --merge) to fill new gaps.\n * Do not hand-edit the structure — only the leaf string values.\n */\n\nimport type { TranslationData } from '@objectstack/spec/system';\n\nexport const zhCNObjects: NonNullable<TranslationData['objects']> = {\n sys_webhook: {\n label: \"Webhook\",\n pluralLabel: \"Webhook\",\n description: \"外发 HTTP Webhook 订阅。可在代码中通过 defineWebhook() 编写,或在 Studio 编辑器中维护;由 HTTP 连接器插件执行。\",\n fields: {\n id: {\n label: \"Webhook ID\"\n },\n name: {\n label: \"名称\",\n help: \"snake_case 名称,在每个组织内唯一——用于日志和审计引用\"\n },\n label: {\n label: \"显示标签\"\n },\n object_name: {\n label: \"对象\",\n help: \"触发该 Webhook 的记录事件(create/update/delete)的短对象名\"\n },\n triggers: {\n label: \"触发器\",\n help: \"触发该 Webhook 的记录事件。bulk_update / bulk_delete 由谓词写(批量)触发,投递的是受影响条数而非记录。\",\n options: {\n create: \"创建\",\n update: \"更新\",\n delete: \"删除\",\n bulk_update: \"批量更新\",\n bulk_delete: \"批量删除\"\n }\n },\n url: {\n label: \"目标 URL\",\n help: \"接收 POST 请求的外部端点\"\n },\n method: {\n label: \"HTTP 方法\",\n help: \"GET / POST / PUT / PATCH / DELETE\",\n options: {\n get: \"GET\",\n post: \"POST\",\n put: \"PUT\",\n patch: \"PATCH\",\n delete: \"DELETE\"\n }\n },\n description: {\n label: \"描述\"\n },\n active: {\n label: \"启用\",\n help: \"停用的 Webhook 会被调度器跳过\"\n },\n definition_json: {\n label: \"定义\",\n help: \"序列化的 Webhook JSON(参见 @objectstack/spec/automation/webhook)——包含完整的 headers/auth/retry/payload 配置\"\n },\n headers_secret: {\n label: \"自定义请求头\",\n help: \"随每次投递发送的自定义 HTTP 请求头,采用 JSON 对象格式({\\\"Authorization\\\": \\\"Bearer …\\\"})。静态存储时加密写入 sys_secret;读取只返回掩码,绝不返回请求头内容。保持掩码不变即保留当前值。\"\n },\n signing_secret: {\n label: \"签名密钥\",\n help: \"用于对投递请求签名的 HMAC-SHA256 密钥(X-Objectstack-Signature)。静态存储时加密写入 sys_secret;读取只返回掩码,绝不返回密钥。保持掩码不变即保留当前值。\"\n },\n managed_by: {\n label: \"管理来源\",\n help: \"记录来源:platform = 框架内置 / package = 应用包声明(由 defineStack 的 webhooks 在启动时种入)/ admin = 在 Setup 中创建。\",\n options: {\n platform: \"平台\",\n package: \"包\",\n admin: \"管理员\"\n }\n },\n customized: {\n label: \"已定制\",\n help: \"当管理员编辑应用包声明的 webhook 时置位;此后启动种入不再覆盖该行(被停用的嘈杂 webhook 可跨重新部署保留)。对 admin 来源的记录无意义。\"\n },\n created_at: {\n label: \"创建时间\"\n },\n updated_at: {\n label: \"更新时间\"\n }\n },\n _views: {\n active: {\n label: \"启用\"\n },\n inactive: {\n label: \"停用\"\n },\n by_object: {\n label: \"按对象\"\n },\n all_webhooks: {\n label: \"全部\"\n }\n }\n }\n};\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\n/**\n * Auto-generated by 'os i18n extract' for locale 'ja-JP'.\n * Edit translations in place; re-run extract (with --merge) to fill new gaps.\n * Do not hand-edit the structure — only the leaf string values.\n */\n\nimport type { TranslationData } from '@objectstack/spec/system';\n\nexport const jaJPObjects: NonNullable<TranslationData['objects']> = {\n sys_webhook: {\n label: \"Webhook\",\n pluralLabel: \"Webhook\",\n description: \"送信 HTTP Webhook サブスクリプション。defineWebhook() またはスタジオエディタで作成し、HTTP コネクタプラグインが実行します。\",\n fields: {\n id: {\n label: \"Webhook ID\"\n },\n name: {\n label: \"名前\",\n help: \"snake_case 名(組織ごとに一意)— ログおよび監査で参照\"\n },\n label: {\n label: \"表示名\"\n },\n object_name: {\n label: \"オブジェクト\",\n help: \"このウェブフックを発火するレコードイベント(create/update/delete)のオブジェクト短縮名\"\n },\n triggers: {\n label: \"トリガー\",\n help: \"このウェブフックを発火するレコードイベント。bulk_update / bulk_delete は述語による一括書き込みで発火し、レコードではなく件数を配信します。\",\n options: {\n create: \"作成\",\n update: \"更新\",\n delete: \"削除\",\n bulk_update: \"一括更新\",\n bulk_delete: \"一括削除\"\n }\n },\n url: {\n label: \"ターゲット URL\",\n help: \"POST を受信する外部エンドポイント\"\n },\n method: {\n label: \"HTTP メソッド\",\n help: \"GET / POST / PUT / PATCH / DELETE\",\n options: {\n get: \"GET\",\n post: \"POST\",\n put: \"PUT\",\n patch: \"PATCH\",\n delete: \"DELETE\"\n }\n },\n description: {\n label: \"説明\"\n },\n active: {\n label: \"有効\",\n help: \"無効にするとディスパッチャにスキップされます\"\n },\n definition_json: {\n label: \"定義\",\n help: \"シリアライズされた Webhook JSON(@objectstack/spec/automation/webhook 参照)— ヘッダー/認証/リトライ/ペイロード設定を含む\"\n },\n headers_secret: {\n label: \"カスタムヘッダー\",\n help: \"各配信で送信するカスタム HTTP ヘッダー。JSON オブジェクト形式({\\\"Authorization\\\": \\\"Bearer …\\\"})。保存時は sys_secret に暗号化され、読み取りではマスクのみが返りヘッダーは返りません。マスクをそのままにすると現在の値が維持されます。\"\n },\n signing_secret: {\n label: \"署名シークレット\",\n help: \"配信の署名に使う HMAC-SHA256 キー(X-Objectstack-Signature)。保存時は sys_secret に暗号化され、読み取りではマスクのみが返りキーは返りません。マスクをそのままにすると現在の値が維持されます。\"\n },\n managed_by: {\n label: \"管理元\",\n help: \"レコードの出所: platform = フレームワーク組み込み / package = アプリ・パッケージ宣言(defineStack の webhooks から起動時シード)/ admin = Setup で作成。\",\n options: {\n platform: \"プラットフォーム\",\n package: \"パッケージ\",\n admin: \"管理者\"\n }\n },\n customized: {\n label: \"カスタマイズ済み\",\n help: \"管理者がパッケージ宣言の webhook を編集すると設定されます。以後、起動時シードはこの行を上書きしません(無効化したノイジーな webhook は再デプロイ後も保持)。admin 行では意味を持ちません。\"\n },\n created_at: {\n label: \"作成日時\"\n },\n updated_at: {\n label: \"更新日時\"\n }\n },\n _views: {\n active: {\n label: \"有効\"\n },\n inactive: {\n label: \"無効\"\n },\n by_object: {\n label: \"オブジェクト別\"\n },\n all_webhooks: {\n label: \"すべて\"\n }\n }\n }\n};\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\n/**\n * Auto-generated by 'os i18n extract' for locale 'es-ES'.\n * Edit translations in place; re-run extract (with --merge) to fill new gaps.\n * Do not hand-edit the structure — only the leaf string values.\n */\n\nimport type { TranslationData } from '@objectstack/spec/system';\n\nexport const esESObjects: NonNullable<TranslationData['objects']> = {\n sys_webhook: {\n label: \"Webhook\",\n pluralLabel: \"Webhooks\",\n description: \"Suscripción saliente de Webhook HTTP. Se crea mediante defineWebhook() en código o con el editor de Studio; la ejecuta el plugin del conector HTTP.\",\n fields: {\n id: {\n label: \"ID de webhook\"\n },\n name: {\n label: \"Nombre\",\n help: \"Nombre snake_case, único por organización; se usa en los registros y en la auditoría.\"\n },\n label: {\n label: \"Nombre visible\"\n },\n object_name: {\n label: \"Objeto\",\n help: \"Nombre corto del objeto cuyos eventos de registro (create/update/delete) activan este Webhook.\"\n },\n triggers: {\n label: \"Desencadenantes\",\n help: \"Eventos de registro que activan este Webhook. bulk_update / bulk_delete se activan en escrituras por predicado y entregan un recuento, no un registro.\",\n options: {\n create: \"Crear\",\n update: \"Actualizar\",\n delete: \"Eliminar\",\n bulk_update: \"Actualización masiva\",\n bulk_delete: \"Eliminación masiva\"\n }\n },\n url: {\n label: \"URL de destino\",\n help: \"Endpoint externo que recibe el POST.\"\n },\n method: {\n label: \"Método HTTP\",\n help: \"GET / POST / PUT / PATCH / DELETE\",\n options: {\n get: \"GET\",\n post: \"POST\",\n put: \"PUT\",\n patch: \"PATCH\",\n delete: \"DELETE\"\n }\n },\n description: {\n label: \"Descripción\"\n },\n active: {\n label: \"Activo\",\n help: \"Los Webhooks inactivos se omiten en el despachador.\"\n },\n definition_json: {\n label: \"Definición\",\n help: \"JSON serializado de Webhook (consulte @objectstack/spec/automation/webhook): configuración completa de cabeceras/auth/reintentos/payload.\"\n },\n headers_secret: {\n label: \"Cabeceras personalizadas\",\n help: \"Cabeceras HTTP personalizadas enviadas con cada entrega, como un objeto JSON ({\\\"Authorization\\\": \\\"Bearer …\\\"}). Se cifran en reposo en sys_secret; las lecturas devuelven una máscara, nunca las cabeceras. Deje la máscara sin tocar para conservar el valor actual.\"\n },\n signing_secret: {\n label: \"Secreto de firma\",\n help: \"Clave HMAC-SHA256 usada para firmar las entregas (X-Objectstack-Signature). Se cifra en reposo en sys_secret; las lecturas devuelven una máscara, nunca la clave. Deje la máscara sin tocar para conservar el valor actual.\"\n },\n managed_by: {\n label: \"Gestionado por\",\n help: \"Procedencia del registro: platform = integrado en el framework / package = declarado por app o paquete (sembrado al arrancar desde los webhooks de defineStack) / admin = creado en Setup.\",\n options: {\n platform: \"Plataforma\",\n package: \"Paquete\",\n admin: \"Administrador\"\n }\n },\n customized: {\n label: \"Personalizado\",\n help: \"Se establece cuando un administrador edita un webhook declarado por un paquete; a partir de entonces el sembrado de arranque deja de sobrescribir la fila (un webhook ruidoso desactivado sobrevive a los redespliegues). Sin sentido en filas admin.\"\n },\n created_at: {\n label: \"Creado el\"\n },\n updated_at: {\n label: \"Actualizado el\"\n }\n },\n _views: {\n active: {\n label: \"Activo\"\n },\n inactive: {\n label: \"Inactivo\"\n },\n by_object: {\n label: \"Por objeto\"\n },\n all_webhooks: {\n label: \"Todos\"\n }\n }\n }\n};\n","// Copyright (c) 2026 ObjectStack. Licensed under the Apache-2.0 license.\n\n/**\n * WebhooksTranslations — i18n bundle owned by this plugin (ADR-0029 D8).\n *\n * Object label/field/view/action translations for the sys_* objects this\n * plugin owns. Loaded at runtime via the plugin's `kernel:ready` hook\n * (`i18n.loadTranslations`). Regenerate with `os i18n extract` against\n * `scripts/i18n-extract.config.ts`.\n */\n\nimport type { TranslationBundle } from '@objectstack/spec/system';\nimport { enObjects } from './en.objects.generated.js';\nimport { zhCNObjects } from './zh-CN.objects.generated.js';\nimport { jaJPObjects } from './ja-JP.objects.generated.js';\nimport { esESObjects } from './es-ES.objects.generated.js';\n\nexport const WebhooksTranslations: TranslationBundle = {\n en: { objects: enObjects },\n 'zh-CN': { objects: zhCNObjects },\n 'ja-JP': { objects: jaJPObjects },\n 'es-ES': { objects: esESObjects },\n};\n"]}
@@ -3,14 +3,14 @@ var enObjects = {
3
3
  sys_webhook: {
4
4
  label: "Webhook",
5
5
  pluralLabel: "Webhooks",
6
- description: "Outbound HTTP webhook subscription. Authored via defineWebhook() in code or the Studio editor; executed by the HTTP connector plugin.",
6
+ description: "Outbound HTTP webhook subscription. Declared in code via defineStack({ webhooks }) / defineWebhook() (materialized into rows on boot) or authored directly in the Studio editor; dispatched by the webhook auto-enqueuer onto the shared HTTP outbox.",
7
7
  fields: {
8
8
  id: {
9
9
  label: "Webhook ID"
10
10
  },
11
11
  name: {
12
12
  label: "Name",
13
- help: "Unique snake_case name \u2014 referenced in logs and audit"
13
+ help: "snake_case name, unique per organization \u2014 referenced in logs and audit"
14
14
  },
15
15
  label: {
16
16
  label: "Display Label"
@@ -21,7 +21,7 @@ var enObjects = {
21
21
  },
22
22
  triggers: {
23
23
  label: "Triggers",
24
- help: "Record events that fire this webhook. bulk_update / bulk_delete fire on predicate writes and deliver a count, not a record.",
24
+ help: "Record events that fire this webhook (bulk_* deliver a count, not a record)",
25
25
  options: {
26
26
  create: "create",
27
27
  update: "update",
@@ -36,7 +36,7 @@ var enObjects = {
36
36
  },
37
37
  method: {
38
38
  label: "HTTP Method",
39
- help: "GET / POST / PUT / PATCH / DELETE",
39
+ help: "HTTP method used for the callback request",
40
40
  options: {
41
41
  get: "GET",
42
42
  post: "POST",
@@ -54,7 +54,15 @@ var enObjects = {
54
54
  },
55
55
  definition_json: {
56
56
  label: "Definition",
57
- help: "Serialised Webhook JSON (see @objectstack/spec/automation/webhook) \u2014 full headers/auth/retry/payload config"
57
+ help: "Serialised Webhook JSON (see @objectstack/spec/automation/webhook) \u2014 timeout and the rest of the authored envelope. Credentials are NOT stored here: the signing secret lives in the encrypted `signing_secret` field and the custom headers in the encrypted `headers_secret` field."
58
+ },
59
+ headers_secret: {
60
+ label: "Custom Headers",
61
+ help: 'Custom HTTP headers sent with each delivery, as a JSON object ({"Authorization": "Bearer \u2026"}). Encrypted at rest into sys_secret; reads return a mask, never the headers. Leave the mask untouched to keep the current value.'
62
+ },
63
+ signing_secret: {
64
+ label: "Signing Secret",
65
+ help: "HMAC-SHA256 key used to sign deliveries (X-Objectstack-Signature). Encrypted at rest into sys_secret; reads return a mask, never the key. Leave the mask untouched to keep the current value."
58
66
  },
59
67
  managed_by: {
60
68
  label: "Managed By",
@@ -105,7 +113,7 @@ var zhCNObjects = {
105
113
  },
106
114
  name: {
107
115
  label: "\u540D\u79F0",
108
- help: "\u552F\u4E00\u7684 snake_case \u540D\u79F0\u2014\u2014\u7528\u4E8E\u65E5\u5FD7\u548C\u5BA1\u8BA1\u5F15\u7528"
116
+ help: "snake_case \u540D\u79F0\uFF0C\u5728\u6BCF\u4E2A\u7EC4\u7EC7\u5185\u552F\u4E00\u2014\u2014\u7528\u4E8E\u65E5\u5FD7\u548C\u5BA1\u8BA1\u5F15\u7528"
109
117
  },
110
118
  label: {
111
119
  label: "\u663E\u793A\u6807\u7B7E"
@@ -151,6 +159,14 @@ var zhCNObjects = {
151
159
  label: "\u5B9A\u4E49",
152
160
  help: "\u5E8F\u5217\u5316\u7684 Webhook JSON\uFF08\u53C2\u89C1 @objectstack/spec/automation/webhook\uFF09\u2014\u2014\u5305\u542B\u5B8C\u6574\u7684 headers/auth/retry/payload \u914D\u7F6E"
153
161
  },
162
+ headers_secret: {
163
+ label: "\u81EA\u5B9A\u4E49\u8BF7\u6C42\u5934",
164
+ help: '\u968F\u6BCF\u6B21\u6295\u9012\u53D1\u9001\u7684\u81EA\u5B9A\u4E49 HTTP \u8BF7\u6C42\u5934\uFF0C\u91C7\u7528 JSON \u5BF9\u8C61\u683C\u5F0F\uFF08{"Authorization": "Bearer \u2026"}\uFF09\u3002\u9759\u6001\u5B58\u50A8\u65F6\u52A0\u5BC6\u5199\u5165 sys_secret\uFF1B\u8BFB\u53D6\u53EA\u8FD4\u56DE\u63A9\u7801\uFF0C\u7EDD\u4E0D\u8FD4\u56DE\u8BF7\u6C42\u5934\u5185\u5BB9\u3002\u4FDD\u6301\u63A9\u7801\u4E0D\u53D8\u5373\u4FDD\u7559\u5F53\u524D\u503C\u3002'
165
+ },
166
+ signing_secret: {
167
+ label: "\u7B7E\u540D\u5BC6\u94A5",
168
+ help: "\u7528\u4E8E\u5BF9\u6295\u9012\u8BF7\u6C42\u7B7E\u540D\u7684 HMAC-SHA256 \u5BC6\u94A5\uFF08X-Objectstack-Signature\uFF09\u3002\u9759\u6001\u5B58\u50A8\u65F6\u52A0\u5BC6\u5199\u5165 sys_secret\uFF1B\u8BFB\u53D6\u53EA\u8FD4\u56DE\u63A9\u7801\uFF0C\u7EDD\u4E0D\u8FD4\u56DE\u5BC6\u94A5\u3002\u4FDD\u6301\u63A9\u7801\u4E0D\u53D8\u5373\u4FDD\u7559\u5F53\u524D\u503C\u3002"
169
+ },
154
170
  managed_by: {
155
171
  label: "\u7BA1\u7406\u6765\u6E90",
156
172
  help: "\u8BB0\u5F55\u6765\u6E90\uFF1Aplatform = \u6846\u67B6\u5185\u7F6E / package = \u5E94\u7528\u5305\u58F0\u660E\uFF08\u7531 defineStack \u7684 webhooks \u5728\u542F\u52A8\u65F6\u79CD\u5165\uFF09/ admin = \u5728 Setup \u4E2D\u521B\u5EFA\u3002",
@@ -200,7 +216,7 @@ var jaJPObjects = {
200
216
  },
201
217
  name: {
202
218
  label: "\u540D\u524D",
203
- help: "\u4E00\u610F\u306E snake_case \u540D \u2014 \u30ED\u30B0\u304A\u3088\u3073\u76E3\u67FB\u3067\u53C2\u7167"
219
+ help: "snake_case \u540D\uFF08\u7D44\u7E54\u3054\u3068\u306B\u4E00\u610F\uFF09\u2014 \u30ED\u30B0\u304A\u3088\u3073\u76E3\u67FB\u3067\u53C2\u7167"
204
220
  },
205
221
  label: {
206
222
  label: "\u8868\u793A\u540D"
@@ -246,6 +262,14 @@ var jaJPObjects = {
246
262
  label: "\u5B9A\u7FA9",
247
263
  help: "\u30B7\u30EA\u30A2\u30E9\u30A4\u30BA\u3055\u308C\u305F Webhook JSON\uFF08@objectstack/spec/automation/webhook \u53C2\u7167\uFF09\u2014 \u30D8\u30C3\u30C0\u30FC/\u8A8D\u8A3C/\u30EA\u30C8\u30E9\u30A4/\u30DA\u30A4\u30ED\u30FC\u30C9\u8A2D\u5B9A\u3092\u542B\u3080"
248
264
  },
265
+ headers_secret: {
266
+ label: "\u30AB\u30B9\u30BF\u30E0\u30D8\u30C3\u30C0\u30FC",
267
+ help: '\u5404\u914D\u4FE1\u3067\u9001\u4FE1\u3059\u308B\u30AB\u30B9\u30BF\u30E0 HTTP \u30D8\u30C3\u30C0\u30FC\u3002JSON \u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u5F62\u5F0F\uFF08{"Authorization": "Bearer \u2026"}\uFF09\u3002\u4FDD\u5B58\u6642\u306F sys_secret \u306B\u6697\u53F7\u5316\u3055\u308C\u3001\u8AAD\u307F\u53D6\u308A\u3067\u306F\u30DE\u30B9\u30AF\u306E\u307F\u304C\u8FD4\u308A\u30D8\u30C3\u30C0\u30FC\u306F\u8FD4\u308A\u307E\u305B\u3093\u3002\u30DE\u30B9\u30AF\u3092\u305D\u306E\u307E\u307E\u306B\u3059\u308B\u3068\u73FE\u5728\u306E\u5024\u304C\u7DAD\u6301\u3055\u308C\u307E\u3059\u3002'
268
+ },
269
+ signing_secret: {
270
+ label: "\u7F72\u540D\u30B7\u30FC\u30AF\u30EC\u30C3\u30C8",
271
+ help: "\u914D\u4FE1\u306E\u7F72\u540D\u306B\u4F7F\u3046 HMAC-SHA256 \u30AD\u30FC\uFF08X-Objectstack-Signature\uFF09\u3002\u4FDD\u5B58\u6642\u306F sys_secret \u306B\u6697\u53F7\u5316\u3055\u308C\u3001\u8AAD\u307F\u53D6\u308A\u3067\u306F\u30DE\u30B9\u30AF\u306E\u307F\u304C\u8FD4\u308A\u30AD\u30FC\u306F\u8FD4\u308A\u307E\u305B\u3093\u3002\u30DE\u30B9\u30AF\u3092\u305D\u306E\u307E\u307E\u306B\u3059\u308B\u3068\u73FE\u5728\u306E\u5024\u304C\u7DAD\u6301\u3055\u308C\u307E\u3059\u3002"
272
+ },
249
273
  managed_by: {
250
274
  label: "\u7BA1\u7406\u5143",
251
275
  help: "\u30EC\u30B3\u30FC\u30C9\u306E\u51FA\u6240: platform = \u30D5\u30EC\u30FC\u30E0\u30EF\u30FC\u30AF\u7D44\u307F\u8FBC\u307F / package = \u30A2\u30D7\u30EA\u30FB\u30D1\u30C3\u30B1\u30FC\u30B8\u5BA3\u8A00\uFF08defineStack \u306E webhooks \u304B\u3089\u8D77\u52D5\u6642\u30B7\u30FC\u30C9\uFF09/ admin = Setup \u3067\u4F5C\u6210\u3002",
@@ -295,7 +319,7 @@ var esESObjects = {
295
319
  },
296
320
  name: {
297
321
  label: "Nombre",
298
- help: "Nombre snake_case \xFAnico; se usa en los registros y en la auditor\xEDa."
322
+ help: "Nombre snake_case, \xFAnico por organizaci\xF3n; se usa en los registros y en la auditor\xEDa."
299
323
  },
300
324
  label: {
301
325
  label: "Nombre visible"
@@ -341,6 +365,14 @@ var esESObjects = {
341
365
  label: "Definici\xF3n",
342
366
  help: "JSON serializado de Webhook (consulte @objectstack/spec/automation/webhook): configuraci\xF3n completa de cabeceras/auth/reintentos/payload."
343
367
  },
368
+ headers_secret: {
369
+ label: "Cabeceras personalizadas",
370
+ help: 'Cabeceras HTTP personalizadas enviadas con cada entrega, como un objeto JSON ({"Authorization": "Bearer \u2026"}). Se cifran en reposo en sys_secret; las lecturas devuelven una m\xE1scara, nunca las cabeceras. Deje la m\xE1scara sin tocar para conservar el valor actual.'
371
+ },
372
+ signing_secret: {
373
+ label: "Secreto de firma",
374
+ help: "Clave HMAC-SHA256 usada para firmar las entregas (X-Objectstack-Signature). Se cifra en reposo en sys_secret; las lecturas devuelven una m\xE1scara, nunca la clave. Deje la m\xE1scara sin tocar para conservar el valor actual."
375
+ },
344
376
  managed_by: {
345
377
  label: "Gestionado por",
346
378
  help: "Procedencia del registro: platform = integrado en el framework / package = declarado por app o paquete (sembrado al arrancar desde los webhooks de defineStack) / admin = creado en Setup.",
@@ -388,4 +420,4 @@ var WebhooksTranslations = {
388
420
  export {
389
421
  WebhooksTranslations
390
422
  };
391
- //# sourceMappingURL=translations-2VGD4XRF.js.map
423
+ //# sourceMappingURL=translations-U32QIEPB.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/translations/en.objects.generated.ts","../src/translations/zh-CN.objects.generated.ts","../src/translations/ja-JP.objects.generated.ts","../src/translations/es-ES.objects.generated.ts","../src/translations/index.ts"],"sourcesContent":["// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\n/**\n * Auto-generated by 'os i18n extract' for locale 'en'.\n * Edit translations in place; re-run extract (with --merge) to fill new gaps.\n * Do not hand-edit the structure — only the leaf string values.\n */\n\nimport type { TranslationData } from '@objectstack/spec/system';\n\nexport const enObjects: NonNullable<TranslationData['objects']> = {\n sys_webhook: {\n label: \"Webhook\",\n pluralLabel: \"Webhooks\",\n description: \"Outbound HTTP webhook subscription. Declared in code via defineStack({ webhooks }) / defineWebhook() (materialized into rows on boot) or authored directly in the Studio editor; dispatched by the webhook auto-enqueuer onto the shared HTTP outbox.\",\n fields: {\n id: {\n label: \"Webhook ID\"\n },\n name: {\n label: \"Name\",\n help: \"snake_case name, unique per organization — referenced in logs and audit\"\n },\n label: {\n label: \"Display Label\"\n },\n object_name: {\n label: \"Object\",\n help: \"Short object name whose record events (create/update/delete) fire this webhook\"\n },\n triggers: {\n label: \"Triggers\",\n help: \"Record events that fire this webhook (bulk_* deliver a count, not a record)\",\n options: {\n create: \"create\",\n update: \"update\",\n delete: \"delete\",\n bulk_update: \"bulk_update\",\n bulk_delete: \"bulk_delete\"\n }\n },\n url: {\n label: \"Target URL\",\n help: \"External endpoint that receives the POST\"\n },\n method: {\n label: \"HTTP Method\",\n help: \"HTTP method used for the callback request\",\n options: {\n get: \"GET\",\n post: \"POST\",\n put: \"PUT\",\n patch: \"PATCH\",\n delete: \"DELETE\"\n }\n },\n description: {\n label: \"Description\"\n },\n active: {\n label: \"Active\",\n help: \"Inactive webhooks are skipped by the dispatcher\"\n },\n definition_json: {\n label: \"Definition\",\n help: \"Serialised Webhook JSON (see @objectstack/spec/automation/webhook) — timeout and the rest of the authored envelope. Credentials are NOT stored here: the signing secret lives in the encrypted `signing_secret` field and the custom headers in the encrypted `headers_secret` field.\"\n },\n headers_secret: {\n label: \"Custom Headers\",\n help: \"Custom HTTP headers sent with each delivery, as a JSON object ({\\\"Authorization\\\": \\\"Bearer …\\\"}). Encrypted at rest into sys_secret; reads return a mask, never the headers. Leave the mask untouched to keep the current value.\"\n },\n signing_secret: {\n label: \"Signing Secret\",\n help: \"HMAC-SHA256 key used to sign deliveries (X-Objectstack-Signature). Encrypted at rest into sys_secret; reads return a mask, never the key. Leave the mask untouched to keep the current value.\"\n },\n managed_by: {\n label: \"Managed By\",\n help: \"Record provenance: platform = framework built-in / package = app/package-declared (boot-seeded from defineStack webhooks) / admin = created in Setup.\",\n options: {\n platform: \"platform\",\n package: \"package\",\n admin: \"admin\"\n }\n },\n customized: {\n label: \"Customized\",\n help: \"Set when an admin edits a package-declared webhook; boot seeding will no longer overwrite the row (a deactivated noisy webhook survives redeploys). Meaningless on admin rows.\"\n },\n created_at: {\n label: \"Created At\"\n },\n updated_at: {\n label: \"Updated At\"\n }\n },\n _views: {\n active: {\n label: \"Active\"\n },\n inactive: {\n label: \"Inactive\"\n },\n by_object: {\n label: \"By Object\"\n },\n all_webhooks: {\n label: \"All\"\n }\n }\n }\n};\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\n/**\n * Auto-generated by 'os i18n extract' for locale 'zh-CN'.\n * Edit translations in place; re-run extract (with --merge) to fill new gaps.\n * Do not hand-edit the structure — only the leaf string values.\n */\n\nimport type { TranslationData } from '@objectstack/spec/system';\n\nexport const zhCNObjects: NonNullable<TranslationData['objects']> = {\n sys_webhook: {\n label: \"Webhook\",\n pluralLabel: \"Webhook\",\n description: \"外发 HTTP Webhook 订阅。可在代码中通过 defineWebhook() 编写,或在 Studio 编辑器中维护;由 HTTP 连接器插件执行。\",\n fields: {\n id: {\n label: \"Webhook ID\"\n },\n name: {\n label: \"名称\",\n help: \"snake_case 名称,在每个组织内唯一——用于日志和审计引用\"\n },\n label: {\n label: \"显示标签\"\n },\n object_name: {\n label: \"对象\",\n help: \"触发该 Webhook 的记录事件(create/update/delete)的短对象名\"\n },\n triggers: {\n label: \"触发器\",\n help: \"触发该 Webhook 的记录事件。bulk_update / bulk_delete 由谓词写(批量)触发,投递的是受影响条数而非记录。\",\n options: {\n create: \"创建\",\n update: \"更新\",\n delete: \"删除\",\n bulk_update: \"批量更新\",\n bulk_delete: \"批量删除\"\n }\n },\n url: {\n label: \"目标 URL\",\n help: \"接收 POST 请求的外部端点\"\n },\n method: {\n label: \"HTTP 方法\",\n help: \"GET / POST / PUT / PATCH / DELETE\",\n options: {\n get: \"GET\",\n post: \"POST\",\n put: \"PUT\",\n patch: \"PATCH\",\n delete: \"DELETE\"\n }\n },\n description: {\n label: \"描述\"\n },\n active: {\n label: \"启用\",\n help: \"停用的 Webhook 会被调度器跳过\"\n },\n definition_json: {\n label: \"定义\",\n help: \"序列化的 Webhook JSON(参见 @objectstack/spec/automation/webhook)——包含完整的 headers/auth/retry/payload 配置\"\n },\n headers_secret: {\n label: \"自定义请求头\",\n help: \"随每次投递发送的自定义 HTTP 请求头,采用 JSON 对象格式({\\\"Authorization\\\": \\\"Bearer …\\\"})。静态存储时加密写入 sys_secret;读取只返回掩码,绝不返回请求头内容。保持掩码不变即保留当前值。\"\n },\n signing_secret: {\n label: \"签名密钥\",\n help: \"用于对投递请求签名的 HMAC-SHA256 密钥(X-Objectstack-Signature)。静态存储时加密写入 sys_secret;读取只返回掩码,绝不返回密钥。保持掩码不变即保留当前值。\"\n },\n managed_by: {\n label: \"管理来源\",\n help: \"记录来源:platform = 框架内置 / package = 应用包声明(由 defineStack 的 webhooks 在启动时种入)/ admin = 在 Setup 中创建。\",\n options: {\n platform: \"平台\",\n package: \"包\",\n admin: \"管理员\"\n }\n },\n customized: {\n label: \"已定制\",\n help: \"当管理员编辑应用包声明的 webhook 时置位;此后启动种入不再覆盖该行(被停用的嘈杂 webhook 可跨重新部署保留)。对 admin 来源的记录无意义。\"\n },\n created_at: {\n label: \"创建时间\"\n },\n updated_at: {\n label: \"更新时间\"\n }\n },\n _views: {\n active: {\n label: \"启用\"\n },\n inactive: {\n label: \"停用\"\n },\n by_object: {\n label: \"按对象\"\n },\n all_webhooks: {\n label: \"全部\"\n }\n }\n }\n};\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\n/**\n * Auto-generated by 'os i18n extract' for locale 'ja-JP'.\n * Edit translations in place; re-run extract (with --merge) to fill new gaps.\n * Do not hand-edit the structure — only the leaf string values.\n */\n\nimport type { TranslationData } from '@objectstack/spec/system';\n\nexport const jaJPObjects: NonNullable<TranslationData['objects']> = {\n sys_webhook: {\n label: \"Webhook\",\n pluralLabel: \"Webhook\",\n description: \"送信 HTTP Webhook サブスクリプション。defineWebhook() またはスタジオエディタで作成し、HTTP コネクタプラグインが実行します。\",\n fields: {\n id: {\n label: \"Webhook ID\"\n },\n name: {\n label: \"名前\",\n help: \"snake_case 名(組織ごとに一意)— ログおよび監査で参照\"\n },\n label: {\n label: \"表示名\"\n },\n object_name: {\n label: \"オブジェクト\",\n help: \"このウェブフックを発火するレコードイベント(create/update/delete)のオブジェクト短縮名\"\n },\n triggers: {\n label: \"トリガー\",\n help: \"このウェブフックを発火するレコードイベント。bulk_update / bulk_delete は述語による一括書き込みで発火し、レコードではなく件数を配信します。\",\n options: {\n create: \"作成\",\n update: \"更新\",\n delete: \"削除\",\n bulk_update: \"一括更新\",\n bulk_delete: \"一括削除\"\n }\n },\n url: {\n label: \"ターゲット URL\",\n help: \"POST を受信する外部エンドポイント\"\n },\n method: {\n label: \"HTTP メソッド\",\n help: \"GET / POST / PUT / PATCH / DELETE\",\n options: {\n get: \"GET\",\n post: \"POST\",\n put: \"PUT\",\n patch: \"PATCH\",\n delete: \"DELETE\"\n }\n },\n description: {\n label: \"説明\"\n },\n active: {\n label: \"有効\",\n help: \"無効にするとディスパッチャにスキップされます\"\n },\n definition_json: {\n label: \"定義\",\n help: \"シリアライズされた Webhook JSON(@objectstack/spec/automation/webhook 参照)— ヘッダー/認証/リトライ/ペイロード設定を含む\"\n },\n headers_secret: {\n label: \"カスタムヘッダー\",\n help: \"各配信で送信するカスタム HTTP ヘッダー。JSON オブジェクト形式({\\\"Authorization\\\": \\\"Bearer …\\\"})。保存時は sys_secret に暗号化され、読み取りではマスクのみが返りヘッダーは返りません。マスクをそのままにすると現在の値が維持されます。\"\n },\n signing_secret: {\n label: \"署名シークレット\",\n help: \"配信の署名に使う HMAC-SHA256 キー(X-Objectstack-Signature)。保存時は sys_secret に暗号化され、読み取りではマスクのみが返りキーは返りません。マスクをそのままにすると現在の値が維持されます。\"\n },\n managed_by: {\n label: \"管理元\",\n help: \"レコードの出所: platform = フレームワーク組み込み / package = アプリ・パッケージ宣言(defineStack の webhooks から起動時シード)/ admin = Setup で作成。\",\n options: {\n platform: \"プラットフォーム\",\n package: \"パッケージ\",\n admin: \"管理者\"\n }\n },\n customized: {\n label: \"カスタマイズ済み\",\n help: \"管理者がパッケージ宣言の webhook を編集すると設定されます。以後、起動時シードはこの行を上書きしません(無効化したノイジーな webhook は再デプロイ後も保持)。admin 行では意味を持ちません。\"\n },\n created_at: {\n label: \"作成日時\"\n },\n updated_at: {\n label: \"更新日時\"\n }\n },\n _views: {\n active: {\n label: \"有効\"\n },\n inactive: {\n label: \"無効\"\n },\n by_object: {\n label: \"オブジェクト別\"\n },\n all_webhooks: {\n label: \"すべて\"\n }\n }\n }\n};\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\n/**\n * Auto-generated by 'os i18n extract' for locale 'es-ES'.\n * Edit translations in place; re-run extract (with --merge) to fill new gaps.\n * Do not hand-edit the structure — only the leaf string values.\n */\n\nimport type { TranslationData } from '@objectstack/spec/system';\n\nexport const esESObjects: NonNullable<TranslationData['objects']> = {\n sys_webhook: {\n label: \"Webhook\",\n pluralLabel: \"Webhooks\",\n description: \"Suscripción saliente de Webhook HTTP. Se crea mediante defineWebhook() en código o con el editor de Studio; la ejecuta el plugin del conector HTTP.\",\n fields: {\n id: {\n label: \"ID de webhook\"\n },\n name: {\n label: \"Nombre\",\n help: \"Nombre snake_case, único por organización; se usa en los registros y en la auditoría.\"\n },\n label: {\n label: \"Nombre visible\"\n },\n object_name: {\n label: \"Objeto\",\n help: \"Nombre corto del objeto cuyos eventos de registro (create/update/delete) activan este Webhook.\"\n },\n triggers: {\n label: \"Desencadenantes\",\n help: \"Eventos de registro que activan este Webhook. bulk_update / bulk_delete se activan en escrituras por predicado y entregan un recuento, no un registro.\",\n options: {\n create: \"Crear\",\n update: \"Actualizar\",\n delete: \"Eliminar\",\n bulk_update: \"Actualización masiva\",\n bulk_delete: \"Eliminación masiva\"\n }\n },\n url: {\n label: \"URL de destino\",\n help: \"Endpoint externo que recibe el POST.\"\n },\n method: {\n label: \"Método HTTP\",\n help: \"GET / POST / PUT / PATCH / DELETE\",\n options: {\n get: \"GET\",\n post: \"POST\",\n put: \"PUT\",\n patch: \"PATCH\",\n delete: \"DELETE\"\n }\n },\n description: {\n label: \"Descripción\"\n },\n active: {\n label: \"Activo\",\n help: \"Los Webhooks inactivos se omiten en el despachador.\"\n },\n definition_json: {\n label: \"Definición\",\n help: \"JSON serializado de Webhook (consulte @objectstack/spec/automation/webhook): configuración completa de cabeceras/auth/reintentos/payload.\"\n },\n headers_secret: {\n label: \"Cabeceras personalizadas\",\n help: \"Cabeceras HTTP personalizadas enviadas con cada entrega, como un objeto JSON ({\\\"Authorization\\\": \\\"Bearer …\\\"}). Se cifran en reposo en sys_secret; las lecturas devuelven una máscara, nunca las cabeceras. Deje la máscara sin tocar para conservar el valor actual.\"\n },\n signing_secret: {\n label: \"Secreto de firma\",\n help: \"Clave HMAC-SHA256 usada para firmar las entregas (X-Objectstack-Signature). Se cifra en reposo en sys_secret; las lecturas devuelven una máscara, nunca la clave. Deje la máscara sin tocar para conservar el valor actual.\"\n },\n managed_by: {\n label: \"Gestionado por\",\n help: \"Procedencia del registro: platform = integrado en el framework / package = declarado por app o paquete (sembrado al arrancar desde los webhooks de defineStack) / admin = creado en Setup.\",\n options: {\n platform: \"Plataforma\",\n package: \"Paquete\",\n admin: \"Administrador\"\n }\n },\n customized: {\n label: \"Personalizado\",\n help: \"Se establece cuando un administrador edita un webhook declarado por un paquete; a partir de entonces el sembrado de arranque deja de sobrescribir la fila (un webhook ruidoso desactivado sobrevive a los redespliegues). Sin sentido en filas admin.\"\n },\n created_at: {\n label: \"Creado el\"\n },\n updated_at: {\n label: \"Actualizado el\"\n }\n },\n _views: {\n active: {\n label: \"Activo\"\n },\n inactive: {\n label: \"Inactivo\"\n },\n by_object: {\n label: \"Por objeto\"\n },\n all_webhooks: {\n label: \"Todos\"\n }\n }\n }\n};\n","// Copyright (c) 2026 ObjectStack. Licensed under the Apache-2.0 license.\n\n/**\n * WebhooksTranslations — i18n bundle owned by this plugin (ADR-0029 D8).\n *\n * Object label/field/view/action translations for the sys_* objects this\n * plugin owns. Loaded at runtime via the plugin's `kernel:ready` hook\n * (`i18n.loadTranslations`). Regenerate with `os i18n extract` against\n * `scripts/i18n-extract.config.ts`.\n */\n\nimport type { TranslationBundle } from '@objectstack/spec/system';\nimport { enObjects } from './en.objects.generated.js';\nimport { zhCNObjects } from './zh-CN.objects.generated.js';\nimport { jaJPObjects } from './ja-JP.objects.generated.js';\nimport { esESObjects } from './es-ES.objects.generated.js';\n\nexport const WebhooksTranslations: TranslationBundle = {\n en: { objects: enObjects },\n 'zh-CN': { objects: zhCNObjects },\n 'ja-JP': { objects: jaJPObjects },\n 'es-ES': { objects: esESObjects },\n};\n"],"mappings":"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","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@objectstack/plugin-webhooks",
3
- "version": "17.0.0-rc.6",
3
+ "version": "17.0.0",
4
4
  "license": "Apache-2.0",
5
5
  "description": "Persistent, cluster-aware webhook dispatcher. Durable outbox + per-partition cluster.lock for exactly-once-ish delivery across nodes. See content/docs/concepts/webhook-delivery.mdx.",
6
6
  "type": "module",
@@ -19,14 +19,16 @@
19
19
  }
20
20
  },
21
21
  "dependencies": {
22
- "@objectstack/spec": "17.0.0-rc.6",
23
- "@objectstack/core": "17.0.0-rc.6",
24
- "@objectstack/service-messaging": "17.0.0-rc.6"
22
+ "@objectstack/core": "17.0.0",
23
+ "@objectstack/service-messaging": "17.0.0",
24
+ "@objectstack/spec": "17.0.0"
25
25
  },
26
26
  "devDependencies": {
27
27
  "@types/node": "^26.1.2",
28
28
  "typescript": "^6.0.3",
29
- "vitest": "^4.1.10"
29
+ "vitest": "^4.1.10",
30
+ "@objectstack/metadata-core": "17.0.0",
31
+ "@objectstack/objectql": "17.0.0"
30
32
  },
31
33
  "keywords": [
32
34
  "objectstack",
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/sys-webhook.object.ts"],"sourcesContent":["// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { ObjectSchema, Field } from '@objectstack/spec/data';\n\n/**\n * sys_webhook — Outbound HTTP integration configuration (runtime).\n *\n * Persists a single {@link Webhook} envelope per row so administrators\n * can author, enable/disable, and edit webhook subscriptions from the\n * Studio UI without code changes. The canonical Zod schema for the\n * `definition_json` envelope lives at `@objectstack/spec/automation/webhook`.\n *\n * ## Two authoring doors, one row\n * Rows land here two ways, distinguished by the `managed_by` provenance column:\n * - **admin** — created/edited directly through this object's CRUD UI.\n * - **package** — declared in code (`defineStack({ webhooks })` /\n * `defineWebhook()`) and materialized on boot by\n * `bootstrapDeclaredWebhooks` (#3461). Re-seeded every boot, but an admin\n * edit stamps `customized: true` and freezes the row (seed-not-clobber,\n * mirrors `sys_sharing_rule` #2909).\n *\n * One row per `name`. This plugin's {@link AutoEnqueuer} loads active rows on\n * boot + on `sys_webhook:changed` events, and turns matching `data.record.*`\n * events into deliveries on the shared `service-messaging` HTTP outbox\n * (ADR-0018 M3 — `sys_http_delivery`, drained by the messaging dispatcher).\n *\n * Ownership (ADR-0029 K2.a): this object is **owned by\n * `@objectstack/plugin-webhooks`** — the plugin that consumes these rows. It\n * used to live in the `@objectstack/platform-objects` monolith and be imported\n * here; the definition now lives with its owner so the plugin ships both data\n * and behavior as one unit.\n *\n * Platform-wide on purpose: every project (standalone, single-tenant,\n * cloud) can integrate with external systems (Slack, Stripe, internal\n * services) the same way.\n *\n * @namespace sys\n */\nexport const SysWebhook = ObjectSchema.create({\n name: 'sys_webhook',\n label: 'Webhook',\n pluralLabel: 'Webhooks',\n icon: 'webhook',\n isSystem: true,\n managedBy: 'config',\n // Authoring a webhook from the UI requires a structured form for the\n // headers / auth / retry / payload blocks — the generic JSON textarea\n // is acceptable as a v1 until a dedicated builder lands. Re-enable\n // create/edit/delete so admins can at least toggle `active` and edit\n // simple URL/method fields without round-tripping through code.\n userActions: { create: true, edit: true, delete: true, import: false },\n description: 'Outbound HTTP webhook subscription. Declared in code via defineStack({ webhooks }) / defineWebhook() (materialized into rows on boot) or authored directly in the Studio editor; dispatched by the webhook auto-enqueuer onto the shared HTTP outbox.',\n displayNameField: 'name',\n nameField: 'name', // [ADR-0079] canonical primary-title pointer (mirrors deprecated displayNameField)\n titleFormat: '{label}',\n highlightFields: ['name', 'object_name', 'url', 'active', 'updated_at'],\n\n listViews: {\n active: {\n type: 'grid',\n name: 'active',\n label: 'Active',\n data: { provider: 'object', object: 'sys_webhook' },\n columns: ['label', 'object_name', 'url', 'method', 'active', 'updated_at'],\n filter: [{ field: 'active', operator: 'equals', value: true }],\n sort: [{ field: 'label', order: 'asc' }],\n pagination: { pageSize: 50 },\n },\n inactive: {\n type: 'grid',\n name: 'inactive',\n label: 'Inactive',\n data: { provider: 'object', object: 'sys_webhook' },\n columns: ['label', 'object_name', 'url', 'method', 'active', 'updated_at'],\n filter: [{ field: 'active', operator: 'equals', value: false }],\n sort: [{ field: 'label', order: 'asc' }],\n pagination: { pageSize: 50 },\n },\n by_object: {\n type: 'grid',\n name: 'by_object',\n label: 'By Object',\n data: { provider: 'object', object: 'sys_webhook' },\n columns: ['object_name', 'label', 'url', 'active', 'updated_at'],\n sort: [{ field: 'object_name', order: 'asc' }, { field: 'label', order: 'asc' }],\n grouping: { fields: [{ field: 'object_name', order: 'asc', collapsed: false }] },\n pagination: { pageSize: 100 },\n },\n all_webhooks: {\n type: 'grid',\n name: 'all_webhooks',\n label: 'All',\n data: { provider: 'object', object: 'sys_webhook' },\n columns: ['label', 'object_name', 'url', 'method', 'active', 'updated_at'],\n sort: [{ field: 'label', order: 'asc' }],\n pagination: { pageSize: 50 },\n },\n },\n\n fields: {\n id: Field.text({ label: 'Webhook ID', required: true, readonly: true, group: 'System' }),\n\n name: Field.text({\n label: 'Name',\n required: true,\n maxLength: 100,\n description: 'Unique snake_case name — referenced in logs and audit',\n group: 'Definition',\n }),\n\n label: Field.text({\n label: 'Display Label',\n required: false,\n maxLength: 200,\n group: 'Definition',\n }),\n\n object_name: Field.text({\n label: 'Object',\n required: false,\n maxLength: 100,\n // Object picker (same widget as sys_sharing_rule) instead of a free-text\n // machine name. Falls back to a text input when the widget is unavailable.\n widget: 'object-ref',\n description: 'Short object name whose record events (create/update/delete) fire this webhook',\n group: 'Definition',\n }),\n\n triggers: Field.select(\n ['create', 'update', 'delete', 'bulk_update', 'bulk_delete'],\n {\n label: 'Triggers',\n required: false,\n // Multi-select instead of a hand-typed comma-separated string. Stored as\n // an array; the auto-enqueuer parser also tolerates the legacy\n // comma-separated / JSON-string forms so existing rows keep working.\n multiple: true,\n // [#4639] `bulk_*` fire on predicate writes (`multi: true`), whose\n // delivery carries `matched` instead of a record — opt-in precisely\n // because that body is a different shape. Kept in step with\n // `WebhookTriggerType` (`@objectstack/spec/automation`), which is the\n // contract the auto-enqueuer validates against.\n description: 'Record events that fire this webhook (bulk_* deliver a count, not a record)',\n group: 'Definition',\n },\n ),\n\n url: Field.text({\n label: 'Target URL',\n required: true,\n maxLength: 2048,\n description: 'External endpoint that receives the POST',\n group: 'Definition',\n }),\n\n method: Field.select(\n ['GET', 'POST', 'PUT', 'PATCH', 'DELETE'],\n {\n label: 'HTTP Method',\n required: true,\n // Select instead of free text. Option values are lowercased by the\n // Field.select helper (get/post/…); the auto-enqueuer upper-cases the\n // resolved method before delivery, so existing 'POST' rows and the\n // lowercase option values both normalise correctly.\n defaultValue: 'post',\n description: 'HTTP method used for the callback request',\n group: 'Definition',\n },\n ),\n\n description: Field.textarea({ label: 'Description', required: false, group: 'Definition' }),\n\n active: Field.boolean({\n label: 'Active',\n required: true,\n defaultValue: true,\n description: 'Inactive webhooks are skipped by the dispatcher',\n group: 'Definition',\n }),\n\n definition_json: Field.textarea({\n label: 'Definition',\n required: true,\n description: 'Serialised Webhook JSON (see @objectstack/spec/automation/webhook) — full headers/auth/retry/payload config',\n group: 'Definition',\n }),\n\n // ── Provenance (#3461 — record-authoritative seed-not-clobber) ──\n // Mirrors sys_sharing_rule (#2909). Both columns are `readonly`: the\n // engine strips them from non-system payloads (forge/clear-proof), while\n // bootstrapDeclaredWebhooks and the provenance stamp hook write with\n // isSystem. Deliberately NOT a write gate: webhooks are a first-class admin\n // authoring/tuning surface — admins may edit or deactivate a package row;\n // the seeder simply stops overwriting it once `customized` is stamped.\n managed_by: Field.select(\n ['platform', 'package', 'admin'],\n {\n label: 'Managed By',\n required: false,\n readonly: true,\n defaultValue: 'admin',\n description:\n 'Record provenance: platform = framework built-in / package = app/package-declared ' +\n '(boot-seeded from defineStack webhooks) / admin = created in Setup.',\n group: 'System',\n },\n ),\n\n customized: Field.boolean({\n label: 'Customized',\n required: false,\n readonly: true,\n defaultValue: false,\n description:\n 'Set when an admin edits a package-declared webhook; boot seeding will no longer ' +\n 'overwrite the row (a deactivated noisy webhook survives redeploys). Meaningless on admin rows.',\n group: 'System',\n }),\n\n created_at: Field.datetime({\n label: 'Created At',\n required: true,\n defaultValue: 'NOW()',\n readonly: true,\n group: 'System',\n }),\n\n updated_at: Field.datetime({ label: 'Updated At', required: false, group: 'System' }),\n },\n\n indexes: [\n { fields: ['name'], unique: true },\n { fields: ['object_name'] },\n { fields: ['active', 'object_name'] },\n ],\n});\n"],"mappings":"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","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["/Users/zhuangjianguo/Documents/GitHub/objectstack/packages/plugins/plugin-webhooks/dist/chunk-JQUVS5KK.cjs","../src/sys-webhook.object.ts"],"names":[],"mappings":"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","file":"/Users/zhuangjianguo/Documents/GitHub/objectstack/packages/plugins/plugin-webhooks/dist/chunk-JQUVS5KK.cjs","sourcesContent":[null,"// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { ObjectSchema, Field } from '@objectstack/spec/data';\n\n/**\n * sys_webhook — Outbound HTTP integration configuration (runtime).\n *\n * Persists a single {@link Webhook} envelope per row so administrators\n * can author, enable/disable, and edit webhook subscriptions from the\n * Studio UI without code changes. The canonical Zod schema for the\n * `definition_json` envelope lives at `@objectstack/spec/automation/webhook`.\n *\n * ## Two authoring doors, one row\n * Rows land here two ways, distinguished by the `managed_by` provenance column:\n * - **admin** — created/edited directly through this object's CRUD UI.\n * - **package** — declared in code (`defineStack({ webhooks })` /\n * `defineWebhook()`) and materialized on boot by\n * `bootstrapDeclaredWebhooks` (#3461). Re-seeded every boot, but an admin\n * edit stamps `customized: true` and freezes the row (seed-not-clobber,\n * mirrors `sys_sharing_rule` #2909).\n *\n * One row per `name`. This plugin's {@link AutoEnqueuer} loads active rows on\n * boot + on `sys_webhook:changed` events, and turns matching `data.record.*`\n * events into deliveries on the shared `service-messaging` HTTP outbox\n * (ADR-0018 M3 — `sys_http_delivery`, drained by the messaging dispatcher).\n *\n * Ownership (ADR-0029 K2.a): this object is **owned by\n * `@objectstack/plugin-webhooks`** — the plugin that consumes these rows. It\n * used to live in the `@objectstack/platform-objects` monolith and be imported\n * here; the definition now lives with its owner so the plugin ships both data\n * and behavior as one unit.\n *\n * Platform-wide on purpose: every project (standalone, single-tenant,\n * cloud) can integrate with external systems (Slack, Stripe, internal\n * services) the same way.\n *\n * @namespace sys\n */\nexport const SysWebhook = ObjectSchema.create({\n name: 'sys_webhook',\n label: 'Webhook',\n pluralLabel: 'Webhooks',\n icon: 'webhook',\n isSystem: true,\n managedBy: 'config',\n // Authoring a webhook from the UI requires a structured form for the\n // headers / auth / retry / payload blocks — the generic JSON textarea\n // is acceptable as a v1 until a dedicated builder lands. Re-enable\n // create/edit/delete so admins can at least toggle `active` and edit\n // simple URL/method fields without round-tripping through code.\n userActions: { create: true, edit: true, delete: true, import: false },\n description: 'Outbound HTTP webhook subscription. Declared in code via defineStack({ webhooks }) / defineWebhook() (materialized into rows on boot) or authored directly in the Studio editor; dispatched by the webhook auto-enqueuer onto the shared HTTP outbox.',\n displayNameField: 'name',\n nameField: 'name', // [ADR-0079] canonical primary-title pointer (mirrors deprecated displayNameField)\n titleFormat: '{label}',\n highlightFields: ['name', 'object_name', 'url', 'active', 'updated_at'],\n\n listViews: {\n active: {\n type: 'grid',\n name: 'active',\n label: 'Active',\n data: { provider: 'object', object: 'sys_webhook' },\n columns: ['label', 'object_name', 'url', 'method', 'active', 'updated_at'],\n filter: [{ field: 'active', operator: 'equals', value: true }],\n sort: [{ field: 'label', order: 'asc' }],\n pagination: { pageSize: 50 },\n },\n inactive: {\n type: 'grid',\n name: 'inactive',\n label: 'Inactive',\n data: { provider: 'object', object: 'sys_webhook' },\n columns: ['label', 'object_name', 'url', 'method', 'active', 'updated_at'],\n filter: [{ field: 'active', operator: 'equals', value: false }],\n sort: [{ field: 'label', order: 'asc' }],\n pagination: { pageSize: 50 },\n },\n by_object: {\n type: 'grid',\n name: 'by_object',\n label: 'By Object',\n data: { provider: 'object', object: 'sys_webhook' },\n columns: ['object_name', 'label', 'url', 'active', 'updated_at'],\n sort: [{ field: 'object_name', order: 'asc' }, { field: 'label', order: 'asc' }],\n grouping: { fields: [{ field: 'object_name', order: 'asc', collapsed: false }] },\n pagination: { pageSize: 100 },\n },\n all_webhooks: {\n type: 'grid',\n name: 'all_webhooks',\n label: 'All',\n data: { provider: 'object', object: 'sys_webhook' },\n columns: ['label', 'object_name', 'url', 'method', 'active', 'updated_at'],\n sort: [{ field: 'label', order: 'asc' }],\n pagination: { pageSize: 50 },\n },\n },\n\n fields: {\n id: Field.text({ label: 'Webhook ID', required: true, readonly: true, group: 'System' }),\n\n name: Field.text({\n label: 'Name',\n required: true,\n maxLength: 100,\n description: 'Unique snake_case name — referenced in logs and audit',\n group: 'Definition',\n }),\n\n label: Field.text({\n label: 'Display Label',\n required: false,\n maxLength: 200,\n group: 'Definition',\n }),\n\n object_name: Field.text({\n label: 'Object',\n required: false,\n maxLength: 100,\n // Object picker (same widget as sys_sharing_rule) instead of a free-text\n // machine name. Falls back to a text input when the widget is unavailable.\n widget: 'object-ref',\n description: 'Short object name whose record events (create/update/delete) fire this webhook',\n group: 'Definition',\n }),\n\n triggers: Field.select(\n ['create', 'update', 'delete', 'bulk_update', 'bulk_delete'],\n {\n label: 'Triggers',\n required: false,\n // Multi-select instead of a hand-typed comma-separated string. Stored as\n // an array; the auto-enqueuer parser also tolerates the legacy\n // comma-separated / JSON-string forms so existing rows keep working.\n multiple: true,\n // [#4639] `bulk_*` fire on predicate writes (`multi: true`), whose\n // delivery carries `matched` instead of a record — opt-in precisely\n // because that body is a different shape. Kept in step with\n // `WebhookTriggerType` (`@objectstack/spec/automation`), which is the\n // contract the auto-enqueuer validates against.\n description: 'Record events that fire this webhook (bulk_* deliver a count, not a record)',\n group: 'Definition',\n },\n ),\n\n url: Field.text({\n label: 'Target URL',\n required: true,\n maxLength: 2048,\n description: 'External endpoint that receives the POST',\n group: 'Definition',\n }),\n\n method: Field.select(\n ['GET', 'POST', 'PUT', 'PATCH', 'DELETE'],\n {\n label: 'HTTP Method',\n required: true,\n // Select instead of free text. Option values are lowercased by the\n // Field.select helper (get/post/…); the auto-enqueuer upper-cases the\n // resolved method before delivery, so existing 'POST' rows and the\n // lowercase option values both normalise correctly.\n defaultValue: 'post',\n description: 'HTTP method used for the callback request',\n group: 'Definition',\n },\n ),\n\n description: Field.textarea({ label: 'Description', required: false, group: 'Definition' }),\n\n active: Field.boolean({\n label: 'Active',\n required: true,\n defaultValue: true,\n description: 'Inactive webhooks are skipped by the dispatcher',\n group: 'Definition',\n }),\n\n definition_json: Field.textarea({\n label: 'Definition',\n required: true,\n description: 'Serialised Webhook JSON (see @objectstack/spec/automation/webhook) — full headers/auth/retry/payload config',\n group: 'Definition',\n }),\n\n // ── Provenance (#3461 — record-authoritative seed-not-clobber) ──\n // Mirrors sys_sharing_rule (#2909). Both columns are `readonly`: the\n // engine strips them from non-system payloads (forge/clear-proof), while\n // bootstrapDeclaredWebhooks and the provenance stamp hook write with\n // isSystem. Deliberately NOT a write gate: webhooks are a first-class admin\n // authoring/tuning surface — admins may edit or deactivate a package row;\n // the seeder simply stops overwriting it once `customized` is stamped.\n managed_by: Field.select(\n ['platform', 'package', 'admin'],\n {\n label: 'Managed By',\n required: false,\n readonly: true,\n defaultValue: 'admin',\n description:\n 'Record provenance: platform = framework built-in / package = app/package-declared ' +\n '(boot-seeded from defineStack webhooks) / admin = created in Setup.',\n group: 'System',\n },\n ),\n\n customized: Field.boolean({\n label: 'Customized',\n required: false,\n readonly: true,\n defaultValue: false,\n description:\n 'Set when an admin edits a package-declared webhook; boot seeding will no longer ' +\n 'overwrite the row (a deactivated noisy webhook survives redeploys). Meaningless on admin rows.',\n group: 'System',\n }),\n\n created_at: Field.datetime({\n label: 'Created At',\n required: true,\n defaultValue: 'NOW()',\n readonly: true,\n group: 'System',\n }),\n\n updated_at: Field.datetime({ label: 'Updated At', required: false, group: 'System' }),\n },\n\n indexes: [\n { fields: ['name'], unique: true },\n { fields: ['object_name'] },\n { fields: ['active', 'object_name'] },\n ],\n});\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/translations/en.objects.generated.ts","../src/translations/zh-CN.objects.generated.ts","../src/translations/ja-JP.objects.generated.ts","../src/translations/es-ES.objects.generated.ts","../src/translations/index.ts"],"sourcesContent":["// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\n/**\n * Auto-generated by 'os i18n extract' for locale 'en'.\n * Edit translations in place; re-run extract (with --merge) to fill new gaps.\n * Do not hand-edit the structure — only the leaf string values.\n */\n\nimport type { TranslationData } from '@objectstack/spec/system';\n\nexport const enObjects: NonNullable<TranslationData['objects']> = {\n sys_webhook: {\n label: \"Webhook\",\n pluralLabel: \"Webhooks\",\n description: \"Outbound HTTP webhook subscription. Authored via defineWebhook() in code or the Studio editor; executed by the HTTP connector plugin.\",\n fields: {\n id: {\n label: \"Webhook ID\"\n },\n name: {\n label: \"Name\",\n help: \"Unique snake_case name — referenced in logs and audit\"\n },\n label: {\n label: \"Display Label\"\n },\n object_name: {\n label: \"Object\",\n help: \"Short object name whose record events (create/update/delete) fire this webhook\"\n },\n triggers: {\n label: \"Triggers\",\n help: \"Record events that fire this webhook. bulk_update / bulk_delete fire on predicate writes and deliver a count, not a record.\",\n options: {\n create: \"create\",\n update: \"update\",\n delete: \"delete\",\n bulk_update: \"bulk_update\",\n bulk_delete: \"bulk_delete\"\n }\n },\n url: {\n label: \"Target URL\",\n help: \"External endpoint that receives the POST\"\n },\n method: {\n label: \"HTTP Method\",\n help: \"GET / POST / PUT / PATCH / DELETE\",\n options: {\n get: \"GET\",\n post: \"POST\",\n put: \"PUT\",\n patch: \"PATCH\",\n delete: \"DELETE\"\n }\n },\n description: {\n label: \"Description\"\n },\n active: {\n label: \"Active\",\n help: \"Inactive webhooks are skipped by the dispatcher\"\n },\n definition_json: {\n label: \"Definition\",\n help: \"Serialised Webhook JSON (see @objectstack/spec/automation/webhook) — full headers/auth/retry/payload config\"\n },\n managed_by: {\n label: \"Managed By\",\n help: \"Record provenance: platform = framework built-in / package = app/package-declared (boot-seeded from defineStack webhooks) / admin = created in Setup.\",\n options: {\n platform: \"platform\",\n package: \"package\",\n admin: \"admin\"\n }\n },\n customized: {\n label: \"Customized\",\n help: \"Set when an admin edits a package-declared webhook; boot seeding will no longer overwrite the row (a deactivated noisy webhook survives redeploys). Meaningless on admin rows.\"\n },\n created_at: {\n label: \"Created At\"\n },\n updated_at: {\n label: \"Updated At\"\n }\n },\n _views: {\n active: {\n label: \"Active\"\n },\n inactive: {\n label: \"Inactive\"\n },\n by_object: {\n label: \"By Object\"\n },\n all_webhooks: {\n label: \"All\"\n }\n }\n }\n};\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\n/**\n * Auto-generated by 'os i18n extract' for locale 'zh-CN'.\n * Edit translations in place; re-run extract (with --merge) to fill new gaps.\n * Do not hand-edit the structure — only the leaf string values.\n */\n\nimport type { TranslationData } from '@objectstack/spec/system';\n\nexport const zhCNObjects: NonNullable<TranslationData['objects']> = {\n sys_webhook: {\n label: \"Webhook\",\n pluralLabel: \"Webhook\",\n description: \"外发 HTTP Webhook 订阅。可在代码中通过 defineWebhook() 编写,或在 Studio 编辑器中维护;由 HTTP 连接器插件执行。\",\n fields: {\n id: {\n label: \"Webhook ID\"\n },\n name: {\n label: \"名称\",\n help: \"唯一的 snake_case 名称——用于日志和审计引用\"\n },\n label: {\n label: \"显示标签\"\n },\n object_name: {\n label: \"对象\",\n help: \"触发该 Webhook 的记录事件(create/update/delete)的短对象名\"\n },\n triggers: {\n label: \"触发器\",\n help: \"触发该 Webhook 的记录事件。bulk_update / bulk_delete 由谓词写(批量)触发,投递的是受影响条数而非记录。\",\n options: {\n create: \"创建\",\n update: \"更新\",\n delete: \"删除\",\n bulk_update: \"批量更新\",\n bulk_delete: \"批量删除\"\n }\n },\n url: {\n label: \"目标 URL\",\n help: \"接收 POST 请求的外部端点\"\n },\n method: {\n label: \"HTTP 方法\",\n help: \"GET / POST / PUT / PATCH / DELETE\",\n options: {\n get: \"GET\",\n post: \"POST\",\n put: \"PUT\",\n patch: \"PATCH\",\n delete: \"DELETE\"\n }\n },\n description: {\n label: \"描述\"\n },\n active: {\n label: \"启用\",\n help: \"停用的 Webhook 会被调度器跳过\"\n },\n definition_json: {\n label: \"定义\",\n help: \"序列化的 Webhook JSON(参见 @objectstack/spec/automation/webhook)——包含完整的 headers/auth/retry/payload 配置\"\n },\n managed_by: {\n label: \"管理来源\",\n help: \"记录来源:platform = 框架内置 / package = 应用包声明(由 defineStack 的 webhooks 在启动时种入)/ admin = 在 Setup 中创建。\",\n options: {\n platform: \"平台\",\n package: \"包\",\n admin: \"管理员\"\n }\n },\n customized: {\n label: \"已定制\",\n help: \"当管理员编辑应用包声明的 webhook 时置位;此后启动种入不再覆盖该行(被停用的嘈杂 webhook 可跨重新部署保留)。对 admin 来源的记录无意义。\"\n },\n created_at: {\n label: \"创建时间\"\n },\n updated_at: {\n label: \"更新时间\"\n }\n },\n _views: {\n active: {\n label: \"启用\"\n },\n inactive: {\n label: \"停用\"\n },\n by_object: {\n label: \"按对象\"\n },\n all_webhooks: {\n label: \"全部\"\n }\n }\n }\n};\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\n/**\n * Auto-generated by 'os i18n extract' for locale 'ja-JP'.\n * Edit translations in place; re-run extract (with --merge) to fill new gaps.\n * Do not hand-edit the structure — only the leaf string values.\n */\n\nimport type { TranslationData } from '@objectstack/spec/system';\n\nexport const jaJPObjects: NonNullable<TranslationData['objects']> = {\n sys_webhook: {\n label: \"Webhook\",\n pluralLabel: \"Webhook\",\n description: \"送信 HTTP Webhook サブスクリプション。defineWebhook() またはスタジオエディタで作成し、HTTP コネクタプラグインが実行します。\",\n fields: {\n id: {\n label: \"Webhook ID\"\n },\n name: {\n label: \"名前\",\n help: \"一意の snake_case 名 — ログおよび監査で参照\"\n },\n label: {\n label: \"表示名\"\n },\n object_name: {\n label: \"オブジェクト\",\n help: \"このウェブフックを発火するレコードイベント(create/update/delete)のオブジェクト短縮名\"\n },\n triggers: {\n label: \"トリガー\",\n help: \"このウェブフックを発火するレコードイベント。bulk_update / bulk_delete は述語による一括書き込みで発火し、レコードではなく件数を配信します。\",\n options: {\n create: \"作成\",\n update: \"更新\",\n delete: \"削除\",\n bulk_update: \"一括更新\",\n bulk_delete: \"一括削除\"\n }\n },\n url: {\n label: \"ターゲット URL\",\n help: \"POST を受信する外部エンドポイント\"\n },\n method: {\n label: \"HTTP メソッド\",\n help: \"GET / POST / PUT / PATCH / DELETE\",\n options: {\n get: \"GET\",\n post: \"POST\",\n put: \"PUT\",\n patch: \"PATCH\",\n delete: \"DELETE\"\n }\n },\n description: {\n label: \"説明\"\n },\n active: {\n label: \"有効\",\n help: \"無効にするとディスパッチャにスキップされます\"\n },\n definition_json: {\n label: \"定義\",\n help: \"シリアライズされた Webhook JSON(@objectstack/spec/automation/webhook 参照)— ヘッダー/認証/リトライ/ペイロード設定を含む\"\n },\n managed_by: {\n label: \"管理元\",\n help: \"レコードの出所: platform = フレームワーク組み込み / package = アプリ・パッケージ宣言(defineStack の webhooks から起動時シード)/ admin = Setup で作成。\",\n options: {\n platform: \"プラットフォーム\",\n package: \"パッケージ\",\n admin: \"管理者\"\n }\n },\n customized: {\n label: \"カスタマイズ済み\",\n help: \"管理者がパッケージ宣言の webhook を編集すると設定されます。以後、起動時シードはこの行を上書きしません(無効化したノイジーな webhook は再デプロイ後も保持)。admin 行では意味を持ちません。\"\n },\n created_at: {\n label: \"作成日時\"\n },\n updated_at: {\n label: \"更新日時\"\n }\n },\n _views: {\n active: {\n label: \"有効\"\n },\n inactive: {\n label: \"無効\"\n },\n by_object: {\n label: \"オブジェクト別\"\n },\n all_webhooks: {\n label: \"すべて\"\n }\n }\n }\n};\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\n/**\n * Auto-generated by 'os i18n extract' for locale 'es-ES'.\n * Edit translations in place; re-run extract (with --merge) to fill new gaps.\n * Do not hand-edit the structure — only the leaf string values.\n */\n\nimport type { TranslationData } from '@objectstack/spec/system';\n\nexport const esESObjects: NonNullable<TranslationData['objects']> = {\n sys_webhook: {\n label: \"Webhook\",\n pluralLabel: \"Webhooks\",\n description: \"Suscripción saliente de Webhook HTTP. Se crea mediante defineWebhook() en código o con el editor de Studio; la ejecuta el plugin del conector HTTP.\",\n fields: {\n id: {\n label: \"ID de webhook\"\n },\n name: {\n label: \"Nombre\",\n help: \"Nombre snake_case único; se usa en los registros y en la auditoría.\"\n },\n label: {\n label: \"Nombre visible\"\n },\n object_name: {\n label: \"Objeto\",\n help: \"Nombre corto del objeto cuyos eventos de registro (create/update/delete) activan este Webhook.\"\n },\n triggers: {\n label: \"Desencadenantes\",\n help: \"Eventos de registro que activan este Webhook. bulk_update / bulk_delete se activan en escrituras por predicado y entregan un recuento, no un registro.\",\n options: {\n create: \"Crear\",\n update: \"Actualizar\",\n delete: \"Eliminar\",\n bulk_update: \"Actualización masiva\",\n bulk_delete: \"Eliminación masiva\"\n }\n },\n url: {\n label: \"URL de destino\",\n help: \"Endpoint externo que recibe el POST.\"\n },\n method: {\n label: \"Método HTTP\",\n help: \"GET / POST / PUT / PATCH / DELETE\",\n options: {\n get: \"GET\",\n post: \"POST\",\n put: \"PUT\",\n patch: \"PATCH\",\n delete: \"DELETE\"\n }\n },\n description: {\n label: \"Descripción\"\n },\n active: {\n label: \"Activo\",\n help: \"Los Webhooks inactivos se omiten en el despachador.\"\n },\n definition_json: {\n label: \"Definición\",\n help: \"JSON serializado de Webhook (consulte @objectstack/spec/automation/webhook): configuración completa de cabeceras/auth/reintentos/payload.\"\n },\n managed_by: {\n label: \"Gestionado por\",\n help: \"Procedencia del registro: platform = integrado en el framework / package = declarado por app o paquete (sembrado al arrancar desde los webhooks de defineStack) / admin = creado en Setup.\",\n options: {\n platform: \"Plataforma\",\n package: \"Paquete\",\n admin: \"Administrador\"\n }\n },\n customized: {\n label: \"Personalizado\",\n help: \"Se establece cuando un administrador edita un webhook declarado por un paquete; a partir de entonces el sembrado de arranque deja de sobrescribir la fila (un webhook ruidoso desactivado sobrevive a los redespliegues). Sin sentido en filas admin.\"\n },\n created_at: {\n label: \"Creado el\"\n },\n updated_at: {\n label: \"Actualizado el\"\n }\n },\n _views: {\n active: {\n label: \"Activo\"\n },\n inactive: {\n label: \"Inactivo\"\n },\n by_object: {\n label: \"Por objeto\"\n },\n all_webhooks: {\n label: \"Todos\"\n }\n }\n }\n};\n","// Copyright (c) 2026 ObjectStack. Licensed under the Apache-2.0 license.\n\n/**\n * WebhooksTranslations — i18n bundle owned by this plugin (ADR-0029 D8).\n *\n * Object label/field/view/action translations for the sys_* objects this\n * plugin owns. Loaded at runtime via the plugin's `kernel:ready` hook\n * (`i18n.loadTranslations`). Regenerate with `os i18n extract` against\n * `scripts/i18n-extract.config.ts`.\n */\n\nimport type { TranslationBundle } from '@objectstack/spec/system';\nimport { enObjects } from './en.objects.generated.js';\nimport { zhCNObjects } from './zh-CN.objects.generated.js';\nimport { jaJPObjects } from './ja-JP.objects.generated.js';\nimport { esESObjects } from './es-ES.objects.generated.js';\n\nexport const WebhooksTranslations: TranslationBundle = {\n en: { objects: enObjects },\n 'zh-CN': { objects: zhCNObjects },\n 'ja-JP': { objects: jaJPObjects },\n 'es-ES': { objects: esESObjects },\n};\n"],"mappings":"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","names":[]}