@neat.is/core 0.9.13-dev.20260901 → 0.9.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli.js CHANGED
@@ -3,10 +3,12 @@ import {
3
3
  clearDaemonRecord,
4
4
  portFromListenAddress,
5
5
  readDaemonRecord,
6
+ reconcileFrontierSurfaces,
6
7
  resolveHost,
7
8
  resolveNeatVersion,
9
+ startK8sSubstratePolling,
8
10
  writeDaemonRecord
9
- } from "./chunk-WE3AFQYL.js";
11
+ } from "./chunk-NV4WWJSU.js";
10
12
  import {
11
13
  buildSearchIndex
12
14
  } from "./chunk-BC53SCT7.js";
@@ -75,7 +77,7 @@ import {
75
77
  startStalenessLoop,
76
78
  upsertConnectorEntry,
77
79
  validateConnectorEntry
78
- } from "./chunk-RBZNXA5L.js";
80
+ } from "./chunk-SSLPBQWY.js";
79
81
  import {
80
82
  startOtelGrpcReceiver
81
83
  } from "./chunk-ERE47MCR.js";
@@ -482,7 +484,10 @@ async function startWatch(graph, opts) {
482
484
  const stopStaleness = startStalenessLoop(graph, {
483
485
  staleEventsPath: opts.staleEventsPath,
484
486
  project: projectName,
485
- onPolicyTrigger
487
+ onPolicyTrigger,
488
+ // Graduate FRONTIER surfaces whose twin arrived + stage surfaces for current
489
+ // hangs (ADR-226), each post-ingest tick.
490
+ onReconcile: (g) => reconcileFrontierSurfaces(g, opts.errorsPath)
486
491
  });
487
492
  const stopConnectors = await startConnectorPolling({
488
493
  project: projectName,
@@ -496,6 +501,14 @@ async function startWatch(graph, opts) {
496
501
  `neat watch: connector "${skipped.id}" (${skipped.provider}) skipped for project "${projectName}" \u2014 ${reason}`
497
502
  )
498
503
  });
504
+ const stopK8sSubstrate = await startK8sSubstratePolling({
505
+ project: projectName,
506
+ graph,
507
+ projectDir: opts.scanPath,
508
+ errorsPath: opts.errorsPath,
509
+ ...opts.neatHome ? { home: opts.neatHome } : {},
510
+ onSkip: (skipped, reason) => console.warn(`neat watch: k8s substrate "${skipped.id}" skipped for project "${projectName}" \u2014 ${reason}`)
511
+ });
499
512
  const auth = readAuthEnv();
500
513
  const host = opts.host ?? (auth.authToken ? "0.0.0.0" : "127.0.0.1");
501
514
  assertBindAuthority(host, auth.authToken);
@@ -682,6 +695,7 @@ async function startWatch(graph, opts) {
682
695
  }
683
696
  await watcher.close();
684
697
  stopConnectors();
698
+ stopK8sSubstrate();
685
699
  stopStaleness();
686
700
  stopPersist();
687
701
  detachEventBus();
@@ -5295,6 +5309,12 @@ function formatDivergenceLine(d) {
5295
5309
  const at = d.location ? ` at ${d.location}` : "";
5296
5310
  return ` \u2022 [${d.type}] ${d.source}${at} (${d.failureKind}) \u2014 confidence ${d.confidence.toFixed(2)}`;
5297
5311
  }
5312
+ case "deploy-mismatch": {
5313
+ if (d.kind === "image") {
5314
+ return ` \u2022 [${d.type}] ${d.source} \u2014 declared image ${d.declaredImage ?? "?"}, running ${d.observedImage ?? "?"} \u2014 confidence ${d.confidence.toFixed(2)}`;
5315
+ }
5316
+ return ` \u2022 [${d.type}] ${d.source} \u2014 declared ${d.declaredReplicas ?? "?"} replicas, ${d.observedReplicas ?? "?"} ready \u2014 confidence ${d.confidence.toFixed(2)}`;
5317
+ }
5298
5318
  }
5299
5319
  }
5300
5320
  async function runDivergences(client, input) {