@ashlr/hub 2.2.0 → 3.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 (177) hide show
  1. package/CHANGELOG.md +73 -0
  2. package/README.md +95 -8
  3. package/dist/api/plugin.d.ts +1 -0
  4. package/dist/cli/backlog.js +2 -0
  5. package/dist/cli/backlog.js.map +1 -1
  6. package/dist/cli/digest.d.ts +6 -0
  7. package/dist/cli/digest.js +127 -2
  8. package/dist/cli/digest.js.map +1 -1
  9. package/dist/cli/eval-fixtures.d.ts +18 -0
  10. package/dist/cli/eval-fixtures.js +38 -0
  11. package/dist/cli/eval-fixtures.js.map +1 -0
  12. package/dist/cli/eval.d.ts +56 -0
  13. package/dist/cli/eval.js +283 -0
  14. package/dist/cli/eval.js.map +1 -0
  15. package/dist/cli/fleet.d.ts +27 -0
  16. package/dist/cli/fleet.js +222 -0
  17. package/dist/cli/fleet.js.map +1 -0
  18. package/dist/cli/goal.d.ts +15 -0
  19. package/dist/cli/goal.js +91 -0
  20. package/dist/cli/goal.js.map +1 -0
  21. package/dist/cli/help.js +10 -3
  22. package/dist/cli/help.js.map +1 -1
  23. package/dist/cli/inbox.d.ts +6 -0
  24. package/dist/cli/inbox.js +183 -8
  25. package/dist/cli/inbox.js.map +1 -1
  26. package/dist/cli/index.js +50 -0
  27. package/dist/cli/index.js.map +1 -1
  28. package/dist/cli/loop.d.ts +16 -0
  29. package/dist/cli/loop.js +66 -0
  30. package/dist/cli/loop.js.map +1 -0
  31. package/dist/cli/mcp.d.ts +12 -0
  32. package/dist/cli/mcp.js +148 -0
  33. package/dist/cli/mcp.js.map +1 -1
  34. package/dist/cli/onboard.d.ts +16 -0
  35. package/dist/cli/onboard.js +71 -0
  36. package/dist/cli/onboard.js.map +1 -1
  37. package/dist/cli/plugins.js +9 -8
  38. package/dist/cli/plugins.js.map +1 -1
  39. package/dist/cli/pulse.d.ts +10 -0
  40. package/dist/cli/pulse.js +261 -0
  41. package/dist/cli/pulse.js.map +1 -1
  42. package/dist/cli/run.js +21 -3
  43. package/dist/cli/run.js.map +1 -1
  44. package/dist/cli/stack.d.ts +34 -0
  45. package/dist/cli/stack.js +221 -0
  46. package/dist/cli/stack.js.map +1 -0
  47. package/dist/cli/update.js +12 -5
  48. package/dist/cli/update.js.map +1 -1
  49. package/dist/core/daemon/loop.d.ts +10 -5
  50. package/dist/core/daemon/loop.js +167 -37
  51. package/dist/core/daemon/loop.js.map +1 -1
  52. package/dist/core/env-bridge.js +3 -2
  53. package/dist/core/env-bridge.js.map +1 -1
  54. package/dist/core/fleet/automerge-pass.d.ts +33 -0
  55. package/dist/core/fleet/automerge-pass.js +61 -0
  56. package/dist/core/fleet/automerge-pass.js.map +1 -0
  57. package/dist/core/fleet/quota.d.ts +70 -0
  58. package/dist/core/fleet/quota.js +198 -0
  59. package/dist/core/fleet/quota.js.map +1 -0
  60. package/dist/core/fleet/router.d.ts +46 -0
  61. package/dist/core/fleet/router.js +121 -0
  62. package/dist/core/fleet/router.js.map +1 -0
  63. package/dist/core/fleet/self.d.ts +58 -0
  64. package/dist/core/fleet/self.js +187 -0
  65. package/dist/core/fleet/self.js.map +1 -0
  66. package/dist/core/fleet/status.d.ts +54 -0
  67. package/dist/core/fleet/status.js +157 -0
  68. package/dist/core/fleet/status.js.map +1 -0
  69. package/dist/core/foundry/provenance.d.ts +78 -0
  70. package/dist/core/foundry/provenance.js +172 -0
  71. package/dist/core/foundry/provenance.js.map +1 -0
  72. package/dist/core/git.d.ts +13 -0
  73. package/dist/core/git.js +26 -0
  74. package/dist/core/git.js.map +1 -1
  75. package/dist/core/inbox/merge.d.ts +151 -0
  76. package/dist/core/inbox/merge.js +858 -0
  77. package/dist/core/inbox/merge.js.map +1 -0
  78. package/dist/core/inbox/store.js +10 -1
  79. package/dist/core/inbox/store.js.map +1 -1
  80. package/dist/core/integrations/markdown.d.ts +66 -0
  81. package/dist/core/integrations/markdown.js +132 -0
  82. package/dist/core/integrations/markdown.js.map +1 -0
  83. package/dist/core/integrations/secrets.d.ts +37 -0
  84. package/dist/core/integrations/secrets.js +67 -0
  85. package/dist/core/integrations/secrets.js.map +1 -0
  86. package/dist/core/integrations/stack.d.ts +47 -0
  87. package/dist/core/integrations/stack.js +107 -0
  88. package/dist/core/integrations/stack.js.map +1 -0
  89. package/dist/core/mcp-native-engineer.d.ts +123 -0
  90. package/dist/core/mcp-native-engineer.js +936 -0
  91. package/dist/core/mcp-native-engineer.js.map +1 -0
  92. package/dist/core/mcp-native.js +20 -42
  93. package/dist/core/mcp-native.js.map +1 -1
  94. package/dist/core/mcp-registry.js +2 -0
  95. package/dist/core/mcp-registry.js.map +1 -1
  96. package/dist/core/observability/codex-source.d.ts +53 -0
  97. package/dist/core/observability/codex-source.js +390 -0
  98. package/dist/core/observability/codex-source.js.map +1 -0
  99. package/dist/core/observability/estimate.d.ts +12 -0
  100. package/dist/core/observability/estimate.js +26 -0
  101. package/dist/core/observability/estimate.js.map +1 -1
  102. package/dist/core/observability/limits.d.ts +52 -0
  103. package/dist/core/observability/limits.js +316 -0
  104. package/dist/core/observability/limits.js.map +1 -0
  105. package/dist/core/observability/usage-source.js +3 -1
  106. package/dist/core/observability/usage-source.js.map +1 -1
  107. package/dist/core/portfolio/scanners.d.ts +1 -0
  108. package/dist/core/portfolio/scanners.js +40 -1
  109. package/dist/core/portfolio/scanners.js.map +1 -1
  110. package/dist/core/providers.js +4 -0
  111. package/dist/core/providers.js.map +1 -1
  112. package/dist/core/quality/health.js +1 -0
  113. package/dist/core/quality/health.js.map +1 -1
  114. package/dist/core/run/agent-loop.d.ts +8 -0
  115. package/dist/core/run/agent-loop.js +24 -14
  116. package/dist/core/run/agent-loop.js.map +1 -1
  117. package/dist/core/run/engine-registry.d.ts +48 -0
  118. package/dist/core/run/engine-registry.js +190 -0
  119. package/dist/core/run/engine-registry.js.map +1 -0
  120. package/dist/core/run/engines.d.ts +17 -3
  121. package/dist/core/run/engines.js +63 -44
  122. package/dist/core/run/engines.js.map +1 -1
  123. package/dist/core/run/learned-router.d.ts +121 -0
  124. package/dist/core/run/learned-router.js +374 -0
  125. package/dist/core/run/learned-router.js.map +1 -0
  126. package/dist/core/run/model-manager.js +3 -3
  127. package/dist/core/run/model-manager.js.map +1 -1
  128. package/dist/core/run/model-profile.d.ts +67 -0
  129. package/dist/core/run/model-profile.js +132 -0
  130. package/dist/core/run/model-profile.js.map +1 -0
  131. package/dist/core/run/orchestrator.d.ts +1 -1
  132. package/dist/core/run/orchestrator.js +642 -510
  133. package/dist/core/run/orchestrator.js.map +1 -1
  134. package/dist/core/run/prompts/budget.d.ts +25 -0
  135. package/dist/core/run/prompts/budget.js +51 -0
  136. package/dist/core/run/prompts/budget.js.map +1 -0
  137. package/dist/core/run/prompts/index.d.ts +14 -0
  138. package/dist/core/run/prompts/index.js +59 -0
  139. package/dist/core/run/prompts/index.js.map +1 -0
  140. package/dist/core/run/prompts/layers.d.ts +26 -0
  141. package/dist/core/run/prompts/layers.js +73 -0
  142. package/dist/core/run/prompts/layers.js.map +1 -0
  143. package/dist/core/run/prompts/roles.d.ts +23 -0
  144. package/dist/core/run/prompts/roles.js +48 -0
  145. package/dist/core/run/prompts/roles.js.map +1 -0
  146. package/dist/core/run/prompts/types.d.ts +38 -0
  147. package/dist/core/run/prompts/types.js +5 -0
  148. package/dist/core/run/prompts/types.js.map +1 -0
  149. package/dist/core/run/provider-client.d.ts +6 -24
  150. package/dist/core/run/provider-client.js +125 -61
  151. package/dist/core/run/provider-client.js.map +1 -1
  152. package/dist/core/run/router.js +8 -0
  153. package/dist/core/run/router.js.map +1 -1
  154. package/dist/core/run/sandboxed-engine.d.ts +66 -0
  155. package/dist/core/run/sandboxed-engine.js +262 -0
  156. package/dist/core/run/sandboxed-engine.js.map +1 -0
  157. package/dist/core/run/verify-commands.d.ts +83 -0
  158. package/dist/core/run/verify-commands.js +234 -0
  159. package/dist/core/run/verify-commands.js.map +1 -0
  160. package/dist/core/run/verify.d.ts +31 -1
  161. package/dist/core/run/verify.js +48 -0
  162. package/dist/core/run/verify.js.map +1 -1
  163. package/dist/core/sandbox/audit.d.ts +27 -0
  164. package/dist/core/sandbox/audit.js +34 -0
  165. package/dist/core/sandbox/audit.js.map +1 -1
  166. package/dist/core/sandbox/confine.d.ts +134 -0
  167. package/dist/core/sandbox/confine.js +370 -0
  168. package/dist/core/sandbox/confine.js.map +1 -0
  169. package/dist/core/types.d.ts +227 -5
  170. package/dist/core/web/api.js +77 -28
  171. package/dist/core/web/api.js.map +1 -1
  172. package/dist/core/web/control.d.ts +116 -0
  173. package/dist/core/web/control.js +307 -0
  174. package/dist/core/web/control.js.map +1 -0
  175. package/dist/core/web/public/app.js +512 -6
  176. package/dist/core/web/public/styles.css +468 -0
  177. package/package.json +3 -2
@@ -9,11 +9,16 @@
9
9
  * - stopDaemon(): set kill switch + clear running state.
10
10
  *
11
11
  * NON-NEGOTIABLE GUARDRAILS (enforced here, grep-provable):
12
- * 1. PROPOSAL-ONLY: this file has NO outward-action path whatsoever. Its ONLY
13
- * inbox output is a PENDING proposal, produced indirectly by the swarm
14
- * runner when this file passes { propose: true } to runSwarm. A PENDING
15
- * proposal is applied LATER only by an explicit human inbox approve.
16
- * This file imports no apply/push/PR/deploy primitive.
12
+ * 1. PROPOSAL-FIRST (proposal-only by default): every dispatch produces a
13
+ * PENDING inbox proposal (via the swarm runner or a sandboxed engine, with
14
+ * { propose: true }) — applied LATER only by explicit human approval. This
15
+ * file itself imports NO apply / push / PR-create / deploy primitive (the
16
+ * `daemon-no-primitive` contract). M48: an OPT-IN auto-merge pass
17
+ * (cfg.foundry.autoMerge.enabled, DEFAULT OFF) is delegated to a SEPARATE
18
+ * module (fleet/automerge-pass) and may merge a proposal to main ONLY
19
+ * through the M47 tiered-trust gate (frontier merge-authority + risk ≤
20
+ * maxRisk + full verify + kill-switch + enrollment). With autoMerge disabled
21
+ * the daemon stays strictly proposal-only.
17
22
  * 2. ENROLLMENT-ONLY: operates exclusively on listEnrolled() repos.
18
23
  * DEFAULT EMPTY => the daemon does NOTHING.
19
24
  * 3. SANDBOXED: every runSwarm call sets opts.sandbox = true so all
@@ -33,6 +38,14 @@ import { buildBacklog } from '../portfolio/backlog.js';
33
38
  import { loadDaemonState, saveDaemonState, resetDayIfNeeded } from './state.js';
34
39
  import { nullSink } from '../run/streaming.js';
35
40
  import { runSwarm } from '../swarm/runner.js';
41
+ import { runGoal } from '../run/orchestrator.js';
42
+ import { routeBackend } from '../fleet/router.js';
43
+ import { withinLimit, recordUse } from '../fleet/quota.js';
44
+ import { recommendRoute, recoverWithinBudget } from '../run/learned-router.js';
45
+ import { estimateRun } from '../observability/estimate.js';
46
+ import { buildForecast } from '../observability/forecast.js';
47
+ import { emitTuningProposals } from '../learn/tuning.js';
48
+ import { runAutoMergePass } from '../fleet/automerge-pass.js';
36
49
  import { pendingCount } from '../inbox/store.js';
37
50
  // ---------------------------------------------------------------------------
38
51
  // DaemonConfig defaults (conservative)
@@ -272,6 +285,8 @@ export async function tick(cfg, opts) {
272
285
  // reaches the remaining daily headroom (the USD daily cap is otherwise only
273
286
  // enforced BETWEEN ticks — this keeps a single tick from overshooting it).
274
287
  let tickSpent = 0;
288
+ // M48: per-backend dispatch tally for this tick (observability only).
289
+ const backendDispatch = {};
275
290
  // Per-item USD budget slice: divide remaining budget evenly across items.
276
291
  const perItemUsdSlice = remainingBudget / selected.length;
277
292
  // Convert USD slice to a rough token count for the swarm budget.
@@ -302,41 +317,103 @@ export async function tick(cfg, opts) {
302
317
  }
303
318
  let swarmSpent = 0;
304
319
  let dispatched = false;
320
+ // M48: route this item to a backend (M46). Default (no cfg.foundry) →
321
+ // 'builtin'. A frontier backend over its rolling rate quota falls back to
322
+ // local so work keeps flowing without exceeding the subscription's limit.
323
+ const routed = routeBackend(item, cfg);
324
+ let backend = routed.backend;
325
+ if (backend !== 'builtin' && !withinLimit(backend, cfg)) {
326
+ backend = 'builtin';
327
+ }
328
+ // M53: learned-router recommend + budget cascade (flag-off: no-op when
329
+ // cfg.foundry.intelligence is absent). recoverWithinBudget is PURE and
330
+ // may only return a tier choice or a pause signal — no outward action.
331
+ // This file imports NO apply/merge/push/deploy primitive.
332
+ {
333
+ const intelRaw = cfg.foundry?.intelligence;
334
+ if (intelRaw !== undefined && intelRaw !== null) {
335
+ const forecast = buildForecast('7d', cfg);
336
+ const goal = `${item.title}\n\n${item.detail}`.trim();
337
+ const est = await estimateRun(goal, { maxTokens: perItemMaxTokens }, cfg);
338
+ const recommended = await recommendRoute(item, cfg, { estimate: est });
339
+ // Only override when the recommend result doesn't escalate a local decision.
340
+ if (routed.tier !== 'local' || recommended.tier === 'local') {
341
+ backend = recommended.backend;
342
+ }
343
+ // Budget cascade: step down tier when near cap.
344
+ const recovery = recoverWithinBudget({ backend, tier: recommended.tier, reason: recommended.reason }, cfg, tickSpent + state.todaySpentUsd, forecast);
345
+ if (recovery.action === 'pause') {
346
+ audit({
347
+ action: 'daemon:budget-cascade',
348
+ repo: item.repo,
349
+ sandboxId: null,
350
+ summary: `M53 budget cascade: pausing dispatch for "${item.title}" — ${recovery.reason}`,
351
+ result: 'ok',
352
+ });
353
+ return { item, spentUsd: 0, dispatched: false };
354
+ }
355
+ else {
356
+ backend = recovery.decision.backend;
357
+ }
358
+ }
359
+ }
360
+ const goal = `${item.title}\n\n${item.detail}`.trim();
361
+ const itemBudget = { maxTokens: perItemMaxTokens, maxSteps: 100, allowCloud: false };
305
362
  // Snapshot ASHLR_IN_SWARM and restore it after the call. The swarm runner
306
363
  // sets ASHLR_IN_SWARM=1 on THIS (long-lived) process and does not unwind it;
307
- // without this restore, the 2nd..Kth runSwarm in a tick — and every tick
308
- // after the first in loop mode — would hit the recursion guard and refuse,
309
- // silently neutering the daemon. Restoring keeps each dispatch clean while
310
- // the runner's own child-spawn inheritance still works during the call.
364
+ // restoring keeps each subsequent dispatch / tick from hitting the recursion
365
+ // guard while the runner's own child-spawn inheritance still works mid-call.
311
366
  const prevInSwarm = process.env['ASHLR_IN_SWARM'];
312
367
  try {
313
368
  const sink = nullSink();
314
369
  dispatched = true;
315
- const swarmRun = await runSwarm({ goal: `${item.title}\n\n${item.detail}`.trim() }, cfg, {
316
- sandbox: true, // M21: isolated git-worktree — NEVER user's tree
317
- requireSandbox: true, // M24: sandbox is MANDATORY — abort (zero tasks) if it can't be created; NEVER touch the real tree
318
- propose: true, // M24: swarm records its diff as a PENDING inbox proposal
319
- project: item.repo,
320
- budget: {
321
- maxTokens: perItemMaxTokens,
322
- maxSteps: 100,
323
- allowCloud: false, // local-first; no cloud spend by default
324
- },
325
- parallel: 1, // inner swarm parallelism kept minimal
326
- dryRun: false,
327
- noCapture: true, // genome capture not needed for daemon proposals
328
- }, sink);
329
- // Estimate actual spend from swarm usage and add it to the shared tally
330
- // so concurrent/subsequent items see the up-to-date headroom.
331
- swarmSpent = swarmRun.usage?.estCostUsd ?? 0;
332
- tickSpent += swarmSpent;
333
- audit({
334
- action: 'daemon:proposal-created',
335
- repo: item.repo,
336
- sandboxId: null,
337
- summary: `swarm ${swarmRun.id} finished (status=${swarmRun.status}, spent=$${swarmSpent.toFixed(4)}) for "${item.title}"`,
338
- result: 'ok',
339
- });
370
+ backendDispatch[backend] = (backendDispatch[backend] ?? 0) + 1;
371
+ if (backend === 'builtin') {
372
+ const swarmRun = await runSwarm({ goal }, cfg, {
373
+ sandbox: true, // M21: isolated git-worktree — NEVER user's tree
374
+ requireSandbox: true, // M24: sandbox MANDATORY — abort if it can't be created
375
+ propose: true, // M24: swarm records its diff as a PENDING inbox proposal
376
+ project: item.repo,
377
+ budget: itemBudget,
378
+ parallel: 1,
379
+ dryRun: false,
380
+ noCapture: true,
381
+ }, sink);
382
+ swarmSpent = swarmRun.usage?.estCostUsd ?? 0;
383
+ tickSpent += swarmSpent;
384
+ audit({
385
+ action: 'daemon:proposal-created',
386
+ repo: item.repo,
387
+ sandboxId: null,
388
+ summary: `swarm ${swarmRun.id} finished (status=${swarmRun.status}, spent=$${swarmSpent.toFixed(4)}) for "${item.title}"`,
389
+ result: 'ok',
390
+ });
391
+ }
392
+ else {
393
+ // M48: a frontier backend (claude/codex) is itself a full agent — run
394
+ // the WHOLE item as ONE sandboxed-external run (M45): worktree → agent →
395
+ // diff → PENDING proposal. No nested swarm. M45 containment (severed git
396
+ // push, scrubbed diff) + the M47 merge gate still apply downstream.
397
+ recordUse(backend);
398
+ const runState = await runGoal(goal, cfg, {
399
+ engine: backend,
400
+ sandboxEngine: true,
401
+ requireSandbox: true,
402
+ cwd: item.repo,
403
+ budget: itemBudget,
404
+ tools: true,
405
+ noMemory: false,
406
+ });
407
+ swarmSpent = runState.usage?.estCostUsd ?? 0;
408
+ tickSpent += swarmSpent;
409
+ audit({
410
+ action: 'daemon:proposal-created',
411
+ repo: item.repo,
412
+ sandboxId: null,
413
+ summary: `${backend} run ${runState.id} finished (status=${runState.status}, spent=$${swarmSpent.toFixed(4)}) for "${item.title}"`,
414
+ result: 'ok',
415
+ });
416
+ }
340
417
  }
341
418
  catch (err) {
342
419
  const msg = err instanceof Error ? err.message : String(err);
@@ -344,17 +421,55 @@ export async function tick(cfg, opts) {
344
421
  action: 'daemon:swarm-error',
345
422
  repo: item.repo,
346
423
  sandboxId: null,
347
- summary: `swarm failed for "${item.title}": ${msg.slice(0, 200)}`,
424
+ summary: `${backend} dispatch failed for "${item.title}": ${msg.slice(0, 200)}`,
348
425
  result: 'error',
349
426
  });
350
427
  }
351
428
  finally {
352
- // Restore ASHLR_IN_SWARM so the next dispatch / next tick is not refused.
353
429
  if (prevInSwarm === undefined)
354
430
  delete process.env['ASHLR_IN_SWARM'];
355
431
  else
356
432
  process.env['ASHLR_IN_SWARM'] = prevInSwarm;
357
433
  }
434
+ // M53: anomaly-hold — if run cost > k×p50, hold the proposal PENDING and
435
+ // file a TuningProposal. NEVER auto-apply. This block imports NO
436
+ // apply/merge/push/deploy primitive.
437
+ if (dispatched && swarmSpent > 0) {
438
+ const intelRaw2 = cfg.foundry?.intelligence;
439
+ if (intelRaw2 !== undefined && intelRaw2 !== null) {
440
+ const intelCfg2 = intelRaw2;
441
+ const anomalyK = typeof intelCfg2.anomalyK === 'number' && intelCfg2.anomalyK > 0
442
+ ? intelCfg2.anomalyK : 4;
443
+ const goal2 = `${item.title}\n\n${item.detail}`.trim();
444
+ const est2 = await estimateRun(goal2, { maxTokens: perItemMaxTokens }, cfg).catch(() => null);
445
+ const p50 = est2?.estCostUsd.median ?? 0;
446
+ if (p50 > 0 && swarmSpent > anomalyK * p50) {
447
+ audit({
448
+ action: 'daemon:anomaly-hold',
449
+ repo: item.repo,
450
+ sandboxId: null,
451
+ summary: `M53 anomaly hold: "${item.title}" cost $${swarmSpent.toFixed(4)} ` +
452
+ `> ${anomalyK}×p50 ($${(anomalyK * p50).toFixed(4)}) — proposal stays PENDING`,
453
+ result: 'ok',
454
+ });
455
+ // File a TuningProposal describing the anomaly (proposal-only, never auto-applied).
456
+ try {
457
+ emitTuningProposals([{
458
+ key: `anomaly.cost.${item.id.replace(/[^a-z0-9]/gi, '-').slice(0, 40)}`,
459
+ area: 'policy',
460
+ title: `Cost anomaly hold: "${item.title.slice(0, 60)}"`,
461
+ rationale: `Run cost $${swarmSpent.toFixed(4)} exceeded ${anomalyK}×p50 ` +
462
+ `($${(anomalyK * p50).toFixed(4)}) for "${item.title}". ` +
463
+ `Proposal held PENDING for human review.`,
464
+ confidence: Math.min(0.9, 0.5 + (swarmSpent / (anomalyK * p50) - 1) / 10),
465
+ }]);
466
+ }
467
+ catch {
468
+ // Emission must never crash the tick.
469
+ }
470
+ }
471
+ }
472
+ }
358
473
  return { item, spentUsd: swarmSpent, dispatched };
359
474
  });
360
475
  const outcomes = await bounded(tasks, dcfg.parallel);
@@ -374,6 +489,19 @@ export async function tick(cfg, opts) {
374
489
  catch {
375
490
  proposalsCreated = 0;
376
491
  }
492
+ // M48: OPT-IN auto-merge pass (cfg.foundry.autoMerge.enabled, DEFAULT OFF).
493
+ // Delegated to fleet/automerge-pass so THIS file imports no merge primitive.
494
+ // Every merge runs the M47 tiered-trust gate (frontier authority + risk ≤
495
+ // maxRisk + full verify + kill-switch + enrollment); unauthorized proposals
496
+ // stay PENDING. With autoMerge disabled this is a no-op — the daemon stays
497
+ // strictly proposal-only.
498
+ let merged = 0;
499
+ try {
500
+ merged = (await runAutoMergePass(cfg)).merged;
501
+ }
502
+ catch {
503
+ merged = 0;
504
+ }
377
505
  // -------------------------------------------------------------------------
378
506
  // 7. Update + persist state with this tick's accounting.
379
507
  // -------------------------------------------------------------------------
@@ -388,6 +516,8 @@ export async function tick(cfg, opts) {
388
516
  proposalsCreated,
389
517
  spentUsd: tickSpent,
390
518
  reason: 'ok',
519
+ ...(Object.keys(backendDispatch).length > 0 ? { backends: backendDispatch } : {}),
520
+ ...(merged > 0 ? { merged } : {}),
391
521
  };
392
522
  state.ticks = [...state.ticks, tickRecord];
393
523
  saveDaemonState(state);
@@ -395,7 +525,7 @@ export async function tick(cfg, opts) {
395
525
  action: 'daemon:tick',
396
526
  repo: null,
397
527
  sandboxId: null,
398
- summary: `tick ok: ${selected.length} item(s) considered, ${proposalsCreated} proposal(s) created, $${tickSpent.toFixed(4)} spent`,
528
+ summary: `tick ok: ${selected.length} item(s) considered, ${proposalsCreated} proposal(s) created, ${merged} merged, $${tickSpent.toFixed(4)} spent`,
399
529
  result: 'ok',
400
530
  });
401
531
  return tickRecord;
@@ -1 +1 @@
1
- {"version":3,"file":"loop.js","sourceRoot":"","sources":["../../../src/core/daemon/loop.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loop.js","sourceRoot":"","sources":["../../../src/core/daemon/loop.ts"],"names":[],"mappings":"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"}
@@ -34,7 +34,7 @@
34
34
  * ASHLR_ROOTS cfg.roots.join(':') Colon-joined roots
35
35
  * ─────────────────────────────────────────────────────────────────────────────
36
36
  */
37
- import { join } from 'path';
37
+ import { join, delimiter } from 'path';
38
38
  import { CONFIG_DIR, CONFIG_PATH } from './config.js';
39
39
  /**
40
40
  * Build a flat Record of ashlr-derived, NON-SECRET environment keys to merge
@@ -82,7 +82,8 @@ export function buildToolEnv(cfg, opts) {
82
82
  // ── Scan roots (colon-joined) ─────────────────────────────────────────────
83
83
  const roots = (cfg.roots ?? []).filter(Boolean);
84
84
  if (roots.length > 0) {
85
- env['ASHLR_ROOTS'] = roots.join(':');
85
+ // path.delimiter (':' POSIX, ';' Windows) keeps Windows drive-letter paths intact.
86
+ env['ASHLR_ROOTS'] = roots.join(delimiter);
86
87
  }
87
88
  return env;
88
89
  }
@@ -1 +1 @@
1
- {"version":3,"file":"env-bridge.js","sourceRoot":"","sources":["../../src/core/env-bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAUtD;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAC1B,GAAgB,EAChB,IAAuB;IAEvB,MAAM,GAAG,GAA2B,EAAE,CAAC;IAEvC,6EAA6E;IAC7E,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC;IAC5C,IAAI,SAAS,EAAE,CAAC;QACd,GAAG,CAAC,aAAa,CAAC,GAAG,SAAS,CAAC;QAC/B,GAAG,CAAC,iBAAiB,CAAC,GAAG,SAAS,CAAC;IACrC,CAAC;IAED,6EAA6E;IAC7E,MAAM,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC;IAChD,IAAI,WAAW,EAAE,CAAC;QAChB,GAAG,CAAC,eAAe,CAAC,GAAG,WAAW,CAAC;QACnC,GAAG,CAAC,iBAAiB,CAAC,GAAG,WAAW,CAAC;IACvC,CAAC;IAED,6EAA6E;IAC7E,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,aAAa,IAAI,EAAE,CAAC;IAC7C,MAAM,cAAc,GAAG,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;IAClE,IAAI,cAAc,EAAE,CAAC;QACnB,GAAG,CAAC,oBAAoB,CAAC,GAAG,cAAc,CAAC;IAC7C,CAAC;IAED,6EAA6E;IAC7E,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,GAAG,CAAC,sBAAsB,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChD,CAAC;IAED,6EAA6E;IAC7E,MAAM,KAAK,GAAG,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAClC,IAAI,KAAK,EAAE,CAAC;QACV,GAAG,CAAC,aAAa,CAAC,GAAG,KAAK,CAAC;QAC3B,GAAG,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC,CAAC,kBAAkB;IAC7C,CAAC;IAED,6EAA6E;IAC7E,GAAG,CAAC,mBAAmB,CAAC,GAAG,GAAG,CAAC;IAE/B,6EAA6E;IAC7E,GAAG,CAAC,cAAc,CAAC,GAAG,WAAW,CAAC;IAElC,6EAA6E;IAC7E,GAAG,CAAC,kBAAkB,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAErD,6EAA6E;IAC7E,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAChD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,GAAG,CAAC,aAAa,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACvC,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,WAAW,CACzB,GAAgB,EAChB,IAAwB,EACxB,IAAuB;IAEvB,OAAO,EAAE,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC;AAClE,CAAC"}
1
+ {"version":3,"file":"env-bridge.js","sourceRoot":"","sources":["../../src/core/env-bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAEvC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAUtD;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAC1B,GAAgB,EAChB,IAAuB;IAEvB,MAAM,GAAG,GAA2B,EAAE,CAAC;IAEvC,6EAA6E;IAC7E,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC;IAC5C,IAAI,SAAS,EAAE,CAAC;QACd,GAAG,CAAC,aAAa,CAAC,GAAG,SAAS,CAAC;QAC/B,GAAG,CAAC,iBAAiB,CAAC,GAAG,SAAS,CAAC;IACrC,CAAC;IAED,6EAA6E;IAC7E,MAAM,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC;IAChD,IAAI,WAAW,EAAE,CAAC;QAChB,GAAG,CAAC,eAAe,CAAC,GAAG,WAAW,CAAC;QACnC,GAAG,CAAC,iBAAiB,CAAC,GAAG,WAAW,CAAC;IACvC,CAAC;IAED,6EAA6E;IAC7E,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,aAAa,IAAI,EAAE,CAAC;IAC7C,MAAM,cAAc,GAAG,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;IAClE,IAAI,cAAc,EAAE,CAAC;QACnB,GAAG,CAAC,oBAAoB,CAAC,GAAG,cAAc,CAAC;IAC7C,CAAC;IAED,6EAA6E;IAC7E,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,GAAG,CAAC,sBAAsB,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChD,CAAC;IAED,6EAA6E;IAC7E,MAAM,KAAK,GAAG,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAClC,IAAI,KAAK,EAAE,CAAC;QACV,GAAG,CAAC,aAAa,CAAC,GAAG,KAAK,CAAC;QAC3B,GAAG,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC,CAAC,kBAAkB;IAC7C,CAAC;IAED,6EAA6E;IAC7E,GAAG,CAAC,mBAAmB,CAAC,GAAG,GAAG,CAAC;IAE/B,6EAA6E;IAC7E,GAAG,CAAC,cAAc,CAAC,GAAG,WAAW,CAAC;IAElC,6EAA6E;IAC7E,GAAG,CAAC,kBAAkB,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAErD,6EAA6E;IAC7E,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAChD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,mFAAmF;QACnF,GAAG,CAAC,aAAa,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,WAAW,CACzB,GAAgB,EAChB,IAAwB,EACxB,IAAuB;IAEvB,OAAO,EAAE,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC;AAClE,CAAC"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * automerge-pass.ts — M48: the daemon's OPT-IN auto-merge pass.
3
+ *
4
+ * Kept DELIBERATELY OUT of daemon/loop.ts so the daemon file itself imports no
5
+ * merge/apply/push primitive (the `daemon-no-primitive` safety contract stays
6
+ * literally true: loop.ts only *triggers* this pass). All merge authority lives
7
+ * behind the M47 gate (`autoMergeProposal`), which enforces, per proposal:
8
+ * frontier merge-authority model ∈ cfg.foundry.mergeAuthority
9
+ * AND risk class ≤ maxRisk AND full verification passes
10
+ * AND kill-switch off AND repo enrolled.
11
+ *
12
+ * DEFAULT OFF: a no-op unless cfg.foundry.autoMerge.enabled === true. Only
13
+ * 'frontier'-tier proposals are even considered; the gate re-checks everything.
14
+ * Never throws.
15
+ */
16
+ import type { AshlrConfig } from '../types.js';
17
+ import { type AutoMergeResult } from '../inbox/merge.js';
18
+ export interface AutoMergePassResult {
19
+ /** Proposals the gate was run against this pass (frontier + branch-eligible mid). */
20
+ attempted: number;
21
+ /** Of those, how many actually merged to main (frontier only). */
22
+ merged: number;
23
+ /** Of those, how many a MID-tier proposal applied to a branch/PR (M56). */
24
+ branched: number;
25
+ /** Per-proposal gate results (for observability/audit). */
26
+ results: AutoMergeResult[];
27
+ }
28
+ /**
29
+ * Run the M47 tiered-trust gate over PENDING proposals. No-op (returns zeros)
30
+ * unless auto-merge is explicitly enabled. Honors the kill switch before and
31
+ * during the pass. Never throws.
32
+ */
33
+ export declare function runAutoMergePass(cfg: AshlrConfig): Promise<AutoMergePassResult>;
@@ -0,0 +1,61 @@
1
+ /**
2
+ * automerge-pass.ts — M48: the daemon's OPT-IN auto-merge pass.
3
+ *
4
+ * Kept DELIBERATELY OUT of daemon/loop.ts so the daemon file itself imports no
5
+ * merge/apply/push primitive (the `daemon-no-primitive` safety contract stays
6
+ * literally true: loop.ts only *triggers* this pass). All merge authority lives
7
+ * behind the M47 gate (`autoMergeProposal`), which enforces, per proposal:
8
+ * frontier merge-authority model ∈ cfg.foundry.mergeAuthority
9
+ * AND risk class ≤ maxRisk AND full verification passes
10
+ * AND kill-switch off AND repo enrolled.
11
+ *
12
+ * DEFAULT OFF: a no-op unless cfg.foundry.autoMerge.enabled === true. Only
13
+ * 'frontier'-tier proposals are even considered; the gate re-checks everything.
14
+ * Never throws.
15
+ */
16
+ import { listProposals } from '../inbox/store.js';
17
+ import { autoMergeProposal } from '../inbox/merge.js';
18
+ import { killSwitchOn } from '../sandbox/policy.js';
19
+ /**
20
+ * Run the M47 tiered-trust gate over PENDING proposals. No-op (returns zeros)
21
+ * unless auto-merge is explicitly enabled. Honors the kill switch before and
22
+ * during the pass. Never throws.
23
+ */
24
+ export async function runAutoMergePass(cfg) {
25
+ const out = { attempted: 0, merged: 0, branched: 0, results: [] };
26
+ if (cfg.foundry?.autoMerge?.enabled !== true)
27
+ return out;
28
+ if (killSwitchOn())
29
+ return out;
30
+ let pending;
31
+ try {
32
+ pending = listProposals({ status: 'pending' });
33
+ }
34
+ catch {
35
+ return out;
36
+ }
37
+ for (const p of pending) {
38
+ if (killSwitchOn())
39
+ break;
40
+ // Frontier proposals are main-merge-eligible; MID proposals are branch/PR-
41
+ // eligible ONLY when the separate default-off midToBranch flag is on. The
42
+ // gate re-verifies authority/risk/verification — this is a fast pre-filter.
43
+ const midEligible = cfg.foundry?.autoMerge?.midToBranch === true && p.engineTier === 'mid';
44
+ if (p.engineTier !== 'frontier' && !midEligible)
45
+ continue;
46
+ out.attempted++;
47
+ try {
48
+ const res = await autoMergeProposal(p.id, cfg);
49
+ out.results.push(res);
50
+ if (res.merged)
51
+ out.merged++;
52
+ if (res.branched)
53
+ out.branched++;
54
+ }
55
+ catch {
56
+ // autoMergeProposal never throws by contract; defensive only.
57
+ }
58
+ }
59
+ return out;
60
+ }
61
+ //# sourceMappingURL=automerge-pass.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"automerge-pass.js","sourceRoot":"","sources":["../../../src/core/fleet/automerge-pass.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAwB,MAAM,mBAAmB,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAapD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,GAAgB;IACrD,MAAM,GAAG,GAAwB,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACvF,IAAI,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,KAAK,IAAI;QAAE,OAAO,GAAG,CAAC;IACzD,IAAI,YAAY,EAAE;QAAE,OAAO,GAAG,CAAC;IAE/B,IAAI,OAAO,CAAC;IACZ,IAAI,CAAC;QACH,OAAO,GAAG,aAAa,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;IACjD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,GAAG,CAAC;IACb,CAAC;IAED,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,YAAY,EAAE;YAAE,MAAM;QAC1B,2EAA2E;QAC3E,0EAA0E;QAC1E,4EAA4E;QAC5E,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,WAAW,KAAK,IAAI,IAAI,CAAC,CAAC,UAAU,KAAK,KAAK,CAAC;QAC3F,IAAI,CAAC,CAAC,UAAU,KAAK,UAAU,IAAI,CAAC,WAAW;YAAE,SAAS;QAC1D,GAAG,CAAC,SAAS,EAAE,CAAC;QAChB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,iBAAiB,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;YAC/C,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACtB,IAAI,GAAG,CAAC,MAAM;gBAAE,GAAG,CAAC,MAAM,EAAE,CAAC;YAC7B,IAAI,GAAG,CAAC,QAAQ;gBAAE,GAAG,CAAC,QAAQ,EAAE,CAAC;QACnC,CAAC;QAAC,MAAM,CAAC;YACP,8DAA8D;QAChE,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * quota.ts — M46: per-backend rolling-window rate/quota ledger.
3
+ *
4
+ * Subscription frontier backends (Claude / Codex) are flat-fee but RATE-LIMITED
5
+ * (not token-billed), so the fleet must throttle dispatches per backend. This
6
+ * ledger records each dispatch and answers "how many in the last window?" and
7
+ * "are we still under the configured cap?".
8
+ *
9
+ * Persistence discipline mirrors daemon/state.ts EXACTLY:
10
+ * - Atomic writes (tmp file + POSIX rename).
11
+ * - NEVER throws — load returns a fresh empty ledger on missing/corrupt file;
12
+ * record swallows any persistence error.
13
+ * - mkdir -p the parent dir.
14
+ * - Bounded history (last ~2000 events).
15
+ * - Homedir re-resolved at call time so tests can relocate HOME.
16
+ *
17
+ * No new runtime deps; node builtins only. evalQuota mirrors evalBudget's
18
+ * three-level (ok/warn/over) semantics with a null-cap-disabled path.
19
+ */
20
+ import type { AshlrConfig, EngineId } from '../types.js';
21
+ /** A single recorded backend dispatch. */
22
+ export interface FleetQuotaEvent {
23
+ /** Backend that was dispatched. */
24
+ backend: EngineId;
25
+ /** ISO timestamp of the dispatch. */
26
+ ts: string;
27
+ }
28
+ /** The persisted fleet quota ledger. */
29
+ export interface FleetQuota {
30
+ /** Bounded list of recent dispatch events (oldest first). */
31
+ events: FleetQuotaEvent[];
32
+ }
33
+ /**
34
+ * Convert a window label to milliseconds. Extends rollup.ts's day-granularity
35
+ * vocabulary with sub-day windows used by rate limits. Unknown labels fall back
36
+ * to 1h (the most conservative useful default for rate caps).
37
+ */
38
+ export declare function windowToMs(window: string): number;
39
+ /** Absolute path to the fleet quota ledger file. */
40
+ export declare function fleetQuotaPath(): string;
41
+ /**
42
+ * Read and parse fleetQuotaPath(). NEVER throws.
43
+ * Returns a fresh empty ledger when the file is missing or malformed.
44
+ */
45
+ export declare function loadFleetQuota(): FleetQuota;
46
+ /**
47
+ * Append a dispatch event for `backend` (ts = now) and persist. Never throws.
48
+ */
49
+ export declare function recordUse(backend: EngineId): void;
50
+ /**
51
+ * Count events for `backend` whose ts is within the last `windowMs`
52
+ * (ts >= now - windowMs). Reads the ledger internally; `now` is injectable for
53
+ * deterministic tests (defaults to Date.now()).
54
+ */
55
+ export declare function usesInWindow(backend: EngineId, windowMs: number, now?: number): number;
56
+ /**
57
+ * True when `backend` is still UNDER its configured rate limit (or unlimited).
58
+ *
59
+ * Mirrors evalBudget's null-cap-disabled logic: when no
60
+ * cfg.foundry.limits[backend] is configured, the backend is unlimited ⇒ always
61
+ * within limit. Otherwise true iff usesInWindow(...) < limit.max. `now` is
62
+ * injectable for tests.
63
+ */
64
+ export declare function withinLimit(backend: EngineId, cfg: AshlrConfig, now?: number): boolean;
65
+ /**
66
+ * Evaluate a backend's rate-limit status as 'ok' | 'warn' | 'over', mirroring
67
+ * evalBudget: 'over' at >= 100% of the cap, 'warn' at >= 80%, else 'ok'. When no
68
+ * cap is configured the backend is unlimited ⇒ always 'ok'. `now` is injectable.
69
+ */
70
+ export declare function evalQuota(backend: EngineId, cfg: AshlrConfig, now?: number): 'ok' | 'warn' | 'over';