@kyo-so/cli 0.11.0 → 0.12.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/.agents/skills/kyoso-review/SKILL.md +14 -6
- package/CHANGELOG.md +32 -0
- package/README.ja.md +46 -9
- package/README.md +46 -9
- package/README.zh-CN.md +46 -9
- package/dist/acp/prompts.d.ts +8 -3
- package/dist/aggregate/aggregateFindings.d.ts +1 -0
- package/dist/bin/kyoso.js +948 -95
- package/dist/cli/knownSkillDigests.d.ts +8 -1
- package/dist/cli/pluginRuntimeContract.d.ts +4 -4
- package/dist/config/schema.d.ts +23 -4
- package/dist/core/constants.d.ts +1 -1
- package/dist/core/findingAdmission.d.ts +10 -0
- package/dist/core/requestFingerprint.d.ts +2 -1
- package/dist/core/reviewPolicy.d.ts +16 -0
- package/dist/core/runReview.d.ts +1 -0
- package/dist/core/types.d.ts +45 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +898 -92
- package/dist/mcp/schemas.d.ts +23 -0
- package/dist/security/cisaGate.d.ts +11 -1
- package/package.json +1 -1
|
@@ -1,5 +1,12 @@
|
|
|
1
|
-
export declare const CURRENT_SKILL_DIGEST = "sha256:
|
|
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.
|
|
13
|
+
readonly pluginVersion: "0.5.0";
|
|
14
14
|
readonly mcpCommand: "npx";
|
|
15
|
-
readonly mcpPackagePin: "@kyo-so/cli@0.
|
|
15
|
+
readonly mcpPackagePin: "@kyo-so/cli@0.11.0";
|
|
16
16
|
};
|
|
17
17
|
readonly marketplace: {
|
|
18
18
|
readonly name: "kyoso";
|
|
@@ -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.
|
|
133
|
+
readonly pluginVersion: "0.5.0";
|
|
134
134
|
readonly mcpCommand: "npx";
|
|
135
|
-
readonly mcpPackagePin: "@kyo-so/cli@0.
|
|
135
|
+
readonly mcpPackagePin: "@kyo-so/cli@0.11.0";
|
|
136
136
|
};
|
|
137
137
|
readonly marketplace: {
|
|
138
138
|
readonly name: "kyoso";
|
package/dist/config/schema.d.ts
CHANGED
|
@@ -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.
|
|
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.
|
|
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.
|
|
111
|
+
enabled: z.ZodLiteral<false>;
|
|
93
112
|
}, z.core.$strip>;
|
|
94
113
|
}, z.core.$strip>;
|
|
95
114
|
securityReview: z.ZodObject<{
|
|
@@ -135,7 +154,7 @@ export declare const kyosoConfigSchema: z.ZodObject<{
|
|
|
135
154
|
format: z.ZodLiteral<"jsonl">;
|
|
136
155
|
directory: z.ZodString;
|
|
137
156
|
includeRawAgentOutput: z.ZodBoolean;
|
|
138
|
-
includeFileContents: z.
|
|
157
|
+
includeFileContents: z.ZodLiteral<false>;
|
|
139
158
|
}, z.core.$strip>;
|
|
140
159
|
}, z.core.$strip>;
|
|
141
160
|
export declare const kyosoConfigKnownLeafPaths: string[];
|
package/dist/core/constants.d.ts
CHANGED
|
@@ -6,4 +6,4 @@ export declare const JUDGE_MAX_OUTPUT_TOKENS = 4096;
|
|
|
6
6
|
export declare const RAW_OUTPUT_MAX_CHARS = 16384;
|
|
7
7
|
export declare const TRACE_DIR = ".kyoso/traces";
|
|
8
8
|
export declare const KYOSO_CHILD_AGENT = "KYOSO_CHILD_AGENT";
|
|
9
|
-
export declare const KYOSO_VERSION = "0.
|
|
9
|
+
export declare const KYOSO_VERSION = "0.12.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;
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import type { KyosoConfig } from "../config/schema.js";
|
|
2
2
|
import type { AgentRole, KyosoReviewRequest, ReviewBudget, ReviewTool } from "./types.js";
|
|
3
|
-
export declare const REVIEW_CONTRACT_VERSION = "2026-07-
|
|
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
9
|
budget: ReviewBudget;
|
|
10
|
+
entrypoint?: "cli" | "mcp" | "core";
|
|
10
11
|
}): string;
|
|
11
12
|
export declare function canonicalJson(value: unknown): string;
|
|
@@ -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;
|
package/dist/core/runReview.d.ts
CHANGED
|
@@ -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>;
|
package/dist/core/types.d.ts
CHANGED
|
@@ -4,6 +4,25 @@ 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;
|
|
@@ -31,6 +50,7 @@ export type FindingCategory = "architecture" | "authn" | "authz" | "csrf" | "xss
|
|
|
31
50
|
export type CisaDimension = "customer_security_outcomes" | "secure_by_default" | "transparency_and_accountability" | "governance";
|
|
32
51
|
export type KyosoReviewRequest = {
|
|
33
52
|
goal: string;
|
|
53
|
+
reviewContract?: ReviewContract;
|
|
34
54
|
repoSummary?: string;
|
|
35
55
|
currentPlan?: string;
|
|
36
56
|
selectedFiles?: Array<{
|
|
@@ -66,6 +86,12 @@ export type KyosoFinding = {
|
|
|
66
86
|
title: string;
|
|
67
87
|
evidence: string;
|
|
68
88
|
recommendation: string;
|
|
89
|
+
disposition: FindingDisposition;
|
|
90
|
+
changeRelation: ChangeRelation;
|
|
91
|
+
evidenceQuality: EvidenceQuality;
|
|
92
|
+
evidenceRefs: EvidenceRef[];
|
|
93
|
+
policyReasons: string[];
|
|
94
|
+
fingerprint: string;
|
|
69
95
|
files?: Array<{
|
|
70
96
|
path: string;
|
|
71
97
|
lineStart?: number;
|
|
@@ -82,6 +108,8 @@ export type KyosoFinding = {
|
|
|
82
108
|
};
|
|
83
109
|
};
|
|
84
110
|
export type CisaSecureByDesignResult = {
|
|
111
|
+
gateEnabled: boolean;
|
|
112
|
+
enabledDimensions: CisaDimension[];
|
|
85
113
|
customerSecurityOutcomes: GateStatus;
|
|
86
114
|
secureByDefault: GateStatus;
|
|
87
115
|
transparencyAndAccountability: GateStatus;
|
|
@@ -91,6 +119,17 @@ export type CisaSecureByDesignResult = {
|
|
|
91
119
|
export type AgentName = "codex" | "claude";
|
|
92
120
|
export type AgentRole = "implementation_reviewer" | "architecture_security_reviewer" | "combined_reviewer" | "finding_verifier";
|
|
93
121
|
export type ReviewMode = "multi_agent" | "single_agent";
|
|
122
|
+
export type ReviewCoverage = {
|
|
123
|
+
requiredLenses: ReviewLens[];
|
|
124
|
+
attemptedLenses: ReviewLens[];
|
|
125
|
+
missingLenses: Array<{
|
|
126
|
+
lens: ReviewLens;
|
|
127
|
+
reason: string;
|
|
128
|
+
}>;
|
|
129
|
+
requiredPerspectives: AgentRole[];
|
|
130
|
+
completedPerspectives: AgentRole[];
|
|
131
|
+
independentReview: boolean;
|
|
132
|
+
};
|
|
94
133
|
export type NormalizedAgentOpinion = {
|
|
95
134
|
agent: AgentName;
|
|
96
135
|
role: string;
|
|
@@ -101,6 +140,10 @@ export type NormalizedAgentOpinion = {
|
|
|
101
140
|
title: string;
|
|
102
141
|
evidence: string;
|
|
103
142
|
recommendation: string;
|
|
143
|
+
disposition?: FindingDisposition;
|
|
144
|
+
changeRelation?: ChangeRelation;
|
|
145
|
+
evidenceQuality?: EvidenceQuality;
|
|
146
|
+
evidenceRefs?: EvidenceRef[];
|
|
104
147
|
files?: Array<{
|
|
105
148
|
path: string;
|
|
106
149
|
lineStart?: number;
|
|
@@ -202,6 +245,7 @@ export type KyosoResult = {
|
|
|
202
245
|
degraded: boolean;
|
|
203
246
|
agentsUsed: AgentName[];
|
|
204
247
|
reviewMode: ReviewMode;
|
|
248
|
+
coverage: ReviewCoverage;
|
|
205
249
|
verificationMode?: "cross_agent" | "skipped_single_agent";
|
|
206
250
|
summaryMarkdown: string;
|
|
207
251
|
findings: KyosoFinding[];
|
|
@@ -217,6 +261,7 @@ export type KyosoResult = {
|
|
|
217
261
|
crossModelAnalysis?: CrossModelAnalysis;
|
|
218
262
|
testsToAdd: string[];
|
|
219
263
|
residualRisks: string[];
|
|
264
|
+
openQuestions: string[];
|
|
220
265
|
agentOpinions: Array<{
|
|
221
266
|
agent: AgentName;
|
|
222
267
|
role: string;
|
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, ModelTokenUsage, NetworkMode, ReviewBudget, ReviewBudgetRequest, ReviewCompletion, ReviewContract, ReviewCoverage, ReviewExecutionBudget, ReviewLens, ReviewModelCallAudit, ReviewTool, } from "./core/types.js";
|