@adversarylabs/sdk 0.1.11 → 0.1.13
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/README.md +38 -5
- package/dist/index.d.ts +59 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +258 -5
- package/dist/index.js.map +1 -1
- package/dist/model.d.ts +27 -0
- package/dist/model.d.ts.map +1 -1
- package/dist/model.js.map +1 -1
- package/package.json +2 -1
package/README.md
CHANGED
|
@@ -187,7 +187,7 @@ app.rule("scoped", async (ctx) => {
|
|
|
187
187
|
});
|
|
188
188
|
```
|
|
189
189
|
|
|
190
|
-
### Opinion framing (`formatOpinion`)
|
|
190
|
+
### Opinion framing (`formatOpinion` / `formatOpinionAsync`)
|
|
191
191
|
|
|
192
192
|
Do not hardcode "before merging" (or similar decision language) in domain adversaries.
|
|
193
193
|
The runner already resolved the review posture; the SDK turns a ship decision and domain
|
|
@@ -200,27 +200,60 @@ concern into posture-aware prose:
|
|
|
200
200
|
| `worktree` | uncommitted local changes (`headRef` is `WORKTREE`) | before committing |
|
|
201
201
|
|
|
202
202
|
```ts
|
|
203
|
-
import { formatOpinion } from "@adversarylabs/sdk";
|
|
203
|
+
import { formatOpinion, formatOpinionAsync, requireOpinionConcern } from "@adversarylabs/sdk";
|
|
204
204
|
|
|
205
|
+
// Synchronous: concern must already be a noun phrase.
|
|
205
206
|
ctx.review.opinion(
|
|
206
207
|
formatOpinion({
|
|
207
208
|
ship: false,
|
|
208
|
-
// Prefer a noun phrase. Full clauses are normalized for grammar.
|
|
209
209
|
concern: "direct process termination below the application boundary",
|
|
210
210
|
change: ctx.change,
|
|
211
211
|
}),
|
|
212
212
|
);
|
|
213
|
+
|
|
214
|
+
// Async: free-form model titles/clauses are rewritten via the CLI model broker.
|
|
215
|
+
ctx.review.opinion(
|
|
216
|
+
await formatOpinionAsync({
|
|
217
|
+
ship: false,
|
|
218
|
+
concern: "api get/post/patch/put silently no-op for v1 paths",
|
|
219
|
+
change: ctx.change,
|
|
220
|
+
model: ctx.model,
|
|
221
|
+
}),
|
|
222
|
+
);
|
|
223
|
+
|
|
224
|
+
// Or rewrite only the concern, then format:
|
|
225
|
+
const { concern } = await ctx.model.concern({
|
|
226
|
+
text: "Commands discard inherited context, breaking Ctrl+C",
|
|
227
|
+
});
|
|
228
|
+
// concern === "inherited context in command handlers" (example)
|
|
229
|
+
|
|
230
|
+
// Validate early when adapting model titles or free-form text:
|
|
231
|
+
requireOpinionConcern("forced exit code 124");
|
|
232
|
+
// throws: requireOpinionConcern("commands replace inherited context");
|
|
213
233
|
```
|
|
214
234
|
|
|
215
235
|
Helpers:
|
|
216
236
|
|
|
217
237
|
- `resolveReviewPosture(change)` — map `ctx.change` to `repository` | `change` | `worktree`
|
|
218
|
-
- `
|
|
219
|
-
- `
|
|
238
|
+
- `isOpinionConcernPhrase(concern)` — true when the string is a short noun phrase
|
|
239
|
+
- `requireOpinionConcern(concern)` — validate/normalize a noun phrase or throw
|
|
240
|
+
- `normalizeOpinionConcern(concern)` — lenient helper (may wrap clauses as `that …`); prefer
|
|
241
|
+
`requireOpinionConcern` for overall opinions
|
|
242
|
+
- `formatOpinion({ ship, concern?, remainingCount?, change?, posture? })` — build `{ ship, summary }`;
|
|
243
|
+
**rejects clause-shaped / headline concerns**
|
|
244
|
+
- `formatOpinionAsync({ ship, concern?, model, … })` — same framing; rewrites invalid concerns
|
|
245
|
+
through the model broker (no call when the phrase is already valid)
|
|
246
|
+
- `rewriteOpinionConcern(model, { text })` / `ctx.model.concern({ text })` — pass-through rewrite
|
|
247
|
+
only (structured schema + `requireOpinionConcern` validation, one retry by default)
|
|
220
248
|
|
|
221
249
|
When an adversary omits `ctx.review.opinion(...)`, the SDK synthesizes an opinion from residual
|
|
222
250
|
findings using the same posture rules.
|
|
223
251
|
|
|
252
|
+
**Ownership:** adversaries supply judgment (ship + concern draft); the SDK validates noun-phrase
|
|
253
|
+
shape, optionally rewrites invalid concerns via the CLI-owned model broker, and frames posture
|
|
254
|
+
language. The CLI prints `opinion.summary` and does not rewrite prose at render time.
|
|
255
|
+
Provider credentials remain in the CLI broker (`permissions.model: true`).
|
|
256
|
+
|
|
224
257
|
### `app.defineRule(definition)`
|
|
225
258
|
|
|
226
259
|
Registers domain-specific aggregation for a stable rule id. The SDK still owns grouping,
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { type ReviewModel } from "./model.js";
|
|
2
|
-
export { ADVERSARY_MODEL_ENDPOINT_ENV, ADVERSARY_MODEL_PROTOCOL_VERSION, ADVERSARY_MODEL_TOKEN_ENV, BrokerReviewModel, ModelReviewError, ModelUnavailableError, createModelFromEnvironment, unavailableModel, type ModelReviewBudget, type ModelEnvironment, type ModelReviewRequest, type ModelReviewResult, type ModelReviewUsage, type ReviewModel, } from "./model.js";
|
|
1
|
+
import { type ContextualReviewModel, type ModelConcernRequest, type ModelConcernResult, type ModelReviewBudget, type ReviewModel } from "./model.js";
|
|
2
|
+
export { ADVERSARY_MODEL_ENDPOINT_ENV, ADVERSARY_MODEL_PROTOCOL_VERSION, ADVERSARY_MODEL_TOKEN_ENV, BrokerReviewModel, ModelReviewError, ModelUnavailableError, createModelFromEnvironment, unavailableModel, type ContextualReviewModel, type ModelConcernRequest, type ModelConcernResult, type ModelReviewBudget, type ModelEnvironment, type ModelReviewRequest, type ModelReviewResult, type ModelReviewUsage, type ReviewModel, } from "./model.js";
|
|
3
3
|
export { ADVERSARY_MANIFEST_FILE_NAME, ADVERSARY_MANIFEST_MAX_BYTES, ManifestValidationError, parseAdversaryManifest, validateAdversaryManifest, type AdversaryManifest, type DetectionManifest, type EnvironmentPermissionsManifest, type FilesystemPermissionsManifest, type FindingsManifest, type PermissionsManifest, type RuntimeManifest, type TriggerManifest, } from "./manifest.js";
|
|
4
4
|
export declare const DEFAULT_INPUT_PATH = "/adversary/input.json";
|
|
5
5
|
export declare const DEFAULT_OUTPUT_PATH = "/adversary/output.json";
|
|
@@ -155,9 +155,9 @@ export interface FormatOpinionOptions {
|
|
|
155
155
|
/** Whether the reviewer would accept the current target as-is enough to proceed. */
|
|
156
156
|
ship: boolean;
|
|
157
157
|
/**
|
|
158
|
-
* What should be fixed.
|
|
159
|
-
*
|
|
160
|
-
*
|
|
158
|
+
* What should be fixed. For {@link formatOpinion}, must already be a short noun
|
|
159
|
+
* phrase suitable after "I would address …". For {@link formatOpinionAsync},
|
|
160
|
+
* free-form titles/clauses are rewritten via the model broker when invalid.
|
|
161
161
|
*/
|
|
162
162
|
concern?: string;
|
|
163
163
|
/**
|
|
@@ -170,6 +170,12 @@ export interface FormatOpinionOptions {
|
|
|
170
170
|
/** Explicit posture override. */
|
|
171
171
|
posture?: ReviewPosture;
|
|
172
172
|
}
|
|
173
|
+
export interface FormatOpinionAsyncOptions extends FormatOpinionOptions {
|
|
174
|
+
/** Model used to rewrite invalid concerns (CLI broker via {@link ReviewModel.review}). */
|
|
175
|
+
model: ReviewModel;
|
|
176
|
+
/** Optional budget for concern rewrite calls. */
|
|
177
|
+
concernBudget?: ModelReviewBudget;
|
|
178
|
+
}
|
|
173
179
|
export interface ReviewScore {
|
|
174
180
|
key: string;
|
|
175
181
|
label?: string;
|
|
@@ -285,7 +291,11 @@ export interface RuleContext {
|
|
|
285
291
|
relpath: (path: string) => string;
|
|
286
292
|
glob: (pattern: string) => Promise<string[]>;
|
|
287
293
|
rglob: (pattern: string) => Promise<string[]>;
|
|
288
|
-
|
|
294
|
+
/**
|
|
295
|
+
* CLI-brokered model access. Prefer {@link ContextualReviewModel.concern} when
|
|
296
|
+
* adapting free-form titles into noun-phrase opinion concerns.
|
|
297
|
+
*/
|
|
298
|
+
model: ContextualReviewModel;
|
|
289
299
|
observe: (observation: ObservationInit) => void;
|
|
290
300
|
finding: (finding: FindingInput) => void;
|
|
291
301
|
review: {
|
|
@@ -396,16 +406,57 @@ export declare function normalizeChangeContext(change: RuntimeChange | null | un
|
|
|
396
406
|
* Adversaries should prefer this (or `formatOpinion`) over hardcoding merge language.
|
|
397
407
|
*/
|
|
398
408
|
export declare function resolveReviewPosture(change: ChangeContext | null | undefined): ReviewPosture;
|
|
409
|
+
/** Maximum length for a concern phrase passed to formatOpinion. */
|
|
410
|
+
export declare const MAX_OPINION_CONCERN_LENGTH = 100;
|
|
399
411
|
/**
|
|
400
412
|
* Normalize a concern for use after "address …". Noun phrases pass through;
|
|
401
413
|
* full clauses become "that …" so rule titles remain grammatical.
|
|
414
|
+
*
|
|
415
|
+
* Prefer {@link requireOpinionConcern} / {@link formatOpinion} for overall opinion
|
|
416
|
+
* text. This helper remains available when synthesizing assessment-style clauses.
|
|
402
417
|
*/
|
|
403
418
|
export declare function normalizeOpinionConcern(concern: string): string;
|
|
419
|
+
/**
|
|
420
|
+
* True when `concern` is a short noun phrase suitable after "I would address …".
|
|
421
|
+
* Rejects empty values, sentence punctuation, long strings, and finite-clause shapes
|
|
422
|
+
* such as "commands replace inherited context".
|
|
423
|
+
*/
|
|
424
|
+
export declare function isOpinionConcernPhrase(concern: string): boolean;
|
|
425
|
+
/**
|
|
426
|
+
* Validate and normalize a noun-phrase concern for {@link formatOpinion}.
|
|
427
|
+
* Throws when the value is empty, too long, sentence-like, or a finite clause.
|
|
428
|
+
*
|
|
429
|
+
* @example
|
|
430
|
+
* ```ts
|
|
431
|
+
* requireOpinionConcern("direct process termination below the application boundary");
|
|
432
|
+
* // throws: requireOpinionConcern("commands replace inherited context with context.Background");
|
|
433
|
+
* ```
|
|
434
|
+
*/
|
|
435
|
+
export declare function requireOpinionConcern(concern: string, label?: string): string;
|
|
436
|
+
/** Prompt used by {@link rewriteOpinionConcern} / {@link ContextualReviewModel.concern}. */
|
|
437
|
+
export declare const OPINION_CONCERN_REWRITE_PROMPT = "Rewrite the input text into a short noun phrase suitable after the words \"I would address\".\n\nRules:\n- Return only a noun phrase (for example \"direct process termination below the application boundary\" or \"forced exit code 124\")\n- Do not write a full sentence or finite clause (not \"commands replace inherited context\")\n- No terminal punctuation (.!?)\n- No dotted code identifiers (not \"os.Exit\" or \"context.Background\")\n- No slash-separated method lists (not \"get/post/patch/put\")\n- At most 100 characters\n- Prefer the primary engineering concern over command inventories or headlines";
|
|
438
|
+
/** JSON Schema for structured concern rewrite output. */
|
|
439
|
+
export declare const OPINION_CONCERN_REWRITE_SCHEMA: Record<string, unknown>;
|
|
440
|
+
/**
|
|
441
|
+
* Ensure `text` is a validated noun-phrase concern. Already-valid phrases pass
|
|
442
|
+
* through with no model call; otherwise rewrite via the CLI model broker.
|
|
443
|
+
*/
|
|
444
|
+
export declare function rewriteOpinionConcern(model: ReviewModel, request: ModelConcernRequest): Promise<ModelConcernResult>;
|
|
445
|
+
/**
|
|
446
|
+
* Build a posture-aware opinion, rewriting free-form concerns via the model when needed.
|
|
447
|
+
*
|
|
448
|
+
* Prefer this over {@link formatOpinion} when the concern may be a model title or clause.
|
|
449
|
+
* Already-valid noun phrases do not trigger a broker call.
|
|
450
|
+
*/
|
|
451
|
+
export declare function formatOpinionAsync(options: FormatOpinionAsyncOptions): Promise<ReviewOpinion>;
|
|
452
|
+
/** Attach {@link ContextualReviewModel.concern} on top of any injectable ReviewModel. */
|
|
453
|
+
export declare function enhanceReviewModel(model: ReviewModel): ContextualReviewModel;
|
|
404
454
|
/**
|
|
405
455
|
* Build a posture-aware review opinion from a ship decision and optional concern.
|
|
406
456
|
*
|
|
407
|
-
* Domain adversaries should pass judgment (ship + concern
|
|
408
|
-
* choose merge/commit/shipping language from the runner-resolved change scope.
|
|
457
|
+
* Domain adversaries should pass judgment (ship + **noun-phrase** concern) and let
|
|
458
|
+
* the SDK choose merge/commit/shipping language from the runner-resolved change scope.
|
|
459
|
+
* Concerns are validated with {@link requireOpinionConcern}.
|
|
409
460
|
*
|
|
410
461
|
* @example
|
|
411
462
|
* ```ts
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,WAAW,EAAgD,MAAM,YAAY,CAAC;AAE5F,OAAO,EACL,4BAA4B,EAC5B,gCAAgC,EAChC,yBAAyB,EACzB,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,EACrB,0BAA0B,EAC1B,gBAAgB,EAChB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,WAAW,GACjB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,4BAA4B,EAC5B,4BAA4B,EAC5B,uBAAuB,EACvB,sBAAsB,EACtB,yBAAyB,EACzB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,8BAA8B,EACnC,KAAK,6BAA6B,EAClC,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,KAAK,eAAe,GACrB,MAAM,eAAe,CAAC;AAEvB,eAAO,MAAM,kBAAkB,0BAA0B,CAAC;AAC1D,eAAO,MAAM,mBAAmB,2BAA2B,CAAC;AAC5D,eAAO,MAAM,8BAA8B,IAAI,CAAC;AAKhD,eAAO,MAAM,QAAQ;;;;;;CAMX,CAAC;AAEX,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,QAAQ,CAAC,CAAC,MAAM,OAAO,QAAQ,CAAC,CAAC;AAEhE,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,yBAAyB,EAAE,qBAAqB,EAqB5D,CAAC;AAEF,eAAO,MAAM,UAAU;;;;CAIb,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,OAAO,UAAU,CAAC,CAAC;AACtE,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,MAAM,CAAC;AAElD,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAED,eAAO,MAAM,6BAA6B,EAAE,oBAG3C,CAAC;AAEF,MAAM,WAAW,QAAQ;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAc,SAAQ,QAAQ;IAC7C,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,4BAA4B;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,eAAe,CAAC;CACzE;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,gBAAgB,GACxB,MAAM,GACN;IACE,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEN,MAAM,MAAM,kBAAkB,GAC1B,MAAM,GACN;IACE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEN,MAAM,MAAM,qBAAqB,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AACtE,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,QAAQ,CAAC;AAEvD,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;IAC9C,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAC1C,KAAK,EAAE,gBAAgB,CAAC;IACxB,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC5C,cAAc,CAAC,EAAE,MAAM,GAAG,mBAAmB,CAAC;IAC9C,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,QAAQ,CAAC;IACnB,UAAU,EAAE,eAAe,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,QAAQ,CAAC;IACnB,UAAU,EAAE,UAAU,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,QAAQ,EAAE,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,eAAgB,SAAQ,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC;IACnE,QAAQ,CAAC,EAAE,aAAa,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;IACtD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG,QAAQ,GAAG,UAAU,CAAC;AAEjE,MAAM,WAAW,oBAAoB;IACnC,oFAAoF;IACpF,IAAI,EAAE,OAAO,CAAC;IACd;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oEAAoE;IACpE,MAAM,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IAC9B,iCAAiC;IACjC,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,iBAAiB,CAAC,EAAE,UAAU,CAAC;IAC/B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;CAC9C;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE;QACT,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,MAAM,EAAE;QACN,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,SAAS,EAAE,UAAU,EAAE,CAAC;IACxB,YAAY,EAAE,UAAU,EAAE,CAAC;IAC3B,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,UAAU,EAAE;QACV,YAAY,EAAE,MAAM,CAAC;QACrB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,MAAM,CAAC,EAAE;QACP,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,kBAAkB,CAAC,EAAE,aAAa,EAAE,CAAC;IACrC,eAAe,CAAC,EAAE,eAAe,EAAE,CAAC;CACrC;AAED,MAAM,WAAW,oBAAoB;IACnC,eAAe,EAAE,OAAO,8BAA8B,CAAC;IACvD,MAAM,EAAE,gBAAgB,CAAC;CAC1B;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,iBAAkB,SAAQ,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC;IACxE,QAAQ,EAAE,YAAY,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,cAAe,SAAQ,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC;IAClE,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,gBACf,SAAQ,IAAI,CAAC,YAAY,EAAE,WAAW,GAAG,cAAc,GAAG,UAAU,GAAG,oBAAoB,CAAC;IAC5F,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,YAAY,EAAE,cAAc,EAAE,CAAC;IAC/B,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,kBAAkB,CAAC,EAAE,iBAAiB,EAAE,CAAC;CAC1C;AAED,iFAAiF;AACjF,eAAO,MAAM,iBAAiB,aAAa,CAAC;AAE5C,uEAAuE;AACvE,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,MAAM,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IAC9B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,oFAAoF;AACpF,MAAM,WAAW,aAAa;IAC5B,kEAAkE;IAClE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,4CAA4C;IAC5C,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,sEAAsE;IACtE,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,kFAAkF;IAClF,QAAQ,CAAC,QAAQ,EAAE,SAAS,GAAG,KAAK,CAAC;IACrC,kEAAkE;IAClE,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,+DAA+D;IAC/D,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,OAAO;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;;OAKG;IACH,MAAM,EAAE,aAAa,GAAG,IAAI,CAAC;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC5B,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAClC,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7C,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9C,KAAK,EAAE,WAAW,CAAC;IACnB,OAAO,EAAE,CAAC,WAAW,EAAE,eAAe,KAAK,IAAI,CAAC;IAChD,OAAO,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,IAAI,CAAC;IACzC,MAAM,EAAE;QACN,UAAU,EAAE,CAAC,UAAU,EAAE,gBAAgB,KAAK,IAAI,CAAC;QACnD,QAAQ,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,IAAI,CAAC;QAC1C,OAAO,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,IAAI,CAAC;QACzC,KAAK,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;QACpC,OAAO,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,CAAC;KAC3C,CAAC;CACH;AAED,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAEzE,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,YAAY,CAAC;IACpB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CACpD;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,QAAQ,CAAC;IAC3B,iBAAiB,CAAC,EAAE,eAAe,CAAC;IACpC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,CAAC,EAAE,CAAC,YAAY,EAAE,aAAa,CAAC,eAAe,CAAC,KAAK,gBAAgB,CAAC;CAChF;AAED,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,UAAU,CAAC,GAAG;IACxE,QAAQ,CAAC,EAAE,aAAa,EAAE,CAAC;CAC5B,CAAC;AAEF,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqC;IAE3D,QAAQ,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI;IAQpC,OAAO,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI;IAQnC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAKlD,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAI5B,QAAQ,IAAI,YAAY;IAQxB,aAAa,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;CAO1C;AAmBD,oFAAoF;AACpF,eAAO,MAAM,YAAY,cAAqB,CAAC;AAE/C,oFAAoF;AACpF,wBAAgB,UAAU,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI,CAErD;AAED,qFAAqF;AACrF,wBAAgB,WAAW,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI,CAEtD;AAED,eAAO,MAAM,GAAG;mBACC,OAAO,GAAG,IAAI;kBAMf,OAAO,GAAG,IAAI;kBAMd,OAAO,GAAG,IAAI;mBAIb,OAAO,GAAG,IAAI;CAG9B,CAAC;AAEF,qBAAa,SAAS;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAmD;IACzE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAC5C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAe;gBAEnC,OAAO,EAAE,gBAAgB;IAYrC,UAAU,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI;IAItC,WAAW,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI;IAIvC,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAI1C,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI;IAetC,GAAG,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC;IA2C/C,kBAAkB,CAAC,OAAO,GAAE,qBAA0B,GAAG,OAAO,CAAC,YAAY,CAAC;CAsBrF;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,YAAY,GAAG,oBAAoB,CAKrF;AA4DD,wBAAsB,UAAU,CAAC,IAAI,SAAqB,GAAG,OAAO,CAAC,YAAY,CAAC,CA0CjF;AAED,wBAAsB,WAAW,CAC/B,MAAM,EAAE,oBAAoB,EAC5B,IAAI,SAAsB,GACzB,OAAO,CAAC,IAAI,CAAC,CAIf;AAED,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAexE;AAED,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,eAAe,EAC3B,UAAU,GAAE,oBAAoD,GAC/D,UAAU,CAuBZ;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,aAAa,EAAE,CAmBvE;AAED,qBAAa,YAAa,YAAW,cAAc;IAE/C,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAAL,KAAK,GAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAA2C;IAGvF,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;CAGnC;AAKD,qBAAa,gBAAiB,YAAW,cAAc;IAEnD,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAAL,KAAK,GAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAA2C;IAGvF;;;;OAIG;IACH,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;CAqGnC;AAwED,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,aAAa,GAAG,IAAI,GAAG,SAAS,GACvC,aAAa,GAAG,IAAI,CAgBtB;AAoiBD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,GAAG,SAAS,GAAG,aAAa,CAQ5F;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAM/D;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,aAAa,CA6C1E"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { mkdir, readFile, readdir, writeFile } from "node:fs/promises";
|
|
2
2
|
import { dirname, isAbsolute, relative, resolve } from "node:path";
|
|
3
3
|
import { Ajv2020 } from "ajv/dist/2020.js";
|
|
4
|
-
import { createModelFromEnvironment, unavailableModel } from "./model.js";
|
|
4
|
+
import { ModelReviewError, createModelFromEnvironment, unavailableModel, } from "./model.js";
|
|
5
5
|
export { ADVERSARY_MODEL_ENDPOINT_ENV, ADVERSARY_MODEL_PROTOCOL_VERSION, ADVERSARY_MODEL_TOKEN_ENV, BrokerReviewModel, ModelReviewError, ModelUnavailableError, createModelFromEnvironment, unavailableModel, } from "./model.js";
|
|
6
6
|
export { ADVERSARY_MANIFEST_FILE_NAME, ADVERSARY_MANIFEST_MAX_BYTES, ManifestValidationError, parseAdversaryManifest, validateAdversaryManifest, } from "./manifest.js";
|
|
7
7
|
export const DEFAULT_INPUT_PATH = "/adversary/input.json";
|
|
@@ -548,7 +548,7 @@ function createRuleContext(repoPath, change, summary, cache, collector, registry
|
|
|
548
548
|
change,
|
|
549
549
|
summary,
|
|
550
550
|
cache,
|
|
551
|
-
model,
|
|
551
|
+
model: enhanceReviewModel(model),
|
|
552
552
|
relpath(path) {
|
|
553
553
|
return relative(absoluteRepoPath, isAbsolute(path) ? path : resolve(absoluteRepoPath, path));
|
|
554
554
|
},
|
|
@@ -948,9 +948,14 @@ export function resolveReviewPosture(change) {
|
|
|
948
948
|
}
|
|
949
949
|
return "change";
|
|
950
950
|
}
|
|
951
|
+
/** Maximum length for a concern phrase passed to formatOpinion. */
|
|
952
|
+
export const MAX_OPINION_CONCERN_LENGTH = 100;
|
|
951
953
|
/**
|
|
952
954
|
* Normalize a concern for use after "address …". Noun phrases pass through;
|
|
953
955
|
* full clauses become "that …" so rule titles remain grammatical.
|
|
956
|
+
*
|
|
957
|
+
* Prefer {@link requireOpinionConcern} / {@link formatOpinion} for overall opinion
|
|
958
|
+
* text. This helper remains available when synthesizing assessment-style clauses.
|
|
954
959
|
*/
|
|
955
960
|
export function normalizeOpinionConcern(concern) {
|
|
956
961
|
const normalized = lowercaseFirst(trimTrailingSentencePunctuation(normalizeParagraph(concern)));
|
|
@@ -959,11 +964,220 @@ export function normalizeOpinionConcern(concern) {
|
|
|
959
964
|
}
|
|
960
965
|
return concernClause(normalized);
|
|
961
966
|
}
|
|
967
|
+
/**
|
|
968
|
+
* True when `concern` is a short noun phrase suitable after "I would address …".
|
|
969
|
+
* Rejects empty values, sentence punctuation, long strings, and finite-clause shapes
|
|
970
|
+
* such as "commands replace inherited context".
|
|
971
|
+
*/
|
|
972
|
+
export function isOpinionConcernPhrase(concern) {
|
|
973
|
+
try {
|
|
974
|
+
requireOpinionConcern(concern);
|
|
975
|
+
return true;
|
|
976
|
+
}
|
|
977
|
+
catch {
|
|
978
|
+
return false;
|
|
979
|
+
}
|
|
980
|
+
}
|
|
981
|
+
/**
|
|
982
|
+
* Validate and normalize a noun-phrase concern for {@link formatOpinion}.
|
|
983
|
+
* Throws when the value is empty, too long, sentence-like, or a finite clause.
|
|
984
|
+
*
|
|
985
|
+
* @example
|
|
986
|
+
* ```ts
|
|
987
|
+
* requireOpinionConcern("direct process termination below the application boundary");
|
|
988
|
+
* // throws: requireOpinionConcern("commands replace inherited context with context.Background");
|
|
989
|
+
* ```
|
|
990
|
+
*/
|
|
991
|
+
export function requireOpinionConcern(concern, label = "opinion concern") {
|
|
992
|
+
if (typeof concern !== "string") {
|
|
993
|
+
throw new Error(`${label} must be a string.`);
|
|
994
|
+
}
|
|
995
|
+
const trimmed = concern.trim();
|
|
996
|
+
if (trimmed === "") {
|
|
997
|
+
throw new Error(`${label} must be a non-empty noun phrase suitable after "address …" (for example "direct process termination").`);
|
|
998
|
+
}
|
|
999
|
+
// Reject sentence punctuation before any stripping so "foo." does not bypass
|
|
1000
|
+
// the noun-phrase contract by normalizing to "foo".
|
|
1001
|
+
if (/[.!?]/.test(trimmed)) {
|
|
1002
|
+
throw new Error(`${label} must be a noun phrase, not a sentence (remove ".!?").`);
|
|
1003
|
+
}
|
|
1004
|
+
const normalized = lowercaseFirst(normalizeParagraph(trimmed));
|
|
1005
|
+
if (!isNonEmptyString(normalized)) {
|
|
1006
|
+
throw new Error(`${label} must be a non-empty noun phrase suitable after "address …" (for example "direct process termination").`);
|
|
1007
|
+
}
|
|
1008
|
+
if (normalized.length > MAX_OPINION_CONCERN_LENGTH) {
|
|
1009
|
+
throw new Error(`${label} must be at most ${MAX_OPINION_CONCERN_LENGTH} characters (got ${normalized.length}).`);
|
|
1010
|
+
}
|
|
1011
|
+
if (looksLikeFiniteClause(normalized)) {
|
|
1012
|
+
throw new Error(`${label} must be a noun phrase (for example "direct process termination"), not a clause (for example "commands replace inherited context").`);
|
|
1013
|
+
}
|
|
1014
|
+
if (looksLikeHeadlineNotNounPhrase(normalized)) {
|
|
1015
|
+
throw new Error(`${label} must be a short noun phrase, not a headline (for example use "silent no-op v1 paths", not "api get/post/patch/put silently no-op for v1 paths").`);
|
|
1016
|
+
}
|
|
1017
|
+
return normalized;
|
|
1018
|
+
}
|
|
1019
|
+
/** Prompt used by {@link rewriteOpinionConcern} / {@link ContextualReviewModel.concern}. */
|
|
1020
|
+
export const OPINION_CONCERN_REWRITE_PROMPT = `Rewrite the input text into a short noun phrase suitable after the words "I would address".
|
|
1021
|
+
|
|
1022
|
+
Rules:
|
|
1023
|
+
- Return only a noun phrase (for example "direct process termination below the application boundary" or "forced exit code 124")
|
|
1024
|
+
- Do not write a full sentence or finite clause (not "commands replace inherited context")
|
|
1025
|
+
- No terminal punctuation (.!?)
|
|
1026
|
+
- No dotted code identifiers (not "os.Exit" or "context.Background")
|
|
1027
|
+
- No slash-separated method lists (not "get/post/patch/put")
|
|
1028
|
+
- At most ${MAX_OPINION_CONCERN_LENGTH} characters
|
|
1029
|
+
- Prefer the primary engineering concern over command inventories or headlines`;
|
|
1030
|
+
/** JSON Schema for structured concern rewrite output. */
|
|
1031
|
+
export const OPINION_CONCERN_REWRITE_SCHEMA = {
|
|
1032
|
+
type: "object",
|
|
1033
|
+
additionalProperties: false,
|
|
1034
|
+
required: ["concern"],
|
|
1035
|
+
properties: {
|
|
1036
|
+
concern: {
|
|
1037
|
+
type: "string",
|
|
1038
|
+
minLength: 3,
|
|
1039
|
+
maxLength: MAX_OPINION_CONCERN_LENGTH,
|
|
1040
|
+
},
|
|
1041
|
+
},
|
|
1042
|
+
};
|
|
1043
|
+
const DEFAULT_CONCERN_REWRITE_BUDGET = {
|
|
1044
|
+
maximumOutputTokens: 128,
|
|
1045
|
+
timeoutMs: 30_000,
|
|
1046
|
+
};
|
|
1047
|
+
/**
|
|
1048
|
+
* Ensure `text` is a validated noun-phrase concern. Already-valid phrases pass
|
|
1049
|
+
* through with no model call; otherwise rewrite via the CLI model broker.
|
|
1050
|
+
*/
|
|
1051
|
+
export async function rewriteOpinionConcern(model, request) {
|
|
1052
|
+
if (typeof request !== "object" || request === null) {
|
|
1053
|
+
throw new ModelReviewError("Model concern request must be an object.", {
|
|
1054
|
+
code: "invalid_model_request",
|
|
1055
|
+
});
|
|
1056
|
+
}
|
|
1057
|
+
if (typeof request.text !== "string") {
|
|
1058
|
+
throw new ModelReviewError("Model concern text must be a string.", {
|
|
1059
|
+
code: "invalid_model_request",
|
|
1060
|
+
});
|
|
1061
|
+
}
|
|
1062
|
+
const text = request.text.trim();
|
|
1063
|
+
if (text === "") {
|
|
1064
|
+
throw new ModelReviewError("Model concern text must be a non-empty string.", {
|
|
1065
|
+
code: "invalid_model_request",
|
|
1066
|
+
});
|
|
1067
|
+
}
|
|
1068
|
+
if (isOpinionConcernPhrase(text)) {
|
|
1069
|
+
return {
|
|
1070
|
+
concern: requireOpinionConcern(text),
|
|
1071
|
+
rewritten: false,
|
|
1072
|
+
provider: "local",
|
|
1073
|
+
model: "passthrough",
|
|
1074
|
+
};
|
|
1075
|
+
}
|
|
1076
|
+
const maxAttempts = request.maxAttempts === undefined
|
|
1077
|
+
? 2
|
|
1078
|
+
: requirePositiveInteger(request.maxAttempts, "maxAttempts", 4);
|
|
1079
|
+
const budget = {
|
|
1080
|
+
maximumOutputTokens: request.budget?.maximumOutputTokens ?? DEFAULT_CONCERN_REWRITE_BUDGET.maximumOutputTokens,
|
|
1081
|
+
timeoutMs: request.budget?.timeoutMs ?? DEFAULT_CONCERN_REWRITE_BUDGET.timeoutMs,
|
|
1082
|
+
};
|
|
1083
|
+
let lastError;
|
|
1084
|
+
for (let attempt = 1; attempt <= maxAttempts; attempt += 1) {
|
|
1085
|
+
const prompt = attempt === 1
|
|
1086
|
+
? OPINION_CONCERN_REWRITE_PROMPT
|
|
1087
|
+
: `${OPINION_CONCERN_REWRITE_PROMPT}
|
|
1088
|
+
|
|
1089
|
+
Previous attempt was rejected: ${lastError ?? "invalid noun phrase"}.
|
|
1090
|
+
Return only a pure noun phrase that passes validation.`;
|
|
1091
|
+
const result = await model.review({
|
|
1092
|
+
prompt,
|
|
1093
|
+
input: {
|
|
1094
|
+
text,
|
|
1095
|
+
...(lastError === undefined ? {} : { previousError: lastError }),
|
|
1096
|
+
},
|
|
1097
|
+
schema: OPINION_CONCERN_REWRITE_SCHEMA,
|
|
1098
|
+
budget,
|
|
1099
|
+
});
|
|
1100
|
+
try {
|
|
1101
|
+
const concern = requireOpinionConcern(result.output.concern, "model concern rewrite");
|
|
1102
|
+
return {
|
|
1103
|
+
concern,
|
|
1104
|
+
rewritten: true,
|
|
1105
|
+
provider: result.provider,
|
|
1106
|
+
model: result.model,
|
|
1107
|
+
...(result.usage === undefined ? {} : { usage: result.usage }),
|
|
1108
|
+
};
|
|
1109
|
+
}
|
|
1110
|
+
catch (error) {
|
|
1111
|
+
lastError = error instanceof Error ? error.message : String(error);
|
|
1112
|
+
}
|
|
1113
|
+
}
|
|
1114
|
+
throw new ModelReviewError(`Model failed to produce a valid opinion concern after ${maxAttempts} attempts${lastError === undefined ? "" : `: ${lastError}`}.`, { code: "invalid_opinion_concern" });
|
|
1115
|
+
}
|
|
1116
|
+
/**
|
|
1117
|
+
* Build a posture-aware opinion, rewriting free-form concerns via the model when needed.
|
|
1118
|
+
*
|
|
1119
|
+
* Prefer this over {@link formatOpinion} when the concern may be a model title or clause.
|
|
1120
|
+
* Already-valid noun phrases do not trigger a broker call.
|
|
1121
|
+
*/
|
|
1122
|
+
export async function formatOpinionAsync(options) {
|
|
1123
|
+
if (typeof options.ship !== "boolean") {
|
|
1124
|
+
throw new Error("formatOpinionAsync requires a boolean ship decision.");
|
|
1125
|
+
}
|
|
1126
|
+
if (options.model === undefined || options.model === null) {
|
|
1127
|
+
throw new Error("formatOpinionAsync requires a model.");
|
|
1128
|
+
}
|
|
1129
|
+
const remainingCount = options.remainingCount ?? 0;
|
|
1130
|
+
if (remainingCount > 1 || options.concern === undefined || options.concern.trim() === "") {
|
|
1131
|
+
return formatOpinion({
|
|
1132
|
+
ship: options.ship,
|
|
1133
|
+
...(options.concern === undefined ? {} : { concern: options.concern }),
|
|
1134
|
+
remainingCount,
|
|
1135
|
+
change: options.change,
|
|
1136
|
+
posture: options.posture,
|
|
1137
|
+
});
|
|
1138
|
+
}
|
|
1139
|
+
if (isOpinionConcernPhrase(options.concern)) {
|
|
1140
|
+
return formatOpinion({
|
|
1141
|
+
ship: options.ship,
|
|
1142
|
+
concern: options.concern,
|
|
1143
|
+
remainingCount,
|
|
1144
|
+
change: options.change,
|
|
1145
|
+
posture: options.posture,
|
|
1146
|
+
});
|
|
1147
|
+
}
|
|
1148
|
+
const rewritten = await rewriteOpinionConcern(options.model, {
|
|
1149
|
+
text: options.concern,
|
|
1150
|
+
...(options.concernBudget === undefined ? {} : { budget: options.concernBudget }),
|
|
1151
|
+
});
|
|
1152
|
+
return formatOpinion({
|
|
1153
|
+
ship: options.ship,
|
|
1154
|
+
concern: rewritten.concern,
|
|
1155
|
+
remainingCount,
|
|
1156
|
+
change: options.change,
|
|
1157
|
+
posture: options.posture,
|
|
1158
|
+
});
|
|
1159
|
+
}
|
|
1160
|
+
/** Attach {@link ContextualReviewModel.concern} on top of any injectable ReviewModel. */
|
|
1161
|
+
export function enhanceReviewModel(model) {
|
|
1162
|
+
return {
|
|
1163
|
+
review: (request) => model.review(request),
|
|
1164
|
+
concern: (request) => rewriteOpinionConcern(model, request),
|
|
1165
|
+
};
|
|
1166
|
+
}
|
|
1167
|
+
function requirePositiveInteger(value, name, maximum) {
|
|
1168
|
+
if (!Number.isInteger(value) || value < 1 || value > maximum) {
|
|
1169
|
+
throw new ModelReviewError(`${name} must be an integer from 1 through ${maximum}.`, {
|
|
1170
|
+
code: "invalid_model_request",
|
|
1171
|
+
});
|
|
1172
|
+
}
|
|
1173
|
+
return value;
|
|
1174
|
+
}
|
|
962
1175
|
/**
|
|
963
1176
|
* Build a posture-aware review opinion from a ship decision and optional concern.
|
|
964
1177
|
*
|
|
965
|
-
* Domain adversaries should pass judgment (ship + concern
|
|
966
|
-
* choose merge/commit/shipping language from the runner-resolved change scope.
|
|
1178
|
+
* Domain adversaries should pass judgment (ship + **noun-phrase** concern) and let
|
|
1179
|
+
* the SDK choose merge/commit/shipping language from the runner-resolved change scope.
|
|
1180
|
+
* Concerns are validated with {@link requireOpinionConcern}.
|
|
967
1181
|
*
|
|
968
1182
|
* @example
|
|
969
1183
|
* ```ts
|
|
@@ -993,7 +1207,7 @@ export function formatOpinion(options) {
|
|
|
993
1207
|
}
|
|
994
1208
|
const concern = options.concern === undefined || options.concern.trim() === ""
|
|
995
1209
|
? undefined
|
|
996
|
-
:
|
|
1210
|
+
: requireOpinionConcern(options.concern, "formatOpinion concern");
|
|
997
1211
|
if (options.ship) {
|
|
998
1212
|
if (concern === undefined) {
|
|
999
1213
|
return { ship: true, summary: opinionApproveAsIs(posture) };
|
|
@@ -1014,6 +1228,45 @@ export function formatOpinion(options) {
|
|
|
1014
1228
|
summary: `I would address ${concern} ${deadline}.`,
|
|
1015
1229
|
};
|
|
1016
1230
|
}
|
|
1231
|
+
/**
|
|
1232
|
+
* True when the phrase looks like a finite clause (subject + finite verb + complement),
|
|
1233
|
+
* not a noun phrase. Used to reject bad formatOpinion concerns.
|
|
1234
|
+
*/
|
|
1235
|
+
function looksLikeFiniteClause(concern) {
|
|
1236
|
+
// Finite verb with a following token (shared with concernClause).
|
|
1237
|
+
if (/\b(?:allows|are|binds|blocks|builds|bypasses|calls|can|closes|contains|copies|could|creates|detaches|did|discards|do|does|exits|exposes|fails|forks|has|have|ignores|includes|installs|is|kills|lacks|leaks|leaves|logs|maps|may|might|must|opens|panics|prints|reads|references|relies|replaces|requires|returns|runs|skips|spawns|starts|terminates|throws|uses|was|were|writes)\b\s+\S+/i.test(concern)) {
|
|
1238
|
+
return true;
|
|
1239
|
+
}
|
|
1240
|
+
// Present-tense verbs that often appear mid-title ("commands replace inherited context").
|
|
1241
|
+
// Do not match past-participial adjectives at the start ("discarded command errors").
|
|
1242
|
+
if (/(?:^|\s)(?:replace|replaces|discard|discards|force|forces|override|overrides|cause|causes|prevent|prevents|block|blocks|break|breaks|succeed|succeeds|fail|fails|mix|mixes|omit|omits|ignore|ignores)\s+\S+/i.test(concern)) {
|
|
1243
|
+
return true;
|
|
1244
|
+
}
|
|
1245
|
+
return false;
|
|
1246
|
+
}
|
|
1247
|
+
/**
|
|
1248
|
+
* Headlines that are not finite clauses but still read poorly after "I would address …".
|
|
1249
|
+
* Example: "api get/post/patch/put silently no-op for v1 paths".
|
|
1250
|
+
*/
|
|
1251
|
+
function looksLikeHeadlineNotNounPhrase(concern) {
|
|
1252
|
+
// Multi-segment slash lists (method inventories): get/post/patch
|
|
1253
|
+
if ((concern.match(/\//g) ?? []).length >= 2) {
|
|
1254
|
+
return true;
|
|
1255
|
+
}
|
|
1256
|
+
if (/(?:^|\s)(?:get|post|patch|put|delete)\/(?:get|post|patch|put|delete)/i.test(concern)) {
|
|
1257
|
+
return true;
|
|
1258
|
+
}
|
|
1259
|
+
// Adverb fragments that belong in titles, not noun phrases.
|
|
1260
|
+
if (/\bsilently\b/i.test(concern)) {
|
|
1261
|
+
return true;
|
|
1262
|
+
}
|
|
1263
|
+
// Trailing participial / relative residue after a comma (headline shape).
|
|
1264
|
+
// Allow list noun phrases such as "cancellation, exit codes, and stream issues".
|
|
1265
|
+
if (/,\s+(?:breaking|causing|preventing|leaving|blocking|forcing|overriding|so\b|which\b|and then\b)/i.test(concern)) {
|
|
1266
|
+
return true;
|
|
1267
|
+
}
|
|
1268
|
+
return false;
|
|
1269
|
+
}
|
|
1017
1270
|
function parseReviewPosture(value, label) {
|
|
1018
1271
|
if (value === "repository" || value === "change" || value === "worktree") {
|
|
1019
1272
|
return value;
|