promptwheel 0.7.4 → 0.7.6

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/package.json CHANGED
@@ -1,17 +1,19 @@
1
1
  {
2
2
  "name": "promptwheel",
3
- "version": "0.7.4",
3
+ "version": "0.7.6",
4
4
  "description": "A deterministic, zero-LLM check for your coding loop. It proves every change earned its win by re-running the result from the agent's source edits alone, so a green that came from editing the test reads GAMED. Runs in CI or a Claude Code hook, or import { check } in process.",
5
5
  "type": "module",
6
6
  "bin": {
7
- "promptwheel": "bin/promptwheel.mjs",
8
- "pw": "bin/promptwheel.mjs"
7
+ "promptwheel": "bin/promptwheel.mjs"
9
8
  },
9
+ "types": "./bin/promptwheel.d.ts",
10
10
  "exports": {
11
- ".": "./bin/promptwheel.mjs",
11
+ ".": {
12
+ "types": "./bin/promptwheel.d.ts",
13
+ "default": "./bin/promptwheel.mjs"
14
+ },
12
15
  "./bin/promptwheel.mjs": "./bin/promptwheel.mjs",
13
- "./package.json": "./package.json",
14
- "./packs/*": "./packs/*"
16
+ "./package.json": "./package.json"
15
17
  },
16
18
  "files": [
17
19
  "bin",
@@ -9,18 +9,28 @@ lower the count by editing the pattern file or a config, only by fixing the code
9
9
 
10
10
  ## Use it
11
11
 
12
- In your `promptwheel.config.json`:
12
+ The pack ships inside the `promptwheel` package, not in your repo, so install it with the
13
+ preset:
13
14
 
14
- ```json
15
- { "extends": ["packs/security/pack.json"] }
15
+ ```bash
16
+ promptwheel init --preset security # or --preset security-antihack, which adds the tripwires
16
17
  ```
17
18
 
18
- Then gate as usual:
19
+ `init` copies the pack into `.promptwheel/packs/security/` and writes a `security_findings`
20
+ metric that runs it from there. Commit the pack with the config: the gate measures in clean
21
+ git worktrees, so a pack that is not in git is absent at both refs and the metric reads
22
+ `unmeasurable` (init warns when `.promptwheel/` is gitignored; change that rule to
23
+ `.promptwheel/*` plus `!.promptwheel/packs/`, since git cannot re-include a file under an
24
+ ignored directory). Then gate as usual:
19
25
 
20
26
  ```bash
21
27
  promptwheel run --working # fails if security_findings increased
22
28
  ```
23
29
 
30
+ `pack.json` is the same metric as a config fragment for `extends`
31
+ (`{ "extends": ["packs/security/pack.json"] }`); its command is relative to a repo that
32
+ holds the pack at `packs/security/`, such as a vendored copy or this repository.
33
+
24
34
  A finding-count that drops because you fixed the code is a `PASS`; a "fix" that
25
35
  only survives with test/config/pattern edits reverted is `GAMED`.
26
36
 
@@ -46,7 +56,7 @@ Each pattern ships with its own false-positive guards (the `exclude` regexes).
46
56
 
47
57
  This is the **regex-portable** slice. The other ~75 recommended invariants
48
58
  (auth-enforcement, authz-revocation, tenant-isolation, dataflow-tainted sinks)
49
- need the AST + dataflow engine and are the follow-up - see the decant note in
50
- `explorations/`. The point of v0.1 is the architecture: security invariants are
59
+ need an AST + dataflow engine and are a possible follow-up, not part of this
60
+ pack. The point of v0.1 is the architecture: security invariants are
51
61
  now a first-class, un-gameable PromptWheel metric. Zero dependencies; the scanner
52
62
  is one file (`scan.mjs`).