@frockbot/computer-core 0.3.26 → 0.3.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/package.json +2 -2
  2. package/src/core.ts +24 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@frockbot/computer-core",
3
- "version": "0.3.26",
3
+ "version": "0.3.28",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "exports": {
@@ -12,7 +12,7 @@
12
12
  "typecheck": "tsc --noEmit -p tsconfig.json"
13
13
  },
14
14
  "dependencies": {
15
- "@frockbot/kernel-contracts": "0.3.26",
15
+ "@frockbot/kernel-contracts": "0.3.28",
16
16
  "cordis": "4.0.0-rc.8"
17
17
  },
18
18
  "devDependencies": {
package/src/core.ts CHANGED
@@ -664,6 +664,25 @@ export type ComputerSyncReasonV1 = "open" | "signal" | "turn-end" | "publish";
664
664
  * than treating a dropped connection as failure" — so an unreachable Computer
665
665
  * answers `unavailable` and a Turn continues.
666
666
  */
667
+ /**
668
+ * What one run saw for one path its caller declared required.
669
+ *
670
+ * A required path is the only thing a sync caller asserts about: "these exact
671
+ * bytes must be readable from the store when this returns". Reporting it is
672
+ * what lets the caller's own failure be honest — an Applet publish that cannot
673
+ * read `dist/manifest.json` can say the Computer held it at hash X and the
674
+ * store answered `not-found`, instead of telling a Bot to run a build whose
675
+ * output is demonstrably on disk (production, 2026-09-04).
676
+ */
677
+ export interface ComputerSyncRequiredPathV1 {
678
+ /** The root-relative path the caller named. */
679
+ path: string;
680
+ /** sha-256 of the bytes on the Computer, absent when it held no such file. */
681
+ contentHash?: string;
682
+ /** True when the store is known to hold exactly those bytes. */
683
+ durable: boolean;
684
+ }
685
+
667
686
  export interface ComputerSyncSummaryV1 {
668
687
  status: "ok" | "degraded" | "unavailable" | "refused" | "skipped";
669
688
  /** Human-readable reason, empty when the run had nothing to say. */
@@ -679,6 +698,11 @@ export interface ComputerSyncSummaryV1 {
679
698
  omitted: number;
680
699
  conflicts: number;
681
700
  failures: number;
701
+ /**
702
+ * One row per path the caller declared required, absent when it declared
703
+ * none. Present even on a failed run: what the sync saw is the evidence.
704
+ */
705
+ required?: readonly ComputerSyncRequiredPathV1[];
682
706
  }
683
707
 
684
708
  export function computerSyncSummaryV1(