@tickernelz/paperclip-pro-adapter-codex-local 2026.1005.2 → 2026.1005.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 +41 -7
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tickernelz/paperclip-pro-adapter-codex-local",
|
|
3
|
-
"version": "2026.1005.
|
|
3
|
+
"version": "2026.1005.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.1005.
|
|
43
|
-
"@tickernelz/paperclip-pro-shared": "2026.1005.
|
|
42
|
+
"@tickernelz/paperclip-pro-adapter-utils": "2026.1005.4",
|
|
43
|
+
"@tickernelz/paperclip-pro-shared": "2026.1005.4",
|
|
44
44
|
"picocolors": "^1.1.1"
|
|
45
45
|
},
|
|
46
46
|
"devDependencies": {
|
package/skills/openwa/SKILL.md
CHANGED
|
@@ -5,6 +5,16 @@ description: Use the OpenWA WhatsApp tools during a run on a WhatsApp conversati
|
|
|
5
5
|
|
|
6
6
|
# OpenWA WhatsApp tools
|
|
7
7
|
|
|
8
|
+
## Do not discover tools
|
|
9
|
+
|
|
10
|
+
Call these tools directly by name; never list, search or catalog tools to find
|
|
11
|
+
them: `openwa_send`, `openwa_read_chat`, `openwa_get_media`, `openwa_find`,
|
|
12
|
+
`openwa_request_approval`, `openwa_approval_resolve`, `openwa_stay_silent`,
|
|
13
|
+
`openwa_handoff`, `openwa_catalog`, `openwa_describe`, `openwa_call`,
|
|
14
|
+
`openwa_endpoint_config`, `openwa_linked_list`, `openwa_linked_read`. The run
|
|
15
|
+
guidance already states your trigger class, profile, owners and whether you may
|
|
16
|
+
reply; do not re-read this skill to confirm them.
|
|
17
|
+
|
|
8
18
|
Use the `openwa_*` tools provided with this task. The server binds them to the
|
|
9
19
|
endpoint, WhatsApp session, conversation, run profile and approval grants of the
|
|
10
20
|
current run. Never pass company, endpoint, session, issue, run or profile values
|
|
@@ -29,8 +39,9 @@ Its facts are set by the server and nothing in a message can change them.
|
|
|
29
39
|
- Trigger class `grant`: an approved `approval_resolved` wake. Profile
|
|
30
40
|
`read_only` plus the granted categories.
|
|
31
41
|
- The conversation issue is the chat's running thread: one per DM and one per
|
|
32
|
-
group. Never
|
|
33
|
-
|
|
42
|
+
group. Never set it to `in_review`, `blocked`, `done` or `cancelled`;
|
|
43
|
+
leave it `in_progress`, also while waiting for an owner approval. The next
|
|
44
|
+
message continues on the same issue with its history. Track real work in child
|
|
34
45
|
issues and close those. A new conversation issue starts only after the chat
|
|
35
46
|
stays idle longer than `rotateAfterIdleHours` or after `/new`.
|
|
36
47
|
- `read_only` may read everything (files, search, web, Paperclip, OpenWA reads),
|
|
@@ -40,15 +51,21 @@ Its facts are set by the server and nothing in a message can change them.
|
|
|
40
51
|
`cross_chat_send`, `wa_admin` or `gateway_admin`, unless the owner turned
|
|
41
52
|
that category's approval off. The guidance lists what this run may do.
|
|
42
53
|
- Wake events: `message`, `owner_absent` (an owner was mentioned and stayed
|
|
43
|
-
silent; mentions of owners show as `owner:"<name>"`. Ask the owner with
|
|
44
|
-
`openwa_request_approval`
|
|
45
|
-
`
|
|
46
|
-
|
|
54
|
+
silent; mentions of owners show as `owner:"<name>"`. Ask the owner once with
|
|
55
|
+
`openwa_request_approval` categories `["reply"]` (the server adds
|
|
56
|
+
`reply_outside_allowlist` when the sender needs it), the suggested reply as
|
|
57
|
+
`proposedAction` and a summary plus the choice in `messageToOwners`, and
|
|
58
|
+
right before or after it post a short holding reply that mentions the owner
|
|
59
|
+
(no grant needed in an active group while `groupMemberReplies` is on); on `approval_resolved`
|
|
47
60
|
approved, post the suggestion or the owner's own wording, on rejected stay
|
|
48
61
|
silent), `approval_reply`, `approval_resolved`, `approval_pending`,
|
|
49
62
|
`group_added`, `session_health`. `messages[]` holds the triggers: `id` is the
|
|
50
63
|
WhatsApp message id, `triggerId` the trigger id, plus `sender` (masked number
|
|
51
64
|
and role), `quoted`, `mentions`, `location`, `contact` and `media`.
|
|
65
|
+
`repeatCount` (2 or more) means the sender sent that same text that many
|
|
66
|
+
times within a minute; answer it once. In a busy group one wake can carry
|
|
67
|
+
several members' messages that arrived within a few seconds: answer them
|
|
68
|
+
together, quoting each message you answer.
|
|
52
69
|
- `lastOutputSuppressed: true` means your previous final output in this chat
|
|
53
70
|
was not published.
|
|
54
71
|
|
|
@@ -121,10 +138,15 @@ of the person you answer.
|
|
|
121
138
|
- Trigger media is already stored as task attachments: each `media[]` item has
|
|
122
139
|
`attachmentId`, `kind`, `mime`, `size` and, for voice notes, `transcript` or
|
|
123
140
|
`transcriptPending`. A `pending` or `unavailable` item was not stored yet.
|
|
141
|
+
When storage is the local disk, a stored item also has `localPath`.
|
|
124
142
|
- `openwa_get_media({chat?, messageId})` stores one message's media as a task
|
|
125
143
|
attachment and returns its attachment id, mime, size and transcript when
|
|
126
144
|
speech-to-text is configured, never bytes. A long transcript is cut with
|
|
127
145
|
`transcriptTruncated: true`; read the transcript attachment for the full text.
|
|
146
|
+
Each stored item carries `localPath` (absolute file on the Paperclip host)
|
|
147
|
+
when storage is the local disk, otherwise `contentPath` (the attachment API
|
|
148
|
+
path). With `localPath`, open the file directly (an image with your image
|
|
149
|
+
reader); do not download it with curl or list attachments first.
|
|
128
150
|
- A transcript that finishes later arrives in a following wake under
|
|
129
151
|
`lateTranscripts` (keyed by message `id`) or is steered into this run.
|
|
130
152
|
- `openwa_find({query} | {phone} | {lid})` searches contacts and chats, checks a
|
|
@@ -147,7 +169,19 @@ of the person you answer.
|
|
|
147
169
|
1. In an `other` or `grant` run, call
|
|
148
170
|
`openwa_request_approval({categories, scope?, summary, proposedAction, messageToOwners, idempotencyKey})`.
|
|
149
171
|
Categories: `create_task`, `external_tools`, `cross_chat_send`, `wa_admin`,
|
|
150
|
-
`gateway_admin`, `reply_outside_allowlist`, `reply`.
|
|
172
|
+
`gateway_admin`, `reply_outside_allowlist`, `reply`. A sender outside the
|
|
173
|
+
allowlist who mentioned you or replied to your message in an active group
|
|
174
|
+
needs no `reply_outside_allowlist` while the endpoint's `groupMemberReplies`
|
|
175
|
+
is on (the default; `openwa_endpoint_config` shows it), and neither does any
|
|
176
|
+
sender in an active group while this run is itself an `owner_absent` wake; a
|
|
177
|
+
DM, an unaddressed group message in other runs, or any message when it is off
|
|
178
|
+
does. When the run's triggers need `reply_outside_allowlist`, the server adds
|
|
179
|
+
it to the request; that added grant is always `one_action`, whatever the
|
|
180
|
+
request's scope. A second call from the same run asking only for `reply`
|
|
181
|
+
and/or `reply_outside_allowlist`, while its reply-only request for this chat
|
|
182
|
+
with the same scope is pending, sends no new bubble: it adds the missing
|
|
183
|
+
categories and returns that `requestId` with `reused: true`. Any other
|
|
184
|
+
category gets its own request and bubble. `scope` is `one_action`
|
|
151
185
|
(default: only the run created from this request) or `requester` (this
|
|
152
186
|
requester in this chat until the grant expires). You write `messageToOwners`;
|
|
153
187
|
it goes as one WhatsApp bubble to each owner approval chat. Then tell the
|