crewly 1.20.439 → 1.20.440
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.
|
@@ -67,3 +67,7 @@ Output: `{ "data": { "count": N, "hits": [ { "id", "time", "channelId", "channel
|
|
|
67
67
|
- Try a shorter or different keyword when nothing comes back; CJK text is
|
|
68
68
|
matched as written, without word splitting.
|
|
69
69
|
- To read around a hit, search again with `--channel` and a one-day range.
|
|
70
|
+
|
|
71
|
+
## What it does not search
|
|
72
|
+
|
|
73
|
+
Replies a team member posts with `reply --work-item`, `--new-thread` or `--ticket` can go straight to Slack and are not stored in this chat history. The result carries a `note` saying so. A missing hit does **not** mean such a post failed: the `reply` call itself returns `slackChannelId` and `messageTs` as proof it landed. Ask the member for those, or read the Slack thread, before posting the answer again.
|
|
@@ -65,4 +65,16 @@ if [ "${CREWLY_SKILL_DRY_RUN:-}" = "1" ]; then
|
|
|
65
65
|
exit 0
|
|
66
66
|
fi
|
|
67
67
|
|
|
68
|
-
|
|
68
|
+
# Posts a team member makes with `reply --work-item` / `--new-thread` go straight to
|
|
69
|
+
# Slack and are not stored in the chat history this searches (CREW-877). Say so in
|
|
70
|
+
# the output: an empty or partial result is not proof that such a post failed. The
|
|
71
|
+
# reply itself returned the proof (slackChannelId + messageTs) to the member.
|
|
72
|
+
NOTE="Not searched: replies a team member posts with 'reply --work-item', '--new-thread' or '--ticket' can go straight to Slack and are then not in this history. A missing hit does not mean such a post failed; ask the member for its messageTs (the reply returns it) or read the Slack thread."
|
|
73
|
+
if ! RESP=$(api_call GET "$ENDPOINT"); then
|
|
74
|
+
exit 1
|
|
75
|
+
fi
|
|
76
|
+
if printf '%s' "$RESP" | jq -e 'type == "object"' >/dev/null 2>&1; then
|
|
77
|
+
printf '%s' "$RESP" | jq -c --arg note "$NOTE" '. + {note: $note}'
|
|
78
|
+
else
|
|
79
|
+
printf '%s\n' "$RESP"
|
|
80
|
+
fi
|
|
@@ -20,5 +20,25 @@ assert_contains "missing --query is an error" "--query is required" "$(bash "$SC
|
|
|
20
20
|
assert_contains "bad --limit is an error" "--limit must be a number" "$(bash "$SCRIPT_DIR/execute.sh" --query x --limit abc 2>&1 || true)"
|
|
21
21
|
assert_contains "--help prints usage" "Usage:" "$(bash "$SCRIPT_DIR/execute.sh" --help)"
|
|
22
22
|
|
|
23
|
+
# The result carries a note that work-item posts are not searched (CREW-877).
|
|
24
|
+
unset CREWLY_SKILL_DRY_RUN
|
|
25
|
+
PORT=18877
|
|
26
|
+
python3 -u - <<'PY' >/dev/null 2>&1 &
|
|
27
|
+
from http.server import BaseHTTPRequestHandler, HTTPServer
|
|
28
|
+
class H(BaseHTTPRequestHandler):
|
|
29
|
+
def do_GET(self):
|
|
30
|
+
self.send_response(200); self.send_header('Content-Type', 'application/json'); self.end_headers()
|
|
31
|
+
self.wfile.write(b'{"success":true,"data":{"count":0,"hits":[]}}')
|
|
32
|
+
def log_message(self, *a, **k): pass
|
|
33
|
+
HTTPServer(('127.0.0.1', 18877), H).serve_forever()
|
|
34
|
+
PY
|
|
35
|
+
STUB_PID=$!
|
|
36
|
+
trap 'kill "$STUB_PID" >/dev/null 2>&1' EXIT
|
|
37
|
+
for i in $(seq 1 30); do curl -s -o /dev/null -m 0.2 "http://127.0.0.1:${PORT}/" 2>/dev/null && break; sleep 0.1; done
|
|
38
|
+
OUT=$(CREWLY_API_URL="http://127.0.0.1:${PORT}" bash "$SCRIPT_DIR/execute.sh" --query anything 2>/dev/null)
|
|
39
|
+
assert_eq "result keeps its data" "0" "$(printf '%s' "$OUT" | jq -r '.data.count')"
|
|
40
|
+
assert_contains "result says work-item posts are not searched" "reply --work-item" "$(printf '%s' "$OUT" | jq -r '.note')"
|
|
41
|
+
assert_eq "output is one line" "1" "$(printf '%s\n' "$OUT" | wc -l | tr -d ' ')"
|
|
42
|
+
|
|
23
43
|
echo "=== Results: $PASS passed, $FAIL failed ==="
|
|
24
44
|
[ "$FAIL" -eq 0 ]
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "crewly",
|
|
3
|
-
"version": "1.20.
|
|
3
|
+
"version": "1.20.440",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Multi-agent orchestration platform for AI coding teams — coordinates Claude Code, Gemini CLI, and Codex agents with a real-time web dashboard",
|
|
6
6
|
"workspaces": [
|