@cat-factory/contracts 0.339.0 → 0.341.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 (45) hide show
  1. package/dist/bootstrap.d.ts +135 -4
  2. package/dist/bootstrap.d.ts.map +1 -1
  3. package/dist/bootstrap.js +82 -3
  4. package/dist/bootstrap.js.map +1 -1
  5. package/dist/environment-reachability.d.ts +139 -16
  6. package/dist/environment-reachability.d.ts.map +1 -1
  7. package/dist/environment-reachability.js +108 -12
  8. package/dist/environment-reachability.js.map +1 -1
  9. package/dist/environments.d.ts +311 -1
  10. package/dist/environments.d.ts.map +1 -1
  11. package/dist/environments.js +14 -0
  12. package/dist/environments.js.map +1 -1
  13. package/dist/errors.d.ts +1 -1
  14. package/dist/errors.d.ts.map +1 -1
  15. package/dist/errors.js +14 -0
  16. package/dist/errors.js.map +1 -1
  17. package/dist/index.d.ts +1 -0
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +1 -0
  20. package/dist/index.js.map +1 -1
  21. package/dist/monorepo-adoption.d.ts +220 -0
  22. package/dist/monorepo-adoption.d.ts.map +1 -0
  23. package/dist/monorepo-adoption.js +201 -0
  24. package/dist/monorepo-adoption.js.map +1 -0
  25. package/dist/public-provisioning.d.ts +13 -2
  26. package/dist/public-provisioning.d.ts.map +1 -1
  27. package/dist/public-provisioning.js +12 -1
  28. package/dist/public-provisioning.js.map +1 -1
  29. package/dist/routes/agent-runs.d.ts +94 -2
  30. package/dist/routes/agent-runs.d.ts.map +1 -1
  31. package/dist/routes/bootstrap.d.ts +289 -3
  32. package/dist/routes/bootstrap.d.ts.map +1 -1
  33. package/dist/routes/bootstrap.js +19 -0
  34. package/dist/routes/bootstrap.js.map +1 -1
  35. package/dist/routes/environmentUserHandlers.d.ts +6 -0
  36. package/dist/routes/environmentUserHandlers.d.ts.map +1 -1
  37. package/dist/routes/environments.d.ts +35 -5
  38. package/dist/routes/environments.d.ts.map +1 -1
  39. package/dist/routes/public-provisioning.d.ts +4 -2
  40. package/dist/routes/public-provisioning.d.ts.map +1 -1
  41. package/dist/routes/workspaces.d.ts +94 -2
  42. package/dist/routes/workspaces.d.ts.map +1 -1
  43. package/dist/snapshot.d.ts +47 -1
  44. package/dist/snapshot.d.ts.map +1 -1
  45. package/package.json +1 -1
@@ -18,7 +18,8 @@
18
18
  // in that vocabulary.
19
19
  import * as v from 'valibot';
20
20
  /**
21
- * One address a provider states will carry traffic for its environment's URL host.
21
+ * One place a provider states traffic for its environment's URL host goes: an ADDRESS the platform
22
+ * dials as written, or a NAME it resolves when it dials.
22
23
  *
23
24
  * The motivating shape is an org running per-PR preview environments whose per-environment DNS
24
25
  * record lives in an internal view while the load balancers fronting it are ordinary names and
@@ -26,15 +27,77 @@ import * as v from 'valibot';
26
27
  * it. The only missing thing is a name-to-address mapping, which is exactly what a hosts-file
27
28
  * entry (or a Kubernetes `hostAliases` entry) is.
28
29
  *
30
+ * **Exactly one of {@link EnvironmentRouteCandidate.address} and
31
+ * {@link EnvironmentRouteCandidate.host} is set, and which one is the PROVIDER'S statement**, never
32
+ * something the platform reads off the spelling. Guessing would rest the security rule on a parse:
33
+ * `isBridgeableAddress` refuses a non-canonical literal precisely so `2130706433` cannot become
34
+ * loopback, and a resolver handed that same string answers loopback happily. A candidate stating
35
+ * neither (or both, which is two claims with no way to tell which was meant) therefore names no
36
+ * target at all and is RECORDED as one, on the same rule as an address no bridge may name.
37
+ *
29
38
  * `label` is for the human reading a diagnostic ("internal ALB", "public ALB"), never for
30
39
  * matching: the platform picks by PROBING, never by name.
31
40
  */
32
- export const environmentAddressSchema = v.object({
33
- /** An IP literal. Never a name: a name would just be the lookup that already failed. */
34
- address: v.string(),
35
- /** What this address IS, for the diagnostic. Never load-bearing. */
41
+ export const environmentRouteCandidateSchema = v.object({
42
+ /** An IP literal, dialled as written. Never a name: see {@link EnvironmentRouteCandidate.host}. */
43
+ address: v.optional(v.string()),
44
+ /**
45
+ * A NAME the platform RESOLVES at proof time, expanding it in place into the addresses it
46
+ * answers with.
47
+ *
48
+ * For the provider whose stable identity IS a name, which is the ordinary shape of a managed
49
+ * load balancer: an ALB's addresses change as it scales or gains a zone, and its DNS name is
50
+ * what the vendor documents a client should use. A provider stating the resolved literals
51
+ * instead re-pins a snapshot of that set on every poll, and owes bounded resolution, stable
52
+ * ordering and partial-failure handling of its own.
53
+ *
54
+ * Deliberately NOT the URL's own host, which is the lookup that already failed. This is a
55
+ * DIFFERENT name in a different zone, and its whole point is resolving when that one does not.
56
+ * Nothing downstream ever sees it: every address it resolves to is graded by
57
+ * `isBridgeableAddress` exactly as a stated address is, and the proof publishes the ADDRESS that
58
+ * carried with the name it came from beside it, so a bridge is still built from a literal the
59
+ * platform itself proved.
60
+ */
61
+ host: v.optional(v.string()),
62
+ /** What this candidate IS, for the diagnostic. Never load-bearing. */
36
63
  label: v.optional(v.string()),
37
64
  });
65
+ /**
66
+ * Read a stated candidate as the one thing it names.
67
+ *
68
+ * A host is lower-cased because DNS is case-insensitive and this value is both a map key and a
69
+ * comparison target: two spellings of one balancer name must not resolve twice, nor invalidate a
70
+ * proof by failing to match themselves.
71
+ */
72
+ export function statedRouteTarget(candidate) {
73
+ const address = candidate.address?.trim() ?? '';
74
+ const host = candidate.host?.trim().toLowerCase() ?? '';
75
+ if (address && host)
76
+ return { kind: 'unusable' };
77
+ if (address)
78
+ return { kind: 'address', address };
79
+ if (host)
80
+ return { kind: 'host', host };
81
+ return { kind: 'unusable' };
82
+ }
83
+ /**
84
+ * One candidate as a reader sees it: its value, its label, and a NAME marked as one.
85
+ *
86
+ * ONE renderer, because three surfaces print this list (the environment investigation's route
87
+ * section, its timeline entry and the diagnostics bundle) and a name printed into a sentence about
88
+ * "the addresses the provider stated" reads as an address somebody typed wrong.
89
+ */
90
+ export function describeRouteCandidate(candidate) {
91
+ const stated = statedRouteTarget(candidate);
92
+ const label = candidate.label?.trim();
93
+ if (stated.kind === 'address')
94
+ return label ? `${stated.address} (${label})` : stated.address;
95
+ if (stated.kind === 'host')
96
+ return `${stated.host} (name${label ? `, ${label}` : ''})`;
97
+ return label
98
+ ? `an entry stating no usable target (${label})`
99
+ : 'an entry stating no usable target';
100
+ }
38
101
  /**
39
102
  * Why a `ready` environment could not be reached, at the layer the platform can observe.
40
103
  *
@@ -46,15 +109,28 @@ export const environmentAddressSchema = v.object({
46
109
  *
47
110
  * - `no_candidate` the environment carries no URL, or one with no host to probe. There
48
111
  * was nothing to try, which is not the same as trying and failing.
49
- * - `name_unresolved` the URL's host resolved nowhere, and no stated address carried either.
112
+ * - `name_unresolved` a name resolved nowhere: the URL's own host, with no stated candidate
113
+ * carrying either, or one stated NAME whose own lookup answered nothing.
50
114
  * - `no_route` something resolved and the connect never completed (timeout,
51
115
  * host/network unreachable). The expensive failure: a lookup that
52
116
  * worked followed by a connect that hangs.
53
117
  * - `connection_refused` the route carries and nothing is listening on the port.
54
- * - `address_refused` the provider stated an address the platform will not dial: loopback,
55
- * link-local/vendor metadata, or a non-canonical literal. Recorded as an
56
- * attempt rather than dropped, because a refused input is an omission the
57
- * operator has to be able to see.
118
+ * - `address_refused` the provider stated a target the platform will not dial: a loopback,
119
+ * link-local/vendor-metadata or non-canonical address (whether stated or
120
+ * resolved from a stated name), or a candidate naming no single target at
121
+ * all. Recorded as an attempt rather than dropped, because a refused input
122
+ * is an omission the operator has to be able to see.
123
+ * - `resolver_unavailable` the provider stated a NAME and nothing in this deployment can turn one
124
+ * into an address. An admission about the PLATFORM, never a verdict about
125
+ * the environment, so it leaves the route unruled-out exactly as
126
+ * `probe_failed` does.
127
+ * - `not_attempted` the platform stopped short of the list its provider stated: it looks up
128
+ * a bounded number of names and dials a bounded number of addresses, so a
129
+ * longer list is a PREFIX. Recorded ONCE, naming how many were passed
130
+ * over, because a reader who assumes a prefix concludes the tail was
131
+ * never stated. Another admission about the PLATFORM: a candidate nothing
132
+ * looked at cannot be part of a verdict that nothing reaches the
133
+ * environment.
58
134
  * - `probe_failed` the probe itself errored in a way it could not classify. Kept apart
59
135
  * from the three above so "we could not tell" never renders as a
60
136
  * verdict about the environment.
@@ -65,6 +141,8 @@ export const environmentUnreachableReasonSchema = v.picklist([
65
141
  'no_route',
66
142
  'connection_refused',
67
143
  'address_refused',
144
+ 'resolver_unavailable',
145
+ 'not_attempted',
68
146
  'probe_failed',
69
147
  ]);
70
148
  /** One target the proof tried, in the order it was tried, and what came back. */
@@ -115,6 +193,21 @@ export const environmentRouteProofSchema = v.object({
115
193
  * then points further from the cause than no bridge at all did.
116
194
  */
117
195
  via: v.nullable(v.string()),
196
+ /**
197
+ * The stated NAME {@link via} was resolved from, when the candidate that carried was a host
198
+ * rather than an address. Absent when `via` is itself a stated address, when the URL's own name
199
+ * carried, and when nothing carried.
200
+ *
201
+ * Recorded because the fold decides a `reached` proof's survival on whether the target it names
202
+ * is still on offer, and for a resolved name that target is the NAME. The address is a snapshot
203
+ * of a set that rotates (a balancer scaling or gaining a zone changes it, and tells the platform
204
+ * nothing about whether the proved route still carries), so matching `via` against the candidate
205
+ * list would drop a good proof on every such event and pay a fresh probe sequence for it.
206
+ *
207
+ * Optional so a proof written before this existed still parses, where its absence reads as the
208
+ * address case, which is what it was.
209
+ */
210
+ viaHost: v.optional(v.string()),
118
211
  /**
119
212
  * The {@link EnvironmentUnreachableReason} when `state` is `not_reached` or `inconclusive`,
120
213
  * else null. An open string on the wire so a stored proof written by an older build never fails
@@ -136,8 +229,11 @@ export const environmentRouteProofSchema = v.object({
136
229
  * offered as well as which were reached, and a re-probe on a later poll re-reads the same claim.
137
230
  */
138
231
  export const environmentReachabilitySchema = v.object({
139
- /** Addresses the provider states carry traffic for the URL's host, in ITS preference order. */
140
- candidates: v.array(environmentAddressSchema),
232
+ /**
233
+ * The addresses and names the provider states carry traffic for the URL's host, in ITS
234
+ * preference order.
235
+ */
236
+ candidates: v.array(environmentRouteCandidateSchema),
141
237
  /** What proving found, or null when nothing has probed this environment yet. */
142
238
  proof: v.nullable(environmentRouteProofSchema),
143
239
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"environment-reachability.js","sourceRoot":"","sources":["../src/environment-reachability.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"environment-reachability.js","sourceRoot":"","sources":["../src/environment-reachability.ts"],"names":[],"mappings":"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"}