human-to-code 0.1.20 → 0.1.21
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 +36 -5
- package/dist/agents/direct/candidate-overlay.d.ts.map +1 -1
- package/dist/agents/direct/candidate-overlay.js +1 -1
- package/dist/agents/direct/candidate-overlay.js.map +1 -1
- package/dist/agents/direct/candidate-validation.js +1 -1
- package/dist/agents/direct/candidate-validation.js.map +1 -1
- package/dist/agents/direct/discovery.d.ts +3 -2
- package/dist/agents/direct/discovery.d.ts.map +1 -1
- package/dist/agents/direct/discovery.js +69 -17
- package/dist/agents/direct/discovery.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 +2 -8
- package/dist/agents/direct/languages.js.map +1 -1
- package/dist/agents/direct/marker-parser.d.ts +1 -1
- package/dist/agents/direct/marker-parser.d.ts.map +1 -1
- package/dist/agents/direct/marker-parser.js +125 -27
- package/dist/agents/direct/marker-parser.js.map +1 -1
- package/dist/agents/direct/types.d.ts +1 -1
- package/dist/agents/direct/types.d.ts.map +1 -1
- package/dist/cli.js +1 -1
- package/dist/cli.js.map +1 -1
- package/dist/config/config.d.ts.map +1 -1
- package/dist/config/config.js +42 -0
- package/dist/config/config.js.map +1 -1
- package/dist/core/languages.d.ts +5 -0
- package/dist/core/languages.d.ts.map +1 -0
- package/dist/core/languages.js +30 -0
- package/dist/core/languages.js.map +1 -0
- package/dist/core/types.d.ts +8 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/pipeline/file-memory.d.ts.map +1 -1
- package/dist/pipeline/file-memory.js +2 -0
- package/dist/pipeline/file-memory.js.map +1 -1
- package/docs/MODULES.md +6 -5
- package/docs/roadmap/html-css.md +6 -3
- package/package.json +1 -1
package/Readme.md
CHANGED
|
@@ -108,13 +108,23 @@ The direct `npx human-to-code .` flow discovers work (whole `.human` files and
|
|
|
108
108
|
inline `@human` markers), prints a receipt, and — after you confirm — converts
|
|
109
109
|
them with the deterministic direct engine.
|
|
110
110
|
|
|
111
|
-
Inline discovery currently supports `.ts`, `.tsx`, `.
|
|
112
|
-
`.
|
|
113
|
-
and `.hpp`. A marker-shaped `@human` request in another regular file up to
|
|
111
|
+
Inline discovery currently supports `.ts`, `.tsx`, `.mts`, `.cts`, `.js`,
|
|
112
|
+
`.jsx`, `.mjs`, `.cjs`, `.html`, `.htm`, `.css`, `.py`, `.rs`, `.go`, `.java`,
|
|
113
|
+
`.rb`, `.cs`, `.cpp`, `.cc`, `.c`, `.h`, and `.hpp`. A marker-shaped `@human` request in another regular file up to
|
|
114
114
|
1 MiB is reported as unsupported. Ignored/dot directories and symlinks are
|
|
115
115
|
intentionally excluded from the direct walk; oversized unsupported files are
|
|
116
116
|
not opened merely to produce a notice.
|
|
117
117
|
|
|
118
|
+
The lexical marker scanner supports real `// @human` and `# @human` line
|
|
119
|
+
comments, single-line or multiline `/* @human ... */` block comments,
|
|
120
|
+
decorated JSDoc/block comments, and single-line or multiline HTML
|
|
121
|
+
`<!-- @human ... -->` comments. In HTML, the same JavaScript and CSS comment
|
|
122
|
+
forms also work inside `<script>` and `<style>`. Marker-shaped examples inside
|
|
123
|
+
quoted attributes, strings, template literals, ordinary documentation
|
|
124
|
+
comments, or another comment remain inert. Replacement removes exactly the
|
|
125
|
+
recognized comment range and preserves surrounding text, newline style, and
|
|
126
|
+
indentation.
|
|
127
|
+
|
|
118
128
|
### Fast deterministic engine
|
|
119
129
|
|
|
120
130
|
The host does the orchestration; the model only writes code. For each unit the
|
|
@@ -216,7 +226,12 @@ This complete local-Ollama example shows the policy fields:
|
|
|
216
226
|
```json
|
|
217
227
|
{
|
|
218
228
|
"schemaVersion": 1,
|
|
219
|
-
"languages": ["typescript", "html", "css"],
|
|
229
|
+
"languages": ["typescript", "html", "css", "javascript"],
|
|
230
|
+
"humanFileExtensions": [
|
|
231
|
+
{ "path": "index.human", "extension": "html" },
|
|
232
|
+
{ "path": "script.human", "extension": "js" },
|
|
233
|
+
{ "path": "styles.human", "extension": "css" }
|
|
234
|
+
],
|
|
220
235
|
"filesToIgnore": ["node_modules", ".git", "dist"],
|
|
221
236
|
"allowNonHumanFiles": false,
|
|
222
237
|
"provider": {
|
|
@@ -253,7 +268,23 @@ This complete local-Ollama example shows the policy fields:
|
|
|
253
268
|
}
|
|
254
269
|
```
|
|
255
270
|
|
|
256
|
-
`languages` lists every output language enabled for direct conversion (`typescript`, `javascript`, `python`, `rust`, `html`, `css`); its first entry is the default. The receipt lists only the languages selected by the discovered units, not every configured possibility.
|
|
271
|
+
`languages` lists every output language enabled for direct conversion (`typescript`, `javascript`, `python`, `rust`, `html`, `css`); its first entry is the default. The receipt lists only the languages selected by the discovered units, not every configured possibility.
|
|
272
|
+
|
|
273
|
+
`humanFileExtensions` provides the strongest routing signal. Each entry binds one exact, portable project-relative `.human` path to an output extension; a leading dot is optional, and the extension's language must appear in `languages`. This prevents prompt vocabulary from changing the output: the example always routes `script.human` to `script.js`, even if its instruction repeatedly mentions stylesheets, CSS classes, colors, or themes. Recognized inner extensions are replaced when an explicit mapping is present, so mapping `page.html.human` to `js` produces `page.js`.
|
|
274
|
+
|
|
275
|
+
A `.human` file may instead declare its extension on its first nonblank line. The declaration is removed before the remaining instruction is sent to the model:
|
|
276
|
+
|
|
277
|
+
```text
|
|
278
|
+
html
|
|
279
|
+
add head section here
|
|
280
|
+
add styles
|
|
281
|
+
close head
|
|
282
|
+
add body
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
That `index.human` content writes `index.html`. Tokens such as `js`, `.js`, `mjs`, `ts`, `tsx`, `py`, `rs`, `html`, and `css` are accepted when their language is enabled. A config mapping wins over the first-line declaration, but conflicting languages are reported and skipped instead of guessed.
|
|
286
|
+
|
|
287
|
+
Without either explicit route, a configured inner extension is authoritative: `index.html.human` writes `index.html` and `styles.css.human` writes `styles.css`. For a bare name, discovery checks an explicit language named in the request, then an unambiguous filename convention, then request vocabulary, and finally falls back to the first configured language. This decision is made before confirmation without another model call. The singular `language` is retained for alpha compatibility; when supplied with `languages`, it must be a member and is normalized to the first/default entry. `filesToIgnore` accepts exact file/directory names, not glob expressions. With `sandbox.engine: "auto"`, validation probes Docker first and then Podman; `"docker"` and `"podman"` select one explicitly. Neither runtime being available makes validation `INCONCLUSIVE` and runs no project command.
|
|
257
288
|
|
|
258
289
|
### Budget semantics
|
|
259
290
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"candidate-overlay.d.ts","sourceRoot":"","sources":["../../../src/agents/direct/candidate-overlay.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAE1E,6EAA6E;AAC7E,eAAO,MAAM,6BAA6B,
|
|
1
|
+
{"version":3,"file":"candidate-overlay.d.ts","sourceRoot":"","sources":["../../../src/agents/direct/candidate-overlay.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAE1E,6EAA6E;AAC7E,eAAO,MAAM,6BAA6B,aAA0E,CAAC;AAErH,MAAM,WAAW,oBAAoB;IACnC,yDAAyD;IACzD,IAAI,EAAE,MAAM,CAAC;IACb,8DAA8D;IAC9D,YAAY,EAAE,MAAM,CAAC;IACrB,gFAAgF;IAChF,OAAO,EAAE,MAAM,CAAC;IAChB,iEAAiE;IACjE,OAAO,EAAE,OAAO,CAAC;IACjB,+DAA+D;IAC/D,KAAK,EAAE,cAAc,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,4EAA4E;IAC5E,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;IACzC,2EAA2E;IAC3E,QAAQ,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,cAAc,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC3D;AAED,gFAAgF;AAChF,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGnD;AAMD,2EAA2E;AAC3E,wBAAgB,mCAAmC,CAAC,IAAI,EAAE,uBAAuB,GAAG,OAAO,CAI1F;AAED;;;;GAIG;AACH,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,SAAS,uBAAuB,EAAE,GAC5C,OAAO,CAAC,gBAAgB,CAAC,CAwF3B"}
|
|
@@ -9,7 +9,7 @@ import { extname, resolve, sep } from "node:path";
|
|
|
9
9
|
import ts from "typescript";
|
|
10
10
|
import { replaceInlineMarker } from "./replacement.js";
|
|
11
11
|
/** Extensions that participate in combined TypeScript program validation. */
|
|
12
|
-
export const PROJECT_VALIDATION_EXTENSIONS = new Set([".ts", ".tsx", ".js", ".jsx", ".mjs", ".cjs"]);
|
|
12
|
+
export const PROJECT_VALIDATION_EXTENSIONS = new Set([".ts", ".tsx", ".mts", ".cts", ".js", ".jsx", ".mjs", ".cjs"]);
|
|
13
13
|
/** Canonical map key for absolute paths, honoring platform case sensitivity. */
|
|
14
14
|
export function overlayPathKey(path) {
|
|
15
15
|
const normalized = resolve(path).split(sep).join("/");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"candidate-overlay.js","sourceRoot":"","sources":["../../../src/agents/direct/candidate-overlay.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAGvD,6EAA6E;AAC7E,MAAM,CAAC,MAAM,6BAA6B,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"candidate-overlay.js","sourceRoot":"","sources":["../../../src/agents/direct/candidate-overlay.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,7 +9,7 @@ export class DirectCandidateValidationError extends Error {
|
|
|
9
9
|
this.name = "DirectCandidateValidationError";
|
|
10
10
|
}
|
|
11
11
|
}
|
|
12
|
-
const TYPESCRIPT_EXTENSIONS = new Set([".ts", ".tsx", ".js", ".jsx", ".mjs", ".cjs"]);
|
|
12
|
+
const TYPESCRIPT_EXTENSIONS = new Set([".ts", ".tsx", ".mts", ".cts", ".js", ".jsx", ".mjs", ".cjs"]);
|
|
13
13
|
// Delimiter balancing misreads prose-bearing markup: apostrophes in HTML text
|
|
14
14
|
// and unquoted `url(https://…)` in CSS are legal but read as unterminated
|
|
15
15
|
// strings/comments. These outputs keep only the fence and non-empty gates.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"candidate-validation.js","sourceRoot":"","sources":["../../../src/agents/direct/candidate-validation.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAGvD,MAAM,OAAO,8BAA+B,SAAQ,KAAK;IACvD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,gCAAgC,CAAC;IAC/C,CAAC;CACF;AAED,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"candidate-validation.js","sourceRoot":"","sources":["../../../src/agents/direct/candidate-validation.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
import type { HumanFileExtensionConfig } from "../../core/types.ts";
|
|
1
2
|
import type { ConversionUnit, DirectDiscoveryResult } from "./types.ts";
|
|
2
3
|
/** Bounded direct-path file walk, shared with combined project validation. */
|
|
3
4
|
export declare function walkDirectFiles(root: string): Promise<string[]>;
|
|
4
5
|
/** Discover units plus actionable notices for marker text that cannot run safely. */
|
|
5
|
-
export declare function discoverDirectUnits(root: string, language: string | readonly string[]): Promise<DirectDiscoveryResult>;
|
|
6
|
+
export declare function discoverDirectUnits(root: string, language: string | readonly string[], humanFileExtensions?: readonly HumanFileExtensionConfig[]): Promise<DirectDiscoveryResult>;
|
|
6
7
|
/** Compatibility helper returning only runnable units. */
|
|
7
|
-
export declare function discoverUnits(root: string, language: string | readonly string[]): Promise<ConversionUnit[]>;
|
|
8
|
+
export declare function discoverUnits(root: string, language: string | readonly string[], humanFileExtensions?: readonly HumanFileExtensionConfig[]): Promise<ConversionUnit[]>;
|
|
8
9
|
//# sourceMappingURL=discovery.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../../src/agents/direct/discovery.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../../src/agents/direct/discovery.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,KAAK,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAoCxE,8EAA8E;AAC9E,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAErE;AAED,qFAAqF;AACrF,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,EACpC,mBAAmB,GAAE,SAAS,wBAAwB,EAAO,GAC5D,OAAO,CAAC,qBAAqB,CAAC,CAgKhC;AAED,0DAA0D;AAC1D,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,EACpC,mBAAmB,GAAE,SAAS,wBAAwB,EAAO,GAC5D,OAAO,CAAC,cAAc,EAAE,CAAC,CAE3B"}
|
|
@@ -4,7 +4,8 @@ import { inferUnitLanguage } from "./language-inference.js";
|
|
|
4
4
|
import { languageForExtension, languageProfile } from "./languages.js";
|
|
5
5
|
import { extractInlineMarkers } from "./marker-parser.js";
|
|
6
6
|
const SCANNED_EXTENSIONS = new Set([
|
|
7
|
-
".ts", ".tsx", ".js", ".jsx", ".mjs", ".cjs",
|
|
7
|
+
".ts", ".tsx", ".mts", ".cts", ".js", ".jsx", ".mjs", ".cjs",
|
|
8
|
+
".html", ".htm", ".css",
|
|
8
9
|
".py", ".rs", ".go", ".java", ".rb", ".cs", ".cpp", ".cc", ".c", ".h", ".hpp",
|
|
9
10
|
]);
|
|
10
11
|
const DEFAULT_IGNORES = new Set([
|
|
@@ -45,12 +46,24 @@ export async function walkDirectFiles(root) {
|
|
|
45
46
|
return walk(resolve(root), DEFAULT_IGNORES);
|
|
46
47
|
}
|
|
47
48
|
/** Discover units plus actionable notices for marker text that cannot run safely. */
|
|
48
|
-
export async function discoverDirectUnits(root, language) {
|
|
49
|
+
export async function discoverDirectUnits(root, language, humanFileExtensions = []) {
|
|
49
50
|
const absoluteRoot = resolve(root);
|
|
50
51
|
const languages = (typeof language === "string" ? [language] : [...language])
|
|
51
52
|
.map((entry) => entry.trim().toLowerCase());
|
|
52
53
|
const primary = languages[0] ?? "typescript";
|
|
53
54
|
const configured = new Set(languages);
|
|
55
|
+
const configuredExtensionByPath = new Map();
|
|
56
|
+
for (const mapping of humanFileExtensions) {
|
|
57
|
+
if (configuredExtensionByPath.has(mapping.path)) {
|
|
58
|
+
throw new Error(`Duplicate configured .human path: ${mapping.path}`);
|
|
59
|
+
}
|
|
60
|
+
const extension = mapping.extension.replace(/^\./u, "").toLowerCase();
|
|
61
|
+
const mappedLanguage = languageForExtension(extension);
|
|
62
|
+
if (mappedLanguage === undefined || !configured.has(mappedLanguage)) {
|
|
63
|
+
throw new Error(`Configured extension .${extension} for ${mapping.path} does not select an enabled language.`);
|
|
64
|
+
}
|
|
65
|
+
configuredExtensionByPath.set(mapping.path, extension);
|
|
66
|
+
}
|
|
54
67
|
const files = await walk(absoluteRoot, DEFAULT_IGNORES);
|
|
55
68
|
const units = [];
|
|
56
69
|
const notices = [];
|
|
@@ -67,22 +80,61 @@ export async function discoverDirectUnits(root, language) {
|
|
|
67
80
|
catch {
|
|
68
81
|
continue;
|
|
69
82
|
}
|
|
70
|
-
const
|
|
83
|
+
const rawPrompt = content.trim();
|
|
84
|
+
if (rawPrompt.length === 0)
|
|
85
|
+
continue;
|
|
86
|
+
const lines = rawPrompt.split(/\r?\n/u);
|
|
87
|
+
const declaredExtension = lines[0]?.trim().replace(/^\./u, "").toLowerCase() ?? "";
|
|
88
|
+
const declaredLanguage = languageForExtension(declaredExtension);
|
|
89
|
+
const configuredExtension = configuredExtensionByPath.get(rel);
|
|
90
|
+
const configuredLanguage = configuredExtension === undefined
|
|
91
|
+
? undefined
|
|
92
|
+
: languageForExtension(configuredExtension);
|
|
93
|
+
if (configuredLanguage !== undefined
|
|
94
|
+
&& declaredLanguage !== undefined
|
|
95
|
+
&& configuredLanguage !== declaredLanguage) {
|
|
96
|
+
notices.push({
|
|
97
|
+
code: "EXTENSION_CONFLICT",
|
|
98
|
+
sourcePath: rel,
|
|
99
|
+
message: `${rel} was skipped because config selects .${configuredExtension} but its first line declares .${declaredExtension}.`,
|
|
100
|
+
});
|
|
101
|
+
continue;
|
|
102
|
+
}
|
|
103
|
+
if (configuredLanguage === undefined
|
|
104
|
+
&& declaredLanguage !== undefined
|
|
105
|
+
&& !configured.has(declaredLanguage)) {
|
|
106
|
+
notices.push({
|
|
107
|
+
code: "UNCONFIGURED_EXTENSION",
|
|
108
|
+
sourcePath: rel,
|
|
109
|
+
message: `${rel} was skipped because its first line declares .${declaredExtension}, whose language is not enabled in config.languages.`,
|
|
110
|
+
});
|
|
111
|
+
continue;
|
|
112
|
+
}
|
|
113
|
+
const prompt = declaredLanguage === undefined
|
|
114
|
+
? rawPrompt
|
|
115
|
+
: lines.slice(1).join("\n").trim();
|
|
71
116
|
if (prompt.length === 0)
|
|
72
117
|
continue;
|
|
73
|
-
//
|
|
74
|
-
//
|
|
75
|
-
//
|
|
76
|
-
// primary language, so `styles.human` is not written as `styles.ts`.
|
|
118
|
+
// Explicit config and first-line declarations outrank filename and text
|
|
119
|
+
// inference. A recognized inner extension remains authoritative when
|
|
120
|
+
// neither higher-priority route is present.
|
|
77
121
|
const stem = rel.slice(0, -".human".length);
|
|
78
|
-
const
|
|
122
|
+
const innerExtension = extname(stem);
|
|
123
|
+
const innerLanguage = languageForExtension(innerExtension);
|
|
79
124
|
const routed = innerLanguage !== undefined && configured.has(innerLanguage);
|
|
80
|
-
const unitLanguage =
|
|
81
|
-
|
|
82
|
-
: inferUnitLanguage(basename(stem), prompt, languages);
|
|
83
|
-
const
|
|
84
|
-
?
|
|
85
|
-
|
|
125
|
+
const unitLanguage = configuredLanguage
|
|
126
|
+
?? declaredLanguage
|
|
127
|
+
?? (routed ? innerLanguage : inferUnitLanguage(basename(stem), prompt, languages));
|
|
128
|
+
const explicitExtension = configuredExtension
|
|
129
|
+
?? (declaredLanguage === undefined ? undefined : declaredExtension);
|
|
130
|
+
const outputBase = explicitExtension !== undefined && innerLanguage !== undefined
|
|
131
|
+
? stem.slice(0, -innerExtension.length)
|
|
132
|
+
: stem;
|
|
133
|
+
const outputPath = explicitExtension !== undefined
|
|
134
|
+
? `${outputBase}.${explicitExtension}`
|
|
135
|
+
: routed
|
|
136
|
+
? stem
|
|
137
|
+
: `${stem}.${languageProfile(unitLanguage).ext}`;
|
|
86
138
|
try {
|
|
87
139
|
await stat(join(absoluteRoot, ...outputPath.split("/")));
|
|
88
140
|
notices.push({
|
|
@@ -142,7 +194,7 @@ export async function discoverDirectUnits(root, language) {
|
|
|
142
194
|
}
|
|
143
195
|
if (!content.includes("@human"))
|
|
144
196
|
continue;
|
|
145
|
-
for (const marker of extractInlineMarkers(content)) {
|
|
197
|
+
for (const marker of extractInlineMarkers(content, rel)) {
|
|
146
198
|
const line = content.slice(0, marker.start).split("\n").length;
|
|
147
199
|
units.push({
|
|
148
200
|
kind: "inline",
|
|
@@ -160,7 +212,7 @@ export async function discoverDirectUnits(root, language) {
|
|
|
160
212
|
return { units, notices };
|
|
161
213
|
}
|
|
162
214
|
/** Compatibility helper returning only runnable units. */
|
|
163
|
-
export async function discoverUnits(root, language) {
|
|
164
|
-
return (await discoverDirectUnits(root, language)).units;
|
|
215
|
+
export async function discoverUnits(root, language, humanFileExtensions = []) {
|
|
216
|
+
return (await discoverDirectUnits(root, language, humanFileExtensions)).units;
|
|
165
217
|
}
|
|
166
218
|
//# sourceMappingURL=discovery.js.map
|
|
@@ -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,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"discovery.js","sourceRoot":"","sources":["../../../src/agents/direct/discovery.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,5 +2,6 @@ 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
|
+
/** File extension (with or without a leading dot) -> owning config language. */
|
|
5
6
|
export declare function languageForExtension(extension: string): string | undefined;
|
|
6
7
|
//# sourceMappingURL=languages.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"languages.d.ts","sourceRoot":"","sources":["../../../src/agents/direct/languages.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"languages.d.ts","sourceRoot":"","sources":["../../../src/agents/direct/languages.ts"],"names":[],"mappings":"AACA,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;AAED,gFAAgF;AAChF,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAE1E"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { languageForCodeExtension } from "../../core/languages.js";
|
|
1
2
|
/** Operator-declared config language -> output extension and prompt label. */
|
|
2
3
|
export const LANGUAGE_PROFILES = {
|
|
3
4
|
typescript: { ext: "ts", label: "TypeScript" },
|
|
@@ -17,14 +18,7 @@ export function languageProfile(language) {
|
|
|
17
18
|
return LANGUAGE_PROFILES[language.trim().toLowerCase()] ?? { ext: "txt", label: language };
|
|
18
19
|
}
|
|
19
20
|
/** 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
21
|
export function languageForExtension(extension) {
|
|
28
|
-
return
|
|
22
|
+
return languageForCodeExtension(extension);
|
|
29
23
|
}
|
|
30
24
|
//# sourceMappingURL=languages.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"languages.js","sourceRoot":"","sources":["../../../src/agents/direct/languages.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"languages.js","sourceRoot":"","sources":["../../../src/agents/direct/languages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAGnE,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,UAAU,oBAAoB,CAAC,SAAiB;IACpD,OAAO,wBAAwB,CAAC,SAAS,CAAC,CAAC;AAC7C,CAAC"}
|
|
@@ -4,5 +4,5 @@ export interface InlineMarker {
|
|
|
4
4
|
end: number;
|
|
5
5
|
}
|
|
6
6
|
/** Find every lexical `@human` comment marker with its exact character range. */
|
|
7
|
-
export declare function extractInlineMarkers(text: string): InlineMarker[];
|
|
7
|
+
export declare function extractInlineMarkers(text: string, sourcePath?: string): InlineMarker[];
|
|
8
8
|
//# sourceMappingURL=marker-parser.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"marker-parser.d.ts","sourceRoot":"","sources":["../../../src/agents/direct/marker-parser.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb;
|
|
1
|
+
{"version":3,"file":"marker-parser.d.ts","sourceRoot":"","sources":["../../../src/agents/direct/marker-parser.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb;AAkLD,iFAAiF;AACjF,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,SAAK,GAAG,YAAY,EAAE,CAiClF"}
|
|
@@ -21,24 +21,139 @@ function lineEnd(text, start) {
|
|
|
21
21
|
const newline = text.indexOf("\n", start);
|
|
22
22
|
return newline === -1 ? text.length : newline;
|
|
23
23
|
}
|
|
24
|
+
function endOfHtmlAttributeQuotedRegion(text, start) {
|
|
25
|
+
const quote = text[start];
|
|
26
|
+
let offset = start + 1;
|
|
27
|
+
while (offset < text.length) {
|
|
28
|
+
if (text[offset] === quote)
|
|
29
|
+
return offset + 1;
|
|
30
|
+
offset += 1;
|
|
31
|
+
}
|
|
32
|
+
return text.length;
|
|
33
|
+
}
|
|
24
34
|
function blockMarkerPrompt(content) {
|
|
25
35
|
const ordinary = /^\s*@human\b[ \t]*([\s\S]*)$/u.exec(content);
|
|
26
36
|
if (ordinary)
|
|
27
37
|
return (ordinary[1] ?? "").trim() || undefined;
|
|
28
|
-
//
|
|
29
|
-
//
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
const normalized =
|
|
33
|
-
.slice(1)
|
|
38
|
+
// Remove only conventional multiline `*` decoration. This covers JSDoc
|
|
39
|
+
// (`/**`) and decorated ordinary block comments (`/*\n * ...`) while prose
|
|
40
|
+
// before @human remains non-instruction text.
|
|
41
|
+
const decoratedContent = content.startsWith("*") ? content.slice(1) : content;
|
|
42
|
+
const normalized = decoratedContent
|
|
34
43
|
.split(/\r?\n/u)
|
|
35
44
|
.map((line) => line.replace(/^\s*\*?[ \t]?/u, ""))
|
|
36
45
|
.join("\n");
|
|
37
46
|
const jsdoc = /^\s*@human\b[ \t]*([\s\S]*)$/u.exec(normalized);
|
|
38
47
|
return (jsdoc?.[1] ?? "").trim() || undefined;
|
|
39
48
|
}
|
|
49
|
+
function pushLineMarker(markers, text, start, openerLength) {
|
|
50
|
+
const end = lineEnd(text, start);
|
|
51
|
+
const match = /^[ \t]*@human\b[ \t]*([^\r]*)$/u.exec(text.slice(start + openerLength, end));
|
|
52
|
+
const prompt = (match?.[1] ?? "").trim();
|
|
53
|
+
if (match && prompt.length > 0)
|
|
54
|
+
markers.push({ prompt, start, end });
|
|
55
|
+
return end;
|
|
56
|
+
}
|
|
57
|
+
function pushBlockMarker(markers, text, start, opener, closer) {
|
|
58
|
+
const close = text.indexOf(closer, start + opener.length);
|
|
59
|
+
const end = close === -1 ? text.length : close + closer.length;
|
|
60
|
+
if (close !== -1) {
|
|
61
|
+
const prompt = blockMarkerPrompt(text.slice(start + opener.length, close));
|
|
62
|
+
if (prompt)
|
|
63
|
+
markers.push({ prompt, start, end });
|
|
64
|
+
}
|
|
65
|
+
return end;
|
|
66
|
+
}
|
|
67
|
+
function htmlTagStart(text, offset) {
|
|
68
|
+
const match = /^<\s*(\/?)\s*([A-Za-z][A-Za-z0-9:-]*)\b/u.exec(text.slice(offset));
|
|
69
|
+
if (!match)
|
|
70
|
+
return undefined;
|
|
71
|
+
return {
|
|
72
|
+
end: offset + match[0].length,
|
|
73
|
+
name: match[2].toLowerCase(),
|
|
74
|
+
closing: match[1] === "/",
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* HTML needs tag-aware quote handling: apostrophes in visible text are not
|
|
79
|
+
* string delimiters, while comment-shaped text inside quoted attributes and
|
|
80
|
+
* embedded script/style strings must stay inert.
|
|
81
|
+
*/
|
|
82
|
+
function extractHtmlInlineMarkers(text) {
|
|
83
|
+
const markers = [];
|
|
84
|
+
let offset = 0;
|
|
85
|
+
let inTag = false;
|
|
86
|
+
let tagStart = 0;
|
|
87
|
+
let pendingTag;
|
|
88
|
+
let rawTextTag;
|
|
89
|
+
while (offset < text.length) {
|
|
90
|
+
if (inTag) {
|
|
91
|
+
const character = text[offset];
|
|
92
|
+
if (character === "'" || character === '"') {
|
|
93
|
+
offset = endOfHtmlAttributeQuotedRegion(text, offset);
|
|
94
|
+
continue;
|
|
95
|
+
}
|
|
96
|
+
if (character === ">") {
|
|
97
|
+
const selfClosing = /\/\s*$/u.test(text.slice(tagStart, offset));
|
|
98
|
+
if (pendingTag?.name === "script" || pendingTag?.name === "style") {
|
|
99
|
+
if (pendingTag.closing)
|
|
100
|
+
rawTextTag = undefined;
|
|
101
|
+
else if (!selfClosing)
|
|
102
|
+
rawTextTag = pendingTag.name;
|
|
103
|
+
}
|
|
104
|
+
inTag = false;
|
|
105
|
+
pendingTag = undefined;
|
|
106
|
+
}
|
|
107
|
+
offset += 1;
|
|
108
|
+
continue;
|
|
109
|
+
}
|
|
110
|
+
if (text.startsWith("<!--", offset)) {
|
|
111
|
+
offset = pushBlockMarker(markers, text, offset, "<!--", "-->");
|
|
112
|
+
continue;
|
|
113
|
+
}
|
|
114
|
+
if (rawTextTag !== undefined) {
|
|
115
|
+
const closing = htmlTagStart(text, offset);
|
|
116
|
+
if (closing?.closing === true && closing.name === rawTextTag) {
|
|
117
|
+
inTag = true;
|
|
118
|
+
tagStart = offset;
|
|
119
|
+
pendingTag = closing;
|
|
120
|
+
offset = closing.end;
|
|
121
|
+
continue;
|
|
122
|
+
}
|
|
123
|
+
const character = text[offset];
|
|
124
|
+
if (character === "'" || character === '"' || character === "`") {
|
|
125
|
+
offset = endOfQuotedRegion(text, offset);
|
|
126
|
+
continue;
|
|
127
|
+
}
|
|
128
|
+
if (rawTextTag === "script" && text.startsWith("//", offset)) {
|
|
129
|
+
offset = pushLineMarker(markers, text, offset, 2);
|
|
130
|
+
continue;
|
|
131
|
+
}
|
|
132
|
+
if (text.startsWith("/*", offset)) {
|
|
133
|
+
offset = pushBlockMarker(markers, text, offset, "/*", "*/");
|
|
134
|
+
continue;
|
|
135
|
+
}
|
|
136
|
+
offset += 1;
|
|
137
|
+
continue;
|
|
138
|
+
}
|
|
139
|
+
if (text[offset] === "<") {
|
|
140
|
+
const tag = htmlTagStart(text, offset);
|
|
141
|
+
if (tag !== undefined) {
|
|
142
|
+
inTag = true;
|
|
143
|
+
tagStart = offset;
|
|
144
|
+
pendingTag = tag;
|
|
145
|
+
offset = tag.end;
|
|
146
|
+
continue;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
offset += 1;
|
|
150
|
+
}
|
|
151
|
+
return markers;
|
|
152
|
+
}
|
|
40
153
|
/** Find every lexical `@human` comment marker with its exact character range. */
|
|
41
|
-
export function extractInlineMarkers(text) {
|
|
154
|
+
export function extractInlineMarkers(text, sourcePath = "") {
|
|
155
|
+
if (/\.html?$/iu.test(sourcePath))
|
|
156
|
+
return extractHtmlInlineMarkers(text);
|
|
42
157
|
const markers = [];
|
|
43
158
|
let offset = 0;
|
|
44
159
|
while (offset < text.length) {
|
|
@@ -48,32 +163,15 @@ export function extractInlineMarkers(text) {
|
|
|
48
163
|
continue;
|
|
49
164
|
}
|
|
50
165
|
if (text.startsWith("//", offset)) {
|
|
51
|
-
|
|
52
|
-
const match = /^[ \t]*@human\b[ \t]*([^\r]*)$/u.exec(text.slice(offset + 2, end));
|
|
53
|
-
const prompt = (match?.[1] ?? "").trim();
|
|
54
|
-
if (match && prompt.length > 0)
|
|
55
|
-
markers.push({ prompt, start: offset, end });
|
|
56
|
-
offset = end;
|
|
166
|
+
offset = pushLineMarker(markers, text, offset, 2);
|
|
57
167
|
continue;
|
|
58
168
|
}
|
|
59
169
|
if (text.startsWith("/*", offset)) {
|
|
60
|
-
|
|
61
|
-
const end = close === -1 ? text.length : close + 2;
|
|
62
|
-
if (close !== -1) {
|
|
63
|
-
const prompt = blockMarkerPrompt(text.slice(offset + 2, close));
|
|
64
|
-
if (prompt)
|
|
65
|
-
markers.push({ prompt, start: offset, end });
|
|
66
|
-
}
|
|
67
|
-
offset = end;
|
|
170
|
+
offset = pushBlockMarker(markers, text, offset, "/*", "*/");
|
|
68
171
|
continue;
|
|
69
172
|
}
|
|
70
173
|
if (character === "#") {
|
|
71
|
-
|
|
72
|
-
const match = /^[ \t]*@human\b[ \t]*([^\r]*)$/u.exec(text.slice(offset + 1, end));
|
|
73
|
-
const prompt = (match?.[1] ?? "").trim();
|
|
74
|
-
if (match && prompt.length > 0)
|
|
75
|
-
markers.push({ prompt, start: offset, end });
|
|
76
|
-
offset = end;
|
|
174
|
+
offset = pushLineMarker(markers, text, offset, 1);
|
|
77
175
|
continue;
|
|
78
176
|
}
|
|
79
177
|
offset += 1;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"marker-parser.js","sourceRoot":"","sources":["../../../src/agents/direct/marker-parser.ts"],"names":[],"mappings":"AAMA,iFAAiF;AACjF,SAAS,iBAAiB,CAAC,IAAY,EAAE,KAAa;IACpD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAE,CAAC;IAC3B,MAAM,MAAM,GAAG,KAAK,KAAK,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACxE,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACnD,IAAI,MAAM,GAAG,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC;IAEtC,OAAO,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC5B,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;YAC1B,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAC3C,SAAS;QACX,CAAC;QACD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,CAAC;YAAE,OAAO,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;QACzE,IAAI,CAAC,MAAM,IAAI,KAAK,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC;YAAE,OAAO,MAAM,CAAC;QAChG,MAAM,IAAI,CAAC,CAAC;IACd,CAAC;IACD,OAAO,IAAI,CAAC,MAAM,CAAC;AACrB,CAAC;AAED,SAAS,OAAO,CAAC,IAAY,EAAE,KAAa;IAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC1C,OAAO,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;AAChD,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAe;IACxC,MAAM,QAAQ,GAAG,+BAA+B,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC/D,IAAI,QAAQ;QAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,SAAS,CAAC;IAE7D,
|
|
1
|
+
{"version":3,"file":"marker-parser.js","sourceRoot":"","sources":["../../../src/agents/direct/marker-parser.ts"],"names":[],"mappings":"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"}
|