human-to-code 0.1.17 → 0.1.19
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 +19 -8
- package/SECURITY.md +22 -5
- package/dist/agents/direct/candidate-overlay.d.ts +36 -0
- package/dist/agents/direct/candidate-overlay.d.ts.map +1 -0
- package/dist/agents/direct/candidate-overlay.js +123 -0
- package/dist/agents/direct/candidate-overlay.js.map +1 -0
- package/dist/agents/direct/candidate-validation.d.ts.map +1 -1
- package/dist/agents/direct/candidate-validation.js +6 -0
- package/dist/agents/direct/candidate-validation.js.map +1 -1
- package/dist/agents/direct/dependency-graph.d.ts +25 -0
- package/dist/agents/direct/dependency-graph.d.ts.map +1 -0
- package/dist/agents/direct/dependency-graph.js +140 -0
- package/dist/agents/direct/dependency-graph.js.map +1 -0
- package/dist/agents/direct/discovery.d.ts +4 -2
- package/dist/agents/direct/discovery.d.ts.map +1 -1
- package/dist/agents/direct/discovery.js +19 -3
- package/dist/agents/direct/discovery.js.map +1 -1
- package/dist/agents/direct/generation-client.d.ts +11 -0
- package/dist/agents/direct/generation-client.d.ts.map +1 -1
- package/dist/agents/direct/generation-client.js +20 -9
- package/dist/agents/direct/generation-client.js.map +1 -1
- package/dist/agents/direct/index.d.ts +4 -0
- package/dist/agents/direct/index.d.ts.map +1 -1
- package/dist/agents/direct/index.js +4 -0
- package/dist/agents/direct/index.js.map +1 -1
- package/dist/agents/direct/languages.d.ts +1 -0
- package/dist/agents/direct/languages.d.ts.map +1 -1
- package/dist/agents/direct/languages.js +13 -0
- package/dist/agents/direct/languages.js.map +1 -1
- package/dist/agents/direct/presentation.d.ts +1 -1
- package/dist/agents/direct/presentation.d.ts.map +1 -1
- package/dist/agents/direct/presentation.js +10 -4
- package/dist/agents/direct/presentation.js.map +1 -1
- package/dist/agents/direct/program-diagnostics.d.ts +39 -0
- package/dist/agents/direct/program-diagnostics.d.ts.map +1 -0
- package/dist/agents/direct/program-diagnostics.js +170 -0
- package/dist/agents/direct/program-diagnostics.js.map +1 -0
- package/dist/agents/direct/staged-validation.d.ts +53 -0
- package/dist/agents/direct/staged-validation.d.ts.map +1 -0
- package/dist/agents/direct/staged-validation.js +182 -0
- package/dist/agents/direct/staged-validation.js.map +1 -0
- package/dist/agents/direct/types.d.ts +2 -0
- package/dist/agents/direct/types.d.ts.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +59 -6
- package/dist/cli.js.map +1 -1
- package/dist/config/config.d.ts.map +1 -1
- package/dist/config/config.js +28 -0
- package/dist/config/config.js.map +1 -1
- package/dist/core/types.d.ts +7 -1
- package/dist/core/types.d.ts.map +1 -1
- package/dist/prompts/direct-repair.d.ts +30 -0
- package/dist/prompts/direct-repair.d.ts.map +1 -0
- package/dist/prompts/direct-repair.js +34 -0
- package/dist/prompts/direct-repair.js.map +1 -0
- package/dist/prompts/index.d.ts +1 -0
- package/dist/prompts/index.d.ts.map +1 -1
- package/dist/prompts/index.js +1 -0
- package/dist/prompts/index.js.map +1 -1
- package/docs/ARCHITECTURE.md +22 -8
- package/docs/MODULES.md +7 -1
- package/docs/SCALABILITY.md +9 -3
- package/package.json +3 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discovery.js","sourceRoot":"","sources":["../../../src/agents/direct/discovery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"discovery.js","sourceRoot":"","sources":["../../../src/agents/direct/discovery.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,15 @@
|
|
|
1
|
+
import { type DirectRepairDiagnostic, type DirectRepairRelatedFile } from "../../prompts/direct-repair.ts";
|
|
1
2
|
import type { GenerateOptions } from "./types.ts";
|
|
2
3
|
/** Send one direct-conversion request to OpenAI-compatible chat or Ollama. */
|
|
3
4
|
export declare function generateCode(instruction: string, options: GenerateOptions): Promise<string>;
|
|
5
|
+
export interface RepairGenerationRequest {
|
|
6
|
+
targetPath: string;
|
|
7
|
+
inline: boolean;
|
|
8
|
+
instruction: string;
|
|
9
|
+
currentCode: string;
|
|
10
|
+
diagnostics: readonly DirectRepairDiagnostic[];
|
|
11
|
+
relatedFiles: readonly DirectRepairRelatedFile[];
|
|
12
|
+
}
|
|
13
|
+
/** Send one bounded cross-file repair request with the same provider and model. */
|
|
14
|
+
export declare function generateRepairCode(request: RepairGenerationRequest, options: GenerateOptions): Promise<string>;
|
|
4
15
|
//# sourceMappingURL=generation-client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generation-client.d.ts","sourceRoot":"","sources":["../../../src/agents/direct/generation-client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"generation-client.d.ts","sourceRoot":"","sources":["../../../src/agents/direct/generation-client.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,EAC7B,MAAM,gCAAgC,CAAC;AAGxC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AA+ClD,8EAA8E;AAC9E,wBAAsB,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CASjG;AAED,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,SAAS,sBAAsB,EAAE,CAAC;IAC/C,YAAY,EAAE,SAAS,uBAAuB,EAAE,CAAC;CAClD;AAED,mFAAmF;AACnF,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,uBAAuB,EAChC,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,MAAM,CAAC,CAIjB"}
|
|
@@ -1,15 +1,9 @@
|
|
|
1
1
|
import { buildDirectConversionPrompt } from "../../prompts/direct-conversion.js";
|
|
2
|
+
import { buildDirectRepairPrompt, } from "../../prompts/direct-repair.js";
|
|
2
3
|
import { languageProfile } from "./languages.js";
|
|
3
4
|
import { stripCodeFence } from "./presentation.js";
|
|
4
|
-
/**
|
|
5
|
-
|
|
6
|
-
const profile = languageProfile(options.language);
|
|
7
|
-
const prompt = buildDirectConversionPrompt({
|
|
8
|
-
languageLabel: profile.label,
|
|
9
|
-
instruction,
|
|
10
|
-
inline: options.inline ?? false,
|
|
11
|
-
...(options.fileMemory ? { fileMemory: options.fileMemory } : {}),
|
|
12
|
-
});
|
|
5
|
+
/** One plain chat completion through OpenAI-compatible chat or Ollama. */
|
|
6
|
+
async function requestChatCompletion(prompt, options) {
|
|
13
7
|
if (options.provider === "openai") {
|
|
14
8
|
const base = options.baseUrl ?? "https://api.openai.com/v1";
|
|
15
9
|
const response = await fetch(`${base}/chat/completions`, {
|
|
@@ -53,4 +47,21 @@ export async function generateCode(instruction, options) {
|
|
|
53
47
|
const data = (await response.json());
|
|
54
48
|
return stripCodeFence(data.message?.content ?? "");
|
|
55
49
|
}
|
|
50
|
+
/** Send one direct-conversion request to OpenAI-compatible chat or Ollama. */
|
|
51
|
+
export async function generateCode(instruction, options) {
|
|
52
|
+
const profile = languageProfile(options.language);
|
|
53
|
+
const prompt = buildDirectConversionPrompt({
|
|
54
|
+
languageLabel: profile.label,
|
|
55
|
+
instruction,
|
|
56
|
+
inline: options.inline ?? false,
|
|
57
|
+
...(options.fileMemory ? { fileMemory: options.fileMemory } : {}),
|
|
58
|
+
});
|
|
59
|
+
return requestChatCompletion(prompt, options);
|
|
60
|
+
}
|
|
61
|
+
/** Send one bounded cross-file repair request with the same provider and model. */
|
|
62
|
+
export async function generateRepairCode(request, options) {
|
|
63
|
+
const profile = languageProfile(options.language);
|
|
64
|
+
const prompt = buildDirectRepairPrompt({ languageLabel: profile.label, ...request });
|
|
65
|
+
return requestChatCompletion(prompt, options);
|
|
66
|
+
}
|
|
56
67
|
//# sourceMappingURL=generation-client.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generation-client.js","sourceRoot":"","sources":["../../../src/agents/direct/generation-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,
|
|
1
|
+
{"version":3,"file":"generation-client.js","sourceRoot":"","sources":["../../../src/agents/direct/generation-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,4 +10,8 @@ export * from "./application.ts";
|
|
|
10
10
|
export * from "./replacement.ts";
|
|
11
11
|
export * from "./declarations.ts";
|
|
12
12
|
export * from "./candidate-validation.ts";
|
|
13
|
+
export * from "./candidate-overlay.ts";
|
|
14
|
+
export * from "./program-diagnostics.ts";
|
|
15
|
+
export * from "./dependency-graph.ts";
|
|
16
|
+
export * from "./staged-validation.ts";
|
|
13
17
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agents/direct/index.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,2BAA2B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agents/direct/index.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC"}
|
|
@@ -10,4 +10,8 @@ export * from "./application.js";
|
|
|
10
10
|
export * from "./replacement.js";
|
|
11
11
|
export * from "./declarations.js";
|
|
12
12
|
export * from "./candidate-validation.js";
|
|
13
|
+
export * from "./candidate-overlay.js";
|
|
14
|
+
export * from "./program-diagnostics.js";
|
|
15
|
+
export * from "./dependency-graph.js";
|
|
16
|
+
export * from "./staged-validation.js";
|
|
13
17
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/agents/direct/index.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,2BAA2B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/agents/direct/index.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC"}
|
|
@@ -2,4 +2,5 @@ import type { LanguageProfile } from "./types.ts";
|
|
|
2
2
|
/** Operator-declared config language -> output extension and prompt label. */
|
|
3
3
|
export declare const LANGUAGE_PROFILES: Record<string, LanguageProfile>;
|
|
4
4
|
export declare function languageProfile(language: string): LanguageProfile;
|
|
5
|
+
export declare function languageForExtension(extension: string): string | undefined;
|
|
5
6
|
//# sourceMappingURL=languages.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"languages.d.ts","sourceRoot":"","sources":["../../../src/agents/direct/languages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,8EAA8E;AAC9E,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"languages.d.ts","sourceRoot":"","sources":["../../../src/agents/direct/languages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,8EAA8E;AAC9E,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAa7D,CAAC;AAEF,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,CAEjE;AAWD,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAE1E"}
|
|
@@ -10,8 +10,21 @@ export const LANGUAGE_PROFILES = {
|
|
|
10
10
|
csharp: { ext: "cs", label: "C#" },
|
|
11
11
|
cpp: { ext: "cpp", label: "C++" },
|
|
12
12
|
c: { ext: "c", label: "C" },
|
|
13
|
+
html: { ext: "html", label: "HTML" },
|
|
14
|
+
css: { ext: "css", label: "CSS" },
|
|
13
15
|
};
|
|
14
16
|
export function languageProfile(language) {
|
|
15
17
|
return LANGUAGE_PROFILES[language.trim().toLowerCase()] ?? { ext: "txt", label: language };
|
|
16
18
|
}
|
|
19
|
+
/** File extension (with or without a leading dot) -> owning config language. */
|
|
20
|
+
const EXTENSION_LANGUAGES = {
|
|
21
|
+
ts: "typescript", tsx: "typescript", mts: "typescript", cts: "typescript",
|
|
22
|
+
js: "javascript", jsx: "javascript", mjs: "javascript", cjs: "javascript",
|
|
23
|
+
py: "python", rs: "rust", go: "go", java: "java", rb: "ruby", cs: "csharp",
|
|
24
|
+
cpp: "cpp", cc: "cpp", hpp: "cpp", c: "c", h: "c",
|
|
25
|
+
html: "html", htm: "html", css: "css",
|
|
26
|
+
};
|
|
27
|
+
export function languageForExtension(extension) {
|
|
28
|
+
return EXTENSION_LANGUAGES[extension.replace(/^\./u, "").toLowerCase()];
|
|
29
|
+
}
|
|
17
30
|
//# sourceMappingURL=languages.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"languages.js","sourceRoot":"","sources":["../../../src/agents/direct/languages.ts"],"names":[],"mappings":"AAEA,8EAA8E;AAC9E,MAAM,CAAC,MAAM,iBAAiB,GAAoC;IAChE,UAAU,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE;IAC9C,UAAU,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE;IAC9C,MAAM,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE;IACtC,IAAI,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE;IAClC,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;IAC9B,IAAI,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;IACpC,IAAI,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE;IAClC,MAAM,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;IAClC,GAAG,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;IACjC,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE;
|
|
1
|
+
{"version":3,"file":"languages.js","sourceRoot":"","sources":["../../../src/agents/direct/languages.ts"],"names":[],"mappings":"AAEA,8EAA8E;AAC9E,MAAM,CAAC,MAAM,iBAAiB,GAAoC;IAChE,UAAU,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE;IAC9C,UAAU,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE;IAC9C,MAAM,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE;IACtC,IAAI,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE;IAClC,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;IAC9B,IAAI,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;IACpC,IAAI,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE;IAClC,MAAM,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;IAClC,GAAG,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;IACjC,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE;IAC3B,IAAI,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;IACpC,GAAG,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;CAClC,CAAC;AAEF,MAAM,UAAU,eAAe,CAAC,QAAgB;IAC9C,OAAO,iBAAiB,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AAC7F,CAAC;AAED,gFAAgF;AAChF,MAAM,mBAAmB,GAA2B;IAClD,EAAE,EAAE,YAAY,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE,YAAY;IACzE,EAAE,EAAE,YAAY,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE,YAAY;IACzE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ;IAC1E,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG;IACjD,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK;CACtC,CAAC;AAEF,MAAM,UAAU,oBAAoB,CAAC,SAAiB;IACpD,OAAO,mBAAmB,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AAC1E,CAAC"}
|
|
@@ -2,6 +2,6 @@ import type { ConversionUnit } from "./types.ts";
|
|
|
2
2
|
export declare class ModelOutputError extends Error {
|
|
3
3
|
constructor(message: string);
|
|
4
4
|
}
|
|
5
|
-
export declare function renderReceipt(units: readonly ConversionUnit[], provider: string, model: string, language: string): string;
|
|
5
|
+
export declare function renderReceipt(units: readonly ConversionUnit[], provider: string, model: string, language: string | readonly string[]): string;
|
|
6
6
|
export declare function stripCodeFence(output: string): string;
|
|
7
7
|
//# sourceMappingURL=presentation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"presentation.d.ts","sourceRoot":"","sources":["../../../src/agents/direct/presentation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,qBAAa,gBAAiB,SAAQ,KAAK;gBAC7B,OAAO,EAAE,MAAM;CAI5B;AAED,wBAAgB,aAAa,CAC3B,KAAK,EAAE,SAAS,cAAc,EAAE,EAChC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"presentation.d.ts","sourceRoot":"","sources":["../../../src/agents/direct/presentation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,qBAAa,gBAAiB,SAAQ,KAAK;gBAC7B,OAAO,EAAE,MAAM;CAI5B;AAED,wBAAgB,aAAa,CAC3B,KAAK,EAAE,SAAS,cAAc,EAAE,EAChC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,GACnC,MAAM,CAwBR;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAWrD"}
|
|
@@ -6,15 +6,21 @@ export class ModelOutputError extends Error {
|
|
|
6
6
|
}
|
|
7
7
|
}
|
|
8
8
|
export function renderReceipt(units, provider, model, language) {
|
|
9
|
-
const
|
|
9
|
+
const list = typeof language === "string" ? [language] : language;
|
|
10
|
+
const rendered = list
|
|
11
|
+
.map((entry) => {
|
|
12
|
+
const profile = languageProfile(entry);
|
|
13
|
+
return `${profile.label} (.${profile.ext})`;
|
|
14
|
+
})
|
|
15
|
+
.join(", ");
|
|
10
16
|
const lines = [
|
|
11
17
|
"human-to-code — conversion receipt",
|
|
12
18
|
"",
|
|
13
|
-
` Language : ${
|
|
19
|
+
` ${list.length > 1 ? "Languages:" : "Language :"} ${rendered}`,
|
|
14
20
|
` Provider : ${provider}`,
|
|
15
21
|
` Model : ${model}`,
|
|
16
|
-
` Engine : direct (one model request per prompt)`,
|
|
17
|
-
` Requests : ${units.length}`,
|
|
22
|
+
` Engine : direct (one model request per prompt; bounded cross-file repair may add requests)`,
|
|
23
|
+
` Requests : ${units.length} planned (up to ${units.length} extra bounded repair requests for JS/TS)`,
|
|
18
24
|
"",
|
|
19
25
|
];
|
|
20
26
|
if (units.length === 0)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"presentation.js","sourceRoot":"","sources":["../../../src/agents/direct/presentation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGjD,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IACzC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IACjC,CAAC;CACF;AAED,MAAM,UAAU,aAAa,CAC3B,KAAgC,EAChC,QAAgB,EAChB,KAAa,EACb,
|
|
1
|
+
{"version":3,"file":"presentation.js","sourceRoot":"","sources":["../../../src/agents/direct/presentation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGjD,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IACzC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IACjC,CAAC;CACF;AAED,MAAM,UAAU,aAAa,CAC3B,KAAgC,EAChC,QAAgB,EAChB,KAAa,EACb,QAAoC;IAEpC,MAAM,IAAI,GAAG,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IAClE,MAAM,QAAQ,GAAG,IAAI;SAClB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACb,MAAM,OAAO,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;QACvC,OAAO,GAAG,OAAO,CAAC,KAAK,MAAM,OAAO,CAAC,GAAG,GAAG,CAAC;IAC9C,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,MAAM,KAAK,GAAG;QACZ,oCAAoC;QACpC,EAAE;QACF,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,IAAI,QAAQ,EAAE;QAChE,gBAAgB,QAAQ,EAAE;QAC1B,gBAAgB,KAAK,EAAE;QACvB,gGAAgG;QAChG,gBAAgB,KAAK,CAAC,MAAM,mBAAmB,KAAK,CAAC,MAAM,2CAA2C;QACtG,EAAE;KACH,CAAC;IACF,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;SACjF,CAAC;QACJ,KAAK,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;QACjD,KAAK,MAAM,IAAI,IAAI,KAAK;YAAE,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IACjE,CAAC;IACD,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,MAAc;IAC3C,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;IAC9B,MAAM,MAAM,GAAG,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,kDAAkD,CAAC,CAAC,CAAC;IACzF,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,gBAAgB,CAAC,gFAAgF,CAAC,CAAC;IAC/G,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9D,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,gBAAgB,CAAC,oFAAoF,CAAC,CAAC;IACnH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import ts from "typescript";
|
|
2
|
+
import { type CandidateOverlay } from "./candidate-overlay.ts";
|
|
3
|
+
/** One normalized error-category compiler diagnostic. */
|
|
4
|
+
export interface ProjectDiagnostic {
|
|
5
|
+
/** Project-relative POSIX path, or undefined for global/options diagnostics. */
|
|
6
|
+
path?: string;
|
|
7
|
+
/** 1-based line, when the diagnostic has a location. */
|
|
8
|
+
line?: number;
|
|
9
|
+
/** TypeScript diagnostic code. */
|
|
10
|
+
code: number;
|
|
11
|
+
message: string;
|
|
12
|
+
}
|
|
13
|
+
export interface ValidationProgramContext {
|
|
14
|
+
root: string;
|
|
15
|
+
options: ts.CompilerOptions;
|
|
16
|
+
/** Host that answers from the overlay first, then the real file system. */
|
|
17
|
+
host: ts.CompilerHost;
|
|
18
|
+
/** On-disk JS/TS root files discovered with the bounded direct walk. */
|
|
19
|
+
projectFiles: string[];
|
|
20
|
+
}
|
|
21
|
+
/** Prepare compiler options, baseline host, and the on-disk JS/TS file list once per run. */
|
|
22
|
+
export declare function createValidationProgramContext(root: string): Promise<ValidationProgramContext>;
|
|
23
|
+
/** Overlay-aware compiler host for module resolution outside program creation. */
|
|
24
|
+
export declare function overlayCompilerHost(context: ValidationProgramContext, overlay: CandidateOverlay): ts.CompilerHost;
|
|
25
|
+
/**
|
|
26
|
+
* Collect error-category diagnostics for the given program state. Diagnostics
|
|
27
|
+
* inside `node_modules` or outside the project root are dropped symmetrically
|
|
28
|
+
* for baseline and candidate, so third-party typing noise never decides a unit.
|
|
29
|
+
*/
|
|
30
|
+
export declare function collectProjectDiagnostics(context: ValidationProgramContext, overlay?: CandidateOverlay): ProjectDiagnostic[];
|
|
31
|
+
/**
|
|
32
|
+
* Diff candidate diagnostics against the baseline so pre-existing project
|
|
33
|
+
* errors are never blamed on generated units. Files the overlay does not touch
|
|
34
|
+
* compare location-aware (path, code, line, message); overlay-modified files
|
|
35
|
+
* compare by multiplicity of (path, code, message) because replacements shift
|
|
36
|
+
* lines; overlay-created files are entirely new, so every diagnostic counts.
|
|
37
|
+
*/
|
|
38
|
+
export declare function newlyIntroducedProjectDiagnostics(baseline: readonly ProjectDiagnostic[], candidate: readonly ProjectDiagnostic[], overlay: CandidateOverlay): ProjectDiagnostic[];
|
|
39
|
+
//# sourceMappingURL=program-diagnostics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"program-diagnostics.d.ts","sourceRoot":"","sources":["../../../src/agents/direct/program-diagnostics.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAiD,KAAK,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAG9G,yDAAyD;AACzD,MAAM,WAAW,iBAAiB;IAChC,gFAAgF;IAChF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,wDAAwD;IACxD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kCAAkC;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAkDD,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,EAAE,CAAC,eAAe,CAAC;IAC5B,2EAA2E;IAC3E,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC;IACtB,wEAAwE;IACxE,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAkBD,6FAA6F;AAC7F,wBAAsB,8BAA8B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAMpG;AAED,kFAAkF;AAClF,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,wBAAwB,EAAE,OAAO,EAAE,gBAAgB,GAAG,EAAE,CAAC,YAAY,CAEjH;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,wBAAwB,EACjC,OAAO,CAAC,EAAE,gBAAgB,GACzB,iBAAiB,EAAE,CAyBrB;AAED;;;;;;GAMG;AACH,wBAAgB,iCAAiC,CAC/C,QAAQ,EAAE,SAAS,iBAAiB,EAAE,EACtC,SAAS,EAAE,SAAS,iBAAiB,EAAE,EACvC,OAAO,EAAE,gBAAgB,GACxB,iBAAiB,EAAE,CAiCrB"}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Combined TypeScript program diagnostics over the candidate overlay. This is
|
|
3
|
+
* static compiler validation of the in-memory candidate project — stronger
|
|
4
|
+
* than per-file syntax parsing, but it never imports, executes, or sandboxes
|
|
5
|
+
* project code and never claims runtime verification.
|
|
6
|
+
*/
|
|
7
|
+
import { existsSync } from "node:fs";
|
|
8
|
+
import { createRequire } from "node:module";
|
|
9
|
+
import { dirname, extname, join, relative, resolve, sep } from "node:path";
|
|
10
|
+
import ts from "typescript";
|
|
11
|
+
import { overlayPathKey, PROJECT_VALIDATION_EXTENSIONS } from "./candidate-overlay.js";
|
|
12
|
+
import { walkDirectFiles } from "./discovery.js";
|
|
13
|
+
/**
|
|
14
|
+
* Permissive fixed compiler options: the goal is catching real cross-file
|
|
15
|
+
* contradictions in generated code, not enforcing a strictness style. Bundler
|
|
16
|
+
* resolution accepts extensionless, `.js`-suffixed, and (with noEmit)
|
|
17
|
+
* `.ts`-suffixed relative imports, matching what direct models emit.
|
|
18
|
+
*/
|
|
19
|
+
function validationCompilerOptions(root) {
|
|
20
|
+
const options = {
|
|
21
|
+
target: ts.ScriptTarget.ES2023,
|
|
22
|
+
module: ts.ModuleKind.ESNext,
|
|
23
|
+
moduleResolution: ts.ModuleResolutionKind.Bundler,
|
|
24
|
+
lib: ["lib.es2023.d.ts"],
|
|
25
|
+
allowJs: true,
|
|
26
|
+
checkJs: true,
|
|
27
|
+
jsx: ts.JsxEmit.Preserve,
|
|
28
|
+
noEmit: true,
|
|
29
|
+
allowImportingTsExtensions: true,
|
|
30
|
+
resolveJsonModule: true,
|
|
31
|
+
skipLibCheck: true,
|
|
32
|
+
forceConsistentCasingInFileNames: true,
|
|
33
|
+
};
|
|
34
|
+
const typeRoots = nodeTypeRoots(root);
|
|
35
|
+
if (typeRoots.length > 0) {
|
|
36
|
+
options.typeRoots = typeRoots;
|
|
37
|
+
options.types = ["node"];
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
options.types = [];
|
|
41
|
+
}
|
|
42
|
+
return options;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Locate `@types/node` so `node:` builtin imports resolve in target projects
|
|
46
|
+
* that have no type dependencies of their own. The project's own copy wins;
|
|
47
|
+
* otherwise the copy shipped with this package is used.
|
|
48
|
+
*/
|
|
49
|
+
function nodeTypeRoots(root) {
|
|
50
|
+
const projectTypes = resolve(root, "node_modules", "@types");
|
|
51
|
+
if (existsSync(join(projectTypes, "node")))
|
|
52
|
+
return [projectTypes];
|
|
53
|
+
try {
|
|
54
|
+
const requireFromHere = createRequire(import.meta.url);
|
|
55
|
+
const packageJson = requireFromHere.resolve("@types/node/package.json");
|
|
56
|
+
return [dirname(dirname(packageJson))];
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
return [];
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
function createOverlayHost(options, overlay) {
|
|
63
|
+
const base = ts.createCompilerHost(options, true);
|
|
64
|
+
if (!overlay || overlay.files.size === 0)
|
|
65
|
+
return base;
|
|
66
|
+
const find = (fileName) => overlay.files.get(overlayPathKey(fileName));
|
|
67
|
+
return {
|
|
68
|
+
...base,
|
|
69
|
+
fileExists: (fileName) => find(fileName) !== undefined || base.fileExists(fileName),
|
|
70
|
+
readFile: (fileName) => find(fileName)?.content ?? base.readFile(fileName),
|
|
71
|
+
getSourceFile: (fileName, languageVersionOrOptions, onError, shouldCreateNewSourceFile) => {
|
|
72
|
+
const candidate = find(fileName);
|
|
73
|
+
if (candidate)
|
|
74
|
+
return ts.createSourceFile(fileName, candidate.content, languageVersionOrOptions, true);
|
|
75
|
+
return base.getSourceFile(fileName, languageVersionOrOptions, onError, shouldCreateNewSourceFile);
|
|
76
|
+
},
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
/** Prepare compiler options, baseline host, and the on-disk JS/TS file list once per run. */
|
|
80
|
+
export async function createValidationProgramContext(root) {
|
|
81
|
+
const absoluteRoot = resolve(root);
|
|
82
|
+
const options = validationCompilerOptions(absoluteRoot);
|
|
83
|
+
const projectFiles = (await walkDirectFiles(absoluteRoot)).filter((file) => PROJECT_VALIDATION_EXTENSIONS.has(extname(file).toLowerCase()));
|
|
84
|
+
return { root: absoluteRoot, options, host: createOverlayHost(options, undefined), projectFiles };
|
|
85
|
+
}
|
|
86
|
+
/** Overlay-aware compiler host for module resolution outside program creation. */
|
|
87
|
+
export function overlayCompilerHost(context, overlay) {
|
|
88
|
+
return createOverlayHost(context.options, overlay);
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Collect error-category diagnostics for the given program state. Diagnostics
|
|
92
|
+
* inside `node_modules` or outside the project root are dropped symmetrically
|
|
93
|
+
* for baseline and candidate, so third-party typing noise never decides a unit.
|
|
94
|
+
*/
|
|
95
|
+
export function collectProjectDiagnostics(context, overlay) {
|
|
96
|
+
const rootNames = new Set(context.projectFiles.map((file) => resolve(file)));
|
|
97
|
+
if (overlay)
|
|
98
|
+
for (const file of overlay.files.values())
|
|
99
|
+
rootNames.add(file.absolutePath);
|
|
100
|
+
const host = overlay ? createOverlayHost(context.options, overlay) : context.host;
|
|
101
|
+
const program = ts.createProgram({ rootNames: [...rootNames], options: context.options, host });
|
|
102
|
+
const diagnostics = [];
|
|
103
|
+
for (const diagnostic of ts.getPreEmitDiagnostics(program)) {
|
|
104
|
+
if (diagnostic.category !== ts.DiagnosticCategory.Error)
|
|
105
|
+
continue;
|
|
106
|
+
const entry = {
|
|
107
|
+
code: diagnostic.code,
|
|
108
|
+
message: ts.flattenDiagnosticMessageText(diagnostic.messageText, " "),
|
|
109
|
+
};
|
|
110
|
+
if (diagnostic.file) {
|
|
111
|
+
const fileName = resolve(diagnostic.file.fileName);
|
|
112
|
+
if (fileName.split(sep).includes("node_modules"))
|
|
113
|
+
continue;
|
|
114
|
+
const rel = relative(context.root, fileName);
|
|
115
|
+
if (rel.startsWith(".."))
|
|
116
|
+
continue;
|
|
117
|
+
entry.path = rel.split(sep).join("/");
|
|
118
|
+
if (diagnostic.start !== undefined) {
|
|
119
|
+
entry.line = diagnostic.file.getLineAndCharacterOfPosition(diagnostic.start).line + 1;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
diagnostics.push(entry);
|
|
123
|
+
}
|
|
124
|
+
return diagnostics;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Diff candidate diagnostics against the baseline so pre-existing project
|
|
128
|
+
* errors are never blamed on generated units. Files the overlay does not touch
|
|
129
|
+
* compare location-aware (path, code, line, message); overlay-modified files
|
|
130
|
+
* compare by multiplicity of (path, code, message) because replacements shift
|
|
131
|
+
* lines; overlay-created files are entirely new, so every diagnostic counts.
|
|
132
|
+
*/
|
|
133
|
+
export function newlyIntroducedProjectDiagnostics(baseline, candidate, overlay) {
|
|
134
|
+
const modified = new Set();
|
|
135
|
+
const created = new Set();
|
|
136
|
+
for (const file of overlay.files.values()) {
|
|
137
|
+
(file.created ? created : modified).add(file.path);
|
|
138
|
+
}
|
|
139
|
+
const keyFor = (diagnostic) => {
|
|
140
|
+
const locationAware = diagnostic.path === undefined || !modified.has(diagnostic.path);
|
|
141
|
+
return JSON.stringify([
|
|
142
|
+
diagnostic.path ?? "",
|
|
143
|
+
diagnostic.code,
|
|
144
|
+
locationAware ? diagnostic.line ?? -1 : -1,
|
|
145
|
+
diagnostic.message,
|
|
146
|
+
]);
|
|
147
|
+
};
|
|
148
|
+
const remaining = new Map();
|
|
149
|
+
for (const diagnostic of baseline) {
|
|
150
|
+
if (diagnostic.path !== undefined && created.has(diagnostic.path))
|
|
151
|
+
continue;
|
|
152
|
+
const key = keyFor(diagnostic);
|
|
153
|
+
remaining.set(key, (remaining.get(key) ?? 0) + 1);
|
|
154
|
+
}
|
|
155
|
+
const introduced = [];
|
|
156
|
+
for (const diagnostic of candidate) {
|
|
157
|
+
if (diagnostic.path !== undefined && created.has(diagnostic.path)) {
|
|
158
|
+
introduced.push(diagnostic);
|
|
159
|
+
continue;
|
|
160
|
+
}
|
|
161
|
+
const key = keyFor(diagnostic);
|
|
162
|
+
const left = remaining.get(key) ?? 0;
|
|
163
|
+
if (left > 0)
|
|
164
|
+
remaining.set(key, left - 1);
|
|
165
|
+
else
|
|
166
|
+
introduced.push(diagnostic);
|
|
167
|
+
}
|
|
168
|
+
return introduced;
|
|
169
|
+
}
|
|
170
|
+
//# sourceMappingURL=program-diagnostics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"program-diagnostics.js","sourceRoot":"","sources":["../../../src/agents/direct/program-diagnostics.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { type ProjectDiagnostic } from "./program-diagnostics.ts";
|
|
2
|
+
import type { ConversionUnit, GeneratedConversionUnit } from "./types.ts";
|
|
3
|
+
export interface StagedRepairRequest {
|
|
4
|
+
unit: ConversionUnit;
|
|
5
|
+
/** Project-relative path of the candidate being repaired. */
|
|
6
|
+
targetPath: string;
|
|
7
|
+
/** The unit's current generated code (whole file contents). */
|
|
8
|
+
currentCode: string;
|
|
9
|
+
/** Normalized new diagnostics attributed to this candidate's dependency group. */
|
|
10
|
+
diagnostics: ProjectDiagnostic[];
|
|
11
|
+
/** Other generated candidate files in the same dependency group. */
|
|
12
|
+
relatedFiles: Array<{
|
|
13
|
+
path: string;
|
|
14
|
+
content: string;
|
|
15
|
+
}>;
|
|
16
|
+
}
|
|
17
|
+
export type StagedValidationProgress = {
|
|
18
|
+
kind: "project-validate";
|
|
19
|
+
files: number;
|
|
20
|
+
pass: number;
|
|
21
|
+
} | {
|
|
22
|
+
kind: "repair";
|
|
23
|
+
unit: ConversionUnit;
|
|
24
|
+
attempt: number;
|
|
25
|
+
} | {
|
|
26
|
+
kind: "reject";
|
|
27
|
+
unit: ConversionUnit;
|
|
28
|
+
reason: string;
|
|
29
|
+
};
|
|
30
|
+
export interface StagedValidationOptions {
|
|
31
|
+
/** Bounded cross-file repair callback; omitted means failing groups are rejected directly. */
|
|
32
|
+
repair?: (request: StagedRepairRequest) => Promise<string>;
|
|
33
|
+
/** Repair requests allowed per whole-file unit (default 1). */
|
|
34
|
+
maxRepairAttemptsPerUnit?: number;
|
|
35
|
+
/** Character budget for one repair request's code-and-diagnostics context. */
|
|
36
|
+
contextCharBudget?: number;
|
|
37
|
+
onProgress?: (event: StagedValidationProgress) => void;
|
|
38
|
+
}
|
|
39
|
+
export interface StagedValidationOutcome {
|
|
40
|
+
/** One result per input unit, in input order; rejected units carry `error`. */
|
|
41
|
+
results: GeneratedConversionUnit[];
|
|
42
|
+
/** True when a combined candidate program was actually type-checked. */
|
|
43
|
+
validated: boolean;
|
|
44
|
+
/** Number of bounded repair requests issued. */
|
|
45
|
+
repairRequests: number;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Validate the combined candidate project before anything is written and
|
|
49
|
+
* return per-unit accept/reject results. Units that do not produce JS/TS are
|
|
50
|
+
* passed through unchanged and keep their per-unit validation level.
|
|
51
|
+
*/
|
|
52
|
+
export declare function validateCandidateProject(root: string, generated: readonly GeneratedConversionUnit[], options?: StagedValidationOptions): Promise<StagedValidationOutcome>;
|
|
53
|
+
//# sourceMappingURL=staged-validation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"staged-validation.d.ts","sourceRoot":"","sources":["../../../src/agents/direct/staged-validation.ts"],"names":[],"mappings":"AAeA,OAAO,EAIL,KAAK,iBAAiB,EACvB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAE1E,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,cAAc,CAAC;IACrB,6DAA6D;IAC7D,UAAU,EAAE,MAAM,CAAC;IACnB,+DAA+D;IAC/D,WAAW,EAAE,MAAM,CAAC;IACpB,kFAAkF;IAClF,WAAW,EAAE,iBAAiB,EAAE,CAAC;IACjC,oEAAoE;IACpE,YAAY,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACxD;AAED,MAAM,MAAM,wBAAwB,GAChC;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACzD;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,cAAc,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACzD;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,cAAc,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE7D,MAAM,WAAW,uBAAuB;IACtC,8FAA8F;IAC9F,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3D,+DAA+D;IAC/D,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,8EAA8E;IAC9E,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,wBAAwB,KAAK,IAAI,CAAC;CACxD;AAED,MAAM,WAAW,uBAAuB;IACtC,+EAA+E;IAC/E,OAAO,EAAE,uBAAuB,EAAE,CAAC;IACnC,wEAAwE;IACxE,SAAS,EAAE,OAAO,CAAC;IACnB,gDAAgD;IAChD,cAAc,EAAE,MAAM,CAAC;CACxB;AA0BD;;;;GAIG;AACH,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,SAAS,uBAAuB,EAAE,EAC7C,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,uBAAuB,CAAC,CAuGlC"}
|