@coreplane/switchboard 1.240.0 → 1.242.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 (146) hide show
  1. package/dist/assets/config/config.example.yaml +40 -8
  2. package/dist/assets/deploy/cloudflare/worker.ts +77 -18
  3. package/dist/assets/deploy/cloudflare-resident/worker.ts +198 -15
  4. package/dist/assets/deploy/cloudflare-sandbox/worker.ts +38 -5
  5. package/dist/assets/deploy/secrets.manifest.json +6 -0
  6. package/dist/assets/package-lock.json +3 -3
  7. package/dist/assets/package.json +1 -1
  8. package/dist/assets/project.json +2 -2
  9. package/dist/assets/source.json +3 -3
  10. package/dist/assets/src/agents/registry.ts +58 -22
  11. package/dist/assets/src/core/authz/actor.ts +17 -9
  12. package/dist/assets/src/core/authz/authorize.ts +17 -4
  13. package/dist/assets/src/core/authz/grants.ts +20 -9
  14. package/dist/assets/src/core/authz/types.ts +12 -0
  15. package/dist/assets/src/core/coordinator/contract.ts +40 -1
  16. package/dist/assets/src/core/coordinator/driver.ts +17 -1
  17. package/dist/assets/src/core/coordinator/instancesRoute.ts +72 -0
  18. package/dist/assets/src/core/costs.ts +22 -9
  19. package/dist/assets/src/core/harness/scope.ts +21 -0
  20. package/dist/assets/src/core/runEvents.ts +20 -1
  21. package/dist/assets/src/core/runLedger/types.ts +2 -0
  22. package/dist/assets/src/core/runRecord.ts +4 -0
  23. package/dist/assets/src/core/ship/contract.ts +4 -2
  24. package/dist/assets/src/core/ship/coordinator.ts +22 -7
  25. package/dist/assets/src/core/trace/attrs.ts +1 -1
  26. package/dist/assets/src/execution/bindingPurge.ts +2 -2
  27. package/dist/assets/src/execution/residentAutoRebuild.ts +4 -2
  28. package/dist/assets/src/execution/residentHead.ts +23 -10
  29. package/dist/assets/src/execution/residentInfraStreak.ts +89 -0
  30. package/dist/assets/src/execution/residentRefresh.ts +15 -1
  31. package/dist/assets/src/execution/residentSteps.ts +1 -0
  32. package/dist/assets/src/execution/sandboxErrors.ts +6 -0
  33. package/dist/assets/src/execution/seedPlan.ts +17 -0
  34. package/dist/assets/web/dist/.vite/manifest.json +435 -439
  35. package/dist/assets/web/dist/assets/AppShell-IDMGG6yi.js +1 -0
  36. package/dist/assets/web/dist/assets/{CostsPage-BD3w5j_S.js → CostsPage-CtmKhhOF.js} +2 -2
  37. package/dist/assets/web/dist/assets/{DeliveryPage-BtvzKA1m.js → DeliveryPage-n1tz5I_v.js} +1 -1
  38. package/dist/assets/web/dist/assets/HomePage-QtH1EwYF.js +2 -0
  39. package/dist/assets/web/dist/assets/{NotFoundPage-DwOX1HaZ.js → NotFoundPage-C97EhJcQ.js} +1 -1
  40. package/dist/assets/web/dist/assets/PendingTurnRow-BZA_vQt3.js +1 -0
  41. package/dist/assets/web/dist/assets/{ResidentDetailPage-CUAOh5d9.js → ResidentDetailPage-DTMBgnIW.js} +1 -1
  42. package/dist/assets/web/dist/assets/{ResidentsIndexPage-B3KUlYy2.js → ResidentsIndexPage-CaDvXhzJ.js} +1 -1
  43. package/dist/assets/web/dist/assets/RunFoldRow-mgyLW0oV.js +1 -0
  44. package/dist/assets/web/dist/assets/RunRoutePage-DypJYMQa.js +6 -0
  45. package/dist/assets/web/dist/assets/RunsIndexPage-DYraPoWD.js +1 -0
  46. package/dist/assets/web/dist/assets/{RunsTabs-BnkvCBrM.js → RunsTabs-BUfdk0lH.js} +1 -1
  47. package/dist/assets/web/dist/assets/{ScheduledPage-C1y9jgAk.js → ScheduledPage-DXD2gLJk.js} +1 -1
  48. package/dist/assets/web/dist/assets/SettingsPage-BIGio8Y0.js +1 -0
  49. package/dist/assets/web/dist/assets/{StatusDot-CiByEtoR.js → StatusDot-ELoXHlFt.js} +1 -1
  50. package/dist/assets/web/dist/assets/{Tooltip-DyRxk8A8.js → Tooltip-BoeFwYP2.js} +1 -1
  51. package/dist/assets/web/dist/assets/UnitRoutePage-jhCrWW3i.js +1 -0
  52. package/dist/assets/web/dist/assets/{angular-html-DAQ_1T1v.js → angular-html-oBNfPJR0.js} +1 -1
  53. package/dist/assets/web/dist/assets/{angular-ts-D4kxRVp1.js → angular-ts-BvNwsyWA.js} +1 -1
  54. package/dist/assets/web/dist/assets/{apl-Dy07l64y.js → apl-CNUdRlYf.js} +1 -1
  55. package/dist/assets/web/dist/assets/{astro-DZIbTlc7.js → astro-Zb0NriSe.js} +1 -1
  56. package/dist/assets/web/dist/assets/{blade-CmSXWX3l.js → blade-qPRVheqq.js} +1 -1
  57. package/dist/assets/web/dist/assets/{c-ggzVdJLK.js → c-D8Awx4YO.js} +1 -1
  58. package/dist/assets/web/dist/assets/{chapel-Bo1wktsG.js → chapel-Bt72Mhsx.js} +1 -1
  59. package/dist/assets/web/dist/assets/{cobol-DJUmtKM2.js → cobol-BOBacexg.js} +1 -1
  60. package/dist/assets/web/dist/assets/{coffee-BZWOVz4C.js → coffee-E4u0liHW.js} +1 -1
  61. package/dist/assets/web/dist/assets/{cpp-Dtk39yMw.js → cpp-q2sLNlul.js} +1 -1
  62. package/dist/assets/web/dist/assets/{crystal-CGf_-Zoj.js → crystal-DyWqUnlb.js} +1 -1
  63. package/dist/assets/web/dist/assets/{css-CX2fcL4u.js → css-CQY0hFsD.js} +1 -1
  64. package/dist/assets/web/dist/assets/{dist-D8TaC961.js → dist-BU5UivXC.js} +2 -2
  65. package/dist/assets/web/dist/assets/durationTone-BobbycC-.js +1 -0
  66. package/dist/assets/web/dist/assets/{edge-BYS8FtgQ.js → edge-C1MwhJkX.js} +1 -1
  67. package/dist/assets/web/dist/assets/{elixir-fhUpi3nO.js → elixir-Bb3YbHfn.js} +1 -1
  68. package/dist/assets/web/dist/assets/{elm-DAQNiwsN.js → elm-DAN9IGQw.js} +1 -1
  69. package/dist/assets/web/dist/assets/{erb-CWzEys6U.js → erb-BEB8Xlsj.js} +1 -1
  70. package/dist/assets/web/dist/assets/{git-rebase-9rY3p-Rw.js → git-rebase-tqpjRfxO.js} +1 -1
  71. package/dist/assets/web/dist/assets/{glimmer-js-tY7hy0nE.js → glimmer-js-Ccbo65zR.js} +1 -1
  72. package/dist/assets/web/dist/assets/{glimmer-ts-CTrLv5JF.js → glimmer-ts-B6WBVMpE.js} +1 -1
  73. package/dist/assets/web/dist/assets/{glsl-BRJbiDfq.js → glsl-tRec3Fcu.js} +1 -1
  74. package/dist/assets/web/dist/assets/{graphql-B-MtVLh2.js → graphql-P8kbxT4F.js} +1 -1
  75. package/dist/assets/web/dist/assets/{hack-BtIkOypQ.js → hack-H9Zhkagy.js} +1 -1
  76. package/dist/assets/web/dist/assets/{haml-CoOH6gfa.js → haml-DtEnpn7Z.js} +1 -1
  77. package/dist/assets/web/dist/assets/{handlebars-DgrRu-GP.js → handlebars-DkgPfoAz.js} +1 -1
  78. package/dist/assets/web/dist/assets/{html-DZaaI7ca.js → html-D30RXpIs.js} +1 -1
  79. package/dist/assets/web/dist/assets/{html-derivative-DgHvT-qZ.js → html-derivative-DwozLrEx.js} +1 -1
  80. package/dist/assets/web/dist/assets/{http-CvAd51yz.js → http-DXuzBAPm.js} +1 -1
  81. package/dist/assets/web/dist/assets/{hurl-CXGqAfzx.js → hurl-d1UUJIt_.js} +1 -1
  82. package/dist/assets/web/dist/assets/{indexRow-Cse3JGb0.js → indexRow-BD1VT8o8.js} +1 -1
  83. package/dist/assets/web/dist/assets/{java-CIQStIXF.js → java-DL0gWf34.js} +1 -1
  84. package/dist/assets/web/dist/assets/{javascript-WbH8s7E3.js → javascript-Cl7vavnS.js} +1 -1
  85. package/dist/assets/web/dist/assets/{jinja-DzyWEVKC.js → jinja-CfQOWMX9.js} +1 -1
  86. package/dist/assets/web/dist/assets/{jison-CrT-zCa-.js → jison-KdYirlqm.js} +1 -1
  87. package/dist/assets/web/dist/assets/{json-lHjpjXMQ.js → json-C9cDQ-Qj.js} +1 -1
  88. package/dist/assets/web/dist/assets/{jsx-WTwYCHW6.js → jsx-CRx5NItd.js} +1 -1
  89. package/dist/assets/web/dist/assets/{julia-Bqpk9H7E.js → julia-CmsQsZQl.js} +1 -1
  90. package/dist/assets/web/dist/assets/{just-LdXk1r3m.js → just-CsM3Q8TE.js} +1 -1
  91. package/dist/assets/web/dist/assets/{latex-h_y2A5KD.js → latex-BXCh5YRX.js} +1 -1
  92. package/dist/assets/web/dist/assets/{liquid-CY7bF2_p.js → liquid-BF2vwK8p.js} +1 -1
  93. package/dist/assets/web/dist/assets/{lua-oQ7XVZOY.js → lua-DcMBATrl.js} +1 -1
  94. package/dist/assets/web/dist/assets/main-B2fX10aW.css +1 -0
  95. package/dist/assets/web/dist/assets/{main-CGO6fQ8k.js → main-D4EA1g6n.js} +2 -2
  96. package/dist/assets/web/dist/assets/{marko-zv_qZ4QV.js → marko-88MndKvG.js} +1 -1
  97. package/dist/assets/web/dist/assets/{mdc-Dl4kL_YK.js → mdc-DJ4kVAd8.js} +1 -1
  98. package/dist/assets/web/dist/assets/{nginx-CAHCZj4F.js → nginx-CP6mRgtV.js} +1 -1
  99. package/dist/assets/web/dist/assets/{nim-BOtmwCJH.js → nim-QQfj3fpF.js} +1 -1
  100. package/dist/assets/web/dist/assets/{org-DspQk3HQ.js → org-Bke3eBzc.js} +1 -1
  101. package/dist/assets/web/dist/assets/{perl-CAXmvVl0.js → perl-Bkh0N7Kz.js} +1 -1
  102. package/dist/assets/web/dist/assets/{php-CMUx4VyM.js → php-Dnv1Piya.js} +1 -1
  103. package/dist/assets/web/dist/assets/{pug-B55xVJTv.js → pug-D6peFFI7.js} +1 -1
  104. package/dist/assets/web/dist/assets/{qml-DsNKCCRk.js → qml-D8PEs-C-.js} +1 -1
  105. package/dist/assets/web/dist/assets/{r-DbhP0VvO.js → r-B1EL9b_j.js} +1 -1
  106. package/dist/assets/web/dist/assets/{razor-BCpE6P-p.js → razor-BsMTIh2b.js} +1 -1
  107. package/dist/assets/web/dist/assets/{regexp-BllsjiN4.js → regexp-HhvC8spD.js} +1 -1
  108. package/dist/assets/web/dist/assets/{rst-CO5Rpq9V.js → rst-D5paAxpg.js} +1 -1
  109. package/dist/assets/web/dist/assets/{ruby-C2A4OgQq.js → ruby-BrQwhLrl.js} +1 -1
  110. package/dist/assets/web/dist/assets/{sas-Butzoyql.js → sas-afot2B1o.js} +1 -1
  111. package/dist/assets/web/dist/assets/{scss-PEUwJBpf.js → scss-Efm-mwuG.js} +1 -1
  112. package/dist/assets/web/dist/assets/{shellscript-3Yhq0khE.js → shellscript-BK0Vv5fT.js} +1 -1
  113. package/dist/assets/web/dist/assets/{shellsession-04Hkb7m3.js → shellsession-BGqlMC7N.js} +1 -1
  114. package/dist/assets/web/dist/assets/{soy-BnId73cP.js → soy-M0b4UwGM.js} +1 -1
  115. package/dist/assets/web/dist/assets/{sql-BKwdc0ch.js → sql-sxe6IE9j.js} +1 -1
  116. package/dist/assets/web/dist/assets/sseReplay-g7ml86LM.js +9 -0
  117. package/dist/assets/web/dist/assets/{stata-BPPtNkay.js → stata-nPF_ddLP.js} +1 -1
  118. package/dist/assets/web/dist/assets/{surrealql-CDPChcYP.js → surrealql-D_GrC6u7.js} +1 -1
  119. package/dist/assets/web/dist/assets/{svelte-B15DIQ-z.js → svelte-DwL1AtNP.js} +1 -1
  120. package/dist/assets/web/dist/assets/{templ-D-rp_AiB.js → templ-7s7LTDkc.js} +1 -1
  121. package/dist/assets/web/dist/assets/{tex-BnVDCD7p.js → tex-Bx-5fMxe.js} +1 -1
  122. package/dist/assets/web/dist/assets/{ts-tags-cpujdyAR.js → ts-tags-DUMJnke_.js} +1 -1
  123. package/dist/assets/web/dist/assets/{tsx-D1vO4L72.js → tsx-BN8biPDe.js} +1 -1
  124. package/dist/assets/web/dist/assets/{twig-oQGnQGRc.js → twig-8nIu84TN.js} +1 -1
  125. package/dist/assets/web/dist/assets/{typescript-CKSFpXiH.js → typescript-BooSPq_S.js} +1 -1
  126. package/dist/assets/web/dist/assets/{typst-DKHFo8BF.js → typst-CTBiBsem.js} +1 -1
  127. package/dist/assets/web/dist/assets/{vue-BstokpiS.js → vue-C6Ft4Lea.js} +1 -1
  128. package/dist/assets/web/dist/assets/{vue-html-DpCp0_Sz.js → vue-html-Ba36dD5D.js} +1 -1
  129. package/dist/assets/web/dist/assets/{vue-vine-y5d5wUb1.js → vue-vine-NkFexVo2.js} +1 -1
  130. package/dist/assets/web/dist/assets/{xml-Br2hx5Ax.js → xml-C_THnHXZ.js} +1 -1
  131. package/dist/assets/web/dist/assets/{xsl-Bc8Cobap.js → xsl-D8G5xqjY.js} +1 -1
  132. package/dist/assets/web/dist/assets/{yaml-LOITy_I1.js → yaml-jAMIJzge.js} +1 -1
  133. package/dist/cli.js +4632 -817
  134. package/package.json +1 -1
  135. package/dist/assets/web/dist/assets/AppShell-CM_fh-WW.js +0 -1
  136. package/dist/assets/web/dist/assets/HomePage-BU6aRCSe.js +0 -2
  137. package/dist/assets/web/dist/assets/RunFoldRow-Dulcbg25.js +0 -1
  138. package/dist/assets/web/dist/assets/RunRoutePage-DGoGrQZq.js +0 -6
  139. package/dist/assets/web/dist/assets/RunsIndexPage-37W7OZbC.js +0 -1
  140. package/dist/assets/web/dist/assets/SettingsPage-ggfB-Rqr.js +0 -1
  141. package/dist/assets/web/dist/assets/SlackMark-VDNs7Vjh.js +0 -1
  142. package/dist/assets/web/dist/assets/Slideover-CX-LEklF.js +0 -1
  143. package/dist/assets/web/dist/assets/UnitRoutePage-CnWyOizV.js +0 -1
  144. package/dist/assets/web/dist/assets/durationTone-DXG-3R7_.js +0 -1
  145. package/dist/assets/web/dist/assets/main-O8UXRuEv.css +0 -1
  146. package/dist/assets/web/dist/assets/sseReplay-DutHNghE.js +0 -9
@@ -53,6 +53,12 @@ const FLEET_BUSY_PATTERNS: readonly RegExp[] = [
53
53
  // pool matches on this exact phrase. Seen live passing through as a plain
54
54
  // in-body error and ending two reviews in under a minute each.
55
55
  /Maximum number of running container instances exceeded/i,
56
+ // The platform's start-rate limit: a burst of fresh threads (twenty-four
57
+ // seeded sandboxes started within twenty seconds) had a third of its
58
+ // container starts refused with this text, and the Worker read it as a
59
+ // failed seed. It is capacity for a moment, like a full fleet: the
60
+ // executor waits and re-sends the identical request.
61
+ /too many containers per second/i,
56
62
  ];
57
63
 
58
64
  export function isFleetBusy(message: string): boolean {
@@ -70,6 +70,19 @@ export interface SandboxSeed {
70
70
 
71
71
  export type SeedStep = "restore" | "deps" | "fixup";
72
72
 
73
+ /** One restore's two phases, in milliseconds: the SDK's presigned download of
74
+ * the archive (judged by bytes arriving), then the extraction onto the disk. */
75
+ export interface RestorePhases {
76
+ download: number;
77
+ extract: number;
78
+ }
79
+
80
+ export interface SeedPhases {
81
+ checkout: RestorePhases;
82
+ /** Null when no deps entry rode along. */
83
+ deps: RestorePhases | null;
84
+ }
85
+
73
86
  export type SeedAnswer =
74
87
  | {
75
88
  seeded: true;
@@ -82,6 +95,10 @@ export type SeedAnswer =
82
95
  from: { ref: string; sha: string; checkoutBackupId: string; depsBackupId?: string };
83
96
  /** Milliseconds per step; `deps` null when no entry rode along; all zero when cached. */
84
97
  steps: { restore: number; deps: number | null; fixup: number };
98
+ /** Each restore split into its two phases — the archive's download to the
99
+ * container and its extraction onto the disk — so the gate's reading says
100
+ * which one owns a slow seed. Absent when cached. */
101
+ phases?: SeedPhases;
85
102
  ms: number;
86
103
  }
87
104
  | { seeded: false; reason: SeedReason; detail: string; step?: SeedStep };