@yuaone/core 0.9.43 → 1.0.1

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 (154) hide show
  1. package/dist/agent-affordance.d.ts +37 -0
  2. package/dist/agent-affordance.d.ts.map +1 -0
  3. package/dist/agent-affordance.js +139 -0
  4. package/dist/agent-affordance.js.map +1 -0
  5. package/dist/agent-decision-types.d.ts +262 -0
  6. package/dist/agent-decision-types.d.ts.map +1 -0
  7. package/dist/agent-decision-types.js +19 -0
  8. package/dist/agent-decision-types.js.map +1 -0
  9. package/dist/agent-decision.d.ts +52 -0
  10. package/dist/agent-decision.d.ts.map +1 -0
  11. package/dist/agent-decision.js +767 -0
  12. package/dist/agent-decision.js.map +1 -0
  13. package/dist/agent-loop.d.ts +37 -79
  14. package/dist/agent-loop.d.ts.map +1 -1
  15. package/dist/agent-loop.js +730 -586
  16. package/dist/agent-loop.js.map +1 -1
  17. package/dist/agent-reasoning-engine.d.ts +48 -0
  18. package/dist/agent-reasoning-engine.d.ts.map +1 -0
  19. package/dist/agent-reasoning-engine.js +544 -0
  20. package/dist/agent-reasoning-engine.js.map +1 -0
  21. package/dist/codebase-context.d.ts +3 -0
  22. package/dist/codebase-context.d.ts.map +1 -1
  23. package/dist/codebase-context.js +15 -6
  24. package/dist/codebase-context.js.map +1 -1
  25. package/dist/command-plan-compiler.d.ts +43 -0
  26. package/dist/command-plan-compiler.d.ts.map +1 -0
  27. package/dist/command-plan-compiler.js +164 -0
  28. package/dist/command-plan-compiler.js.map +1 -0
  29. package/dist/dependency-guard.d.ts +18 -0
  30. package/dist/dependency-guard.d.ts.map +1 -0
  31. package/dist/dependency-guard.js +113 -0
  32. package/dist/dependency-guard.js.map +1 -0
  33. package/dist/execution-engine.d.ts +10 -1
  34. package/dist/execution-engine.d.ts.map +1 -1
  35. package/dist/execution-engine.js +162 -8
  36. package/dist/execution-engine.js.map +1 -1
  37. package/dist/execution-receipt.d.ts +62 -0
  38. package/dist/execution-receipt.d.ts.map +1 -0
  39. package/dist/execution-receipt.js +67 -0
  40. package/dist/execution-receipt.js.map +1 -0
  41. package/dist/failure-surface-writer.d.ts +13 -0
  42. package/dist/failure-surface-writer.d.ts.map +1 -0
  43. package/dist/failure-surface-writer.js +33 -0
  44. package/dist/failure-surface-writer.js.map +1 -0
  45. package/dist/file-chunker.d.ts +26 -0
  46. package/dist/file-chunker.d.ts.map +1 -0
  47. package/dist/file-chunker.js +103 -0
  48. package/dist/file-chunker.js.map +1 -0
  49. package/dist/image-observer.d.ts +22 -0
  50. package/dist/image-observer.d.ts.map +1 -0
  51. package/dist/image-observer.js +60 -0
  52. package/dist/image-observer.js.map +1 -0
  53. package/dist/index.d.ts +55 -0
  54. package/dist/index.d.ts.map +1 -1
  55. package/dist/index.js +53 -0
  56. package/dist/index.js.map +1 -1
  57. package/dist/judgment-rules.d.ts +44 -0
  58. package/dist/judgment-rules.d.ts.map +1 -0
  59. package/dist/judgment-rules.js +185 -0
  60. package/dist/judgment-rules.js.map +1 -0
  61. package/dist/memory-decay.d.ts +41 -0
  62. package/dist/memory-decay.d.ts.map +1 -0
  63. package/dist/memory-decay.js +62 -0
  64. package/dist/memory-decay.js.map +1 -0
  65. package/dist/memory-manager.d.ts.map +1 -1
  66. package/dist/memory-manager.js +30 -0
  67. package/dist/memory-manager.js.map +1 -1
  68. package/dist/model-weakness-tracker.d.ts +42 -0
  69. package/dist/model-weakness-tracker.d.ts.map +1 -0
  70. package/dist/model-weakness-tracker.js +107 -0
  71. package/dist/model-weakness-tracker.js.map +1 -0
  72. package/dist/overhead-governor.d.ts +3 -1
  73. package/dist/overhead-governor.d.ts.map +1 -1
  74. package/dist/overhead-governor.js +5 -0
  75. package/dist/overhead-governor.js.map +1 -1
  76. package/dist/patch-scope-controller.d.ts +44 -0
  77. package/dist/patch-scope-controller.d.ts.map +1 -0
  78. package/dist/patch-scope-controller.js +107 -0
  79. package/dist/patch-scope-controller.js.map +1 -0
  80. package/dist/patch-transaction.d.ts +53 -0
  81. package/dist/patch-transaction.d.ts.map +1 -0
  82. package/dist/patch-transaction.js +119 -0
  83. package/dist/patch-transaction.js.map +1 -0
  84. package/dist/pre-write-validator.d.ts +29 -0
  85. package/dist/pre-write-validator.d.ts.map +1 -0
  86. package/dist/pre-write-validator.js +97 -0
  87. package/dist/pre-write-validator.js.map +1 -0
  88. package/dist/prompt-builder.d.ts +25 -0
  89. package/dist/prompt-builder.d.ts.map +1 -0
  90. package/dist/prompt-builder.js +93 -0
  91. package/dist/prompt-builder.js.map +1 -0
  92. package/dist/prompt-envelope.d.ts +40 -0
  93. package/dist/prompt-envelope.d.ts.map +1 -0
  94. package/dist/prompt-envelope.js +16 -0
  95. package/dist/prompt-envelope.js.map +1 -0
  96. package/dist/prompt-runtime.d.ts +66 -0
  97. package/dist/prompt-runtime.d.ts.map +1 -0
  98. package/dist/prompt-runtime.js +492 -0
  99. package/dist/prompt-runtime.js.map +1 -0
  100. package/dist/repo-capability-profile.d.ts +24 -0
  101. package/dist/repo-capability-profile.d.ts.map +1 -0
  102. package/dist/repo-capability-profile.js +113 -0
  103. package/dist/repo-capability-profile.js.map +1 -0
  104. package/dist/security-gate.d.ts +39 -0
  105. package/dist/security-gate.d.ts.map +1 -0
  106. package/dist/security-gate.js +121 -0
  107. package/dist/security-gate.js.map +1 -0
  108. package/dist/self-evaluation.d.ts +22 -0
  109. package/dist/self-evaluation.d.ts.map +1 -0
  110. package/dist/self-evaluation.js +43 -0
  111. package/dist/self-evaluation.js.map +1 -0
  112. package/dist/semantic-diff-reviewer.d.ts +28 -0
  113. package/dist/semantic-diff-reviewer.d.ts.map +1 -0
  114. package/dist/semantic-diff-reviewer.js +168 -0
  115. package/dist/semantic-diff-reviewer.js.map +1 -0
  116. package/dist/stall-detector.d.ts +26 -2
  117. package/dist/stall-detector.d.ts.map +1 -1
  118. package/dist/stall-detector.js +128 -3
  119. package/dist/stall-detector.js.map +1 -1
  120. package/dist/system-core.d.ts +27 -0
  121. package/dist/system-core.d.ts.map +1 -0
  122. package/dist/system-core.js +269 -0
  123. package/dist/system-core.js.map +1 -0
  124. package/dist/system-prompt.d.ts +4 -0
  125. package/dist/system-prompt.d.ts.map +1 -1
  126. package/dist/system-prompt.js +12 -218
  127. package/dist/system-prompt.js.map +1 -1
  128. package/dist/target-file-ranker.d.ts +38 -0
  129. package/dist/target-file-ranker.d.ts.map +1 -0
  130. package/dist/target-file-ranker.js +90 -0
  131. package/dist/target-file-ranker.js.map +1 -0
  132. package/dist/task-classifier.d.ts +6 -0
  133. package/dist/task-classifier.d.ts.map +1 -1
  134. package/dist/task-classifier.js +6 -0
  135. package/dist/task-classifier.js.map +1 -1
  136. package/dist/test-impact-planner.d.ts +16 -0
  137. package/dist/test-impact-planner.d.ts.map +1 -0
  138. package/dist/test-impact-planner.js +68 -0
  139. package/dist/test-impact-planner.js.map +1 -0
  140. package/dist/tool-outcome-cache.d.ts +41 -0
  141. package/dist/tool-outcome-cache.d.ts.map +1 -0
  142. package/dist/tool-outcome-cache.js +88 -0
  143. package/dist/tool-outcome-cache.js.map +1 -0
  144. package/dist/types.d.ts +39 -0
  145. package/dist/types.d.ts.map +1 -1
  146. package/dist/verifier-rules.d.ts +15 -0
  147. package/dist/verifier-rules.d.ts.map +1 -0
  148. package/dist/verifier-rules.js +80 -0
  149. package/dist/verifier-rules.js.map +1 -0
  150. package/dist/workspace-mutation-policy.d.ts +28 -0
  151. package/dist/workspace-mutation-policy.d.ts.map +1 -0
  152. package/dist/workspace-mutation-policy.js +56 -0
  153. package/dist/workspace-mutation-policy.js.map +1 -0
  154. package/package.json +1 -1
@@ -63,7 +63,7 @@ export interface OverheadGovernorConfig {
63
63
  debugMode?: GuardMode;
64
64
  }
65
65
  export declare class OverheadGovernor {
66
- private readonly cfg;
66
+ private cfg;
67
67
  /** Shadow mode 로그 콜백 (TUI로 보내거나 stdout) */
68
68
  private readonly onShadow?;
69
69
  constructor(config?: OverheadGovernorConfig, onShadow?: (subsystem: string, reason: string) => void);
@@ -87,6 +87,8 @@ export declare class OverheadGovernor {
87
87
  shouldRunTournament(ctx: TriggerContext): GuardMode;
88
88
  /** IncidentDebugMode: only run when repeated errors detected */
89
89
  shouldRunDebugMode(ctx: TriggerContext): GuardMode;
90
+ /** Override config at runtime (called by Decision Engine integration) */
91
+ overrideConfig(overrides: Partial<OverheadGovernorConfig>): void;
90
92
  private _shadow;
91
93
  /**
92
94
  * 현재 설정 반환 (디버그용).
@@ -1 +1 @@
1
- {"version":3,"file":"overhead-governor.d.ts","sourceRoot":"","sources":["../src/overhead-governor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAMH,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,QAAQ,GAAG,UAAU,CAAC;AAEtD,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,UAAU,CAAC;AAExE;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,+BAA+B;IAC/B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,6BAA6B;IAC7B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,oBAAoB;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,+BAA+B;IAC/B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,wBAAwB;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,wBAAwB;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,8DAA8D;IAC9D,UAAU,EAAE,OAAO,CAAC;IACpB,oBAAoB;IACpB,SAAS,EAAE,SAAS,CAAC;IACrB,yBAAyB;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,sCAAsC;IACtC,sBAAsB,EAAE,OAAO,CAAC;IAChC,yCAAyC;IACzC,yBAAyB,EAAE,OAAO,CAAC;IACnC,sCAAsC;IACtC,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,SAAS,CAAC,EAAE,SAAS,CAAC;IAEtB,yDAAyD;IACzD,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,6EAA6E;IAC7E,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,4DAA4D;IAC5D,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAkBD,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAmC;IACvD,2CAA2C;IAC3C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAA8C;gBAGtE,MAAM,CAAC,EAAE,sBAAsB,EAC/B,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI;IAQxD,kCAAkC;IAClC,gBAAgB,CAAC,GAAG,EAAE,cAAc,GAAG,SAAS;IA6BhD,uDAAuD;IACvD,eAAe,CAAC,GAAG,EAAE,cAAc,GAAG,SAAS;IAmB/C,gDAAgD;IAChD,mBAAmB,CAAC,GAAG,EAAE,cAAc,GAAG,SAAS;IAoBnD,4CAA4C;IAC5C,oBAAoB,CAAC,GAAG,EAAE,cAAc,GAAG,SAAS;IAoBpD,mCAAmC;IACnC,mBAAmB,CAAC,GAAG,EAAE,cAAc,GAAG,SAAS;IAanD,8CAA8C;IAC9C,iBAAiB,CAAC,GAAG,EAAE,cAAc,GAAG,SAAS;IAgBjD,sDAAsD;IACtD,kBAAkB,CAAC,GAAG,EAAE,cAAc,GAAG,SAAS;IAqBlD,sEAAsE;IACtE,iBAAiB,CAAC,GAAG,EAAE,cAAc,GAAG,SAAS;IAWjD,yEAAyE;IACzE,mBAAmB,CAAC,GAAG,EAAE,cAAc,GAAG,SAAS;IAWnD,gEAAgE;IAChE,kBAAkB,CAAC,GAAG,EAAE,cAAc,GAAG,SAAS;IAelD,OAAO,CAAC,OAAO;IAIf;;OAEG;IACH,SAAS,IAAI,QAAQ,CAAC,sBAAsB,CAAC;IAI7C;;;;;;;OAOG;IACH,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,sBAAsB;CAoB9D"}
1
+ {"version":3,"file":"overhead-governor.d.ts","sourceRoot":"","sources":["../src/overhead-governor.ts"],"names":[],"mappings":"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"}
@@ -196,6 +196,11 @@ export class OverheadGovernor {
196
196
  }
197
197
  return "OFF";
198
198
  }
199
+ // ─── Runtime Override ────────────────────────────────────────────────────
200
+ /** Override config at runtime (called by Decision Engine integration) */
201
+ overrideConfig(overrides) {
202
+ Object.assign(this.cfg, overrides);
203
+ }
199
204
  // ─── Helpers ──────────────────────────────────────────────────────────────
200
205
  _shadow(subsystem, reason) {
201
206
  this.onShadow?.(subsystem, reason);
@@ -1 +1 @@
1
- {"version":3,"file":"overhead-governor.js","sourceRoot":"","sources":["../src/overhead-governor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"overhead-governor.js","sourceRoot":"","sources":["../src/overhead-governor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * @module patch-scope-controller
3
+ * @description Hard limits on modification scope per run.
4
+ * Prevents "silent large-scale changes" — the #1 agent safety risk.
5
+ * Tracks cumulative state in-memory per session.
6
+ * Role: SCOPE LIMITER only. Does NOT check code quality or path safety.
7
+ */
8
+ import type { AgentComplexity } from "./agent-decision-types.js";
9
+ export type RepoLifecycle = "existing" | "greenfield" | "migration";
10
+ export interface PatchScopeLimit {
11
+ maxFilesPerRun: number;
12
+ maxDiffLinesPerRun: number;
13
+ maxProtectedFilesPerRun: number;
14
+ maxCrossPackageTouches: number;
15
+ }
16
+ export interface PatchScopeState {
17
+ touchedFiles: Set<string>;
18
+ totalInserted: number;
19
+ totalDeleted: number;
20
+ protectedFilesTouched: Set<string>;
21
+ packagesTouched: Set<string>;
22
+ }
23
+ export interface ScopeCheckResult {
24
+ allowed: boolean;
25
+ reason?: string;
26
+ currentUsage: {
27
+ files: number;
28
+ diffLines: number;
29
+ protectedFiles: number;
30
+ packages: number;
31
+ };
32
+ limits: PatchScopeLimit;
33
+ }
34
+ export declare function deriveScopeLimit(complexity: AgentComplexity, lifecycle: RepoLifecycle): PatchScopeLimit;
35
+ export declare function detectRepoLifecycle(projectPath: string): RepoLifecycle;
36
+ export declare class PatchScopeController {
37
+ private state;
38
+ private limit;
39
+ constructor(complexity: AgentComplexity, lifecycle: RepoLifecycle);
40
+ recordChange(filePath: string, insertedLines: number, deletedLines: number, isProtected: boolean): void;
41
+ check(): ScopeCheckResult;
42
+ reset(): void;
43
+ }
44
+ //# sourceMappingURL=patch-scope-controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"patch-scope-controller.d.ts","sourceRoot":"","sources":["../src/patch-scope-controller.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAEjE,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,YAAY,GAAG,WAAW,CAAC;AAEpE,MAAM,WAAW,eAAe;IAC9B,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,uBAAuB,EAAE,MAAM,CAAC;IAChC,sBAAsB,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,qBAAqB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACnC,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7F,MAAM,EAAE,eAAe,CAAC;CACzB;AAaD,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,eAAe,EAAE,SAAS,EAAE,aAAa,GAAG,eAAe,CASvG;AAED,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,aAAa,CAwBtE;AAED,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,KAAK,CAAkB;IAC/B,OAAO,CAAC,KAAK,CAAkB;gBAEnB,UAAU,EAAE,eAAe,EAAE,SAAS,EAAE,aAAa;IAWjE,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,GAAG,IAAI;IAWvG,KAAK,IAAI,gBAAgB;IAwBzB,KAAK,IAAI,IAAI;CAOd"}
@@ -0,0 +1,107 @@
1
+ /**
2
+ * @module patch-scope-controller
3
+ * @description Hard limits on modification scope per run.
4
+ * Prevents "silent large-scale changes" — the #1 agent safety risk.
5
+ * Tracks cumulative state in-memory per session.
6
+ * Role: SCOPE LIMITER only. Does NOT check code quality or path safety.
7
+ */
8
+ const LIMITS = {
9
+ trivial: { maxFilesPerRun: 3, maxDiffLinesPerRun: 100, maxProtectedFilesPerRun: 0, maxCrossPackageTouches: 1 },
10
+ simple: { maxFilesPerRun: 5, maxDiffLinesPerRun: 300, maxProtectedFilesPerRun: 1, maxCrossPackageTouches: 1 },
11
+ moderate: { maxFilesPerRun: 10, maxDiffLinesPerRun: 800, maxProtectedFilesPerRun: 2, maxCrossPackageTouches: 2 },
12
+ complex: { maxFilesPerRun: 20, maxDiffLinesPerRun: 2000, maxProtectedFilesPerRun: 3, maxCrossPackageTouches: 3 },
13
+ massive: { maxFilesPerRun: 40, maxDiffLinesPerRun: 5000, maxProtectedFilesPerRun: 5, maxCrossPackageTouches: 5 },
14
+ };
15
+ const GREENFIELD_MULTIPLIER = 5;
16
+ const MIGRATION_MULTIPLIER = 3;
17
+ export function deriveScopeLimit(complexity, lifecycle) {
18
+ const base = LIMITS[complexity];
19
+ const mult = lifecycle === "greenfield" ? GREENFIELD_MULTIPLIER : lifecycle === "migration" ? MIGRATION_MULTIPLIER : 1;
20
+ return {
21
+ maxFilesPerRun: base.maxFilesPerRun * mult,
22
+ maxDiffLinesPerRun: base.maxDiffLinesPerRun * mult,
23
+ maxProtectedFilesPerRun: base.maxProtectedFilesPerRun * mult,
24
+ maxCrossPackageTouches: base.maxCrossPackageTouches * mult,
25
+ };
26
+ }
27
+ export function detectRepoLifecycle(projectPath) {
28
+ try {
29
+ const { existsSync } = require("node:fs");
30
+ const { join } = require("node:path");
31
+ const { execSync } = require("node:child_process");
32
+ if (!existsSync(join(projectPath, ".git")))
33
+ return "greenfield";
34
+ try {
35
+ const commitCount = execSync("git rev-list --count HEAD", { cwd: projectPath, timeout: 3000 }).toString().trim();
36
+ if (parseInt(commitCount) <= 1)
37
+ return "greenfield";
38
+ }
39
+ catch { /* git error */ }
40
+ // Check for migration signals
41
+ try {
42
+ const fs = require("node:fs");
43
+ const pkg = JSON.parse(fs.readFileSync(join(projectPath, "package.json"), "utf-8"));
44
+ if (pkg.scripts?.migrate || pkg.scripts?.migration)
45
+ return "migration";
46
+ }
47
+ catch { /* no package.json */ }
48
+ return "existing";
49
+ }
50
+ catch {
51
+ return "existing";
52
+ }
53
+ }
54
+ export class PatchScopeController {
55
+ state;
56
+ limit;
57
+ constructor(complexity, lifecycle) {
58
+ this.state = {
59
+ touchedFiles: new Set(),
60
+ totalInserted: 0,
61
+ totalDeleted: 0,
62
+ protectedFilesTouched: new Set(),
63
+ packagesTouched: new Set(),
64
+ };
65
+ this.limit = deriveScopeLimit(complexity, lifecycle);
66
+ }
67
+ recordChange(filePath, insertedLines, deletedLines, isProtected) {
68
+ this.state.touchedFiles.add(filePath);
69
+ this.state.totalInserted += insertedLines;
70
+ this.state.totalDeleted += deletedLines;
71
+ if (isProtected)
72
+ this.state.protectedFilesTouched.add(filePath);
73
+ // Package detection (monorepo)
74
+ const pkgMatch = filePath.match(/^(?:packages|apps|libs)\/([^/]+)\//);
75
+ if (pkgMatch)
76
+ this.state.packagesTouched.add(pkgMatch[1]);
77
+ }
78
+ check() {
79
+ const usage = {
80
+ files: this.state.touchedFiles.size,
81
+ diffLines: this.state.totalInserted + this.state.totalDeleted,
82
+ protectedFiles: this.state.protectedFilesTouched.size,
83
+ packages: this.state.packagesTouched.size,
84
+ };
85
+ if (usage.files > this.limit.maxFilesPerRun) {
86
+ return { allowed: false, reason: `File count ${usage.files} exceeds limit ${this.limit.maxFilesPerRun}`, currentUsage: usage, limits: this.limit };
87
+ }
88
+ if (usage.diffLines > this.limit.maxDiffLinesPerRun) {
89
+ return { allowed: false, reason: `Diff lines ${usage.diffLines} exceeds limit ${this.limit.maxDiffLinesPerRun}`, currentUsage: usage, limits: this.limit };
90
+ }
91
+ if (usage.protectedFiles > this.limit.maxProtectedFilesPerRun) {
92
+ return { allowed: false, reason: `Protected files ${usage.protectedFiles} exceeds limit ${this.limit.maxProtectedFilesPerRun}`, currentUsage: usage, limits: this.limit };
93
+ }
94
+ if (usage.packages > this.limit.maxCrossPackageTouches) {
95
+ return { allowed: false, reason: `Cross-package touches ${usage.packages} exceeds limit ${this.limit.maxCrossPackageTouches}`, currentUsage: usage, limits: this.limit };
96
+ }
97
+ return { allowed: true, currentUsage: usage, limits: this.limit };
98
+ }
99
+ reset() {
100
+ this.state.touchedFiles.clear();
101
+ this.state.totalInserted = 0;
102
+ this.state.totalDeleted = 0;
103
+ this.state.protectedFilesTouched.clear();
104
+ this.state.packagesTouched.clear();
105
+ }
106
+ }
107
+ //# sourceMappingURL=patch-scope-controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"patch-scope-controller.js","sourceRoot":"","sources":["../src/patch-scope-controller.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AA4BH,MAAM,MAAM,GAA6C;IACvD,OAAO,EAAG,EAAE,cAAc,EAAE,CAAC,EAAE,kBAAkB,EAAE,GAAG,EAAE,uBAAuB,EAAE,CAAC,EAAE,sBAAsB,EAAE,CAAC,EAAE;IAC/G,MAAM,EAAI,EAAE,cAAc,EAAE,CAAC,EAAE,kBAAkB,EAAE,GAAG,EAAE,uBAAuB,EAAE,CAAC,EAAE,sBAAsB,EAAE,CAAC,EAAE;IAC/G,QAAQ,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,kBAAkB,EAAE,GAAG,EAAE,uBAAuB,EAAE,CAAC,EAAE,sBAAsB,EAAE,CAAC,EAAE;IAChH,OAAO,EAAG,EAAE,cAAc,EAAE,EAAE,EAAE,kBAAkB,EAAE,IAAI,EAAE,uBAAuB,EAAE,CAAC,EAAE,sBAAsB,EAAE,CAAC,EAAE;IACjH,OAAO,EAAG,EAAE,cAAc,EAAE,EAAE,EAAE,kBAAkB,EAAE,IAAI,EAAE,uBAAuB,EAAE,CAAC,EAAE,sBAAsB,EAAE,CAAC,EAAE;CAClH,CAAC;AAEF,MAAM,qBAAqB,GAAG,CAAC,CAAC;AAChC,MAAM,oBAAoB,GAAG,CAAC,CAAC;AAE/B,MAAM,UAAU,gBAAgB,CAAC,UAA2B,EAAE,SAAwB;IACpF,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;IAChC,MAAM,IAAI,GAAG,SAAS,KAAK,YAAY,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,SAAS,KAAK,WAAW,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC;IACvH,OAAO;QACL,cAAc,EAAE,IAAI,CAAC,cAAc,GAAG,IAAI;QAC1C,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,GAAG,IAAI;QAClD,uBAAuB,EAAE,IAAI,CAAC,uBAAuB,GAAG,IAAI;QAC5D,sBAAsB,EAAE,IAAI,CAAC,sBAAsB,GAAG,IAAI;KAC3D,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,WAAmB;IACrD,IAAI,CAAC;QACH,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,SAAS,CAA6B,CAAC;QACtE,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,WAAW,CAA+B,CAAC;QACpE,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,oBAAoB,CAAwC,CAAC;QAE1F,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;YAAE,OAAO,YAAY,CAAC;QAEhE,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,QAAQ,CAAC,2BAA2B,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;YACjH,IAAI,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC;gBAAE,OAAO,YAAY,CAAC;QACtD,CAAC;QAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC;QAE3B,8BAA8B;QAC9B,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,OAAO,CAAC,SAAS,CAA6B,CAAC;YAC1D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CAA4C,CAAC;YAC/H,IAAI,GAAG,CAAC,OAAO,EAAE,OAAO,IAAI,GAAG,CAAC,OAAO,EAAE,SAAS;gBAAE,OAAO,WAAW,CAAC;QACzE,CAAC;QAAC,MAAM,CAAC,CAAC,qBAAqB,CAAC,CAAC;QAEjC,OAAO,UAAU,CAAC;IACpB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,UAAU,CAAC;IACpB,CAAC;AACH,CAAC;AAED,MAAM,OAAO,oBAAoB;IACvB,KAAK,CAAkB;IACvB,KAAK,CAAkB;IAE/B,YAAY,UAA2B,EAAE,SAAwB;QAC/D,IAAI,CAAC,KAAK,GAAG;YACX,YAAY,EAAE,IAAI,GAAG,EAAE;YACvB,aAAa,EAAE,CAAC;YAChB,YAAY,EAAE,CAAC;YACf,qBAAqB,EAAE,IAAI,GAAG,EAAE;YAChC,eAAe,EAAE,IAAI,GAAG,EAAE;SAC3B,CAAC;QACF,IAAI,CAAC,KAAK,GAAG,gBAAgB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IACvD,CAAC;IAED,YAAY,CAAC,QAAgB,EAAE,aAAqB,EAAE,YAAoB,EAAE,WAAoB;QAC9F,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACtC,IAAI,CAAC,KAAK,CAAC,aAAa,IAAI,aAAa,CAAC;QAC1C,IAAI,CAAC,KAAK,CAAC,YAAY,IAAI,YAAY,CAAC;QACxC,IAAI,WAAW;YAAE,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAEhE,+BAA+B;QAC/B,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;QACtE,IAAI,QAAQ;YAAE,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,CAAC;IAC7D,CAAC;IAED,KAAK;QACH,MAAM,KAAK,GAAG;YACZ,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI;YACnC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY;YAC7D,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,IAAI;YACrD,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI;SAC1C,CAAC;QAEF,IAAI,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;YAC5C,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,KAAK,CAAC,KAAK,kBAAkB,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;QACrJ,CAAC;QACD,IAAI,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC;YACpD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,KAAK,CAAC,SAAS,kBAAkB,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;QAC7J,CAAC;QACD,IAAI,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,uBAAuB,EAAE,CAAC;YAC9D,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,mBAAmB,KAAK,CAAC,cAAc,kBAAkB,IAAI,CAAC,KAAK,CAAC,uBAAuB,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;QAC5K,CAAC;QACD,IAAI,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,sBAAsB,EAAE,CAAC;YACvD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,yBAAyB,KAAK,CAAC,QAAQ,kBAAkB,IAAI,CAAC,KAAK,CAAC,sBAAsB,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;QAC3K,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;IACpE,CAAC;IAED,KAAK;QACH,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QAChC,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,CAAC,CAAC;QAC7B,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,KAAK,EAAE,CAAC;QACzC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;IACrC,CAAC;CACF"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * @module patch-transaction
3
+ * @description Patch transaction journal for atomic file modifications.
4
+ * Records before/after snapshots of all file mutations.
5
+ * Enables deterministic rollback on failure.
6
+ * NO LLM, pure file I/O.
7
+ */
8
+ export interface PatchJournalEntry {
9
+ id: string;
10
+ tool: string;
11
+ path: string;
12
+ beforeSnapshot: string;
13
+ timestamp: number;
14
+ wasNewFile: boolean;
15
+ }
16
+ export interface RollbackPoint {
17
+ id: string;
18
+ entries: PatchJournalEntry[];
19
+ reason: string;
20
+ createdAt: number;
21
+ }
22
+ export declare class PatchTransactionJournal {
23
+ private entries;
24
+ private rollbackPoints;
25
+ private journalPath;
26
+ private entryCounter;
27
+ constructor(projectPath: string, sessionId: string);
28
+ /**
29
+ * Record a file's state BEFORE mutation.
30
+ * Call this before every file_edit / file_write.
31
+ */
32
+ recordBefore(tool: string, filePath: string): string;
33
+ /**
34
+ * Create a rollback point — snapshot of all mutations so far.
35
+ * Called when patchRisk >= threshold or changedFiles >= threshold.
36
+ */
37
+ createRollbackPoint(reason: string): RollbackPoint;
38
+ /**
39
+ * Execute rollback — restore all files to their before state.
40
+ * Processes entries in reverse order (last modified first).
41
+ */
42
+ rollback(pointId?: string): {
43
+ restored: number;
44
+ errors: string[];
45
+ };
46
+ /** Get total number of recorded mutations */
47
+ get size(): number;
48
+ /** Reset for new run */
49
+ reset(): void;
50
+ /** Check if a rollback point should be created (deterministic rule) */
51
+ shouldCreateRollbackPoint(patchRisk: number, changedFilesCount: number): boolean;
52
+ }
53
+ //# sourceMappingURL=patch-transaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"patch-transaction.d.ts","sourceRoot":"","sources":["../src/patch-transaction.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,uBAAuB;IAClC,OAAO,CAAC,OAAO,CAA2B;IAC1C,OAAO,CAAC,cAAc,CAAuB;IAC7C,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,YAAY,CAAK;gBAEb,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAMlD;;;OAGG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IAiCpD;;;OAGG;IACH,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa;IAYlD;;;OAGG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE;IAiClE,6CAA6C;IAC7C,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,wBAAwB;IACxB,KAAK,IAAI,IAAI;IAMb,uEAAuE;IACvE,yBAAyB,CACvB,SAAS,EAAE,MAAM,EACjB,iBAAiB,EAAE,MAAM,GACxB,OAAO;CAGX"}
@@ -0,0 +1,119 @@
1
+ /**
2
+ * @module patch-transaction
3
+ * @description Patch transaction journal for atomic file modifications.
4
+ * Records before/after snapshots of all file mutations.
5
+ * Enables deterministic rollback on failure.
6
+ * NO LLM, pure file I/O.
7
+ */
8
+ import { readFileSync, writeFileSync, mkdirSync, appendFileSync } from "node:fs";
9
+ import { join, dirname } from "node:path";
10
+ export class PatchTransactionJournal {
11
+ entries = [];
12
+ rollbackPoints = [];
13
+ journalPath;
14
+ entryCounter = 0;
15
+ constructor(projectPath, sessionId) {
16
+ const sessionDir = join(projectPath, ".yuan", "sessions", sessionId);
17
+ mkdirSync(sessionDir, { recursive: true });
18
+ this.journalPath = join(sessionDir, "patch-journal.jsonl");
19
+ }
20
+ /**
21
+ * Record a file's state BEFORE mutation.
22
+ * Call this before every file_edit / file_write.
23
+ */
24
+ recordBefore(tool, filePath) {
25
+ const id = `patch-${++this.entryCounter}-${Date.now()}`;
26
+ let beforeSnapshot = "";
27
+ let wasNewFile = true;
28
+ try {
29
+ beforeSnapshot = readFileSync(filePath, "utf-8");
30
+ wasNewFile = false;
31
+ }
32
+ catch {
33
+ // File doesn't exist yet (new file creation)
34
+ beforeSnapshot = "";
35
+ wasNewFile = true;
36
+ }
37
+ const entry = {
38
+ id,
39
+ tool,
40
+ path: filePath,
41
+ beforeSnapshot,
42
+ timestamp: Date.now(),
43
+ wasNewFile,
44
+ };
45
+ this.entries.push(entry);
46
+ // Persist to JSONL
47
+ try {
48
+ appendFileSync(this.journalPath, JSON.stringify(entry) + "\n");
49
+ }
50
+ catch { /* non-fatal */ }
51
+ return id;
52
+ }
53
+ /**
54
+ * Create a rollback point — snapshot of all mutations so far.
55
+ * Called when patchRisk >= threshold or changedFiles >= threshold.
56
+ */
57
+ createRollbackPoint(reason) {
58
+ const point = {
59
+ id: `rollback-${Date.now()}`,
60
+ entries: [...this.entries],
61
+ reason,
62
+ createdAt: Date.now(),
63
+ };
64
+ this.rollbackPoints.push(point);
65
+ return point;
66
+ }
67
+ /**
68
+ * Execute rollback — restore all files to their before state.
69
+ * Processes entries in reverse order (last modified first).
70
+ */
71
+ rollback(pointId) {
72
+ const point = pointId
73
+ ? this.rollbackPoints.find(p => p.id === pointId)
74
+ : this.rollbackPoints[this.rollbackPoints.length - 1];
75
+ if (!point) {
76
+ return { restored: 0, errors: ["No rollback point found"] };
77
+ }
78
+ let restored = 0;
79
+ const errors = [];
80
+ // Reverse order — undo last change first
81
+ for (const entry of [...point.entries].reverse()) {
82
+ try {
83
+ if (entry.wasNewFile) {
84
+ // File was newly created — delete it
85
+ const { unlinkSync } = require("node:fs");
86
+ try {
87
+ unlinkSync(entry.path);
88
+ }
89
+ catch { /* may already be gone */ }
90
+ }
91
+ else {
92
+ // File existed — restore original content
93
+ mkdirSync(dirname(entry.path), { recursive: true });
94
+ writeFileSync(entry.path, entry.beforeSnapshot);
95
+ }
96
+ restored++;
97
+ }
98
+ catch (err) {
99
+ errors.push(`Failed to restore ${entry.path}: ${err instanceof Error ? err.message : String(err)}`);
100
+ }
101
+ }
102
+ return { restored, errors };
103
+ }
104
+ /** Get total number of recorded mutations */
105
+ get size() {
106
+ return this.entries.length;
107
+ }
108
+ /** Reset for new run */
109
+ reset() {
110
+ this.entries = [];
111
+ this.rollbackPoints = [];
112
+ this.entryCounter = 0;
113
+ }
114
+ /** Check if a rollback point should be created (deterministic rule) */
115
+ shouldCreateRollbackPoint(patchRisk, changedFilesCount) {
116
+ return patchRisk >= 0.7 || changedFilesCount >= 5;
117
+ }
118
+ }
119
+ //# sourceMappingURL=patch-transaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"patch-transaction.js","sourceRoot":"","sources":["../src/patch-transaction.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * @module pre-write-validator
3
+ * @description Validates code quality BEFORE writing to file.
4
+ * Catches: TODO/stub, unbalanced braces, empty functions, any types.
5
+ * Context-aware: checks changed hunks, respects file role.
6
+ * Role: QUALITY GATE only. Does NOT protect paths or manage budget.
7
+ */
8
+ export type FileRole = "source" | "test" | "config" | "doc" | "fixture" | "generated";
9
+ export interface ValidationContext {
10
+ path: string;
11
+ language?: string;
12
+ fileRole: FileRole;
13
+ changedHunksOnly: boolean;
14
+ }
15
+ export interface PreWriteIssue {
16
+ severity: "error" | "warning";
17
+ message: string;
18
+ line?: number;
19
+ }
20
+ export interface PreWriteResult {
21
+ valid: boolean;
22
+ issues: PreWriteIssue[];
23
+ blockedReason?: string;
24
+ }
25
+ /** Detect file role from path */
26
+ export declare function detectFileRole(path: string): FileRole;
27
+ /** Validate content before writing */
28
+ export declare function validateBeforeWrite(content: string, ctx: ValidationContext): PreWriteResult;
29
+ //# sourceMappingURL=pre-write-validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pre-write-validator.d.ts","sourceRoot":"","sources":["../src/pre-write-validator.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS,GAAG,WAAW,CAAC;AAEtF,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,QAAQ,CAAC;IACnB,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,iCAAiC;AACjC,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAOrD;AAED,sCAAsC;AACtC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,iBAAiB,GAAG,cAAc,CA6E3F"}
@@ -0,0 +1,97 @@
1
+ /**
2
+ * @module pre-write-validator
3
+ * @description Validates code quality BEFORE writing to file.
4
+ * Catches: TODO/stub, unbalanced braces, empty functions, any types.
5
+ * Context-aware: checks changed hunks, respects file role.
6
+ * Role: QUALITY GATE only. Does NOT protect paths or manage budget.
7
+ */
8
+ /** Detect file role from path */
9
+ export function detectFileRole(path) {
10
+ if (/\.(test|spec)\.[jt]sx?$/.test(path))
11
+ return "test";
12
+ if (/\.(md|txt|rst|adoc)$/.test(path))
13
+ return "doc";
14
+ if (/(fixture|mock|stub|sample|example)/.test(path))
15
+ return "fixture";
16
+ if (/(dist|build|\.next|__generated__|\.gen\.)/.test(path))
17
+ return "generated";
18
+ if (/\.(json|yaml|yml|toml|ini|conf|config)/.test(path) || /(tsconfig|package\.json|\.eslintrc)/.test(path))
19
+ return "config";
20
+ return "source";
21
+ }
22
+ /** Validate content before writing */
23
+ export function validateBeforeWrite(content, ctx) {
24
+ const issues = [];
25
+ const role = ctx.fileRole;
26
+ // Generated files: never validate
27
+ if (role === "generated")
28
+ return { valid: true, issues: [] };
29
+ // Config files: minimal validation
30
+ if (role === "config") {
31
+ // Check JSON validity for .json files
32
+ if (ctx.path.endsWith(".json")) {
33
+ try {
34
+ JSON.parse(content);
35
+ }
36
+ catch {
37
+ issues.push({ severity: "error", message: "Invalid JSON" });
38
+ }
39
+ }
40
+ return { valid: issues.filter(i => i.severity === "error").length === 0, issues };
41
+ }
42
+ // Source/test files: full validation
43
+ const lines = content.split("\n");
44
+ // 1. TODO/FIXME/HACK in source (not test/doc/fixture)
45
+ if (role === "source") {
46
+ for (let i = 0; i < lines.length; i++) {
47
+ const line = lines[i];
48
+ // Only flag if it's a code comment with TODO, not a string/doc
49
+ if (/\/\/\s*(TODO|FIXME|HACK|XXX)\b/i.test(line) || /\/\*\s*(TODO|FIXME|HACK)\b/i.test(line)) {
50
+ issues.push({ severity: "error", message: `TODO/FIXME/HACK comment at line ${i + 1}`, line: i + 1 });
51
+ }
52
+ }
53
+ }
54
+ // 2. Empty function body (not in interfaces/abstract/test)
55
+ if (role === "source") {
56
+ const emptyFunc = content.match(/\)\s*\{[\s\n]*\}/g);
57
+ if (emptyFunc && emptyFunc.length > 0) {
58
+ // Check it's not an interface or abstract method
59
+ for (const match of emptyFunc) {
60
+ const matchIdx = content.indexOf(match);
61
+ const preceding = content.slice(Math.max(0, matchIdx - 50), matchIdx);
62
+ if (!/interface|abstract|noop|intentional/i.test(preceding)) {
63
+ issues.push({ severity: "error", message: "Empty function body detected" });
64
+ break;
65
+ }
66
+ }
67
+ }
68
+ }
69
+ // 3. Brace balance
70
+ const opens = (content.match(/\{/g) ?? []).length;
71
+ const closes = (content.match(/\}/g) ?? []).length;
72
+ if (Math.abs(opens - closes) > 1) {
73
+ issues.push({ severity: "error", message: `Unbalanced braces: ${opens} opens, ${closes} closes` });
74
+ }
75
+ // 4. TypeScript: 'any' type usage (source only, not test)
76
+ if (role === "source" && /\.tsx?$/.test(ctx.path)) {
77
+ const anyMatches = content.match(/:\s*any\b/g);
78
+ if (anyMatches && anyMatches.length > 0) {
79
+ issues.push({ severity: "warning", message: `'any' type used ${anyMatches.length} time(s)` });
80
+ }
81
+ }
82
+ // 5. console.log in production code (not test)
83
+ if (role === "source" && /console\.(log|warn|error)\(/.test(content)) {
84
+ issues.push({ severity: "warning", message: "console.log left in production code" });
85
+ }
86
+ // 6. throw new Error("not implemented") — stub
87
+ if (role === "source" && /throw\s+new\s+Error\s*\(\s*["']not\s+implemented["']\s*\)/i.test(content)) {
88
+ issues.push({ severity: "error", message: "Stub implementation: throw new Error('not implemented')" });
89
+ }
90
+ const errorCount = issues.filter(i => i.severity === "error").length;
91
+ return {
92
+ valid: errorCount === 0,
93
+ issues,
94
+ blockedReason: errorCount > 0 ? `${errorCount} quality issue(s) found` : undefined,
95
+ };
96
+ }
97
+ //# sourceMappingURL=pre-write-validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pre-write-validator.js","sourceRoot":"","sources":["../src/pre-write-validator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * @module prompt-builder
3
+ * @description YUAN PromptBuilder -- dumb renderer.
4
+ *
5
+ * Rules:
6
+ * 1. PromptEnvelope -> string conversion only
7
+ * 2. No policy decisions (mode, budget, role interpretation forbidden)
8
+ * 3. Section order: core -> policy -> role -> context -> ephemeral -> reinforce
9
+ * 4. When token budget exceeded, droppable sections are removed first
10
+ *
11
+ * YUA reference: prompt-builder.ts (1436 lines) -- YUAN is much thinner
12
+ */
13
+ import type { PromptEnvelope } from "./prompt-envelope.js";
14
+ /**
15
+ * PromptEnvelope -> final system prompt string.
16
+ * No decisions. Just concatenation.
17
+ *
18
+ * @param envelope - The compiled prompt envelope from PromptRuntime
19
+ * @param maxTokens - Optional token budget. If set, droppable sections are
20
+ * removed (lowest priority first) until budget is met.
21
+ * Required sections (droppable=false) are never removed.
22
+ * @returns Final system prompt string ready for LLM consumption
23
+ */
24
+ export declare function buildPrompt(envelope: PromptEnvelope, maxTokens?: number): string;
25
+ //# sourceMappingURL=prompt-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-builder.d.ts","sourceRoot":"","sources":["../src/prompt-builder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAiB,MAAM,sBAAsB,CAAC;AA8B1E;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,cAAc,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAwChF"}