human-to-code 0.1.26 → 0.1.28

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.
Files changed (75) hide show
  1. package/Readme.md +58 -38
  2. package/dist/agents/direct/discovery.d.ts.map +1 -1
  3. package/dist/agents/direct/discovery.js +8 -6
  4. package/dist/agents/direct/discovery.js.map +1 -1
  5. package/dist/agents/direct/file-memory.d.ts.map +1 -1
  6. package/dist/agents/direct/file-memory.js +70 -1
  7. package/dist/agents/direct/file-memory.js.map +1 -1
  8. package/dist/agents/direct/generation-client.d.ts +10 -0
  9. package/dist/agents/direct/generation-client.d.ts.map +1 -1
  10. package/dist/agents/direct/generation-client.js +19 -0
  11. package/dist/agents/direct/generation-client.js.map +1 -1
  12. package/dist/agents/direct/index.d.ts +3 -0
  13. package/dist/agents/direct/index.d.ts.map +1 -1
  14. package/dist/agents/direct/index.js +3 -0
  15. package/dist/agents/direct/index.js.map +1 -1
  16. package/dist/agents/direct/languages.d.ts +11 -0
  17. package/dist/agents/direct/languages.d.ts.map +1 -1
  18. package/dist/agents/direct/languages.js +19 -0
  19. package/dist/agents/direct/languages.js.map +1 -1
  20. package/dist/agents/direct/presentation.d.ts +20 -0
  21. package/dist/agents/direct/presentation.d.ts.map +1 -1
  22. package/dist/agents/direct/presentation.js +33 -3
  23. package/dist/agents/direct/presentation.js.map +1 -1
  24. package/dist/agents/direct/project-blueprint.d.ts +29 -0
  25. package/dist/agents/direct/project-blueprint.d.ts.map +1 -0
  26. package/dist/agents/direct/project-blueprint.js +170 -0
  27. package/dist/agents/direct/project-blueprint.js.map +1 -0
  28. package/dist/agents/direct/project-contracts.d.ts +34 -0
  29. package/dist/agents/direct/project-contracts.d.ts.map +1 -1
  30. package/dist/agents/direct/project-contracts.js +59 -42
  31. package/dist/agents/direct/project-contracts.js.map +1 -1
  32. package/dist/agents/direct/project-memory.d.ts +6 -0
  33. package/dist/agents/direct/project-memory.d.ts.map +1 -1
  34. package/dist/agents/direct/project-memory.js +20 -0
  35. package/dist/agents/direct/project-memory.js.map +1 -1
  36. package/dist/agents/direct/reference-validation.d.ts +55 -0
  37. package/dist/agents/direct/reference-validation.d.ts.map +1 -0
  38. package/dist/agents/direct/reference-validation.js +415 -0
  39. package/dist/agents/direct/reference-validation.js.map +1 -0
  40. package/dist/agents/direct/types.d.ts +45 -0
  41. package/dist/agents/direct/types.d.ts.map +1 -1
  42. package/dist/agents/direct/unit-todos.d.ts +51 -0
  43. package/dist/agents/direct/unit-todos.d.ts.map +1 -0
  44. package/dist/agents/direct/unit-todos.js +223 -0
  45. package/dist/agents/direct/unit-todos.js.map +1 -0
  46. package/dist/cli.d.ts.map +1 -1
  47. package/dist/cli.js +147 -10
  48. package/dist/cli.js.map +1 -1
  49. package/dist/config/config.d.ts +22 -1
  50. package/dist/config/config.d.ts.map +1 -1
  51. package/dist/config/config.js +40 -6
  52. package/dist/config/config.js.map +1 -1
  53. package/dist/prompts/direct-blueprint.d.ts +19 -0
  54. package/dist/prompts/direct-blueprint.d.ts.map +1 -0
  55. package/dist/prompts/direct-blueprint.js +49 -0
  56. package/dist/prompts/direct-blueprint.js.map +1 -0
  57. package/dist/prompts/direct-conversion.d.ts +8 -0
  58. package/dist/prompts/direct-conversion.d.ts.map +1 -1
  59. package/dist/prompts/direct-conversion.js +26 -0
  60. package/dist/prompts/direct-conversion.js.map +1 -1
  61. package/dist/prompts/direct-todos.d.ts +17 -0
  62. package/dist/prompts/direct-todos.d.ts.map +1 -0
  63. package/dist/prompts/direct-todos.js +43 -0
  64. package/dist/prompts/direct-todos.js.map +1 -0
  65. package/dist/prompts/index.d.ts +2 -0
  66. package/dist/prompts/index.d.ts.map +1 -1
  67. package/dist/prompts/index.js +2 -0
  68. package/dist/prompts/index.js.map +1 -1
  69. package/dist/providers/provider.d.ts.map +1 -1
  70. package/dist/providers/provider.js +3 -1
  71. package/dist/providers/provider.js.map +1 -1
  72. package/docs/ARCHITECTURE.md +23 -6
  73. package/docs/CONFIGURATION.md +251 -0
  74. package/docs/MODULES.md +6 -3
  75. package/package.json +1 -1
@@ -7,10 +7,30 @@ export interface ConditionalRequestAllowance {
7
7
  integrationRepairUpTo: number;
8
8
  compilerRepairUpTo: number;
9
9
  }
10
+ /** Planning knobs the receipt needs; a subset of `direct.planning` config. */
11
+ export interface PlanningDisclosureOptions {
12
+ enabled: boolean;
13
+ projectBlueprint: boolean;
14
+ fileTodo: boolean;
15
+ markerTodo: boolean;
16
+ maxCodingPassesPerUnit: number;
17
+ }
18
+ export interface PlannedRequestCounts {
19
+ /** 0 or 1: the shared contract is skipped when there is nothing to agree. */
20
+ blueprint: number;
21
+ todo: number;
22
+ /** One per unit; refinement is conditional and reported separately. */
23
+ coding: number;
24
+ /** Additional coding requests only issued on a real todo coverage gap. */
25
+ refinementUpTo: number;
26
+ }
27
+ /** Exact planned request counts, for disclosure before the confirmation prompt. */
28
+ export declare function plannedRequestCounts(units: readonly ConversionUnit[], planning: PlanningDisclosureOptions): PlannedRequestCounts;
10
29
  /** Conservative opt-in request ceilings for pre-generation disclosure. */
11
30
  export declare function conditionalRequestAllowance(units: readonly ConversionUnit[], configuredLanguages: string | readonly string[]): ConditionalRequestAllowance;
12
31
  export declare function renderReceipt(units: readonly ConversionUnit[], provider: string, model: string, configuredLanguages: string | readonly string[], options?: {
13
32
  reconcileIntegrations?: boolean;
33
+ planning?: PlanningDisclosureOptions;
14
34
  }): string;
15
35
  export declare function stripCodeFence(output: string): string;
16
36
  //# sourceMappingURL=presentation.d.ts.map
@@ -1 +1 @@
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
+ {"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,8EAA8E;AAC9E,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,OAAO,CAAC;IACjB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,sBAAsB,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,oBAAoB;IACnC,6EAA6E;IAC7E,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,uEAAuE;IACvE,MAAM,EAAE,MAAM,CAAC;IACf,0EAA0E;IAC1E,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,mFAAmF;AACnF,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,SAAS,cAAc,EAAE,EAChC,QAAQ,EAAE,yBAAyB,GAClC,oBAAoB,CAYtB;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,CAAC;IAAC,QAAQ,CAAC,EAAE,yBAAyB,CAAA;CAAO,GACtF,MAAM,CAmER;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAWrD"}
@@ -6,6 +6,20 @@ export class ModelOutputError extends Error {
6
6
  this.name = "ModelOutputError";
7
7
  }
8
8
  }
9
+ /** Exact planned request counts, for disclosure before the confirmation prompt. */
10
+ export function plannedRequestCounts(units, planning) {
11
+ if (!planning.enabled) {
12
+ return { blueprint: 0, todo: units.length, coding: units.length, refinementUpTo: 0 };
13
+ }
14
+ const fileUnits = units.filter((unit) => unit.kind === "file").length;
15
+ const todo = units.filter((unit) => unit.kind === "file" ? planning.fileTodo : planning.markerTodo).length;
16
+ return {
17
+ blueprint: planning.projectBlueprint && fileUnits >= 2 ? 1 : 0,
18
+ todo,
19
+ coding: units.length,
20
+ refinementUpTo: todo * Math.max(0, planning.maxCodingPassesPerUnit - 1),
21
+ };
22
+ }
9
23
  /** Conservative opt-in request ceilings for pre-generation disclosure. */
10
24
  export function conditionalRequestAllowance(units, configuredLanguages) {
11
25
  const configured = typeof configuredLanguages === "string" ? [configuredLanguages] : configuredLanguages;
@@ -48,7 +62,20 @@ export function renderReceipt(units, provider, model, configuredLanguages, optio
48
62
  ? conditionalRequestAllowance(units, configured)
49
63
  : undefined;
50
64
  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.`
65
+ ? ` Additional: 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.`
66
+ : undefined;
67
+ const planning = options.planning;
68
+ const planned = planning === undefined ? undefined : plannedRequestCounts(units, planning);
69
+ const multiPass = planning?.enabled === true;
70
+ const plannedTotal = planned === undefined
71
+ ? units.length
72
+ : planned.blueprint + planned.todo + planned.coding;
73
+ const requestBreakdown = planned === undefined || !multiPass
74
+ ? `${units.length} planned`
75
+ : `${plannedTotal} planned (${planned.blueprint} shared contract, ${planned.todo} per-target todo,`
76
+ + ` ${planned.coding} coding)`;
77
+ const refinementDisclaimer = planned !== undefined && planned.refinementUpTo > 0
78
+ ? ` Additional: up to ${planned.refinementUpTo} completion request(s), only for targets whose todo list is not fully covered by the first pass.`
52
79
  : undefined;
53
80
  const lines = [
54
81
  "human-to-code — conversion receipt",
@@ -56,9 +83,12 @@ export function renderReceipt(units, provider, model, configuredLanguages, optio
56
83
  ` ${selected.length > 1 ? "Languages:" : "Language :"} ${rendered}`,
57
84
  ` Provider : ${provider}`,
58
85
  ` Model : ${model}`,
59
- ` Engine : direct (one model request per prompt; bounded cross-file repair may add requests)`,
86
+ ` Engine : ${multiPass
87
+ ? "direct (shared contract, per-target todo, then coding; bounded cross-file repair may add requests)"
88
+ : "direct (one model request per prompt; bounded cross-file repair may add requests)"}`,
60
89
  ` Context : compact current/projected ProjectMemory (target-specific, bounded)`,
61
- ` Requests : ${units.length} planned${options.reconcileIntegrations ? "" : repairAllowance}`,
90
+ ` Requests : ${requestBreakdown}${options.reconcileIntegrations ? "" : repairAllowance}`,
91
+ ...(refinementDisclaimer ? [refinementDisclaimer] : []),
62
92
  ...(integrationDisclaimer ? [integrationDisclaimer] : []),
63
93
  ...(conditional !== undefined && conditional.compilerRepairUpTo > 0
64
94
  ? [` Validation: up to ${conditional.compilerRepairUpTo} additional bounded JS/TS compiler-repair request${conditional.compilerRepairUpTo === 1 ? "" : "s"}, only if validation fails.`]
@@ -1 +1 @@
1
- {"version":3,"file":"presentation.js","sourceRoot":"","sources":["../../../src/agents/direct/presentation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"presentation.js","sourceRoot":"","sources":["../../../src/agents/direct/presentation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ export declare const BLUEPRINT_VOCABULARY_KINDS: readonly string[];
2
+ export type BlueprintVocabularyKind = (typeof BLUEPRINT_VOCABULARY_KINDS)[number];
3
+ export interface BlueprintFile {
4
+ path: string;
5
+ responsibility: string;
6
+ }
7
+ export interface BlueprintVocabularyEntry {
8
+ name: string;
9
+ kind: BlueprintVocabularyKind;
10
+ definedIn: string;
11
+ usedIn: string[];
12
+ note?: string;
13
+ }
14
+ export interface ProjectBlueprint {
15
+ files: BlueprintFile[];
16
+ vocabulary: BlueprintVocabularyEntry[];
17
+ }
18
+ /** Strictly validate the planning JSON against the exact set of planned targets. */
19
+ export declare function parseProjectBlueprint(output: string, allowedPaths: ReadonlySet<string>): ProjectBlueprint;
20
+ /** Render the whole agreement, used for secret scanning and for the todo pass. */
21
+ export declare function renderBlueprint(blueprint: ProjectBlueprint): string;
22
+ /**
23
+ * Render the agreement for one target: entries that target owns or must consume
24
+ * first, then a bounded tail so it still sees the wider vocabulary.
25
+ */
26
+ export declare function renderBlueprintFor(blueprint: ProjectBlueprint, targetPath: string, maxEntries?: number): string;
27
+ /** Every agreed name, used to constrain what a todo list may claim to produce. */
28
+ export declare function blueprintNames(blueprint: ProjectBlueprint): Set<string>;
29
+ //# sourceMappingURL=project-blueprint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-blueprint.d.ts","sourceRoot":"","sources":["../../../src/agents/direct/project-blueprint.ts"],"names":[],"mappings":"AAeA,eAAO,MAAM,0BAA0B,EAAE,SAAS,MAAM,EAEtD,CAAC;AAEH,MAAM,MAAM,uBAAuB,GAAG,CAAC,OAAO,0BAA0B,CAAC,CAAC,MAAM,CAAC,CAAC;AAElF,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,uBAAuB,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,UAAU,EAAE,wBAAwB,EAAE,CAAC;CACxC;AA4BD,oFAAoF;AACpF,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC,GAChC,gBAAgB,CAoFlB;AAQD,kFAAkF;AAClF,wBAAgB,eAAe,CAAC,SAAS,EAAE,gBAAgB,GAAG,MAAM,CAQnE;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,gBAAgB,EAC3B,UAAU,EAAE,MAAM,EAClB,UAAU,SAAK,GACd,MAAM,CAuBR;AAED,kFAAkF;AAClF,wBAAgB,cAAc,CAAC,SAAS,EAAE,gBAAgB,GAAG,GAAG,CAAC,MAAM,CAAC,CAEvE"}
@@ -0,0 +1,170 @@
1
+ /**
2
+ * The shared contract agreed once per run, before any file is generated.
3
+ *
4
+ * Every target is generated in its own request and those requests cannot see
5
+ * each other, so without a vocabulary fixed up front the markup invents one set
6
+ * of class names and the stylesheet invents another. This module holds the
7
+ * strict parser for that agreement and renders it back into prompts.
8
+ *
9
+ * The blueprint is model output, so it is untrusted evidence throughout: every
10
+ * path is checked against the real planned targets, every free-text field is
11
+ * bounded, and any parse failure discards the blueprint rather than failing the
12
+ * run.
13
+ */
14
+ import { scanSecrets } from "../../context/context.js";
15
+ export const BLUEPRINT_VOCABULARY_KINDS = Object.freeze([
16
+ "class", "id", "attribute", "selector", "cssVariable", "symbol", "route", "event", "dataKey",
17
+ ]);
18
+ const MAX_BLUEPRINT_FILES = 64;
19
+ const MAX_VOCABULARY_ENTRIES = 200;
20
+ const MAX_USED_IN = 16;
21
+ const MAX_RESPONSIBILITY_CHARS = 280;
22
+ const MAX_NOTE_CHARS = 180;
23
+ /** Deliberately narrow: a name that can hold a newline can smuggle an instruction. */
24
+ const NAME_PATTERN = /^[A-Za-z_$][A-Za-z0-9_$:.\-/]{0,119}$/u;
25
+ function oneLine(value, limit) {
26
+ const clean = value
27
+ .replace(/[\u0000-\u0008\u000b-\u001f\u007f]/gu, " ")
28
+ .replace(/\s+/gu, " ")
29
+ .trim();
30
+ return clean.length <= limit ? clean : `${clean.slice(0, Math.max(0, limit - 1))}…`;
31
+ }
32
+ function ownKeys(value, expected) {
33
+ const actual = Object.keys(value).sort();
34
+ const wanted = [...expected].sort();
35
+ return actual.length === wanted.length && actual.every((key, index) => key === wanted[index]);
36
+ }
37
+ function object(value) {
38
+ return typeof value === "object" && value !== null && !Array.isArray(value);
39
+ }
40
+ /** Strictly validate the planning JSON against the exact set of planned targets. */
41
+ export function parseProjectBlueprint(output, allowedPaths) {
42
+ let parsed;
43
+ try {
44
+ parsed = JSON.parse(output);
45
+ }
46
+ catch {
47
+ throw new Error("Project blueprint is not valid JSON.");
48
+ }
49
+ if (!object(parsed) || !ownKeys(parsed, ["files", "vocabulary"])) {
50
+ throw new Error("Project blueprint must contain exactly files and vocabulary.");
51
+ }
52
+ if (!Array.isArray(parsed.files) || parsed.files.length === 0 || parsed.files.length > MAX_BLUEPRINT_FILES) {
53
+ throw new Error(`Project blueprint files must be an array with 1-${MAX_BLUEPRINT_FILES} entries.`);
54
+ }
55
+ if (!Array.isArray(parsed.vocabulary) || parsed.vocabulary.length > MAX_VOCABULARY_ENTRIES) {
56
+ throw new Error(`Project blueprint vocabulary must be an array with at most ${MAX_VOCABULARY_ENTRIES} entries.`);
57
+ }
58
+ const seenPaths = new Set();
59
+ const files = parsed.files.map((value, index) => {
60
+ if (!object(value) || !ownKeys(value, ["path", "responsibility"])) {
61
+ throw new Error(`Project blueprint file ${index} has unknown or missing fields.`);
62
+ }
63
+ if (typeof value.path !== "string" || !allowedPaths.has(value.path)) {
64
+ throw new Error(`Project blueprint file ${index} names a path that is not a planned target.`);
65
+ }
66
+ if (seenPaths.has(value.path))
67
+ throw new Error(`Project blueprint repeats the path ${value.path}.`);
68
+ seenPaths.add(value.path);
69
+ if (typeof value.responsibility !== "string") {
70
+ throw new Error(`Project blueprint file ${index} has an invalid responsibility.`);
71
+ }
72
+ const responsibility = oneLine(value.responsibility, MAX_RESPONSIBILITY_CHARS);
73
+ if (responsibility.length === 0) {
74
+ throw new Error(`Project blueprint file ${index} has an empty responsibility.`);
75
+ }
76
+ return { path: value.path, responsibility };
77
+ });
78
+ const seenNames = new Set();
79
+ const vocabulary = parsed.vocabulary.map((value, index) => {
80
+ if (!object(value) || (!ownKeys(value, ["definedIn", "kind", "name", "usedIn"])
81
+ && !ownKeys(value, ["definedIn", "kind", "name", "note", "usedIn"]))) {
82
+ throw new Error(`Project blueprint vocabulary ${index} has unknown or missing fields.`);
83
+ }
84
+ if (typeof value.name !== "string" || !NAME_PATTERN.test(value.name)) {
85
+ throw new Error(`Project blueprint vocabulary ${index} has an invalid name.`);
86
+ }
87
+ if (typeof value.kind !== "string" || !BLUEPRINT_VOCABULARY_KINDS.includes(value.kind)) {
88
+ throw new Error(`Project blueprint vocabulary ${index} has an unknown kind.`);
89
+ }
90
+ const key = `${value.kind}:${value.name}`;
91
+ if (seenNames.has(key)) {
92
+ throw new Error(`Project blueprint vocabulary repeats ${value.kind} ${value.name}.`);
93
+ }
94
+ seenNames.add(key);
95
+ if (typeof value.definedIn !== "string" || !allowedPaths.has(value.definedIn)) {
96
+ throw new Error(`Project blueprint vocabulary ${index} names an unknown definedIn path.`);
97
+ }
98
+ if (!Array.isArray(value.usedIn) || value.usedIn.length > MAX_USED_IN) {
99
+ throw new Error(`Project blueprint vocabulary ${index} must list 0-${MAX_USED_IN} usedIn paths.`);
100
+ }
101
+ const usedIn = value.usedIn.map((path) => {
102
+ if (typeof path !== "string" || !allowedPaths.has(path) || path === value.definedIn) {
103
+ throw new Error(`Project blueprint vocabulary ${index} names an unknown or self-referential usedIn path.`);
104
+ }
105
+ return path;
106
+ });
107
+ if (new Set(usedIn).size !== usedIn.length) {
108
+ throw new Error(`Project blueprint vocabulary ${index} repeats a usedIn path.`);
109
+ }
110
+ const note = typeof value.note === "string" ? oneLine(value.note, MAX_NOTE_CHARS) : undefined;
111
+ return {
112
+ name: value.name,
113
+ kind: value.kind,
114
+ definedIn: value.definedIn,
115
+ usedIn,
116
+ ...(note !== undefined && note.length > 0 ? { note } : {}),
117
+ };
118
+ });
119
+ const blueprint = { files, vocabulary };
120
+ if (scanSecrets(renderBlueprint(blueprint)).length > 0) {
121
+ throw new Error("Project blueprint contains credential-like content and was discarded.");
122
+ }
123
+ return blueprint;
124
+ }
125
+ function vocabularyLine(entry) {
126
+ const used = entry.usedIn.length > 0 ? `; used by ${entry.usedIn.join(", ")}` : "";
127
+ const note = entry.note === undefined ? "" : ` — ${entry.note}`;
128
+ return `${entry.kind} "${entry.name}" defined in ${entry.definedIn}${used}${note}`;
129
+ }
130
+ /** Render the whole agreement, used for secret scanning and for the todo pass. */
131
+ export function renderBlueprint(blueprint) {
132
+ return [
133
+ "FILE ROSTER:",
134
+ ...blueprint.files.map((file) => `- ${file.path} — ${file.responsibility}`),
135
+ ...(blueprint.vocabulary.length > 0
136
+ ? ["SHARED NAMES (use these exact spellings):", ...blueprint.vocabulary.map((entry) => `- ${vocabularyLine(entry)}`)]
137
+ : []),
138
+ ].join("\n");
139
+ }
140
+ /**
141
+ * Render the agreement for one target: entries that target owns or must consume
142
+ * first, then a bounded tail so it still sees the wider vocabulary.
143
+ */
144
+ export function renderBlueprintFor(blueprint, targetPath, maxEntries = 40) {
145
+ const relevant = blueprint.vocabulary.filter((entry) => entry.definedIn === targetPath || entry.usedIn.includes(targetPath));
146
+ const rest = blueprint.vocabulary.filter((entry) => !relevant.includes(entry));
147
+ const selected = [...relevant, ...rest].slice(0, Math.max(0, maxEntries));
148
+ const owned = selected.filter((entry) => entry.definedIn === targetPath);
149
+ const consumed = selected.filter((entry) => entry.usedIn.includes(targetPath));
150
+ const other = selected.filter((entry) => !owned.includes(entry) && !consumed.includes(entry));
151
+ return [
152
+ "FILE ROSTER:",
153
+ ...blueprint.files.map((file) => `- ${file.path}${file.path === targetPath ? " [THIS TARGET]" : ""} — ${file.responsibility}`),
154
+ ...(owned.length > 0
155
+ ? ["NAMES THIS TARGET DEFINES (other files depend on these exact spellings):",
156
+ ...owned.map((entry) => `- ${vocabularyLine(entry)}`)]
157
+ : []),
158
+ ...(consumed.length > 0
159
+ ? ["NAMES THIS TARGET MUST USE VERBATIM:", ...consumed.map((entry) => `- ${vocabularyLine(entry)}`)]
160
+ : []),
161
+ ...(other.length > 0
162
+ ? ["OTHER AGREED NAMES IN THIS RUN:", ...other.map((entry) => `- ${vocabularyLine(entry)}`)]
163
+ : []),
164
+ ].join("\n");
165
+ }
166
+ /** Every agreed name, used to constrain what a todo list may claim to produce. */
167
+ export function blueprintNames(blueprint) {
168
+ return new Set(blueprint.vocabulary.map((entry) => entry.name));
169
+ }
170
+ //# sourceMappingURL=project-blueprint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-blueprint.js","sourceRoot":"","sources":["../../../src/agents/direct/project-blueprint.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,39 @@
1
1
  export declare const PROJECT_CONTRACT_EXTENSIONS: Set<string>;
2
2
  export declare const PROJECT_MANIFEST_NAMES: Set<string>;
3
+ /**
4
+ * Raw extraction results. These are deliberately uncapped and unformatted: the
5
+ * `*Contract` renderers below apply the compact `unique()` limits, while
6
+ * cross-file reference checking needs the complete sets. One parser, two
7
+ * consumers — never add a second scanner for the same syntax.
8
+ */
9
+ export interface HtmlFacts {
10
+ stylesheets: string[];
11
+ scripts: string[];
12
+ ids: string[];
13
+ classes: string[];
14
+ handlerCalls: string[];
15
+ operationLabels: string[];
16
+ numberLabels: string[];
17
+ landmarks: string[];
18
+ elements: string[];
19
+ }
20
+ export interface CssFacts {
21
+ imports: string[];
22
+ urls: string[];
23
+ customProperties: string[];
24
+ selectors: string[];
25
+ }
26
+ export interface JavaScriptFacts {
27
+ modules: string[];
28
+ selectors: string[];
29
+ /** Class names passed to classList add/remove/toggle/contains. */
30
+ toggledClasses: string[];
31
+ /** True when the source assigns `.hidden` or sets the `hidden` attribute. */
32
+ togglesHiddenAttribute: boolean;
33
+ }
34
+ export declare function htmlFacts(content: string): HtmlFacts;
35
+ export declare function cssFacts(content: string): CssFacts;
36
+ export declare function javaScriptFacts(content: string): JavaScriptFacts;
3
37
  /** Extract a bounded interface/relationship summary without executing source. */
4
38
  export declare function compactFileContract(path: string, content: string): string;
5
39
  //# sourceMappingURL=project-contracts.d.ts.map
@@ -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;AA+LH,iFAAiF;AACjF,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAuBzE"}
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;AAoCH;;;;;GAKG;AACH,MAAM,WAAW,SAAS;IACxB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,kEAAkE;IAClE,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,6EAA6E;IAC7E,sBAAsB,EAAE,OAAO,CAAC;CACjC;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAwBpD;AAED,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ,CAQlD;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,CAiBhE;AA6HD,iFAAiF;AACjF,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAuBzE"}
@@ -51,59 +51,76 @@ function matches(content, expression, group = 1) {
51
51
  function listLine(label, values) {
52
52
  return values.length === 0 ? undefined : `${label}: ${values.join(", ")}`;
53
53
  }
54
- function htmlContract(content) {
55
- const stylesheets = matches(content, /<link\b(?=[^>]*\brel\s*=\s*["'][^"']*stylesheet[^"']*["'])[^>]*\bhref\s*=\s*["']([^"']+)["'][^>]*>/giu);
56
- const scripts = matches(content, /<script\b[^>]*\bsrc\s*=\s*["']([^"']+)["'][^>]*>/giu);
57
- const ids = matches(content, /\bid\s*=\s*["']([^"']+)["']/giu)
58
- .flatMap((value) => value.split(/\s+/u));
59
- const classes = matches(content, /\bclass\s*=\s*["']([^"']+)["']/giu)
60
- .flatMap((value) => value.split(/\s+/u));
61
- const landmarks = matches(content, /<(header|nav|main|section|article|aside|footer|form)\b/giu);
62
- const elements = matches(content, /<([a-z][a-z0-9-]*)\b/giu);
54
+ export function htmlFacts(content) {
63
55
  const handlerExpressions = [...content.matchAll(/\bon[a-z][a-z0-9_-]*\s*=\s*(?:"([^"]*)"|'([^']*)')/giu)]
64
56
  .map((match) => match[1] ?? match[2] ?? "");
65
- const handlerCalls = handlerExpressions
66
- .flatMap((handler) => matches(handler, /\b([A-Za-z_$][A-Za-z0-9_$]*)\s*\(/gu));
67
- const operationLabels = matches(content, /<button\b(?=[^>]*\bdata-operation(?:\s|=|>))[^>]*>\s*([^<]*?)\s*<\/button>/giu);
68
- const numberLabels = matches(content, /<button\b(?=[^>]*\bdata-number(?:\s|=|>))[^>]*>\s*([^<]*?)\s*<\/button>/giu);
57
+ return {
58
+ stylesheets: matches(content, /<link\b(?=[^>]*\brel\s*=\s*["'][^"']*stylesheet[^"']*["'])[^>]*\bhref\s*=\s*["']([^"']+)["'][^>]*>/giu),
59
+ scripts: matches(content, /<script\b[^>]*\bsrc\s*=\s*["']([^"']+)["'][^>]*>/giu),
60
+ ids: matches(content, /\bid\s*=\s*["']([^"']+)["']/giu).flatMap((value) => value.split(/\s+/u)),
61
+ classes: matches(content, /\bclass\s*=\s*["']([^"']+)["']/giu).flatMap((value) => value.split(/\s+/u)),
62
+ handlerCalls: handlerExpressions
63
+ .flatMap((handler) => matches(handler, /\b([A-Za-z_$][A-Za-z0-9_$]*)\s*\(/gu)),
64
+ operationLabels: matches(content, /<button\b(?=[^>]*\bdata-operation(?:\s|=|>))[^>]*>\s*([^<]*?)\s*<\/button>/giu),
65
+ numberLabels: matches(content, /<button\b(?=[^>]*\bdata-number(?:\s|=|>))[^>]*>\s*([^<]*?)\s*<\/button>/giu),
66
+ landmarks: matches(content, /<(header|nav|main|section|article|aside|footer|form)\b/giu),
67
+ elements: matches(content, /<([a-z][a-z0-9-]*)\b/giu),
68
+ };
69
+ }
70
+ export function cssFacts(content) {
71
+ return {
72
+ imports: matches(content, /@import\s+(?:url\(\s*)?["']([^"']+)["']/giu),
73
+ urls: matches(content, /url\(\s*["']?([^"')\s]+)["']?\s*\)/giu),
74
+ customProperties: matches(content, /(^|[;{]\s*)(--[A-Za-z0-9_-]+)\s*:/gmu, 2),
75
+ selectors: matches(content, /(?:^|\})\s*([^@{}][^{}]{0,240})\s*\{/gmu)
76
+ .flatMap((value) => value.split(",")),
77
+ };
78
+ }
79
+ export function javaScriptFacts(content) {
80
+ return {
81
+ modules: [
82
+ ...matches(content, /\b(?:import|export)\b[\s\S]{0,240}?\bfrom\s*["']([^"']+)["']/gu),
83
+ ...matches(content, /\bimport\s*["']([^"']+)["']/gu),
84
+ ...matches(content, /\brequire\s*\(\s*["']([^"']+)["']\s*\)/gu),
85
+ ],
86
+ selectors: [
87
+ ...matches(content, /\bquerySelector(?:All)?\s*\(\s*["']([^"']+)["']/gu),
88
+ ...matches(content, /\bgetElementById\s*\(\s*["']([^"']+)["']/gu).map((value) => `#${value}`),
89
+ ],
90
+ toggledClasses: matches(content, /\bclassList\s*\.\s*(?:add|remove|toggle|contains)\s*\(\s*["']([^"']+)["']/gu).flatMap((value) => value.split(/\s+/u)),
91
+ togglesHiddenAttribute: /\.hidden\s*=|\b(?:set|remove)Attribute\s*\(\s*["']hidden["']/u.test(content),
92
+ };
93
+ }
94
+ function htmlContract(content) {
95
+ const facts = htmlFacts(content);
69
96
  return [
70
- listLine("stylesheets", unique(stylesheets)),
71
- listLine("scripts", unique(scripts)),
72
- listLine("ids", unique(ids)),
73
- listLine("classes", unique(classes)),
74
- listLine("inline handler calls", unique(handlerCalls)),
75
- listLine("data-operation button labels", unique(operationLabels)),
76
- listLine("data-number button labels", unique(numberLabels)),
77
- listLine("landmarks", unique(landmarks)),
78
- listLine("elements", unique(elements)),
97
+ listLine("stylesheets", unique(facts.stylesheets)),
98
+ listLine("scripts", unique(facts.scripts)),
99
+ listLine("ids", unique(facts.ids)),
100
+ listLine("classes", unique(facts.classes)),
101
+ listLine("inline handler calls", unique(facts.handlerCalls)),
102
+ listLine("data-operation button labels", unique(facts.operationLabels)),
103
+ listLine("data-number button labels", unique(facts.numberLabels)),
104
+ listLine("landmarks", unique(facts.landmarks)),
105
+ listLine("elements", unique(facts.elements)),
79
106
  ].filter((line) => line !== undefined);
80
107
  }
81
108
  function cssContract(content) {
82
- const imports = matches(content, /@import\s+(?:url\(\s*)?["']([^"']+)["']/giu);
83
- const urls = matches(content, /url\(\s*["']?([^"')\s]+)["']?\s*\)/giu);
84
- const customProperties = matches(content, /(^|[;{]\s*)(--[A-Za-z0-9_-]+)\s*:/gmu, 2);
85
- const selectors = matches(content, /(?:^|\})\s*([^@{}][^{}]{0,240})\s*\{/gmu)
86
- .flatMap((value) => value.split(","));
109
+ const facts = cssFacts(content);
87
110
  return [
88
- listLine("imports", unique(imports)),
89
- listLine("asset URLs", unique(urls)),
90
- listLine("custom properties", unique(customProperties)),
91
- listLine("selectors", unique(selectors)),
111
+ listLine("imports", unique(facts.imports)),
112
+ listLine("asset URLs", unique(facts.urls)),
113
+ listLine("custom properties", unique(facts.customProperties)),
114
+ listLine("selectors", unique(facts.selectors)),
92
115
  ].filter((line) => line !== undefined);
93
116
  }
94
117
  function javascriptContract(content) {
95
- const modules = [
96
- ...matches(content, /\b(?:import|export)\b[\s\S]{0,240}?\bfrom\s*["']([^"']+)["']/gu),
97
- ...matches(content, /\bimport\s*["']([^"']+)["']/gu),
98
- ...matches(content, /\brequire\s*\(\s*["']([^"']+)["']\s*\)/gu),
99
- ];
100
- const selectors = [
101
- ...matches(content, /\bquerySelector(?:All)?\s*\(\s*["']([^"']+)["']/gu),
102
- ...matches(content, /\bgetElementById\s*\(\s*["']([^"']+)["']/gu).map((value) => `#${value}`),
103
- ];
118
+ const facts = javaScriptFacts(content);
119
+ // `toggledClasses` and `togglesHiddenAttribute` are reference-check facts
120
+ // only; adding them here would change every existing contract snapshot.
104
121
  return [
105
- listLine("module references", unique(modules)),
106
- listLine("DOM selectors", unique(selectors)),
122
+ listLine("module references", unique(facts.modules)),
123
+ listLine("DOM selectors", unique(facts.selectors)),
107
124
  ].filter((line) => line !== undefined);
108
125
  }
109
126
  function genericReferences(path, content) {
@@ -1 +1 @@
1
- {"version":3,"file":"project-contracts.js","sourceRoot":"","sources":["../../../src/agents/direct/project-contracts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"project-contracts.js","sourceRoot":"","sources":["../../../src/agents/direct/project-contracts.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { type ProjectBlueprint } from "./project-blueprint.ts";
1
2
  import type { ConversionUnit, ProjectMemoryProvider, ProjectRelationship } from "./types.ts";
2
3
  export interface ProjectMemoryOptions {
3
4
  /** Reuse discovery's already-bounded walk instead of walking the tree twice. */
@@ -35,6 +36,11 @@ export declare class ProjectMemory implements ProjectMemoryProvider {
35
36
  renderCharLimit: number;
36
37
  });
37
38
  remember(unit: ConversionUnit, code: string): void;
39
+ /** Adopt the shared contract agreed for this run, before any unit is generated. */
40
+ adoptBlueprint(blueprint: ProjectBlueprint): void;
41
+ get blueprint(): ProjectBlueprint | undefined;
42
+ /** Planned targets, for seeding the blueprint request. */
43
+ get plannedTargets(): readonly PlannedProjectFile[];
38
44
  relationsFor(unit: ConversionUnit): readonly ProjectRelationship[];
39
45
  renderFor(unit: ConversionUnit, requestedBudget?: number): string;
40
46
  }
@@ -1 +1 @@
1
- {"version":3,"file":"project-memory.d.ts","sourceRoot":"","sources":["../../../src/agents/direct/project-memory.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,cAAc,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAY7F,MAAM,WAAW,oBAAoB;IACnC,gFAAgF;IAChF,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,8CAA8C;IAC9C,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,6EAA6E;IAC7E,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,iEAAiE;IACjE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,2DAA2D;IAC3D,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,qDAAqD;IACrD,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;CAClB;AAsHD,2EAA2E;AAC3E,qBAAa,aAAc,YAAW,qBAAqB;;IACzD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;gBAgB/B,KAAK,EAAE;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;QAChC,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;QACjD,iBAAiB,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC/C,sBAAsB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;QAC5C,eAAe,EAAE,MAAM,CAAC;KACzB;IAuCD,QAAQ,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAgBlD,YAAY,CAAC,IAAI,EAAE,cAAc,GAAG,SAAS,mBAAmB,EAAE;IAqDlE,SAAS,CAAC,IAAI,EAAE,cAAc,EAAE,eAAe,SAAwB,GAAG,MAAM;CA8EjF;AA6CD,sFAAsF;AACtF,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,SAAS,cAAc,EAAE,EAChC,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,aAAa,CAAC,CA6DxB"}
1
+ {"version":3,"file":"project-memory.d.ts","sourceRoot":"","sources":["../../../src/agents/direct/project-memory.ts"],"names":[],"mappings":"AAaA,OAAO,EAAsB,KAAK,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAWnF,OAAO,KAAK,EAAE,cAAc,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAa7F,MAAM,WAAW,oBAAoB;IACnC,gFAAgF;IAChF,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,8CAA8C;IAC9C,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,6EAA6E;IAC7E,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,iEAAiE;IACjE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,2DAA2D;IAC3D,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,qDAAqD;IACrD,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;CAClB;AAsHD,2EAA2E;AAC3E,qBAAa,aAAc,YAAW,qBAAqB;;IACzD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;gBAiB/B,KAAK,EAAE;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;QAChC,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;QACjD,iBAAiB,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC/C,sBAAsB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;QAC5C,eAAe,EAAE,MAAM,CAAC;KACzB;IAuCD,QAAQ,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAgBlD,mFAAmF;IACnF,cAAc,CAAC,SAAS,EAAE,gBAAgB,GAAG,IAAI;IAIjD,IAAI,SAAS,IAAI,gBAAgB,GAAG,SAAS,CAE5C;IAED,0DAA0D;IAC1D,IAAI,cAAc,IAAI,SAAS,kBAAkB,EAAE,CAElD;IAED,YAAY,CAAC,IAAI,EAAE,cAAc,GAAG,SAAS,mBAAmB,EAAE;IAqDlE,SAAS,CAAC,IAAI,EAAE,cAAc,EAAE,eAAe,SAAwB,GAAG,MAAM;CA0FjF;AA6CD,sFAAsF;AACtF,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,SAAS,cAAc,EAAE,EAChC,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,aAAa,CAAC,CA6DxB"}