@cat-factory/contracts 0.292.0 → 0.292.2

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.
@@ -0,0 +1,233 @@
1
+ import * as v from 'valibot';
2
+ /**
3
+ * Which credential the check looked at — the two shapes on which a PAT is what a run
4
+ * authenticates as. Named on the wire because the REMEDY differs: a `deployment` token is
5
+ * replaced by whoever runs the deployment, an `initiator` one by the signed-in user in their
6
+ * own settings, and a banner that could not tell them apart would send half its readers to a
7
+ * page they cannot act on.
8
+ */
9
+ export declare const githubPatSourceSchema: v.PicklistSchema<["deployment", "initiator"], undefined>;
10
+ export type GitHubPatSource = v.InferOutput<typeof githubPatSourceSchema>;
11
+ /**
12
+ * How a token's reach was determined, mirroring `describeGitHubPatScope`'s own classification.
13
+ * `unknown` is a token GitHub accepted while reporting no scopes and whose prefix is not the
14
+ * fine-grained one, so nothing about its breadth can be stated.
15
+ */
16
+ export declare const githubPatKindSchema: v.PicklistSchema<["classic", "fine_grained", "unknown"], undefined>;
17
+ export type GitHubPatKind = v.InferOutput<typeof githubPatKindSchema>;
18
+ /**
19
+ * The things a pipeline needs the token to be able to do. Kept to what actually stops work:
20
+ * every step from the coder onward pushes a branch, the merger opens and merges a pull
21
+ * request, and the coder/ci-fixer may edit `.github/workflows/*`.
22
+ *
23
+ * Read-only reach is absent on purpose. A token that cannot read the repository fails at
24
+ * `GET /user` or at the repo probe, which is `token_rejected` / an unreadable repo rather than
25
+ * a capability verdict.
26
+ */
27
+ export declare const githubPatCapabilitySchema: v.PicklistSchema<["push", "pullRequests", "workflows"], undefined>;
28
+ export type GitHubPatCapability = v.InferOutput<typeof githubPatCapabilitySchema>;
29
+ /** Every capability, as a plain tuple — the source of truth for iteration. */
30
+ export declare const GITHUB_PAT_CAPABILITIES: ["push", "pullRequests", "workflows"];
31
+ /**
32
+ * Whether the token holds one capability.
33
+ * - `granted` — positively established (a classic scope GitHub named, or a repo probe that
34
+ * reported `permissions.push`).
35
+ * - `missing` — positively established as ABSENT. The only status that raises a banner.
36
+ * - `unknown` — not determinable from what GitHub exposes. NOT a synonym for either: a
37
+ * fine-grained token's pull-request and workflow permissions have no endpoint that reports
38
+ * them, and rendering that as `granted` would silence a real gap while rendering it as
39
+ * `missing` would nag every correctly-configured fine-grained deployment forever.
40
+ */
41
+ export declare const githubPatCapabilityStatusSchema: v.PicklistSchema<["granted", "missing", "unknown"], undefined>;
42
+ export type GitHubPatCapabilityStatus = v.InferOutput<typeof githubPatCapabilityStatusSchema>;
43
+ /**
44
+ * The per-capability verdict. Spelled as an explicit object rather than a `v.record` over the
45
+ * picklist so a new capability fails the typecheck at every construction site instead of
46
+ * silently defaulting to absent; `githubPatCapabilities.spec.ts` pins the two lists together.
47
+ */
48
+ export declare const githubPatCapabilitiesSchema: v.ObjectSchema<{
49
+ readonly push: v.PicklistSchema<["granted", "missing", "unknown"], undefined>;
50
+ readonly pullRequests: v.PicklistSchema<["granted", "missing", "unknown"], undefined>;
51
+ readonly workflows: v.PicklistSchema<["granted", "missing", "unknown"], undefined>;
52
+ }, undefined>;
53
+ export type GitHubPatCapabilities = v.InferOutput<typeof githubPatCapabilitiesSchema>;
54
+ /**
55
+ * The capabilities whose absence STOPS a pipeline, as opposed to narrowing what it may change.
56
+ *
57
+ * `workflows` is deliberately not among them, and it is the exclusion worth stating: without it
58
+ * a run pushes, opens its PR and merges exactly as normal, and fails only on the subset of
59
+ * changes that touch `.github/workflows/*`. Treating that as blocking would raise the loud
60
+ * banner on the many deployments whose agents never edit CI, which is how a warning surface
61
+ * teaches people to dismiss it unread.
62
+ */
63
+ export declare const GITHUB_PAT_BLOCKING_CAPABILITIES: readonly ["push", "pullRequests"];
64
+ /**
65
+ * The classic scopes a replacement token needs, and the single source of truth for them: the
66
+ * local facade's setup link, the SPA's re-mint link and this module's own classification all
67
+ * read this one list.
68
+ *
69
+ * `repo` covers cloning, pushing a branch, opening the pull request, reading the head's Actions
70
+ * check runs for the CI gate and merging. `workflow` is needed only to push a change that
71
+ * touches a workflow file, but it is pre-selected anyway: a token is minted once, and sending
72
+ * someone back to GitHub a second time the first time an agent edits CI is worse than the
73
+ * narrower grant is worth. What it costs is stated in `githubPatScope.ts`.
74
+ */
75
+ export declare const GITHUB_PAT_CLASSIC_SCOPES: readonly ['repo', 'workflow'];
76
+ /**
77
+ * The fine-grained REPOSITORY permissions a replacement token needs, for the banner to list.
78
+ * Prose rather than a query parameter because GitHub's fine-grained token form accepts no
79
+ * prefill: see {@link githubPatCreateUrl}.
80
+ */
81
+ export declare const GITHUB_PAT_FINE_GRAINED_PERMISSIONS: readonly ['contents:write', 'pull_requests:write', 'workflows:write'];
82
+ /**
83
+ * Where each token kind is minted, relative to the instance's web root. Exported because the
84
+ * SPA's generic connect-box link (`vcsTokenCreateUrl`, which offers no scopes) has to land on
85
+ * the same page this module's pre-filled link does; two spellings of GitHub's settings path
86
+ * would send the two surfaces to different places the day GitHub moves one.
87
+ */
88
+ export declare const GITHUB_TOKEN_CREATE_PATHS: Record<GitHubPatKind, string>;
89
+ /**
90
+ * The URL that mints a replacement token, pre-filled as far as GitHub allows.
91
+ *
92
+ * The KIND is carried over from the token being replaced rather than chosen for the user: a
93
+ * deployment that standardised on fine-grained tokens should not be pushed back to a classic
94
+ * one by a warning banner, and vice versa.
95
+ *
96
+ * Only the CLASSIC form takes a prefill. GitHub's fine-grained form accepts no permission query
97
+ * parameters at all, so that half of the fork is a bare link and the caller must render
98
+ * {@link GITHUB_PAT_FINE_GRAINED_PERMISSIONS} beside it — a link that silently arrived with
99
+ * nothing selected would read as "these are already set for you", which is precisely the
100
+ * misreading that produced the missing permission in the first place.
101
+ *
102
+ * `webUrl` is the instance the workspace is bound to; absent, the caller has already decided to
103
+ * fall back to the public host (the SPA's `vcsTokenCreateUrl` states why that is safe for a
104
+ * settings page and not for a repository link).
105
+ */
106
+ export declare function githubPatCreateUrl(kind: GitHubPatKind, options: {
107
+ webUrl: string;
108
+ description?: string;
109
+ }): string;
110
+ /**
111
+ * What the check found about the token a workspace's runs would use.
112
+ *
113
+ * `probedRepos` / `unprobedRepoCount` exist because the fine-grained answer is a SAMPLE: the
114
+ * probe reads the repositories this board's services target, capped, and a reader who assumed
115
+ * it read all of them would take a clean verdict as a guarantee about a repository nobody
116
+ * looked at. Both are empty/zero for a classic token, whose scopes answer for every repository
117
+ * at once.
118
+ *
119
+ * The token's raw scope list is deliberately NOT here. Nothing renders it, and the one source
120
+ * whose scopes this endpoint could expose is `deployment` — a shared operational credential
121
+ * whose breadth every workspace member would then be able to read off a route that lets reads
122
+ * through. The per-capability verdict is what a reader can act on; the scope list is what the
123
+ * person who pasted the token already saw on the connect form.
124
+ */
125
+ export declare const githubPatCapabilityReportSchema: v.ObjectSchema<{
126
+ readonly source: v.PicklistSchema<["deployment", "initiator"], undefined>;
127
+ readonly kind: v.PicklistSchema<["classic", "fine_grained", "unknown"], undefined>;
128
+ readonly capabilities: v.ObjectSchema<{
129
+ readonly push: v.PicklistSchema<["granted", "missing", "unknown"], undefined>;
130
+ readonly pullRequests: v.PicklistSchema<["granted", "missing", "unknown"], undefined>;
131
+ readonly workflows: v.PicklistSchema<["granted", "missing", "unknown"], undefined>;
132
+ }, undefined>;
133
+ /** The `owner/name` of each repository the probe actually asked GitHub about. */
134
+ readonly probedRepos: v.ArraySchema<v.StringSchema<undefined>, undefined>;
135
+ /**
136
+ * The probed repositories GitHub answered 404 for. A subset of {@link probedRepos}, and the
137
+ * one detail that turns "push is missing" into something a reader can act on for a
138
+ * fine-grained token: these are the repositories the token was not granted (GitHub 404s
139
+ * rather than 403s for a repository a credential may not see, so it cannot leak existence).
140
+ */
141
+ readonly deniedRepos: v.ArraySchema<v.StringSchema<undefined>, undefined>;
142
+ /** Targeted repositories the probe's cap left unread, so a verdict never reads as exhaustive. */
143
+ readonly unprobedRepoCount: v.NumberSchema<undefined>;
144
+ /** The instance the token authenticates against, for the re-mint link. Null ⇒ not derivable. */
145
+ readonly webUrl: v.NullableSchema<v.StringSchema<undefined>, undefined>;
146
+ }, undefined>;
147
+ export type GitHubPatCapabilityReport = v.InferOutput<typeof githubPatCapabilityReportSchema>;
148
+ /**
149
+ * The check's outcome. A variant rather than a nullable report because the four states need
150
+ * four different reactions, and three of them are not "the token lacks something":
151
+ *
152
+ * - `not_applicable` — no PAT is in play (a GitHub App deployment, GitLab, or nothing
153
+ * connected at all), or this board's services target no GitHub repository, so no run here
154
+ * would ever authenticate with one. There is no token whose reach could be wrong.
155
+ * - `token_rejected` — GitHub refused the token outright (401/403). Blocking, and a strictly
156
+ * worse problem than a missing scope, so it gets its own state instead of collapsing into
157
+ * "everything is missing". It carries `source` for the same reason the report does: the
158
+ * remedy for a rejected DEPLOYMENT credential is not the one for a rejected personal token,
159
+ * and this is the state in which the reader is least able to work that out for themselves.
160
+ * - `probe_failed` — GitHub could not be reached, refused to answer for now (a rate limit),
161
+ * or answered in a way the probe could not read. NOT a verdict about the token: an upstream
162
+ * condition must never render as a permissions problem, because the remedy it would
163
+ * advertise (mint a new token) is wrong and costly.
164
+ * - `checked` — a report was produced. It may still be entirely clean.
165
+ */
166
+ export declare const githubPatCheckSchema: v.VariantSchema<"state", [v.ObjectSchema<{
167
+ readonly state: v.LiteralSchema<"not_applicable", undefined>;
168
+ }, undefined>, v.ObjectSchema<{
169
+ readonly state: v.LiteralSchema<"token_rejected", undefined>;
170
+ readonly status: v.NumberSchema<undefined>;
171
+ readonly source: v.PicklistSchema<["deployment", "initiator"], undefined>;
172
+ }, undefined>, v.ObjectSchema<{
173
+ readonly state: v.LiteralSchema<"probe_failed", undefined>;
174
+ readonly message: v.StringSchema<undefined>;
175
+ }, undefined>, v.ObjectSchema<{
176
+ readonly state: v.LiteralSchema<"checked", undefined>;
177
+ readonly report: v.ObjectSchema<{
178
+ readonly source: v.PicklistSchema<["deployment", "initiator"], undefined>;
179
+ readonly kind: v.PicklistSchema<["classic", "fine_grained", "unknown"], undefined>;
180
+ readonly capabilities: v.ObjectSchema<{
181
+ readonly push: v.PicklistSchema<["granted", "missing", "unknown"], undefined>;
182
+ readonly pullRequests: v.PicklistSchema<["granted", "missing", "unknown"], undefined>;
183
+ readonly workflows: v.PicklistSchema<["granted", "missing", "unknown"], undefined>;
184
+ }, undefined>;
185
+ /** The `owner/name` of each repository the probe actually asked GitHub about. */
186
+ readonly probedRepos: v.ArraySchema<v.StringSchema<undefined>, undefined>;
187
+ /**
188
+ * The probed repositories GitHub answered 404 for. A subset of {@link probedRepos}, and the
189
+ * one detail that turns "push is missing" into something a reader can act on for a
190
+ * fine-grained token: these are the repositories the token was not granted (GitHub 404s
191
+ * rather than 403s for a repository a credential may not see, so it cannot leak existence).
192
+ */
193
+ readonly deniedRepos: v.ArraySchema<v.StringSchema<undefined>, undefined>;
194
+ /** Targeted repositories the probe's cap left unread, so a verdict never reads as exhaustive. */
195
+ readonly unprobedRepoCount: v.NumberSchema<undefined>;
196
+ /** The instance the token authenticates against, for the re-mint link. Null ⇒ not derivable. */
197
+ readonly webUrl: v.NullableSchema<v.StringSchema<undefined>, undefined>;
198
+ }, undefined>;
199
+ }, undefined>], undefined>;
200
+ export type GitHubPatCheck = v.InferOutput<typeof githubPatCheckSchema>;
201
+ /**
202
+ * The capabilities a report positively established as ABSENT, split by whether losing them
203
+ * stops a pipeline. `unknown` is in neither list by construction — see
204
+ * {@link githubPatCapabilityStatusSchema} for why it may not be folded into either.
205
+ *
206
+ * The one reduction both the banner and its tests read, so "is there anything to say" and "what
207
+ * do we say" can never disagree about which capability belongs on which side.
208
+ */
209
+ export declare function missingGitHubPatCapabilities(report: GitHubPatCapabilityReport): {
210
+ blocking: GitHubPatCapability[];
211
+ advisory: GitHubPatCapability[];
212
+ };
213
+ /**
214
+ * WHOSE credential the check judged, or null when it judged none.
215
+ *
216
+ * The one place that answer is derived, because it decides which remedy a surface offers: a
217
+ * `deployment` token is replaced by whoever runs the deployment, an `initiator` one by the
218
+ * signed-in user in their own settings, and sending one reader to the other's remedy is worse
219
+ * than saying nothing. Two of the four states carry a source and two cannot have one, which is
220
+ * the shape a caller gets wrong by reading `report?.source` and letting the absent case fall
221
+ * through to whichever branch its ternary happened to end on.
222
+ */
223
+ export declare function githubPatCheckSource(check: GitHubPatCheck): GitHubPatSource | null;
224
+ /**
225
+ * Whether a check warrants interrupting the user with a banner.
226
+ *
227
+ * True for a rejected token and for any established BLOCKING gap. False for `probe_failed` (an
228
+ * outage is not a permissions problem), for `not_applicable`, and for a report whose only
229
+ * findings are advisory or `unknown` — those are visible in the settings surface, where someone
230
+ * who came to look at the connection can act on them, rather than over the board.
231
+ */
232
+ export declare function githubPatCheckNeedsAttention(check: GitHubPatCheck): boolean;
233
+ //# sourceMappingURL=github-pat-capability.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github-pat-capability.d.ts","sourceRoot":"","sources":["../src/github-pat-capability.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAwB5B;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,0DAA0C,CAAA;AAC5E,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,qBAAqB,CAAC,CAAA;AAEzE;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,qEAAqD,CAAA;AACrF,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAErE;;;;;;;;GAQG;AACH,eAAO,MAAM,yBAAyB,oEAAoD,CAAA;AAC1F,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,yBAAyB,CAAC,CAAA;AAEjF,8EAA8E;AAC9E,eAAO,MAAM,uBAAuB,uCAAoC,CAAA;AAExE;;;;;;;;;GASG;AACH,eAAO,MAAM,+BAA+B,gEAAgD,CAAA;AAC5F,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,+BAA+B,CAAC,CAAA;AAE7F;;;;GAIG;AACH,eAAO,MAAM,2BAA2B;;;;aAItC,CAAA;AACF,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,2BAA2B,CAAC,CAAA;AAErF;;;;;;;;GAQG;AACH,eAAO,MAAM,gCAAgC,mCAGM,CAAA;AAEnD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,yBAAyB,YAAI,MAAM,EAAE,UAAU,CAAU,CAAA;AAEtE;;;;GAIG;AACH,eAAO,MAAM,mCAAmC,YAC9C,gBAAgB,EAChB,qBAAqB,EACrB,iBAAiB,CACT,CAAA;AAEV;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAOnE,CAAA;AAOD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,aAAa,EACnB,OAAO,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GAChD,MAAM,CAWR;AAED;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,+BAA+B;;;;;;;;IAI1C,iFAAiF;;IAEjF;;;;;OAKG;;IAEH,iGAAiG;;IAEjG,gGAAgG;;aAEhG,CAAA;AACF,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,+BAA+B,CAAC,CAAA;AAE7F;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;QAlC/B,iFAAiF;;QAEjF;;;;;WAKG;;QAEH,iGAAiG;;QAEjG,gGAAgG;;;0BAgChG,CAAA;AACF,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,oBAAoB,CAAC,CAAA;AAEvE;;;;;;;GAOG;AACH,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,yBAAyB,GAAG;IAC/E,QAAQ,EAAE,mBAAmB,EAAE,CAAA;IAC/B,QAAQ,EAAE,mBAAmB,EAAE,CAAA;CAChC,CAKA;AAED;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,cAAc,GAAG,eAAe,GAAG,IAAI,CAYlF;AAED;;;;;;;GAOG;AACH,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAI3E"}
@@ -0,0 +1,265 @@
1
+ import * as v from 'valibot';
2
+ // ---------------------------------------------------------------------------
3
+ // What the GitHub personal access token a workspace's runs authenticate with can actually
4
+ // DO, answered once the board has loaded rather than discovered when a run fails at its push.
5
+ //
6
+ // A PAT is the operational credential on two deployment shapes: local mode, where one token is
7
+ // both the sign-in identity and what every agent step clones, pushes and merges with, and a
8
+ // hosted deployment whose run initiator stored a `github_pat`, which OUTRANKS the App
9
+ // installation on the run path (`backend/docs/security-model.md`, Layer 3). On both, a token
10
+ // minted without `repo` reaches its first failure several steps into a pipeline, as a 403 out
11
+ // of a container, after the run has already spent money.
12
+ //
13
+ // This module holds the vocabulary BOTH sides agree about: the backend probes, the SPA renders
14
+ // the verdict and the re-mint link, so the capability list, which capabilities are BLOCKING,
15
+ // and the scopes a replacement token needs live here instead of being restated on each side.
16
+ //
17
+ // Deliberately not a boolean, and deliberately per-capability. GitHub reports a CLASSIC token's
18
+ // scopes in the `x-oauth-scopes` header and reports nothing whatsoever for a fine-grained one,
19
+ // whose reach is knowable only by probing a repository — which answers for push and answers
20
+ // nothing for the rest. "Not granted" and "not knowable" are different facts with different
21
+ // remedies, so each capability carries its own tri-state and an unknowable one says so.
22
+ // ---------------------------------------------------------------------------
23
+ /**
24
+ * Which credential the check looked at — the two shapes on which a PAT is what a run
25
+ * authenticates as. Named on the wire because the REMEDY differs: a `deployment` token is
26
+ * replaced by whoever runs the deployment, an `initiator` one by the signed-in user in their
27
+ * own settings, and a banner that could not tell them apart would send half its readers to a
28
+ * page they cannot act on.
29
+ */
30
+ export const githubPatSourceSchema = v.picklist(['deployment', 'initiator']);
31
+ /**
32
+ * How a token's reach was determined, mirroring `describeGitHubPatScope`'s own classification.
33
+ * `unknown` is a token GitHub accepted while reporting no scopes and whose prefix is not the
34
+ * fine-grained one, so nothing about its breadth can be stated.
35
+ */
36
+ export const githubPatKindSchema = v.picklist(['classic', 'fine_grained', 'unknown']);
37
+ /**
38
+ * The things a pipeline needs the token to be able to do. Kept to what actually stops work:
39
+ * every step from the coder onward pushes a branch, the merger opens and merges a pull
40
+ * request, and the coder/ci-fixer may edit `.github/workflows/*`.
41
+ *
42
+ * Read-only reach is absent on purpose. A token that cannot read the repository fails at
43
+ * `GET /user` or at the repo probe, which is `token_rejected` / an unreadable repo rather than
44
+ * a capability verdict.
45
+ */
46
+ export const githubPatCapabilitySchema = v.picklist(['push', 'pullRequests', 'workflows']);
47
+ /** Every capability, as a plain tuple — the source of truth for iteration. */
48
+ export const GITHUB_PAT_CAPABILITIES = githubPatCapabilitySchema.options;
49
+ /**
50
+ * Whether the token holds one capability.
51
+ * - `granted` — positively established (a classic scope GitHub named, or a repo probe that
52
+ * reported `permissions.push`).
53
+ * - `missing` — positively established as ABSENT. The only status that raises a banner.
54
+ * - `unknown` — not determinable from what GitHub exposes. NOT a synonym for either: a
55
+ * fine-grained token's pull-request and workflow permissions have no endpoint that reports
56
+ * them, and rendering that as `granted` would silence a real gap while rendering it as
57
+ * `missing` would nag every correctly-configured fine-grained deployment forever.
58
+ */
59
+ export const githubPatCapabilityStatusSchema = v.picklist(['granted', 'missing', 'unknown']);
60
+ /**
61
+ * The per-capability verdict. Spelled as an explicit object rather than a `v.record` over the
62
+ * picklist so a new capability fails the typecheck at every construction site instead of
63
+ * silently defaulting to absent; `githubPatCapabilities.spec.ts` pins the two lists together.
64
+ */
65
+ export const githubPatCapabilitiesSchema = v.object({
66
+ push: githubPatCapabilityStatusSchema,
67
+ pullRequests: githubPatCapabilityStatusSchema,
68
+ workflows: githubPatCapabilityStatusSchema,
69
+ });
70
+ /**
71
+ * The capabilities whose absence STOPS a pipeline, as opposed to narrowing what it may change.
72
+ *
73
+ * `workflows` is deliberately not among them, and it is the exclusion worth stating: without it
74
+ * a run pushes, opens its PR and merges exactly as normal, and fails only on the subset of
75
+ * changes that touch `.github/workflows/*`. Treating that as blocking would raise the loud
76
+ * banner on the many deployments whose agents never edit CI, which is how a warning surface
77
+ * teaches people to dismiss it unread.
78
+ */
79
+ export const GITHUB_PAT_BLOCKING_CAPABILITIES = [
80
+ 'push',
81
+ 'pullRequests',
82
+ ];
83
+ /**
84
+ * The classic scopes a replacement token needs, and the single source of truth for them: the
85
+ * local facade's setup link, the SPA's re-mint link and this module's own classification all
86
+ * read this one list.
87
+ *
88
+ * `repo` covers cloning, pushing a branch, opening the pull request, reading the head's Actions
89
+ * check runs for the CI gate and merging. `workflow` is needed only to push a change that
90
+ * touches a workflow file, but it is pre-selected anyway: a token is minted once, and sending
91
+ * someone back to GitHub a second time the first time an agent edits CI is worse than the
92
+ * narrower grant is worth. What it costs is stated in `githubPatScope.ts`.
93
+ */
94
+ export const GITHUB_PAT_CLASSIC_SCOPES = ['repo', 'workflow'];
95
+ /**
96
+ * The fine-grained REPOSITORY permissions a replacement token needs, for the banner to list.
97
+ * Prose rather than a query parameter because GitHub's fine-grained token form accepts no
98
+ * prefill: see {@link githubPatCreateUrl}.
99
+ */
100
+ export const GITHUB_PAT_FINE_GRAINED_PERMISSIONS = [
101
+ 'contents:write',
102
+ 'pull_requests:write',
103
+ 'workflows:write',
104
+ ];
105
+ /**
106
+ * Where each token kind is minted, relative to the instance's web root. Exported because the
107
+ * SPA's generic connect-box link (`vcsTokenCreateUrl`, which offers no scopes) has to land on
108
+ * the same page this module's pre-filled link does; two spellings of GitHub's settings path
109
+ * would send the two surfaces to different places the day GitHub moves one.
110
+ */
111
+ export const GITHUB_TOKEN_CREATE_PATHS = {
112
+ classic: '/settings/tokens/new',
113
+ fine_grained: '/settings/personal-access-tokens/new',
114
+ // Nothing is known about the token in play, so the form that CAN be pre-filled is the better
115
+ // landing place: it arrives with the right scopes ticked, and a reader who wanted the
116
+ // fine-grained one is one link away on the same settings page.
117
+ unknown: '/settings/tokens/new',
118
+ };
119
+ /** Strip a trailing slash so a host and a path never join into a double slash. */
120
+ function root(webUrl) {
121
+ return webUrl.replace(/\/+$/, '');
122
+ }
123
+ /**
124
+ * The URL that mints a replacement token, pre-filled as far as GitHub allows.
125
+ *
126
+ * The KIND is carried over from the token being replaced rather than chosen for the user: a
127
+ * deployment that standardised on fine-grained tokens should not be pushed back to a classic
128
+ * one by a warning banner, and vice versa.
129
+ *
130
+ * Only the CLASSIC form takes a prefill. GitHub's fine-grained form accepts no permission query
131
+ * parameters at all, so that half of the fork is a bare link and the caller must render
132
+ * {@link GITHUB_PAT_FINE_GRAINED_PERMISSIONS} beside it — a link that silently arrived with
133
+ * nothing selected would read as "these are already set for you", which is precisely the
134
+ * misreading that produced the missing permission in the first place.
135
+ *
136
+ * `webUrl` is the instance the workspace is bound to; absent, the caller has already decided to
137
+ * fall back to the public host (the SPA's `vcsTokenCreateUrl` states why that is safe for a
138
+ * settings page and not for a repository link).
139
+ */
140
+ export function githubPatCreateUrl(kind, options) {
141
+ const page = `${root(options.webUrl)}${GITHUB_TOKEN_CREATE_PATHS[kind]}`;
142
+ if (kind === 'fine_grained')
143
+ return page;
144
+ // Hand-built rather than via `URLSearchParams`: this package is dependency-free and compiles
145
+ // with neither the DOM nor the Node lib, and it is imported by the SPA, both facades and the
146
+ // local runtime alike — so the one place the query string is assembled cannot assume a global.
147
+ const query = [
148
+ `scopes=${encodeURIComponent(GITHUB_PAT_CLASSIC_SCOPES.join(','))}`,
149
+ ...(options.description ? [`description=${encodeURIComponent(options.description)}`] : []),
150
+ ];
151
+ return `${page}?${query.join('&')}`;
152
+ }
153
+ /**
154
+ * What the check found about the token a workspace's runs would use.
155
+ *
156
+ * `probedRepos` / `unprobedRepoCount` exist because the fine-grained answer is a SAMPLE: the
157
+ * probe reads the repositories this board's services target, capped, and a reader who assumed
158
+ * it read all of them would take a clean verdict as a guarantee about a repository nobody
159
+ * looked at. Both are empty/zero for a classic token, whose scopes answer for every repository
160
+ * at once.
161
+ *
162
+ * The token's raw scope list is deliberately NOT here. Nothing renders it, and the one source
163
+ * whose scopes this endpoint could expose is `deployment` — a shared operational credential
164
+ * whose breadth every workspace member would then be able to read off a route that lets reads
165
+ * through. The per-capability verdict is what a reader can act on; the scope list is what the
166
+ * person who pasted the token already saw on the connect form.
167
+ */
168
+ export const githubPatCapabilityReportSchema = v.object({
169
+ source: githubPatSourceSchema,
170
+ kind: githubPatKindSchema,
171
+ capabilities: githubPatCapabilitiesSchema,
172
+ /** The `owner/name` of each repository the probe actually asked GitHub about. */
173
+ probedRepos: v.array(v.string()),
174
+ /**
175
+ * The probed repositories GitHub answered 404 for. A subset of {@link probedRepos}, and the
176
+ * one detail that turns "push is missing" into something a reader can act on for a
177
+ * fine-grained token: these are the repositories the token was not granted (GitHub 404s
178
+ * rather than 403s for a repository a credential may not see, so it cannot leak existence).
179
+ */
180
+ deniedRepos: v.array(v.string()),
181
+ /** Targeted repositories the probe's cap left unread, so a verdict never reads as exhaustive. */
182
+ unprobedRepoCount: v.number(),
183
+ /** The instance the token authenticates against, for the re-mint link. Null ⇒ not derivable. */
184
+ webUrl: v.nullable(v.string()),
185
+ });
186
+ /**
187
+ * The check's outcome. A variant rather than a nullable report because the four states need
188
+ * four different reactions, and three of them are not "the token lacks something":
189
+ *
190
+ * - `not_applicable` — no PAT is in play (a GitHub App deployment, GitLab, or nothing
191
+ * connected at all), or this board's services target no GitHub repository, so no run here
192
+ * would ever authenticate with one. There is no token whose reach could be wrong.
193
+ * - `token_rejected` — GitHub refused the token outright (401/403). Blocking, and a strictly
194
+ * worse problem than a missing scope, so it gets its own state instead of collapsing into
195
+ * "everything is missing". It carries `source` for the same reason the report does: the
196
+ * remedy for a rejected DEPLOYMENT credential is not the one for a rejected personal token,
197
+ * and this is the state in which the reader is least able to work that out for themselves.
198
+ * - `probe_failed` — GitHub could not be reached, refused to answer for now (a rate limit),
199
+ * or answered in a way the probe could not read. NOT a verdict about the token: an upstream
200
+ * condition must never render as a permissions problem, because the remedy it would
201
+ * advertise (mint a new token) is wrong and costly.
202
+ * - `checked` — a report was produced. It may still be entirely clean.
203
+ */
204
+ export const githubPatCheckSchema = v.variant('state', [
205
+ v.object({ state: v.literal('not_applicable') }),
206
+ v.object({
207
+ state: v.literal('token_rejected'),
208
+ status: v.number(),
209
+ source: githubPatSourceSchema,
210
+ }),
211
+ v.object({ state: v.literal('probe_failed'), message: v.string() }),
212
+ v.object({ state: v.literal('checked'), report: githubPatCapabilityReportSchema }),
213
+ ]);
214
+ /**
215
+ * The capabilities a report positively established as ABSENT, split by whether losing them
216
+ * stops a pipeline. `unknown` is in neither list by construction — see
217
+ * {@link githubPatCapabilityStatusSchema} for why it may not be folded into either.
218
+ *
219
+ * The one reduction both the banner and its tests read, so "is there anything to say" and "what
220
+ * do we say" can never disagree about which capability belongs on which side.
221
+ */
222
+ export function missingGitHubPatCapabilities(report) {
223
+ const missing = GITHUB_PAT_CAPABILITIES.filter((c) => report.capabilities[c] === 'missing');
224
+ const isBlocking = (c) => GITHUB_PAT_BLOCKING_CAPABILITIES.includes(c);
225
+ return { blocking: missing.filter(isBlocking), advisory: missing.filter((c) => !isBlocking(c)) };
226
+ }
227
+ /**
228
+ * WHOSE credential the check judged, or null when it judged none.
229
+ *
230
+ * The one place that answer is derived, because it decides which remedy a surface offers: a
231
+ * `deployment` token is replaced by whoever runs the deployment, an `initiator` one by the
232
+ * signed-in user in their own settings, and sending one reader to the other's remedy is worse
233
+ * than saying nothing. Two of the four states carry a source and two cannot have one, which is
234
+ * the shape a caller gets wrong by reading `report?.source` and letting the absent case fall
235
+ * through to whichever branch its ternary happened to end on.
236
+ */
237
+ export function githubPatCheckSource(check) {
238
+ switch (check.state) {
239
+ case 'checked':
240
+ return check.report.source;
241
+ case 'token_rejected':
242
+ return check.source;
243
+ // Neither state judged a credential: `not_applicable` found none in play, and
244
+ // `probe_failed` never got an answer about the one it found.
245
+ case 'not_applicable':
246
+ case 'probe_failed':
247
+ return null;
248
+ }
249
+ }
250
+ /**
251
+ * Whether a check warrants interrupting the user with a banner.
252
+ *
253
+ * True for a rejected token and for any established BLOCKING gap. False for `probe_failed` (an
254
+ * outage is not a permissions problem), for `not_applicable`, and for a report whose only
255
+ * findings are advisory or `unknown` — those are visible in the settings surface, where someone
256
+ * who came to look at the connection can act on them, rather than over the board.
257
+ */
258
+ export function githubPatCheckNeedsAttention(check) {
259
+ if (check.state === 'token_rejected')
260
+ return true;
261
+ if (check.state !== 'checked')
262
+ return false;
263
+ return missingGitHubPatCapabilities(check.report).blocking.length > 0;
264
+ }
265
+ //# sourceMappingURL=github-pat-capability.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github-pat-capability.js","sourceRoot":"","sources":["../src/github-pat-capability.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -47,6 +47,7 @@ export * from './tasks.js';
47
47
  export * from './bug-hunt.js';
48
48
  export * from './environments.js';
49
49
  export * from './environments-kubernetes.js';
50
+ export * from './service-account-token.js';
50
51
  export * from './preflights.js';
51
52
  export * from './compose-sources.js';
52
53
  export * from './stack-recipes.js';
@@ -58,6 +59,7 @@ export * from './bootstrap.js';
58
59
  export * from './env-config-repair.js';
59
60
  export * from './environment-test.js';
60
61
  export * from './infra-setup.js';
62
+ export * from './github-pat-capability.js';
61
63
  export * from './snapshot.js';
62
64
  export * from './sso.js';
63
65
  export * from './board-scan.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -47,6 +47,7 @@ export * from './tasks.js';
47
47
  export * from './bug-hunt.js';
48
48
  export * from './environments.js';
49
49
  export * from './environments-kubernetes.js';
50
+ export * from './service-account-token.js';
50
51
  export * from './preflights.js';
51
52
  export * from './compose-sources.js';
52
53
  export * from './stack-recipes.js';
@@ -58,6 +59,7 @@ export * from './bootstrap.js';
58
59
  export * from './env-config-repair.js';
59
60
  export * from './environment-test.js';
60
61
  export * from './infra-setup.js';
62
+ export * from './github-pat-capability.js';
61
63
  export * from './snapshot.js';
62
64
  export * from './sso.js';
63
65
  export * from './board-scan.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -179,26 +179,51 @@ export type ProviderDescriptor = v.InferOutput<typeof providerDescriptorSchema>;
179
179
  * incident. Machine-readable, because the backend does not localize prose — the SPA maps the
180
180
  * `code` to its own copy and keeps `message` only as the untranslated last resort.
181
181
  */
182
- export declare const connectionWarningCodeSchema: v.PicklistSchema<["runner_manifest_no_release", "runner_manifest_no_status_path", "github_pat_classic_account_wide", "github_pat_scopes_beyond_need", "github_pat_scope_unreadable"], undefined>;
182
+ export declare const connectionWarningCodeSchema: v.PicklistSchema<["runner_manifest_no_release", "runner_manifest_no_status_path", "github_pat_classic_account_wide", "github_pat_scopes_beyond_need", "github_pat_scope_unreadable", "github_pat_no_scopes"], undefined>;
183
183
  export type ConnectionWarningCode = v.InferOutput<typeof connectionWarningCodeSchema>;
184
184
  export declare const connectionWarningSchema: v.ObjectSchema<{
185
- readonly code: v.PicklistSchema<["runner_manifest_no_release", "runner_manifest_no_status_path", "github_pat_classic_account_wide", "github_pat_scopes_beyond_need", "github_pat_scope_unreadable"], undefined>;
185
+ readonly code: v.PicklistSchema<["runner_manifest_no_release", "runner_manifest_no_status_path", "github_pat_classic_account_wide", "github_pat_scopes_beyond_need", "github_pat_scope_unreadable", "github_pat_no_scopes"], undefined>;
186
186
  /** The backend's own English account of the gap, also written to the deployment log. */
187
187
  readonly message: v.StringSchema<undefined>;
188
188
  }, undefined>;
189
189
  export type ConnectionWarning = v.InferOutput<typeof connectionWarningSchema>;
190
+ /**
191
+ * The transport-level class of a connection failure, for a probe that never got an ANSWER: each
192
+ * member is a different fix (a stopped host, a typo'd name, an untrusted certificate, a credential
193
+ * that cannot become a header). Machine-readable for the same reason {@link ConnectionWarningCode}
194
+ * is: the backend does not localize prose, and this is the most-read prose in the connect forms,
195
+ * so the SPA maps the member to translated copy and keeps the backend's English account as the
196
+ * technical detail beside it.
197
+ *
198
+ * It lives here rather than in kernel because BOTH sides have to agree about the answer: kernel is
199
+ * invisible to the SPA, so the union kept there would be restated by hand on the forms. Kernel's
200
+ * `describeConnectionFailure` is the one producer.
201
+ *
202
+ * `unknown` is a real member, not a placeholder: it means the thrown error was read and matched
203
+ * nothing, which is why such a failure is reported as itself with no remedy rather than being
204
+ * assigned the nearest-looking one.
205
+ */
206
+ export declare const connectionFailureCauseSchema: v.PicklistSchema<["refused", "dns", "timeout", "aborted", "unreachable", "reset", "tls-untrusted", "tls-expired", "tls-hostname", "tls-protocol", "invalid-header", "unknown"], undefined>;
207
+ export type ConnectionFailureCause = v.InferOutput<typeof connectionFailureCauseSchema>;
190
208
  /** The outcome of a provider connection test (never throws to the client). */
191
209
  export declare const connectionTestResultSchema: v.ObjectSchema<{
192
210
  readonly ok: v.BooleanSchema<undefined>;
193
211
  /** Human-readable detail — a success hint or the failure reason. */
194
212
  readonly message: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
213
+ /**
214
+ * What CLASS of transport failure this was, when the probe never got an answer. Present only on
215
+ * such a failure: a success has none, and so does a failure that IS an answer (an HTTP status
216
+ * the provider maps itself), because those carry no transport cause to name. The SPA renders the
217
+ * headline from this and keeps {@link message} as the untranslated detail underneath.
218
+ */
219
+ readonly failureCause: v.OptionalSchema<v.PicklistSchema<["refused", "dns", "timeout", "aborted", "unreachable", "reset", "tls-untrusted", "tls-expired", "tls-hostname", "tls-protocol", "invalid-header", "unknown"], undefined>, undefined>;
195
220
  /**
196
221
  * Gaps in the config being tested. Independent of `ok`: a warned config still connects, and
197
222
  * the test is the one moment the operator is looking at this backend, so it is where they
198
223
  * find out. Absent/empty ⇒ nothing to report.
199
224
  */
200
225
  readonly warnings: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
201
- readonly code: v.PicklistSchema<["runner_manifest_no_release", "runner_manifest_no_status_path", "github_pat_classic_account_wide", "github_pat_scopes_beyond_need", "github_pat_scope_unreadable"], undefined>;
226
+ readonly code: v.PicklistSchema<["runner_manifest_no_release", "runner_manifest_no_status_path", "github_pat_classic_account_wide", "github_pat_scopes_beyond_need", "github_pat_scope_unreadable", "github_pat_no_scopes"], undefined>;
202
227
  /** The backend's own English account of the gap, also written to the deployment log. */
203
228
  readonly message: v.StringSchema<undefined>;
204
229
  }, undefined>, undefined>, undefined>;
@@ -1 +1 @@
1
- {"version":3,"file":"provider-config.d.ts","sourceRoot":"","sources":["../src/provider-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAc5B;;;;;;GAMG;AACH,eAAO,MAAM,6BAA6B,+FAOxC,CAAA;AACF,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,6BAA6B,CAAC,CAAA;AAEzF,0EAA0E;AAC1E,eAAO,MAAM,yBAAyB;IACpC,iFAAiF;;IAEjF,sCAAsC;;IAEtC,kDAAkD;;IAElD,kCAAkC;;IAElC,gEAAgE;;IAEhE,oEAAoE;;IAEpE,+CAA+C;;IAE/C,oCAAoC;;;;;IAEpC;;;;;;;OAOG;;aAEH,CAAA;AACF,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,yBAAyB,CAAC,CAAA;AAEjF;;;;;;GAMG;AACH,eAAO,MAAM,wBAAwB;;;;;QAnCnC,iFAAiF;;QAEjF,sCAAsC;;QAEtC,kDAAkD;;QAElD,kCAAkC;;QAElC,gEAAgE;;QAEhE,oEAAoE;;QAEpE,+CAA+C;;QAE/C,oCAAoC;;;;;QAEpC;;;;;;;WAOG;;;IAiBH,yEAAyE;;IAEzE;;;;;;;OAOG;;IAEH;;;OAGG;;IAEH;;;OAGG;;IAEH,8FAA8F;;QA7D9F,iFAAiF;;QAEjF,sCAAsC;;QAEtC,kDAAkD;;QAElD,kCAAkC;;QAElC,gEAAgE;;QAEhE,oEAAoE;;QAEpE,+CAA+C;;QAE/C,oCAAoC;;;;;QAEpC;;;;;;;WAOG;;;IAwCH;;;;;;;;OAQG;;IAEH;;;;;;;;OAQG;;IAEH;;;;;;;;;;OAUG;;IAEH;;;;OAIG;;aAEH,CAAA;AACF,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,wBAAwB,CAAC,CAAA;AAE/E;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B,kMAetC,CAAA;AACF,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,2BAA2B,CAAC,CAAA;AAErF,eAAO,MAAM,uBAAuB;;IAElC,wFAAwF;;aAExF,CAAA;AACF,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,uBAAuB,CAAC,CAAA;AAE7E,8EAA8E;AAC9E,eAAO,MAAM,0BAA0B;;IAErC,oEAAoE;;IAEpE;;;;OAIG;;;QAdH,wFAAwF;;;aAgBxF,CAAA;AACF,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,0BAA0B,CAAC,CAAA;AAEnF,2DAA2D;AAC3D,eAAO,MAAM,4BAA4B,mDAAmC,CAAA;AAC5E,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,4BAA4B,CAAC,CAAA;AAEvF,0DAA0D;AAC1D,eAAO,MAAM,yBAAyB;;;IAGpC,uFAAuF;;aAEvF,CAAA;AACF,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,yBAAyB,CAAC,CAAA;AAEjF,uFAAuF;AACvF,eAAO,MAAM,0BAA0B;;;;;QANrC,uFAAuF;;;aASvF,CAAA;AACF,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,0BAA0B,CAAC,CAAA;AAEnF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,yBAAyB;;;;;;IAMpC;;;OAGG;;;;;QAhCH,uFAAuF;;;aAmCvF,CAAA;AACF,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,yBAAyB,CAAC,CAAA"}
1
+ {"version":3,"file":"provider-config.d.ts","sourceRoot":"","sources":["../src/provider-config.ts"],"names":[],"mappings":"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"}
@@ -148,17 +148,63 @@ export const connectionWarningCodeSchema = v.picklist([
148
148
  // its reach. Reported rather than assumed: "unknown breadth" and "narrow" are not the same
149
149
  // fact, and treating them alike is exactly how an over-broad token stays silent.
150
150
  'github_pat_scope_unreadable',
151
+ // GitHub returned the scope header with an EMPTY value: a classic token minted with nothing
152
+ // ticked. Distinct from the code above because it is the opposite fact — a positively stated
153
+ // "this token grants no scopes at all" rather than an unreadable one — and it is the state a
154
+ // reader is most likely to have produced by accident, since GitHub's form ticks nothing by
155
+ // default and the token still authenticates.
156
+ 'github_pat_no_scopes',
151
157
  ]);
152
158
  export const connectionWarningSchema = v.object({
153
159
  code: connectionWarningCodeSchema,
154
160
  /** The backend's own English account of the gap, also written to the deployment log. */
155
161
  message: v.string(),
156
162
  });
163
+ /**
164
+ * The transport-level class of a connection failure, for a probe that never got an ANSWER: each
165
+ * member is a different fix (a stopped host, a typo'd name, an untrusted certificate, a credential
166
+ * that cannot become a header). Machine-readable for the same reason {@link ConnectionWarningCode}
167
+ * is: the backend does not localize prose, and this is the most-read prose in the connect forms,
168
+ * so the SPA maps the member to translated copy and keeps the backend's English account as the
169
+ * technical detail beside it.
170
+ *
171
+ * It lives here rather than in kernel because BOTH sides have to agree about the answer: kernel is
172
+ * invisible to the SPA, so the union kept there would be restated by hand on the forms. Kernel's
173
+ * `describeConnectionFailure` is the one producer.
174
+ *
175
+ * `unknown` is a real member, not a placeholder: it means the thrown error was read and matched
176
+ * nothing, which is why such a failure is reported as itself with no remedy rather than being
177
+ * assigned the nearest-looking one.
178
+ */
179
+ export const connectionFailureCauseSchema = v.picklist([
180
+ 'refused',
181
+ 'dns',
182
+ 'timeout',
183
+ // Cancelled rather than timed out: a shutting-down process or a superseded request. Kept apart
184
+ // from `timeout` because the remedies diverge (a timeout points at a firewall or a saturated
185
+ // host; an abort points at nothing and simply wants re-running).
186
+ 'aborted',
187
+ 'unreachable',
188
+ 'reset',
189
+ 'tls-untrusted',
190
+ 'tls-expired',
191
+ 'tls-hostname',
192
+ 'tls-protocol',
193
+ 'invalid-header',
194
+ 'unknown',
195
+ ]);
157
196
  /** The outcome of a provider connection test (never throws to the client). */
158
197
  export const connectionTestResultSchema = v.object({
159
198
  ok: v.boolean(),
160
199
  /** Human-readable detail — a success hint or the failure reason. */
161
200
  message: v.optional(v.string()),
201
+ /**
202
+ * What CLASS of transport failure this was, when the probe never got an answer. Present only on
203
+ * such a failure: a success has none, and so does a failure that IS an answer (an HTTP status
204
+ * the provider maps itself), because those carry no transport cause to name. The SPA renders the
205
+ * headline from this and keeps {@link message} as the untranslated detail underneath.
206
+ */
207
+ failureCause: v.optional(connectionFailureCauseSchema),
162
208
  /**
163
209
  * Gaps in the config being tested. Independent of `ok`: a warned config still connects, and
164
210
  * the test is the one moment the operator is looking at this backend, so it is where they
@@ -1 +1 @@
1
- {"version":3,"file":"provider-config.js","sourceRoot":"","sources":["../src/provider-config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"provider-config.js","sourceRoot":"","sources":["../src/provider-config.ts"],"names":[],"mappings":"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"}
@@ -2594,8 +2594,9 @@ export declare const testEnvironmentConnectionContract: {
2594
2594
  readonly 200: v.ObjectSchema<{
2595
2595
  readonly ok: v.BooleanSchema<undefined>;
2596
2596
  readonly message: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
2597
+ readonly failureCause: v.OptionalSchema<v.PicklistSchema<["refused", "dns", "timeout", "aborted", "unreachable", "reset", "tls-untrusted", "tls-expired", "tls-hostname", "tls-protocol", "invalid-header", "unknown"], undefined>, undefined>;
2597
2598
  readonly warnings: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
2598
- readonly code: v.PicklistSchema<["runner_manifest_no_release", "runner_manifest_no_status_path", "github_pat_classic_account_wide", "github_pat_scopes_beyond_need", "github_pat_scope_unreadable"], undefined>;
2599
+ readonly code: v.PicklistSchema<["runner_manifest_no_release", "runner_manifest_no_status_path", "github_pat_classic_account_wide", "github_pat_scopes_beyond_need", "github_pat_scope_unreadable", "github_pat_no_scopes"], undefined>;
2599
2600
  readonly message: v.StringSchema<undefined>;
2600
2601
  }, undefined>, undefined>, undefined>;
2601
2602
  }, undefined>;
@@ -4675,8 +4676,9 @@ export declare const testEnvironmentHandlerContract: {
4675
4676
  readonly 200: v.ObjectSchema<{
4676
4677
  readonly ok: v.BooleanSchema<undefined>;
4677
4678
  readonly message: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
4679
+ readonly failureCause: v.OptionalSchema<v.PicklistSchema<["refused", "dns", "timeout", "aborted", "unreachable", "reset", "tls-untrusted", "tls-expired", "tls-hostname", "tls-protocol", "invalid-header", "unknown"], undefined>, undefined>;
4678
4680
  readonly warnings: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
4679
- readonly code: v.PicklistSchema<["runner_manifest_no_release", "runner_manifest_no_status_path", "github_pat_classic_account_wide", "github_pat_scopes_beyond_need", "github_pat_scope_unreadable"], undefined>;
4681
+ readonly code: v.PicklistSchema<["runner_manifest_no_release", "runner_manifest_no_status_path", "github_pat_classic_account_wide", "github_pat_scopes_beyond_need", "github_pat_scope_unreadable", "github_pat_no_scopes"], undefined>;
4680
4682
  readonly message: v.StringSchema<undefined>;
4681
4683
  }, undefined>, undefined>, undefined>;
4682
4684
  }, undefined>;
@@ -1 +1 @@
1
- {"version":3,"file":"environments.d.ts","sourceRoot":"","sources":["../../src/routes/environments.ts"],"names":[],"mappings":"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M,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAI1C,CAAA;AAEF,eAAO,MAAM,kCAAkC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAK7C,CAAA;AAKF,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKzC,CAAA;AAEF,eAAO,MAAM,uCAAuC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAOlD,CAAA;AAEF,eAAO,MAAM,oCAAoC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAM/C,CAAA;AAEF,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAM3C,CAAA;AAEF,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAK3C,CAAA;AAEF,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAInC,CAAA;AAEF,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKjC,CAAA;AAEF,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKvC,CAAA;AAEF,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKvC,CAAA;AAEF,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMtC,CAAA;AAOF,mFAAmF;AACnF,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMvC,CAAA;AAEF,+DAA+D;AAC/D,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKrC,CAAA;AAEF,4FAA4F;AAC5F,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMtC,CAAA"}
1
+ {"version":3,"file":"environments.d.ts","sourceRoot":"","sources":["../../src/routes/environments.ts"],"names":[],"mappings":"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AM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAI1C,CAAA;AAEF,eAAO,MAAM,kCAAkC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAK7C,CAAA;AAKF,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKzC,CAAA;AAEF,eAAO,MAAM,uCAAuC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAOlD,CAAA;AAEF,eAAO,MAAM,oCAAoC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAM/C,CAAA;AAEF,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAM3C,CAAA;AAEF,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAK3C,CAAA;AAEF,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAInC,CAAA;AAEF,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKjC,CAAA;AAEF,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKvC,CAAA;AAEF,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKvC,CAAA;AAEF,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMtC,CAAA;AAOF,mFAAmF;AACnF,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMvC,CAAA;AAEF,+DAA+D;AAC/D,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKrC,CAAA;AAEF,4FAA4F;AAC5F,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMtC,CAAA"}
@@ -905,4 +905,67 @@ export declare const commentGitHubIssueContract: {
905
905
  readonly 204: typeof ContractNoBody;
906
906
  };
907
907
  };
908
+ /**
909
+ * What the personal access token this workspace's runs would authenticate with can actually do
910
+ * (see `github-pat-capability.ts`). A READ, so it passes the controller's writes-only
911
+ * `integrations.manage` mount and any member can call it — deliberately, because on a hosted
912
+ * deployment the token under judgement is the CALLER'S OWN stored `github_pat`, and the person
913
+ * who has to re-mint it is exactly the person an admin-gated route would hide it from.
914
+ *
915
+ * Answers `not_applicable` rather than 404ing when no PAT is in play, so the SPA has one call to
916
+ * make on board load regardless of how the deployment authenticates.
917
+ */
918
+ export declare const getGitHubPatCheckContract: {
919
+ readonly method: "get";
920
+ readonly pathResolver: () => string;
921
+ readonly responsesByStatusCode: {
922
+ readonly '4xx': v.ObjectSchema<{
923
+ readonly error: v.ObjectSchema<{
924
+ readonly code: v.StringSchema<undefined>;
925
+ readonly message: v.StringSchema<undefined>;
926
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
927
+ readonly issues: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
928
+ readonly path: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
929
+ readonly message: v.StringSchema<undefined>;
930
+ }, undefined>, undefined>, undefined>;
931
+ }, undefined>;
932
+ }, undefined>;
933
+ readonly '5xx': v.ObjectSchema<{
934
+ readonly error: v.ObjectSchema<{
935
+ readonly code: v.StringSchema<undefined>;
936
+ readonly message: v.StringSchema<undefined>;
937
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
938
+ readonly issues: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
939
+ readonly path: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
940
+ readonly message: v.StringSchema<undefined>;
941
+ }, undefined>, undefined>, undefined>;
942
+ }, undefined>;
943
+ }, undefined>;
944
+ readonly 200: v.VariantSchema<"state", [v.ObjectSchema<{
945
+ readonly state: v.LiteralSchema<"not_applicable", undefined>;
946
+ }, undefined>, v.ObjectSchema<{
947
+ readonly state: v.LiteralSchema<"token_rejected", undefined>;
948
+ readonly status: v.NumberSchema<undefined>;
949
+ readonly source: v.PicklistSchema<["deployment", "initiator"], undefined>;
950
+ }, undefined>, v.ObjectSchema<{
951
+ readonly state: v.LiteralSchema<"probe_failed", undefined>;
952
+ readonly message: v.StringSchema<undefined>;
953
+ }, undefined>, v.ObjectSchema<{
954
+ readonly state: v.LiteralSchema<"checked", undefined>;
955
+ readonly report: v.ObjectSchema<{
956
+ readonly source: v.PicklistSchema<["deployment", "initiator"], undefined>;
957
+ readonly kind: v.PicklistSchema<["classic", "fine_grained", "unknown"], undefined>;
958
+ readonly capabilities: v.ObjectSchema<{
959
+ readonly push: v.PicklistSchema<["granted", "missing", "unknown"], undefined>;
960
+ readonly pullRequests: v.PicklistSchema<["granted", "missing", "unknown"], undefined>;
961
+ readonly workflows: v.PicklistSchema<["granted", "missing", "unknown"], undefined>;
962
+ }, undefined>;
963
+ readonly probedRepos: v.ArraySchema<v.StringSchema<undefined>, undefined>;
964
+ readonly deniedRepos: v.ArraySchema<v.StringSchema<undefined>, undefined>;
965
+ readonly unprobedRepoCount: v.NumberSchema<undefined>;
966
+ readonly webUrl: v.NullableSchema<v.StringSchema<undefined>, undefined>;
967
+ }, undefined>;
968
+ }, undefined>], undefined>;
969
+ };
970
+ };
908
971
  //# sourceMappingURL=github.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../src/routes/github.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAqC,MAAM,yBAAyB,CAAA;AAC3F,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AA6D5B,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAItC,CAAA;AAEF,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAItC,CAAA;AAEF,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAI1C,CAAA;AAEF,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKhC,CAAA;AAEF,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAQ3C,CAAA;AAEF,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKvC,CAAA;AAEF,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMxC,CAAA;AAEF,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMrC,CAAA;AAEF,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKtC,CAAA;AAEF,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAInC,CAAA;AAIF,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAK/B,CAAA;AAIF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAIlC,CAAA;AAKF,eAAO,MAAM,mCAAmC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAI9C,CAAA;AAEF,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKrC,CAAA;AAEF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAIlC,CAAA;AAEF,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAInC,CAAA;AAIF,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKnC,CAAA;AAEF,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMrC,CAAA;AAEF,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMpC,CAAA;AAEF,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMxC,CAAA;AAEF,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMzC,CAAA;AAEF,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAOrC,CAAA"}
1
+ {"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../src/routes/github.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAqC,MAAM,yBAAyB,CAAA;AAC3F,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AA8D5B,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAItC,CAAA;AAEF,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAItC,CAAA;AAEF,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAI1C,CAAA;AAEF,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKhC,CAAA;AAEF,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAQ3C,CAAA;AAEF,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKvC,CAAA;AAEF,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMxC,CAAA;AAEF,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMrC,CAAA;AAEF,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKtC,CAAA;AAEF,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAInC,CAAA;AAIF,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAK/B,CAAA;AAIF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAIlC,CAAA;AAKF,eAAO,MAAM,mCAAmC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAI9C,CAAA;AAEF,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKrC,CAAA;AAEF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAIlC,CAAA;AAEF,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAInC,CAAA;AAIF,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKnC,CAAA;AAEF,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMrC,CAAA;AAEF,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMpC,CAAA;AAEF,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMxC,CAAA;AAEF,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMzC,CAAA;AAEF,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAOrC,CAAA;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAIpC,CAAA"}
@@ -1,6 +1,7 @@
1
1
  import { ContractNoBody, defineApiContract, withObjectKeys } from '@toad-contracts/valibot';
2
2
  import * as v from 'valibot';
3
3
  import { branchProtectionReportSchema, commentSchema, commitFilesSchema, createBranchSchema, createRepoRequestSchema, githubAvailableRepoSchema, githubBranchSchema, githubConnectionSchema, githubInstallationOptionSchema, githubIssueSchema, githubPullRequestSchema, githubRepoSchema, linkReposSchema, mergePullRequestSchema, openPullRequestSchema, provisionedRepoSchema, repoTreeEntrySchema, resyncRequestSchema, setRepoMonorepoSchema, } from '../github.js';
4
+ import { githubPatCheckSchema } from '../github-pat-capability.js';
4
5
  import { errorResponses, singleStringParam } from './_shared.js';
5
6
  // ---------------------------------------------------------------------------
6
7
  // Workspace-scoped GitHub route contracts. Mounted under `/workspaces/:workspaceId`,
@@ -172,4 +173,19 @@ export const commentGitHubIssueContract = defineApiContract({
172
173
  requestBodySchema: commentSchema,
173
174
  responsesByStatusCode: { 204: ContractNoBody, ...errorResponses },
174
175
  });
176
+ /**
177
+ * What the personal access token this workspace's runs would authenticate with can actually do
178
+ * (see `github-pat-capability.ts`). A READ, so it passes the controller's writes-only
179
+ * `integrations.manage` mount and any member can call it — deliberately, because on a hosted
180
+ * deployment the token under judgement is the CALLER'S OWN stored `github_pat`, and the person
181
+ * who has to re-mint it is exactly the person an admin-gated route would hide it from.
182
+ *
183
+ * Answers `not_applicable` rather than 404ing when no PAT is in play, so the SPA has one call to
184
+ * make on board load regardless of how the deployment authenticates.
185
+ */
186
+ export const getGitHubPatCheckContract = defineApiContract({
187
+ method: 'get',
188
+ pathResolver: () => '/github/pat-check',
189
+ responsesByStatusCode: { 200: githubPatCheckSchema, ...errorResponses },
190
+ });
175
191
  //# sourceMappingURL=github.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"github.js","sourceRoot":"","sources":["../../src/routes/github.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"github.js","sourceRoot":"","sources":["../../src/routes/github.ts"],"names":[],"mappings":"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"}
@@ -1759,8 +1759,9 @@ export declare const testRunnerPoolConnectionContract: {
1759
1759
  readonly 200: v.ObjectSchema<{
1760
1760
  readonly ok: v.BooleanSchema<undefined>;
1761
1761
  readonly message: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
1762
+ readonly failureCause: v.OptionalSchema<v.PicklistSchema<["refused", "dns", "timeout", "aborted", "unreachable", "reset", "tls-untrusted", "tls-expired", "tls-hostname", "tls-protocol", "invalid-header", "unknown"], undefined>, undefined>;
1762
1763
  readonly warnings: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
1763
- readonly code: v.PicklistSchema<["runner_manifest_no_release", "runner_manifest_no_status_path", "github_pat_classic_account_wide", "github_pat_scopes_beyond_need", "github_pat_scope_unreadable"], undefined>;
1764
+ readonly code: v.PicklistSchema<["runner_manifest_no_release", "runner_manifest_no_status_path", "github_pat_classic_account_wide", "github_pat_scopes_beyond_need", "github_pat_scope_unreadable", "github_pat_no_scopes"], undefined>;
1764
1765
  readonly message: v.StringSchema<undefined>;
1765
1766
  }, undefined>, undefined>, undefined>;
1766
1767
  }, undefined>;
@@ -1 +1 @@
1
- {"version":3,"file":"runners.d.ts","sourceRoot":"","sources":["../../src/routes/runners.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runners.d.ts","sourceRoot":"","sources":["../../src/routes/runners.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAqB,MAAM,yBAAyB,CAAA;AAC3E,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAoB5B,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAI1C,CAAA;AAEF,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKrC,CAAA;AAEF,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAK1C,CAAA;AAEF,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAIvC,CAAA;AAEF,eAAO,MAAM,kCAAkC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAO7C,CAAA;AAEF,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAK3C,CAAA"}
@@ -225,8 +225,9 @@ export declare const testUserSecretContract: {
225
225
  readonly 200: v.ObjectSchema<{
226
226
  readonly ok: v.BooleanSchema<undefined>;
227
227
  readonly message: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
228
+ readonly failureCause: v.OptionalSchema<v.PicklistSchema<["refused", "dns", "timeout", "aborted", "unreachable", "reset", "tls-untrusted", "tls-expired", "tls-hostname", "tls-protocol", "invalid-header", "unknown"], undefined>, undefined>;
228
229
  readonly warnings: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
229
- readonly code: v.PicklistSchema<["runner_manifest_no_release", "runner_manifest_no_status_path", "github_pat_classic_account_wide", "github_pat_scopes_beyond_need", "github_pat_scope_unreadable"], undefined>;
230
+ readonly code: v.PicklistSchema<["runner_manifest_no_release", "runner_manifest_no_status_path", "github_pat_classic_account_wide", "github_pat_scopes_beyond_need", "github_pat_scope_unreadable", "github_pat_no_scopes"], undefined>;
230
231
  readonly message: v.StringSchema<undefined>;
231
232
  }, undefined>, undefined>, undefined>;
232
233
  }, undefined>;
@@ -1 +1 @@
1
- {"version":3,"file":"user-secret.d.ts","sourceRoot":"","sources":["../../src/routes/user-secret.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAqB,MAAM,yBAAyB,CAAA;AAC3E,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAyB5B,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAIlC,CAAA;AAEF,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAK1C,CAAA;AAEF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMlC,CAAA;AAEF,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKnC,CAAA;AAEF,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMjC,CAAA"}
1
+ {"version":3,"file":"user-secret.d.ts","sourceRoot":"","sources":["../../src/routes/user-secret.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAqB,MAAM,yBAAyB,CAAA;AAC3E,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAyB5B,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAIlC,CAAA;AAEF,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAK1C,CAAA;AAEF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMlC,CAAA;AAEF,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKnC,CAAA;AAEF,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMjC,CAAA"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * What is wrong with a pasted ServiceAccount token, or `null` when nothing is.
3
+ *
4
+ * Split by SEVERITY, because the two halves earn different treatment:
5
+ *
6
+ * - `whitespace` is IMPOSSIBLE, not merely suspicious. No bearer token contains a space, tab or
7
+ * line break, and an HTTP header value structurally cannot carry one, so this is refused
8
+ * outright at both ends.
9
+ * - `base64-encoded` and `not-a-jwt` are SUSPICIOUS. A Kubernetes ServiceAccount token is a JWT
10
+ * today, but the same field also serves any apiserver that accepts a static bearer token (a
11
+ * `--token-auth-file` cluster), whose tokens are arbitrary strings. So these are surfaced as a
12
+ * warning the operator can overrule, never as a refusal: a check that cannot be sure must not
13
+ * be the thing that blocks a legitimate cluster.
14
+ */
15
+ export type ServiceAccountTokenProblem = 'whitespace' | 'base64-encoded' | 'not-a-jwt';
16
+ /** Whether a problem makes the token unusable (as opposed to merely unusual). */
17
+ export declare function isFatalServiceAccountTokenProblem(problem: ServiceAccountTokenProblem): boolean;
18
+ /**
19
+ * Classify a pasted ServiceAccount token, or `null` when it looks fine (and for an EMPTY value,
20
+ * which is the field's own required-ness question and not this rule's).
21
+ *
22
+ * Checked against the value with SURROUNDING whitespace trimmed, because leading/trailing padding
23
+ * is both harmless and universally stripped before use. It is whitespace that survives the trim,
24
+ * i.e. inside the token, that can never be right.
25
+ */
26
+ export declare function classifyServiceAccountToken(raw: string): ServiceAccountTokenProblem | null;
27
+ //# sourceMappingURL=service-account-token.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service-account-token.d.ts","sourceRoot":"","sources":["../src/service-account-token.ts"],"names":[],"mappings":"AAgBA;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,0BAA0B,GAAG,YAAY,GAAG,gBAAgB,GAAG,WAAW,CAAA;AAEtF,iFAAiF;AACjF,wBAAgB,iCAAiC,CAAC,OAAO,EAAE,0BAA0B,GAAG,OAAO,CAE9F;AAgBD;;;;;;;GAOG;AACH,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,MAAM,GAAG,0BAA0B,GAAG,IAAI,CAO1F"}
@@ -0,0 +1,51 @@
1
+ // The shape rule for a pasted Kubernetes ServiceAccount bearer token, shared by the SPA (which
2
+ // flags a bad paste on the field, before the operator ever clicks Test) and the backend (which
3
+ // refuses an unusable one before it can become an `authorization` header).
4
+ //
5
+ // It lives in contracts rather than kernel because BOTH sides have to agree about the answer:
6
+ // kernel is invisible to the SPA, so a rule kept there would be restated by hand on the form and
7
+ // the two would drift. What the backend must NOT do is phrase the verdict, so this returns a
8
+ // machine-readable code and the SPA maps it to a translated message (the CLAUDE.md rule for a
9
+ // localizable condition).
10
+ //
11
+ // Why it earns its place: the guided `cat-factory k3s` flow ends with "copy this token out of your
12
+ // terminal and paste it", and a terminal wraps long lines. A token copied across that wrap carries
13
+ // a newline in the MIDDLE, which is invisible in a password field, survives `.trim()`, and reaches
14
+ // undici as a header value it refuses to build. The operator sees a generic failure and has no way
15
+ // to tell it apart from a wrong token or a stopped cluster.
16
+ /** Whether a problem makes the token unusable (as opposed to merely unusual). */
17
+ export function isFatalServiceAccountTokenProblem(problem) {
18
+ return problem === 'whitespace';
19
+ }
20
+ /** A JWT: three non-empty base64url segments separated by dots. */
21
+ const JWT_SHAPE = /^[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]*$/;
22
+ /**
23
+ * The base64 of a JWT always begins `eyJ` encoded, i.e. `ZXlK`. This is the `kubectl get secret
24
+ * … -o jsonpath={.data.token}` value pasted WITHOUT the `| base64 -d`, which is a distinct mistake
25
+ * from a malformed token and has a different fix, so it gets its own code rather than collapsing
26
+ * into `not-a-jwt`.
27
+ */
28
+ const BASE64_JWT_PREFIX = /^ZXlK/;
29
+ /** Any whitespace, including the line break a wrapped terminal copy introduces. */
30
+ const ANY_WHITESPACE = /\s/;
31
+ /**
32
+ * Classify a pasted ServiceAccount token, or `null` when it looks fine (and for an EMPTY value,
33
+ * which is the field's own required-ness question and not this rule's).
34
+ *
35
+ * Checked against the value with SURROUNDING whitespace trimmed, because leading/trailing padding
36
+ * is both harmless and universally stripped before use. It is whitespace that survives the trim,
37
+ * i.e. inside the token, that can never be right.
38
+ */
39
+ export function classifyServiceAccountToken(raw) {
40
+ const token = raw.trim();
41
+ if (!token)
42
+ return null;
43
+ if (ANY_WHITESPACE.test(token))
44
+ return 'whitespace';
45
+ if (BASE64_JWT_PREFIX.test(token))
46
+ return 'base64-encoded';
47
+ if (!JWT_SHAPE.test(token))
48
+ return 'not-a-jwt';
49
+ return null;
50
+ }
51
+ //# sourceMappingURL=service-account-token.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service-account-token.js","sourceRoot":"","sources":["../src/service-account-token.ts"],"names":[],"mappings":"AAAA,+FAA+F;AAC/F,+FAA+F;AAC/F,2EAA2E;AAC3E,EAAE;AACF,8FAA8F;AAC9F,iGAAiG;AACjG,6FAA6F;AAC7F,8FAA8F;AAC9F,0BAA0B;AAC1B,EAAE;AACF,mGAAmG;AACnG,mGAAmG;AACnG,mGAAmG;AACnG,mGAAmG;AACnG,4DAA4D;AAkB5D,iFAAiF;AACjF,MAAM,UAAU,iCAAiC,CAAC,OAAmC;IACnF,OAAO,OAAO,KAAK,YAAY,CAAA;AACjC,CAAC;AAED,mEAAmE;AACnE,MAAM,SAAS,GAAG,kDAAkD,CAAA;AAEpE;;;;;GAKG;AACH,MAAM,iBAAiB,GAAG,OAAO,CAAA;AAEjC,mFAAmF;AACnF,MAAM,cAAc,GAAG,IAAI,CAAA;AAE3B;;;;;;;GAOG;AACH,MAAM,UAAU,2BAA2B,CAAC,GAAW;IACrD,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;IACxB,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAA;IACvB,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,YAAY,CAAA;IACnD,IAAI,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,gBAAgB,CAAA;IAC1D,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,WAAW,CAAA;IAC9C,OAAO,IAAI,CAAA;AACb,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cat-factory/contracts",
3
- "version": "0.292.0",
3
+ "version": "0.292.2",
4
4
  "description": "Valibot wire contract shared between the Agent Architecture Board frontend and backend.",
5
5
  "repository": {
6
6
  "type": "git",