@komatikai/trailhead 4.4.4 → 4.5.1
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 +43 -39
- package/dist/index.js +12147 -271
- package/dist/index.js.map +1 -1
- package/dist/licenses.txt +51 -0
- package/dist/sourcemap-register.js +1 -0
- package/package.json +8 -7
- package/dist/index.d.ts +0 -2
- package/dist/run-doctor.d.ts +0 -1
- package/dist/run-doctor.js +0 -83
- package/dist/run-doctor.js.map +0 -1
- package/dist/shared/ci-core.d.ts +0 -18
- package/dist/shared/ci-core.js +0 -210
- package/dist/shared/ci-core.js.map +0 -1
- package/dist/shared/ci-manifest.d.ts +0 -82
- package/dist/shared/ci-manifest.js +0 -51
- package/dist/shared/ci-manifest.js.map +0 -1
- package/dist/shared/config-core.d.ts +0 -5
- package/dist/shared/config-core.js +0 -127
- package/dist/shared/config-core.js.map +0 -1
- package/dist/shared/doctor.d.ts +0 -48
- package/dist/shared/doctor.js +0 -308
- package/dist/shared/doctor.js.map +0 -1
- package/dist/shared/release-ready.d.ts +0 -27
- package/dist/shared/release-ready.js +0 -97
- package/dist/shared/release-ready.js.map +0 -1
- package/dist/shared/submission-checks/detectors.d.ts +0 -23
- package/dist/shared/submission-checks/detectors.js +0 -547
- package/dist/shared/submission-checks/detectors.js.map +0 -1
- package/dist/shared/submission-checks/helpers.d.ts +0 -30
- package/dist/shared/submission-checks/helpers.js +0 -119
- package/dist/shared/submission-checks/helpers.js.map +0 -1
- package/dist/shared/submission-checks/phase0-detectors.d.ts +0 -18
- package/dist/shared/submission-checks/phase0-detectors.js +0 -374
- package/dist/shared/submission-checks/phase0-detectors.js.map +0 -1
- package/dist/shared/submission-checks/syntax-validity.d.ts +0 -2
- package/dist/shared/submission-checks/syntax-validity.js +0 -44
- package/dist/shared/submission-checks/syntax-validity.js.map +0 -1
- package/dist/shared/submission-checks/types.d.ts +0 -33
- package/dist/shared/submission-checks/types.js +0 -2
- package/dist/shared/submission-checks/types.js.map +0 -1
- package/dist/shared/submission-engine.d.ts +0 -19
- package/dist/shared/submission-engine.js +0 -51
- package/dist/shared/submission-engine.js.map +0 -1
- package/dist/shared/types.d.ts +0 -2644
- package/dist/shared/types.js +0 -487
- package/dist/shared/types.js.map +0 -1
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
// Real parse-based syntax validation for Gate 1 (no bracket-count fallback).
|
|
2
|
-
// Parses full file content only — never a partial diff hunk (see submission-gate.md).
|
|
3
|
-
import { parseSync } from "@swc/core";
|
|
4
|
-
import yaml from "js-yaml";
|
|
5
|
-
import { extensionOf } from "./helpers.js";
|
|
6
|
-
const PARSEABLE = [".ts", ".tsx", ".js", ".jsx", ".mjs", ".cjs"];
|
|
7
|
-
function parserOptionsFor(ext) {
|
|
8
|
-
const isTs = ext === ".ts" || ext === ".tsx";
|
|
9
|
-
return {
|
|
10
|
-
syntax: isTs ? "typescript" : "ecmascript",
|
|
11
|
-
tsx: ext === ".tsx",
|
|
12
|
-
jsx: ext === ".jsx",
|
|
13
|
-
decorators: true,
|
|
14
|
-
dynamicImport: true,
|
|
15
|
-
};
|
|
16
|
-
}
|
|
17
|
-
/** Returns a one-line error message, or null when content parses cleanly. */
|
|
18
|
-
export function validateFileSyntax(filename, content) {
|
|
19
|
-
if (!content.trim())
|
|
20
|
-
return null;
|
|
21
|
-
const ext = extensionOf(filename);
|
|
22
|
-
try {
|
|
23
|
-
if (PARSEABLE.includes(ext)) {
|
|
24
|
-
parseSync(content, parserOptionsFor(ext));
|
|
25
|
-
}
|
|
26
|
-
else if (ext === ".json") {
|
|
27
|
-
JSON.parse(content);
|
|
28
|
-
}
|
|
29
|
-
else if (ext === ".yaml" || ext === ".yml") {
|
|
30
|
-
yaml.load(content);
|
|
31
|
-
}
|
|
32
|
-
else if (ext === ".md" && content.startsWith("---")) {
|
|
33
|
-
const end = content.indexOf("\n---", 3);
|
|
34
|
-
if (end > 0)
|
|
35
|
-
yaml.load(content.slice(3, end));
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
catch (error) {
|
|
39
|
-
const message = error instanceof Error ? error.message.split("\n")[0] : String(error);
|
|
40
|
-
return message || "Parse error";
|
|
41
|
-
}
|
|
42
|
-
return null;
|
|
43
|
-
}
|
|
44
|
-
//# sourceMappingURL=syntax-validity.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"syntax-validity.js","sourceRoot":"","sources":["../../../src/shared/submission-checks/syntax-validity.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,sFAAsF;AAEtF,OAAO,EAAE,SAAS,EAAqB,MAAM,WAAW,CAAC;AACzD,OAAO,IAAI,MAAM,SAAS,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,MAAM,SAAS,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAU,CAAC;AAE1E,SAAS,gBAAgB,CAAC,GAAW;IACnC,MAAM,IAAI,GAAG,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,MAAM,CAAC;IAC7C,OAAO;QACL,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY;QAC1C,GAAG,EAAE,GAAG,KAAK,MAAM;QACnB,GAAG,EAAE,GAAG,KAAK,MAAM;QACnB,UAAU,EAAE,IAAI;QAChB,aAAa,EAAE,IAAI;KACpB,CAAC;AACJ,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,kBAAkB,CAAC,QAAgB,EAAE,OAAe;IAClE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;QAAE,OAAO,IAAI,CAAC;IAEjC,MAAM,GAAG,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IAClC,IAAI,CAAC;QACH,IAAK,SAA+B,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACnD,SAAS,CAAC,OAAO,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5C,CAAC;aAAM,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;YAC3B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACtB,CAAC;aAAM,IAAI,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;YAC7C,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACrB,CAAC;aAAM,IAAI,GAAG,KAAK,KAAK,IAAI,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YACtD,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YACxC,IAAI,GAAG,GAAG,CAAC;gBAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACtF,OAAO,OAAO,IAAI,aAAa,CAAC;IAClC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
export interface SubmissionFileInfo {
|
|
2
|
-
filename: string;
|
|
3
|
-
patch?: string;
|
|
4
|
-
status?: string;
|
|
5
|
-
/** Full file content when fetched by the gate (optional). */
|
|
6
|
-
content?: string;
|
|
7
|
-
additions?: number;
|
|
8
|
-
}
|
|
9
|
-
export interface NamingAllowlistConfig {
|
|
10
|
-
skip_extensions?: string[];
|
|
11
|
-
skip_path_patterns?: string[];
|
|
12
|
-
skip_comment_markers?: string[];
|
|
13
|
-
skip_in_imports?: boolean;
|
|
14
|
-
}
|
|
15
|
-
export interface SubmissionCheckContext {
|
|
16
|
-
files: SubmissionFileInfo[];
|
|
17
|
-
prPaths: Set<string>;
|
|
18
|
-
komatikInstance: boolean;
|
|
19
|
-
staleTerms: string[];
|
|
20
|
-
namingAllowlist: NamingAllowlistConfig;
|
|
21
|
-
authRouteAllowlist: string[];
|
|
22
|
-
maxFileLines: number;
|
|
23
|
-
declaredPackages: Set<string>;
|
|
24
|
-
/** Extra path segments to skip for context_freshness (merged with defaults). */
|
|
25
|
-
pathIgnorePatterns: string[];
|
|
26
|
-
/**
|
|
27
|
-
* Full set of paths that exist in the target repo (e.g. `git ls-files`),
|
|
28
|
-
* used to tell a fabricated reference from a reference to an existing,
|
|
29
|
-
* unchanged file. When absent, existence-dependent checks stay dormant
|
|
30
|
-
* rather than flag every path that simply isn't part of this PR.
|
|
31
|
-
*/
|
|
32
|
-
repoPaths?: Set<string>;
|
|
33
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/shared/submission-checks/types.ts"],"names":[],"mappings":""}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import type { RepoConfig, SubmissionCheckResult } from "./types.js";
|
|
2
|
-
export type { SubmissionFileInfo } from "./submission-checks/types.js";
|
|
3
|
-
export type { SubmissionCheckCode, SubmissionCheckResult } from "./types.js";
|
|
4
|
-
/** Gate 1 + Phase 0 submission check codes — keep in sync with A8 fixture manifest. */
|
|
5
|
-
export declare const SUBMISSION_CHECK_CODES: ["artifact_integrity", "mock_placeholder", "context_freshness", "destructive_sql", "secrets", "path_format", "syntax_validity", "import_resolution", "rls_new_tables", "auth_route_auth", "hardcoded_env", "external_package_deps", "sql_syntax_basic", "large_file", "soul_integrity", "output_size_min", "action_extraction_present", "delta_section_present", "preamble_absent", "graduation_signals_section_present", "fabricated_id_check", "session_narrative_detection", "incompleteness_self_flag", "referenced_files_exist", "prerequisite_secrets_check", "dependency_dag_validation", "uncommitted_fix_check", "verification_owner_assigned", "external_interface_validation"];
|
|
6
|
-
/** Package names declared in a package.json (legacy gate parity). */
|
|
7
|
-
export declare function declaredPackageNamesFromPackageJson(pkg: Record<string, unknown>): string[];
|
|
8
|
-
export interface SubmissionEngineOptions {
|
|
9
|
-
files: import("./submission-checks/types.js").SubmissionFileInfo[];
|
|
10
|
-
repoConfig?: RepoConfig | null;
|
|
11
|
-
komatikInstance?: boolean;
|
|
12
|
-
mode?: "warn" | "block";
|
|
13
|
-
/** Declared npm package names from root package.json (optional). */
|
|
14
|
-
declaredPackages?: string[];
|
|
15
|
-
/** Paths that exist in the target repo (e.g. `git ls-files`), optional. */
|
|
16
|
-
repoPaths?: string[];
|
|
17
|
-
}
|
|
18
|
-
export declare function runSubmissionGate(options: SubmissionEngineOptions): SubmissionCheckResult[];
|
|
19
|
-
export declare function submissionGateShouldBlock(checks: SubmissionCheckResult[], mode?: "warn" | "block"): boolean;
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
// Gate 1 — agent submission quality (Phase B1).
|
|
2
|
-
// Pure module: no @actions/*, octokit, or Node I/O.
|
|
3
|
-
import { runAllDetectors } from "./submission-checks/detectors.js";
|
|
4
|
-
import { prPathSet } from "./submission-checks/helpers.js";
|
|
5
|
-
import { SubmissionCheckCode } from "./types.js";
|
|
6
|
-
/** Gate 1 + Phase 0 submission check codes — keep in sync with A8 fixture manifest. */
|
|
7
|
-
export const SUBMISSION_CHECK_CODES = SubmissionCheckCode.options;
|
|
8
|
-
const DEFAULT_AUTH_ROUTE_ALLOWLIST = [
|
|
9
|
-
"/api/auth/",
|
|
10
|
-
"/api/webhooks/",
|
|
11
|
-
"/api/health/",
|
|
12
|
-
"/api/metrics/",
|
|
13
|
-
];
|
|
14
|
-
/** Package names declared in a package.json (legacy gate parity). */
|
|
15
|
-
export function declaredPackageNamesFromPackageJson(pkg) {
|
|
16
|
-
const sections = [
|
|
17
|
-
"dependencies",
|
|
18
|
-
"devDependencies",
|
|
19
|
-
"peerDependencies",
|
|
20
|
-
"optionalDependencies",
|
|
21
|
-
];
|
|
22
|
-
return sections.flatMap((key) => Object.keys(pkg[key] ?? {}));
|
|
23
|
-
}
|
|
24
|
-
function buildContext(options) {
|
|
25
|
-
const { files, repoConfig, komatikInstance = false } = options;
|
|
26
|
-
const staleTerms = repoConfig?.submission?.stale_terms ?? [];
|
|
27
|
-
const declared = new Set(options.declaredPackages ?? []);
|
|
28
|
-
return {
|
|
29
|
-
files,
|
|
30
|
-
prPaths: prPathSet(files),
|
|
31
|
-
komatikInstance,
|
|
32
|
-
staleTerms,
|
|
33
|
-
namingAllowlist: repoConfig?.submission?.naming_allowlist ?? {},
|
|
34
|
-
authRouteAllowlist: repoConfig?.submission?.auth_route_allowlist ?? DEFAULT_AUTH_ROUTE_ALLOWLIST,
|
|
35
|
-
maxFileLines: repoConfig?.submission?.max_file_lines ?? 1000,
|
|
36
|
-
declaredPackages: declared,
|
|
37
|
-
pathIgnorePatterns: repoConfig?.submission?.path_ignore ?? [],
|
|
38
|
-
repoPaths: options.repoPaths ? new Set(options.repoPaths) : undefined,
|
|
39
|
-
};
|
|
40
|
-
}
|
|
41
|
-
export function runSubmissionGate(options) {
|
|
42
|
-
if (options.files.length === 0)
|
|
43
|
-
return [];
|
|
44
|
-
return runAllDetectors(buildContext(options));
|
|
45
|
-
}
|
|
46
|
-
export function submissionGateShouldBlock(checks, mode = "block") {
|
|
47
|
-
if (mode !== "block")
|
|
48
|
-
return false;
|
|
49
|
-
return checks.some((check) => check.severity === "blocking");
|
|
50
|
-
}
|
|
51
|
-
//# sourceMappingURL=submission-engine.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"submission-engine.js","sourceRoot":"","sources":["../../src/shared/submission-engine.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAChD,oDAAoD;AAEpD,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAEnE,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAMjD,uFAAuF;AACvF,MAAM,CAAC,MAAM,sBAAsB,GAAG,mBAAmB,CAAC,OAAO,CAAC;AAElE,MAAM,4BAA4B,GAAG;IACnC,YAAY;IACZ,gBAAgB;IAChB,cAAc;IACd,eAAe;CAChB,CAAC;AAEF,qEAAqE;AACrE,MAAM,UAAU,mCAAmC,CACjD,GAA4B;IAE5B,MAAM,QAAQ,GAAG;QACf,cAAc;QACd,iBAAiB;QACjB,kBAAkB;QAClB,sBAAsB;KACd,CAAC;IACX,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAC9B,MAAM,CAAC,IAAI,CAAE,GAAG,CAAC,GAAG,CAAwC,IAAI,EAAE,CAAC,CACpE,CAAC;AACJ,CAAC;AAaD,SAAS,YAAY,CAAC,OAAgC;IACpD,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,eAAe,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC;IAC/D,MAAM,UAAU,GAAG,UAAU,EAAE,UAAU,EAAE,WAAW,IAAI,EAAE,CAAC;IAE7D,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC;IAEzD,OAAO;QACL,KAAK;QACL,OAAO,EAAE,SAAS,CAAC,KAAK,CAAC;QACzB,eAAe;QACf,UAAU;QACV,eAAe,EAAE,UAAU,EAAE,UAAU,EAAE,gBAAgB,IAAI,EAAE;QAC/D,kBAAkB,EAChB,UAAU,EAAE,UAAU,EAAE,oBAAoB,IAAI,4BAA4B;QAC9E,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc,IAAI,IAAI;QAC5D,gBAAgB,EAAE,QAAQ;QAC1B,kBAAkB,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,IAAI,EAAE;QAC7D,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS;KACtE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,OAAgC;IAEhC,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAC1C,OAAO,eAAe,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,MAA+B,EAC/B,OAAyB,OAAO;IAEhC,IAAI,IAAI,KAAK,OAAO;QAAE,OAAO,KAAK,CAAC;IACnC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAC;AAC/D,CAAC"}
|