@kyo-so/cli 0.11.0 → 0.13.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.
@@ -1,5 +1,12 @@
1
- export declare const CURRENT_SKILL_DIGEST = "sha256:570f83f716734f34db00147f1b98bc8cd4e9c0016d3946b352ecef4a5d6b8734";
1
+ export declare const CURRENT_SKILL_DIGEST = "sha256:8654e68ea61f2acea29027056802bf627ad737f084c9a86ab052946943538409";
2
2
  export declare const KNOWN_SKILL_DIGESTS_BY_VERSION: {
3
+ readonly "0.11.0": readonly [{
4
+ readonly digest: "sha256:110dd872a3d1c8a71474a0eadb226f51a6addd86f9d4f3ed17b73678b3179a4e";
5
+ readonly kind: "historical";
6
+ }, {
7
+ readonly digest: "sha256:570f83f716734f34db00147f1b98bc8cd4e9c0016d3946b352ecef4a5d6b8734";
8
+ readonly kind: "historical";
9
+ }];
3
10
  readonly "0.8.0": readonly [{
4
11
  readonly digest: "sha256:b16ea3f8141a01399b96dee650365d99df2b8c5fc99184d9cb22d5d72c106fd8";
5
12
  readonly kind: "historical";
@@ -10,9 +10,9 @@ export declare const PLUGIN_RUNTIME_COMPATIBILITY_SCHEMA_VERSION = 1;
10
10
  export declare const MINIMUM_SUPPORTED_CODEX_VERSION = "0.144.0-alpha.4";
11
11
  export declare const PLUGIN_RUNTIME_EXPECTED_CONTRACT: {
12
12
  readonly distribution: {
13
- readonly pluginVersion: "0.4.0";
13
+ readonly pluginVersion: "0.6.0";
14
14
  readonly mcpCommand: "npx";
15
- readonly mcpPackagePin: "@kyo-so/cli@0.10.0";
15
+ readonly mcpPackagePin: "@kyo-so/cli@0.12.0";
16
16
  };
17
17
  readonly marketplace: {
18
18
  readonly name: "kyoso";
@@ -50,7 +50,7 @@ export declare const PLUGIN_RUNTIME_EXPECTED_CONTRACT: {
50
50
  readonly envVars: readonly ["OPENAI_API_KEY", "CODEX_API_KEY", "CODEX_HOME", "CODEX_ACCESS_TOKEN", "OPENROUTER_API_KEY", "ANTHROPIC_API_KEY", "CLAUDE_CODE_OAUTH_TOKEN"];
51
51
  readonly cwd: null;
52
52
  readonly startupTimeoutSec: 20;
53
- readonly toolTimeoutSec: 360;
53
+ readonly toolTimeoutSec: 2160;
54
54
  };
55
55
  readonly pluginOverride: {
56
56
  readonly enabled: false;
@@ -59,7 +59,7 @@ export declare const PLUGIN_RUNTIME_EXPECTED_CONTRACT: {
59
59
  readonly envVars: readonly ["OPENAI_API_KEY", "CODEX_API_KEY", "CODEX_HOME", "CODEX_ACCESS_TOKEN", "OPENROUTER_API_KEY", "ANTHROPIC_API_KEY", "CLAUDE_CODE_OAUTH_TOKEN"];
60
60
  readonly cwd: null;
61
61
  readonly startupTimeoutSec: 20;
62
- readonly toolTimeoutSec: 360;
62
+ readonly toolTimeoutSec: 2160;
63
63
  };
64
64
  readonly manualOverride: {
65
65
  readonly enabled: true;
@@ -130,9 +130,9 @@ export declare const pluginRuntimeContract: {
130
130
  readonly pluginListTopLevelKeys: readonly ["installed", "available"];
131
131
  readonly expectedContract: {
132
132
  readonly distribution: {
133
- readonly pluginVersion: "0.4.0";
133
+ readonly pluginVersion: "0.6.0";
134
134
  readonly mcpCommand: "npx";
135
- readonly mcpPackagePin: "@kyo-so/cli@0.10.0";
135
+ readonly mcpPackagePin: "@kyo-so/cli@0.12.0";
136
136
  };
137
137
  readonly marketplace: {
138
138
  readonly name: "kyoso";
@@ -170,7 +170,7 @@ export declare const pluginRuntimeContract: {
170
170
  readonly envVars: readonly ["OPENAI_API_KEY", "CODEX_API_KEY", "CODEX_HOME", "CODEX_ACCESS_TOKEN", "OPENROUTER_API_KEY", "ANTHROPIC_API_KEY", "CLAUDE_CODE_OAUTH_TOKEN"];
171
171
  readonly cwd: null;
172
172
  readonly startupTimeoutSec: 20;
173
- readonly toolTimeoutSec: 360;
173
+ readonly toolTimeoutSec: 2160;
174
174
  };
175
175
  readonly pluginOverride: {
176
176
  readonly enabled: false;
@@ -179,7 +179,7 @@ export declare const pluginRuntimeContract: {
179
179
  readonly envVars: readonly ["OPENAI_API_KEY", "CODEX_API_KEY", "CODEX_HOME", "CODEX_ACCESS_TOKEN", "OPENROUTER_API_KEY", "ANTHROPIC_API_KEY", "CLAUDE_CODE_OAUTH_TOKEN"];
180
180
  readonly cwd: null;
181
181
  readonly startupTimeoutSec: 20;
182
- readonly toolTimeoutSec: 360;
182
+ readonly toolTimeoutSec: 2160;
183
183
  };
184
184
  readonly manualOverride: {
185
185
  readonly enabled: true;
@@ -11,12 +11,31 @@ export declare const kyosoConfigSchema: z.ZodObject<{
11
11
  mcp: z.ZodBoolean;
12
12
  cli: z.ZodBoolean;
13
13
  }, z.core.$strip>;
14
- firstClassClient: z.ZodString;
14
+ firstClassClient: z.ZodLiteral<"codex">;
15
15
  tools: z.ZodObject<{
16
16
  planReview: z.ZodBoolean;
17
17
  securityReview: z.ZodBoolean;
18
18
  diffReview: z.ZodBoolean;
19
19
  }, z.core.$strip>;
20
+ reviewPolicy: z.ZodObject<{
21
+ additionalLenses: z.ZodArray<z.ZodEnum<{
22
+ correctness: "correctness";
23
+ regression: "regression";
24
+ security_boundaries: "security_boundaries";
25
+ secrets_and_injection: "secrets_and_injection";
26
+ data_integrity: "data_integrity";
27
+ public_contract: "public_contract";
28
+ supply_chain: "supply_chain";
29
+ privacy: "privacy";
30
+ resource_amplification: "resource_amplification";
31
+ architecture: "architecture";
32
+ performance: "performance";
33
+ tests: "tests";
34
+ documentation: "documentation";
35
+ maintainability: "maintainability";
36
+ }>>;
37
+ multiAgentRequired: z.ZodBoolean;
38
+ }, z.core.$strip>;
20
39
  agents: z.ZodObject<{
21
40
  codex: z.ZodObject<{
22
41
  enabled: z.ZodDefault<z.ZodBoolean>;
@@ -71,7 +90,7 @@ export declare const kyosoConfigSchema: z.ZodObject<{
71
90
  workspace: z.ZodObject<{
72
91
  mode: z.ZodLiteral<"temp_snapshot">;
73
92
  root: z.ZodString;
74
- readOnly: z.ZodBoolean;
93
+ readOnly: z.ZodLiteral<true>;
75
94
  maxContextBytes: z.ZodNumber;
76
95
  maxDiffBytes: z.ZodNumber;
77
96
  deny: z.ZodArray<z.ZodString>;
@@ -89,7 +108,7 @@ export declare const kyosoConfigSchema: z.ZodObject<{
89
108
  allowUnrestricted: z.ZodBoolean;
90
109
  warnOnUnrestricted: z.ZodBoolean;
91
110
  mediatedWeb: z.ZodObject<{
92
- enabled: z.ZodBoolean;
111
+ enabled: z.ZodLiteral<false>;
93
112
  }, z.core.$strip>;
94
113
  }, z.core.$strip>;
95
114
  securityReview: z.ZodObject<{
@@ -126,6 +145,7 @@ export declare const kyosoConfigSchema: z.ZodObject<{
126
145
  reviewBudget: z.ZodObject<{
127
146
  maxModelCalls: z.ZodNumber;
128
147
  maxTotalWallTimeMs: z.ZodNumber;
148
+ warnAgentOutputBytes: z.ZodNumber;
129
149
  maxAgentOutputBytes: z.ZodNumber;
130
150
  maxFindingsPerAgent: z.ZodNumber;
131
151
  skipOptionalPhasesWhenTokenUsageUnknown: z.ZodBoolean;
@@ -135,7 +155,7 @@ export declare const kyosoConfigSchema: z.ZodObject<{
135
155
  format: z.ZodLiteral<"jsonl">;
136
156
  directory: z.ZodString;
137
157
  includeRawAgentOutput: z.ZodBoolean;
138
- includeFileContents: z.ZodBoolean;
158
+ includeFileContents: z.ZodLiteral<false>;
139
159
  }, z.core.$strip>;
140
160
  }, z.core.$strip>;
141
161
  export declare const kyosoConfigKnownLeafPaths: string[];
@@ -1,9 +1,10 @@
1
- export declare const DEFAULT_AGENT_TIMEOUT_MS = 120000;
1
+ export declare const DEFAULT_AGENT_TIMEOUT_MS = 600000;
2
2
  export declare const DEFAULT_MAX_CONTEXT_BYTES = 500000;
3
3
  export declare const DEFAULT_MAX_DIFF_BYTES = 300000;
4
+ export declare const DEFAULT_WARN_AGENT_OUTPUT_BYTES = 524288;
4
5
  export declare const MAX_AGENT_OUTPUT_BYTES = 1048576;
5
6
  export declare const JUDGE_MAX_OUTPUT_TOKENS = 4096;
6
7
  export declare const RAW_OUTPUT_MAX_CHARS = 16384;
7
8
  export declare const TRACE_DIR = ".kyoso/traces";
8
9
  export declare const KYOSO_CHILD_AGENT = "KYOSO_CHILD_AGENT";
9
- export declare const KYOSO_VERSION = "0.11.0";
10
+ export declare const KYOSO_VERSION = "0.13.0";
@@ -0,0 +1,10 @@
1
+ import type { EvidenceRef, KyosoFinding, KyosoReviewRequest, ReviewMode, ReviewTool } from "./types.js";
2
+ export declare function admitFindings(input: {
3
+ tool: ReviewTool;
4
+ request: KyosoReviewRequest;
5
+ findings: KyosoFinding[];
6
+ reviewMode: ReviewMode;
7
+ }): KyosoFinding[];
8
+ export declare function selectRegressionTests(tests: string[]): string[];
9
+ export declare function buildAdmissionOpenQuestions(findings: KyosoFinding[]): string[];
10
+ export declare function findingFingerprint(finding: Pick<KyosoFinding, "category" | "title">, evidenceRefs: EvidenceRef[]): string;
@@ -0,0 +1,9 @@
1
+ import type { ModelExecutionIdentity, ModelProviderRoute } from "./types.js";
2
+ export declare const MODEL_EXECUTION_IDENTITY_MAX_CHARS = 160;
3
+ export declare function createModelExecutionIdentity(input: {
4
+ providerRoute: ModelProviderRoute;
5
+ requestedModel?: unknown;
6
+ reportedProvider?: unknown;
7
+ reportedModel?: unknown;
8
+ }): ModelExecutionIdentity;
9
+ export declare function normalizeModelExecutionIdentity(value: unknown): ModelExecutionIdentity | undefined;
@@ -1,11 +1,12 @@
1
1
  import type { KyosoConfig } from "../config/schema.js";
2
- import type { AgentRole, KyosoReviewRequest, ReviewBudget, ReviewTool } from "./types.js";
3
- export declare const REVIEW_CONTRACT_VERSION = "2026-07-15-v1";
2
+ import type { AgentRole, KyosoReviewRequest, ResolvedReviewBudget, ReviewTool } from "./types.js";
3
+ export declare const REVIEW_CONTRACT_VERSION = "2026-07-16-v3";
4
4
  export declare function createRequestFingerprint(input: {
5
5
  tool: ReviewTool;
6
6
  request: KyosoReviewRequest;
7
7
  config: KyosoConfig;
8
8
  roles: Partial<Record<"codex" | "claude", AgentRole>>;
9
- budget: ReviewBudget;
9
+ budget: ResolvedReviewBudget;
10
+ entrypoint?: "cli" | "mcp" | "core";
10
11
  }): string;
11
12
  export declare function canonicalJson(value: unknown): string;
@@ -1,4 +1,4 @@
1
- import type { AgentName, ModelCallKind, ModelTokenUsage, ReviewBudget, ReviewBudgetRequest, ReviewCompletion, ReviewCompletionReason, ReviewExecutionBudget, ReviewModelCallAudit } from "./types.js";
1
+ import type { AgentName, ModelExecutionIdentity, ModelCallKind, ModelTokenUsage, ReviewBudget, ReviewBudgetRequest, ReviewCompletion, ReviewCompletionReason, ReviewExecutionBudget, ReviewModelCallPlan, ReviewModelCallAudit, ResolvedReviewBudget } from "./types.js";
2
2
  type ReservationStatus = "reserved" | "started" | "completed" | "skipped";
3
3
  type Reservation = {
4
4
  id: number;
@@ -6,24 +6,39 @@ type Reservation = {
6
6
  agent?: AgentName;
7
7
  status: ReservationStatus;
8
8
  reason?: string;
9
+ messageBytes?: number;
10
+ thoughtBytes?: number;
9
11
  outputBytes?: number;
12
+ outputWarningTriggered?: boolean;
13
+ salvaged?: boolean;
14
+ reportedFindings?: number;
15
+ findingsTargetExceeded?: boolean;
10
16
  usage?: ModelTokenUsage;
17
+ executionIdentity?: ModelExecutionIdentity;
11
18
  stopReason?: string;
12
19
  };
13
20
  export type ModelCallReservation = Pick<Reservation, "id" | "kind" | "agent">;
14
21
  export type BudgetReservationFailure = {
15
22
  reason: "model_call_budget" | "deadline";
16
23
  };
17
- export declare function resolveReviewBudget(ceiling: ReviewBudget, requested: ReviewBudgetRequest | undefined): ReviewBudget;
24
+ export declare function resolveReviewBudget(ceiling: ReviewBudget, requested: ReviewBudgetRequest | undefined): ResolvedReviewBudget;
25
+ export declare function buildReviewModelCallPlan(input: {
26
+ maxModelCalls: number;
27
+ requiredPrimaryCalls: number;
28
+ verificationEnabled: boolean;
29
+ verificationMaxFindings: number;
30
+ llmJudgeAvailable: boolean;
31
+ }): ReviewModelCallPlan;
18
32
  export declare class ReviewBudgetTracker {
19
- readonly budget: ReviewBudget;
33
+ readonly budget: ResolvedReviewBudget;
20
34
  readonly startedAtEpochMs: number;
35
+ readonly modelCallPlan: ReviewModelCallPlan;
21
36
  readonly deadlineAtEpochMs: number;
22
37
  private readonly reservations;
23
38
  private readonly skippedCalls;
24
39
  private readonly incompleteReasons;
25
40
  private nextReservationId;
26
- constructor(budget: ReviewBudget, startedAtEpochMs?: number);
41
+ constructor(budget: ResolvedReviewBudget, startedAtEpochMs?: number, modelCallPlan?: ReviewModelCallPlan);
27
42
  remainingWallTimeMs(now?: number): number;
28
43
  hasDeadlineExpired(now?: number): boolean;
29
44
  reserveMany(inputs: Array<{
@@ -42,11 +57,19 @@ export declare class ReviewBudgetTracker {
42
57
  } | {
43
58
  failure: BudgetReservationFailure;
44
59
  };
45
- markStarted(reservation: ModelCallReservation): void;
60
+ markStarted(reservation: ModelCallReservation, executionIdentity?: ModelExecutionIdentity): void;
46
61
  hasStarted(reservation: ModelCallReservation): boolean;
62
+ executionIdentity(reservation: ModelCallReservation): ModelExecutionIdentity | undefined;
47
63
  complete(reservation: ModelCallReservation, values?: {
64
+ messageBytes?: number;
65
+ thoughtBytes?: number;
48
66
  outputBytes?: number;
67
+ outputWarningTriggered?: boolean;
68
+ salvaged?: boolean;
69
+ reportedFindings?: number;
70
+ findingsTargetExceeded?: boolean;
49
71
  usage?: ModelTokenUsage;
72
+ executionIdentity?: ModelExecutionIdentity;
50
73
  stopReason?: string;
51
74
  }): void;
52
75
  skip(reservation: ModelCallReservation, reason: string): void;
@@ -0,0 +1,16 @@
1
+ import type { AgentRole, AgentRunResult, KyosoReviewRequest, ReviewCoverage, ReviewLens } from "./types.js";
2
+ export declare const REVIEW_LENSES: readonly ["correctness", "regression", "security_boundaries", "secrets_and_injection", "data_integrity", "public_contract", "supply_chain", "privacy", "resource_amplification", "architecture", "performance", "tests", "documentation", "maintainability"];
3
+ export declare const BUILT_IN_SAFETY_FLOOR: readonly ["correctness", "regression", "security_boundaries", "secrets_and_injection", "data_integrity", "public_contract"];
4
+ export declare const REQUIRED_REVIEW_PERSPECTIVES: AgentRole[];
5
+ export declare function isReviewLens(value: unknown): value is ReviewLens;
6
+ export declare function resolveRequiredLenses(request: KyosoReviewRequest, additionalLenses?: ReviewLens[]): ReviewLens[];
7
+ export declare function buildReviewCoverage(input: {
8
+ request: KyosoReviewRequest;
9
+ additionalLenses?: ReviewLens[];
10
+ agentResults: AgentRunResult[];
11
+ }): ReviewCoverage;
12
+ export declare function isCoverageIncomplete(coverage: ReviewCoverage, options: {
13
+ multiAgentRequired: boolean;
14
+ }): boolean;
15
+ export declare function unavailableReviewCoverage(request: KyosoReviewRequest, reason: string, additionalLenses?: ReviewLens[]): ReviewCoverage;
16
+ export declare function renderTrustedReviewContract(request: KyosoReviewRequest, requiredLenses?: ReviewLens[]): string;
@@ -10,6 +10,7 @@ export type RunReviewOptions = LoadConfigOptions & {
10
10
  agentManager?: AcpAgentManager;
11
11
  env?: NodeJS.ProcessEnv;
12
12
  mcpNetworkMode?: NetworkMode;
13
+ entrypoint?: "cli" | "mcp" | "core";
13
14
  traceWriterFactory?: (options: TraceWriterOptions) => TraceWriter;
14
15
  };
15
16
  export declare function runReview(tool: ReviewTool, request: KyosoReviewRequest, options?: RunReviewOptions): Promise<KyosoResult>;
@@ -4,14 +4,37 @@ export type GateStatus = "pass" | "warn" | "fail" | "not_applicable";
4
4
  export type NetworkMode = "model_only" | "unrestricted";
5
5
  export type JudgeProvider = "auto" | "openai" | "anthropic" | "none";
6
6
  export type Severity = "critical" | "high" | "medium" | "low" | "info";
7
+ export type ReviewLens = "correctness" | "regression" | "security_boundaries" | "secrets_and_injection" | "data_integrity" | "public_contract" | "supply_chain" | "privacy" | "resource_amplification" | "architecture" | "performance" | "tests" | "documentation" | "maintainability";
8
+ export type ReviewContract = {
9
+ focus?: ReviewLens[];
10
+ nonGoals?: string[];
11
+ acceptedRisks?: Array<{
12
+ findingFingerprint: string;
13
+ rationale: string;
14
+ }>;
15
+ };
16
+ export type FindingDisposition = "gate" | "actionable" | "advisory" | "disputed";
17
+ export type ChangeRelation = "introduced" | "worsened" | "pre_existing" | "unknown";
18
+ export type EvidenceQuality = "concrete" | "partial" | "insufficient";
19
+ export type EvidenceRef = {
20
+ kind: "file" | "diff_hunk" | "plan_clause";
21
+ path?: string;
22
+ lineStart?: number;
23
+ lineEnd?: number;
24
+ label?: string;
25
+ };
7
26
  export type ReviewBudget = {
8
27
  maxModelCalls: number;
9
28
  maxTotalWallTimeMs: number;
29
+ warnAgentOutputBytes: number;
10
30
  maxAgentOutputBytes: number;
11
31
  maxFindingsPerAgent: number;
12
32
  skipOptionalPhasesWhenTokenUsageUnknown: boolean;
13
33
  };
14
- export type ReviewBudgetRequest = Partial<ReviewBudget>;
34
+ export type ReviewBudgetRequest = Partial<Omit<ReviewBudget, "warnAgentOutputBytes">>;
35
+ export type ResolvedReviewBudget = ReviewBudget & {
36
+ effectiveWarnAgentOutputBytes?: number;
37
+ };
15
38
  export type ReviewCompletionReason = "model_call_budget" | "deadline" | "agent_output_limit" | "token_usage_unknown" | "coverage_incomplete" | "disputed_finding";
16
39
  export type ReviewCompletion = {
17
40
  status: "complete" | "incomplete";
@@ -19,6 +42,26 @@ export type ReviewCompletion = {
19
42
  retryable: false;
20
43
  };
21
44
  export type ModelCallKind = "primary" | "verifier" | "judge";
45
+ export type ModelProviderRoute = "codex_default" | "claude_default" | "openrouter" | "openai" | "anthropic";
46
+ export type ModelExecutionIdentity = {
47
+ providerRoute: ModelProviderRoute;
48
+ requestedModel?: string;
49
+ reportedProvider?: string;
50
+ reportedModel?: string;
51
+ reportingStatus: "reported" | "requested_only" | "unknown";
52
+ };
53
+ export type ReviewModelCallPlan = {
54
+ requiredPrimaryCalls: number;
55
+ potentialVerifierCalls: number;
56
+ potentialJudgeCalls: number;
57
+ potentialTotalCalls: number;
58
+ ceilingEffects: Array<{
59
+ kind: ModelCallKind;
60
+ action: "skip" | "deterministic_fallback";
61
+ calls: number;
62
+ reason: "model_call_budget";
63
+ }>;
64
+ };
22
65
  export type ModelTokenUsage = {
23
66
  totalTokens?: number;
24
67
  inputTokens?: number;
@@ -31,6 +74,7 @@ export type FindingCategory = "architecture" | "authn" | "authz" | "csrf" | "xss
31
74
  export type CisaDimension = "customer_security_outcomes" | "secure_by_default" | "transparency_and_accountability" | "governance";
32
75
  export type KyosoReviewRequest = {
33
76
  goal: string;
77
+ reviewContract?: ReviewContract;
34
78
  repoSummary?: string;
35
79
  currentPlan?: string;
36
80
  selectedFiles?: Array<{
@@ -66,6 +110,12 @@ export type KyosoFinding = {
66
110
  title: string;
67
111
  evidence: string;
68
112
  recommendation: string;
113
+ disposition: FindingDisposition;
114
+ changeRelation: ChangeRelation;
115
+ evidenceQuality: EvidenceQuality;
116
+ evidenceRefs: EvidenceRef[];
117
+ policyReasons: string[];
118
+ fingerprint: string;
69
119
  files?: Array<{
70
120
  path: string;
71
121
  lineStart?: number;
@@ -82,6 +132,8 @@ export type KyosoFinding = {
82
132
  };
83
133
  };
84
134
  export type CisaSecureByDesignResult = {
135
+ gateEnabled: boolean;
136
+ enabledDimensions: CisaDimension[];
85
137
  customerSecurityOutcomes: GateStatus;
86
138
  secureByDefault: GateStatus;
87
139
  transparencyAndAccountability: GateStatus;
@@ -91,6 +143,17 @@ export type CisaSecureByDesignResult = {
91
143
  export type AgentName = "codex" | "claude";
92
144
  export type AgentRole = "implementation_reviewer" | "architecture_security_reviewer" | "combined_reviewer" | "finding_verifier";
93
145
  export type ReviewMode = "multi_agent" | "single_agent";
146
+ export type ReviewCoverage = {
147
+ requiredLenses: ReviewLens[];
148
+ attemptedLenses: ReviewLens[];
149
+ missingLenses: Array<{
150
+ lens: ReviewLens;
151
+ reason: string;
152
+ }>;
153
+ requiredPerspectives: AgentRole[];
154
+ completedPerspectives: AgentRole[];
155
+ independentReview: boolean;
156
+ };
94
157
  export type NormalizedAgentOpinion = {
95
158
  agent: AgentName;
96
159
  role: string;
@@ -101,6 +164,10 @@ export type NormalizedAgentOpinion = {
101
164
  title: string;
102
165
  evidence: string;
103
166
  recommendation: string;
167
+ disposition?: FindingDisposition;
168
+ changeRelation?: ChangeRelation;
169
+ evidenceQuality?: EvidenceQuality;
170
+ evidenceRefs?: EvidenceRef[];
104
171
  files?: Array<{
105
172
  path: string;
106
173
  lineStart?: number;
@@ -135,9 +202,10 @@ export type AgentRunInput = {
135
202
  workspaceDir: string;
136
203
  timeoutMs: number;
137
204
  deadlineAtEpochMs?: number;
205
+ warnOutputBytes?: number;
138
206
  maxOutputBytes?: number;
139
207
  networkMode: NetworkMode;
140
- onStarted?: (() => void) | (() => Promise<void>);
208
+ onStarted?: (executionIdentity?: ModelExecutionIdentity) => unknown;
141
209
  };
142
210
  export type AgentRunResult = {
143
211
  agent: AgentName;
@@ -152,13 +220,21 @@ export type AgentRunResult = {
152
220
  };
153
221
  warnings?: string[];
154
222
  usage?: ModelTokenUsage;
223
+ executionIdentity?: ModelExecutionIdentity;
224
+ messageBytes?: number;
225
+ thoughtBytes?: number;
155
226
  outputBytes?: number;
227
+ outputWarningTriggered?: boolean;
228
+ salvaged?: boolean;
229
+ reportedFindings?: number;
230
+ findingsTargetExceeded?: boolean;
156
231
  stopReason?: string;
157
232
  startedAt: string;
158
233
  completedAt?: string;
159
234
  };
160
235
  export type ReviewExecutionBudget = {
161
236
  maxModelCalls: number;
237
+ modelCallPlan: ReviewModelCallPlan;
162
238
  modelCalls: {
163
239
  planned: number;
164
240
  consumed: number;
@@ -174,6 +250,7 @@ export type ReviewExecutionBudget = {
174
250
  consumedMs: number;
175
251
  remainingMs: number;
176
252
  };
253
+ effectiveWarnAgentOutputBytes?: number;
177
254
  maxAgentOutputBytes: number;
178
255
  maxFindingsPerAgent: number;
179
256
  skipOptionalPhasesWhenTokenUsageUnknown: boolean;
@@ -190,8 +267,15 @@ export type ReviewModelCallAudit = {
190
267
  agent?: AgentName;
191
268
  status: "completed" | "skipped";
192
269
  reason?: string;
270
+ messageBytes?: number;
271
+ thoughtBytes?: number;
193
272
  outputBytes?: number;
273
+ outputWarningTriggered?: boolean;
274
+ salvaged?: boolean;
275
+ reportedFindings?: number;
276
+ findingsTargetExceeded?: boolean;
194
277
  usage?: ModelTokenUsage;
278
+ executionIdentity?: ModelExecutionIdentity;
195
279
  stopReason?: string;
196
280
  };
197
281
  export type KyosoResult = {
@@ -202,6 +286,7 @@ export type KyosoResult = {
202
286
  degraded: boolean;
203
287
  agentsUsed: AgentName[];
204
288
  reviewMode: ReviewMode;
289
+ coverage: ReviewCoverage;
205
290
  verificationMode?: "cross_agent" | "skipped_single_agent";
206
291
  summaryMarkdown: string;
207
292
  findings: KyosoFinding[];
@@ -217,12 +302,14 @@ export type KyosoResult = {
217
302
  crossModelAnalysis?: CrossModelAnalysis;
218
303
  testsToAdd: string[];
219
304
  residualRisks: string[];
305
+ openQuestions: string[];
220
306
  agentOpinions: Array<{
221
307
  agent: AgentName;
222
308
  role: string;
223
309
  summary: string;
224
310
  status: "completed" | "failed" | "timeout" | "skipped";
225
311
  errorCode?: string;
312
+ salvaged?: boolean;
226
313
  rawText?: string;
227
314
  }>;
228
315
  audit: {
package/dist/index.d.ts CHANGED
@@ -1,3 +1,3 @@
1
1
  export { defineConfig } from "./config/defineConfig.js";
2
2
  export { runReview } from "./core/runReview.js";
3
- export type { CisaSecureByDesignResult, GateStatus, KyosoDecision, KyosoFinding, KyosoResult, KyosoReviewRequest, ModelTokenUsage, NetworkMode, ReviewBudget, ReviewBudgetRequest, ReviewCompletion, ReviewExecutionBudget, ReviewModelCallAudit, ReviewTool, } from "./core/types.js";
3
+ export type { ChangeRelation, CisaSecureByDesignResult, EvidenceQuality, EvidenceRef, FindingDisposition, GateStatus, KyosoDecision, KyosoFinding, KyosoResult, KyosoReviewRequest, ModelExecutionIdentity, ModelProviderRoute, ModelTokenUsage, NetworkMode, ReviewBudget, ReviewBudgetRequest, ReviewCompletion, ReviewContract, ReviewCoverage, ReviewExecutionBudget, ReviewLens, ReviewModelCallAudit, ReviewTool, } from "./core/types.js";