worclaude 2.9.1 → 2.9.2
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/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,30 @@ All notable changes to worclaude are documented in this file. Format loosely fol
|
|
|
4
4
|
|
|
5
5
|
## [Unreleased]
|
|
6
6
|
|
|
7
|
+
## [2.9.2] — 2026-04-28
|
|
8
|
+
|
|
9
|
+
`upstream-check` workflow rebuild: fixes a 5-day silence and migrates to the official client library. Root cause of the silence: the daily workflow committed `.github/upstream-state.json` and pushed to `main`, but `main`'s branch protection (PR-required + 4 required status checks) rejected every push with `GH013`. State never advanced, items were re-evaluated daily, and the `Create issue` step was gated behind state-push success — silent forever. State persistence is now `actions/cache@v4` (key prefix `upstream-state-v3-`); the workflow no longer touches the git tree, `contents: write` permission dropped. Migration to [`@sefaertunc/anthropic-watch-client`](https://www.npmjs.com/package/@sefaertunc/anthropic-watch-client) replaces ~80 lines of hand-rolled fetch/dedup with composite-`uniqueKey` dedup (the `id`-only dedup at `scripts/upstream-precheck.mjs:95` was already silently dropping items where two sources shared an ID — `2.1.114` was the live example), version-gated fetch (`FeedVersionMismatchError`), and typed errors. Claude prompt + `upstream-watcher` agent + `docs/reference/upstream-automation.md` updated for the `community` source category (Reddit, HN, Twitter, GitHub commits — informational only per upstream's contract). Source counts no longer hardcoded — derived from `summary.sourcesChecked`.
|
|
10
|
+
|
|
11
|
+
### Fixed
|
|
12
|
+
|
|
13
|
+
- **5-day upstream-check silence** (PR follows) — replaces direct-push-to-`main` state persistence with `actions/cache@v4`. Fixes `GH013` rejection that blocked state advance and issue creation since `2026-04-18T09:08:21Z`. `contents: write` permission dropped.
|
|
14
|
+
- **Composite-key dedup bug** in `scripts/upstream-precheck.mjs` (PR follows) — was deduping by `id` alone, silently dropping items where two sources shared an ID. Now uses `@sefaertunc/anthropic-watch-client`'s `filterNew` with the spec'd `${id}|${source}` fallback for legacy state entries.
|
|
15
|
+
|
|
16
|
+
### Changed
|
|
17
|
+
|
|
18
|
+
- **Migrated upstream fetch to `@sefaertunc/anthropic-watch-client@^1.0.2`** (PR follows) — version-gated feed envelope (`FeedVersionMismatchError`), typed `FeedFetchError` / `FeedMalformedError`, composite `uniqueKey` dedup. Three minor versions overdue per upstream's `WORCLAUDE-INTEGRATION.md` tracking note.
|
|
19
|
+
- **Workflow Claude prompt** (PR follows) — added `community` source category (Reddit, HN, Twitter/X, GitHub commits) treated as informational-only per anthropic-watch's contract; removed hardcoded "16 sources" wording in favor of `summary.sourcesChecked`.
|
|
20
|
+
- **`upstream-watcher` agent prompt** (template + dogfood, byte-identical) — updated to describe client-library usage and the `community` impact-classification row.
|
|
21
|
+
|
|
22
|
+
### Tests
|
|
23
|
+
|
|
24
|
+
- **`tests/scripts/upstream-precheck.test.js`** (new, 20 cases) — covers happy path, dedup correctness (including the cross-source-same-id regression case), legacy `${id}|unknown` fallback, all four typed-error paths, schema-version refusal, 90-day prune, watchdog-issue-number preservation, and the full output-key contract for downstream workflow steps.
|
|
25
|
+
|
|
26
|
+
### Docs
|
|
27
|
+
|
|
28
|
+
- **`docs/reference/upstream-automation.md`** — rewrote State File section for cache-based persistence, replaced "Required branch protection" with "Branch protection on `main` — fully compatible", added Community-source policy subsection, added v2.9.2 to version history.
|
|
29
|
+
- **`docs/reference/agents.md`** — `upstream-watcher` description: source count now described as dynamic; switched from "via `curl` (no npm dependencies)" to client-library usage.
|
|
30
|
+
|
|
7
31
|
## [2.9.1] — 2026-04-28
|
|
8
32
|
|
|
9
33
|
Security patch clearing three transitive dev-dep advisories surfaced by Socket.dev and `npm audit` (esbuild dev-server CORS, vite path-traversal in optimized-deps, postcss XSS in CSS stringify). All three were dev-only, gated behind running `npm run docs:dev` and visiting a hostile origin in the same session — neither CI nor end-user installs trigger the conditions — but they kept appearing in scanner output and drowning out signal. Resolved via `npm overrides` in `package.json` (esbuild ^0.25.0, vite ^6.4.2, postcss ^8.5.10) which forces vitepress 1.6.4 onto patched transitives despite its declared `vite ^5.4.14` peer range; `npm run docs:build` verified clean. SECURITY.md rewritten: stale "pending upstream fixes" section replaced with "fixed via overrides", new false-positive subsections for Socket's AI-typosquat alert ("Did you mean: claude") and URL-strings alert (template content, not endpoints), supported-version table bumped to 2.9.x.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "worclaude",
|
|
3
|
-
"version": "2.9.
|
|
3
|
+
"version": "2.9.2",
|
|
4
4
|
"description": "The Workflow Layer for Claude Code — scaffold agents, commands, skills, hooks, and memory into any project",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -64,6 +64,7 @@
|
|
|
64
64
|
],
|
|
65
65
|
"license": "MIT",
|
|
66
66
|
"dependencies": {
|
|
67
|
+
"@sefaertunc/anthropic-watch-client": "^1.0.2",
|
|
67
68
|
"chalk": "^5.4.1",
|
|
68
69
|
"commander": "^13.1.0",
|
|
69
70
|
"fs-extra": "^11.3.0",
|
|
@@ -27,24 +27,39 @@ You are read-only. Report findings and recommend actions — do not implement th
|
|
|
27
27
|
|
|
28
28
|
## 1. Fetch Upstream Feeds
|
|
29
29
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
30
|
+
Use the official client library `@sefaertunc/anthropic-watch-client` (zero
|
|
31
|
+
runtime deps, version-gated, composite-key dedup, typed errors). Add it to the
|
|
32
|
+
project's `package.json` if not already present, then:
|
|
33
|
+
|
|
34
|
+
```js
|
|
35
|
+
import {
|
|
36
|
+
AnthropicWatchClient,
|
|
37
|
+
FeedFetchError,
|
|
38
|
+
FeedMalformedError,
|
|
39
|
+
FeedVersionMismatchError,
|
|
40
|
+
} from '@sefaertunc/anthropic-watch-client';
|
|
41
|
+
|
|
42
|
+
const client = new AnthropicWatchClient({ timeout: 10_000 });
|
|
43
|
+
const [report, items] = await Promise.all([
|
|
44
|
+
client.fetchRunReport(),
|
|
45
|
+
client.fetchAllItems(),
|
|
46
|
+
]);
|
|
39
47
|
```
|
|
40
48
|
|
|
41
|
-
If
|
|
42
|
-
|
|
43
|
-
|
|
49
|
+
If any fetch throws `FeedFetchError` (network/HTTP), `FeedMalformedError`
|
|
50
|
+
(bad JSON), or `FeedVersionMismatchError` (feed schema bump), report
|
|
51
|
+
"Could not reach anthropic-watch feeds: {error.message}" and stop — no
|
|
52
|
+
impact analysis is possible without the feed data.
|
|
53
|
+
|
|
54
|
+
`report` gives per-source health, `summary.sourcesChecked` (the live source
|
|
55
|
+
count — do not hardcode a number), and `newItemCount` per source. `items`
|
|
56
|
+
gives every item across all sources, sorted newest-first. Each item carries
|
|
57
|
+
`id`, `uniqueKey`, `source`, `sourceCategory`, `sourceName`, `title`, `date`,
|
|
58
|
+
`url`, `snippet`.
|
|
44
59
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
60
|
+
The client lib's `filterNew(items, seenSet)` and `uniqueKey(item)` helpers
|
|
61
|
+
handle composite-key dedup with the documented `${id}|${source}` fallback for
|
|
62
|
+
items missing the `uniqueKey` field.
|
|
48
63
|
|
|
49
64
|
## 2. Read Project Infrastructure
|
|
50
65
|
|
|
@@ -74,6 +89,7 @@ For each new upstream item, classify it into one of these buckets:
|
|
|
74
89
|
| Anthropic API SDK / docs | Relevant **only** if the project imports the SDK directly — skip otherwise |
|
|
75
90
|
| Engineering blog | New patterns or best practices worth adopting; never blocking |
|
|
76
91
|
| Status page | Informational only; no action required |
|
|
92
|
+
| `sourceCategory: community` (Reddit, HN, Twitter/X, GitHub commits) | **Informational only — never direct-impact** unless an item explicitly names a project file. Per anthropic-watch's contract, community items are not suitable for autonomous-action triggers. |
|
|
77
93
|
| Other sources | Classify by content — prefer informational unless it names something the project uses |
|
|
78
94
|
|
|
79
95
|
## 4. Report Format
|