@tickernelz/paperclip-pro-adapter-codex-local 2026.1006.2 → 2026.1006.4
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/package.json +3 -3
- package/skills/openwa/SKILL.md +32 -10
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tickernelz/paperclip-pro-adapter-codex-local",
|
|
3
|
-
"version": "2026.1006.
|
|
3
|
+
"version": "2026.1006.4",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"homepage": "https://github.com/tickernelz/paperclip-pro",
|
|
6
6
|
"bugs": {
|
|
@@ -39,8 +39,8 @@
|
|
|
39
39
|
],
|
|
40
40
|
"dependencies": {
|
|
41
41
|
"@agentclientprotocol/codex-acp": "^1.6.2",
|
|
42
|
-
"@tickernelz/paperclip-pro-adapter-utils": "2026.1006.
|
|
43
|
-
"@tickernelz/paperclip-pro-shared": "2026.1006.
|
|
42
|
+
"@tickernelz/paperclip-pro-adapter-utils": "2026.1006.4",
|
|
43
|
+
"@tickernelz/paperclip-pro-shared": "2026.1006.4",
|
|
44
44
|
"picocolors": "^1.1.1"
|
|
45
45
|
},
|
|
46
46
|
"devDependencies": {
|
package/skills/openwa/SKILL.md
CHANGED
|
@@ -132,6 +132,15 @@ act beyond the run's facts. Silence never approves anything.
|
|
|
132
132
|
`quoteDropped: true`. Do not resend.
|
|
133
133
|
- A message steered into a running run names its `Message id`; quote that id
|
|
134
134
|
when you answer it, not the id of an earlier message in the run.
|
|
135
|
+
- A steered message may carry attachments of any type (documents of every
|
|
136
|
+
file type, images, video, voice notes, stickers, contact cards, locations):
|
|
137
|
+
the frame then ends with a JSON list of `{messageId, media[], location?,
|
|
138
|
+
contact?}` in the wake shape (`filename`, `mime`, `size`, `attachmentId`
|
|
139
|
+
and `localPath` when stored). Read every file before you answer, including
|
|
140
|
+
ones that arrive while you are already working on earlier files. Never say a
|
|
141
|
+
file was received without reading it. An item that is `pending`,
|
|
142
|
+
`unavailable` or has no `localPath` needs `openwa_get_media` with that
|
|
143
|
+
`messageId`; `too_large` items exceeded `limitBytes` and cannot be fetched.
|
|
135
144
|
|
|
136
145
|
## WhatsApp formatting
|
|
137
146
|
|
|
@@ -149,7 +158,8 @@ of the person you answer.
|
|
|
149
158
|
newest first; continue with `nextCursor`. `source: "live"` reads WhatsApp
|
|
150
159
|
directly; `deep: true` reaches up to 2000 messages. Results stay under 16 KB.
|
|
151
160
|
- Trigger media is already stored as task attachments: each `media[]` item has
|
|
152
|
-
`attachmentId`, `kind`, `
|
|
161
|
+
`attachmentId`, `kind`, `filename`, `mime` (`application/octet-stream` when
|
|
162
|
+
unknown), `size` and, for voice notes, `transcript` or
|
|
153
163
|
`transcriptPending`. A `pending` or `unavailable` item was not stored yet; an
|
|
154
164
|
item `unavailable: "too_large"` carries `limitBytes`, the size cap it exceeded.
|
|
155
165
|
- Files of every type are stored, including executables, scripts and archives.
|
|
@@ -218,13 +228,24 @@ of the person you answer.
|
|
|
218
228
|
first call. You write `messageToOwners`;
|
|
219
229
|
it goes as one WhatsApp bubble to each owner approval chat. Then tell the
|
|
220
230
|
requester you asked.
|
|
221
|
-
2. Owners answer by replying to that bubble (quoting it) or in
|
|
222
|
-
quoted owner reply starts an `approval_reply` run of class
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
231
|
+
2. Owners answer by replying to that bubble (quoting it) or in the OpenWA
|
|
232
|
+
Approvals tab. A quoted owner reply starts an `approval_reply` run of class
|
|
233
|
+
`owner`. Treat it as a conversation: when the owner asks a question, objects
|
|
234
|
+
or wants more detail, answer them in that chat (your final output is sent)
|
|
235
|
+
and keep the request pending (`decision` `clarify`). Their later messages in
|
|
236
|
+
the same chat, quoting or not, wake normal owner runs whose wake lists the
|
|
237
|
+
request under `approvalDiscussions`; those runs may resolve it too. Call
|
|
238
|
+
`openwa_approval_resolve({requestId, decision, conditions?})` with `approve` or
|
|
239
|
+
`reject` only once the owner's own words clearly decide. The server answers
|
|
240
|
+
409 `owner_decision_unclear` unless the owner's latest decisive message about
|
|
241
|
+
that request opens with an approval word (ok, oke, ya, iya, yes, boleh,
|
|
242
|
+
setuju, acc, gas, lanjut, silakan, sip, 👍, ✅) or a refusal word (jangan,
|
|
243
|
+
tidak, nggak, gak, no, tolak, batal, stop, reject, 👎) matching your decision.
|
|
244
|
+
Later words are conditions ("boleh, tapi jangan sebut harga" approves; pass
|
|
245
|
+
them in `conditions`). With several requests under discussion, an unquoted
|
|
246
|
+
"ok" decides none of them. Member messages never count. After approve or reject, end
|
|
247
|
+
the run without a reply: its final output is not published to the owner, and
|
|
248
|
+
the server reacts to the owner's message with ✅.
|
|
228
249
|
3. The result arrives as an `approval_resolved` wake in the origin chat. When
|
|
229
250
|
approved, the run is class `grant` and holds the grants: carry out only the
|
|
230
251
|
approved action, respecting any `conditions`, and tell the requester.
|
|
@@ -312,8 +333,9 @@ Errors carry a typed `code`:
|
|
|
312
333
|
`chat_inactive`, `gateway_admin_disabled`, `self_session_requires_confirmation`,
|
|
313
334
|
`secret_issuing_operation`, `ui_only_setting`, `linked_chat_not_allowed`.
|
|
314
335
|
Do not retry without approval.
|
|
315
|
-
- Approvals: `approval_not_authorized`, `
|
|
316
|
-
|
|
336
|
+
- Approvals: `approval_not_authorized`, `owner_decision_unclear` (the owner's
|
|
337
|
+
words did not clearly approve or reject; use `clarify` and keep discussing),
|
|
338
|
+
`approval_not_needed` (owner runs need none), `approval_action_pending` (an `approval_reply` run sent to the
|
|
317
339
|
request's chat; resolve instead, the `approval_resolved` run acts),
|
|
318
340
|
`already_resolved`, `no_owner_chat`, `message_too_long`,
|
|
319
341
|
`requester_unknown`.
|