@coreplane/switchboard 1.228.0 → 1.229.0

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 (30) hide show
  1. package/dist/assets/config/config.example.yaml +7 -13
  2. package/dist/assets/deploy/cloudflare-resident/worker.ts +41 -16
  3. package/dist/assets/package-lock.json +2397 -26
  4. package/dist/assets/package.json +2 -2
  5. package/dist/assets/source.json +3 -3
  6. package/dist/assets/src/agents/registry.ts +4 -34
  7. package/dist/assets/src/core/authz/policy.ts +8 -0
  8. package/dist/assets/src/core/authz/resource.ts +3 -1
  9. package/dist/assets/src/core/authz/types.ts +10 -1
  10. package/dist/assets/src/core/chatMessage.ts +1 -1
  11. package/dist/assets/src/core/runEvents.ts +19 -13
  12. package/dist/assets/src/core/runFriction.ts +1 -1
  13. package/dist/assets/src/execution/residentDepCache.ts +34 -8
  14. package/dist/assets/web/dist/.vite/manifest.json +20 -20
  15. package/dist/assets/web/dist/assets/CostsPage-DQg30mHr.js +2 -0
  16. package/dist/assets/web/dist/assets/{ResidentDetailPage-B1Q9pabX.js → ResidentDetailPage-CkVYktwT.js} +1 -1
  17. package/dist/assets/web/dist/assets/{ResidentsIndexPage-CP7U_4aK.js → ResidentsIndexPage-BLanxf27.js} +1 -1
  18. package/dist/assets/web/dist/assets/RunRoutePage-U3nwL8Df.js +13 -0
  19. package/dist/assets/web/dist/assets/{RunsIndexPage-Cgp4t4C8.js → RunsIndexPage-DrIVxmpl.js} +1 -1
  20. package/dist/assets/web/dist/assets/{ScheduledPage-DthDA2xG.js → ScheduledPage-DpqubmIm.js} +1 -1
  21. package/dist/assets/web/dist/assets/{StatusDot-DDc88Kbs.js → StatusDot-BpD9MRge.js} +1 -1
  22. package/dist/assets/web/dist/assets/{Tooltip-CBapNhsh.js → Tooltip-BYv0WSrA.js} +1 -1
  23. package/dist/assets/web/dist/assets/{dist-BnwSD1cL.js → dist-BZmA5qTt.js} +1 -1
  24. package/dist/assets/web/dist/assets/{main-ZhQGbZ2E.js → main-C4GOEklV.js} +2 -2
  25. package/dist/assets/web/dist/assets/main-CAVqMbiX.css +1 -0
  26. package/dist/cli.js +6598 -7380
  27. package/package.json +1 -2
  28. package/dist/assets/web/dist/assets/CostsPage-5pl3HB2F.js +0 -2
  29. package/dist/assets/web/dist/assets/RunRoutePage-dCC25f_b.js +0 -12
  30. package/dist/assets/web/dist/assets/main-xLAsdkfB.css +0 -1
@@ -317,19 +317,13 @@ workspaceDir: ./workspaces
317
317
  # maxRounds: 3 # review rounds per unit
318
318
  # maxMinutes: 120 # the ship preset's wall-clock budget in minutes (the registry's default)
319
319
 
320
- # Which loop drives each preset's runs (docs/reference/specs/harness-pi.md):
321
- # `native`, the in-process turn loop, or `pi`, the pi coding agent started
322
- # inside the run's own execution container and driven over its RPC protocol —
323
- # with the run's model-proxy bearer as its only key, every event bridged onto
324
- # the run's own record, our tools and tool rules as its extension. Every
325
- # preset declares `native` until the pi series moves it; a deployment moves a
326
- # preset early here. A preset with a workspace (coding, review, explore) runs
327
- # pi in the run's container; a preset without one (general, research,
328
- # conductor) runs it as a child of the bot, with none of pi's own shell or
329
- # file tools. A preset the registry does not know, or a value that is
330
- # neither harness, fails the load by name.
331
- # harness:
332
- # coding: pi
320
+ # `harness` is a retired key (docs/reference/specs/harness-pi.md item 1). It
321
+ # moved the presets onto pi one at a time; every preset runs on pi now — the pi
322
+ # coding agent started inside the run's own execution container (or as a child
323
+ # of the bot for a preset without a workspace) with the run's model-proxy
324
+ # bearer as its only key — and there is no other loop. A block written during
325
+ # the series still loads when every value is `pi`; `native` names the deleted
326
+ # loop and fails the load by name, as does an unknown preset. Remove the block.
333
327
 
334
328
  # What the harness writes into pi's per-run settings for every run on pi
335
329
  # (docs/reference/specs/harness-pi.md item 4): pi's compaction thresholds, in
@@ -5417,14 +5417,13 @@ export class ResidentDO extends Sandbox<Env> {
5417
5417
  "deps-seed",
5418
5418
  REFRESH_BUILD_TIMEOUT_MS,
5419
5419
  );
5420
- const paths = mutableCachePaths(`${scratch}/node_modules`, parsed.mutableListing);
5421
- if (paths.length > 0) {
5422
- await this.runDepScript(
5423
- mutableCacheSwapScript(seedNm, `${scratch}/node_modules`, BUILD_USER, paths),
5424
- "deps-seed-swap",
5425
- GIT_NETWORK_TIMEOUT_MS,
5426
- );
5427
- }
5420
+ await this.swapMutableCaches(
5421
+ seedNm,
5422
+ `${scratch}/node_modules`,
5423
+ BUILD_USER,
5424
+ parsed.mutableListing,
5425
+ "deps-seed-swap",
5426
+ );
5428
5427
  console.log(`deps: ${key.slice(0, 8)} seeded from ${seed.slice(0, 8)} (${parsed.mech})`);
5429
5428
  }
5430
5429
  // Unprivileged and token-free, in a tree only this attempt
@@ -5527,16 +5526,42 @@ export class ResidentDO extends Sandbox<Env> {
5527
5526
  "deps-materialize",
5528
5527
  REFRESH_BUILD_TIMEOUT_MS,
5529
5528
  );
5530
- const nmDst = `${tree}/node_modules`;
5531
- const paths = mutableCachePaths(nmDst, parsed.mutableListing);
5532
- if (paths.length > 0) {
5533
- await this.runDepScript(
5534
- mutableCacheSwapScript(entryNodeModules ?? `${CHECKOUT_DIR}/node_modules`, nmDst, user, paths),
5535
- "deps-mutable-swap",
5536
- GIT_NETWORK_TIMEOUT_MS,
5529
+ await this.swapMutableCaches(
5530
+ entryNodeModules ?? `${CHECKOUT_DIR}/node_modules`,
5531
+ `${tree}/node_modules`,
5532
+ user,
5533
+ parsed.mutableListing,
5534
+ "deps-mutable-swap",
5535
+ );
5536
+ return parsed.mech;
5537
+ }
5538
+
5539
+ /** The tool-cache swap for a freshly hardlinked node_modules: the listing
5540
+ * through `mutableCachePaths`, every swap in one fork
5541
+ * (`mutableCacheSwapScript`). A path the source has no counterpart for is
5542
+ * a tree-private entry the script leaves in place and names on a
5543
+ * `skipped=` line; the log carries those names so a refresh that read warm
5544
+ * still says what it left alone (the failure path already quotes the
5545
+ * script's stdout). */
5546
+ private async swapMutableCaches(
5547
+ srcNodeModules: string,
5548
+ dstNodeModules: string,
5549
+ user: string,
5550
+ mutableListing: string[],
5551
+ step: "deps-mutable-swap" | "deps-seed-swap",
5552
+ ): Promise<void> {
5553
+ const paths = mutableCachePaths(dstNodeModules, mutableListing);
5554
+ if (paths.length === 0) return;
5555
+ const swapped = await this.runDepScript(
5556
+ mutableCacheSwapScript(srcNodeModules, dstNodeModules, user, paths),
5557
+ step,
5558
+ GIT_NETWORK_TIMEOUT_MS,
5559
+ );
5560
+ if (swapped.skipped.length > 0) {
5561
+ console.log(
5562
+ `deps: ${step} left ${swapped.skipped.length} tree-private node_modules entr${swapped.skipped.length === 1 ? "y" : "ies"} with no store counterpart in place: ${swapped.skipped.join(", ")}`,
5537
5563
  );
5538
5564
  }
5539
- return parsed.mech;
5540
5565
  }
5541
5566
 
5542
5567
  /** Adopt a checkout that already holds node_modules but whose key has no