human-to-code 0.1.22 → 0.1.24
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 +40 -9
- package/SECURITY.md +20 -5
- package/dist/agents/direct/generation-client.d.ts +22 -0
- package/dist/agents/direct/generation-client.d.ts.map +1 -1
- package/dist/agents/direct/generation-client.js +12 -0
- package/dist/agents/direct/generation-client.js.map +1 -1
- package/dist/agents/direct/index.d.ts +2 -0
- package/dist/agents/direct/index.d.ts.map +1 -1
- package/dist/agents/direct/index.js +2 -0
- package/dist/agents/direct/index.js.map +1 -1
- package/dist/agents/direct/integration-validation.d.ts +70 -0
- package/dist/agents/direct/integration-validation.d.ts.map +1 -0
- package/dist/agents/direct/integration-validation.js +382 -0
- package/dist/agents/direct/integration-validation.js.map +1 -0
- package/dist/agents/direct/language-relationships.d.ts +11 -0
- package/dist/agents/direct/language-relationships.d.ts.map +1 -0
- package/dist/agents/direct/language-relationships.js +55 -0
- package/dist/agents/direct/language-relationships.js.map +1 -0
- package/dist/agents/direct/presentation.d.ts +10 -1
- package/dist/agents/direct/presentation.d.ts.map +1 -1
- package/dist/agents/direct/presentation.js +27 -2
- package/dist/agents/direct/presentation.js.map +1 -1
- package/dist/agents/direct/project-contracts.d.ts.map +1 -1
- package/dist/agents/direct/project-contracts.js +44 -0
- package/dist/agents/direct/project-contracts.js.map +1 -1
- package/dist/agents/direct/project-memory.d.ts +2 -1
- package/dist/agents/direct/project-memory.d.ts.map +1 -1
- package/dist/agents/direct/project-memory.js +11 -59
- package/dist/agents/direct/project-memory.js.map +1 -1
- package/dist/agents/direct/staged-validation.d.ts +2 -0
- package/dist/agents/direct/staged-validation.d.ts.map +1 -1
- package/dist/agents/direct/staged-validation.js +22 -1
- package/dist/agents/direct/staged-validation.js.map +1 -1
- package/dist/agents/direct/types.d.ts +8 -0
- package/dist/agents/direct/types.d.ts.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +99 -4
- package/dist/cli.js.map +1 -1
- package/dist/config/config.d.ts +5 -0
- package/dist/config/config.d.ts.map +1 -1
- package/dist/config/config.js +21 -0
- package/dist/config/config.js.map +1 -1
- package/dist/prompts/direct-conversion.d.ts.map +1 -1
- package/dist/prompts/direct-conversion.js +4 -3
- package/dist/prompts/direct-conversion.js.map +1 -1
- package/dist/prompts/direct-integration.d.ts +43 -0
- package/dist/prompts/direct-integration.d.ts.map +1 -0
- package/dist/prompts/direct-integration.js +79 -0
- package/dist/prompts/direct-integration.js.map +1 -0
- package/dist/prompts/direct-repair.d.ts +2 -0
- package/dist/prompts/direct-repair.d.ts.map +1 -1
- package/dist/prompts/direct-repair.js +4 -0
- package/dist/prompts/direct-repair.js.map +1 -1
- 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 +10 -4
- package/docs/MODULES.md +7 -3
- package/docs/SCALABILITY.md +9 -0
- package/docs/roadmap/html-css.md +5 -1
- package/package.json +1 -1
|
@@ -0,0 +1,382 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Optional, bounded, cross-language integration auditing. ProjectMemory owns
|
|
3
|
+
* relationship discovery; this module is language-agnostic orchestration over
|
|
4
|
+
* generated paths, compact contracts, a strict JSON audit, target-scoped
|
|
5
|
+
* repairs, and one verification audit. No application/framework scenario is
|
|
6
|
+
* embedded here.
|
|
7
|
+
*/
|
|
8
|
+
import { posix } from "node:path";
|
|
9
|
+
import { ContextSecurityError, scanSecrets } from "../../context/context.js";
|
|
10
|
+
import { validateGeneratedUnit } from "./candidate-validation.js";
|
|
11
|
+
import { compactFileContract } from "./project-contracts.js";
|
|
12
|
+
const DEFAULT_CONTEXT_CHAR_BUDGET = 48_000;
|
|
13
|
+
const MAX_COMPONENT_FILES = 24;
|
|
14
|
+
const MAX_NEIGHBORHOOD_FILES = 17;
|
|
15
|
+
const MAX_CONTRACT_CHARS = 2_000;
|
|
16
|
+
const MAX_PURPOSE_CHARS = 400;
|
|
17
|
+
const MAX_AUDIT_ISSUES = 64;
|
|
18
|
+
const MAX_ISSUE_MESSAGE_CHARS = 600;
|
|
19
|
+
function targetPath(unit) {
|
|
20
|
+
return unit.kind === "file" ? unit.outputPath : unit.sourcePath;
|
|
21
|
+
}
|
|
22
|
+
function oneLine(value, limit) {
|
|
23
|
+
const clean = value
|
|
24
|
+
.replace(/[\u0000-\u0008\u000b-\u001f\u007f]/gu, " ")
|
|
25
|
+
.replace(/\s+/gu, " ")
|
|
26
|
+
.trim();
|
|
27
|
+
return clean.length <= limit ? clean : `${clean.slice(0, Math.max(0, limit - 1))}…`;
|
|
28
|
+
}
|
|
29
|
+
function ownKeys(value, expected) {
|
|
30
|
+
const actual = Object.keys(value).sort();
|
|
31
|
+
return actual.length === expected.length && actual.every((key, index) => key === [...expected].sort()[index]);
|
|
32
|
+
}
|
|
33
|
+
function object(value) {
|
|
34
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
35
|
+
}
|
|
36
|
+
/** Strictly validate the model's audit JSON against the exact generated group. */
|
|
37
|
+
export function parseIntegrationAuditOutput(output, allowedPaths) {
|
|
38
|
+
let parsed;
|
|
39
|
+
try {
|
|
40
|
+
parsed = JSON.parse(output);
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
throw new Error("Integration auditor returned invalid JSON.");
|
|
44
|
+
}
|
|
45
|
+
if (!object(parsed) || !ownKeys(parsed, ["issues", "status"])) {
|
|
46
|
+
throw new Error("Integration audit must contain exactly status and issues.");
|
|
47
|
+
}
|
|
48
|
+
if (parsed.status !== "consistent" && parsed.status !== "issues") {
|
|
49
|
+
throw new Error("Integration audit status must be consistent or issues.");
|
|
50
|
+
}
|
|
51
|
+
if (!Array.isArray(parsed.issues) || parsed.issues.length > MAX_AUDIT_ISSUES) {
|
|
52
|
+
throw new Error(`Integration audit issues must be an array with at most ${MAX_AUDIT_ISSUES} entries.`);
|
|
53
|
+
}
|
|
54
|
+
const issues = parsed.issues.map((value, index) => {
|
|
55
|
+
if (!object(value) || !ownKeys(value, ["code", "message", "relatedPaths", "targetPath"])) {
|
|
56
|
+
throw new Error(`Integration audit issue ${index} has unknown or missing fields.`);
|
|
57
|
+
}
|
|
58
|
+
if (typeof value.targetPath !== "string" || !allowedPaths.has(value.targetPath)) {
|
|
59
|
+
throw new Error(`Integration audit issue ${index} names an unknown targetPath.`);
|
|
60
|
+
}
|
|
61
|
+
if (!Array.isArray(value.relatedPaths) || value.relatedPaths.length === 0 || value.relatedPaths.length > 16) {
|
|
62
|
+
throw new Error(`Integration audit issue ${index} must name 1-16 relatedPaths.`);
|
|
63
|
+
}
|
|
64
|
+
const relatedPaths = value.relatedPaths.map((path) => {
|
|
65
|
+
if (typeof path !== "string" || path === value.targetPath || !allowedPaths.has(path)) {
|
|
66
|
+
throw new Error(`Integration audit issue ${index} names an unknown related path.`);
|
|
67
|
+
}
|
|
68
|
+
return path;
|
|
69
|
+
});
|
|
70
|
+
if (new Set(relatedPaths).size !== relatedPaths.length) {
|
|
71
|
+
throw new Error(`Integration audit issue ${index} repeats a related path.`);
|
|
72
|
+
}
|
|
73
|
+
if (typeof value.code !== "string" || !/^[A-Z][A-Z0-9_]{1,63}$/u.test(value.code)) {
|
|
74
|
+
throw new Error(`Integration audit issue ${index} has an invalid code.`);
|
|
75
|
+
}
|
|
76
|
+
if (typeof value.message !== "string") {
|
|
77
|
+
throw new Error(`Integration audit issue ${index} has an invalid message.`);
|
|
78
|
+
}
|
|
79
|
+
const message = oneLine(value.message, MAX_ISSUE_MESSAGE_CHARS);
|
|
80
|
+
if (message.length === 0)
|
|
81
|
+
throw new Error(`Integration audit issue ${index} has an empty message.`);
|
|
82
|
+
return { targetPath: value.targetPath, relatedPaths, code: value.code, message };
|
|
83
|
+
});
|
|
84
|
+
if (parsed.status === "consistent" && issues.length !== 0 || parsed.status === "issues" && issues.length === 0) {
|
|
85
|
+
throw new Error("Integration audit status contradicts its issues array.");
|
|
86
|
+
}
|
|
87
|
+
return { status: parsed.status, issues };
|
|
88
|
+
}
|
|
89
|
+
function relationshipGroups(generated, projectMemory) {
|
|
90
|
+
const wholeFiles = generated.filter((item) => item.unit.kind === "file");
|
|
91
|
+
const byPath = new Map(wholeFiles.map((item) => [targetPath(item.unit), item.unit]));
|
|
92
|
+
const adjacency = new Map([...byPath.keys()].map((path) => [path, new Set()]));
|
|
93
|
+
const relationships = new Map();
|
|
94
|
+
for (const { unit } of wholeFiles) {
|
|
95
|
+
const fromPath = targetPath(unit);
|
|
96
|
+
const evidenced = projectMemory?.relationsFor?.(unit) ?? [];
|
|
97
|
+
for (const relationship of evidenced) {
|
|
98
|
+
if (!byPath.has(relationship.path) || relationship.path === fromPath)
|
|
99
|
+
continue;
|
|
100
|
+
adjacency.get(fromPath).add(relationship.path);
|
|
101
|
+
adjacency.get(relationship.path).add(fromPath);
|
|
102
|
+
const entry = {
|
|
103
|
+
fromPath,
|
|
104
|
+
toPath: relationship.path,
|
|
105
|
+
role: oneLine(relationship.role, 240),
|
|
106
|
+
reference: oneLine(relationship.reference, 240),
|
|
107
|
+
};
|
|
108
|
+
relationships.set(`${entry.fromPath}\0${entry.toPath}`, entry);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
const components = [];
|
|
112
|
+
const visited = new Set();
|
|
113
|
+
for (const start of [...byPath.keys()].sort()) {
|
|
114
|
+
if (visited.has(start) || adjacency.get(start).size === 0)
|
|
115
|
+
continue;
|
|
116
|
+
const queue = [start];
|
|
117
|
+
const component = [];
|
|
118
|
+
visited.add(start);
|
|
119
|
+
while (queue.length > 0) {
|
|
120
|
+
const path = queue.shift();
|
|
121
|
+
component.push(path);
|
|
122
|
+
for (const next of adjacency.get(path) ?? []) {
|
|
123
|
+
if (visited.has(next))
|
|
124
|
+
continue;
|
|
125
|
+
visited.add(next);
|
|
126
|
+
queue.push(next);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
components.push(component.sort());
|
|
130
|
+
}
|
|
131
|
+
const pathGroups = [];
|
|
132
|
+
for (const component of components) {
|
|
133
|
+
if (component.length <= MAX_COMPONENT_FILES) {
|
|
134
|
+
pathGroups.push(component);
|
|
135
|
+
continue;
|
|
136
|
+
}
|
|
137
|
+
const seen = new Set();
|
|
138
|
+
for (const focus of component) {
|
|
139
|
+
const neighborhood = [focus, ...[...(adjacency.get(focus) ?? [])].sort()]
|
|
140
|
+
.slice(0, MAX_NEIGHBORHOOD_FILES)
|
|
141
|
+
.sort();
|
|
142
|
+
const key = neighborhood.join("\0");
|
|
143
|
+
if (neighborhood.length < 2 || seen.has(key))
|
|
144
|
+
continue;
|
|
145
|
+
seen.add(key);
|
|
146
|
+
pathGroups.push(neighborhood);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
return pathGroups.map((paths) => {
|
|
150
|
+
const pathSet = new Set(paths);
|
|
151
|
+
const groupRelationships = [...relationships.values()]
|
|
152
|
+
.filter((entry) => pathSet.has(entry.fromPath) && pathSet.has(entry.toPath))
|
|
153
|
+
.sort((left, right) => left.fromPath.localeCompare(right.fromPath) || left.toPath.localeCompare(right.toPath));
|
|
154
|
+
return { units: paths.map((path) => byPath.get(path)), relationships: groupRelationships };
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
/** Conservative pre-run ceiling: two audits and one repair per whole-file unit. */
|
|
158
|
+
export function potentialIntegrationRequests(units) {
|
|
159
|
+
const files = units.filter((unit) => unit.kind === "file").length;
|
|
160
|
+
return files < 2 ? { auditUpTo: 0, repairUpTo: 0 } : { auditUpTo: files * 2, repairUpTo: files };
|
|
161
|
+
}
|
|
162
|
+
function groupProjectMemory(group, projectMemory, budget) {
|
|
163
|
+
if (!projectMemory || budget < 160)
|
|
164
|
+
return undefined;
|
|
165
|
+
const perUnit = Math.max(160, Math.floor(budget / Math.max(1, group.units.length)));
|
|
166
|
+
const rendered = [];
|
|
167
|
+
let remaining = budget;
|
|
168
|
+
for (const unit of group.units) {
|
|
169
|
+
if (remaining < 160)
|
|
170
|
+
break;
|
|
171
|
+
const block = projectMemory.renderFor(unit, Math.min(perUnit, remaining));
|
|
172
|
+
if (block.length === 0 || rendered.includes(block))
|
|
173
|
+
continue;
|
|
174
|
+
rendered.push(block);
|
|
175
|
+
remaining -= block.length;
|
|
176
|
+
}
|
|
177
|
+
return rendered.length > 0 ? rendered.join("\n\n") : undefined;
|
|
178
|
+
}
|
|
179
|
+
function buildAuditRequest(group, byUnit, contextCharBudget, projectMemory) {
|
|
180
|
+
const baseFiles = group.units.map((unit) => {
|
|
181
|
+
const item = byUnit.get(unit);
|
|
182
|
+
const path = targetPath(unit);
|
|
183
|
+
const contract = compactFileContract(path, item.code).slice(0, MAX_CONTRACT_CHARS);
|
|
184
|
+
return {
|
|
185
|
+
path,
|
|
186
|
+
language: unit.language ?? (posix.extname(path).replace(/^\./u, "") || "unknown"),
|
|
187
|
+
instruction: oneLine(unit.prompt, MAX_PURPOSE_CHARS),
|
|
188
|
+
contract,
|
|
189
|
+
code: item.code,
|
|
190
|
+
};
|
|
191
|
+
});
|
|
192
|
+
const fixedChars = baseFiles.reduce((total, file) => total + file.path.length + file.language.length + file.instruction.length + file.contract.length + 120, 0)
|
|
193
|
+
+ group.relationships.reduce((total, relation) => total + relation.fromPath.length + relation.toPath.length + relation.role.length + relation.reference.length + 40, 0);
|
|
194
|
+
if (fixedChars > contextCharBudget)
|
|
195
|
+
return undefined;
|
|
196
|
+
let remaining = contextCharBudget - fixedChars;
|
|
197
|
+
const projectBlock = groupProjectMemory(group, projectMemory, Math.floor(remaining / 3));
|
|
198
|
+
remaining -= projectBlock?.length ?? 0;
|
|
199
|
+
const files = [];
|
|
200
|
+
for (const file of baseFiles) {
|
|
201
|
+
const content = file.code.length <= remaining ? file.code : undefined;
|
|
202
|
+
files.push({
|
|
203
|
+
path: file.path,
|
|
204
|
+
language: file.language,
|
|
205
|
+
instruction: file.instruction,
|
|
206
|
+
contract: file.contract,
|
|
207
|
+
...(content !== undefined ? { content } : {}),
|
|
208
|
+
});
|
|
209
|
+
if (content !== undefined)
|
|
210
|
+
remaining -= content.length;
|
|
211
|
+
}
|
|
212
|
+
return {
|
|
213
|
+
unit: group.units[0],
|
|
214
|
+
units: [...group.units],
|
|
215
|
+
files,
|
|
216
|
+
relationships: [...group.relationships],
|
|
217
|
+
...(projectBlock ? { projectMemory: projectBlock } : {}),
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
function buildRepairRequest(unit, issues, byUnit, contextCharBudget, projectMemory) {
|
|
221
|
+
const item = byUnit.get(unit);
|
|
222
|
+
const issueChars = issues.reduce((total, issue) => total + issue.code.length + issue.message.length + issue.relatedPaths.join("").length + 48, 0);
|
|
223
|
+
let remaining = contextCharBudget - item.code.length - issueChars;
|
|
224
|
+
if (remaining < 0)
|
|
225
|
+
return undefined;
|
|
226
|
+
const projectBlock = projectMemory?.renderFor(unit, Math.floor(remaining / 3));
|
|
227
|
+
remaining -= projectBlock?.length ?? 0;
|
|
228
|
+
const relatedPaths = [...new Set(issues.flatMap((issue) => issue.relatedPaths))].sort();
|
|
229
|
+
const relatedFiles = [];
|
|
230
|
+
for (const path of relatedPaths) {
|
|
231
|
+
const related = [...byUnit.values()].find((entry) => targetPath(entry.unit) === path);
|
|
232
|
+
if (!related || related.code.length > remaining)
|
|
233
|
+
continue;
|
|
234
|
+
relatedFiles.push({ path, content: related.code });
|
|
235
|
+
remaining -= related.code.length;
|
|
236
|
+
}
|
|
237
|
+
return {
|
|
238
|
+
unit,
|
|
239
|
+
targetPath: targetPath(unit),
|
|
240
|
+
instruction: unit.prompt,
|
|
241
|
+
currentCode: item.code,
|
|
242
|
+
issues,
|
|
243
|
+
relatedFiles,
|
|
244
|
+
...(projectBlock ? { projectMemory: projectBlock } : {}),
|
|
245
|
+
};
|
|
246
|
+
}
|
|
247
|
+
function auditOutbound(request) {
|
|
248
|
+
return [
|
|
249
|
+
request.projectMemory ?? "",
|
|
250
|
+
...request.files.flatMap((file) => [file.path, file.language, file.instruction, file.contract, file.content ?? ""]),
|
|
251
|
+
...request.relationships.flatMap((relationship) => [
|
|
252
|
+
relationship.fromPath,
|
|
253
|
+
relationship.toPath,
|
|
254
|
+
relationship.role,
|
|
255
|
+
relationship.reference,
|
|
256
|
+
]),
|
|
257
|
+
].join("\n");
|
|
258
|
+
}
|
|
259
|
+
function repairOutbound(request) {
|
|
260
|
+
return [
|
|
261
|
+
request.targetPath,
|
|
262
|
+
request.instruction,
|
|
263
|
+
request.currentCode,
|
|
264
|
+
request.projectMemory ?? "",
|
|
265
|
+
...request.issues.flatMap((issue) => [
|
|
266
|
+
issue.targetPath,
|
|
267
|
+
...issue.relatedPaths,
|
|
268
|
+
issue.code,
|
|
269
|
+
issue.message,
|
|
270
|
+
]),
|
|
271
|
+
...request.relatedFiles.flatMap((file) => [file.path, file.content]),
|
|
272
|
+
].join("\n");
|
|
273
|
+
}
|
|
274
|
+
/** Audit, repair, and verify generated relationship groups without writing. */
|
|
275
|
+
export async function reconcileGeneratedIntegrations(generated, options = {}) {
|
|
276
|
+
const results = generated.map((item) => ({ ...item }));
|
|
277
|
+
const byUnit = new Map(results.map((item) => [item.unit, item]));
|
|
278
|
+
const groups = relationshipGroups(results, options.projectMemory);
|
|
279
|
+
const maxAuditPasses = Math.max(1, Math.min(2, options.maxAuditPassesPerGroup ?? 2));
|
|
280
|
+
const maxRepairs = Math.max(0, options.maxRepairAttemptsPerUnit ?? 1);
|
|
281
|
+
const contextCharBudget = Math.max(0, options.contextCharBudget ?? DEFAULT_CONTEXT_CHAR_BUDGET);
|
|
282
|
+
const repairedUnits = new Set();
|
|
283
|
+
let auditRequests = 0;
|
|
284
|
+
let repairRequests = 0;
|
|
285
|
+
const rejectGroup = (group, reason) => {
|
|
286
|
+
for (const unit of group.units) {
|
|
287
|
+
const item = byUnit.get(unit);
|
|
288
|
+
if (!item || item.error !== undefined)
|
|
289
|
+
continue;
|
|
290
|
+
item.error = reason;
|
|
291
|
+
item.code = "";
|
|
292
|
+
options.onProgress?.({ kind: "reject", unit, reason });
|
|
293
|
+
}
|
|
294
|
+
};
|
|
295
|
+
for (const group of groups) {
|
|
296
|
+
const unavailable = group.units.map((unit) => byUnit.get(unit))
|
|
297
|
+
.filter((item) => item.error !== undefined || item.code.trim().length === 0);
|
|
298
|
+
if (unavailable.length > 0) {
|
|
299
|
+
rejectGroup(group, `cross-file integration group is incomplete because ${unavailable.map((item) => item.unit.sourcePath).join(", ")} did not produce an applicable candidate`);
|
|
300
|
+
continue;
|
|
301
|
+
}
|
|
302
|
+
if (!options.audit)
|
|
303
|
+
continue;
|
|
304
|
+
const runAudit = async (pass) => {
|
|
305
|
+
const request = buildAuditRequest(group, byUnit, contextCharBudget, options.projectMemory);
|
|
306
|
+
if (!request || scanSecrets(auditOutbound(request)).length > 0)
|
|
307
|
+
return undefined;
|
|
308
|
+
options.onProgress?.({ kind: "integration-audit", unit: request.unit, pass, files: request.files.length });
|
|
309
|
+
auditRequests += 1;
|
|
310
|
+
try {
|
|
311
|
+
return parseIntegrationAuditOutput(await options.audit(request), new Set(group.units.map(targetPath)));
|
|
312
|
+
}
|
|
313
|
+
catch (error) {
|
|
314
|
+
if (error instanceof ContextSecurityError)
|
|
315
|
+
throw error;
|
|
316
|
+
return undefined;
|
|
317
|
+
}
|
|
318
|
+
};
|
|
319
|
+
const initial = await runAudit(1);
|
|
320
|
+
if (!initial) {
|
|
321
|
+
rejectGroup(group, "cross-file integration audit failed or exceeded its safe bounded context");
|
|
322
|
+
continue;
|
|
323
|
+
}
|
|
324
|
+
if (initial.status === "consistent")
|
|
325
|
+
continue;
|
|
326
|
+
if (!options.repair || maxRepairs === 0) {
|
|
327
|
+
rejectGroup(group, `cross-file integration audit reported ${initial.issues.length} unresolved issue(s)`);
|
|
328
|
+
continue;
|
|
329
|
+
}
|
|
330
|
+
let repaired = true;
|
|
331
|
+
const byTarget = new Map();
|
|
332
|
+
for (const issue of initial.issues)
|
|
333
|
+
byTarget.set(issue.targetPath, [...(byTarget.get(issue.targetPath) ?? []), issue]);
|
|
334
|
+
for (const [path, issues] of byTarget) {
|
|
335
|
+
const unit = group.units.find((candidate) => targetPath(candidate) === path);
|
|
336
|
+
if (repairedUnits.has(unit)) {
|
|
337
|
+
repaired = false;
|
|
338
|
+
break;
|
|
339
|
+
}
|
|
340
|
+
const request = buildRepairRequest(unit, issues, byUnit, contextCharBudget, options.projectMemory);
|
|
341
|
+
if (!request || scanSecrets(repairOutbound(request)).length > 0) {
|
|
342
|
+
repaired = false;
|
|
343
|
+
break;
|
|
344
|
+
}
|
|
345
|
+
options.onProgress?.({ kind: "integration-repair", unit, attempt: 1, issues: issues.length });
|
|
346
|
+
repairRequests += 1;
|
|
347
|
+
repairedUnits.add(unit);
|
|
348
|
+
try {
|
|
349
|
+
const code = await options.repair(request);
|
|
350
|
+
if (code.trim().length === 0 || code === byUnit.get(unit).code) {
|
|
351
|
+
repaired = false;
|
|
352
|
+
break;
|
|
353
|
+
}
|
|
354
|
+
await validateGeneratedUnit(unit, code);
|
|
355
|
+
byUnit.get(unit).code = code;
|
|
356
|
+
options.projectMemory?.remember(unit, code);
|
|
357
|
+
}
|
|
358
|
+
catch (error) {
|
|
359
|
+
if (error instanceof ContextSecurityError)
|
|
360
|
+
throw error;
|
|
361
|
+
repaired = false;
|
|
362
|
+
break;
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
if (!repaired) {
|
|
366
|
+
rejectGroup(group, "cross-file integration repair failed within its bounded target budget");
|
|
367
|
+
continue;
|
|
368
|
+
}
|
|
369
|
+
if (maxAuditPasses < 2)
|
|
370
|
+
continue;
|
|
371
|
+
const verified = await runAudit(2);
|
|
372
|
+
if (!verified || verified.status !== "consistent") {
|
|
373
|
+
rejectGroup(group, "cross-file integration remained inconsistent after bounded repair and verification");
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
return { results, auditRequests, repairRequests, checkedGroups: groups.length };
|
|
377
|
+
}
|
|
378
|
+
/** Helper for tests and alternative ProjectMemory implementations. */
|
|
379
|
+
export function generatedRelationshipsFor(unit, projectMemory) {
|
|
380
|
+
return projectMemory.relationsFor?.(unit) ?? [];
|
|
381
|
+
}
|
|
382
|
+
//# sourceMappingURL=integration-validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"integration-validation.js","sourceRoot":"","sources":["../../../src/agents/direct/integration-validation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export interface LanguageRelationshipRule {
|
|
2
|
+
id: string;
|
|
3
|
+
matches(targetExtension: string, relatedExtension: string): boolean;
|
|
4
|
+
role: string;
|
|
5
|
+
}
|
|
6
|
+
/** Ordered: specific cross-language relationships precede same-language fallbacks. */
|
|
7
|
+
export declare const LANGUAGE_RELATIONSHIP_RULES: readonly LanguageRelationshipRule[];
|
|
8
|
+
export declare function languageRelationshipRole(targetPath: string, relatedPath: string): string | undefined;
|
|
9
|
+
export declare function usesModuleStyleReference(targetPath: string): boolean;
|
|
10
|
+
export declare function relationshipReferenceDescription(targetPath: string, relatedPath: string, reference: string): string;
|
|
11
|
+
//# sourceMappingURL=language-relationships.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"language-relationships.d.ts","sourceRoot":"","sources":["../../../src/agents/direct/language-relationships.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,wBAAwB;IACvC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,CAAC,eAAe,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC;IACpE,IAAI,EAAE,MAAM,CAAC;CACd;AAED,sFAAsF;AACtF,eAAO,MAAM,2BAA2B,EAAE,SAAS,wBAAwB,EAiBzE,CAAC;AAEH,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAOpG;AAED,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAEpE;AAED,wBAAgB,gCAAgC,CAC9C,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GAChB,MAAM,CAUR"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Extensible language relationship profiles used by ProjectMemory. The
|
|
3
|
+
* orchestration layer consumes only paths/roles/references; ecosystem-specific
|
|
4
|
+
* knowledge stays in this registry rather than in integration control flow.
|
|
5
|
+
*/
|
|
6
|
+
import { extname } from "node:path";
|
|
7
|
+
const SCRIPT = new Set([".js", ".jsx", ".mjs", ".cjs", ".ts", ".tsx", ".mts", ".cts"]);
|
|
8
|
+
const BROWSER_SCRIPT = new Set([".js", ".jsx", ".mjs"]);
|
|
9
|
+
const WEB_ASSET = new Set([".svg", ".png", ".jpg", ".jpeg", ".gif", ".webp", ".avif", ".ico", ".woff", ".woff2", ".ttf", ".otf"]);
|
|
10
|
+
const C_IMPLEMENTATION = new Set([".c", ".cc", ".cpp"]);
|
|
11
|
+
const C_HEADER = new Set([".h", ".hpp"]);
|
|
12
|
+
/** Ordered: specific cross-language relationships precede same-language fallbacks. */
|
|
13
|
+
export const LANGUAGE_RELATIONSHIP_RULES = Object.freeze([
|
|
14
|
+
{ id: "html-stylesheet", matches: (target, related) => [".html", ".htm"].includes(target) && related === ".css", role: "stylesheet companion; reference it with a <link rel=\"stylesheet\"> href" },
|
|
15
|
+
{ id: "html-browser-script", matches: (target, related) => [".html", ".htm"].includes(target) && BROWSER_SCRIPT.has(related), role: "browser-script companion; reference it with a <script src>" },
|
|
16
|
+
{ id: "html-web-asset", matches: (target, related) => [".html", ".htm"].includes(target) && WEB_ASSET.has(related), role: "web asset candidate; reference its real relative URL when the markup uses it" },
|
|
17
|
+
{ id: "css-markup", matches: (target, related) => target === ".css" && [".html", ".htm"].includes(related), role: "markup contract; style its real classes and ids" },
|
|
18
|
+
{ id: "css-asset", matches: (target, related) => target === ".css" && WEB_ASSET.has(related), role: "style asset candidate; use its real relative URL with url() when needed" },
|
|
19
|
+
{ id: "script-markup", matches: (target, related) => SCRIPT.has(target) && [".html", ".htm"].includes(related), role: "DOM contract; use its real classes and ids" },
|
|
20
|
+
{ id: "script-styles", matches: (target, related) => SCRIPT.has(target) && related === ".css", role: "style contract; toggle or query its real class/custom-property names; do not import it unless the project pattern does" },
|
|
21
|
+
{ id: "script-module", matches: (target, related) => SCRIPT.has(target) && SCRIPT.has(related), role: "module candidate; import only the symbols this target actually uses" },
|
|
22
|
+
{ id: "c-header", matches: (target, related) => C_IMPLEMENTATION.has(target) && C_HEADER.has(related), role: "header candidate; include it when this implementation uses its declarations" },
|
|
23
|
+
{ id: "c-implementation", matches: (target, related) => C_HEADER.has(target) && C_IMPLEMENTATION.has(related), role: "implementation companion for this header contract" },
|
|
24
|
+
{ id: "java-type", matches: (target, related) => target === ".java" && related === ".java", role: "same-project Java type; use its declared package/type contract when needed" },
|
|
25
|
+
{ id: "python-module", matches: (target, related) => target === ".py" && related === ".py", role: "Python module candidate; import its public contract with the project's package convention" },
|
|
26
|
+
{ id: "rust-module", matches: (target, related) => target === ".rs" && related === ".rs", role: "Rust module candidate; use the crate's mod/use layout rather than a filesystem-style import" },
|
|
27
|
+
{ id: "go-package", matches: (target, related) => target === ".go" && related === ".go", role: "Go package companion; same-package files share declarations and must not import each other" },
|
|
28
|
+
{ id: "ruby-source", matches: (target, related) => target === ".rb" && related === ".rb", role: "Ruby source companion; use require_relative or the project's loader convention when needed" },
|
|
29
|
+
{ id: "csharp-type", matches: (target, related) => target === ".cs" && related === ".cs", role: "same-project C# type; use its namespace/type contract rather than importing a filename" },
|
|
30
|
+
]);
|
|
31
|
+
export function languageRelationshipRole(targetPath, relatedPath) {
|
|
32
|
+
const target = extname(targetPath).toLowerCase();
|
|
33
|
+
const related = extname(relatedPath).toLowerCase();
|
|
34
|
+
const matched = LANGUAGE_RELATIONSHIP_RULES.find((rule) => rule.matches(target, related));
|
|
35
|
+
if (matched)
|
|
36
|
+
return matched.role;
|
|
37
|
+
if (target === related && target.length > 0)
|
|
38
|
+
return "same-language project file; reuse its public contract when needed";
|
|
39
|
+
return undefined;
|
|
40
|
+
}
|
|
41
|
+
export function usesModuleStyleReference(targetPath) {
|
|
42
|
+
return SCRIPT.has(extname(targetPath).toLowerCase());
|
|
43
|
+
}
|
|
44
|
+
export function relationshipReferenceDescription(targetPath, relatedPath, reference) {
|
|
45
|
+
const target = extname(targetPath).toLowerCase();
|
|
46
|
+
const related = extname(relatedPath).toLowerCase();
|
|
47
|
+
if (SCRIPT.has(target) && SCRIPT.has(related)) {
|
|
48
|
+
return `relative project path: ${reference}; preserve the project's module-specifier extension convention`;
|
|
49
|
+
}
|
|
50
|
+
if (new Set([".py", ".rs", ".go", ".java", ".rb", ".cs"]).has(target) && target === related) {
|
|
51
|
+
return `relative project path: ${reference}; translate it through the project's package/module convention`;
|
|
52
|
+
}
|
|
53
|
+
return `exact relative reference: ${reference}`;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=language-relationships.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"language-relationships.js","sourceRoot":"","sources":["../../../src/agents/direct/language-relationships.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,15 @@ import type { ConversionUnit } from "./types.ts";
|
|
|
2
2
|
export declare class ModelOutputError extends Error {
|
|
3
3
|
constructor(message: string);
|
|
4
4
|
}
|
|
5
|
-
export
|
|
5
|
+
export interface ConditionalRequestAllowance {
|
|
6
|
+
integrationAuditUpTo: number;
|
|
7
|
+
integrationRepairUpTo: number;
|
|
8
|
+
compilerRepairUpTo: number;
|
|
9
|
+
}
|
|
10
|
+
/** Conservative opt-in request ceilings for pre-generation disclosure. */
|
|
11
|
+
export declare function conditionalRequestAllowance(units: readonly ConversionUnit[], configuredLanguages: string | readonly string[]): ConditionalRequestAllowance;
|
|
12
|
+
export declare function renderReceipt(units: readonly ConversionUnit[], provider: string, model: string, configuredLanguages: string | readonly string[], options?: {
|
|
13
|
+
reconcileIntegrations?: boolean;
|
|
14
|
+
}): string;
|
|
6
15
|
export declare function stripCodeFence(output: string): string;
|
|
7
16
|
//# sourceMappingURL=presentation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"presentation.d.ts","sourceRoot":"","sources":["../../../src/agents/direct/presentation.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"presentation.d.ts","sourceRoot":"","sources":["../../../src/agents/direct/presentation.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,qBAAa,gBAAiB,SAAQ,KAAK;gBAC7B,OAAO,EAAE,MAAM;CAI5B;AAED,MAAM,WAAW,2BAA2B;IAC1C,oBAAoB,EAAE,MAAM,CAAC;IAC7B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,0EAA0E;AAC1E,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,SAAS,cAAc,EAAE,EAChC,mBAAmB,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,GAC9C,2BAA2B,CAY7B;AAED,wBAAgB,aAAa,CAC3B,KAAK,EAAE,SAAS,cAAc,EAAE,EAChC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,mBAAmB,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,EAC/C,OAAO,GAAE;IAAE,qBAAqB,CAAC,EAAE,OAAO,CAAA;CAAO,GAChD,MAAM,CAmDR;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAWrD"}
|
|
@@ -1,11 +1,26 @@
|
|
|
1
1
|
import { languageProfile } from "./languages.js";
|
|
2
|
+
import { potentialIntegrationRequests } from "./integration-validation.js";
|
|
2
3
|
export class ModelOutputError extends Error {
|
|
3
4
|
constructor(message) {
|
|
4
5
|
super(message);
|
|
5
6
|
this.name = "ModelOutputError";
|
|
6
7
|
}
|
|
7
8
|
}
|
|
8
|
-
|
|
9
|
+
/** Conservative opt-in request ceilings for pre-generation disclosure. */
|
|
10
|
+
export function conditionalRequestAllowance(units, configuredLanguages) {
|
|
11
|
+
const configured = typeof configuredLanguages === "string" ? [configuredLanguages] : configuredLanguages;
|
|
12
|
+
const primary = configured[0] ?? "typescript";
|
|
13
|
+
const integration = potentialIntegrationRequests(units);
|
|
14
|
+
return {
|
|
15
|
+
integrationAuditUpTo: integration.auditUpTo,
|
|
16
|
+
integrationRepairUpTo: integration.repairUpTo,
|
|
17
|
+
compilerRepairUpTo: units.filter((unit) => {
|
|
18
|
+
const language = unit.language ?? primary;
|
|
19
|
+
return unit.kind === "file" && (language === "typescript" || language === "javascript");
|
|
20
|
+
}).length,
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
export function renderReceipt(units, provider, model, configuredLanguages, options = {}) {
|
|
9
24
|
const configured = typeof configuredLanguages === "string"
|
|
10
25
|
? [configuredLanguages]
|
|
11
26
|
: configuredLanguages;
|
|
@@ -29,6 +44,12 @@ export function renderReceipt(units, provider, model, configuredLanguages) {
|
|
|
29
44
|
const repairAllowance = repairableUnits.length > 0
|
|
30
45
|
? ` (up to ${repairableUnits.length} extra bounded repair request${repairableUnits.length === 1 ? "" : "s"} for ${repairLanguages})`
|
|
31
46
|
: "";
|
|
47
|
+
const conditional = options.reconcileIntegrations
|
|
48
|
+
? conditionalRequestAllowance(units, configured)
|
|
49
|
+
: undefined;
|
|
50
|
+
const integrationDisclaimer = conditional !== undefined && conditional.integrationAuditUpTo > 0
|
|
51
|
+
? ` Additional: opt-in cross-file reconciliation may issue up to ${conditional.integrationAuditUpTo} bounded audit request${conditional.integrationAuditUpTo === 1 ? "" : "s"} and ${conditional.integrationRepairUpTo} target-repair request${conditional.integrationRepairUpTo === 1 ? "" : "s"}; only ProjectMemory-evidenced generated relationships are audited.`
|
|
52
|
+
: undefined;
|
|
32
53
|
const lines = [
|
|
33
54
|
"human-to-code — conversion receipt",
|
|
34
55
|
"",
|
|
@@ -37,7 +58,11 @@ export function renderReceipt(units, provider, model, configuredLanguages) {
|
|
|
37
58
|
` Model : ${model}`,
|
|
38
59
|
` Engine : direct (one model request per prompt; bounded cross-file repair may add requests)`,
|
|
39
60
|
` Context : compact current/projected ProjectMemory (target-specific, bounded)`,
|
|
40
|
-
` Requests : ${units.length} planned${repairAllowance}`,
|
|
61
|
+
` Requests : ${units.length} planned${options.reconcileIntegrations ? "" : repairAllowance}`,
|
|
62
|
+
...(integrationDisclaimer ? [integrationDisclaimer] : []),
|
|
63
|
+
...(conditional !== undefined && conditional.compilerRepairUpTo > 0
|
|
64
|
+
? [` Validation: up to ${conditional.compilerRepairUpTo} additional bounded JS/TS compiler-repair request${conditional.compilerRepairUpTo === 1 ? "" : "s"}, only if validation fails.`]
|
|
65
|
+
: []),
|
|
41
66
|
"",
|
|
42
67
|
];
|
|
43
68
|
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;
|
|
1
|
+
{"version":3,"file":"presentation.js","sourceRoot":"","sources":["../../../src/agents/direct/presentation.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-contracts.d.ts","sourceRoot":"","sources":["../../../src/agents/direct/project-contracts.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,2BAA2B,aAItC,CAAC;AAEH,eAAO,MAAM,sBAAsB,aAIjC,CAAC;
|
|
1
|
+
{"version":3,"file":"project-contracts.d.ts","sourceRoot":"","sources":["../../../src/agents/direct/project-contracts.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,2BAA2B,aAItC,CAAC;AAEH,eAAO,MAAM,sBAAsB,aAIjC,CAAC;AAgLH,iFAAiF;AACjF,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAuBzE"}
|