@coreplane/switchboard 1.200.0 → 1.202.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 (47) hide show
  1. package/README.md +1 -1
  2. package/dist/assets/deploy/cloudflare-resident/refresh.ts +238 -0
  3. package/dist/assets/deploy/cloudflare-resident/shared.ts +80 -0
  4. package/dist/assets/deploy/cloudflare-resident/tsconfig.json +1 -1
  5. package/dist/assets/deploy/cloudflare-resident/worker.ts +67 -285
  6. package/dist/assets/deploy/cloudflare-resident/wrangler.template.jsonc +2 -1
  7. package/dist/assets/package-lock.json +482 -3
  8. package/dist/assets/package.json +1 -1
  9. package/dist/assets/project.json +1 -1
  10. package/dist/assets/source.json +3 -3
  11. package/dist/assets/src/core/authz/policy.ts +3 -0
  12. package/dist/assets/src/execution/residentRefresh.ts +29 -0
  13. package/dist/assets/web/dist/.vite/manifest.json +104 -67
  14. package/dist/assets/web/dist/assets/{AppShell-Bk2gbvet.js → AppShell-CJLPO_aI.js} +1 -1
  15. package/dist/assets/web/dist/assets/CostsPage-C6ZvnAmH.js +1 -0
  16. package/dist/assets/web/dist/assets/NotFoundPage-BdLcY60r.js +1 -0
  17. package/dist/assets/web/dist/assets/ResidentDetailPage-hXWrr8T6.js +1 -0
  18. package/dist/assets/web/dist/assets/ResidentsIndexPage-YLu4JwxJ.js +1 -0
  19. package/dist/assets/web/dist/assets/{RunRoutePage-C1TGcPCl.js → RunRoutePage-BDhHRJVO.js} +4 -4
  20. package/dist/assets/web/dist/assets/{RunRoutePage-XVFj0XDc.css → RunRoutePage-CdbrbqU2.css} +1 -1
  21. package/dist/assets/web/dist/assets/RunsIndexPage-D7zZ5a0l.js +1 -0
  22. package/dist/assets/web/dist/assets/{RunsTabs-C4krAL9o.js → RunsTabs-BOUlSa2W.js} +1 -1
  23. package/dist/assets/web/dist/assets/ScheduledPage-BciOQcC-.js +1 -0
  24. package/dist/assets/web/dist/assets/StatusDot-CTDLBv92.js +1 -0
  25. package/dist/assets/web/dist/assets/{Tooltip-C7yR095Y.js → Tooltip-DD2v9Gxx.js} +1 -1
  26. package/dist/assets/web/dist/assets/{favicon-DL1rdWJt.js → favicon-C4Q8cRsP.js} +1 -1
  27. package/dist/assets/web/dist/assets/instrument-sans-latin-ext-wght-normal-B5bTHO_g.woff2 +0 -0
  28. package/dist/assets/web/dist/assets/instrument-sans-latin-wght-normal-BbzFLZTg.woff2 +0 -0
  29. package/dist/assets/web/dist/assets/jetbrains-mono-cyrillic-wght-normal-D73BlboJ.woff2 +0 -0
  30. package/dist/assets/web/dist/assets/jetbrains-mono-greek-wght-normal-Bw9x6K1M.woff2 +0 -0
  31. package/dist/assets/web/dist/assets/jetbrains-mono-latin-ext-wght-normal-DBQx-q_a.woff2 +0 -0
  32. package/dist/assets/web/dist/assets/jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2 +0 -0
  33. package/dist/assets/web/dist/assets/jetbrains-mono-vietnamese-wght-normal-Bt-aOZkq.woff2 +0 -0
  34. package/dist/assets/web/dist/assets/main-DoTjwE-G.css +1 -0
  35. package/dist/assets/web/dist/assets/{main-DDu3Ig6S.js → main-DrSlUcMg.js} +3 -3
  36. package/dist/assets/web/dist/assets/{seed-BglCRKLA.js → seed-B8mQEhhw.js} +1 -1
  37. package/dist/assets/web/dist/assets/{wallClock-Ckv3sKoR.js → wallClock-DI4HIEN5.js} +1 -1
  38. package/dist/cli.js +629 -207
  39. package/package.json +1 -1
  40. package/dist/assets/web/dist/assets/CostsPage-CzutIHUw.js +0 -1
  41. package/dist/assets/web/dist/assets/NotFoundPage-C-BuaSm8.js +0 -1
  42. package/dist/assets/web/dist/assets/ResidentDetailPage-Dw3e9u1u.js +0 -1
  43. package/dist/assets/web/dist/assets/ResidentsIndexPage-D8NN4AFS.js +0 -1
  44. package/dist/assets/web/dist/assets/RunsIndexPage-D9iLpfAr.js +0 -1
  45. package/dist/assets/web/dist/assets/ScheduledPage-BJCtMp7H.js +0 -1
  46. package/dist/assets/web/dist/assets/StatusDot-DvV0z_-s.js +0 -1
  47. package/dist/assets/web/dist/assets/main-BsBGUyMH.css +0 -2
@@ -230,6 +230,35 @@ export function classifyRefreshFailure(input: {
230
230
  return { interrupted: false, diskFull: false, reason: `${step}-failed: ${message}` };
231
231
  }
232
232
 
233
+ /** What the wake path does with a failed restore. `down` is the rule: the
234
+ * SDK's restore cannot be cancelled, so a stalled or capped one may still be
235
+ * streaming into the disk, and a `down` resident's only exit is a rebuild
236
+ * that starts on an empty container — the stream must not land on it. The
237
+ * one exception is the failure that proves nothing is streaming: the runtime
238
+ * was replaced under the restore (a resident Worker deploy rolled the
239
+ * container; `RUNTIME_REPLACEMENT_WORDING`), so the disk it wrote to is gone
240
+ * with it. That is `interrupted`, the same class a refresh step earns when a
241
+ * deploy kills it: not evidence about the repo, re-armed short, and the next
242
+ * wake restores again. The caller may also say the error IS a replacement
243
+ * (`runtimeReplaced`, from the Worker's typed and cause-chain check, since
244
+ * the SDK throws typed replacement errors whose top-level message carries no
245
+ * wording); the message check stays for the untyped ones. A message that
246
+ * also says the command timed out stays `down` either way — the timeout
247
+ * means the stream ran on before the replacement. */
248
+ export function restoreFailureDisposition(
249
+ message: string,
250
+ facts: { runtimeReplaced?: boolean } = {},
251
+ ): { action: "interrupted"; reason: string } | { action: "down"; reason: string } {
252
+ const timedOut = /\(timed out\)/.test(message);
253
+ if (!timedOut && (facts.runtimeReplaced === true || RUNTIME_REPLACEMENT_WORDING.test(message))) {
254
+ return { action: "interrupted", reason: `restore-interrupted: ${message}` };
255
+ }
256
+ return {
257
+ action: "down",
258
+ reason: `r2-restore-failed: ${message} — container stopped so the transfer cannot land on a rebuild`,
259
+ };
260
+ }
261
+
233
262
  /** Re-arm delay after a cycle that did not run to completion for a reason
234
263
  * outside the repo — an interrupted step, or an image-stale container stop.
235
264
  * 45 s: comfortably longer than a container restart plus rehydration
@@ -1,51 +1,79 @@
1
1
  {
2
- "_AppShell-Bk2gbvet.js": {
3
- "file": "assets/AppShell-Bk2gbvet.js",
2
+ "../node_modules/@fontsource-variable/instrument-sans/files/instrument-sans-latin-ext-wght-normal.woff2": {
3
+ "file": "assets/instrument-sans-latin-ext-wght-normal-B5bTHO_g.woff2",
4
+ "src": "../node_modules/@fontsource-variable/instrument-sans/files/instrument-sans-latin-ext-wght-normal.woff2"
5
+ },
6
+ "../node_modules/@fontsource-variable/instrument-sans/files/instrument-sans-latin-wght-normal.woff2": {
7
+ "file": "assets/instrument-sans-latin-wght-normal-BbzFLZTg.woff2",
8
+ "src": "../node_modules/@fontsource-variable/instrument-sans/files/instrument-sans-latin-wght-normal.woff2"
9
+ },
10
+ "../node_modules/@fontsource-variable/jetbrains-mono/files/jetbrains-mono-cyrillic-wght-normal.woff2": {
11
+ "file": "assets/jetbrains-mono-cyrillic-wght-normal-D73BlboJ.woff2",
12
+ "src": "../node_modules/@fontsource-variable/jetbrains-mono/files/jetbrains-mono-cyrillic-wght-normal.woff2"
13
+ },
14
+ "../node_modules/@fontsource-variable/jetbrains-mono/files/jetbrains-mono-greek-wght-normal.woff2": {
15
+ "file": "assets/jetbrains-mono-greek-wght-normal-Bw9x6K1M.woff2",
16
+ "src": "../node_modules/@fontsource-variable/jetbrains-mono/files/jetbrains-mono-greek-wght-normal.woff2"
17
+ },
18
+ "../node_modules/@fontsource-variable/jetbrains-mono/files/jetbrains-mono-latin-ext-wght-normal.woff2": {
19
+ "file": "assets/jetbrains-mono-latin-ext-wght-normal-DBQx-q_a.woff2",
20
+ "src": "../node_modules/@fontsource-variable/jetbrains-mono/files/jetbrains-mono-latin-ext-wght-normal.woff2"
21
+ },
22
+ "../node_modules/@fontsource-variable/jetbrains-mono/files/jetbrains-mono-latin-wght-normal.woff2": {
23
+ "file": "assets/jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2",
24
+ "src": "../node_modules/@fontsource-variable/jetbrains-mono/files/jetbrains-mono-latin-wght-normal.woff2"
25
+ },
26
+ "../node_modules/@fontsource-variable/jetbrains-mono/files/jetbrains-mono-vietnamese-wght-normal.woff2": {
27
+ "file": "assets/jetbrains-mono-vietnamese-wght-normal-Bt-aOZkq.woff2",
28
+ "src": "../node_modules/@fontsource-variable/jetbrains-mono/files/jetbrains-mono-vietnamese-wght-normal.woff2"
29
+ },
30
+ "_AppShell-CJLPO_aI.js": {
31
+ "file": "assets/AppShell-CJLPO_aI.js",
4
32
  "name": "AppShell",
5
33
  "imports": [
6
- "_seed-BglCRKLA.js"
34
+ "_seed-B8mQEhhw.js"
7
35
  ]
8
36
  },
9
- "_NotFoundPage-C-BuaSm8.js": {
10
- "file": "assets/NotFoundPage-C-BuaSm8.js",
37
+ "_NotFoundPage-BdLcY60r.js": {
38
+ "file": "assets/NotFoundPage-BdLcY60r.js",
11
39
  "name": "NotFoundPage",
12
40
  "imports": [
13
- "_AppShell-Bk2gbvet.js",
14
- "_seed-BglCRKLA.js",
15
- "_RunsTabs-C4krAL9o.js"
41
+ "_AppShell-CJLPO_aI.js",
42
+ "_seed-B8mQEhhw.js",
43
+ "_RunsTabs-BOUlSa2W.js"
16
44
  ]
17
45
  },
18
- "_RunsTabs-C4krAL9o.js": {
19
- "file": "assets/RunsTabs-C4krAL9o.js",
46
+ "_RunsTabs-BOUlSa2W.js": {
47
+ "file": "assets/RunsTabs-BOUlSa2W.js",
20
48
  "name": "RunsTabs",
21
49
  "imports": [
22
- "_AppShell-Bk2gbvet.js",
23
- "_seed-BglCRKLA.js"
50
+ "_AppShell-CJLPO_aI.js",
51
+ "_seed-B8mQEhhw.js"
24
52
  ]
25
53
  },
26
- "_StatusDot-DvV0z_-s.js": {
27
- "file": "assets/StatusDot-DvV0z_-s.js",
54
+ "_StatusDot-CTDLBv92.js": {
55
+ "file": "assets/StatusDot-CTDLBv92.js",
28
56
  "name": "StatusDot",
29
57
  "imports": [
30
- "_seed-BglCRKLA.js",
31
- "_Tooltip-C7yR095Y.js"
58
+ "_seed-B8mQEhhw.js",
59
+ "_Tooltip-DD2v9Gxx.js"
32
60
  ]
33
61
  },
34
- "_Tooltip-C7yR095Y.js": {
35
- "file": "assets/Tooltip-C7yR095Y.js",
62
+ "_Tooltip-DD2v9Gxx.js": {
63
+ "file": "assets/Tooltip-DD2v9Gxx.js",
36
64
  "name": "Tooltip",
37
65
  "imports": [
38
- "_AppShell-Bk2gbvet.js",
39
- "_seed-BglCRKLA.js",
66
+ "_AppShell-CJLPO_aI.js",
67
+ "_seed-B8mQEhhw.js",
40
68
  "src/main.ts"
41
69
  ]
42
70
  },
43
- "_favicon-DL1rdWJt.js": {
44
- "file": "assets/favicon-DL1rdWJt.js",
71
+ "_favicon-C4Q8cRsP.js": {
72
+ "file": "assets/favicon-C4Q8cRsP.js",
45
73
  "name": "favicon",
46
74
  "imports": [
47
- "_AppShell-Bk2gbvet.js",
48
- "_seed-BglCRKLA.js",
75
+ "_AppShell-CJLPO_aI.js",
76
+ "_seed-B8mQEhhw.js",
49
77
  "_localIso-L06jV29p.js"
50
78
  ]
51
79
  },
@@ -57,24 +85,24 @@
57
85
  "file": "assets/residentDiskBudget-BMBKlYRH.js",
58
86
  "name": "residentDiskBudget"
59
87
  },
60
- "_seed-BglCRKLA.js": {
61
- "file": "assets/seed-BglCRKLA.js",
88
+ "_seed-B8mQEhhw.js": {
89
+ "file": "assets/seed-B8mQEhhw.js",
62
90
  "name": "seed"
63
91
  },
64
- "_wallClock-Ckv3sKoR.js": {
65
- "file": "assets/wallClock-Ckv3sKoR.js",
92
+ "_wallClock-DI4HIEN5.js": {
93
+ "file": "assets/wallClock-DI4HIEN5.js",
66
94
  "name": "wallClock",
67
95
  "imports": [
68
- "_seed-BglCRKLA.js"
96
+ "_seed-B8mQEhhw.js"
69
97
  ]
70
98
  },
71
99
  "src/main.ts": {
72
- "file": "assets/main-DDu3Ig6S.js",
100
+ "file": "assets/main-DrSlUcMg.js",
73
101
  "name": "main",
74
102
  "src": "src/main.ts",
75
103
  "isEntry": true,
76
104
  "imports": [
77
- "_seed-BglCRKLA.js"
105
+ "_seed-B8mQEhhw.js"
78
106
  ],
79
107
  "dynamicImports": [
80
108
  "src/pages/RunsIndexPage.vue",
@@ -83,93 +111,102 @@
83
111
  "src/pages/ResidentsIndexPage.vue",
84
112
  "src/pages/ResidentDetailPage.vue",
85
113
  "src/pages/CostsPage.vue",
86
- "_NotFoundPage-C-BuaSm8.js"
114
+ "_NotFoundPage-BdLcY60r.js"
87
115
  ],
88
116
  "css": [
89
- "assets/main-BsBGUyMH.css"
117
+ "assets/main-DoTjwE-G.css"
118
+ ],
119
+ "assets": [
120
+ "assets/instrument-sans-latin-ext-wght-normal-B5bTHO_g.woff2",
121
+ "assets/instrument-sans-latin-wght-normal-BbzFLZTg.woff2",
122
+ "assets/jetbrains-mono-cyrillic-wght-normal-D73BlboJ.woff2",
123
+ "assets/jetbrains-mono-greek-wght-normal-Bw9x6K1M.woff2",
124
+ "assets/jetbrains-mono-vietnamese-wght-normal-Bt-aOZkq.woff2",
125
+ "assets/jetbrains-mono-latin-ext-wght-normal-DBQx-q_a.woff2",
126
+ "assets/jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2"
90
127
  ]
91
128
  },
92
129
  "src/pages/CostsPage.vue": {
93
- "file": "assets/CostsPage-CzutIHUw.js",
130
+ "file": "assets/CostsPage-C6ZvnAmH.js",
94
131
  "name": "CostsPage",
95
132
  "src": "src/pages/CostsPage.vue",
96
133
  "isDynamicEntry": true,
97
134
  "imports": [
98
- "_AppShell-Bk2gbvet.js",
99
- "_seed-BglCRKLA.js"
135
+ "_AppShell-CJLPO_aI.js",
136
+ "_seed-B8mQEhhw.js"
100
137
  ]
101
138
  },
102
139
  "src/pages/ResidentDetailPage.vue": {
103
- "file": "assets/ResidentDetailPage-Dw3e9u1u.js",
140
+ "file": "assets/ResidentDetailPage-hXWrr8T6.js",
104
141
  "name": "ResidentDetailPage",
105
142
  "src": "src/pages/ResidentDetailPage.vue",
106
143
  "isDynamicEntry": true,
107
144
  "imports": [
108
- "_AppShell-Bk2gbvet.js",
109
- "_seed-BglCRKLA.js",
110
- "_StatusDot-DvV0z_-s.js",
145
+ "_AppShell-CJLPO_aI.js",
146
+ "_seed-B8mQEhhw.js",
147
+ "_StatusDot-CTDLBv92.js",
111
148
  "_residentDiskBudget-BMBKlYRH.js"
112
149
  ]
113
150
  },
114
151
  "src/pages/ResidentsIndexPage.vue": {
115
- "file": "assets/ResidentsIndexPage-D8NN4AFS.js",
152
+ "file": "assets/ResidentsIndexPage-YLu4JwxJ.js",
116
153
  "name": "ResidentsIndexPage",
117
154
  "src": "src/pages/ResidentsIndexPage.vue",
118
155
  "isDynamicEntry": true,
119
156
  "imports": [
120
- "_AppShell-Bk2gbvet.js",
121
- "_seed-BglCRKLA.js",
122
- "_StatusDot-DvV0z_-s.js",
157
+ "_AppShell-CJLPO_aI.js",
158
+ "_seed-B8mQEhhw.js",
159
+ "_StatusDot-CTDLBv92.js",
123
160
  "_residentDiskBudget-BMBKlYRH.js",
124
- "_wallClock-Ckv3sKoR.js"
161
+ "_wallClock-DI4HIEN5.js"
125
162
  ]
126
163
  },
127
164
  "src/pages/RunRoutePage.vue": {
128
- "file": "assets/RunRoutePage-C1TGcPCl.js",
165
+ "file": "assets/RunRoutePage-BDhHRJVO.js",
129
166
  "name": "RunRoutePage",
130
167
  "src": "src/pages/RunRoutePage.vue",
131
168
  "isDynamicEntry": true,
132
169
  "imports": [
133
- "_AppShell-Bk2gbvet.js",
134
- "_seed-BglCRKLA.js",
135
- "_Tooltip-C7yR095Y.js",
170
+ "_AppShell-CJLPO_aI.js",
171
+ "_seed-B8mQEhhw.js",
172
+ "_Tooltip-DD2v9Gxx.js",
136
173
  "src/main.ts",
137
- "_NotFoundPage-C-BuaSm8.js",
138
- "_wallClock-Ckv3sKoR.js",
139
- "_favicon-DL1rdWJt.js",
174
+ "_NotFoundPage-BdLcY60r.js",
175
+ "_wallClock-DI4HIEN5.js",
176
+ "_favicon-C4Q8cRsP.js",
140
177
  "_localIso-L06jV29p.js"
141
178
  ],
142
179
  "css": [
143
- "assets/RunRoutePage-XVFj0XDc.css"
180
+ "assets/RunRoutePage-CdbrbqU2.css"
144
181
  ]
145
182
  },
146
183
  "src/pages/RunsIndexPage.vue": {
147
- "file": "assets/RunsIndexPage-D9iLpfAr.js",
184
+ "file": "assets/RunsIndexPage-D7zZ5a0l.js",
148
185
  "name": "RunsIndexPage",
149
186
  "src": "src/pages/RunsIndexPage.vue",
150
187
  "isDynamicEntry": true,
151
188
  "imports": [
152
- "_AppShell-Bk2gbvet.js",
153
- "_seed-BglCRKLA.js",
154
- "_Tooltip-C7yR095Y.js",
155
- "_RunsTabs-C4krAL9o.js",
156
- "_StatusDot-DvV0z_-s.js",
157
- "_wallClock-Ckv3sKoR.js",
158
- "_favicon-DL1rdWJt.js",
189
+ "_AppShell-CJLPO_aI.js",
190
+ "_seed-B8mQEhhw.js",
191
+ "_Tooltip-DD2v9Gxx.js",
192
+ "_RunsTabs-BOUlSa2W.js",
193
+ "_StatusDot-CTDLBv92.js",
194
+ "_wallClock-DI4HIEN5.js",
195
+ "_favicon-C4Q8cRsP.js",
159
196
  "_localIso-L06jV29p.js"
160
197
  ]
161
198
  },
162
199
  "src/pages/ScheduledPage.vue": {
163
- "file": "assets/ScheduledPage-BJCtMp7H.js",
200
+ "file": "assets/ScheduledPage-BciOQcC-.js",
164
201
  "name": "ScheduledPage",
165
202
  "src": "src/pages/ScheduledPage.vue",
166
203
  "isDynamicEntry": true,
167
204
  "imports": [
168
- "_AppShell-Bk2gbvet.js",
169
- "_seed-BglCRKLA.js",
170
- "_Tooltip-C7yR095Y.js",
171
- "_RunsTabs-C4krAL9o.js",
172
- "_wallClock-Ckv3sKoR.js",
205
+ "_AppShell-CJLPO_aI.js",
206
+ "_seed-B8mQEhhw.js",
207
+ "_Tooltip-DD2v9Gxx.js",
208
+ "_RunsTabs-BOUlSa2W.js",
209
+ "_wallClock-DI4HIEN5.js",
173
210
  "_localIso-L06jV29p.js"
174
211
  ]
175
212
  }