@jevitate/cli 0.7.0 → 0.8.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/dist/ai-cli.d.ts +3 -1
- package/dist/ai-cli.js +60 -16
- package/dist/ai-cli.js.map +1 -1
- package/dist/approval-provenance.d.ts +120 -0
- package/dist/approval-provenance.js +300 -0
- package/dist/approval-provenance.js.map +1 -0
- package/dist/author-journey-cli.js +4 -2
- package/dist/author-journey-cli.js.map +1 -1
- package/dist/bin.js +29019 -22450
- package/dist/build-info.generated.js +2 -2
- package/dist/builtin-analyzers.d.ts +7 -0
- package/dist/builtin-analyzers.js +19 -0
- package/dist/builtin-analyzers.js.map +1 -0
- package/dist/campaign-cli.d.ts +6 -0
- package/dist/campaign-cli.js +9 -4
- package/dist/campaign-cli.js.map +1 -1
- package/dist/catalog-analysis.d.ts +70 -0
- package/dist/catalog-analysis.js +507 -0
- package/dist/catalog-analysis.js.map +1 -0
- package/dist/catalog-api.d.ts +73 -0
- package/dist/catalog-api.js +97 -0
- package/dist/catalog-api.js.map +1 -0
- package/dist/catalog-cli.d.ts +12 -0
- package/dist/catalog-cli.js +224 -0
- package/dist/catalog-cli.js.map +1 -0
- package/dist/catalog-review.d.ts +29 -0
- package/dist/catalog-review.js +290 -0
- package/dist/catalog-review.js.map +1 -0
- package/dist/catalog.d.ts +133 -0
- package/dist/catalog.js +352 -0
- package/dist/catalog.js.map +1 -0
- package/dist/check-api.js +24 -2
- package/dist/check-api.js.map +1 -1
- package/dist/check-cli.d.ts +3 -0
- package/dist/check-cli.js +18 -4
- package/dist/check-cli.js.map +1 -1
- package/dist/check-execute.js +25 -9
- package/dist/check-execute.js.map +1 -1
- package/dist/check-plan.js +4 -1
- package/dist/check-plan.js.map +1 -1
- package/dist/check-suite.js +6 -3
- package/dist/check-suite.js.map +1 -1
- package/dist/check-types.d.ts +12 -1
- package/dist/check-types.js.map +1 -1
- package/dist/cli-output.js +82 -4
- package/dist/cli-output.js.map +1 -1
- package/dist/cli-shared.d.ts +22 -2
- package/dist/cli-shared.js +34 -5
- package/dist/cli-shared.js.map +1 -1
- package/dist/demo-aspect-api.d.ts +15 -0
- package/dist/demo-aspect-api.js +26 -1
- package/dist/demo-aspect-api.js.map +1 -1
- package/dist/demo-aspect-cli.js +64 -5
- package/dist/demo-aspect-cli.js.map +1 -1
- package/dist/exit-codes.js +4 -0
- package/dist/exit-codes.js.map +1 -1
- package/dist/explore-adversarial.d.ts +3 -1
- package/dist/explore-adversarial.js +2 -2
- package/dist/explore-adversarial.js.map +1 -1
- package/dist/explore-author.js +5 -2
- package/dist/explore-author.js.map +1 -1
- package/dist/explore-cli.js +144 -9
- package/dist/explore-cli.js.map +1 -1
- package/dist/explore-coverage.d.ts +6 -2
- package/dist/explore-coverage.js +4 -3
- package/dist/explore-coverage.js.map +1 -1
- package/dist/explore-feature.d.ts +3 -1
- package/dist/explore-feature.js +2 -2
- package/dist/explore-feature.js.map +1 -1
- package/dist/explore-goal.d.ts +37 -6
- package/dist/explore-goal.js +61 -48
- package/dist/explore-goal.js.map +1 -1
- package/dist/explore-shared.d.ts +12 -7
- package/dist/explore-shared.js +9 -1
- package/dist/explore-shared.js.map +1 -1
- package/dist/goal-run-flags.d.ts +2 -0
- package/dist/goal-run-flags.js +8 -1
- package/dist/goal-run-flags.js.map +1 -1
- package/dist/http-5xx-outcome.d.ts +8 -3
- package/dist/http-5xx-outcome.js +5 -15
- package/dist/http-5xx-outcome.js.map +1 -1
- package/dist/init-cli.d.ts +7 -0
- package/dist/init-cli.js +79 -9
- package/dist/init-cli.js.map +1 -1
- package/dist/init-codeowners.d.ts +39 -0
- package/dist/init-codeowners.js +91 -0
- package/dist/init-codeowners.js.map +1 -0
- package/dist/init-keys.d.ts +3 -1
- package/dist/init-keys.js +20 -8
- package/dist/init-keys.js.map +1 -1
- package/dist/init-skills.d.ts +85 -7
- package/dist/init-skills.js +303 -36
- package/dist/init-skills.js.map +1 -1
- package/dist/jev-advisor.d.ts +72 -0
- package/dist/jev-advisor.js +172 -0
- package/dist/jev-advisor.js.map +1 -0
- package/dist/journey-api.d.ts +34 -2
- package/dist/journey-api.js +51 -20
- package/dist/journey-api.js.map +1 -1
- package/dist/journey-cli.js +156 -12
- package/dist/journey-cli.js.map +1 -1
- package/dist/journey-review-api.d.ts +19 -0
- package/dist/journey-review-api.js +46 -0
- package/dist/journey-review-api.js.map +1 -0
- package/dist/journey-review-store.d.ts +16 -0
- package/dist/journey-review-store.js +95 -0
- package/dist/journey-review-store.js.map +1 -0
- package/dist/journey-review.d.ts +47 -0
- package/dist/journey-review.js +499 -0
- package/dist/journey-review.js.map +1 -0
- package/dist/journey-verify.js +14 -1
- package/dist/journey-verify.js.map +1 -1
- package/dist/key-report.d.ts +20 -5
- package/dist/key-report.js +32 -9
- package/dist/key-report.js.map +1 -1
- package/dist/kill-signal.js +10 -2
- package/dist/kill-signal.js.map +1 -1
- package/dist/load-cli.js +4 -2
- package/dist/load-cli.js.map +1 -1
- package/dist/log-classes.d.ts +73 -0
- package/dist/log-classes.js +167 -0
- package/dist/log-classes.js.map +1 -0
- package/dist/log-correlation.d.ts +29 -10
- package/dist/log-correlation.js +44 -21
- package/dist/log-correlation.js.map +1 -1
- package/dist/login-cli.d.ts +15 -0
- package/dist/login-cli.js +116 -0
- package/dist/login-cli.js.map +1 -0
- package/dist/logs-cli.js +3 -1
- package/dist/logs-cli.js.map +1 -1
- package/dist/mcp-api.d.ts +1 -0
- package/dist/mcp-api.js +61 -12
- package/dist/mcp-api.js.map +1 -1
- package/dist/mcp-cli-runner.d.ts +2 -0
- package/dist/mcp-cli-runner.js +3 -1
- package/dist/mcp-cli-runner.js.map +1 -1
- package/dist/mcp-cli-tools.d.ts +5 -0
- package/dist/mcp-cli-tools.js +158 -23
- package/dist/mcp-cli-tools.js.map +1 -1
- package/dist/mission-cli.js +8 -4
- package/dist/mission-cli.js.map +1 -1
- package/dist/mission-journal.d.ts +4 -1
- package/dist/mission-journal.js +9 -3
- package/dist/mission-journal.js.map +1 -1
- package/dist/mission-queue-cli.js +21 -2
- package/dist/mission-queue-cli.js.map +1 -1
- package/dist/mission-queue-runner.d.ts +6 -0
- package/dist/mission-queue-runner.js +33 -3
- package/dist/mission-queue-runner.js.map +1 -1
- package/dist/multi-run-cli.d.ts +7 -1
- package/dist/multi-run-cli.js +10 -3
- package/dist/multi-run-cli.js.map +1 -1
- package/dist/multi-run.d.ts +38 -3
- package/dist/multi-run.js +115 -23
- package/dist/multi-run.js.map +1 -1
- package/dist/persona-login.d.ts +199 -0
- package/dist/persona-login.js +574 -0
- package/dist/persona-login.js.map +1 -0
- package/dist/pre-approval.d.ts +98 -0
- package/dist/pre-approval.js +175 -0
- package/dist/pre-approval.js.map +1 -0
- package/dist/program.js +10 -0
- package/dist/program.js.map +1 -1
- package/dist/project-dir.d.ts +2 -1
- package/dist/project-dir.js +3 -1
- package/dist/project-dir.js.map +1 -1
- package/dist/readiness.d.ts +29 -0
- package/dist/readiness.js +291 -0
- package/dist/readiness.js.map +1 -0
- package/dist/regression-cli.js +4 -2
- package/dist/regression-cli.js.map +1 -1
- package/dist/report-api.d.ts +24 -2
- package/dist/report-api.js +33 -5
- package/dist/report-api.js.map +1 -1
- package/dist/report-cli.js +8 -1
- package/dist/report-cli.js.map +1 -1
- package/dist/result-schema.d.ts +12 -0
- package/dist/result-schema.js +8 -0
- package/dist/result-schema.js.map +1 -1
- package/dist/run-index.d.ts +4 -2
- package/dist/run-index.js +3 -1
- package/dist/run-index.js.map +1 -1
- package/dist/run-key-preflight.d.ts +2 -1
- package/dist/run-key-preflight.js +3 -2
- package/dist/run-key-preflight.js.map +1 -1
- package/dist/run-metadata.d.ts +26 -0
- package/dist/run-metadata.js +41 -0
- package/dist/run-metadata.js.map +1 -0
- package/dist/run-tags-cli.d.ts +12 -0
- package/dist/run-tags-cli.js +35 -0
- package/dist/run-tags-cli.js.map +1 -0
- package/dist/site-cli.d.ts +1 -1
- package/dist/site-cli.js +24 -1
- package/dist/site-cli.js.map +1 -1
- package/dist/source-cli.js +4 -2
- package/dist/source-cli.js.map +1 -1
- package/dist/suite-explore-options.d.ts +14 -0
- package/dist/suite-explore-options.js +7 -0
- package/dist/suite-explore-options.js.map +1 -1
- package/dist/sweep-api.d.ts +266 -0
- package/dist/sweep-api.js +828 -0
- package/dist/sweep-api.js.map +1 -0
- package/dist/sweep-cli.d.ts +9 -0
- package/dist/sweep-cli.js +115 -0
- package/dist/sweep-cli.js.map +1 -0
- package/dist/target-config.d.ts +5 -2
- package/dist/target-config.js +15 -0
- package/dist/target-config.js.map +1 -1
- package/dist/ux-cli.js +3 -1
- package/dist/ux-cli.js.map +1 -1
- package/dist/ux-usability.d.ts +9 -3
- package/dist/ux-usability.js +5 -3
- package/dist/ux-usability.js.map +1 -1
- package/dist/verify-fix-cli.js +4 -2
- package/dist/verify-fix-cli.js.map +1 -1
- package/package.json +12 -12
- package/skills/jevitate-demo/SKILL.md +5 -2
- package/skills/jevitate-getting-started/SKILL.md +12 -0
- package/skills/jevitate-run-journey/SKILL.md +17 -4
- package/skills/jevitate-test-campaign/SKILL.md +26 -5
|
@@ -5,6 +5,6 @@
|
|
|
5
5
|
// this plain `tsc --build` dist (no bundler substitution), so it needs real committed values
|
|
6
6
|
// here instead. See ./engine.ts, which prefers the esbuild-injected value when present and
|
|
7
7
|
// falls back to these.
|
|
8
|
-
export const GENERATED_COMMIT = "
|
|
9
|
-
export const GENERATED_BUILT_AT = "2026-10-
|
|
8
|
+
export const GENERATED_COMMIT = "dbde9df";
|
|
9
|
+
export const GENERATED_BUILT_AT = "2026-10-08T17:46:36.756Z";
|
|
10
10
|
//# sourceMappingURL=build-info.generated.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* #434/#435: registers the built-in pre-approval analyzers — readiness (deterministic checks +
|
|
3
|
+
* GtWR rules), the advisory Jev readiness questions, and the incremental catalog analysis — once
|
|
4
|
+
* per process. Called by the program wiring (`buildProgram`), so every approval path and every
|
|
5
|
+
* review sheet, on the CLI and over MCP (which runs the CLI in process), runs them.
|
|
6
|
+
*/
|
|
7
|
+
export declare function registerBuiltinAnalyzers(): void;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { catalogAnalysisAnalyzer } from "./catalog-analysis.js";
|
|
2
|
+
import { registerPreApprovalAnalyzer } from "./pre-approval.js";
|
|
3
|
+
import { jevReadinessAnalyzer, readinessAnalyzer } from "./readiness.js";
|
|
4
|
+
let registered = false;
|
|
5
|
+
/**
|
|
6
|
+
* #434/#435: registers the built-in pre-approval analyzers — readiness (deterministic checks +
|
|
7
|
+
* GtWR rules), the advisory Jev readiness questions, and the incremental catalog analysis — once
|
|
8
|
+
* per process. Called by the program wiring (`buildProgram`), so every approval path and every
|
|
9
|
+
* review sheet, on the CLI and over MCP (which runs the CLI in process), runs them.
|
|
10
|
+
*/
|
|
11
|
+
export function registerBuiltinAnalyzers() {
|
|
12
|
+
if (registered)
|
|
13
|
+
return;
|
|
14
|
+
registered = true;
|
|
15
|
+
registerPreApprovalAnalyzer(readinessAnalyzer);
|
|
16
|
+
registerPreApprovalAnalyzer(jevReadinessAnalyzer);
|
|
17
|
+
registerPreApprovalAnalyzer(catalogAnalysisAnalyzer);
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=builtin-analyzers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builtin-analyzers.js","sourceRoot":"","sources":["../src/builtin-analyzers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEzE,IAAI,UAAU,GAAG,KAAK,CAAC;AAEvB;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB;IACtC,IAAI,UAAU;QAAE,OAAO;IACvB,UAAU,GAAG,IAAI,CAAC;IAClB,2BAA2B,CAAC,iBAAiB,CAAC,CAAC;IAC/C,2BAA2B,CAAC,oBAAoB,CAAC,CAAC;IAClD,2BAA2B,CAAC,uBAAuB,CAAC,CAAC;AACvD,CAAC"}
|
package/dist/campaign-cli.d.ts
CHANGED
|
@@ -2,6 +2,12 @@ import type { Command } from "commander";
|
|
|
2
2
|
import { type CliDeps } from "./cli-shared.js";
|
|
3
3
|
/** The flags every anchored mission of this `campaign run` is re-invoked with (#311). */
|
|
4
4
|
export declare function campaignMissionArgv(cmd: Command): string[];
|
|
5
|
+
/**
|
|
6
|
+
* #311: the `explore` options a campaign forwards to every anchored mission, as given — safety
|
|
7
|
+
* (destructive/paid/deny), invariants, backend-log evidence and media. Operator flags only: the
|
|
8
|
+
* spec file never widens what a mission may click or read.
|
|
9
|
+
*/
|
|
10
|
+
export declare function withMissionFlags(cmd: Command): Command;
|
|
5
11
|
/** `campaign run`'s human summary: the outcome, every mission's branch point, and the deduped defects. */
|
|
6
12
|
export declare function formatCampaignHuman(data: unknown): string;
|
|
7
13
|
/** Registers `jevitate campaign run <spec.json>` (#293). */
|
package/dist/campaign-cli.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { JEV_PROVIDER_FLAG_HELP, jevProviderArg } from "./cli-shared.js";
|
|
2
|
+
import { TAG_FLAG, TAG_HELP, collectTag, taggedAction } from "./run-tags-cli.js";
|
|
1
3
|
import { ok, fail } from "./envelope.js";
|
|
2
4
|
import { withEngine } from "./engine.js";
|
|
3
5
|
import { CampaignSpecError, runCampaign, validateCampaign } from "./campaign-api.js";
|
|
@@ -16,15 +18,16 @@ export function campaignMissionArgv(cmd) {
|
|
|
16
18
|
* (destructive/paid/deny), invariants, backend-log evidence and media. Operator flags only: the
|
|
17
19
|
* spec file never widens what a mission may click or read.
|
|
18
20
|
*/
|
|
19
|
-
function withMissionFlags(cmd) {
|
|
21
|
+
export function withMissionFlags(cmd) {
|
|
20
22
|
const each = "(forwarded to every mission, as explore's)";
|
|
21
23
|
const repeatable = [
|
|
22
24
|
["--deny <pattern>", "a control no mission may click (repeatable)"],
|
|
23
25
|
["--paid <pattern>", "an app control that costs money or credits (repeatable)"],
|
|
26
|
+
["--allow-control <regex>", "exempt a control whose name matches from the soft 'may cost money' heuristic only (repeatable, #428)"],
|
|
24
27
|
["--invariants <file>", "app-declared invariants JSON (repeatable)"],
|
|
25
28
|
["--log-source <spec>", "backend log source: file:<path> | docker:<container> | cmd:<command> (needs --allow-log-cmd) (repeatable)"],
|
|
26
29
|
["--log-defect <level|/regex/>", "backend log lines matching this become a server-log defect (repeatable)"],
|
|
27
|
-
["--log-quiet-ok <spec>", "
|
|
30
|
+
["--log-quiet-ok <spec>", "compatibility only since 0.8.0 (#420): quiet sources are always healthy (repeatable)"],
|
|
28
31
|
["--log-ignore <regex|substring>", "known-noise backend log lines to exclude (repeatable)"],
|
|
29
32
|
["--log-scope <regex|substring>", "attribute only backend log lines matching this (repeatable)"],
|
|
30
33
|
["--log-correlation-header <name>", "another header carrying a correlation id (repeatable)"],
|
|
@@ -71,8 +74,10 @@ export function registerCampaignCommands(program, deps, buildProgram) {
|
|
|
71
74
|
.option("--hook-timeout-ms <ms>", "timeout for each of the spec's before/after hooks (default 60000; the process group is killed)", positiveIntArg)
|
|
72
75
|
.option("--real", "use live Jev + OpenRouter gateways for the missions (requires keys)", false)
|
|
73
76
|
.option("--fake-ai", "use deterministic fake gateways (pipeline smoke only)", false)
|
|
77
|
+
.option("--jev-provider <provider>", JEV_PROVIDER_FLAG_HELP, jevProviderArg)
|
|
74
78
|
.option("--json", "emit the JSON envelope (default: a human summary)")
|
|
75
|
-
.
|
|
79
|
+
.option(TAG_FLAG, TAG_HELP, collectTag, [])
|
|
80
|
+
.action(taggedAction(program, "campaign run", async function (spec) {
|
|
76
81
|
const o = this.opts();
|
|
77
82
|
const emit = (envelope, exitCode) => emitCommandResult(program, envelope, { json: o.json === true, command: "campaign run", human: formatCampaignHuman, ...(exitCode === undefined ? {} : { exitCode }) });
|
|
78
83
|
if (o.real !== true && o.fakeAi !== true) {
|
|
@@ -104,6 +109,6 @@ export function registerCampaignCommands(program, deps, buildProgram) {
|
|
|
104
109
|
else
|
|
105
110
|
emit(fail("E_CAMPAIGN_RUN", String(err instanceof Error ? err.message : err)));
|
|
106
111
|
}
|
|
107
|
-
});
|
|
112
|
+
}));
|
|
108
113
|
}
|
|
109
114
|
//# sourceMappingURL=campaign-cli.js.map
|
package/dist/campaign-cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"campaign-cli.js","sourceRoot":"","sources":["../src/campaign-cli.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"campaign-cli.js","sourceRoot":"","sources":["../src/campaign-cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { type CandidatePair, type CatalogAnalysis, type Finding } from "@jevitate/journey";
|
|
2
|
+
import { type Catalog, type CatalogJourney } from "./catalog.js";
|
|
3
|
+
import { type JevSetup } from "./jev-advisor.js";
|
|
4
|
+
import type { ApprovalSubject, PreApprovalAnalyzer } from "./pre-approval.js";
|
|
5
|
+
/**
|
|
6
|
+
* #435 — catalog analysis: problems BETWEEN items (conflicts, duplicates, overlaps, gaps, drift),
|
|
7
|
+
* grouped by the INCOSE Guide to Writing Requirements' set characteristics (complete, consistent,
|
|
8
|
+
* feasible, comprehensible, able to be validated, correct).
|
|
9
|
+
*
|
|
10
|
+
* - Candidate pairs are chosen by CODE, so cost is bounded (never O(n²) model calls): jobs that
|
|
11
|
+
* share a persona or trigger/outcome terms; Journeys whose expected writes (the #432 sheet's) hit
|
|
12
|
+
* the same resource, flagged when the methods oppose (create vs delete, enable vs disable) or
|
|
13
|
+
* when they do the same job as the same persona; personas with the same role or largely the same
|
|
14
|
+
* jobs. Each pair records why it was paired.
|
|
15
|
+
* - Jev classifies each judged pair as a typed Choice (compatible | duplicate | overlapping |
|
|
16
|
+
* conflicting | dependent) with a probability. The one-line reason is built by code from the two
|
|
17
|
+
* items' own text and the pairing evidence — never model prose.
|
|
18
|
+
* - The acknowledgment rule is code over the typed answer: on an APPROVAL, a `conflicting` or
|
|
19
|
+
* `duplicate` classification with probability ≥ `CONFLICT_ACK_THRESHOLD` on a pair involving the
|
|
20
|
+
* item being approved requires `--accept-findings "<reason>"`. Everything else is informational,
|
|
21
|
+
* and the on-demand `catalog analyze` never gates anything.
|
|
22
|
+
* - Per approval only the item's own pairs are judged, at most `APPROVAL_PAIR_CAP` of them; the
|
|
23
|
+
* rest are listed as overflow (never silently dropped). Answers are cached by content hash
|
|
24
|
+
* (jev-advisor.ts), so re-approving an unchanged item asks nothing new.
|
|
25
|
+
* - It only READS: it never writes a catalog file, a Journey or an approval.
|
|
26
|
+
*/
|
|
27
|
+
export declare const CATALOG_ANALYSIS = "catalog-analysis";
|
|
28
|
+
/** A `conflicting` / `duplicate` classification at or above this probability needs an acknowledgment to approve. */
|
|
29
|
+
export declare const CONFLICT_ACK_THRESHOLD = 0.7;
|
|
30
|
+
/** The most candidate pairs judged before one approval (the rest are reported as overflow). */
|
|
31
|
+
export declare const APPROVAL_PAIR_CAP = 8;
|
|
32
|
+
/** The default most candidate pairs judged by `catalog analyze` (`--max-pairs`). */
|
|
33
|
+
export declare const ANALYZE_PAIR_CAP = 50;
|
|
34
|
+
/** The significant terms of a text: lowercase words of 3+ letters, stopwords dropped, a plural `s` folded. */
|
|
35
|
+
export declare function significantTerms(text: string): Set<string>;
|
|
36
|
+
interface WriteRef {
|
|
37
|
+
readonly method: string;
|
|
38
|
+
readonly endpoint: string;
|
|
39
|
+
/** The resource path with ids and a trailing action dropped (`/api/posts`). */
|
|
40
|
+
readonly resource: string;
|
|
41
|
+
readonly action?: string;
|
|
42
|
+
}
|
|
43
|
+
/** #435: a write request's resource: the path without ids, wildcards and a trailing action verb. */
|
|
44
|
+
export declare function writeResource(method: string, endpoint: string): WriteRef;
|
|
45
|
+
/** #435: every candidate pair of the catalog, each with why code paired it. */
|
|
46
|
+
export declare function candidatePairs(catalog: Catalog): CandidatePair[];
|
|
47
|
+
/** The catalog an approval sees: the Journey being approved as it will be approved (demo approve annotates first). */
|
|
48
|
+
export declare function withJourney(catalog: Catalog, journey: CatalogJourney | undefined): Catalog;
|
|
49
|
+
export interface AnalyzeOptions {
|
|
50
|
+
/** The item being approved/reviewed: only its pairs are judged, and only advice involving it is given. Absent: the whole catalog. */
|
|
51
|
+
readonly subject?: ApprovalSubject;
|
|
52
|
+
/** The Jev layer; absent or skipped: the deterministic layer only. */
|
|
53
|
+
readonly jev?: JevSetup;
|
|
54
|
+
readonly pairCap?: number;
|
|
55
|
+
/** True for an approval: the acknowledgment rule applies to the subject's pairs. */
|
|
56
|
+
readonly gate?: boolean;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* #435: the catalog analysis — of the whole catalog (`catalog analyze`), or incrementally of the
|
|
60
|
+
* item being approved/reviewed (`opts.subject`: only its pairs, only advice involving it). Never writes.
|
|
61
|
+
*/
|
|
62
|
+
export declare function analyzeCatalog(catalog: Catalog, opts?: AnalyzeOptions): Promise<{
|
|
63
|
+
report: CatalogAnalysis;
|
|
64
|
+
findings: Finding[];
|
|
65
|
+
}>;
|
|
66
|
+
/** #435: the incremental analysis before every approval (and in every review sheet). */
|
|
67
|
+
export declare const catalogAnalysisAnalyzer: PreApprovalAnalyzer;
|
|
68
|
+
/** #435: `jevitate catalog analyze` as text or Markdown. */
|
|
69
|
+
export declare function renderCatalogAnalysis(r: CatalogAnalysis, style: "markdown" | "text"): string;
|
|
70
|
+
export {};
|