Files
ruflo/v3/@claude-flow/hooks/package.json
ruv 7307d1d86a chore(release): move 18 internal leaf packages from alpha to stable semver
Every @claude-flow/* leaf still on X.Y.Z-alpha.N moves to its stable X.Y.Z
(3.0.0, cli-core 3.7.0, the two plugins 1.0.0), matching the public train's
move to stable at 3.7.0. @claude-flow/embeddings is deliberately excluded:
its registry `latest` (3.0.0-alpha.45) was built from a branch not on main,
and publishing from main would drop 139 exported names.

Validated before publish:
- API surface: each package's main build compared against its published
  `latest` tarball (files, exports/bin keys, exported names). All 18 are
  equal-or-superset; no export removed.
- Every package builds; ~7.8k tests across 17 suites pass (cli-core has no
  suite of its own and is exercised through the CLI's).

Packaging fixes made along the way:
- publishConfig.tag v3alpha/alpha removed so stable versions land on
  `latest` rather than only the legacy channel tag.
- `files` allowlists (dist + README) on the 7 packages that had none. Their
  published tarballs shipped local runtime state: .claude-flow daemon logs
  and pids, settings.json, .swarm/memory.db, headless-worker prompt logs.
  A secret scan of every affected published version found no credentials.
  mcp shrinks from 335 files to 70, and no longer ships the .claude/
  helpers copy that #3411 concerned.
- plugins/providers/testing pointed every `types` condition at a
  nonexistent `.d.js` file; now `.d.ts`, so consumer type resolution works.
- Removed three subpath exports whose targets were never built (plugins
  ./examples/*, performance ./benchmarks/*); they could only throw
  ERR_MODULE_NOT_FOUND.
- Intra-leaf ranges normalised to ^<stable>, including a `file:../security`
  and a `workspace:*` devDependency that npm publish would ship verbatim.

Security: harden attention toSQL against injection (plugins)
The 13 attention SQL builders interpolated caller-supplied vectors and
config values into SQL that AttentionExecutor executes. TypeScript types do
not exist at runtime, so a string element could break out of the quoted
vector literal. Every interpolated value is now proven finite-numeric or
boolean. A differential run of 195 legitimate inputs across all 13
mechanisms produced byte-identical SQL; the new test fails 11/13 on the
original code (which emitted DROP TABLE for 5 payloads) and passes 13/13.

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-09-28 16:54:24 -04:00

104 lines
2.5 KiB
JSON

{
"name": "@claude-flow/hooks",
"version": "3.0.0",
"description": "V3 Hooks System - Event-driven lifecycle hooks with ReasoningBank learning integration",
"type": "module",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
"exports": {
".": {
"types": "./dist/index.d.ts",
"import": "./dist/index.js"
},
"./registry": {
"types": "./dist/registry/index.d.ts",
"import": "./dist/registry/index.js"
},
"./executor": {
"types": "./dist/executor/index.d.ts",
"import": "./dist/executor/index.js"
},
"./daemons": {
"types": "./dist/daemons/index.d.ts",
"import": "./dist/daemons/index.js"
},
"./statusline": {
"types": "./dist/statusline/index.d.ts",
"import": "./dist/statusline/index.js"
},
"./mcp": {
"types": "./dist/mcp/index.d.ts",
"import": "./dist/mcp/index.js"
},
"./reasoningbank": {
"types": "./dist/reasoningbank/index.d.ts",
"import": "./dist/reasoningbank/index.js"
},
"./guidance": {
"types": "./dist/reasoningbank/guidance-provider.d.ts",
"import": "./dist/reasoningbank/guidance-provider.js"
}
},
"files": [
"dist",
"bin",
"scripts"
],
"bin": {
"hooks-daemon": "./bin/hooks-daemon.js",
"statusline": "./bin/statusline.js",
"claude-flow-hooks": "./dist/cli/guidance-cli.js",
"guidance": "./dist/cli/guidance-cli.js"
},
"scripts": {
"build": "tsc -p tsconfig.json",
"clean": "rm -rf dist",
"test": "vitest run",
"test:watch": "vitest watch",
"test:coverage": "vitest run --coverage",
"lint": "eslint src --ext .ts",
"typecheck": "tsc --noEmit"
},
"dependencies": {
"@claude-flow/memory": "^3.0.0",
"@claude-flow/neural": "^3.0.0",
"@claude-flow/security": "^3.0.0",
"@claude-flow/shared": "^3.0.0",
"zod": "^3.23.0"
},
"optionalDependencies": {
"better-sqlite3": "^11.0.0"
},
"devDependencies": {
"@types/better-sqlite3": "^7.6.11",
"@types/node": "^20.10.0",
"typescript": "^5.3.0",
"vitest": "^4.1.0"
},
"peerDependencies": {
"@claude-flow/shared": "^3.0.0"
},
"engines": {
"node": ">=20.0.0"
},
"keywords": [
"claude-flow",
"hooks",
"daemons",
"statusline",
"reasoningbank",
"mcp",
"agents"
],
"author": "Claude Flow Team",
"license": "MIT",
"repository": {
"type": "git",
"url": "https://github.com/ruvnet/claude-flow.git",
"directory": "v3/@claude-flow/hooks"
},
"publishConfig": {
"access": "public"
}
}