human-to-code 0.1.19 → 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 +39 -8
- package/SECURITY.md +9 -8
- 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 +70 -12
- package/dist/agents/direct/discovery.js.map +1 -1
- package/dist/agents/direct/language-inference.d.ts +17 -0
- package/dist/agents/direct/language-inference.d.ts.map +1 -0
- package/dist/agents/direct/language-inference.js +95 -0
- package/dist/agents/direct/language-inference.js.map +1 -0
- 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/presentation.d.ts +1 -1
- package/dist/agents/direct/presentation.d.ts.map +1 -1
- package/dist/agents/direct/presentation.js +21 -5
- package/dist/agents/direct/presentation.js.map +1 -1
- package/dist/agents/direct/program-diagnostics.d.ts.map +1 -1
- package/dist/agents/direct/program-diagnostics.js +5 -2
- package/dist/agents/direct/program-diagnostics.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.d.ts.map +1 -1
- package/dist/cli.js +7 -2
- package/dist/cli.js.map +1 -1
- package/dist/config/config.d.ts.map +1 -1
- package/dist/config/config.js +51 -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
|
@@ -55,9 +55,9 @@ By default this runs the **direct converter**, not an instruction to rewrite the
|
|
|
55
55
|
|
|
56
56
|
1. Loads config and scans the project for `.human` files and inline `@human` markers, without importing application modules or executing project configuration.
|
|
57
57
|
2. Reports marker-shaped requests in unsupported file types and refuses a `.human` request whose sibling output already exists. Intentionally ignored directories and symlinks remain outside discovery.
|
|
58
|
-
3. Prints a receipt (
|
|
59
|
-
4. On confirmation, converts each item with one model completion per unit, extracts one unambiguous code block, and validates the complete candidate before writing. JavaScript and TypeScript use the TypeScript parser;
|
|
60
|
-
5. For JavaScript/TypeScript output, additionally stages every accepted unit into an in-memory candidate overlay and type-checks the combined candidate project with the TypeScript Compiler API — imports/exports, methods and properties, argument counts, literal unions, object shapes, readonly rules, and call compatibility across the generated files together. Diagnostics are compared against the unchanged baseline, so pre-existing project errors are never blamed on generated units. A dependency-connected group that introduces new cross-file errors receives at most one bounded repair request per whole-file unit (same provider and model); if it still fails
|
|
58
|
+
3. Prints a receipt (the output languages actually selected for this worklist, provider, model, and exact source-to-output paths) and asks for confirmation. Nothing is written until you confirm — or pass `-y`/`--yes`. If no request is found it returns `NEEDS_INPUT`.
|
|
59
|
+
4. On confirmation, converts each item with one model completion per unit, extracts one unambiguous code block, and validates the complete candidate before writing. JavaScript and TypeScript use the TypeScript parser; supported programming languages receive a deterministic structural syntax check. HTML and CSS receive the non-empty and code-fence gates because generic delimiter balancing misreads valid markup and stylesheet text. Inline validation compares the candidate with the original file and rejects only syntax errors introduced by that replacement, without blaming it for unchanged baseline errors.
|
|
60
|
+
5. For JavaScript/TypeScript output, additionally stages every accepted unit into an in-memory candidate overlay and type-checks the combined candidate project with the TypeScript Compiler API — imports/exports, methods and properties, argument counts, literal unions, object shapes, readonly rules, and call compatibility across the generated files together. Diagnostics are compared against the unchanged baseline, so pre-existing project errors are never blamed on generated units. A dependency-connected group that introduces new cross-file errors receives at most one bounded repair request per whole-file unit (same provider and model); if it still fails, every generated unit in that group is rejected before application while units proven independent may still apply. Other direct languages keep their per-file validation level.
|
|
61
61
|
6. Applies each accepted item defensively: new sibling files use exclusive creation, inline markers must still match the bytes found during discovery, and multi-line replacements inherit the marker's indentation. A failing or stale item is skipped with a reason rather than aborting the rest.
|
|
62
62
|
|
|
63
63
|
The direct converter writes code straight to the working tree. Its combined static compiler validation for JS/TS is stronger than syntax parsing, but it is still static analysis: it does **not** execute or import project code, run project builds or tests, prove runtime behavior or external-API grounding, execute code in a sandbox, create a `.strict.human.json` change contract, produce a `VERIFIED` run, or perform the guided pipeline's repository-wide secret scan — only the indexed declarations it attaches to an inline prompt as context are secret-scanned (a finding is `SECURITY_BLOCKED`). For the reviewed contract → grounding → sandbox-validation lifecycle — where the `.strict.human.json` contract and the `VERIFIED`/`apply`/`rollback` machinery live — use `human-to-code guided` (see [The reviewed change contract](#the-reviewed-change-contract) and the [CLI](#cli) table).
|
|
@@ -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.
|
|
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
|
|
package/SECURITY.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
`human-to-code` reads attacker-controlled repositories, sends selected evidence to an LLM provider, and may execute project validation commands. The project therefore treats repository content, model output, documentation, provider endpoints, and build/test tooling as untrusted.
|
|
4
4
|
|
|
5
|
-
Version `0.1.
|
|
5
|
+
Version `0.1.20` is a preview. The shipped ecosystem and provider/model combinations are not certified, so guided generated runs do not reach `VERIFIED` through the CLI and guided automatic application/rollback remain unreachable for normal generated runs. The default direct converter is a separate convenience path that writes accepted units to the working tree after confirmation; it never claims `VERIFIED`. Do not weaken either boundary to make a preview run appear successful.
|
|
6
6
|
|
|
7
7
|
## Trust boundaries
|
|
8
8
|
|
|
@@ -40,20 +40,21 @@ unchanged, and the TypeScript Compiler API type-checks the combined candidate
|
|
|
40
40
|
project against the unchanged baseline. Newly introduced cross-file
|
|
41
41
|
diagnostics (wrong imports/exports, missing members, argument counts, literal
|
|
42
42
|
unions, object shapes, readonly violations, incompatible calls) reject the
|
|
43
|
-
whole dependency-connected group; if safe isolation cannot
|
|
44
|
-
entire staged batch
|
|
45
|
-
unit may receive one bounded repair request using the same provider and model;
|
|
43
|
+
whole dependency-connected group during validation; if safe isolation cannot
|
|
44
|
+
be proven, the entire staged batch is rejected before application. A failing
|
|
45
|
+
whole-file unit may receive one bounded repair request using the same provider and model;
|
|
46
46
|
repair context contains only generated candidate content and normalized
|
|
47
|
-
compiler diagnostics, both treated as untrusted data
|
|
48
|
-
before it may leave the host. No project code is
|
|
49
|
-
project scripts run during this validation.
|
|
47
|
+
compiler diagnostics, both treated as untrusted data. Generated candidate
|
|
48
|
+
content is secret-scanned before it may leave the host. No project code is
|
|
49
|
+
imported or executed and no project scripts run during this validation.
|
|
50
50
|
|
|
51
51
|
These controls prevent the specific malformed-output, overwrite, stale-range,
|
|
52
52
|
indentation, and cross-file-contract failures they check. Static compilation
|
|
53
53
|
is stronger than syntax parsing, but it does not prove runtime behavior,
|
|
54
54
|
external-API grounding, project-wide security properties, or test success,
|
|
55
55
|
and it never executes the candidate in a sandbox or claims `VERIFIED`. Other
|
|
56
|
-
direct languages keep their per-file structural validation level
|
|
56
|
+
direct programming languages keep their per-file structural validation level;
|
|
57
|
+
HTML and CSS use only the non-empty and code-fence gates. Use the
|
|
57
58
|
guided contract and validation path when those stronger boundaries are
|
|
58
59
|
required.
|
|
59
60
|
|
|
@@ -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":"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,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAuBrH,gFAAgF;AAChF,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACtD,OAAO,EAAE,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;AAClF,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAY;IACzC,OAAO,6BAA6B,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AACxE,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,mCAAmC,CAAC,IAA6B;IAC/E,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC5E,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAW,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;IACxF,OAAO,qBAAqB,CAAC,MAAM,CAAC,CAAC;AACvC,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,IAAY,EACZ,SAA6C;IAE7C,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAgC,CAAC;IACtD,MAAM,QAAQ,GAAiC,EAAE,CAAC;IAClD,MAAM,aAAa,GAAG,SAAS,CAAC,MAAM,CAAC,mCAAmC,CAAC,CAAC;IAE5E,KAAK,MAAM,IAAI,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,EAAE,CAAC;QAC/E,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,UAAW,CAAC,CAAC;QAC7D,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,YAAY,GAAG,GAAG,CAAC,EAAE,CAAC;YACjD,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,kDAAkD,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;YACrG,SAAS;QACX,CAAC;QACD,IAAI,MAAM,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,YAAY,CAAC,CAAC;YACzB,MAAM,GAAG,IAAI,CAAC;QAChB,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,GAAG,KAAK,CAAC;QACjB,CAAC;QACD,IAAI,MAAM,EAAE,CAAC;YACX,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,mBAAmB,IAAI,CAAC,UAAU,uBAAuB,EAAE,CAAC,CAAC;YAC3F,SAAS;QACX,CAAC;QACD,MAAM,GAAG,GAAG,cAAc,CAAC,YAAY,CAAC,CAAC;QACzC,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACnB,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,kCAAkC,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;YACrF,SAAS;QACX,CAAC;QACD,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE;YACb,IAAI,EAAE,IAAI,CAAC,UAAW;YACtB,YAAY;YACZ,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI;YAChE,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,CAAC,IAAI,CAAC;SACd,CAAC,CAAC;IACL,CAAC;IAED,MAAM,YAAY,GAAG,IAAI,GAAG,EAAqC,CAAC;IAClE,KAAK,MAAM,IAAI,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,EAAE,CAAC;QACjF,MAAM,GAAG,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACrD,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QAC3C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClB,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAChC,CAAC;IACD,KAAK,MAAM,MAAM,IAAI,YAAY,CAAC,MAAM,EAAE,EAAE,CAAC;QAC3C,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAE,CAAC,IAAI,CAAC;QAC9B,IAAI,OAAe,CAAC;QACpB,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;QACzD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,MAAM,GAAG,kBAAkB,KAAK,CAAC,UAAU,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/G,KAAK,MAAM,IAAI,IAAI,MAAM;gBAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;YACtE,SAAS;QACX,CAAC;QACD,2EAA2E;QAC3E,yCAAyC;QACzC,MAAM,OAAO,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC;QAClH,MAAM,OAAO,GAAqB,EAAE,CAAC;QACrC,IAAI,MAAM,GAAG,KAAK,CAAC;QACnB,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACH,OAAO,GAAG,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,KAAM,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC9F,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,GAAG,IAAI,CAAC;gBACd,MAAM,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;gBACpG,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC;QACD,IAAI,MAAM,EAAE,CAAC;YACX,sEAAsE;YACtE,uEAAuE;YACvE,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;gBAC3B,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,gDAAgD,EAAE,CAAC,CAAC;YACtG,CAAC;YACD,SAAS;QACX,CAAC;QACD,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE;YAC9C,IAAI,EAAE,KAAK,CAAC,UAAU;YACtB,YAAY,EAAE,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC;YAC3C,OAAO;YACP,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,OAAO;SACf,CAAC,CAAC;IACL,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AACjD,CAAC"}
|
|
@@ -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":"
|
|
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"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { readdir, readFile, stat } from "node:fs/promises";
|
|
2
2
|
import { basename, extname, join, relative, resolve, sep } from "node:path";
|
|
3
|
+
import { inferUnitLanguage } from "./language-inference.js";
|
|
3
4
|
import { languageForExtension, languageProfile } from "./languages.js";
|
|
4
5
|
import { extractInlineMarkers } from "./marker-parser.js";
|
|
5
6
|
const SCANNED_EXTENSIONS = new Set([
|
|
6
|
-
".ts", ".tsx", ".js", ".jsx", ".mjs", ".cjs",
|
|
7
|
+
".ts", ".tsx", ".mts", ".cts", ".js", ".jsx", ".mjs", ".cjs",
|
|
8
|
+
".html", ".htm", ".css",
|
|
7
9
|
".py", ".rs", ".go", ".java", ".rb", ".cs", ".cpp", ".cc", ".c", ".h", ".hpp",
|
|
8
10
|
]);
|
|
9
11
|
const DEFAULT_IGNORES = new Set([
|
|
@@ -44,13 +46,24 @@ export async function walkDirectFiles(root) {
|
|
|
44
46
|
return walk(resolve(root), DEFAULT_IGNORES);
|
|
45
47
|
}
|
|
46
48
|
/** Discover units plus actionable notices for marker text that cannot run safely. */
|
|
47
|
-
export async function discoverDirectUnits(root, language) {
|
|
49
|
+
export async function discoverDirectUnits(root, language, humanFileExtensions = []) {
|
|
48
50
|
const absoluteRoot = resolve(root);
|
|
49
51
|
const languages = (typeof language === "string" ? [language] : [...language])
|
|
50
52
|
.map((entry) => entry.trim().toLowerCase());
|
|
51
53
|
const primary = languages[0] ?? "typescript";
|
|
52
54
|
const configured = new Set(languages);
|
|
53
|
-
const
|
|
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,16 +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
|
-
//
|
|
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.
|
|
75
121
|
const stem = rel.slice(0, -".human".length);
|
|
76
|
-
const
|
|
122
|
+
const innerExtension = extname(stem);
|
|
123
|
+
const innerLanguage = languageForExtension(innerExtension);
|
|
77
124
|
const routed = innerLanguage !== undefined && configured.has(innerLanguage);
|
|
78
|
-
const unitLanguage =
|
|
79
|
-
|
|
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}`;
|
|
80
138
|
try {
|
|
81
139
|
await stat(join(absoluteRoot, ...outputPath.split("/")));
|
|
82
140
|
notices.push({
|
|
@@ -136,7 +194,7 @@ export async function discoverDirectUnits(root, language) {
|
|
|
136
194
|
}
|
|
137
195
|
if (!content.includes("@human"))
|
|
138
196
|
continue;
|
|
139
|
-
for (const marker of extractInlineMarkers(content)) {
|
|
197
|
+
for (const marker of extractInlineMarkers(content, rel)) {
|
|
140
198
|
const line = content.slice(0, marker.start).split("\n").length;
|
|
141
199
|
units.push({
|
|
142
200
|
kind: "inline",
|
|
@@ -154,7 +212,7 @@ export async function discoverDirectUnits(root, language) {
|
|
|
154
212
|
return { units, notices };
|
|
155
213
|
}
|
|
156
214
|
/** Compatibility helper returning only runnable units. */
|
|
157
|
-
export async function discoverUnits(root, language) {
|
|
158
|
-
return (await discoverDirectUnits(root, language)).units;
|
|
215
|
+
export async function discoverUnits(root, language, humanFileExtensions = []) {
|
|
216
|
+
return (await discoverDirectUnits(root, language, humanFileExtensions)).units;
|
|
159
217
|
}
|
|
160
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,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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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Deterministic output-language inference for `.human` files.
|
|
3
|
+
*
|
|
4
|
+
* When an operator configures more than one target language, a bare
|
|
5
|
+
* `styles.human` must not silently inherit the primary language — that is what
|
|
6
|
+
* turns a website request into four TypeScript files. Inference is signal
|
|
7
|
+
* based and never a model call, so the receipt shown before confirmation is
|
|
8
|
+
* reproducible: an explicit language named in the request wins, then filename
|
|
9
|
+
* convention, then request vocabulary. No signal keeps the primary language.
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Choose the output language for one `.human` request. `configured` is the
|
|
13
|
+
* operator's list with the primary first; ties resolve toward the earlier
|
|
14
|
+
* entry, so the primary language always wins an inconclusive comparison.
|
|
15
|
+
*/
|
|
16
|
+
export declare function inferUnitLanguage(fileStem: string, request: string, configured: readonly string[]): string;
|
|
17
|
+
//# sourceMappingURL=language-inference.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"language-inference.d.ts","sourceRoot":"","sources":["../../../src/agents/direct/language-inference.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AA0DH;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,SAAS,MAAM,EAAE,GAC5B,MAAM,CA6BR"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Deterministic output-language inference for `.human` files.
|
|
3
|
+
*
|
|
4
|
+
* When an operator configures more than one target language, a bare
|
|
5
|
+
* `styles.human` must not silently inherit the primary language — that is what
|
|
6
|
+
* turns a website request into four TypeScript files. Inference is signal
|
|
7
|
+
* based and never a model call, so the receipt shown before confirmation is
|
|
8
|
+
* reproducible: an explicit language named in the request wins, then filename
|
|
9
|
+
* convention, then request vocabulary. No signal keeps the primary language.
|
|
10
|
+
*/
|
|
11
|
+
/** An unambiguous language name in the request text, e.g. "in html". */
|
|
12
|
+
const EXPLICIT_MENTIONS = [
|
|
13
|
+
["typescript", /\btypescript\b|\bts\b/u],
|
|
14
|
+
["javascript", /\bjavascript\b|\bvanilla\s+js\b|\bes6\b|\bjs\b/u],
|
|
15
|
+
["html", /\bhtml5?\b|\bmarkup\b/u],
|
|
16
|
+
["css", /\bcss3?\b|\bstylesheet\b/u],
|
|
17
|
+
["python", /\bpython\b/u],
|
|
18
|
+
["rust", /\brust\b/u],
|
|
19
|
+
];
|
|
20
|
+
/**
|
|
21
|
+
* When a request names more than one language, prefer the one described as
|
|
22
|
+
* the output. This makes instructions such as "convert JavaScript to
|
|
23
|
+
* TypeScript" deterministic without allowing a weaker vocabulary score to
|
|
24
|
+
* override an otherwise unambiguous explicit language name.
|
|
25
|
+
*/
|
|
26
|
+
const OUTPUT_MENTIONS = {
|
|
27
|
+
typescript: /\b(?:as|in|into|to|using|with)\s+(?:plain\s+)?typescript\b|\btypescript\s+(?:code|file|module|output)\b/u,
|
|
28
|
+
javascript: /\b(?:as|in|into|to|using|with)\s+(?:plain\s+|vanilla\s+)?(?:javascript|js)\b|\b(?:javascript|js)\s+(?:code|file|module|output)\b/u,
|
|
29
|
+
html: /\b(?:as|in|into|to|using|with)\s+(?:plain\s+)?html5?\b|\bhtml5?\s+(?:code|document|file|markup|output|page)\b/u,
|
|
30
|
+
css: /\b(?:as|in|into|to|using|with)\s+(?:plain\s+)?css3?\b|\bcss3?\s+(?:code|file|output|stylesheet)\b/u,
|
|
31
|
+
python: /\b(?:as|in|into|to|using|with)\s+(?:plain\s+)?python\b|\bpython\s+(?:code|file|module|output|script)\b/u,
|
|
32
|
+
rust: /\b(?:as|in|into|to|using|with)\s+(?:plain\s+)?rust\b|\brust\s+(?:code|file|module|output)\b/u,
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* Filename stems that conventionally belong to one language. `index` is
|
|
36
|
+
* deliberately absent: `index.html` and `index.ts` are equally idiomatic, so
|
|
37
|
+
* that name is decided by the request text instead.
|
|
38
|
+
*/
|
|
39
|
+
const STEM_CONVENTIONS = {
|
|
40
|
+
html: /^(?:home|homepage|page|landing|about|contact|layout|header|footer|nav|navbar|sidebar|template|markup)$/u,
|
|
41
|
+
css: /^(?:style|styles|styling|stylesheet|stylesheets|theme|themes|reset|typography|palette)$/u,
|
|
42
|
+
javascript: /^(?:script|scripts|app|client|bundle|main)$/u,
|
|
43
|
+
typescript: /^(?:script|scripts|app|client|bundle|main)$/u,
|
|
44
|
+
python: /^(?:main|app|script|scripts)$/u,
|
|
45
|
+
rust: /^(?:main|lib)$/u,
|
|
46
|
+
};
|
|
47
|
+
/** Request vocabulary that leans toward one language without naming it. */
|
|
48
|
+
const VOCABULARY = {
|
|
49
|
+
html: /\b(?:page|webpage|web\s+page|homepage|landing|section|hero|navbar|nav\s+bar|heading|headings|form|button|buttons|input|document|structure|semantic|div|body|head|meta\s+tags?|anchor|links?|lists?|tables?|accessib\w*|aria|seo|boilerplate|skeleton|layout)\b/gu,
|
|
50
|
+
css: /\b(?:styles?|styling|colou?rs?|fonts?|typography|spacing|padding|margins?|background|gradients?|shadows?|borders?|radius|responsive|media\s+quer\w+|breakpoints?|flexbox|flex|grid|animations?|transitions?|hover|dark\s+(?:mode|theme)|light\s+(?:mode|theme)|palette|themes?|centered|align\w*)\b/gu,
|
|
51
|
+
javascript: /\b(?:functions?|classes|class|handlers?|event\s+listeners?|listeners?|clicks?|fetch|api|async|await|promises?|variables?|const|let|return|algorithm|calculate|calculation|logic|sort|arrays?|objects?|modules?|export|import|states?|validate|validation|parse|loop|loops)\b/gu,
|
|
52
|
+
typescript: /\b(?:functions?|classes|class|interfaces?|types?|generics?|handlers?|event\s+listeners?|listeners?|clicks?|fetch|api|async|await|promises?|variables?|const|let|return|algorithm|calculate|calculation|logic|sort|arrays?|objects?|modules?|export|import|states?|validate|validation|parse|loop|loops)\b/gu,
|
|
53
|
+
python: /\b(?:functions?|classes|class|def|dict|dicts|lists?|tuples?|scripts?|api|async|await|algorithm|calculate|calculation|logic|sort|parse|loop|loops)\b/gu,
|
|
54
|
+
rust: /\b(?:functions?|structs?|traits?|enums?|impl|modules?|crates?|ownership|borrow\w*|algorithm|calculate|calculation|logic|sort|parse|loop|loops)\b/gu,
|
|
55
|
+
};
|
|
56
|
+
function countMatches(pattern, text) {
|
|
57
|
+
// Each language's vocabulary pattern is global; reset lastIndex so repeated
|
|
58
|
+
// inference calls cannot inherit a previous match position.
|
|
59
|
+
pattern.lastIndex = 0;
|
|
60
|
+
return [...text.matchAll(pattern)].length;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Choose the output language for one `.human` request. `configured` is the
|
|
64
|
+
* operator's list with the primary first; ties resolve toward the earlier
|
|
65
|
+
* entry, so the primary language always wins an inconclusive comparison.
|
|
66
|
+
*/
|
|
67
|
+
export function inferUnitLanguage(fileStem, request, configured) {
|
|
68
|
+
const primary = configured[0] ?? "typescript";
|
|
69
|
+
if (configured.length < 2)
|
|
70
|
+
return primary;
|
|
71
|
+
const stem = fileStem.trim().toLowerCase();
|
|
72
|
+
const text = request.toLowerCase();
|
|
73
|
+
const explicitlyNamed = configured.filter((language) => EXPLICIT_MENTIONS.find(([name]) => name === language)?.[1].test(text) === true);
|
|
74
|
+
if (explicitlyNamed.length === 1)
|
|
75
|
+
return explicitlyNamed[0];
|
|
76
|
+
if (explicitlyNamed.length > 1) {
|
|
77
|
+
const outputLanguage = explicitlyNamed.find((language) => OUTPUT_MENTIONS[language]?.test(text));
|
|
78
|
+
return outputLanguage ?? explicitlyNamed[0];
|
|
79
|
+
}
|
|
80
|
+
const conventional = configured.filter((language) => STEM_CONVENTIONS[language]?.test(stem) === true);
|
|
81
|
+
if (conventional.length === 1)
|
|
82
|
+
return conventional[0];
|
|
83
|
+
let best = primary;
|
|
84
|
+
let bestScore = 0;
|
|
85
|
+
for (const language of configured) {
|
|
86
|
+
const vocabulary = VOCABULARY[language];
|
|
87
|
+
const score = vocabulary ? countMatches(vocabulary, text) : 0;
|
|
88
|
+
if (score > bestScore) {
|
|
89
|
+
best = language;
|
|
90
|
+
bestScore = score;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
return bestScore > 0 ? best : primary;
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=language-inference.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"language-inference.js","sourceRoot":"","sources":["../../../src/agents/direct/language-inference.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"}
|