Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
429 commits
Select commit Hold shift + click to select a range
48e2e49
chore(deps): cascade pnpm → 11.1.2
jdalton May 15, 2026
734ba56
chore(sync): cascade install-git-hooks + ai-lint-fix from socket-whee…
jdalton May 16, 2026
b737294
chore(catalog): drop -stable alias suffix, enforce canonical via over…
jdalton May 17, 2026
13be05c
fix(lint): clean lint debt across scripts/ + .config/
jdalton May 17, 2026
b4eba87
chore(cascade): install missing Bash hooks + propagate api-token cach…
jdalton May 17, 2026
96593b0
chore(cascade): mirror resolved token into both SOCKET_API_TOKEN + SO…
jdalton May 17, 2026
4e5d1e5
chore(cascade): adopt fleet-canonical .gitignore + .gitattributes block
jdalton May 17, 2026
8be3507
chore(cascade): sync wheelhouse — _shared/payload + hook-env, workflo…
jdalton May 17, 2026
769d51f
fix(deps): restore -stable catalog aliases for self-named fleet packages
jdalton May 17, 2026
2e9f8f1
chore(sync): cascade fleet template@06728c9
jdalton May 18, 2026
749976a
fix(scripts): use node:child_process.spawnSync for prompt-less audit …
jdalton May 18, 2026
1be3efc
chore(sync): cascade fleet template@39d6c95
jdalton May 18, 2026
99fe7b3
fix(scripts): non-null-assert bounded-loop indexed reads in validate-…
jdalton May 18, 2026
33bb278
chore(sync): cascade fleet template@ed43ae3
jdalton May 18, 2026
4612eaa
chore(sync): cascade fleet template@89cc78c
jdalton May 18, 2026
006ffe1
chore(config): extend fmt+lint+linguist ignore-lists + fix validate-b…
jdalton May 18, 2026
54d0daf
chore(cascade): sync oxlint-plugin + socket-wheelhouse-schema from wh…
jdalton May 18, 2026
a81c6d7
style(scripts): oxfmt reformat (line-wrap)
jdalton May 18, 2026
3188834
chore(sync): resync socket-wheelhouse-schema.json to wheelhouse template
jdalton May 18, 2026
351b1a1
style(socket-wheelhouse-schema): re-collapse short required arrays to…
jdalton May 18, 2026
f527e23
fix: stop oxfmt from reformatting socket-wheelhouse-schema.json
jdalton May 18, 2026
7c5b9b2
chore(sync): cascade fleet template@2ab8e29
jdalton May 18, 2026
9af8df0
chore(sync): cascade fleet template@f883b64
jdalton May 18, 2026
d7958a3
chore(sync): cascade fleet template@5001c5f
jdalton May 18, 2026
8177390
chore(sync): cascade fleet template@4c380a7
jdalton May 18, 2026
63234ea
chore(sync): cascade fleet template@9444dfe
jdalton May 18, 2026
f8cb4ee
fix(types): replace inline import('mod').T with static import-type he…
jdalton May 18, 2026
d958de2
chore(sync): cascade fleet template@f2ee346
jdalton May 18, 2026
2527965
fix(packageManager): bump pnpm@11.0.8 → pnpm@11.1.2
jdalton May 18, 2026
fbf1c08
chore(sync): cascade fleet template@774f58d
jdalton May 18, 2026
7d78448
chore(sync): cascade fleet template@dcf073e
jdalton May 18, 2026
1cfcc5a
chore(sync): cascade fleet template@1c0e274
jdalton May 18, 2026
91dd3ea
chore(sync): apply remaining canonical fleet drift fixes
jdalton May 18, 2026
0936564
chore(deps): bump catalog + oxfmt sweep
jdalton May 18, 2026
be953d8
chore(sync): cascade fleet template@3ff8e5e
jdalton May 18, 2026
7683920
chore(sync): cascade fleet template@1503502
jdalton May 18, 2026
c9e6854
chore(sync): cascade fleet template@00f7718
jdalton May 18, 2026
5625e02
chore(sync): cascade fleet template@4f6744a
jdalton May 18, 2026
593696a
chore(sync): cascade fleet template@1e967b5
jdalton May 18, 2026
53e6f44
chore(sync): cascade no-file-scope-oxlint-disable + convert paths.mts…
jdalton May 18, 2026
791d224
chore(deps): bump pnpm 11.1.2 to 11.1.3
jdalton May 18, 2026
6bff415
chore(sync): cascade fleet template@1198a48
jdalton May 18, 2026
70b78ff
chore(sync): cascade fleet template@764ec50
jdalton May 18, 2026
8c02d5f
chore(deps): bump engines.pnpm 11.1.2 to 11.1.3
jdalton May 18, 2026
894b22f
chore(sync): cascade socket-registry pins → acfb0136
jdalton May 18, 2026
3e8bf1e
chore(sync): cascade fleet template@cd61934
jdalton May 18, 2026
5c8402e
chore(sync): cascade socket-registry pins → edae625d
jdalton May 18, 2026
e8975eb
chore(sync): cascade socket-registry pins → 5c06f15d
jdalton May 18, 2026
a9fd6fa
chore(lockfile): refresh for lock-step-ref-guard hook @types/node@cat…
jdalton May 18, 2026
23c9b91
chore(sync): cascade fleet template@86742ed
jdalton May 18, 2026
0de895e
chore(sync): cascade fleet template@5f1d703
jdalton May 18, 2026
1bce97a
chore(sync): cascade fleet template@ae5e5c7
jdalton May 18, 2026
7383c4e
chore(lockfile): refresh for @socketsecurity/lib-stable@catalog: dep
jdalton May 18, 2026
6056c63
chore(sync): cascade fleet template@9ff8d75
jdalton May 18, 2026
b6aca95
chore(sync): cascade fleet template@9f4cfb3
jdalton May 18, 2026
a677d06
chore(sync): cascade fleet template@24dd7b8
jdalton May 19, 2026
021aabf
chore(sync): apply remaining canonical fleet drift fixes
jdalton May 19, 2026
38f9eb0
chore(sync): cascade socket-registry pins → 27eee5cb
jdalton May 19, 2026
b1de5e6
chore(sync): cascade socket-registry pins → fe3994c0
jdalton May 19, 2026
ba1b98d
chore(sync): cascade fleet template@c4e4a67
jdalton May 19, 2026
9eed59d
chore(sync): cascade fleet template@936e30b
jdalton May 19, 2026
9e4cc7d
chore(sync): cascade fleet template@936e30b
jdalton May 19, 2026
69b5bb2
chore(sync): cascade fleet template@567eab0
jdalton May 19, 2026
7b5f0e6
chore(sync): cascade fleet template@f362133
jdalton May 19, 2026
292e9ff
chore(sync): cascade fleet template@d8aeed2
jdalton May 19, 2026
fb83c97
chore(sync): cascade fleet template@72633be
jdalton May 19, 2026
579f4cf
chore(sync): cascade fleet template@4a97a31
jdalton May 19, 2026
54c99ea
chore(sync): cascade fleet template@cf29272
jdalton May 19, 2026
9d118c6
chore(sync): cascade fleet template@727dd6b
jdalton May 19, 2026
0b7a1f0
chore(sync): cascade fleet template@c714496
jdalton May 19, 2026
3960476
chore(sync): cascade fleet template@c714496
jdalton May 19, 2026
87dfb0e
chore(sync): cascade fleet template@54b2fed
jdalton May 19, 2026
486dcee
chore(sync): cascade fleet template@6ec92d7
jdalton May 19, 2026
334847c
chore(sync): cascade fleet template@48ea8b4
jdalton May 19, 2026
200fcc7
chore(sync): re-sync fleet-canonical drift blocks
jdalton May 19, 2026
8314c5b
chore(sync): cascade fleet template@0b4f30e
jdalton May 19, 2026
5b216e4
chore(sync): cascade fleet template@a8d9420
jdalton May 20, 2026
f051462
chore(sync): cascade fleet template@014a31a
jdalton May 20, 2026
3ef34e6
chore(sync): cascade fleet template@f187059
jdalton May 20, 2026
6dc0c9c
chore(sync): cascade fleet template@f869f6e
jdalton May 20, 2026
83fdc13
chore(sync): cascade fleet template@fc4867e
jdalton May 20, 2026
eb8d53d
chore(sync): cascade fleet template@fc4867e
jdalton May 20, 2026
1c37a0a
chore: align with fleet check + lint baseline
jdalton May 20, 2026
8c57327
fix(bootstrap-firewall-deps): resolve pnpm npm: alias before construc…
jdalton May 20, 2026
748aa62
style: oxfmt bootstrap-firewall-deps.mts
jdalton May 20, 2026
ecd732c
chore(sync): cascade fleet template@2877fb9
jdalton May 20, 2026
ad132ac
chore(sync): cascade fleet template@b9f9f3c
jdalton May 20, 2026
9d347d2
fix(scripts/lint): pass --ignore-path .config/.prettierignore to oxfmt
jdalton May 20, 2026
a47e878
ci(provenance): bump socket-registry workflow pin to pick up auto-tag
jdalton May 20, 2026
e7aff24
chore(sync): cascade fleet template@8b6bcb1
jdalton May 20, 2026
9f4b491
ci(zizmor): suppress impostor-commit for socket-registry reusable wor…
jdalton May 20, 2026
17d51a4
fix(markdownlint-rules): mirror wheelhouse fleet-canonical lint sweep
jdalton May 20, 2026
0393dd1
docs(claude.md): condense SDK-Specific section to under 40KB
jdalton May 20, 2026
d00d547
style: oxfmt CLAUDE.md after parallel condense edit
jdalton May 20, 2026
532cb9f
chore(sync): cascade fleet template@1ae20f4
jdalton May 20, 2026
aea837a
chore(sync): cascade fleet template@fec5b60
jdalton May 20, 2026
873b0be
chore(sync): cascade fleet template@6bf459d
jdalton May 20, 2026
9abcf01
chore(sync): cascade fleet template@1a9c07d
jdalton May 20, 2026
c789023
chore(sync): cascade fleet template@8675f41
jdalton May 20, 2026
7288405
chore: regenerate pnpm-lock.yaml after fleet hook cascade
jdalton May 20, 2026
8c99a41
style: oxfmt .config/oxlintrc.json after cascade
jdalton May 20, 2026
df7fd29
chore(sync): cascade fleet template@1e2c1bd
jdalton May 21, 2026
523efbe
chore(sync): cascade fleet template@9aa6e38
jdalton May 21, 2026
7c56266
chore(sync): cascade fleet template@416bf67
jdalton May 21, 2026
cf0068c
chore(sync): cascade fleet template@416bf67
jdalton May 21, 2026
a4830ba
chore(sync): cascade fleet template@334c671
jdalton May 21, 2026
a582a23
chore(sync): cascade fleet template@334c671
jdalton May 21, 2026
9955620
chore(sync): cascade fleet template@334c671
jdalton May 21, 2026
ec9c149
docs(readme): canonicalize root README to fleet skeleton
jdalton May 21, 2026
330c2d0
chore(sync): cascade fleet template@b2742fc
jdalton May 21, 2026
9436c40
chore(sync): cascade fleet template@bd3441f
jdalton May 21, 2026
a8d11f3
chore(security): pnpm override for undici (2 Dependabot alerts)
jdalton May 21, 2026
0624f34
chore(sync): cascade fleet template@8f174d6
jdalton May 21, 2026
2afe802
chore(lib): migrate to @socketsecurity/lib v6.0.0
jdalton May 21, 2026
90e366d
style: oxfmt collapse split import
jdalton May 21, 2026
020f0d4
chore(sync): cascade fleet template@8f174d6
jdalton May 21, 2026
aab4194
chore: reconcile lockfile + .gitattributes after fleet cascade
jdalton May 21, 2026
7274274
refactor: drop 3 dead constants + colocate normalizeToWordSet
jdalton May 21, 2026
fd0147a
chore(sync): cascade fleet template@5f12bba
jdalton May 23, 2026
406aa31
docs(claude.md): move project section to docs/claude.md/repo/architec…
jdalton May 24, 2026
75a0558
chore(sync): cascade fleet template@3a03e28
jdalton May 24, 2026
d164496
chore(sync): drift cleanup from cascade fleet template@3a03e28
jdalton May 24, 2026
e1aae75
feat(publish): adopt pnpm stage for two-step publish + cascade pnpm@1…
jdalton May 24, 2026
1d8da50
chore(sync): cascade fleet template@71fbe51
jdalton May 24, 2026
55fe6b1
chore(publish): drop publish-approve.mts; consolidated into canonical…
jdalton May 24, 2026
8793234
chore(wheelhouse): cascade template@8dbabff
jdalton May 25, 2026
a4ae1c7
chore(sync): cascade fleet template@2e2be56 (followup)
jdalton May 25, 2026
9c578ee
ci(provenance): generic dispatch-input wording (drop npm specifics)
jdalton May 25, 2026
9b79696
chore(wheelhouse): cascade template@e9d0707
jdalton May 25, 2026
a299bd3
chore(wheelhouse): cascade template@cf3f2d2 (followup)
jdalton May 25, 2026
fccf994
chore(registry-pins): cascade socket-registry pins → c291a141
jdalton May 25, 2026
ee860da
chore(registry-pins): bump socket-registry pins → c291a141
jdalton May 25, 2026
4dcb363
chore(wheelhouse): cascade template@0cefb94
jdalton May 25, 2026
734f44b
chore(registry-pins): cascade socket-registry pins → 0bc65f5b
jdalton May 26, 2026
96da32f
chore(deps): refresh pnpm-lock from cascade
jdalton May 26, 2026
74ad68d
chore(registry-pins): cascade socket-registry pins → 30c9d1e8
jdalton May 26, 2026
7bbb55d
chore(registry-pins): cascade socket-registry pins → 2b4384f7
jdalton May 26, 2026
4716c89
chore(registry-pins): cascade socket-registry pins → 5e830399
jdalton May 26, 2026
95932df
chore(wheelhouse): cascade template@85d360d
jdalton May 27, 2026
c63e68d
chore(wheelhouse): remove orphaned bash-quote-mask helper
jdalton May 27, 2026
7694576
chore(wheelhouse): bump @socketsecurity/lib catalog 6.0.0 → 6.0.3
jdalton May 27, 2026
45ceab3
chore(oxlint-plugin): sync stranded canonical rule + lib files
jdalton May 27, 2026
5402cab
fix: align imports to @socketsecurity/lib 6.0.3 subpaths
jdalton May 27, 2026
010ca7c
build: migrate from esbuild to rolldown
jdalton May 27, 2026
fd18b19
build: stub the spinner-backend subgraph in the SDK bundle
jdalton May 27, 2026
50ce00c
revert: keep fleet-canonical validate-esbuild-minify.mts
jdalton May 27, 2026
6102a80
fix(scripts): resolve lint + bundle-deps gaps from rolldown migration
jdalton May 27, 2026
802b19f
build: add canonical publish-shared.mts consumed by publish.mts
jdalton May 27, 2026
ef3ecee
fix(check): point minify validator at rolldown config
jdalton May 27, 2026
222b890
build: adopt canonical rolldown-minify validator
jdalton May 27, 2026
8b69082
chore(wheelhouse): cascade template@113a925
jdalton May 27, 2026
17e0d47
chore(wheelhouse): refresh lockfile after template@113a925 cascade
jdalton May 27, 2026
11f5865
chore(wheelhouse): cascade template@573d54f
jdalton May 28, 2026
e5a101d
chore(wheelhouse): cascade template@8d57f29
jdalton May 28, 2026
aff19c8
chore(cascade): sync allowScripts with allowBuilds (npm/cli#9360)
jdalton May 28, 2026
c172819
chore(wheelhouse): cascade template@44610caa
jdalton May 29, 2026
000b3c2
chore(wheelhouse): cascade template@ac368a9b
jdalton May 29, 2026
436afe4
chore(wheelhouse): cascade template@5a97706a
jdalton May 29, 2026
ccf3de5
chore(wheelhouse): cascade template@b352b86c
jdalton May 29, 2026
12d6e6c
chore(wheelhouse): cascade template@03d96f25
jdalton May 29, 2026
07e7411
chore(wheelhouse): cascade template@91cee7cf
jdalton May 29, 2026
f26257d
test: drop `as any` casts and apply oxlint autofixes in unit tests
jdalton May 29, 2026
3ce980e
style: oxfmt reflow of validation test toThrow calls
jdalton May 29, 2026
ca32232
fix(deps): add compromise@14.15.1 soak-exclude + shell-quote devDepen…
jdalton May 29, 2026
d21dff2
chore(wheelhouse): cascade template@cdbd0dd5
jdalton May 30, 2026
7e73bd5
chore(wheelhouse): cascade template@3ad9911e
jdalton May 31, 2026
caa616b
chore(wheelhouse): cascade template@cd65ef7a
jdalton May 31, 2026
3025919
chore(wheelhouse): cascade template@6a34227e
jdalton May 31, 2026
8ded6fe
chore(wheelhouse): cascade template@4ec6212c
jdalton May 31, 2026
065c3c6
chore(wheelhouse): cascade template@6306def9
jdalton Jun 1, 2026
a9c4c17
chore(claude): segment .claude/skills/ into fleet/ + repo/
jdalton Jun 1, 2026
51ae030
chore(claude): rehome commands under .claude/commands/fleet/
jdalton Jun 1, 2026
0f395c6
chore(claude): segment .claude/agents/ into fleet/ + repo/
jdalton Jun 1, 2026
baa4653
chore(claude): drop duplicate top-level hooks (canonical lives under …
jdalton Jun 1, 2026
a06f7f4
chore(wheelhouse): cascade template@7dbe4abc
jdalton Jun 1, 2026
76c40de
style: apply lint autofixes (no-array-sort, oxlintrc reflow)
jdalton Jun 1, 2026
33751ab
chore(wheelhouse): cascade template@28b9c737
jdalton Jun 1, 2026
66856b7
chore(wheelhouse): cascade template@84779b26
jdalton Jun 1, 2026
a036d8c
chore(wheelhouse): cascade template@d44822f7
jdalton Jun 1, 2026
d2ec279
chore(wheelhouse): cascade template@d44822f7
jdalton Jun 1, 2026
7c86775
chore(deps): bump @socketsecurity/lib lockfile to 6.0.6
jdalton Jun 1, 2026
b78faf3
chore(wheelhouse): cascade template@915e184d (follow-up)
jdalton Jun 1, 2026
c528f7b
chore(wheelhouse): cascade template@c3b4cc0c
jdalton Jun 1, 2026
915e404
chore(wheelhouse): cascade template@d9ab7d2f
jdalton Jun 1, 2026
5866411
chore(wheelhouse): cascade template@714ca261
jdalton Jun 1, 2026
9c120c6
chore(wheelhouse): cascade template@05a8adcb
jdalton Jun 1, 2026
8c69aef
chore(wheelhouse): cascade template@92657d8a
jdalton Jun 1, 2026
4cd5a42
chore(scripts): update package.json scripts to scripts/fleet/ paths
jdalton Jun 1, 2026
8865009
chore(wheelhouse): cascade template@c341e551
jdalton Jun 1, 2026
b188e98
chore(wheelhouse): cascade template@335f8677
jdalton Jun 1, 2026
4ef558c
fix(tsconfig): point extends at .config/fleet/tsconfig.base.json
jdalton Jun 1, 2026
da2eedc
chore(wheelhouse): cascade template@f2c77f00
jdalton Jun 1, 2026
f3abc9c
chore(wheelhouse): cascade template@cf15ef5a
jdalton Jun 1, 2026
7da4df3
chore(wheelhouse): cascade template@dcc91cfb
jdalton Jun 1, 2026
ea6b4c1
ci(workflows): bump socket-registry pin to pnpm 11.5.0
jdalton Jun 1, 2026
3295149
chore(registry-pins): cascade socket-registry pins → f09a1cd3
jdalton Jun 1, 2026
78a86d4
chore(wheelhouse): cascade template@2c1b1700
jdalton Jun 1, 2026
024e872
fix(deps): bump vitest to 4.1.6 to clear GHSA-5xrq-8626-4rwp
jdalton Jun 1, 2026
c466fab
chore(wheelhouse): cascade template@5473ac3c
jdalton Jun 1, 2026
4115e38
refactor(tsconfig): inherit check options from fleet check base
jdalton Jun 1, 2026
c63c88e
feat(threat-feed): add getOrgThreatFeedItems + getThreatFeedItems
jdalton Jun 1, 2026
eb86590
feat(blob): add content-addressed blob fetch helpers
jdalton Jun 1, 2026
f8ae87a
fix(config): complete the .config/repo migration so the test + build run
jdalton Jun 1, 2026
95742ae
test(full-scans): send JSON null for absent pagination cursors in mocks
jdalton Jun 1, 2026
bcf26ab
fix(blob): cap response size + fix truncation metadata on offset-only…
jdalton Jun 1, 2026
172928b
docs(reports): save socket-sdk-js quality scan + resolution notes
jdalton Jun 1, 2026
df3fd5c
feat(blob): verify fetched bytes against their content-address
jdalton Jun 2, 2026
9b4bba9
chore(wheelhouse): cascade template@f28722e0
jdalton Jun 2, 2026
144c124
chore(wheelhouse): cascade template@373f9abc
jdalton Jun 3, 2026
871c2b6
chore(wheelhouse): cascade template@cf6ed7fe
jdalton Jun 3, 2026
e0bf510
chore(registry-pins): cascade socket-registry pins → c4b120c3
jdalton Jun 3, 2026
95ef2b3
chore(wheelhouse): cascade template@774d2746
jdalton Jun 3, 2026
42a1456
chore(wheelhouse): cascade template@45e9fdc2
jdalton Jun 3, 2026
9488627
chore(wheelhouse): cascade template@b0c8c0c9
jdalton Jun 7, 2026
c4160c2
chore(wheelhouse): reconcile pnpm-lock.yaml after cascade
jdalton Jun 7, 2026
162d007
chore(wheelhouse): cascade template@69b7686a
jdalton Jun 8, 2026
a4e6f2d
docs: trim SDK-Specific CLAUDE.md layout/rationale
jdalton Jun 8, 2026
0aa3c27
docs: correct coverage thresholds in CLAUDE.md and architecture.md
jdalton Jun 8, 2026
4754e61
refactor: rename src to .mts and use explicit import extensions
jdalton Jun 8, 2026
5de69c0
refactor: drop `as any` casts and the isAuthenticated boolean trap
jdalton Jun 8, 2026
f910620
test: drop `as any` and src-import-in-expect from batch + testing-uti…
jdalton Jun 8, 2026
adabaa7
test: clear lint debt in unit tests
jdalton Jun 8, 2026
17aff79
refactor: clear lint debt in scripts and repo config
jdalton Jun 8, 2026
867a734
refactor(lint): max-file-lines markers drop filler word, name real ca…
jdalton Jun 8, 2026
48dd276
refactor(lint): drop legitimate filler from remaining max-file-lines …
jdalton Jun 8, 2026
e096160
refactor: use lib-stable external semver in bump script
jdalton Jun 8, 2026
8d31367
style: normalize markdown table padding and emphasis markers
jdalton Jun 8, 2026
b943807
fix: clear lint debt and restore working semver import in bump script
jdalton Jun 8, 2026
112e93f
refactor: use lib versions helpers instead of bare semver in bump
jdalton Jun 8, 2026
5e76406
refactor(marker): migrate to repo + build groups
jdalton Jun 9, 2026
36d9167
chore(ci): re-pin reusable ci.yml to the pnpm-store cache build
jdalton Jun 9, 2026
b669963
chore(wheelhouse): cascade template@251615de
jdalton Jun 10, 2026
c3ff8f2
docs: migrate repo doc tier to docs/agents.md/repo
jdalton Jun 10, 2026
2e48375
docs: repoint CLAUDE.md repo ref to docs/agents.md + trim under 40KB cap
jdalton Jun 10, 2026
f62a831
chore(wheelhouse): cascade template@f34d0e85
jdalton Jun 10, 2026
9fdac58
chore(deps): reconcile lockfile after oxlint-plugin workspace registr…
jdalton Jun 10, 2026
2cac17c
chore(wheelhouse): cascade template@7babe316
jdalton Jun 11, 2026
fb42726
chore(wheelhouse): reconcile pnpm-lock.yaml after cascade
jdalton Jun 11, 2026
2a7e4bf
feat: read cached scans by default with transparent 202 polling
jdalton Jun 11, 2026
32dbe10
chore: clear lint debt surfaced by the cascade
jdalton Jun 11, 2026
b6f90ec
refactor: split oversized test and codegen files under the size cap
jdalton Jun 11, 2026
909b83d
chore(openapi): regenerate strict types + fix generator nested optionals
jdalton Jun 11, 2026
9591138
chore(wheelhouse): cascade template@79865509
jdalton Jun 11, 2026
bec7ac1
chore: satisfy oxlint rules newly activated by the cascade
jdalton Jun 11, 2026
911d678
chore: reformat quota-utils and strict types with current oxfmt
jdalton Jun 11, 2026
2781b26
chore(wheelhouse): cascade template@b4c14391
jdalton Jun 13, 2026
7ea0684
chore(wheelhouse): reconcile pnpm-lock.yaml after cascade
jdalton Jun 13, 2026
c8b8f4b
chore(wheelhouse): cascade template@8a15af1b
jdalton Jun 13, 2026
9371ca5
chore(wheelhouse): cascade template@cb90aed9
jdalton Jun 14, 2026
ee8ea6c
build(deps-dev): bump @anthropic-ai/claude-code from 2.1.92 to 2.1.163
dependabot[bot] Jun 20, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
55 changes: 55 additions & 0 deletions .agents/skills/fleet-agent-ci/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
---
name: fleet-agent-ci
description: Run this repo's GitHub Actions workflows locally in Docker with Agent-CI to validate changes before pushing. Use before opening or updating a PR, after editing a workflow YAML under .github/workflows, or whenever catching a CI failure locally beats waiting on a remote runner.
user-invocable: true
allowed-tools: Bash, Read, Edit
model: claude-haiku-4-5
context: fork
---

# agent-ci

Run the repo's CI pipeline locally before pushing. CI was green before you started, so any failure the local run surfaces comes from your changes.

RedwoodJS wrote the upstream tool and skill (MIT, https://github.com/redwoodjs/agent-ci). The fleet pins `@redwoodjs/agent-ci` in the wheelhouse catalog and wires it as the `ci:local` package script (resolved via `node_modules/.bin`, never `pnpm exec`/`npx`). Edit only in `socket-wheelhouse/template/`; the cascade refreshes downstream copies.

## Requirements

- **Docker must be running** — each job runs in a container. On macOS the fleet uses **OrbStack** (`open -a OrbStack`; recommended over Docker Desktop). If the daemon is down, agent-ci fails fast with `couldn't use a Docker socket at /var/run/docker.sock … missing or a dangling symlink` and exit 1 — that's the daemon, not a workflow failure. Start the provider, confirm with `docker info`, re-run. No daemon and can't start one → fall back to `greening-ci` (push + watch remote).
- **The dep is already installed** — `@redwoodjs/agent-ci` is a fleet devDependency (`catalog:`), provisioned by `pnpm install`.
- **`--github-token` for remote reusable workflows** — every socket-\* repo's `ci.yml` calls a `SocketDev/socket-registry/.github/workflows/…` reusable workflow. agent-ci can't fetch it without a token; pass `--github-token` (no value → auto-resolves via `gh auth token`). Omitting it makes a remote-reusable CI silently fail to resolve.
- **macOS jobs (`runs-on: macos-*`)** run in a throwaway VM and need `tart` + `sshpass` on an Apple Silicon host (`brew install cirruslabs/cli/tart hudochenkov/sshpass/sshpass`). Without both, macOS jobs are skipped with a reason — the rest of the run still proceeds.

## Run

The blessed entry is the canonical `ci:local` script — it already carries the full flag set (`--all --quiet --pause-on-failure --github-token`), and pnpm resolves the `agent-ci` binary from `node_modules/.bin` cross-platform:

```bash
pnpm run ci:local
```

`--all` runs the PR/push workflows for the current branch. `--quiet` suppresses the live renderer (pipe-safe). `--pause-on-failure` stops at the first failed step and holds the container open for `retry`. `--github-token` (bare → `gh auth token`) fetches the socket-registry reusable workflow every fleet `ci.yml` calls. Pipes are safe: when stdout is not a TTY the launcher detaches and the foreground process exits **77** the moment a step pauses, so `| tee log` and `> log.txt` work.

There is no `--list` or dry-run flag — `run` executes. Args after the subcommand pass through, so a typo'd flag becomes a workflow arg rather than an error.

To resolve the binary from a `.mts` script (not a package.json script — those resolve `node_modules/.bin` themselves), use the fleet helper, never a shelled-out `which`/`command -v` (which searches the global PATH and resolves the wrong binary — enforced by `socket/no-which-for-local-bin`):

```ts
import { whichSync } from '@socketsecurity/lib-stable/bin/which'

const agentCi = whichSync('agent-ci', { path: nodeModulesBinDir, nothrow: true })
```

## Fix and retry

When a step fails the run pauses (and the `run.paused` event carries the exact `retry_cmd` to copy). Fix the code, then retry the paused runner — don't restart the whole pipeline:

```bash
node_modules/.bin/agent-ci retry --name <runner-name>
```

Call the linked binary directly (the fleet form for an ad-hoc bin invocation, same as `node_modules/.bin/oxfmt` / `tsgo` in build scripts) — never `pnpm exec`/`npx`. Re-run from an earlier step with `--from-step <N>`. Repeat fix → retry until every job passes. Don't push to trigger remote CI when agent-ci can run it locally.

## Reference

- **Machine-readable `--json` event stream, the full requirements rationale, and the agent-ci-vs-remote-CI decision matrix**: see [reference.md](reference.md).
60 changes: 60 additions & 0 deletions .agents/skills/fleet-agent-ci/reference.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
# agent-ci reference

## Contents

- Machine-readable output (`--json`)
- The exit-77 pause contract
- Requirements rationale (Docker, install)
- When to use agent-ci vs. remote CI
- Command summary

## Machine-readable output (`--json`)

Add `--json` (or set `AGENT_CI_JSON=1`) to emit an NDJSON event stream on stdout — one JSON object per line. Use it for programmatic monitoring instead of grepping plaintext.

Events:

- `run.start` — carries `schemaVersion: 1` and `runId`.
- `job.start`, `job.finish` — `status: passed | failed`.
- `step.start`, `step.finish` — `status: passed | failed | skipped`.
- `run.paused` — carries `runner` and `retry_cmd` (the exact command to resume).
- `run.finish` — `status: passed | failed`.
- `diagnostic` — non-fatal notices.

`--json` is independent of `--quiet`. The diff renderer is auto-suppressed under `--json` so ANSI escapes don't collide with the stream.

The robust agent loop: parse the stream, react to `run.paused` (fix the failure named in `runner`), then run the `retry_cmd` it carries. No plaintext parsing required.

## The exit-77 pause contract

When stdout is not a TTY (piped, redirected, captured by a parent process), the launcher detaches the run. The foreground process exits **77** the instant a step pauses. This frees the pipe — `| tee`, `> log.txt`, command substitution — while the container stays paused in the background, ready for `retry`. Exit 77 means "paused, awaiting retry," not "failed."

## Requirements rationale

- **Docker.** agent-ci executes each workflow job inside a container, the same way GitHub's runners do. It connects via `AGENT_CI_DOCKER_HOST` (default `unix:///var/run/docker.sock`) — **not** the standard `DOCKER_HOST` (setting `DOCKER_HOST` makes agent-ci exit with a rename error; use `AGENT_CI_DOCKER_HOST` for a remote `ssh://`/`tcp://` daemon). Without a running daemon the run cannot start; it fails fast with a dangling-socket message and exit 1. On macOS the fleet provider is **OrbStack** (`open -a OrbStack`, then `docker info` to confirm). There is no degraded mode; if you can't start a daemon, use `greening-ci` (push and watch remote CI) instead.
- **Remote reusable workflows.** A fleet `ci.yml` doesn't contain the jobs — it `uses:` a `SocketDev/socket-registry/.github/workflows/ci.yml@<sha>` reusable workflow. agent-ci fetches that over the network, which needs `--github-token` (bare flag → `gh auth token`, or `AGENT_CI_GITHUB_TOKEN`). Without it the reusable workflow can't resolve and the run can't assemble the job graph.
- **macOS jobs.** `runs-on: macos-*` jobs run in a real throwaway macOS VM via `tart` (Apple Silicon only) with `sshpass`. Missing either tool, or on Linux/Intel, those jobs **skip with a reason** rather than failing the run; the Linux/container jobs still execute. VM concurrency caps at `AGENT_CI_MACOS_VM_CONCURRENCY` (default 2 — tart's free tier). Windows jobs (`runs-on: windows-*`) always skip (unsupported).
- **Missing tools in the runner image.** Jobs run in `ghcr.io/actions/actions-runner:latest`, which ships node/git/curl/jq/unzip but **not** build toolchains, `python3`, or `xz`. A job failing on a missing tool isn't your code — add a `.github/agent-ci.Dockerfile` (`FROM ghcr.io/actions/actions-runner:latest` + `apt-get install`); agent-ci picks it up automatically and caches by content hash.
- **Install.** `@redwoodjs/agent-ci` is a fleet devDependency declared as `catalog:` in every repo's `package.json`, pinned in the wheelhouse `pnpm-workspace.yaml` catalog. `pnpm install` provisions it. The published package is a self-contained Node CLI (`dist/cli.js`) — it has no platform-binary dependencies and its `ssh2` native build scripts are declined in the fleet's `allowBuilds`/`allowScripts` (the CLI runs without them).

## When to use agent-ci vs. remote CI

| Situation | Use |
| ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------- |
| Edited a workflow YAML (`.github/workflows/*.yml`) | agent-ci first — a malformed workflow fails the same locally and remotely, skipping the push/wait loop. |
| Code change that only needs lint / typecheck / unit tests | `pnpm run check --all` — faster than spinning up containers for the pure-Node gates. |
| Workflow does something the local scripts don't (matrix, container steps, action wiring, secrets-shaped env) | agent-ci. |
| No Docker, or the failure needs an off-machine action (a deploy, a remote service) | push and use `greening-ci`. |

## Command summary

| Command | Purpose |
| -------------------------------------------------------------------- | ----------------------------------------------------------- |
| `pnpm run ci:local` | Blessed entry — `agent-ci run --all` via `node_modules/.bin`. |
| `node_modules/.bin/agent-ci run --all --pause-on-failure --github-token` | Run the branch's PR/push workflows; pause on first failure; fetch remote reusable workflows. |
| `node_modules/.bin/agent-ci run --workflow <path>` | Run a single workflow file. |
| `node_modules/.bin/agent-ci retry --name <runner>` | Resume a paused runner after a fix. |
| `node_modules/.bin/agent-ci retry --name <runner> --from-step <N>` | Resume from an earlier step. |
| `node_modules/.bin/agent-ci abort --name <runner>` | Tear down a paused runner without retrying. |

Add `--quiet` to suppress the live renderer, `--json` for the NDJSON stream. Invoke the binary via `node_modules/.bin/agent-ci` or the `ci:local` script — never `pnpm exec`/`npx` (fleet tooling ban).
90 changes: 90 additions & 0 deletions .agents/skills/fleet-auditing-api-surface/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
---
name: fleet-auditing-api-surface
description: Audits a lib's published export surface for dead/unconsumed subpaths. For each `package.json#exports` subpath, checks whether any other fleet repo imports it and whether the lib's own `src/` references it, then classifies every subpath (dead / single-consumer / internal-only / consumed) into a ranked report. Read-only — reports prune candidates, never deletes. Use weekly (the `audit-api-surface.lock.yml` gh-aw cron drives it), before a major version bump, or when trimming bundle size on an infra lib.
user-invocable: true
allowed-tools: Read, Grep, Glob, Bash(node:*), Bash(rg:*), Bash(git:*), Bash(gh:*)
model: claude-haiku-4-5
context: fork
---

# auditing-api-surface

Find published API that nobody uses. A core infra lib like `@socketsecurity/lib`
exports 500+ subpaths; some are referenced by no other fleet repo and not even
by the lib's own internals. That dead surface is pure carrying cost — bundle
weight, a wider type-check graph, a tax on every refactor. This skill surfaces
it. Read-only: it reports prune candidates, it never removes an export (mirrors
`auditing-gha`, which reports drift but flips no setting).

Repo-generic: it reads the host repo's own `package.json` name + export map, so
the same skill audits any lib-shaped fleet repo. socket-lib is the primary
target; other libs get a meaningful report too.

## When to use

- **Weekly health check** — the `audit-api-surface.lock.yml` gh-aw cron (Monday
09:23 UTC; source `audit-api-surface.md`) runs this and opens a tracking
issue. Dead surface accumulates silently; a weekly sweep keeps it visible.
- **Before a major version bump** — a `dead` or `single-consumer` export is a
candidate to remove (major) or inline into its one consumer.
- **Bundle trimming** — pairs with `trimming-bundle`; an unconsumed subpath is
weight no downstream needs.

## What it does NOT do

- **Delete anything.** Every finding is a candidate for a human. A `dead` row
may be a deliberate public entry point a not-yet-released consumer will use.
- **Prove a `dead` export is safe to remove.** The scan sees only the fleet
repos present under `$PROJECTS` (CI clones the full roster first). A repo on
the roster but absent locally is reported `unscanned`, and any subpath with an
unscanned repo is classed `unverifiable` — never silently "dead".
- **Go to symbol granularity.** Classification is per-subpath (per exported
file), not per named export. A subpath with one live symbol and ten dead ones
reads as `consumed`. Symbol-level analysis is a future pass.

## How it classifies

| Class | Meaning | Action |
| --- | --- | --- |
| `dead` | no internal refs, no external consumers, all repos scanned | prune candidate |
| `single-consumer` | exactly one external consumer | candidate to inline there |
| `internal-only` | used inside the lib, by no other repo | keep (flagged for awareness) |
| `consumed` | ≥2 external consumers | healthy, keep |
| `unverifiable` | no consumer found, but a roster repo was unscanned | re-run with that repo cloned |

Both import forms are matched: `<pkg>/<subpath>` and the `-stable` alias
`<pkg>-stable/<subpath>` (every consumer aliases the lib both ways in
`pnpm-workspace.yaml`).

## Run

From the repo being audited:

```bash
node .claude/skills/fleet/auditing-api-surface/lib/audit-api-surface.mts --report
```

Or target a sibling checkout by name (greps the others as consumers):

```bash
PROJECTS=~/projects \
node .claude/skills/fleet/auditing-api-surface/lib/audit-api-surface.mts \
--repo socket-lib --report
```

`--report` (default) writes `.claude/reports/api-surface-audit.md` (untracked,
per the report-location rule). `--json` prints the machine-readable result to
stdout — the cron workflow consumes this to build its issue body.

## Verify before trusting

The report header states the scanned-repo count and the exact import forms
matched. The internal-ref counter is a loose basename match (it errs toward
keeping an export, never toward calling a live one dead). Before acting on a
`dead` finding, confirm by hand:

```bash
rg '@socketsecurity/<pkg>(-stable)?/<subpath>' ~/projects/socket-* --glob '!**/node_modules/**'
```

A finding is a lead, not a verdict.
Loading
Loading