pinto-app-openclaw 1.3.18 → 1.3.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -29,7 +29,7 @@ flow การทำงาน:
29
29
  - OpenClaw ที่รันได้แล้ว
30
30
  - Node.js 20+ และ npm
31
31
  - Pinto bot ที่สร้างไว้แล้ว
32
- - Bot UUID จริงของ Pinto
32
+ - Bot ID จริงของ Pinto
33
33
  - Pinto API base URL ที่ถูกต้อง เช่น `https://api.pinto-app.com`
34
34
  - URL ที่ Pinto เข้าถึง OpenClaw ได้จริง เช่น domain, reverse proxy, Tailscale, tunnel
35
35
 
@@ -82,8 +82,8 @@ openclaw plugins install .
82
82
  - ใส่ได้ทั้งแบบมี `/` ท้ายหรือไม่มี `/` ท้าย
83
83
  - ตัวอย่าง `https://api.pinto-app.com`
84
84
  - `Bot Id`
85
- - ต้องเป็น Bot UUID จริงของ Pinto
86
- - ไม่ใช่ `bot_id` แบบ slug
85
+ - ต้องเป็น Bot ID จริงของ Pinto
86
+ - ต้องตรงกับค่า `bot_id` ที่ Pinto ส่งมา
87
87
  - `Enabled`
88
88
  - เปิดหรือปิด channel
89
89
  - `Agent Id`
@@ -96,6 +96,7 @@ openclaw plugins install .
96
96
  - observer จะไม่ตอบกลับ Pinto โดยตรง
97
97
  - `Webhook Secret`
98
98
  - secret ที่ใช้ร่วมกับ header `X-Pinto-Secret`
99
+ - ระบบไม่ generate ค่านี้ให้อัตโนมัติ
99
100
  - ถ้าไม่ได้ตั้งค่าไว้ ระบบจะไม่บังคับตรวจ secret ขาเข้า
100
101
  - `Webhook Path`
101
102
  - path ของ webhook endpoint บน OpenClaw
@@ -109,9 +110,10 @@ openclaw plugins install .
109
110
  - ระบบจะเติม `botId` เป็นสตริงว่าง `""`
110
111
  - ระบบจะเติม `agentId` เป็นสตริงว่าง `""`
111
112
  - ระบบจะไม่เติม `observerAgentIds` ถ้ายังไม่ได้ใช้
112
- - ระบบจะ generate `webhookSecret` ให้ 1 ค่าอัตโนมัติ
113
+ - ระบบจะเติม `webhookSecret` เป็นสตริงว่าง `""`
113
114
  - ระบบจะเติม `webhookPath` เป็น `/plugins/pinto/webhook`
114
115
  - ผู้ใช้ยังต้องกรอก `botId` เองจาก Pinto bot จริง
116
+ - ถ้าต้องการตรวจ secret ผู้ใช้ต้องกรอก `webhookSecret` เอง และตั้งค่าเดียวกันใน Pinto
115
117
 
116
118
  ตัวอย่าง config:
117
119
 
@@ -123,7 +125,7 @@ openclaw plugins install .
123
125
  "apiUrl": "https://api.pinto-app.com",
124
126
  "botId": "",
125
127
  "agentId": "",
126
- "webhookSecret": "pinto-oc-9f3a1b7c5d2e8k4m",
128
+ "webhookSecret": "",
127
129
  "webhookPath": "/plugins/pinto/webhook"
128
130
  }
129
131
  }
@@ -145,7 +147,7 @@ openclaw plugins install .
145
147
  "sales": {
146
148
  "enabled": true,
147
149
  "apiUrl": "https://api.pinto-app.com",
148
- "botId": "20387880-7934-40c3-b7d4-9fa6557697cf",
150
+ "botId": "bot-sales",
149
151
  "agentId": "sales-agent",
150
152
  "observerAgentIds": ["audit-agent", "memory-agent"],
151
153
  "webhookSecret": "pinto-oc-sales-secret",
@@ -154,7 +156,7 @@ openclaw plugins install .
154
156
  "support": {
155
157
  "enabled": true,
156
158
  "apiUrl": "https://api.pinto-app.com",
157
- "botId": "d03cb2fd-6fd6-4d93-8f30-111111111111",
159
+ "botId": "bot-support",
158
160
  "agentId": "support-agent",
159
161
  "webhookSecret": "pinto-oc-support-secret",
160
162
  "webhookPath": "/plugins/pinto/support"
@@ -267,6 +269,8 @@ openclaw plugins install .
267
269
  ```md
268
270
  You are the sales assistant for Pinto.
269
271
  Focus on product guidance, pricing, promotions, and converting leads.
272
+ When a message comes from Pinto, answer with normal user-facing text.
273
+ Do not call the Pinto API or include bot_id/chat_id JSON in the reply.
270
274
  Be concise and helpful.
271
275
  ```
272
276
 
@@ -284,7 +288,7 @@ Be concise and helpful.
284
288
  "pinto": {
285
289
  "enabled": true,
286
290
  "apiUrl": "https://api.pinto-app.com",
287
- "botId": "20387880-7934-40c3-b7d4-9fa6557697cf",
291
+ "botId": "bot-sales",
288
292
  "agentId": "sales-agent",
289
293
  "webhookSecret": "pinto-oc-9f3a1b7c5d2e8k4m",
290
294
  "webhookPath": "/plugins/pinto/webhook"
@@ -387,8 +391,8 @@ Pinto bot ต้องมีข้อมูลต่อไปนี้:
387
391
  - `webhook_url = <public-openclaw-base-url> + <Webhook Path>`
388
392
  - ตัวอย่างเช่น ถ้า OpenClaw เปิดผ่าน `https://bot.example.com` และ `Webhook Path` เป็น `/plugins/pinto/custom-webhook`
389
393
  - ให้ใส่ `https://bot.example.com/plugins/pinto/custom-webhook`
390
- - Bot UUID
391
- - ใช้ค่า `_id` ของ bot เป็นค่า `Bot Id` ใน OpenClaw
394
+ - Bot ID
395
+ - ใช้ค่า `bot_id` ของ bot เป็นค่า `Bot Id` ใน OpenClaw
392
396
  - ถ้ามีการเปิดใช้ secret
393
397
  - Pinto ต้องส่ง header `X-Pinto-Secret` เข้ามา
394
398
  - ค่า secret ต้องตรงกับ `Webhook Secret` ใน OpenClaw
@@ -441,7 +445,7 @@ POST /plugins/pinto/webhook
441
445
 
442
446
  ```json
443
447
  {
444
- "bot_id": "20387880-7934-40c3-b7d4-9fa6557697cf",
448
+ "bot_id": "bot-sales",
445
449
  "chat_id": "5f315d4e-cf22-4054-bbb0-2fe074bd3892",
446
450
  "message": "hello",
447
451
  "user_id": "a7c3fe36-cf41-42b5-a290-ca98e6129fac",
@@ -461,7 +465,7 @@ POST <apiUrl>/v1/bots/webhook/receive
461
465
 
462
466
  ```json
463
467
  {
464
- "bot_id": "20387880-7934-40c3-b7d4-9fa6557697cf",
468
+ "bot_id": "bot-sales",
465
469
  "chat_id": "5f315d4e-cf22-4054-bbb0-2fe074bd3892",
466
470
  "reply_message": "สวัสดีจาก OpenClaw"
467
471
  }
@@ -471,7 +475,7 @@ POST <apiUrl>/v1/bots/webhook/receive
471
475
 
472
476
  ```json
473
477
  {
474
- "bot_id": "20387880-7934-40c3-b7d4-9fa6557697cf",
478
+ "bot_id": "bot-sales",
475
479
  "chat_id": "5f315d4e-cf22-4054-bbb0-2fe074bd3892",
476
480
  "reply_message": "ดูรูปนี้",
477
481
  "media_url": "https://example.com/image.png"
@@ -504,7 +508,7 @@ curl -i -X POST http://127.0.0.1:18789/plugins/pinto/webhook \
504
508
  -H 'Content-Type: application/json' \
505
509
  -H 'X-Pinto-Secret: pinto-oc-9f3a1b7c5d2e8k4m' \
506
510
  -d '{
507
- "bot_id":"20387880-7934-40c3-b7d4-9fa6557697cf",
511
+ "bot_id":"bot-sales",
508
512
  "chat_id":"5f315d4e-cf22-4054-bbb0-2fe074bd3892",
509
513
  "message":"hello",
510
514
  "user_id":"a7c3fe36-cf41-42b5-a290-ca98e6129fac"
@@ -524,7 +528,7 @@ curl -i -X POST https://your-host.example.com/plugins/pinto/webhook \
524
528
  -H 'Content-Type: application/json' \
525
529
  -H 'X-Pinto-Secret: pinto-oc-9f3a1b7c5d2e8k4m' \
526
530
  -d '{
527
- "bot_id":"20387880-7934-40c3-b7d4-9fa6557697cf",
531
+ "bot_id":"bot-sales",
528
532
  "chat_id":"5f315d4e-cf22-4054-bbb0-2fe074bd3892",
529
533
  "message":"hello",
530
534
  "user_id":"a7c3fe36-cf41-42b5-a290-ca98e6129fac"
@@ -538,7 +542,7 @@ curl -i -X POST https://api.pinto-app.com/v1/bots/webhook/receive \
538
542
  -H 'Content-Type: application/json' \
539
543
  -H 'X-Pinto-Secret: pinto-oc-9f3a1b7c5d2e8k4m' \
540
544
  -d '{
541
- "bot_id":"20387880-7934-40c3-b7d4-9fa6557697cf",
545
+ "bot_id":"bot-sales",
542
546
  "chat_id":"5f315d4e-cf22-4054-bbb0-2fe074bd3892",
543
547
  "reply_message":"OpenClaw outbound test"
544
548
  }'
@@ -566,7 +570,7 @@ curl -i -X POST https://api.pinto-app.com/v1/bots/webhook/receive \
566
570
 
567
571
  สาเหตุที่พบบ่อย:
568
572
 
569
- - `Bot Id` ไม่ใช่ UUID จริง
573
+ - `Bot Id` ไม่ตรงกับค่า `bot_id` จริงของ Pinto
570
574
  - `chat_id` อยู่คนละ environment
571
575
  - payload ที่ส่งไป `POST /v1/bots/webhook/receive` ไม่ตรงกับ backend Pinto
572
576
 
@@ -613,7 +617,7 @@ Main features:
613
617
  - A working OpenClaw instance
614
618
  - Node.js 20+ and npm
615
619
  - An existing Pinto bot
616
- - The real Pinto bot UUID
620
+ - The real Pinto bot ID
617
621
  - A valid Pinto API base URL such as `https://api.pinto-app.com`
618
622
  - A public or reachable URL that Pinto can call
619
623
 
@@ -665,8 +669,8 @@ Fields:
665
669
  - Pinto API base URL
666
670
  - With or without a trailing slash is supported
667
671
  - `Bot Id`
668
- - Must be the real Pinto bot UUID
669
- - Do not use the human-readable bot slug
672
+ - Must be the real Pinto bot ID
673
+ - Must match the `bot_id` value Pinto sends
670
674
  - `Enabled`
671
675
  - Enables or disables the channel
672
676
  - `Agent Id`
@@ -679,6 +683,7 @@ Fields:
679
683
  - Observer agents do not reply back to Pinto
680
684
  - `Webhook Secret`
681
685
  - Shared secret used with `X-Pinto-Secret`
686
+ - The plugin does not generate this value by default
682
687
  - If empty, inbound secret validation is not enforced
683
688
 
684
689
  Example config:
@@ -691,7 +696,7 @@ Example config:
691
696
  "apiUrl": "https://api.pinto-app.com",
692
697
  "botId": "",
693
698
  "agentId": "",
694
- "webhookSecret": "pinto-oc-9f3a1b7c5d2e8k4m",
699
+ "webhookSecret": "",
695
700
  "webhookPath": "/plugins/pinto/webhook"
696
701
  }
697
702
  }
@@ -709,7 +714,7 @@ Multi-account example:
709
714
  "sales": {
710
715
  "enabled": true,
711
716
  "apiUrl": "https://api.pinto-app.com",
712
- "botId": "20387880-7934-40c3-b7d4-9fa6557697cf",
717
+ "botId": "bot-sales",
713
718
  "agentId": "sales-agent",
714
719
  "observerAgentIds": ["audit-agent", "memory-agent"],
715
720
  "webhookSecret": "pinto-oc-sales-secret",
@@ -718,7 +723,7 @@ Multi-account example:
718
723
  "support": {
719
724
  "enabled": true,
720
725
  "apiUrl": "https://api.pinto-app.com",
721
- "botId": "d03cb2fd-6fd6-4d93-8f30-111111111111",
726
+ "botId": "bot-support",
722
727
  "agentId": "support-agent",
723
728
  "webhookSecret": "pinto-oc-support-secret",
724
729
  "webhookPath": "/plugins/pinto/support"
@@ -825,6 +830,8 @@ Example `AGENTS.md`:
825
830
  ```md
826
831
  You are the sales assistant for Pinto.
827
832
  Focus on product guidance, pricing, promotions, and converting leads.
833
+ When a message comes from Pinto, answer with normal user-facing text.
834
+ Do not call the Pinto API or include bot_id/chat_id JSON in the reply.
828
835
  Be concise and helpful.
829
836
  ```
830
837
 
@@ -842,7 +849,7 @@ Single-account example:
842
849
  "pinto": {
843
850
  "enabled": true,
844
851
  "apiUrl": "https://api.pinto-app.com",
845
- "botId": "20387880-7934-40c3-b7d4-9fa6557697cf",
852
+ "botId": "bot-sales",
846
853
  "agentId": "sales-agent",
847
854
  "observerAgentIds": ["audit-agent", "memory-agent"],
848
855
  "webhookSecret": "pinto-oc-9f3a1b7c5d2e8k4m",
@@ -944,8 +951,8 @@ Your Pinto bot must have:
944
951
  - The URL Pinto calls
945
952
  - Example:
946
953
  - `https://your-host.example.com/plugins/pinto/webhook`
947
- - Bot UUID
948
- - Use the bot `_id` as `Bot Id` in OpenClaw
954
+ - Bot ID
955
+ - Use the bot `bot_id` as `Bot Id` in OpenClaw
949
956
  - If webhook security is enabled
950
957
  - Pinto must send `X-Pinto-Secret`
951
958
  - The value must match the OpenClaw `Webhook Secret`
@@ -1000,7 +1007,7 @@ Example request body:
1000
1007
 
1001
1008
  ```json
1002
1009
  {
1003
- "bot_id": "20387880-7934-40c3-b7d4-9fa6557697cf",
1010
+ "bot_id": "bot-sales",
1004
1011
  "chat_id": "5f315d4e-cf22-4054-bbb0-2fe074bd3892",
1005
1012
  "message": "hello",
1006
1013
  "user_id": "a7c3fe36-cf41-42b5-a290-ca98e6129fac",
@@ -1020,7 +1027,7 @@ Example body:
1020
1027
 
1021
1028
  ```json
1022
1029
  {
1023
- "bot_id": "20387880-7934-40c3-b7d4-9fa6557697cf",
1030
+ "bot_id": "bot-sales",
1024
1031
  "chat_id": "5f315d4e-cf22-4054-bbb0-2fe074bd3892",
1025
1032
  "reply_message": "Hello from OpenClaw"
1026
1033
  }
@@ -1030,7 +1037,7 @@ Media example:
1030
1037
 
1031
1038
  ```json
1032
1039
  {
1033
- "bot_id": "20387880-7934-40c3-b7d4-9fa6557697cf",
1040
+ "bot_id": "bot-sales",
1034
1041
  "chat_id": "5f315d4e-cf22-4054-bbb0-2fe074bd3892",
1035
1042
  "reply_message": "See this image",
1036
1043
  "media_url": "https://example.com/image.png"
@@ -1063,7 +1070,7 @@ curl -i -X POST http://127.0.0.1:18789/plugins/pinto/webhook \
1063
1070
  -H 'Content-Type: application/json' \
1064
1071
  -H 'X-Pinto-Secret: pinto-oc-9f3a1b7c5d2e8k4m' \
1065
1072
  -d '{
1066
- "bot_id":"20387880-7934-40c3-b7d4-9fa6557697cf",
1073
+ "bot_id":"bot-sales",
1067
1074
  "chat_id":"5f315d4e-cf22-4054-bbb0-2fe074bd3892",
1068
1075
  "message":"hello",
1069
1076
  "user_id":"a7c3fe36-cf41-42b5-a290-ca98e6129fac"
@@ -1083,7 +1090,7 @@ curl -i -X POST https://your-host.example.com/plugins/pinto/webhook \
1083
1090
  -H 'Content-Type: application/json' \
1084
1091
  -H 'X-Pinto-Secret: pinto-oc-9f3a1b7c5d2e8k4m' \
1085
1092
  -d '{
1086
- "bot_id":"20387880-7934-40c3-b7d4-9fa6557697cf",
1093
+ "bot_id":"bot-sales",
1087
1094
  "chat_id":"5f315d4e-cf22-4054-bbb0-2fe074bd3892",
1088
1095
  "message":"hello",
1089
1096
  "user_id":"a7c3fe36-cf41-42b5-a290-ca98e6129fac"
@@ -1097,7 +1104,7 @@ curl -i -X POST https://api.pinto-app.com/v1/bots/webhook/receive \
1097
1104
  -H 'Content-Type: application/json' \
1098
1105
  -H 'X-Pinto-Secret: pinto-oc-9f3a1b7c5d2e8k4m' \
1099
1106
  -d '{
1100
- "bot_id":"20387880-7934-40c3-b7d4-9fa6557697cf",
1107
+ "bot_id":"bot-sales",
1101
1108
  "chat_id":"5f315d4e-cf22-4054-bbb0-2fe074bd3892",
1102
1109
  "reply_message":"OpenClaw outbound test"
1103
1110
  }'
@@ -1125,7 +1132,7 @@ Common causes:
1125
1132
 
1126
1133
  Common causes:
1127
1134
 
1128
- - `Bot Id` is not a real UUID
1135
+ - `Bot Id` does not match the real Pinto `bot_id`
1129
1136
  - `chat_id` belongs to a different environment
1130
1137
  - The payload sent to `POST /v1/bots/webhook/receive` does not match Pinto backend expectations
1131
1138
 
package/dist/channel.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { ChannelPlugin, RuntimeEnv } from "openclaw/plugin-sdk/mattermost";
1
+ import type { ChannelPlugin, PluginRuntime as RuntimeEnv } from "openclaw/plugin-sdk/core";
2
2
  export declare const setPintoRuntime: (r: RuntimeEnv) => void;
3
3
  export declare const buildDefaultPintoChannelConfig: () => {
4
4
  enabled: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../src/channel.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,aAAa,EACb,UAAU,EACX,MAAM,gCAAgC,CAAC;AAkBxC,eAAO,MAAM,eAAe,GAAI,GAAG,UAAU,SAE5C,CAAC;AAgEF,eAAO,MAAM,8BAA8B;;;;;;;CAOzC,CAAC;AAwLH,eAAO,MAAM,WAAW,EAAE,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG;IAAE,YAAY,CAAC,EAAE,GAAG,CAAA;CA6XvE,CAAC"}
1
+ {"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../src/channel.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,aAAa,EACb,aAAa,IAAI,UAAU,EAC5B,MAAM,0BAA0B,CAAC;AAiBlC,eAAO,MAAM,eAAe,GAAI,GAAG,UAAU,SAE5C,CAAC;AAiEF,eAAO,MAAM,8BAA8B;;;;;;;CAOzC,CAAC;AAkkBH,eAAO,MAAM,WAAW,EAAE,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG;IAAE,YAAY,CAAC,EAAE,GAAG,CAAA;CAyYvE,CAAC"}
package/dist/channel.js CHANGED
@@ -1,6 +1,7 @@
1
- import { randomBytes } from "node:crypto";
2
- import { DEFAULT_ACCOUNT_ID, applySetupAccountConfigPatch, buildChannelConfigSchema, registerPluginHttpRoute, setAccountEnabledInConfigSection, } from "openclaw/plugin-sdk/mattermost";
3
- import { z } from "zod";
1
+ import { DEFAULT_ACCOUNT_ID, buildChannelConfigSchema, setAccountEnabledInConfigSection, } from "openclaw/plugin-sdk/core";
2
+ import { applySetupAccountConfigPatch } from "openclaw/plugin-sdk/setup";
3
+ import { registerPluginHttpRoute } from "openclaw/plugin-sdk/webhook-ingress";
4
+ import { z } from "openclaw/plugin-sdk/zod";
4
5
  const stripTrailingSlash = (url) => url.replace(/\/+$/, "");
5
6
  const PINTO_SECRET_HEADER = "x-pinto-secret";
6
7
  const DEFAULT_PINTO_API_URL = "https://api.pinto-app.com";
@@ -43,10 +44,11 @@ const PintoChannelConfigSchema = z.preprocess((raw) => {
43
44
  delete value.webhookHeaderValue;
44
45
  return value;
45
46
  }, PintoAccountConfigSchema.extend({
46
- accounts: z.record(z.string(), PintoAccountConfigSchema.optional()).optional(),
47
+ accounts: z
48
+ .record(z.string(), PintoAccountConfigSchema.optional())
49
+ .optional(),
47
50
  defaultAccount: z.string().trim().min(1).optional(),
48
51
  }));
49
- const generatePintoWebhookSecret = () => `pinto-oc-${randomBytes(12).toString("hex")}`;
50
52
  const normalizeWebhookSecret = (value) => {
51
53
  if (typeof value === "string") {
52
54
  const trimmed = value.trim();
@@ -66,7 +68,7 @@ export const buildDefaultPintoChannelConfig = () => ({
66
68
  apiUrl: DEFAULT_PINTO_API_URL,
67
69
  botId: "",
68
70
  agentId: "",
69
- webhookSecret: generatePintoWebhookSecret(),
71
+ webhookSecret: "",
70
72
  webhookPath: DEFAULT_PINTO_WEBHOOK_PATH,
71
73
  });
72
74
  const getRawPintoChannelConfig = (cfg) => cfg?.channels?.pinto ?? {};
@@ -119,6 +121,20 @@ const getPintoChannelConfig = (cfg, accountId) => {
119
121
  ...merged,
120
122
  };
121
123
  };
124
+ const findPintoAccountByBotId = (cfg, botId) => {
125
+ const targetBotId = botId.trim();
126
+ if (!targetBotId)
127
+ return null;
128
+ for (const accountId of listPintoAccountIds(cfg)) {
129
+ const account = getPintoChannelConfig(cfg, accountId);
130
+ if (account?.enabled === false)
131
+ continue;
132
+ if (account?.botId?.trim() === targetBotId) {
133
+ return { accountId, account };
134
+ }
135
+ }
136
+ return null;
137
+ };
122
138
  const buildPintoHeaders = (webhookSecret) => {
123
139
  const headers = {
124
140
  "Content-Type": "application/json",
@@ -152,6 +168,234 @@ const normalizeObserverAgentIds = (value) => {
152
168
  .filter(Boolean);
153
169
  return normalized.length ? Array.from(new Set(normalized)) : undefined;
154
170
  };
171
+ const normalizePintoImageUrl = (value) => {
172
+ if (typeof value !== "string") {
173
+ return undefined;
174
+ }
175
+ const trimmed = value.trim();
176
+ return trimmed || undefined;
177
+ };
178
+ const PINTO_DIRECT_IMAGE_URL_KEYS = [
179
+ "image_url",
180
+ "imageUrl",
181
+ "media_url",
182
+ "mediaUrl",
183
+ "MediaUrl",
184
+ "url",
185
+ ];
186
+ const PINTO_NESTED_IMAGE_URL_KEYS = [
187
+ ...PINTO_DIRECT_IMAGE_URL_KEYS,
188
+ "file_url",
189
+ "fileUrl",
190
+ "download_url",
191
+ "downloadUrl",
192
+ "href",
193
+ "src",
194
+ ];
195
+ const PINTO_MEDIA_CONTAINER_KEYS = [
196
+ "attachment",
197
+ "attachments",
198
+ "file",
199
+ "files",
200
+ "image",
201
+ "images",
202
+ "media",
203
+ "medias",
204
+ ];
205
+ const PINTO_SENSITIVE_LOG_KEY_PATTERN = /(authorization|credential|password|secret|signature|token|webhook_secret|api[-_]?key)/i;
206
+ const PINTO_URL_LOG_KEY_PATTERN = /(href|src|uri|url)$/i;
207
+ const sanitizePintoLogString = (value, key) => {
208
+ const trimmed = value.length > 500 ? `${value.slice(0, 500)}...` : value;
209
+ if (!key || !PINTO_URL_LOG_KEY_PATTERN.test(key)) {
210
+ return trimmed;
211
+ }
212
+ try {
213
+ const parsed = new URL(value);
214
+ const query = parsed.search ? "?[redacted-query]" : "";
215
+ const hash = parsed.hash ? "#[redacted-fragment]" : "";
216
+ return `${parsed.origin}${parsed.pathname}${query}${hash}`;
217
+ }
218
+ catch {
219
+ return trimmed;
220
+ }
221
+ };
222
+ const resolvePintoImageUrlFromValue = (value, source, depth = 0) => {
223
+ if (depth > 5) {
224
+ return undefined;
225
+ }
226
+ const stringUrl = normalizePintoImageUrl(value);
227
+ if (stringUrl) {
228
+ return { url: stringUrl, source };
229
+ }
230
+ if (Array.isArray(value)) {
231
+ for (const [index, item] of value.entries()) {
232
+ const resolved = resolvePintoImageUrlFromValue(item, `${source}[${index}]`, depth + 1);
233
+ if (resolved) {
234
+ return resolved;
235
+ }
236
+ }
237
+ return undefined;
238
+ }
239
+ if (!value || typeof value !== "object") {
240
+ return undefined;
241
+ }
242
+ const record = value;
243
+ for (const key of PINTO_NESTED_IMAGE_URL_KEYS) {
244
+ const resolved = resolvePintoImageUrlFromValue(record[key], `${source}.${key}`, depth + 1);
245
+ if (resolved) {
246
+ return resolved;
247
+ }
248
+ }
249
+ for (const key of PINTO_MEDIA_CONTAINER_KEYS) {
250
+ const resolved = resolvePintoImageUrlFromValue(record[key], `${source}.${key}`, depth + 1);
251
+ if (resolved) {
252
+ return resolved;
253
+ }
254
+ }
255
+ return undefined;
256
+ };
257
+ const resolvePintoInboundImageUrl = (payload) => {
258
+ const record = payload;
259
+ for (const key of PINTO_DIRECT_IMAGE_URL_KEYS) {
260
+ const resolved = resolvePintoImageUrlFromValue(record[key], key);
261
+ if (resolved) {
262
+ return resolved;
263
+ }
264
+ }
265
+ for (const key of PINTO_MEDIA_CONTAINER_KEYS) {
266
+ const resolved = resolvePintoImageUrlFromValue(record[key], key);
267
+ if (resolved) {
268
+ return resolved;
269
+ }
270
+ }
271
+ return undefined;
272
+ };
273
+ const sanitizePintoWebhookPayloadForLog = (value, depth = 0, key) => {
274
+ if (depth > 5) {
275
+ return "[max-depth]";
276
+ }
277
+ if (typeof value === "string") {
278
+ return sanitizePintoLogString(value, key);
279
+ }
280
+ if (Array.isArray(value)) {
281
+ const sanitized = value
282
+ .slice(0, 20)
283
+ .map((item) => sanitizePintoWebhookPayloadForLog(item, depth + 1, key));
284
+ return value.length > 20
285
+ ? [...sanitized, `[${value.length - 20} more items]`]
286
+ : sanitized;
287
+ }
288
+ if (!value || typeof value !== "object") {
289
+ return value;
290
+ }
291
+ const sanitized = {};
292
+ for (const [key, item] of Object.entries(value)) {
293
+ sanitized[key] = PINTO_SENSITIVE_LOG_KEY_PATTERN.test(key)
294
+ ? "[redacted]"
295
+ : sanitizePintoWebhookPayloadForLog(item, depth + 1, key);
296
+ }
297
+ return sanitized;
298
+ };
299
+ const logPintoWebhookPayload = (log, payload, imageUrl) => {
300
+ const record = payload;
301
+ const keys = Object.keys(record).sort();
302
+ const isImageEvent = payload.message === "chat.sentImage" ||
303
+ payload.image_url !== undefined ||
304
+ payload.imageUrl !== undefined ||
305
+ payload.media_url !== undefined ||
306
+ payload.mediaUrl !== undefined ||
307
+ payload.attachment !== undefined ||
308
+ payload.attachments !== undefined ||
309
+ payload.file !== undefined ||
310
+ payload.files !== undefined ||
311
+ payload.image !== undefined ||
312
+ payload.images !== undefined ||
313
+ payload.media !== undefined ||
314
+ payload.medias !== undefined;
315
+ log?.debug?.(`[PintoPlugin] Webhook payload keys: ${keys.join(", ") || "(none)"}`);
316
+ if (!isImageEvent) {
317
+ return;
318
+ }
319
+ const sanitizedPayload = JSON.stringify(sanitizePintoWebhookPayloadForLog(payload));
320
+ if (imageUrl) {
321
+ log?.info?.(`[PintoPlugin] Inbound image URL resolved from ${imageUrl.source}. Payload: ${sanitizedPayload}`);
322
+ return;
323
+ }
324
+ log?.warn?.(`[PintoPlugin] Inbound image payload has no supported media URL. Payload keys: ${keys.join(", ") || "(none)"}. Payload: ${sanitizedPayload}`);
325
+ };
326
+ const inferPintoImageMimeType = (imageUrl) => {
327
+ let pathname = imageUrl;
328
+ try {
329
+ pathname = new URL(imageUrl).pathname;
330
+ }
331
+ catch {
332
+ pathname = imageUrl.split(/[?#]/, 1)[0] ?? imageUrl;
333
+ }
334
+ const extension = pathname.toLowerCase().match(/\.([a-z0-9]+)$/)?.[1];
335
+ switch (extension) {
336
+ case "jpg":
337
+ case "jpeg":
338
+ return "image/jpeg";
339
+ case "png":
340
+ return "image/png";
341
+ case "webp":
342
+ return "image/webp";
343
+ case "gif":
344
+ return "image/gif";
345
+ case "heic":
346
+ return "image/heic";
347
+ case "heif":
348
+ return "image/heif";
349
+ case "bmp":
350
+ return "image/bmp";
351
+ case "tif":
352
+ case "tiff":
353
+ return "image/tiff";
354
+ default:
355
+ return undefined;
356
+ }
357
+ };
358
+ const buildPintoImageMediaContext = (imageUrlValue) => {
359
+ const imageUrl = normalizePintoImageUrl(imageUrlValue);
360
+ if (!imageUrl) {
361
+ return {};
362
+ }
363
+ const mediaType = inferPintoImageMimeType(imageUrl) ?? "image/*";
364
+ return {
365
+ MediaUrl: imageUrl,
366
+ MediaUrls: [imageUrl],
367
+ MediaType: mediaType,
368
+ MediaTypes: [mediaType],
369
+ };
370
+ };
371
+ const stripPintoPrefix = (id) => id.replace(/^pinto:/, "");
372
+ const buildPintoApiError = async (res) => {
373
+ const detail = await res
374
+ .text()
375
+ .then((body) => body.trim())
376
+ .catch(() => "");
377
+ const detailSuffix = detail ? `: ${detail}` : "";
378
+ return `Pinto API error: ${res.status} ${res.statusText}${detailSuffix}`;
379
+ };
380
+ const resolvePintoReplyText = (payload) => {
381
+ const text = typeof payload.text === "string"
382
+ ? payload.text
383
+ : typeof payload.body === "string"
384
+ ? payload.body
385
+ : "";
386
+ const trimmed = text.trim();
387
+ return trimmed || undefined;
388
+ };
389
+ const resolvePintoReplyMediaUrls = (payload) => {
390
+ const mediaUrls = Array.isArray(payload.mediaUrls)
391
+ ? payload.mediaUrls
392
+ : payload.mediaUrl
393
+ ? [payload.mediaUrl]
394
+ : [];
395
+ return mediaUrls
396
+ .map((mediaUrl) => (typeof mediaUrl === "string" ? mediaUrl.trim() : ""))
397
+ .filter(Boolean);
398
+ };
155
399
  async function sendPintoText(params) {
156
400
  const account = getPintoChannelConfig(params.cfg, params.accountId);
157
401
  const apiUrl = stripTrailingSlash(account?.apiUrl ?? "https://api-dev.pinto-app.com");
@@ -162,7 +406,7 @@ async function sendPintoText(params) {
162
406
  }
163
407
  const payload = {
164
408
  bot_id: botId,
165
- chat_id: params.to,
409
+ chat_id: stripPintoPrefix(params.to),
166
410
  reply_message: params.text,
167
411
  };
168
412
  const res = await fetch(`${apiUrl}/v1/bots/webhook/receive`, {
@@ -171,10 +415,59 @@ async function sendPintoText(params) {
171
415
  body: JSON.stringify(payload),
172
416
  });
173
417
  if (!res.ok) {
174
- throw new Error(`Pinto API error: ${res.status} ${res.statusText}`);
418
+ throw new Error(await buildPintoApiError(res));
175
419
  }
176
420
  return { channel: "pinto", messageId: Date.now().toString() };
177
421
  }
422
+ async function sendPintoMedia(params) {
423
+ const account = getPintoChannelConfig(params.cfg, params.accountId);
424
+ const apiUrl = stripTrailingSlash(account?.apiUrl ?? "https://api-dev.pinto-app.com");
425
+ const botId = account?.botId?.trim();
426
+ const webhookSecret = normalizeWebhookSecret(account?.webhookSecret);
427
+ if (!botId) {
428
+ throw new Error("Pinto botId is not configured");
429
+ }
430
+ const payload = {
431
+ bot_id: botId,
432
+ chat_id: stripPintoPrefix(params.to),
433
+ reply_message: params.text ?? "",
434
+ media_url: params.mediaUrl,
435
+ };
436
+ const res = await fetch(`${apiUrl}/v1/bots/webhook/receive`, {
437
+ method: "POST",
438
+ headers: buildPintoHeaders(webhookSecret),
439
+ body: JSON.stringify(payload),
440
+ });
441
+ if (!res.ok) {
442
+ throw new Error(await buildPintoApiError(res));
443
+ }
444
+ return { channel: "pinto", messageId: Date.now().toString() };
445
+ }
446
+ async function deliverPintoReplyPayload(params) {
447
+ const text = resolvePintoReplyText(params.payload);
448
+ const mediaUrls = resolvePintoReplyMediaUrls(params.payload);
449
+ if (mediaUrls.length > 0) {
450
+ for (const [index, mediaUrl] of mediaUrls.entries()) {
451
+ await sendPintoMedia({
452
+ cfg: params.cfg,
453
+ accountId: params.accountId,
454
+ to: params.to,
455
+ text: index === 0 ? text : undefined,
456
+ mediaUrl,
457
+ });
458
+ }
459
+ return;
460
+ }
461
+ if (!text) {
462
+ return;
463
+ }
464
+ await sendPintoText({
465
+ cfg: params.cfg,
466
+ accountId: params.accountId,
467
+ to: params.to,
468
+ text,
469
+ });
470
+ }
178
471
  const waitUntilAbort = (signal, onAbort) => new Promise((resolve) => {
179
472
  const complete = () => {
180
473
  onAbort?.();
@@ -218,10 +511,10 @@ export const pintoPlugin = {
218
511
  const warnings = [];
219
512
  const webhookPath = normalizeWebhookPath(account?.config?.webhookPath);
220
513
  if (!account?.config?.botId?.trim()) {
221
- warnings.push("Pinto botId is not configured. Set channels.pinto.botId to your real Pinto bot UUID.");
514
+ warnings.push("Pinto botId is not configured. Set channels.pinto.botId to the real Pinto bot id.");
222
515
  }
223
516
  if (!normalizeWebhookSecret(account?.config?.webhookSecret)) {
224
- warnings.push("Pinto webhookSecret is empty. Set channels.pinto.webhookSecret or let setup generate one.");
517
+ warnings.push("Pinto webhookSecret is empty. Set channels.pinto.webhookSecret if you want webhook secret validation.");
225
518
  }
226
519
  if (webhookPath !== (account?.config?.webhookPath?.trim() || webhookPath)) {
227
520
  warnings.push(`Pinto webhookPath should start with '/'. Use ${webhookPath} as channels.pinto.webhookPath.`);
@@ -261,7 +554,7 @@ export const pintoPlugin = {
261
554
  : {}),
262
555
  webhookSecret: (inputWebhookSecret ? input.webhookSecret : undefined) ||
263
556
  (resolvedWebhookSecret ? resolved.webhookSecret : undefined) ||
264
- generatePintoWebhookSecret(),
557
+ "",
265
558
  webhookPath: nextWebhookPath,
266
559
  },
267
560
  });
@@ -274,6 +567,15 @@ export const pintoPlugin = {
274
567
  reactions: false,
275
568
  threads: false,
276
569
  },
570
+ agentPrompt: {
571
+ messageToolHints: () => [
572
+ "",
573
+ "### Pinto Reply Behavior",
574
+ "- For an inbound Pinto chat, reply with normal assistant text. The Pinto plugin automatically sends your final reply back to the current Pinto chat.",
575
+ "- Do not call the Pinto API, include `bot_id`/`chat_id` JSON, or explain webhook delivery unless the user asks about integration details.",
576
+ "- Keep Pinto replies concise and conversational. If you include media, use a public `mediaUrl`/`mediaUrls` payload when the channel tooling supports it.",
577
+ ],
578
+ },
277
579
  config: {
278
580
  listAccountIds: (cfg) => listPintoAccountIds(cfg),
279
581
  defaultAccountId: (cfg) => resolveDefaultPintoAccountId(cfg),
@@ -320,28 +622,10 @@ export const pintoPlugin = {
320
622
  deliveryMode: "direct",
321
623
  sendText: async ({ to, text, accountId, cfg }) => sendPintoText({ cfg, accountId, to, text }),
322
624
  sendMedia: async ({ to, text, mediaUrl, accountId, cfg }) => {
323
- const account = getPintoChannelConfig(cfg, accountId);
324
- const apiUrl = stripTrailingSlash(account?.apiUrl ?? "https://api-dev.pinto-app.com");
325
- const botId = account?.botId?.trim();
326
- const webhookSecret = normalizeWebhookSecret(account?.webhookSecret);
327
- if (!botId) {
328
- throw new Error("Pinto botId is not configured");
329
- }
330
- const payload = {
331
- bot_id: botId,
332
- chat_id: to,
333
- reply_message: text,
334
- media_url: mediaUrl,
335
- };
336
- const res = await fetch(`${apiUrl}/v1/bots/webhook/receive`, {
337
- method: "POST",
338
- headers: buildPintoHeaders(webhookSecret),
339
- body: JSON.stringify(payload),
340
- });
341
- if (!res.ok) {
342
- throw new Error(`Pinto API error: ${res.status} ${res.statusText}`);
625
+ if (!mediaUrl) {
626
+ throw new Error("Pinto mediaUrl is not configured");
343
627
  }
344
- return { channel: "pinto", messageId: Date.now().toString() };
628
+ return sendPintoMedia({ cfg, accountId, to, text, mediaUrl });
345
629
  },
346
630
  },
347
631
  gateway: {
@@ -374,11 +658,10 @@ export const pintoPlugin = {
374
658
  res.end(JSON.stringify({ ok: true, channel: "pinto" }));
375
659
  return true;
376
660
  }
377
- const configuredSecret = normalizeWebhookSecret(account?.webhookSecret);
378
- const inboundSecret = getRequestHeader(req, PINTO_SECRET_HEADER);
379
- if (configuredSecret && inboundSecret !== configuredSecret) {
380
- res.statusCode = 401;
381
- res.end(JSON.stringify({ error: "Invalid webhook secret" }));
661
+ if (req.method !== "POST") {
662
+ res.statusCode = 405;
663
+ res.setHeader?.("Content-Type", "application/json");
664
+ res.end(JSON.stringify({ error: "Method Not Allowed" }));
382
665
  return true;
383
666
  }
384
667
  const payload = await readJsonBody(req);
@@ -387,46 +670,67 @@ export const pintoPlugin = {
387
670
  res.end(JSON.stringify({ error: "Missing required fields" }));
388
671
  return true;
389
672
  }
390
- if (payload.bot_id !== configuredBotId) {
673
+ const matched = findPintoAccountByBotId(ctx.cfg, payload.bot_id);
674
+ if (!matched) {
391
675
  res.statusCode = 403;
392
- res.end(JSON.stringify({ error: "Invalid bot_id for this account" }));
676
+ res.end(JSON.stringify({
677
+ error: "Invalid bot_id for configured Pinto accounts",
678
+ }));
679
+ return true;
680
+ }
681
+ const targetAccountId = matched.accountId;
682
+ const targetAccount = matched.account;
683
+ const targetBotId = targetAccount?.botId?.trim();
684
+ const targetAgentId = targetAccount?.agentId?.trim();
685
+ const targetObserverAgentIds = normalizeObserverAgentIds(targetAccount?.observerAgentIds)?.filter((agentId) => agentId !== targetAgentId) || [];
686
+ const configuredSecret = normalizeWebhookSecret(targetAccount?.webhookSecret);
687
+ const inboundSecret = getRequestHeader(req, PINTO_SECRET_HEADER);
688
+ if (configuredSecret && inboundSecret !== configuredSecret) {
689
+ res.statusCode = 401;
690
+ res.end(JSON.stringify({ error: "Invalid webhook secret" }));
393
691
  return true;
394
692
  }
395
693
  ctx.setStatus?.({
396
- accountId: ctx.accountId,
397
- configuredBotId,
398
- configuredAgentId: configuredAgentId || null,
399
- configuredObserverAgentIds: observerAgentIds,
694
+ accountId: targetAccountId,
695
+ configuredBotId: targetBotId,
696
+ configuredAgentId: targetAgentId || null,
697
+ configuredObserverAgentIds: targetObserverAgentIds,
400
698
  webhookPath,
401
699
  lastInboundAt: Date.now(),
402
700
  });
701
+ const inboundImageUrl = resolvePintoInboundImageUrl(payload);
702
+ logPintoWebhookPayload(ctx.log, payload, inboundImageUrl);
403
703
  const peer = { kind: "direct", id: payload.chat_id };
404
- const route = configuredAgentId
704
+ const route = targetAgentId
405
705
  ? {
406
- accountId: ctx.accountId,
706
+ accountId: targetAccountId,
407
707
  sessionKey: ctx.channelRuntime.routing.buildAgentSessionKey({
408
- agentId: configuredAgentId,
708
+ agentId: targetAgentId,
409
709
  channel: "pinto",
410
- accountId: ctx.accountId,
710
+ accountId: targetAccountId,
411
711
  peer,
412
712
  }),
413
713
  }
414
714
  : ctx.channelRuntime.routing.resolveAgentRoute({
415
715
  cfg: ctx.cfg,
416
716
  channel: "pinto",
417
- accountId: ctx.accountId,
717
+ accountId: targetAccountId,
418
718
  peer,
419
719
  });
420
720
  const buildMsgCtx = (sessionKey, accountId) => ctx.channelRuntime.reply.finalizeInboundContext({
421
721
  Body: payload.message ?? "",
722
+ BodyForAgent: payload.message ?? "",
422
723
  RawBody: payload.message ?? "",
423
724
  CommandBody: payload.message ?? "",
725
+ BodyForCommands: payload.message ?? "",
726
+ ...buildPintoImageMediaContext(inboundImageUrl?.url),
424
727
  From: `pinto:${payload.user_id ?? payload.chat_id}`,
425
728
  To: `pinto:${payload.chat_id}`,
426
729
  SessionKey: sessionKey,
427
730
  AccountId: accountId,
428
731
  OriginatingChannel: "pinto",
429
732
  OriginatingTo: `pinto:${payload.chat_id}`,
733
+ ExplicitDeliverRoute: true,
430
734
  ChatType: "direct",
431
735
  SenderName: payload.username ?? payload.user_id ?? payload.chat_id,
432
736
  SenderId: payload.user_id ?? payload.chat_id,
@@ -437,14 +741,14 @@ export const pintoPlugin = {
437
741
  CommandAuthorized: true,
438
742
  });
439
743
  const msgCtx = buildMsgCtx(route.sessionKey, route.accountId);
440
- for (const observerAgentId of observerAgentIds) {
744
+ for (const observerAgentId of targetObserverAgentIds) {
441
745
  const observerSessionKey = ctx.channelRuntime.routing.buildAgentSessionKey({
442
746
  agentId: observerAgentId,
443
747
  channel: "pinto",
444
- accountId: ctx.accountId,
748
+ accountId: targetAccountId,
445
749
  peer,
446
750
  });
447
- const observerCtx = buildMsgCtx(observerSessionKey, ctx.accountId);
751
+ const observerCtx = buildMsgCtx(observerSessionKey, targetAccountId);
448
752
  // Observer agents share the inbound context but never reply back to Pinto.
449
753
  void ctx.channelRuntime.reply
450
754
  .dispatchReplyWithBufferedBlockDispatcher({
@@ -463,14 +767,11 @@ export const pintoPlugin = {
463
767
  cfg: ctx.cfg,
464
768
  dispatcherOptions: {
465
769
  deliver: async (replyPayload) => {
466
- const text = replyPayload?.text ?? replyPayload?.body;
467
- if (!text)
468
- return;
469
- await sendPintoText({
770
+ await deliverPintoReplyPayload({
470
771
  cfg: ctx.cfg,
471
- accountId: ctx.accountId,
772
+ accountId: targetAccountId,
472
773
  to: payload.chat_id,
473
- text,
774
+ payload: replyPayload,
474
775
  });
475
776
  },
476
777
  },
@@ -1 +1 @@
1
- {"version":3,"file":"channel.js","sourceRoot":"","sources":["../src/channel.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"channel.js","sourceRoot":"","sources":["../src/channel.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { OpenClawPluginApi } from "openclaw/plugin-sdk/mattermost";
1
+ import type { OpenClawPluginApi } from "openclaw/plugin-sdk/core";
2
2
  declare const plugin: {
3
3
  id: string;
4
4
  name: string;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAOxE,QAAA,MAAM,MAAM;;;;kBAKI,iBAAiB;CA6ChC,CAAC;AAEF,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAOlE,QAAA,MAAM,MAAM;;;;kBAKI,iBAAiB;CA6ChC,CAAC;AAEF,eAAe,MAAM,CAAC"}
package/dist/types.d.ts CHANGED
@@ -6,6 +6,18 @@ export interface PintoWebhookPayload {
6
6
  username?: string;
7
7
  message: string;
8
8
  image_url?: string;
9
+ imageUrl?: string;
10
+ media_url?: string;
11
+ mediaUrl?: string;
12
+ url?: string;
13
+ attachment?: unknown;
14
+ attachments?: unknown;
15
+ file?: unknown;
16
+ files?: unknown;
17
+ image?: unknown;
18
+ images?: unknown;
19
+ media?: unknown;
20
+ medias?: unknown;
9
21
  chat_id: string;
10
22
  bot_id: string;
11
23
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B"}
@@ -1,14 +1,88 @@
1
1
  {
2
- "id": "pinto-app-openclaw",
3
- "name": "Pinto Chat",
4
- "description": "Integration with Pinto Chat API",
5
- "version": "1.3.18",
6
- "channels": [
7
- "pinto"
8
- ],
9
- "configSchema": {
2
+ "id": "pinto-app-openclaw",
3
+ "name": "Pinto Chat",
4
+ "description": "Integration with Pinto Chat API",
5
+ "version": "1.3.18",
6
+ "channels": [
7
+ "pinto"
8
+ ],
9
+ "channelConfigs": {
10
+ "pinto": {
11
+ "label": "Pinto Chat",
12
+ "selectionLabel": "Pinto (Chat Bot)",
13
+ "blurb": "Pinto App Thailand",
14
+ "schema": {
15
+ "$schema": "http://json-schema.org/draft-07/schema#",
10
16
  "type": "object",
11
17
  "additionalProperties": false,
12
- "properties": {}
18
+ "properties": {
19
+ "enabled": { "type": "boolean" },
20
+ "apiUrl": { "type": "string" },
21
+ "botId": { "type": "string" },
22
+ "agentId": { "type": "string" },
23
+ "observerAgentIds": {
24
+ "type": "array",
25
+ "items": { "type": "string" }
26
+ },
27
+ "webhookSecret": {
28
+ "anyOf": [
29
+ { "type": "string" },
30
+ {
31
+ "type": "object",
32
+ "additionalProperties": false,
33
+ "properties": {
34
+ "source": { "type": "string" },
35
+ "provider": { "type": "string" },
36
+ "id": { "type": "string" },
37
+ "value": { "type": "string" }
38
+ }
39
+ }
40
+ ]
41
+ },
42
+ "webhookHeaderValue": { "type": "string" },
43
+ "webhookPath": { "type": "string" },
44
+ "defaultAccount": { "type": "string" },
45
+ "accounts": {
46
+ "type": "object",
47
+ "additionalProperties": {
48
+ "type": "object",
49
+ "additionalProperties": false,
50
+ "properties": {
51
+ "enabled": { "type": "boolean" },
52
+ "apiUrl": { "type": "string" },
53
+ "botId": { "type": "string" },
54
+ "agentId": { "type": "string" },
55
+ "observerAgentIds": {
56
+ "type": "array",
57
+ "items": { "type": "string" }
58
+ },
59
+ "webhookSecret": {
60
+ "anyOf": [
61
+ { "type": "string" },
62
+ {
63
+ "type": "object",
64
+ "additionalProperties": false,
65
+ "properties": {
66
+ "source": { "type": "string" },
67
+ "provider": { "type": "string" },
68
+ "id": { "type": "string" },
69
+ "value": { "type": "string" }
70
+ }
71
+ }
72
+ ]
73
+ },
74
+ "webhookHeaderValue": { "type": "string" },
75
+ "webhookPath": { "type": "string" }
76
+ }
77
+ }
78
+ }
79
+ }
80
+ }
13
81
  }
14
- }
82
+ },
83
+ "configSchema": {
84
+ "type": "object",
85
+ "additionalProperties": false,
86
+ "properties": {}
87
+ }
88
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pinto-app-openclaw",
3
- "version": "1.3.18",
3
+ "version": "1.3.21",
4
4
  "description": "OpenClaw Channel Plugin for Pinto Chat",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -50,12 +50,10 @@
50
50
  "test:watch": "vitest",
51
51
  "prepare": "npm run build"
52
52
  },
53
- "dependencies": {
54
- "zod": "^4.3.6"
55
- },
53
+ "dependencies": {},
56
54
  "devDependencies": {
57
55
  "@types/node": "^20.11.0",
58
- "openclaw": "2026.3.24",
56
+ "openclaw": "^2026.6.5",
59
57
  "tsx": "^4.7.0",
60
58
  "typescript": "^5.4.0",
61
59
  "vitest": "^1.6.0"
@@ -63,4 +61,4 @@
63
61
  "peerDependencies": {
64
62
  "openclaw": ">=2026.0.0"
65
63
  }
66
- }
64
+ }