cli-jaw 2.17.28 → 2.17.29

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.
@@ -33,6 +33,33 @@ export async function resolveSlackDmChannel(token, userId, fetchImpl) {
33
33
  }
34
34
  return { ok: true, channelId };
35
35
  }
36
+ /** One record per Slack message that actually landed.
37
+ *
38
+ * This is the ONLY place every Slack post is visible. `sendChannelOutput` sees
39
+ * a subset — the dispatch settle path, the queued reply, the recovered-queue
40
+ * forwarder, and the generic forwarder all call this transport directly — so an
41
+ * audit that reads only `outbound.send` misses exactly the paths most likely to
42
+ * double.
43
+ *
44
+ * The two records are NOT interchangeable and must not be summed: a send routed
45
+ * through the choke point emits `outbound.send` AND lands here. `slack.post` is
46
+ * the post-level count, `outbound.send` the request-level one.
47
+ *
48
+ * Emitted per chunk rather than once at the end, because a long answer is
49
+ * several posts and a failure partway leaves the earlier ones on screen.
50
+ * Recording once on full success would report nothing for a send the user can
51
+ * already read — the direction that hides a duplicate. `index`/`of` keep the
52
+ * pieces recognizable as one answer.
53
+ *
54
+ * No body: destination and shape, never the words. */
55
+ function recordSlackPost(target, index, of) {
56
+ log.event('slack.post', {
57
+ target: target.targetId,
58
+ ...(target.threadId ? { threaded: true } : {}),
59
+ index,
60
+ of,
61
+ });
62
+ }
36
63
  export async function sendSlackText(token, target, text, options = {}) {
37
64
  const chunks = chunkSlackMessage(toMrkdwn(text));
38
65
  // The FIRST chunk's ts. A caller that wants to remove what it just posted —
@@ -62,8 +89,17 @@ export async function sendSlackText(token, target, text, options = {}) {
62
89
  ...(target.threadId ? { thread_ts: target.threadId } : {}),
63
90
  ...(index === 0 && safeBlocks ? { blocks: safeBlocks } : {}),
64
91
  }, callOpts);
65
- if (result.ok && index === 0 && result.data?.ts)
66
- firstTs = result.data.ts;
92
+ if (result.ok) {
93
+ if (index === 0 && result.data?.ts)
94
+ firstTs = result.data.ts;
95
+ // Recorded PER CHUNK, at the moment the post lands.
96
+ //
97
+ // Recording once after the loop counted a send, not a post: a chunked
98
+ // answer whose third chunk failed put two messages on screen and
99
+ // recorded nothing, which is the direction that hides a duplicate.
100
+ // `index`/`of` keep a long answer readable as one answer.
101
+ recordSlackPost(target, index, chunks.length);
102
+ }
67
103
  if (!result.ok) {
68
104
  // Keep an abort recognizable end to end (#417): describeSlackError
69
105
  // would wrap it as 'Slack API error: slack_send_aborted', and
@@ -98,6 +134,10 @@ export async function sendSlackText(token, target, text, options = {}) {
98
134
  // can delete: the retry is what actually created the message.
99
135
  if (index === 0 && retried.data?.ts)
100
136
  firstTs = retried.data.ts;
137
+ // The retry is what put this chunk on screen, so it is the post
138
+ // that has to be recorded. Missing it would make every
139
+ // throttled answer partly invisible to a duplicate audit.
140
+ recordSlackPost(target, index, chunks.length);
101
141
  continue;
102
142
  }
103
143
  if (retried.error === 'slack_send_aborted') {
@@ -108,25 +148,6 @@ export async function sendSlackText(token, target, text, options = {}) {
108
148
  return slackFailure(describeSlackError(result.error, result.data), result.status, result.retryAfterMs, result.grantedScopes);
109
149
  }
110
150
  }
111
- // Recorded HERE, not only at `sendChannelOutput`, because most Slack posts
112
- // never pass through that choke point: the dispatch settle path, the queued
113
- // reply, the recovered-queue forwarder, and the generic forwarder all call
114
- // this transport directly. Instrumenting only the choke point left those
115
- // invisible — which is precisely the set a 'did one turn answer twice' audit
116
- // needs, so a census over the other record could look complete while missing
117
- // them.
118
- //
119
- // `chunks` matters: one logical answer over the Slack length limit becomes
120
- // several posts, and counting posts instead of sends would read a long answer
121
- // as a duplicate.
122
- //
123
- // No body, same reason as elsewhere: destination and shape, never the words.
124
- log.event('slack.post', {
125
- target: target.targetId,
126
- ...(target.threadId ? { threaded: true } : {}),
127
- chunks: chunks.length,
128
- result: 'ok',
129
- });
130
151
  // exactOptionalPropertyTypes: omit the key rather than sending undefined.
131
152
  return firstTs ? { ok: true, ts: firstTs } : { ok: true };
132
153
  }
@@ -1 +1 @@
1
- {"version":3,"file":"send-only-client.js","sourceRoot":"","sources":["../../../src/slack/send-only-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"send-only-client.js","sourceRoot":"","sources":["../../../src/slack/send-only-client.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cli-jaw",
3
- "version": "2.17.28",
3
+ "version": "2.17.29",
4
4
  "description": "Personal AI assistant powered by Pi, Antigravity, AI-E, Claude, Claude E, Codex, Codex App, Cursor, Grok, Kiro, OpenCode, and Copilot — Web, Terminal, Telegram, and Discord interfaces with 107 built-in skills",
5
5
  "type": "module",
6
6
  "keywords": [