wotann 0.5.39 → 0.5.40

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 (130) hide show
  1. package/dist/autopilot/completion-oracle.d.ts +71 -0
  2. package/dist/autopilot/completion-oracle.d.ts.map +1 -1
  3. package/dist/autopilot/completion-oracle.js +69 -2
  4. package/dist/autopilot/completion-oracle.js.map +1 -1
  5. package/dist/context/compaction-floor.d.ts +100 -0
  6. package/dist/context/compaction-floor.d.ts.map +1 -0
  7. package/dist/context/compaction-floor.js +94 -0
  8. package/dist/context/compaction-floor.js.map +1 -0
  9. package/dist/daemon/kairos-rpc.d.ts +1 -0
  10. package/dist/daemon/kairos-rpc.d.ts.map +1 -1
  11. package/dist/daemon/kairos-rpc.js +24 -0
  12. package/dist/daemon/kairos-rpc.js.map +1 -1
  13. package/dist/daemon/rpc-handlers/ports-rpc.d.ts +100 -0
  14. package/dist/daemon/rpc-handlers/ports-rpc.d.ts.map +1 -0
  15. package/dist/daemon/rpc-handlers/ports-rpc.js +278 -0
  16. package/dist/daemon/rpc-handlers/ports-rpc.js.map +1 -0
  17. package/dist/hooks/agentmemory-event-taxonomy.d.ts +144 -0
  18. package/dist/hooks/agentmemory-event-taxonomy.d.ts.map +1 -0
  19. package/dist/hooks/agentmemory-event-taxonomy.js +85 -0
  20. package/dist/hooks/agentmemory-event-taxonomy.js.map +1 -0
  21. package/dist/hooks/built-in.d.ts.map +1 -1
  22. package/dist/hooks/built-in.js +7 -3
  23. package/dist/hooks/built-in.js.map +1 -1
  24. package/dist/index.js +2 -1
  25. package/dist/index.js.map +1 -1
  26. package/dist/lib.d.ts +1 -1
  27. package/dist/lib.d.ts.map +1 -1
  28. package/dist/lib.js +1 -1
  29. package/dist/lib.js.map +1 -1
  30. package/dist/memory/injection-scanner.d.ts +78 -0
  31. package/dist/memory/injection-scanner.d.ts.map +1 -0
  32. package/dist/memory/injection-scanner.js +204 -0
  33. package/dist/memory/injection-scanner.js.map +1 -0
  34. package/dist/middleware/ttsr.d.ts +79 -3
  35. package/dist/middleware/ttsr.d.ts.map +1 -1
  36. package/dist/middleware/ttsr.js +136 -16
  37. package/dist/middleware/ttsr.js.map +1 -1
  38. package/dist/orchestration/ports-bridge.d.ts +325 -0
  39. package/dist/orchestration/ports-bridge.d.ts.map +1 -0
  40. package/dist/orchestration/ports-bridge.js +712 -0
  41. package/dist/orchestration/ports-bridge.js.map +1 -0
  42. package/dist/orchestration/textgrad-refinement.d.ts +123 -0
  43. package/dist/orchestration/textgrad-refinement.d.ts.map +1 -0
  44. package/dist/orchestration/textgrad-refinement.js +111 -0
  45. package/dist/orchestration/textgrad-refinement.js.map +1 -0
  46. package/dist/prompt/engine.d.ts +15 -0
  47. package/dist/prompt/engine.d.ts.map +1 -1
  48. package/dist/prompt/engine.js +20 -7
  49. package/dist/prompt/engine.js.map +1 -1
  50. package/dist/prompt/modules/capabilities.d.ts.map +1 -1
  51. package/dist/prompt/modules/capabilities.js +1 -0
  52. package/dist/prompt/modules/capabilities.js.map +1 -1
  53. package/dist/prompt/modules/caveman.d.ts.map +1 -1
  54. package/dist/prompt/modules/caveman.js +1 -0
  55. package/dist/prompt/modules/caveman.js.map +1 -1
  56. package/dist/prompt/modules/conventions.d.ts.map +1 -1
  57. package/dist/prompt/modules/conventions.js +1 -0
  58. package/dist/prompt/modules/conventions.js.map +1 -1
  59. package/dist/prompt/modules/identity.d.ts.map +1 -1
  60. package/dist/prompt/modules/identity.js +1 -0
  61. package/dist/prompt/modules/identity.js.map +1 -1
  62. package/dist/prompt/modules/index.d.ts +29 -0
  63. package/dist/prompt/modules/index.d.ts.map +1 -1
  64. package/dist/prompt/modules/index.js +51 -9
  65. package/dist/prompt/modules/index.js.map +1 -1
  66. package/dist/prompt/modules/llms-txt.d.ts.map +1 -1
  67. package/dist/prompt/modules/llms-txt.js +2 -4
  68. package/dist/prompt/modules/llms-txt.js.map +1 -1
  69. package/dist/prompt/modules/safety.d.ts.map +1 -1
  70. package/dist/prompt/modules/safety.js +1 -0
  71. package/dist/prompt/modules/safety.js.map +1 -1
  72. package/dist/prompt/modules/security.d.ts.map +1 -1
  73. package/dist/prompt/modules/security.js +1 -0
  74. package/dist/prompt/modules/security.js.map +1 -1
  75. package/dist/prompt/modules/skills.d.ts.map +1 -1
  76. package/dist/prompt/modules/skills.js +1 -0
  77. package/dist/prompt/modules/skills.js.map +1 -1
  78. package/dist/prompt/modules/tools.d.ts.map +1 -1
  79. package/dist/prompt/modules/tools.js +1 -0
  80. package/dist/prompt/modules/tools.js.map +1 -1
  81. package/dist/prompt/modules/user.d.ts.map +1 -1
  82. package/dist/prompt/modules/user.js +1 -0
  83. package/dist/prompt/modules/user.js.map +1 -1
  84. package/dist/providers/credential-pool.d.ts +45 -1
  85. package/dist/providers/credential-pool.d.ts.map +1 -1
  86. package/dist/providers/credential-pool.js +94 -1
  87. package/dist/providers/credential-pool.js.map +1 -1
  88. package/dist/providers/sticky-rotation-wire.d.ts +133 -0
  89. package/dist/providers/sticky-rotation-wire.d.ts.map +1 -0
  90. package/dist/providers/sticky-rotation-wire.js +185 -0
  91. package/dist/providers/sticky-rotation-wire.js.map +1 -0
  92. package/dist/runtime-hooks/ttsr-rule.d.ts +82 -0
  93. package/dist/runtime-hooks/ttsr-rule.d.ts.map +1 -0
  94. package/dist/runtime-hooks/ttsr-rule.js +207 -0
  95. package/dist/runtime-hooks/ttsr-rule.js.map +1 -0
  96. package/dist/runtime-hooks/ttsr-runner.d.ts +129 -0
  97. package/dist/runtime-hooks/ttsr-runner.d.ts.map +1 -0
  98. package/dist/runtime-hooks/ttsr-runner.js +193 -0
  99. package/dist/runtime-hooks/ttsr-runner.js.map +1 -0
  100. package/dist/runtime-hooks/ttsr-scope.d.ts +115 -0
  101. package/dist/runtime-hooks/ttsr-scope.d.ts.map +1 -0
  102. package/dist/runtime-hooks/ttsr-scope.js +378 -0
  103. package/dist/runtime-hooks/ttsr-scope.js.map +1 -0
  104. package/dist/sandbox/unified-exec.d.ts.map +1 -1
  105. package/dist/sandbox/unified-exec.js +6 -1
  106. package/dist/sandbox/unified-exec.js.map +1 -1
  107. package/dist/skills/cli-anything.d.ts.map +1 -1
  108. package/dist/skills/cli-anything.js +4 -1
  109. package/dist/skills/cli-anything.js.map +1 -1
  110. package/dist/skills/limits.d.ts +86 -0
  111. package/dist/skills/limits.d.ts.map +1 -0
  112. package/dist/skills/limits.js +140 -0
  113. package/dist/skills/limits.js.map +1 -0
  114. package/dist/skills/loader.d.ts +9 -0
  115. package/dist/skills/loader.d.ts.map +1 -1
  116. package/dist/skills/loader.js +29 -1
  117. package/dist/skills/loader.js.map +1 -1
  118. package/dist/storage/session-artifacts.d.ts +105 -0
  119. package/dist/storage/session-artifacts.d.ts.map +1 -0
  120. package/dist/storage/session-artifacts.js +198 -0
  121. package/dist/storage/session-artifacts.js.map +1 -0
  122. package/dist/tools/workspace-pack.d.ts +97 -0
  123. package/dist/tools/workspace-pack.d.ts.map +1 -0
  124. package/dist/tools/workspace-pack.js +228 -0
  125. package/dist/tools/workspace-pack.js.map +1 -0
  126. package/dist/tui/composer-history.d.ts +99 -0
  127. package/dist/tui/composer-history.d.ts.map +1 -0
  128. package/dist/tui/composer-history.js +169 -0
  129. package/dist/tui/composer-history.js.map +1 -0
  130. package/package.json +1 -1
@@ -15,9 +15,49 @@
15
15
  * - llm-judge: Ask a model "does this satisfy the original request?"
16
16
  */
17
17
  import type { CompletionCriterion, VerificationEvidence } from "./types.js";
18
+ import { type ImportGraph, type TestCatalog } from "../optimize/ripple-test-scope.js";
19
+ /**
20
+ * Opt-in ripple-test-scope context for the `tests-pass` criterion.
21
+ *
22
+ * When provided, the test runner narrows `npx vitest run` to only the
23
+ * tests whose covered source files overlap with the changed file set.
24
+ * This is OPT-IN; default behavior is unchanged (full suite still runs).
25
+ *
26
+ * Ported from EveryInc/compound-engineering-plugin v3.4.0 (ce-simplify-code).
27
+ */
28
+ export interface RippleScopeContext {
29
+ /** Files the user (or autopilot) just edited. */
30
+ readonly changedFiles: readonly string[];
31
+ /** Import graph for the source tree. */
32
+ readonly graph: ImportGraph;
33
+ /** Index of test → covered source files. */
34
+ readonly allTests: TestCatalog;
35
+ /**
36
+ * Hop limit override. Default 1 (matches the ce-simplify-code "blast radius"
37
+ * recommendation). Values >4 saturate at 4.
38
+ */
39
+ readonly maxHops?: number;
40
+ /**
41
+ * Optional sink for the metric line. Defaults to console.error so it's
42
+ * visible during autopilot runs but doesn't pollute stdout (which may be
43
+ * machine-parsed). Tests inject a recorder.
44
+ */
45
+ readonly onMetric?: (line: string) => void;
46
+ }
18
47
  export interface OracleConfig {
19
48
  readonly workingDir: string;
20
49
  readonly threshold: number;
50
+ /**
51
+ * Opt-in ripple-test-scope context. When set AND the criterion (or oracle)
52
+ * has `useRippleScope: true`, the tests-pass step narrows vitest to the
53
+ * intersected test files. Absence preserves current full-suite behavior.
54
+ */
55
+ readonly rippleScope?: RippleScopeContext;
56
+ /**
57
+ * Default `useRippleScope` for ALL criteria. Individual criterion configs
58
+ * can override (criterion.config.useRippleScope). Default false (opt-in).
59
+ */
60
+ readonly useRippleScope?: boolean;
21
61
  }
22
62
  /**
23
63
  * Evaluate all completion criteria and return weighted score + evidence.
@@ -60,4 +100,35 @@ export declare function evaluateCompletionFromEvidence(criteria: readonly Comple
60
100
  * Get default completion criteria for common task types.
61
101
  */
62
102
  export declare function getDefaultCriteria(taskType: "code" | "ui" | "docs" | "test"): readonly CompletionCriterion[];
103
+ /**
104
+ * Build the vitest invocation for the `tests-pass` criterion.
105
+ *
106
+ * Default: `npx vitest run --reporter=dot` (full suite — unchanged).
107
+ *
108
+ * When ripple scope is opt-in (criterion.config.useRippleScope === true OR
109
+ * oracle-level config.useRippleScope === true) AND a `rippleScope` context
110
+ * is supplied, we call selectRippleTests and pass only the matched test
111
+ * file paths to vitest. We also emit a metric line:
112
+ *
113
+ * "ran X of Y tests (ripple-narrowed)"
114
+ *
115
+ * Edge cases:
116
+ * - changedFiles is empty -> we have nothing to scope on -> fall through to
117
+ * full suite (default-true contract from the spec: ripple active when we
118
+ * HAVE a changed-files list; this protects against accidental zero-test
119
+ * runs from an empty edit set).
120
+ * - selectRippleTests returns saturated:true -> the zone grew on the last
121
+ * hop, suggesting the change ripples broadly; fall back to full suite
122
+ * rather than over-trust a partial graph.
123
+ * - matched test list is empty (no test covers any changed file) -> still
124
+ * fall back to full suite (we'd rather over-test than miss a regression).
125
+ *
126
+ * Exported for unit testing the wire decision logic.
127
+ *
128
+ * @internal
129
+ */
130
+ export declare function buildTestsPassCommand(criterion: CompletionCriterion, config: OracleConfig): {
131
+ command: string;
132
+ metricLine: string | undefined;
133
+ };
63
134
  //# sourceMappingURL=completion-oracle.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"completion-oracle.d.ts","sourceRoot":"","sources":["../../src/autopilot/completion-oracle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAMH,OAAO,KAAK,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAO5E,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,SAAS,mBAAmB,EAAE,EACxC,MAAM,EAAE,YAAY,EACpB,SAAS,CAAC,EAAE;IACV,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC5E,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/F,iBAAiB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;CAC7D,GACA,OAAO,CAAC;IACT,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,SAAS,oBAAoB,EAAE,CAAC;CAC3C,CAAC,CA0JD;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,8BAA8B,CAC5C,QAAQ,EAAE,SAAS,mBAAmB,EAAE,EACxC,oBAAoB,EAAE,SAAS,oBAAoB,EAAE,EACrD,SAAS,EAAE,MAAM,GAChB;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,SAAS,oBAAoB,EAAE,CAAA;CAAE,CA2BlF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,GACxC,SAAS,mBAAmB,EAAE,CA0DhC"}
1
+ {"version":3,"file":"completion-oracle.d.ts","sourceRoot":"","sources":["../../src/autopilot/completion-oracle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAMH,OAAO,KAAK,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAM5E,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,WAAW,EACjB,MAAM,kCAAkC,CAAC;AAE1C;;;;;;;;GAQG;AACH,MAAM,WAAW,kBAAkB;IACjC,iDAAiD;IACjD,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,wCAAwC;IACxC,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B,4CAA4C;IAC5C,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/B;;;OAGG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5C;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B;;;;OAIG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,kBAAkB,CAAC;IAC1C;;;OAGG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;CACnC;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,SAAS,mBAAmB,EAAE,EACxC,MAAM,EAAE,YAAY,EACpB,SAAS,CAAC,EAAE;IACV,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC5E,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/F,iBAAiB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;CAC7D,GACA,OAAO,CAAC;IACT,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,SAAS,oBAAoB,EAAE,CAAC;CAC3C,CAAC,CAgKD;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,8BAA8B,CAC5C,QAAQ,EAAE,SAAS,mBAAmB,EAAE,EACxC,oBAAoB,EAAE,SAAS,oBAAoB,EAAE,EACrD,SAAS,EAAE,MAAM,GAChB;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,SAAS,oBAAoB,EAAE,CAAA;CAAE,CA2BlF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,GACxC,SAAS,mBAAmB,EAAE,CA0DhC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,mBAAmB,EAC9B,MAAM,EAAE,YAAY,GACnB;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAiCrD"}
@@ -19,6 +19,7 @@ import { join } from "node:path";
19
19
  import { tmpdir } from "node:os";
20
20
  import { buildShellCommand } from "../utils/platform.js";
21
21
  import { captureScreenshot as nativeCaptureScreenshot, extractTextFromImage, verifyVisual, } from "../testing/visual-verifier.js";
22
+ import { selectRippleTests, } from "../optimize/ripple-test-scope.js";
22
23
  /**
23
24
  * Evaluate all completion criteria and return weighted score + evidence.
24
25
  */
@@ -33,9 +34,15 @@ export async function evaluateCompletion(task, criteria, config, callbacks) {
33
34
  let evidenceText = "";
34
35
  switch (criterion.type) {
35
36
  case "tests-pass": {
36
- const result = runSilentCommand("npx vitest run --reporter=dot", config.workingDir);
37
+ const { command, metricLine } = buildTestsPassCommand(criterion, config);
38
+ if (metricLine && config.rippleScope?.onMetric) {
39
+ config.rippleScope.onMetric(metricLine);
40
+ }
41
+ const result = runSilentCommand(command, config.workingDir);
37
42
  passed = result.success;
38
- evidenceText = result.output.slice(-500);
43
+ // Prepend the metric line so it shows up in evidence (truncated to 500).
44
+ const combined = metricLine ? `${metricLine}\n${result.output}` : result.output;
45
+ evidenceText = combined.slice(-500);
39
46
  break;
40
47
  }
41
48
  case "typecheck-pass": {
@@ -258,6 +265,66 @@ export function getDefaultCriteria(taskType) {
258
265
  ];
259
266
  }
260
267
  }
268
+ /**
269
+ * Build the vitest invocation for the `tests-pass` criterion.
270
+ *
271
+ * Default: `npx vitest run --reporter=dot` (full suite — unchanged).
272
+ *
273
+ * When ripple scope is opt-in (criterion.config.useRippleScope === true OR
274
+ * oracle-level config.useRippleScope === true) AND a `rippleScope` context
275
+ * is supplied, we call selectRippleTests and pass only the matched test
276
+ * file paths to vitest. We also emit a metric line:
277
+ *
278
+ * "ran X of Y tests (ripple-narrowed)"
279
+ *
280
+ * Edge cases:
281
+ * - changedFiles is empty -> we have nothing to scope on -> fall through to
282
+ * full suite (default-true contract from the spec: ripple active when we
283
+ * HAVE a changed-files list; this protects against accidental zero-test
284
+ * runs from an empty edit set).
285
+ * - selectRippleTests returns saturated:true -> the zone grew on the last
286
+ * hop, suggesting the change ripples broadly; fall back to full suite
287
+ * rather than over-trust a partial graph.
288
+ * - matched test list is empty (no test covers any changed file) -> still
289
+ * fall back to full suite (we'd rather over-test than miss a regression).
290
+ *
291
+ * Exported for unit testing the wire decision logic.
292
+ *
293
+ * @internal
294
+ */
295
+ export function buildTestsPassCommand(criterion, config) {
296
+ const fallback = { command: "npx vitest run --reporter=dot", metricLine: undefined };
297
+ const criterionOptIn = criterion.config?.["useRippleScope"];
298
+ const oracleDefault = config.useRippleScope ?? false;
299
+ const useRipple = criterionOptIn === undefined ? oracleDefault : criterionOptIn === true;
300
+ if (!useRipple)
301
+ return fallback;
302
+ const ripple = config.rippleScope;
303
+ if (!ripple)
304
+ return fallback;
305
+ if (ripple.changedFiles.length === 0)
306
+ return fallback;
307
+ const totalTests = ripple.allTests.coverage.size;
308
+ if (totalTests === 0)
309
+ return fallback;
310
+ const selection = selectRippleTests({
311
+ editedFiles: ripple.changedFiles,
312
+ graph: ripple.graph,
313
+ tests: ripple.allTests,
314
+ ...(ripple.maxHops !== undefined ? { maxHops: ripple.maxHops } : {}),
315
+ });
316
+ if (selection.saturated || selection.tests.length === 0)
317
+ return fallback;
318
+ // Sanitize: only allow whitelist chars to keep the shell quoting trivial.
319
+ // (Test paths are repo-controlled; defense in depth.)
320
+ const safe = selection.tests.filter((t) => /^[a-zA-Z0-9._/-]+$/.test(t));
321
+ if (safe.length === 0)
322
+ return fallback;
323
+ const args = safe.join(" ");
324
+ const command = `npx vitest run --reporter=dot ${args}`;
325
+ const metricLine = `ran ${safe.length} of ${totalTests} tests (ripple-narrowed)`;
326
+ return { command, metricLine };
327
+ }
261
328
  /** Run a known-safe command. Only call with hardcoded strings — never interpolate user input. */
262
329
  function runSilentCommand(cmd, cwd) {
263
330
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"completion-oracle.js","sourceRoot":"","sources":["../../src/autopilot/completion-oracle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"completion-oracle.js","sourceRoot":"","sources":["../../src/autopilot/completion-oracle.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,100 @@
1
+ /**
2
+ * Auto-compaction floor — ported from Hmbown/DeepSeek-TUI's compaction.rs
3
+ * (the `MINIMUM_AUTO_COMPACTION_TOKENS` constant + per-model gating).
4
+ *
5
+ * WHAT: A token floor below which automatic compaction is refused regardless
6
+ * of any percentage threshold. `shouldCompact(tokensUsed, opts)` returns
7
+ * `false` until the floor is crossed; once crossed, it defers to
8
+ * `opts.threshold`.
9
+ *
10
+ * WHY: V4-class providers (Claude Sonnet 4.5+ / 4.6 / 4.7 with 1M context)
11
+ * benefit enormously from prefix-cache hits. Compaction rewrites the
12
+ * stable conversation prefix, which destroys the KV cache. At low token
13
+ * counts the prefix cache is healthy and compaction's cost (full
14
+ * re-prefill at miss prices) dwarfs its benefit (a tiny budget reclaim).
15
+ * Above the floor compaction can still be net-positive — cache is already
16
+ * pressured, the prefix has drifted, and freeing budget matters.
17
+ *
18
+ * The 500K floor for 1M-window models matches Hmbown/DeepSeek-TUI's
19
+ * v0.8.11 finding: compacting before 500K used (i.e. before 50% of the
20
+ * window) consistently loses more on the cache miss than it gains in
21
+ * budget. Smaller models (Haiku, Gemma, etc.) have proportionally smaller
22
+ * floors.
23
+ *
24
+ * WHERE: Wire into the auto-compaction trigger. Before deciding to compact
25
+ * on tokens-used % threshold-percentage, call `shouldCompact()` to gate
26
+ * the decision. Manual `/compact` should bypass this floor — it's an
27
+ * explicit user agency override.
28
+ *
29
+ * HOW: Look up the model's floor in `PROVIDER_COMPACTION_FLOORS`. If the
30
+ * model isn't found, fall back to `default` (100K). If `tokensUsed`
31
+ * is below the floor, return `false`. Otherwise, return whether
32
+ * `tokensUsed >= opts.threshold`.
33
+ *
34
+ * NOTE: This module is pure data + a single function. It has no IO and no
35
+ * state. The compaction engine is responsible for wiring it into the
36
+ * real trigger path; this module only encodes the policy.
37
+ */
38
+ /**
39
+ * Hard floor for automatic compaction on V4-class providers (Claude Sonnet
40
+ * 4.5+ with 1M context). Below 500K used tokens, auto-compaction is refused
41
+ * because rewriting the prefix destroys the V4 prefix cache for negative ROI.
42
+ *
43
+ * Manual `/compact` bypasses this floor with explicit user agency.
44
+ */
45
+ export declare const MINIMUM_AUTO_COMPACTION_TOKENS = 500000;
46
+ /** The mandatory entries every floor table must carry. */
47
+ interface ProviderFloorTable {
48
+ readonly "claude-opus-4-7": number;
49
+ readonly "claude-sonnet-4-6": number;
50
+ readonly "claude-haiku-4-5": number;
51
+ readonly default: number;
52
+ readonly [provider: string]: number;
53
+ }
54
+ /**
55
+ * Per-provider compaction floor table.
56
+ *
57
+ * Keys are provider/model identifiers as they appear in
58
+ * `src/providers/*` registration. The fallback `default` covers any
59
+ * model not explicitly listed; it conservatively assumes a small (~128K)
60
+ * context window.
61
+ *
62
+ * Frozen at the module level so callers can't mutate the table.
63
+ */
64
+ export declare const PROVIDER_COMPACTION_FLOORS: ProviderFloorTable;
65
+ /** Options for `shouldCompact`. */
66
+ export interface ShouldCompactOptions {
67
+ /**
68
+ * The compaction threshold the engine wants to apply once the floor is
69
+ * crossed. Typically a percentage of the model's context window — e.g.
70
+ * `0.6 * windowTokens` for "compact at 60%". Pass as raw token count.
71
+ */
72
+ readonly threshold: number;
73
+ /**
74
+ * Provider / model key for looking up the floor in
75
+ * `PROVIDER_COMPACTION_FLOORS`. If absent or not in the table, the
76
+ * `default` floor is used.
77
+ */
78
+ readonly provider?: string;
79
+ }
80
+ /**
81
+ * Decide whether to auto-compact given current token usage and the engine's
82
+ * configured threshold.
83
+ *
84
+ * Returns `false` whenever `tokensUsed < floor(provider)`, even if the
85
+ * threshold would otherwise fire. Once `tokensUsed >= floor`, returns
86
+ * `tokensUsed >= threshold`.
87
+ *
88
+ * Manual compaction must NOT call this function — it should bypass the
89
+ * floor with explicit user intent.
90
+ */
91
+ export declare function shouldCompact(tokensUsed: number, opts: ShouldCompactOptions): boolean;
92
+ /**
93
+ * Look up the compaction floor for a provider key.
94
+ *
95
+ * Returns the `default` floor if the provider is missing or unrecognised.
96
+ * Exposed so callers can pre-compute the floor for telemetry / UI.
97
+ */
98
+ export declare function floorFor(provider: string | undefined): number;
99
+ export {};
100
+ //# sourceMappingURL=compaction-floor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compaction-floor.d.ts","sourceRoot":"","sources":["../../src/context/compaction-floor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,8BAA8B,SAAU,CAAC;AAEtD,0DAA0D;AAC1D,UAAU,kBAAkB;IAC1B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;CACrC;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,0BAA0B,EAAE,kBAQvC,CAAC;AAEH,mCAAmC;AACnC,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAIrF;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAI7D"}
@@ -0,0 +1,94 @@
1
+ /**
2
+ * Auto-compaction floor — ported from Hmbown/DeepSeek-TUI's compaction.rs
3
+ * (the `MINIMUM_AUTO_COMPACTION_TOKENS` constant + per-model gating).
4
+ *
5
+ * WHAT: A token floor below which automatic compaction is refused regardless
6
+ * of any percentage threshold. `shouldCompact(tokensUsed, opts)` returns
7
+ * `false` until the floor is crossed; once crossed, it defers to
8
+ * `opts.threshold`.
9
+ *
10
+ * WHY: V4-class providers (Claude Sonnet 4.5+ / 4.6 / 4.7 with 1M context)
11
+ * benefit enormously from prefix-cache hits. Compaction rewrites the
12
+ * stable conversation prefix, which destroys the KV cache. At low token
13
+ * counts the prefix cache is healthy and compaction's cost (full
14
+ * re-prefill at miss prices) dwarfs its benefit (a tiny budget reclaim).
15
+ * Above the floor compaction can still be net-positive — cache is already
16
+ * pressured, the prefix has drifted, and freeing budget matters.
17
+ *
18
+ * The 500K floor for 1M-window models matches Hmbown/DeepSeek-TUI's
19
+ * v0.8.11 finding: compacting before 500K used (i.e. before 50% of the
20
+ * window) consistently loses more on the cache miss than it gains in
21
+ * budget. Smaller models (Haiku, Gemma, etc.) have proportionally smaller
22
+ * floors.
23
+ *
24
+ * WHERE: Wire into the auto-compaction trigger. Before deciding to compact
25
+ * on tokens-used % threshold-percentage, call `shouldCompact()` to gate
26
+ * the decision. Manual `/compact` should bypass this floor — it's an
27
+ * explicit user agency override.
28
+ *
29
+ * HOW: Look up the model's floor in `PROVIDER_COMPACTION_FLOORS`. If the
30
+ * model isn't found, fall back to `default` (100K). If `tokensUsed`
31
+ * is below the floor, return `false`. Otherwise, return whether
32
+ * `tokensUsed >= opts.threshold`.
33
+ *
34
+ * NOTE: This module is pure data + a single function. It has no IO and no
35
+ * state. The compaction engine is responsible for wiring it into the
36
+ * real trigger path; this module only encodes the policy.
37
+ */
38
+ /**
39
+ * Hard floor for automatic compaction on V4-class providers (Claude Sonnet
40
+ * 4.5+ with 1M context). Below 500K used tokens, auto-compaction is refused
41
+ * because rewriting the prefix destroys the V4 prefix cache for negative ROI.
42
+ *
43
+ * Manual `/compact` bypasses this floor with explicit user agency.
44
+ */
45
+ export const MINIMUM_AUTO_COMPACTION_TOKENS = 500_000;
46
+ /**
47
+ * Per-provider compaction floor table.
48
+ *
49
+ * Keys are provider/model identifiers as they appear in
50
+ * `src/providers/*` registration. The fallback `default` covers any
51
+ * model not explicitly listed; it conservatively assumes a small (~128K)
52
+ * context window.
53
+ *
54
+ * Frozen at the module level so callers can't mutate the table.
55
+ */
56
+ export const PROVIDER_COMPACTION_FLOORS = Object.freeze({
57
+ // V4 / 1M-context Claude models — 500K floor.
58
+ "claude-opus-4-7": MINIMUM_AUTO_COMPACTION_TOKENS,
59
+ "claude-sonnet-4-6": MINIMUM_AUTO_COMPACTION_TOKENS,
60
+ // V3.5-class (200K context) — proportionally lower floor.
61
+ "claude-haiku-4-5": 200_000,
62
+ // Anything else — assume ~128K, set floor at ~80% of that.
63
+ default: 100_000,
64
+ });
65
+ /**
66
+ * Decide whether to auto-compact given current token usage and the engine's
67
+ * configured threshold.
68
+ *
69
+ * Returns `false` whenever `tokensUsed < floor(provider)`, even if the
70
+ * threshold would otherwise fire. Once `tokensUsed >= floor`, returns
71
+ * `tokensUsed >= threshold`.
72
+ *
73
+ * Manual compaction must NOT call this function — it should bypass the
74
+ * floor with explicit user intent.
75
+ */
76
+ export function shouldCompact(tokensUsed, opts) {
77
+ const floor = floorFor(opts.provider);
78
+ if (tokensUsed < floor)
79
+ return false;
80
+ return tokensUsed >= opts.threshold;
81
+ }
82
+ /**
83
+ * Look up the compaction floor for a provider key.
84
+ *
85
+ * Returns the `default` floor if the provider is missing or unrecognised.
86
+ * Exposed so callers can pre-compute the floor for telemetry / UI.
87
+ */
88
+ export function floorFor(provider) {
89
+ if (provider === undefined)
90
+ return PROVIDER_COMPACTION_FLOORS["default"];
91
+ const explicit = PROVIDER_COMPACTION_FLOORS[provider];
92
+ return explicit !== undefined ? explicit : PROVIDER_COMPACTION_FLOORS["default"];
93
+ }
94
+ //# sourceMappingURL=compaction-floor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compaction-floor.js","sourceRoot":"","sources":["../../src/context/compaction-floor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,OAAO,CAAC;AAWtD;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAuB,MAAM,CAAC,MAAM,CAAC;IAC1E,8CAA8C;IAC9C,iBAAiB,EAAE,8BAA8B;IACjD,mBAAmB,EAAE,8BAA8B;IACnD,0DAA0D;IAC1D,kBAAkB,EAAE,OAAO;IAC3B,2DAA2D;IAC3D,OAAO,EAAE,OAAO;CACjB,CAAC,CAAC;AAkBH;;;;;;;;;;GAUG;AACH,MAAM,UAAU,aAAa,CAAC,UAAkB,EAAE,IAA0B;IAC1E,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACtC,IAAI,UAAU,GAAG,KAAK;QAAE,OAAO,KAAK,CAAC;IACrC,OAAO,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AACtC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,QAAQ,CAAC,QAA4B;IACnD,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,0BAA0B,CAAC,SAAS,CAAC,CAAC;IACzE,MAAM,QAAQ,GAAG,0BAA0B,CAAC,QAAQ,CAAC,CAAC;IACtD,OAAO,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,0BAA0B,CAAC,SAAS,CAAC,CAAC;AACnF,CAAC"}
@@ -322,6 +322,7 @@ export declare class KairosRPCHandler {
322
322
  getMethods(): readonly string[];
323
323
  private registerBuiltinMethods;
324
324
  registerSelfImprovementHandlers(): void;
325
+ private registerPortsHandlers;
325
326
  private registerComputerSessionHandlers;
326
327
  private registerCursorHandlers;
327
328
  private registerLiveActivityHandlers;
@@ -1 +1 @@
1
- {"version":3,"file":"kairos-rpc.d.ts","sourceRoot":"","sources":["../../src/daemon/kairos-rpc.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"kairos-rpc.d.ts","sourceRoot":"","sources":["../../src/daemon/kairos-rpc.ts"],"names":[],"mappings":"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"}
@@ -59,6 +59,7 @@ import { streamMethodForChunkType } from "../desktop/companion-server.js";
59
59
  import { registerSandboxHandlers } from "./rpc-handlers/sandbox-rpc.js";
60
60
  import { registerOrchestrationHandlers } from "./rpc-handlers/orchestration-rpc.js";
61
61
  import { registerIntelligenceHandlers } from "./rpc-handlers/intelligence-rpc.js";
62
+ import { registerPortsHandlers } from "./rpc-handlers/ports-rpc.js";
62
63
  import { probeMcpServers } from "../mcp/health-probe.js";
63
64
  import { parsePromptCorpusText } from "../snippets/prompt-corpus.js";
64
65
  import { getMarkitdownCapabilities } from "../tools/markitdown-bridge.js";
@@ -1308,6 +1309,11 @@ export class KairosRPCHandler {
1308
1309
  this.runtimeReady = ready ?? null;
1309
1310
  // Register self-improvement handlers now that runtime and daemon are available
1310
1311
  this.registerSelfImprovementHandlers();
1312
+ // Audit finding #8 closure — wire the 4 previously-zombie port modules
1313
+ // (chatdev, deer-flow, mem0-graph, scrapling) onto the daemon RPC
1314
+ // surface. Delegates to registerPortsHandlers in ports-rpc.ts; threaded
1315
+ // here so a freshly-set runtime is reachable from those handlers.
1316
+ this.registerPortsHandlers();
1311
1317
  this.registerSurfaceHandlers();
1312
1318
  // F14 — hook the handoff manager into the dispatch plane so every
1313
1319
  // initiate/accept/expire reaches surfaces registered via F11's
@@ -6231,6 +6237,24 @@ export class KairosRPCHandler {
6231
6237
  }
6232
6238
  });
6233
6239
  }
6240
+ // ── Ports RPC (audit finding #8 closure) ─────────────────
6241
+ //
6242
+ // Wire the 4 previously-zombie port modules onto the daemon RPC surface:
6243
+ // ports.chatdev.run — multi-phase agent collaboration
6244
+ // ports.research.run — multi-source structured research
6245
+ // ports.memgraph.ingest — knowledge graph from text
6246
+ // ports.scrapling.locate — DOM element re-finding after layout changes
6247
+ //
6248
+ // Each delegates to `src/orchestration/ports-bridge.ts` which constructs
6249
+ // the dependency-injected primitive (ConverseFn, SearchProvider, GraphStore,
6250
+ // DomAdapter) that JSON-RPC cannot transport directly. Lazy `getRuntime`
6251
+ // means a not-yet-wired runtime gives a graceful honest-stub envelope
6252
+ // instead of throwing.
6253
+ registerPortsHandlers() {
6254
+ registerPortsHandlers(this.handlers, {
6255
+ getRuntime: () => this.runtime,
6256
+ });
6257
+ }
6234
6258
  // ── Computer Session RPC family (Phase 3 P1-F1 keystone) ─────
6235
6259
  //
6236
6260
  // The 7 methods below wire the cross-surface workflow defined in