@jjchill/probity-rules 0.1.0 → 0.2.0
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 +26 -0
- package/README.md +58 -11
- package/dist/presets/kmp.js +3 -3
- package/dist/presets/kotlin.d.ts.map +1 -1
- package/dist/presets/kotlin.js +5 -4
- package/dist/presets/kotlin.js.map +1 -1
- package/dist/rules/kotlin.d.ts +20 -8
- package/dist/rules/kotlin.d.ts.map +1 -1
- package/dist/rules/kotlin.js +301 -28
- package/dist/rules/kotlin.js.map +1 -1
- package/package.json +12 -13
- package/probity.config.kmp.ts +5 -5
- package/probity.config.kotlin.ts +1 -2
- package/probity.config.swift.ts +1 -2
- package/probity.config.ts +1 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,31 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.2.0
|
|
4
|
+
|
|
5
|
+
Kotlin presets now receive the ast-grep Kotlin parser automatically through
|
|
6
|
+
exact-version optional dependencies. A normal `@jjchill/probity-rules`
|
|
7
|
+
install can therefore recognize a single new red `@Test` deterministically
|
|
8
|
+
instead of silently sending it to the AI TDD judge.
|
|
9
|
+
|
|
10
|
+
The Kotlin fast path is also conservative: only a Kotlin test-source write
|
|
11
|
+
that adds one runnable, structurally annotated test and preserves every prior
|
|
12
|
+
source byte and test function bypasses the judge. Existing files may make one
|
|
13
|
+
contiguous insertion containing only the test (plus comments/whitespace) or a
|
|
14
|
+
separate test class with no additional functions; brand-new files may include
|
|
15
|
+
imports and property fixtures. Test deletion, disabling or weakening, new disable controls, changes
|
|
16
|
+
to existing test-container headers, declarations that shadow identifiers used
|
|
17
|
+
by existing tests, and multi-test additions continue to delegate. Production-source paths now always delegate, closing a
|
|
18
|
+
latent bypass that becomes material when parser support is installed by
|
|
19
|
+
default. If parser support or current-file content is unavailable, the
|
|
20
|
+
delegated result carries an explicit fast-path-unavailable diagnostic. As
|
|
21
|
+
with Probity's built-in fast paths, a deterministic pass skips the AI judge's
|
|
22
|
+
refactor-readiness check for that write.
|
|
23
|
+
|
|
24
|
+
The optional parser packages include platform-specific native artifacts and
|
|
25
|
+
the Kotlin grammar's install script. npm tolerates an unsupported optional
|
|
26
|
+
install and the rule falls back as above; consumers that do not use Kotlin or
|
|
27
|
+
need to avoid optional install work can use `npm install --omit=optional`.
|
|
28
|
+
|
|
3
29
|
## 0.1.0
|
|
4
30
|
|
|
5
31
|
First packaged release. Previously, consumers `cp`'d `probity.config.ts` +
|
package/README.md
CHANGED
|
@@ -13,21 +13,17 @@ brings rule fixes in instead of a fork rotting.
|
|
|
13
13
|
|
|
14
14
|
## Install
|
|
15
15
|
|
|
16
|
-
Not yet published to npm. Install from a clone until then:
|
|
17
|
-
|
|
18
|
-
```sh
|
|
19
|
-
npm install -D @nizos/probity /path/to/agent-skills/hooks/probity
|
|
20
|
-
```
|
|
21
|
-
|
|
22
|
-
(run `npm run build` in `hooks/probity` first — the package resolves its
|
|
23
|
-
own compiled `dist/`, not the TypeScript sources.)
|
|
24
|
-
|
|
25
|
-
Target, once published:
|
|
26
|
-
|
|
27
16
|
```sh
|
|
28
17
|
npm install -D @nizos/probity @jjchill/probity-rules
|
|
29
18
|
```
|
|
30
19
|
|
|
20
|
+
Kotlin parser support for the deterministic single-test fast path is included
|
|
21
|
+
as exact-version optional dependencies. Supported installs receive it
|
|
22
|
+
automatically. `npm install --omit=optional` disables that optimization; Kotlin
|
|
23
|
+
writes then delegate to the AI TDD rule with an explicit diagnostic. Kotlin
|
|
24
|
+
layouts outside the default classic/KMP `src/*Test/{java,kotlin}` shape can
|
|
25
|
+
pass `testFilePattern` to `withKotlinFastPath`.
|
|
26
|
+
|
|
31
27
|
## Presets
|
|
32
28
|
|
|
33
29
|
Each preset is a factory returning `RuleEntry[]` from `@nizos/probity`. Copy
|
|
@@ -94,3 +90,54 @@ files, and re-verify scoping — see the command for the full procedure.
|
|
|
94
90
|
`kiro/` ships the Kiro hook shim (unchanged install model: copy into your
|
|
95
91
|
project's `.kiro/hooks/`). `/probity-update` re-copies changed files from
|
|
96
92
|
here.
|
|
93
|
+
|
|
94
|
+
## Releasing
|
|
95
|
+
|
|
96
|
+
Releases are published by GitHub Actions
|
|
97
|
+
(`.github/workflows/publish-probity-rules.yml`) through npm **trusted
|
|
98
|
+
publishing**: the workflow proves its identity to npm with a short-lived
|
|
99
|
+
OIDC token, so there is no npm token to store and no second-factor prompt,
|
|
100
|
+
and npm attaches a provenance statement linking the package to the exact
|
|
101
|
+
commit and workflow run.
|
|
102
|
+
|
|
103
|
+
To cut a release:
|
|
104
|
+
|
|
105
|
+
1. Bump `version` in `hooks/probity/package.json` (semver: patch for rule
|
|
106
|
+
fixes, minor for new rules or options, major for changed option shapes
|
|
107
|
+
or removed exports).
|
|
108
|
+
2. Add a `## <version>` entry to `CHANGELOG.md`. `/probity-update` reads
|
|
109
|
+
these entries to tell consumers what changed, so write them for the
|
|
110
|
+
consumer: which rule changed, what a config may need.
|
|
111
|
+
3. Merge to `main`. The workflow runs typecheck, build, tests, the Kiro
|
|
112
|
+
shim tests, the 48-step eval, and a pack dry run; if the version is not
|
|
113
|
+
yet on the registry it publishes. If the version is already published,
|
|
114
|
+
the workflow succeeds without publishing.
|
|
115
|
+
|
|
116
|
+
Do **not** create a bare git tag such as `0.1.1` for an npm release. The
|
|
117
|
+
repository's `scripts/validate-versions.js` resolves the nearest git tag
|
|
118
|
+
as the plugin manifest version, and an npm-version tag would break that
|
|
119
|
+
check. Plugin releases keep their tags; npm releases are tracked by
|
|
120
|
+
`package.json` and the registry.
|
|
121
|
+
|
|
122
|
+
### One-time setup on npmjs.com
|
|
123
|
+
|
|
124
|
+
Trusted publishing must be enabled once per package by a package
|
|
125
|
+
maintainer, in the browser:
|
|
126
|
+
|
|
127
|
+
1. Open https://www.npmjs.com/package/@jjchill/probity-rules/access
|
|
128
|
+
(Settings → Publishing access).
|
|
129
|
+
2. Under **Trusted Publisher**, choose **GitHub Actions** and enter:
|
|
130
|
+
- Organization or user: `JJChill`
|
|
131
|
+
- Repository: `agent-skills`
|
|
132
|
+
- Workflow filename: `publish-probity-rules.yml` (filename only)
|
|
133
|
+
- Environment: leave empty
|
|
134
|
+
3. Save. Optionally set the package to "Require two-factor authentication
|
|
135
|
+
or a trusted publisher" so that manual publishes still need a passkey
|
|
136
|
+
while the workflow does not.
|
|
137
|
+
|
|
138
|
+
Until this is done, the workflow's publish step fails with an
|
|
139
|
+
authentication error; the test job is unaffected.
|
|
140
|
+
|
|
141
|
+
Manual fallback (not normally needed): from `hooks/probity`, with npm
|
|
142
|
+
10.9 or later in an interactive terminal, `npm publish --access public`
|
|
143
|
+
completes the second factor in the browser with a passkey.
|
package/dist/presets/kmp.js
CHANGED
|
@@ -12,9 +12,9 @@
|
|
|
12
12
|
* boundary with Markdown Given/When/Then specs in docs/specs/.
|
|
13
13
|
* Adjust globs and package names to your layout.
|
|
14
14
|
*
|
|
15
|
-
* Probity still runs on Node:
|
|
16
|
-
*
|
|
17
|
-
*
|
|
15
|
+
* Probity still runs on Node: install `@nizos/probity` and this rule
|
|
16
|
+
* package next to gradlew. The TDD fast-path parser ships as optional
|
|
17
|
+
* dependencies of the rule package.
|
|
18
18
|
*/
|
|
19
19
|
import { join } from 'node:path';
|
|
20
20
|
import { enforceTdd, forbidContentPattern } from '@nizos/probity';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kotlin.d.ts","sourceRoot":"","sources":["../../presets/kotlin.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAoC,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAuBjF,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAA;AAGhD,MAAM,MAAM,mBAAmB,GAAG;IAChC;;iDAE6C;IAC7C,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;;kEAE8D;IAC9D,SAAS,CAAC,EAAE,KAAK,CAAA;IACjB,uEAAuE;IACvE,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;oDACgD;IAChD,eAAe,CAAC,EAAE,KAAK,CAAA;IACvB,iEAAiE;IACjE,mBAAmB,CAAC,EAAE,KAAK,CAAA;IAC3B;sCACkC;IAClC,uBAAuB,CAAC,EAAE,KAAK,CAAA;IAC/B,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,KAAK,CAAA;IAChB,oEAAoE;IACpE,YAAY,CAAC,EAAE,KAAK,CAAA;IACpB,kEAAkE;IAClE,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB,CAAA;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,mBAAwB,GAAG,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"kotlin.d.ts","sourceRoot":"","sources":["../../presets/kotlin.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAoC,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAuBjF,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAA;AAGhD,MAAM,MAAM,mBAAmB,GAAG;IAChC;;iDAE6C;IAC7C,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;;kEAE8D;IAC9D,SAAS,CAAC,EAAE,KAAK,CAAA;IACjB,uEAAuE;IACvE,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;oDACgD;IAChD,eAAe,CAAC,EAAE,KAAK,CAAA;IACvB,iEAAiE;IACjE,mBAAmB,CAAC,EAAE,KAAK,CAAA;IAC3B;sCACkC;IAClC,uBAAuB,CAAC,EAAE,KAAK,CAAA;IAC/B,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,KAAK,CAAA;IAChB,oEAAoE;IACpE,YAAY,CAAC,EAAE,KAAK,CAAA;IACpB,kEAAkE;IAClE,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB,CAAA;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,mBAAwB,GAAG,SAAS,EAAE,CAiK9F"}
|
package/dist/presets/kotlin.js
CHANGED
|
@@ -112,10 +112,11 @@ export function kotlinRuleEntries(root, options = {}) {
|
|
|
112
112
|
// Inner loop: test-driven-development. Android source sets
|
|
113
113
|
// commonly keep .kt under src/main/java, so match both. Probity
|
|
114
114
|
// has no built-in Kotlin fast-path; withKotlinFastPath supplies
|
|
115
|
-
// one — a write adding exactly one @Test function
|
|
116
|
-
//
|
|
117
|
-
//
|
|
118
|
-
//
|
|
115
|
+
// one — a test-source write adding exactly one @Test function
|
|
116
|
+
// while preserving all prior source (additive test scaffolding is
|
|
117
|
+
// allowed) passes without an AI call. Its parser ships as optional
|
|
118
|
+
// dependencies; unavailable parser support delegates to
|
|
119
|
+
// enforceTdd with an explicit diagnostic.
|
|
119
120
|
{
|
|
120
121
|
files: tddGlobs,
|
|
121
122
|
// Telemetry-only additions pass deterministically — see the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kotlin.js","sourceRoot":"","sources":["../../presets/kotlin.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"kotlin.js","sourceRoot":"","sources":["../../presets/kotlin.ts"],"names":[],"mappings":"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"}
|
package/dist/rules/kotlin.d.ts
CHANGED
|
@@ -82,15 +82,24 @@ export declare function forbidNewAmbientEffects(options?: {
|
|
|
82
82
|
* only implements for TS/JS/Python/C#/Ruby/PHP: wraps a rule so that a
|
|
83
83
|
* `.kt`/`.kts` write adding exactly one new test function passes
|
|
84
84
|
* deterministically — no AI call for the most common write in a TDD
|
|
85
|
-
* loop, adding the next red test.
|
|
86
|
-
*
|
|
87
|
-
*
|
|
85
|
+
* loop, adding the next red test. The write must target a Kotlin test
|
|
86
|
+
* source set and add exactly one runnable test function. Existing files
|
|
87
|
+
* must preserve every byte and test function and make one contiguous
|
|
88
|
+
* insertion: the test (plus comments/whitespace), or a separate test
|
|
89
|
+
* class with no additional functions. Brand-new files may include
|
|
90
|
+
* imports and property fixtures but only the one test function.
|
|
91
|
+
* Edits that target production paths, introduce disabling controls,
|
|
92
|
+
* alter an existing test container's header, shadow an identifier used
|
|
93
|
+
* by an existing test, or delete, disable, or weaken tests delegate to
|
|
94
|
+
* the wrapped rule. Everything else (multi-test writes and non-Kotlin
|
|
95
|
+
* files) delegates unchanged.
|
|
88
96
|
*
|
|
89
|
-
*
|
|
90
|
-
*
|
|
91
|
-
*
|
|
92
|
-
*
|
|
93
|
-
* — it can only ever skip work, never
|
|
97
|
+
* The parser packages `@ast-grep/napi` and `@ast-grep/lang-kotlin`
|
|
98
|
+
* ship as optional dependencies, so supported npm installs receive
|
|
99
|
+
* them automatically. If a platform cannot install them, or the
|
|
100
|
+
* current file is unavailable, or parsing fails, the wrapper falls
|
|
101
|
+
* through to the wrapped rule — it can only ever skip work, never
|
|
102
|
+
* block.
|
|
94
103
|
*
|
|
95
104
|
* Same trade-off as Probity's own fast-path: a deterministic pass on
|
|
96
105
|
* every single-test addition skips the green→red refactor-readiness
|
|
@@ -99,12 +108,15 @@ export declare function forbidNewAmbientEffects(options?: {
|
|
|
99
108
|
* @param rule — the rule to wrap, normally `enforceTdd()`.
|
|
100
109
|
* @param options.patterns — replaces the default ast-grep test-node
|
|
101
110
|
* patterns (e.g. to add a Kotest spec pattern).
|
|
111
|
+
* @param options.testFilePattern — limits deterministic passes to test
|
|
112
|
+
* source paths; defaults to classic and KMP `src/*Test/{java,kotlin}`.
|
|
102
113
|
*
|
|
103
114
|
* @example
|
|
104
115
|
* { files: ['**\/src\/main\/**', '**\/src\/test\/**'], rules: [withKotlinFastPath(enforceTdd())] }
|
|
105
116
|
*/
|
|
106
117
|
export declare function withKotlinFastPath(rule: Rule, options?: {
|
|
107
118
|
patterns?: unknown[];
|
|
119
|
+
testFilePattern?: RegExp;
|
|
108
120
|
}): Rule;
|
|
109
121
|
/**
|
|
110
122
|
* Commit-on-GREEN gate — the stricter sibling of Probity's built-in
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kotlin.d.ts","sourceRoot":"","sources":["../../rules/kotlin.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAU,IAAI,EAA2B,MAAM,gBAAgB,CAAA;AAE3E,OAAO,EAIL,KAAK,YAAY,EAClB,MAAM,YAAY,CAAA;AAEnB;;;;;;;;;GASG;AAEH;;;;;GAKG;AACH,eAAO,MAAM,6BAA6B,QACoV,CAAA;AAE9X;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,QACoB,CAAA;AAExD;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,QAAqD,CAAA;AAsBrF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAsBxC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAA;CAAO,GAC7D,IAAI,CAON;
|
|
1
|
+
{"version":3,"file":"kotlin.d.ts","sourceRoot":"","sources":["../../rules/kotlin.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAU,IAAI,EAA2B,MAAM,gBAAgB,CAAA;AAE3E,OAAO,EAIL,KAAK,YAAY,EAClB,MAAM,YAAY,CAAA;AAEnB;;;;;;;;;GASG;AAEH;;;;;GAKG;AACH,eAAO,MAAM,6BAA6B,QACoV,CAAA;AAE9X;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,QACoB,CAAA;AAExD;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,QAAqD,CAAA;AAsBrF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAsBxC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAA;CAAO,GAC7D,IAAI,CAON;AAyYD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,IAAI,EACV,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAA;CAAO,GAC/D,IAAI,CAiGN;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE;IAC3C,OAAO,EAAE,MAAM,CAAA;IACf,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,EAAE,CAAA;IAC/C,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,GAAG,IAAI,CAWP;AAUD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,IAAI,EACV,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAO,GAC1D,IAAI,CAmCN;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB,QAA8B,CAAA;AA+BhE;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAclD;AAmCD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,IAAI,EACV,OAAO,EAAE;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,GAC/B,IAAI,CAqCN;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE;IAC7C,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB,GAAG,IAAI,CA6BP;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,uBAAuB,QAAkC,CAAA;AA8BtE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,IAAI,EACV,OAAO,EAAE;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,GAC/B,IAAI,CA4DN;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iCAAiC,CAAC,OAAO,EAAE;IACzD,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB,GAAG,IAAI,CA+BP;AAED;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,0zDAkC4B,CAAA"}
|
package/dist/rules/kotlin.js
CHANGED
|
@@ -125,10 +125,17 @@ const KOTLIN_TEST_PATTERNS = [
|
|
|
125
125
|
{
|
|
126
126
|
rule: {
|
|
127
127
|
kind: 'function_declaration',
|
|
128
|
-
|
|
128
|
+
has: {
|
|
129
|
+
kind: 'modifiers',
|
|
130
|
+
has: {
|
|
131
|
+
kind: 'annotation',
|
|
132
|
+
regex: '^@(Test|ParameterizedTest|RepeatedTest|TestFactory)(?:\\b|\\s*\\()',
|
|
133
|
+
},
|
|
134
|
+
},
|
|
129
135
|
},
|
|
130
136
|
},
|
|
131
137
|
];
|
|
138
|
+
const KOTLIN_TEST_FILE_PATTERN = /(?:^|\/)src\/(?:test|[A-Za-z0-9]+Test)\/(?:java|kotlin)\//;
|
|
132
139
|
let astGrep;
|
|
133
140
|
function loadKotlinAstGrep() {
|
|
134
141
|
if (astGrep !== undefined)
|
|
@@ -141,32 +148,272 @@ function loadKotlinAstGrep() {
|
|
|
141
148
|
astGrep = napi;
|
|
142
149
|
}
|
|
143
150
|
catch {
|
|
144
|
-
// Optional
|
|
151
|
+
// Optional dependencies unavailable on this install or platform.
|
|
145
152
|
astGrep = null;
|
|
146
153
|
}
|
|
147
154
|
return astGrep;
|
|
148
155
|
}
|
|
149
|
-
function
|
|
156
|
+
function findKotlinTestNodes(napi, code, patterns) {
|
|
150
157
|
const root = napi.parse('kotlin', code).root();
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
return
|
|
158
|
+
return patterns.flatMap((pattern) => root.findAll(pattern));
|
|
159
|
+
}
|
|
160
|
+
function kotlinTestNodes(napi, code, patterns) {
|
|
161
|
+
return findKotlinTestNodes(napi, code, patterns).map((node) => node.text());
|
|
162
|
+
}
|
|
163
|
+
function nodeIsInside(node, insertion) {
|
|
164
|
+
const range = node.range();
|
|
165
|
+
return (range.start.index >= insertion.startByte &&
|
|
166
|
+
range.end.index <= insertion.endByte);
|
|
167
|
+
}
|
|
168
|
+
function addedTestNode(beforeTests, afterTests, insertion) {
|
|
169
|
+
const unmatched = [...afterTests];
|
|
170
|
+
for (const beforeTest of beforeTests) {
|
|
171
|
+
const index = unmatched.findIndex((node) => node.text() === beforeTest);
|
|
172
|
+
if (index === -1)
|
|
173
|
+
return null;
|
|
174
|
+
unmatched.splice(index, 1);
|
|
175
|
+
}
|
|
176
|
+
if (unmatched.length !== 1)
|
|
177
|
+
return null;
|
|
178
|
+
const added = unmatched[0];
|
|
179
|
+
if (beforeTests.includes(added.text()))
|
|
180
|
+
return null;
|
|
181
|
+
return nodeIsInside(added, insertion) ? added : null;
|
|
182
|
+
}
|
|
183
|
+
function singleInsertion(before, after) {
|
|
184
|
+
if (after.length <= before.length)
|
|
185
|
+
return null;
|
|
186
|
+
let prefix = 0;
|
|
187
|
+
while (prefix < before.length && before[prefix] === after[prefix]) {
|
|
188
|
+
prefix += 1;
|
|
189
|
+
}
|
|
190
|
+
let beforeSuffix = before.length;
|
|
191
|
+
let afterSuffix = after.length;
|
|
192
|
+
while (beforeSuffix > prefix &&
|
|
193
|
+
before[beforeSuffix - 1] === after[afterSuffix - 1]) {
|
|
194
|
+
beforeSuffix -= 1;
|
|
195
|
+
afterSuffix -= 1;
|
|
196
|
+
}
|
|
197
|
+
if (beforeSuffix !== prefix)
|
|
198
|
+
return null;
|
|
199
|
+
const text = after.slice(prefix, afterSuffix);
|
|
200
|
+
const startByte = Buffer.byteLength(after.slice(0, prefix), 'utf8');
|
|
201
|
+
return {
|
|
202
|
+
text,
|
|
203
|
+
startByte,
|
|
204
|
+
endByte: startByte + Buffer.byteLength(text, 'utf8'),
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
function isRunnableTestNode(node) {
|
|
208
|
+
const ancestors = node.ancestors();
|
|
209
|
+
const owner = ancestors[1];
|
|
210
|
+
if (ancestors[0]?.kind() !== 'class_body' ||
|
|
211
|
+
owner?.kind() !== 'class_declaration' ||
|
|
212
|
+
ancestors[2]?.kind() !== 'source_file' ||
|
|
213
|
+
!owner.children().some((child) => child.kind() === 'class')) {
|
|
214
|
+
return false;
|
|
215
|
+
}
|
|
216
|
+
const bodyStart = owner.text().indexOf('{');
|
|
217
|
+
const header = bodyStart === -1 ? owner.text() : owner.text().slice(0, bodyStart);
|
|
218
|
+
return countMatches(header, DISABLING_TEST_CONTROL) === 0;
|
|
219
|
+
}
|
|
220
|
+
function onlyCommentsAndWhitespace(code) {
|
|
221
|
+
return /^\s*$/.test(code.replace(/\/\/[^\r\n]*\r?\n|\/\*[\s\S]*?\*\//g, ''));
|
|
222
|
+
}
|
|
223
|
+
function identifiersIn(tests) {
|
|
224
|
+
return new Set(tests.flatMap((test) => [...test.matchAll(/`([^`]+)`|\b([A-Za-z_]\w*)\b/g)].map((match) => match[1] ?? match[2])));
|
|
225
|
+
}
|
|
226
|
+
function safeExistingFileInsertion(napi, before, after, addedTest, beforeTests, patterns) {
|
|
227
|
+
const insertion = singleInsertion(before, after);
|
|
228
|
+
if (!insertion || !nodeIsInside(addedTest, insertion))
|
|
229
|
+
return false;
|
|
230
|
+
const addedText = addedTest.text();
|
|
231
|
+
const addedAt = insertion.text.indexOf(addedText);
|
|
232
|
+
if (addedAt !== -1) {
|
|
233
|
+
const remainder = insertion.text.slice(0, addedAt) +
|
|
234
|
+
insertion.text.slice(addedAt + addedText.length);
|
|
235
|
+
if (onlyCommentsAndWhitespace(remainder))
|
|
236
|
+
return true;
|
|
237
|
+
}
|
|
238
|
+
const trimmed = insertion.text.trim();
|
|
239
|
+
const priorIdentifiers = identifiersIn(beforeTests);
|
|
240
|
+
const root = napi.parse('kotlin', after).root();
|
|
241
|
+
return root.findAll({ rule: { kind: 'class_declaration' } }).some((node) => {
|
|
242
|
+
if (node.text().trim() !== trimmed)
|
|
243
|
+
return false;
|
|
244
|
+
const name = nodeName(node);
|
|
245
|
+
if (name && priorIdentifiers.has(name))
|
|
246
|
+
return false;
|
|
247
|
+
const tests = patterns.flatMap((pattern) => node.findAll(pattern));
|
|
248
|
+
const functions = node.findAll({ rule: { kind: 'function_declaration' } });
|
|
249
|
+
return (tests.length === 1 &&
|
|
250
|
+
tests[0].range().start.index === addedTest.range().start.index &&
|
|
251
|
+
tests[0].range().end.index === addedTest.range().end.index &&
|
|
252
|
+
isRunnableTestNode(addedTest) &&
|
|
253
|
+
functions.length === 1);
|
|
254
|
+
});
|
|
255
|
+
}
|
|
256
|
+
function safeNewTestFile(napi, code, addedTest) {
|
|
257
|
+
if (!isRunnableTestNode(addedTest))
|
|
258
|
+
return false;
|
|
259
|
+
const root = napi.parse('kotlin', code).root();
|
|
260
|
+
return (root.findAll({ rule: { kind: 'class_declaration' } }).length === 1 &&
|
|
261
|
+
root.findAll({ rule: { kind: 'function_declaration' } }).length === 1);
|
|
262
|
+
}
|
|
263
|
+
const DISABLING_TEST_CONTROL = /@(?:[A-Za-z_]\w*\.)*(?:Ignore|Disabled)\b|\benabled\s*=\s*false\b/g;
|
|
264
|
+
function countMatches(code, pattern) {
|
|
265
|
+
pattern.lastIndex = 0;
|
|
266
|
+
return [...code.matchAll(pattern)].length;
|
|
267
|
+
}
|
|
268
|
+
function introducesDisablingControl(before, after) {
|
|
269
|
+
return (countMatches(after, DISABLING_TEST_CONTROL) >
|
|
270
|
+
countMatches(before, DISABLING_TEST_CONTROL));
|
|
271
|
+
}
|
|
272
|
+
function nodeName(node) {
|
|
273
|
+
const names = node
|
|
274
|
+
.children()
|
|
275
|
+
.filter((child) => child.kind() === 'simple_identifier' || child.kind() === 'type_identifier');
|
|
276
|
+
const direct = names.at(-1)?.text();
|
|
277
|
+
if (direct)
|
|
278
|
+
return direct.replace(/^`|`$/g, '');
|
|
279
|
+
const nested = node.findAll({ rule: { kind: 'simple_identifier' } })[0];
|
|
280
|
+
return nested ? nested.text().replace(/^`|`$/g, '') : null;
|
|
281
|
+
}
|
|
282
|
+
function enclosingScope(node) {
|
|
283
|
+
const container = node
|
|
284
|
+
.ancestors()
|
|
285
|
+
.find((ancestor) => ancestor.kind() === 'class_declaration' ||
|
|
286
|
+
ancestor.kind() === 'object_declaration');
|
|
287
|
+
return container ? (nodeName(container) ?? '<anonymous>') : '<top-level>';
|
|
288
|
+
}
|
|
289
|
+
function testScopes(napi, code, patterns) {
|
|
290
|
+
const root = napi.parse('kotlin', code).root();
|
|
291
|
+
const scopes = new Set();
|
|
292
|
+
for (const pattern of patterns) {
|
|
293
|
+
for (const node of root.findAll(pattern))
|
|
294
|
+
scopes.add(enclosingScope(node));
|
|
295
|
+
}
|
|
296
|
+
return scopes;
|
|
297
|
+
}
|
|
298
|
+
function containerHeaders(napi, code) {
|
|
299
|
+
const root = napi.parse('kotlin', code).root();
|
|
300
|
+
const headers = new Map();
|
|
301
|
+
for (const kind of ['class_declaration', 'object_declaration']) {
|
|
302
|
+
for (const node of root.findAll({ rule: { kind } })) {
|
|
303
|
+
const name = nodeName(node);
|
|
304
|
+
if (!name)
|
|
305
|
+
continue;
|
|
306
|
+
const bodyStart = node.text().indexOf('{');
|
|
307
|
+
headers.set(name, (bodyStart === -1 ? node.text() : node.text().slice(0, bodyStart)).trim());
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
return headers;
|
|
311
|
+
}
|
|
312
|
+
function changesExistingTestContainer(napi, before, after, patterns) {
|
|
313
|
+
const scopes = testScopes(napi, before, patterns);
|
|
314
|
+
const beforeHeaders = containerHeaders(napi, before);
|
|
315
|
+
const afterHeaders = containerHeaders(napi, after);
|
|
316
|
+
for (const scope of scopes) {
|
|
317
|
+
if (scope === '<top-level>')
|
|
318
|
+
continue;
|
|
319
|
+
if (beforeHeaders.get(scope) !== afterHeaders.get(scope))
|
|
320
|
+
return true;
|
|
321
|
+
}
|
|
322
|
+
return false;
|
|
323
|
+
}
|
|
324
|
+
function declarations(napi, code) {
|
|
325
|
+
const root = napi.parse('kotlin', code).root();
|
|
326
|
+
const found = [];
|
|
327
|
+
for (const kind of [
|
|
328
|
+
'function_declaration',
|
|
329
|
+
'property_declaration',
|
|
330
|
+
'class_declaration',
|
|
331
|
+
'object_declaration',
|
|
332
|
+
]) {
|
|
333
|
+
for (const node of root.findAll({ rule: { kind } })) {
|
|
334
|
+
const name = nodeName(node);
|
|
335
|
+
if (name)
|
|
336
|
+
found.push({ name, scope: enclosingScope(node) });
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
for (const node of root.findAll({ rule: { kind: 'import_header' } })) {
|
|
340
|
+
const alias = node.findAll({ rule: { kind: 'type_identifier' } }).at(-1);
|
|
341
|
+
const leaf = node.findAll({ rule: { kind: 'simple_identifier' } }).at(-1);
|
|
342
|
+
const name = (alias ?? leaf)?.text().replace(/^`|`$/g, '');
|
|
343
|
+
if (name)
|
|
344
|
+
found.push({ name, scope: '<top-level>' });
|
|
345
|
+
}
|
|
346
|
+
return found;
|
|
347
|
+
}
|
|
348
|
+
function introducedDeclarations(before, after) {
|
|
349
|
+
const existing = new Map();
|
|
350
|
+
for (const declaration of before) {
|
|
351
|
+
const key = `${declaration.scope}\u0000${declaration.name}`;
|
|
352
|
+
existing.set(key, (existing.get(key) ?? 0) + 1);
|
|
353
|
+
}
|
|
354
|
+
return after.filter((declaration) => {
|
|
355
|
+
const key = `${declaration.scope}\u0000${declaration.name}`;
|
|
356
|
+
const remaining = existing.get(key) ?? 0;
|
|
357
|
+
if (remaining === 0)
|
|
358
|
+
return true;
|
|
359
|
+
existing.set(key, remaining - 1);
|
|
360
|
+
return false;
|
|
361
|
+
});
|
|
362
|
+
}
|
|
363
|
+
function shadowsExistingTestIdentifier(napi, before, after, beforeTests, patterns) {
|
|
364
|
+
const identifiers = new Set(beforeTests.flatMap((test) => [...test.matchAll(/`([^`]+)`|\b([A-Za-z_]\w*)\b/g)].map((match) => match[1] ?? match[2])));
|
|
365
|
+
const scopes = testScopes(napi, before, patterns);
|
|
366
|
+
return introducedDeclarations(declarations(napi, before), declarations(napi, after)).some(({ name, scope }) => identifiers.has(name) &&
|
|
367
|
+
(scope === '<top-level>' || scopes.has(scope)));
|
|
368
|
+
}
|
|
369
|
+
function matchesTestPath(pattern, path) {
|
|
370
|
+
pattern.lastIndex = 0;
|
|
371
|
+
if (pattern !== KOTLIN_TEST_FILE_PATTERN)
|
|
372
|
+
return pattern.test(path);
|
|
373
|
+
const match = pattern.exec(path);
|
|
374
|
+
if (!match)
|
|
375
|
+
return false;
|
|
376
|
+
const prefix = path.slice(0, match.index);
|
|
377
|
+
return !/(?:^|\/)src\/(?:main|[A-Za-z0-9]+Main)\/(?:java|kotlin)\//.test(prefix);
|
|
378
|
+
}
|
|
379
|
+
async function delegateWithFastPathUnavailable(rule, action, ctx, detail) {
|
|
380
|
+
const result = await rule(action, ctx);
|
|
381
|
+
const diagnostic = `Kotlin fast path unavailable (${detail}); delegated to the wrapped rule.`;
|
|
382
|
+
if (result.kind === 'violation') {
|
|
383
|
+
return { kind: 'violation', reason: `${result.reason} ${diagnostic}` };
|
|
384
|
+
}
|
|
385
|
+
return {
|
|
386
|
+
...result,
|
|
387
|
+
reason: result.reason ?? diagnostic,
|
|
388
|
+
notes: [
|
|
389
|
+
...(result.notes ?? []),
|
|
390
|
+
{ kind: 'kotlin-fast-path-unavailable' },
|
|
391
|
+
],
|
|
392
|
+
};
|
|
155
393
|
}
|
|
156
394
|
/**
|
|
157
395
|
* Kotlin equivalent of `enforceTdd({ fastPath: true })`, which Probity
|
|
158
396
|
* only implements for TS/JS/Python/C#/Ruby/PHP: wraps a rule so that a
|
|
159
397
|
* `.kt`/`.kts` write adding exactly one new test function passes
|
|
160
398
|
* deterministically — no AI call for the most common write in a TDD
|
|
161
|
-
* loop, adding the next red test.
|
|
162
|
-
*
|
|
163
|
-
*
|
|
399
|
+
* loop, adding the next red test. The write must target a Kotlin test
|
|
400
|
+
* source set and add exactly one runnable test function. Existing files
|
|
401
|
+
* must preserve every byte and test function and make one contiguous
|
|
402
|
+
* insertion: the test (plus comments/whitespace), or a separate test
|
|
403
|
+
* class with no additional functions. Brand-new files may include
|
|
404
|
+
* imports and property fixtures but only the one test function.
|
|
405
|
+
* Edits that target production paths, introduce disabling controls,
|
|
406
|
+
* alter an existing test container's header, shadow an identifier used
|
|
407
|
+
* by an existing test, or delete, disable, or weaken tests delegate to
|
|
408
|
+
* the wrapped rule. Everything else (multi-test writes and non-Kotlin
|
|
409
|
+
* files) delegates unchanged.
|
|
164
410
|
*
|
|
165
|
-
*
|
|
166
|
-
*
|
|
167
|
-
*
|
|
168
|
-
*
|
|
169
|
-
* — it can only ever skip work, never
|
|
411
|
+
* The parser packages `@ast-grep/napi` and `@ast-grep/lang-kotlin`
|
|
412
|
+
* ship as optional dependencies, so supported npm installs receive
|
|
413
|
+
* them automatically. If a platform cannot install them, or the
|
|
414
|
+
* current file is unavailable, or parsing fails, the wrapper falls
|
|
415
|
+
* through to the wrapped rule — it can only ever skip work, never
|
|
416
|
+
* block.
|
|
170
417
|
*
|
|
171
418
|
* Same trade-off as Probity's own fast-path: a deterministic pass on
|
|
172
419
|
* every single-test addition skips the green→red refactor-readiness
|
|
@@ -175,36 +422,62 @@ function countKotlinTests(napi, code, patterns) {
|
|
|
175
422
|
* @param rule — the rule to wrap, normally `enforceTdd()`.
|
|
176
423
|
* @param options.patterns — replaces the default ast-grep test-node
|
|
177
424
|
* patterns (e.g. to add a Kotest spec pattern).
|
|
425
|
+
* @param options.testFilePattern — limits deterministic passes to test
|
|
426
|
+
* source paths; defaults to classic and KMP `src/*Test/{java,kotlin}`.
|
|
178
427
|
*
|
|
179
428
|
* @example
|
|
180
429
|
* { files: ['**\/src\/main\/**', '**\/src\/test\/**'], rules: [withKotlinFastPath(enforceTdd())] }
|
|
181
430
|
*/
|
|
182
431
|
export function withKotlinFastPath(rule, options = {}) {
|
|
183
432
|
const patterns = options.patterns ?? KOTLIN_TEST_PATTERNS;
|
|
433
|
+
const testFilePattern = options.testFilePattern ?? KOTLIN_TEST_FILE_PATTERN;
|
|
184
434
|
const wrapped = async function kotlinFastPath(action, ctx) {
|
|
185
|
-
if (action.kind !== 'write' ||
|
|
435
|
+
if (action.kind !== 'write' ||
|
|
436
|
+
!/\.kts?$/.test(action.path) ||
|
|
437
|
+
!matchesTestPath(testFilePattern, action.path)) {
|
|
186
438
|
return rule(action, ctx);
|
|
187
439
|
}
|
|
188
440
|
const napi = loadKotlinAstGrep();
|
|
189
|
-
if (!napi)
|
|
190
|
-
return rule
|
|
441
|
+
if (!napi) {
|
|
442
|
+
return delegateWithFastPathUnavailable(rule, action, ctx, 'parser packages could not be loaded');
|
|
443
|
+
}
|
|
191
444
|
const before = await ctx?.readFile?.(action.path);
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
return rule(action, ctx);
|
|
445
|
+
if (!before || before.kind === 'unknown') {
|
|
446
|
+
return delegateWithFastPathUnavailable(rule, action, ctx, 'current file content unavailable');
|
|
447
|
+
}
|
|
196
448
|
const beforeText = before.kind === 'present' ? before.content : '';
|
|
197
|
-
|
|
449
|
+
const insertion = beforeText.length === 0
|
|
450
|
+
? {
|
|
451
|
+
text: action.content,
|
|
452
|
+
startByte: 0,
|
|
453
|
+
endByte: Buffer.byteLength(action.content, 'utf8'),
|
|
454
|
+
}
|
|
455
|
+
: singleInsertion(beforeText, action.content);
|
|
456
|
+
if (!insertion)
|
|
457
|
+
return rule(action, ctx);
|
|
458
|
+
let fastPath = false;
|
|
198
459
|
try {
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
460
|
+
const beforeTests = kotlinTestNodes(napi, beforeText, patterns);
|
|
461
|
+
const afterTestNodes = findKotlinTestNodes(napi, action.content, patterns);
|
|
462
|
+
const addedTest = addedTestNode(beforeTests, afterTestNodes, insertion);
|
|
463
|
+
if (addedTest) {
|
|
464
|
+
const unsafeInsertion = introducesDisablingControl(beforeText, action.content) ||
|
|
465
|
+
changesExistingTestContainer(napi, beforeText, action.content, patterns) ||
|
|
466
|
+
shadowsExistingTestIdentifier(napi, beforeText, action.content, beforeTests, patterns);
|
|
467
|
+
fastPath =
|
|
468
|
+
!unsafeInsertion &&
|
|
469
|
+
isRunnableTestNode(addedTest) &&
|
|
470
|
+
(beforeText.length === 0
|
|
471
|
+
? safeNewTestFile(napi, action.content, addedTest)
|
|
472
|
+
: safeExistingFileInsertion(napi, beforeText, action.content, addedTest, beforeTests, patterns));
|
|
473
|
+
}
|
|
202
474
|
}
|
|
203
475
|
catch {
|
|
204
|
-
return rule
|
|
476
|
+
return delegateWithFastPathUnavailable(rule, action, ctx, 'parsing failed');
|
|
205
477
|
}
|
|
206
|
-
if (
|
|
478
|
+
if (fastPath) {
|
|
207
479
|
return { kind: 'pass', notes: [{ kind: 'fast-path' }] };
|
|
480
|
+
}
|
|
208
481
|
return rule(action, ctx);
|
|
209
482
|
};
|
|
210
483
|
// Surface the wrapped rule in engine traces and block reports:
|
package/dist/rules/kotlin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kotlin.js","sourceRoot":"","sources":["../../rules/kotlin.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"kotlin.js","sourceRoot":"","sources":["../../rules/kotlin.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jjchill/probity-rules",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Versioned Probity rule presets and CLI tooling for the agent-skills catalog (test-driven-development, ports-and-adapters, acceptance-testing, spec-test parity, ubiquitous-language) — see hooks/PROBITY.md.",
|
|
5
5
|
"license": "MIT",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "https://github.com/JJChill/agent-skills",
|
|
9
|
+
"directory": "hooks/probity"
|
|
10
|
+
},
|
|
6
11
|
"type": "module",
|
|
7
12
|
"exports": {
|
|
8
13
|
".": "./dist/index.js",
|
|
@@ -34,21 +39,11 @@
|
|
|
34
39
|
"peerDependencies": {
|
|
35
40
|
"@nizos/probity": "^1.10.0"
|
|
36
41
|
},
|
|
37
|
-
"peerDependenciesMeta": {
|
|
38
|
-
"@ast-grep/napi": {
|
|
39
|
-
"optional": true
|
|
40
|
-
},
|
|
41
|
-
"@ast-grep/lang-kotlin": {
|
|
42
|
-
"optional": true
|
|
43
|
-
}
|
|
44
|
-
},
|
|
45
42
|
"dependencies": {
|
|
46
|
-
"
|
|
47
|
-
"
|
|
43
|
+
"jiti": "^2.6.1",
|
|
44
|
+
"picomatch": "^4.0.4"
|
|
48
45
|
},
|
|
49
46
|
"devDependencies": {
|
|
50
|
-
"@ast-grep/lang-kotlin": "^0.0.7",
|
|
51
|
-
"@ast-grep/napi": "^0.45.1",
|
|
52
47
|
"@nizos/probity": "^1.10.0",
|
|
53
48
|
"@types/node": "^22.0.0",
|
|
54
49
|
"@types/picomatch": "^3.0.2",
|
|
@@ -64,5 +59,9 @@
|
|
|
64
59
|
"eval": "tsx evals/workflow-eval.ts",
|
|
65
60
|
"prepublishOnly": "npm run clean && npm run build && npm test",
|
|
66
61
|
"pack:check": "npm pack --dry-run"
|
|
62
|
+
},
|
|
63
|
+
"optionalDependencies": {
|
|
64
|
+
"@ast-grep/lang-kotlin": "0.0.7",
|
|
65
|
+
"@ast-grep/napi": "0.45.1"
|
|
67
66
|
}
|
|
68
67
|
}
|
package/probity.config.kmp.ts
CHANGED
|
@@ -11,14 +11,14 @@
|
|
|
11
11
|
* acceptance tests driven through a Robot DSL at the ViewModel
|
|
12
12
|
* boundary with Markdown Given/When/Then specs in docs/specs/.
|
|
13
13
|
*
|
|
14
|
-
* Install
|
|
15
|
-
* clone-path note):
|
|
14
|
+
* Install:
|
|
16
15
|
*
|
|
17
16
|
* npm install -D @nizos/probity @jjchill/probity-rules
|
|
18
17
|
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
* fast
|
|
18
|
+
* The Kotlin TDD fast-path parser ships automatically as optional
|
|
19
|
+
* dependencies of `@jjchill/probity-rules`. Use `npm install
|
|
20
|
+
* --omit=optional` only when the deterministic fast path is not
|
|
21
|
+
* required; Kotlin writes then delegate to the AI TDD rule.
|
|
22
22
|
*
|
|
23
23
|
* EDIT: the rule entries live in `presets/kmp.ts` (`kmpRuleEntries`).
|
|
24
24
|
* The globs inside it (core/domain packages, source sets, adapter
|
package/probity.config.kotlin.ts
CHANGED
|
@@ -8,8 +8,7 @@
|
|
|
8
8
|
* AWS/Amplify/Apollo/OkHttp/Retrofit/Room vendor stack) — adjust the
|
|
9
9
|
* options below to your layout.
|
|
10
10
|
*
|
|
11
|
-
* Install
|
|
12
|
-
* clone-path note):
|
|
11
|
+
* Install:
|
|
13
12
|
*
|
|
14
13
|
* npm install -D @nizos/probity @jjchill/probity-rules
|
|
15
14
|
*
|
package/probity.config.swift.ts
CHANGED
|
@@ -10,8 +10,7 @@
|
|
|
10
10
|
* Calibrated against a production CocoaPods + SwiftPM app — adjust
|
|
11
11
|
* globs and package names to your layout.
|
|
12
12
|
*
|
|
13
|
-
* Install
|
|
14
|
-
* clone-path note):
|
|
13
|
+
* Install:
|
|
15
14
|
*
|
|
16
15
|
* npm install -D @nizos/probity @jjchill/probity-rules
|
|
17
16
|
*
|
package/probity.config.ts
CHANGED
|
@@ -7,10 +7,7 @@
|
|
|
7
7
|
*
|
|
8
8
|
* npm install -D @nizos/probity @jjchill/probity-rules
|
|
9
9
|
*
|
|
10
|
-
*
|
|
11
|
-
* npm install -D @nizos/probity /path/to/agent-skills/hooks/probity
|
|
12
|
-
* after running `npm run build` in that directory), then wire the
|
|
13
|
-
* hook (see hooks/PROBITY.md).
|
|
10
|
+
* then wire the hook (see hooks/PROBITY.md).
|
|
14
11
|
*
|
|
15
12
|
* EDIT THESE OPTIONS to your layout — the defaults below describe a
|
|
16
13
|
* common src/core + src/adapters project and WILL need adjusting:
|