@cat-factory/contracts 0.209.0 → 0.210.1

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/dist/accountSettings.d.ts +68 -0
  2. package/dist/accountSettings.d.ts.map +1 -1
  3. package/dist/accountSettings.js +41 -0
  4. package/dist/accountSettings.js.map +1 -1
  5. package/dist/errors.d.ts.map +1 -1
  6. package/dist/errors.js +6 -5
  7. package/dist/errors.js.map +1 -1
  8. package/dist/execution.d.ts +25 -0
  9. package/dist/execution.d.ts.map +1 -1
  10. package/dist/execution.js +38 -0
  11. package/dist/execution.js.map +1 -1
  12. package/dist/foundational-services.d.ts +131 -45
  13. package/dist/foundational-services.d.ts.map +1 -1
  14. package/dist/foundational-services.js +133 -22
  15. package/dist/foundational-services.js.map +1 -1
  16. package/dist/github.d.ts +79 -0
  17. package/dist/github.d.ts.map +1 -1
  18. package/dist/github.js +54 -0
  19. package/dist/github.js.map +1 -1
  20. package/dist/provider-config.d.ts +3 -3
  21. package/dist/provider-config.d.ts.map +1 -1
  22. package/dist/provider-config.js +12 -0
  23. package/dist/provider-config.js.map +1 -1
  24. package/dist/routes/accounts.d.ts +3 -0
  25. package/dist/routes/accounts.d.ts.map +1 -1
  26. package/dist/routes/environments.d.ts +2 -2
  27. package/dist/routes/foundational-services.d.ts +14 -17
  28. package/dist/routes/foundational-services.d.ts.map +1 -1
  29. package/dist/routes/foundational-services.js +13 -10
  30. package/dist/routes/foundational-services.js.map +1 -1
  31. package/dist/routes/github.d.ts +49 -0
  32. package/dist/routes/github.d.ts.map +1 -1
  33. package/dist/routes/github.js +9 -1
  34. package/dist/routes/github.js.map +1 -1
  35. package/dist/routes/runners.d.ts +1 -1
  36. package/dist/routes/user-secret.d.ts +1 -1
  37. package/dist/routes/workspace-settings.d.ts +3 -0
  38. package/dist/routes/workspace-settings.d.ts.map +1 -1
  39. package/dist/routes/workspaces.d.ts +2 -0
  40. package/dist/routes/workspaces.d.ts.map +1 -1
  41. package/dist/snapshot.d.ts +1 -0
  42. package/dist/snapshot.d.ts.map +1 -1
  43. package/dist/workspace-settings.d.ts +20 -0
  44. package/dist/workspace-settings.d.ts.map +1 -1
  45. package/dist/workspace-settings.js +20 -0
  46. package/dist/workspace-settings.js.map +1 -1
  47. package/package.json +1 -1
@@ -2,17 +2,77 @@ import * as v from 'valibot';
2
2
  /** Which scope owns a foundational service / source: an account, or a workspace. */
3
3
  export declare const foundationalServiceOwnerKindSchema: v.PicklistSchema<["account", "workspace"], undefined>;
4
4
  export type FoundationalServiceOwnerKind = v.InferOutput<typeof foundationalServiceOwnerKindSchema>;
5
- /** The tier a resolved catalog entry originated from, lowest-precedence first. */
6
- export declare const foundationalServiceTierSchema: v.PicklistSchema<["account", "workspace"], undefined>;
5
+ /**
6
+ * The tier a resolved catalog entry originated from, lowest-precedence first.
7
+ *
8
+ * `builtin` is the DEPLOYMENT's own tier: services a deployment registers in code on the
9
+ * app-owned `FoundationalServiceRegistry`, exactly as it registers pipelines or task types.
10
+ * It carries no rows, so it is present from a workspace's first request and cannot drift from
11
+ * the definitions; an account or workspace row of the same id still wins over it, and a
12
+ * tombstone at either tier suppresses it.
13
+ */
14
+ export declare const foundationalServiceTierSchema: v.PicklistSchema<["builtin", "account", "workspace"], undefined>;
7
15
  export type FoundationalServiceTier = v.InferOutput<typeof foundationalServiceTierSchema>;
8
16
  /**
9
- * The API-contract document formats the catalog accepts. Each is stored verbatim as text;
10
- * only OpenAPI is additionally PARSED (into an operation index the lazy read renders as a
11
- * compact summary) because the other two are TypeScript modules, which cannot be evaluated
12
- * in a Worker isolate and are handed to the agent as source.
17
+ * The API-contract document formats the catalog accepts. Each is stored verbatim as text and
18
+ * additionally INDEXED into operation names where the format allows it see
19
+ * {@link operationsAreIndexable}, which is the one place that judgement lives.
13
20
  */
14
21
  export declare const apiContractFormatSchema: v.PicklistSchema<["openapi", "toad-contract", "lokalise-api-contract"], undefined>;
15
22
  export type ApiContractFormat = v.InferOutput<typeof apiContractFormatSchema>;
23
+ /**
24
+ * Whether an operation index can be derived from a document of this format at all.
25
+ *
26
+ * This is what keeps "this interface declares no operations" apart from "this platform does not
27
+ * read this format": both render as an empty `operations` list, they need opposite reactions
28
+ * from whoever reads the catalog, and collapsing them tells an Architect that a fully-specified
29
+ * service offers nothing. Every surface that renders an operation list branches on it — the
30
+ * agent-facing catalog and the SPA's manifest row alike — so the two cannot disagree.
31
+ *
32
+ * `lokalise-api-contract` is false because its route builders' shapes are not pinned down here
33
+ * and a partial guess at them would be reported as fact. Adding an extractor for it means
34
+ * flipping this and nothing else.
35
+ */
36
+ export declare function operationsAreIndexable(format: ApiContractFormat): boolean;
37
+ /**
38
+ * The capability tag a foundational service must carry to be selectable as a binary-output
39
+ * step's STORAGE target (enforced at run admission — see `docs/initiatives/
40
+ * binary-output-foundational-storage.md`).
41
+ *
42
+ * It lives here, on the wire, rather than in the kernel alone because the people who need to
43
+ * spell it right are OUTSIDE the backend: a deployment registering its estate, and the SPA
44
+ * rendering the picker. A client that cannot import the vocabulary re-declares it, and the
45
+ * failure of a re-declaration is silent — `asset_storage` registers cleanly and surfaces much
46
+ * later as a refused run.
47
+ */
48
+ export declare const ASSET_STORAGE_CAPABILITY = "asset-storage";
49
+ /**
50
+ * The CONVENTIONAL tag for a service that can scope a generation — an inventory answering
51
+ * "what entities exist, which lack an asset, how is each described". Deliberately NOT enforced
52
+ * (any service with a readable contract can inform scope), but still reserved: a picker orders
53
+ * by it, so a typo silently loses the ordering rather than failing.
54
+ */
55
+ export declare const GENERATION_CONTEXT_CAPABILITY = "generation-context";
56
+ /**
57
+ * Capability tags the PLATFORM assigns meaning to. Everything else is free-form org taxonomy
58
+ * and stays that way — this list is not a closed vocabulary, it is the set of spellings a
59
+ * registrant must not miss by a character.
60
+ */
61
+ export declare const RESERVED_CAPABILITY_TAGS: readonly string[];
62
+ /**
63
+ * The reserved tag `tag` was plainly TRYING to be, when it is not that tag exactly — else null.
64
+ *
65
+ * Capability tags are free-form strings, which is right (an org's taxonomy is its own) and is
66
+ * also why `asset_storage` / `Asset-Storage` / `assetstorage` register without complaint and
67
+ * fail a run hours later as `not_storage_capable`. Comparing on a form with separators and case
68
+ * removed catches exactly the near-misses and nothing else: a genuinely different tag does not
69
+ * collide with a reserved one under it.
70
+ *
71
+ * The caller REFUSES on a hit rather than silently canonicalising, because a registrant who
72
+ * meant a tag of their own under a colliding spelling must learn that the platform reads it as
73
+ * reserved, and a quiet rewrite of someone's taxonomy is its own surprise.
74
+ */
75
+ export declare function reservedCapabilityNearMiss(tag: string): string | null;
16
76
  /**
17
77
  * A contract as the CATALOG lists it — identity, format and SIZE, never the body. This is
18
78
  * what the Architect's catalog carries: enough to decide whether a service is relevant and
@@ -28,14 +88,19 @@ export declare const apiContractSummarySchema: v.ObjectSchema<{
28
88
  /** Repo provenance (`path`), or null when uploaded directly. */
29
89
  readonly path: v.NullableSchema<v.StringSchema<undefined>, undefined>;
30
90
  /**
31
- * The operations an OpenAPI document declares (`GET /files/{id}` …), capped. Empty for the
32
- * TypeScript formats, which are not parsed. Cheap enough to ride the catalog and it is what
33
- * makes the catalog actionable — an architect can name the endpoint it intends to call.
91
+ * The operations this document declares (`GET /files/{id}` …), capped. Cheap enough to ride
92
+ * the catalog and it is what makes the catalog actionable an architect can name the
93
+ * endpoint it intends to call.
94
+ *
95
+ * EMPTY means one of two different things and {@link operationsAreIndexable} is what tells
96
+ * them apart: this format is not read at all, or it is and this document declares nothing.
34
97
  */
35
98
  readonly operations: v.ArraySchema<v.StringSchema<undefined>, undefined>;
36
99
  /**
37
- * How many operations were dropped from {@link operations} by the cap. Non-zero says the
38
- * list is a PREFIX, so a reader never concludes the tail does not exist.
100
+ * How many operations the document declares that {@link operations} does NOT list dropped
101
+ * by the cap, or (for a contract MODULE) declared in a shape the static extractor could not
102
+ * read. Non-zero says the list is incomplete, so a reader never concludes the rest does not
103
+ * exist.
39
104
  */
40
105
  readonly omittedOperations: v.NumberSchema<undefined>;
41
106
  }, undefined>;
@@ -50,14 +115,19 @@ export declare const apiContractDocumentSchema: v.ObjectSchema<{
50
115
  /** Repo provenance (`path`), or null when uploaded directly. */
51
116
  readonly path: v.NullableSchema<v.StringSchema<undefined>, undefined>;
52
117
  /**
53
- * The operations an OpenAPI document declares (`GET /files/{id}` …), capped. Empty for the
54
- * TypeScript formats, which are not parsed. Cheap enough to ride the catalog and it is what
55
- * makes the catalog actionable — an architect can name the endpoint it intends to call.
118
+ * The operations this document declares (`GET /files/{id}` …), capped. Cheap enough to ride
119
+ * the catalog and it is what makes the catalog actionable an architect can name the
120
+ * endpoint it intends to call.
121
+ *
122
+ * EMPTY means one of two different things and {@link operationsAreIndexable} is what tells
123
+ * them apart: this format is not read at all, or it is and this document declares nothing.
56
124
  */
57
125
  readonly operations: v.ArraySchema<v.StringSchema<undefined>, undefined>;
58
126
  /**
59
- * How many operations were dropped from {@link operations} by the cap. Non-zero says the
60
- * list is a PREFIX, so a reader never concludes the tail does not exist.
127
+ * How many operations the document declares that {@link operations} does NOT list dropped
128
+ * by the cap, or (for a contract MODULE) declared in a shape the static extractor could not
129
+ * read. Non-zero says the list is incomplete, so a reader never concludes the rest does not
130
+ * exist.
61
131
  */
62
132
  readonly omittedOperations: v.NumberSchema<undefined>;
63
133
  /** The document verbatim (OpenAPI JSON/YAML, or the contract module's TypeScript source). */
@@ -86,14 +156,19 @@ export declare const foundationalServiceSchema: v.ObjectSchema<{
86
156
  /** Repo provenance (`path`), or null when uploaded directly. */
87
157
  readonly path: v.NullableSchema<v.StringSchema<undefined>, undefined>;
88
158
  /**
89
- * The operations an OpenAPI document declares (`GET /files/{id}` …), capped. Empty for the
90
- * TypeScript formats, which are not parsed. Cheap enough to ride the catalog and it is what
91
- * makes the catalog actionable — an architect can name the endpoint it intends to call.
159
+ * The operations this document declares (`GET /files/{id}` …), capped. Cheap enough to ride
160
+ * the catalog and it is what makes the catalog actionable an architect can name the
161
+ * endpoint it intends to call.
162
+ *
163
+ * EMPTY means one of two different things and {@link operationsAreIndexable} is what tells
164
+ * them apart: this format is not read at all, or it is and this document declares nothing.
92
165
  */
93
166
  readonly operations: v.ArraySchema<v.StringSchema<undefined>, undefined>;
94
167
  /**
95
- * How many operations were dropped from {@link operations} by the cap. Non-zero says the
96
- * list is a PREFIX, so a reader never concludes the tail does not exist.
168
+ * How many operations the document declares that {@link operations} does NOT list dropped
169
+ * by the cap, or (for a contract MODULE) declared in a shape the static extractor could not
170
+ * read. Non-zero says the list is incomplete, so a reader never concludes the rest does not
171
+ * exist.
97
172
  */
98
173
  readonly omittedOperations: v.NumberSchema<undefined>;
99
174
  }, undefined>, undefined>;
@@ -106,19 +181,21 @@ export declare const foundationalServiceSchema: v.ObjectSchema<{
106
181
  readonly updatedAt: v.NumberSchema<undefined>;
107
182
  }, undefined>;
108
183
  export type FoundationalService = v.InferOutput<typeof foundationalServiceSchema>;
109
- /** A resolved (account ⊕ workspace merged) catalog entry, carrying its winning tier. */
184
+ /**
185
+ * A resolved (builtin ⊕ account ⊕ workspace merged) catalog entry, carrying its winning tier.
186
+ *
187
+ * Deliberately NARROWER than {@link foundationalServiceSchema}: the merged read carries only
188
+ * what every tier can honestly fill. A `builtin` entry is registered in code, so it has no
189
+ * owning scope, no repo provenance and no row timestamps — and the alternative to dropping
190
+ * those fields is filling them with placeholders that read as facts. They remain on the
191
+ * per-tier management read, which is where a stored row's provenance belongs.
192
+ */
110
193
  export declare const resolvedFoundationalServiceSchema: v.ObjectSchema<{
111
- /** Stable slug the Architect names in its design (e.g. `file-storage`). */
112
194
  readonly id: v.StringSchema<undefined>;
113
- readonly ownerKind: v.PicklistSchema<["account", "workspace"], undefined>;
114
195
  readonly name: v.StringSchema<undefined>;
115
- /** One line; the catalog's relevance signal. */
116
196
  readonly summary: v.StringSchema<undefined>;
117
- /** The general description — what it does, when to use it, what it does NOT cover. */
118
197
  readonly description: v.StringSchema<undefined>;
119
- /** Free-form capability tags (`file-storage`, `notifications`, `audit`). */
120
198
  readonly capabilities: v.ArraySchema<v.StringSchema<undefined>, undefined>;
121
- /** Contract manifest — never bodies (see {@link apiContractSummarySchema}). */
122
199
  readonly contracts: v.ArraySchema<v.ObjectSchema<{
123
200
  readonly contractId: v.StringSchema<undefined>;
124
201
  readonly format: v.PicklistSchema<["openapi", "toad-contract", "lokalise-api-contract"], undefined>;
@@ -128,38 +205,37 @@ export declare const resolvedFoundationalServiceSchema: v.ObjectSchema<{
128
205
  /** Repo provenance (`path`), or null when uploaded directly. */
129
206
  readonly path: v.NullableSchema<v.StringSchema<undefined>, undefined>;
130
207
  /**
131
- * The operations an OpenAPI document declares (`GET /files/{id}` …), capped. Empty for the
132
- * TypeScript formats, which are not parsed. Cheap enough to ride the catalog and it is what
133
- * makes the catalog actionable — an architect can name the endpoint it intends to call.
208
+ * The operations this document declares (`GET /files/{id}` …), capped. Cheap enough to ride
209
+ * the catalog and it is what makes the catalog actionable an architect can name the
210
+ * endpoint it intends to call.
211
+ *
212
+ * EMPTY means one of two different things and {@link operationsAreIndexable} is what tells
213
+ * them apart: this format is not read at all, or it is and this document declares nothing.
134
214
  */
135
215
  readonly operations: v.ArraySchema<v.StringSchema<undefined>, undefined>;
136
216
  /**
137
- * How many operations were dropped from {@link operations} by the cap. Non-zero says the
138
- * list is a PREFIX, so a reader never concludes the tail does not exist.
217
+ * How many operations the document declares that {@link operations} does NOT list dropped
218
+ * by the cap, or (for a contract MODULE) declared in a shape the static extractor could not
219
+ * read. Non-zero says the list is incomplete, so a reader never concludes the rest does not
220
+ * exist.
139
221
  */
140
222
  readonly omittedOperations: v.NumberSchema<undefined>;
141
223
  }, undefined>, undefined>;
142
- /** Provenance when repo-sourced: the source that produced this row. */
143
- readonly sourceId: v.NullableSchema<v.StringSchema<undefined>, undefined>;
144
- readonly sourcePath: v.NullableSchema<v.StringSchema<undefined>, undefined>;
145
- /** Head commit the service's directory was pinned to at the last sync. */
146
- readonly pinnedCommit: v.NullableSchema<v.StringSchema<undefined>, undefined>;
147
- readonly createdAt: v.NumberSchema<undefined>;
148
- readonly updatedAt: v.NumberSchema<undefined>;
149
- readonly tier: v.PicklistSchema<["account", "workspace"], undefined>;
224
+ readonly tier: v.PicklistSchema<["builtin", "account", "workspace"], undefined>;
150
225
  }, undefined>;
151
226
  export type ResolvedFoundationalService = v.InferOutput<typeof resolvedFoundationalServiceSchema>;
152
227
  /**
153
- * One SUPPRESSION a board is asserting: an id its workspace tier tombstones, so the account
154
- * service of that id loses the merge.
228
+ * One SUPPRESSION a tier is asserting: an id it tombstones, so the service it inherits under
229
+ * that id a `builtin` the deployment registered, or (for a board) an account service — loses
230
+ * the merge.
155
231
  *
156
232
  * A suppressed id is by construction absent from the merged catalog, which is what makes this a
157
233
  * separate read rather than a flag on it — without it the management surface could offer no way
158
234
  * back, and suppression would be a one-way door.
159
235
  *
160
236
  * `inherited` is the honest half: `false` says the tombstone currently shadows NOTHING (the
161
- * account withdrew the service, or the board deleted its own registration), so a reader does not
162
- * conclude a capability is being withheld when there is none to withhold. The name is the
237
+ * tier below withdrew the service, or this tier deleted its own registration), so a reader does
238
+ * not conclude a capability is being withheld when there is none to withhold. The name is the
163
239
  * inherited service's when there is one and the tombstone's own otherwise, which is empty for a
164
240
  * suppression written against an id this tier never registered.
165
241
  */
@@ -195,6 +271,16 @@ export declare const createFoundationalServiceSchema: v.ObjectSchema<{
195
271
  }, undefined>, undefined>, undefined>;
196
272
  }, undefined>;
197
273
  export type CreateFoundationalServiceInput = v.InferOutput<typeof createFoundationalServiceSchema>;
274
+ /**
275
+ * The ways `definition` fails {@link createFoundationalServiceSchema}, as readable lines — empty
276
+ * when it would be accepted.
277
+ *
278
+ * Exists so a caller that cannot depend on valibot (the backend's kernel and orchestration
279
+ * layers) can still hold a deployment's CODE-registered service to the very schema the REST
280
+ * write boundary applies. Re-stating those rules in a second place is how a code-registered
281
+ * definition ends up accepted where an uploaded one is refused.
282
+ */
283
+ export declare function foundationalServiceDefinitionIssues(definition: unknown): string[];
198
284
  /**
199
285
  * Patch a registered service. `contracts`, when present, REPLACES the whole uploaded set —
200
286
  * a contract document has no meaningful partial edit, and a merge would leave a removed
@@ -1 +1 @@
1
- {"version":3,"file":"foundational-services.d.ts","sourceRoot":"","sources":["../src/foundational-services.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"foundational-services.d.ts","sourceRoot":"","sources":["../src/foundational-services.ts"],"names":[],"mappings":"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"}
@@ -11,21 +11,28 @@ import { fragmentOwnerKindSchema } from './fragment-library.js';
11
11
  // contract module, or a `@lokalise/api-contract` module), supplied either by direct
12
12
  // upload or by pointing at files/folders in a git repo (cached + autorefreshed).
13
13
  //
14
- // Registration is TIERED exactly like the prompt-fragment library: an `account` row is
15
- // shared by every workspace in the account, a `workspace` row wins over it by id. The
16
- // resolved catalog is what the Architect sees; the contract BODIES are read lazily,
17
- // only for the services the Architect declared, and only by the downstream kinds that
18
- // need them.
14
+ // Registration is TIERED exactly like the prompt-fragment library: a `builtin` definition
15
+ // registered in code by the deployment is shared by every account, an `account` row wins
16
+ // over it, and a `workspace` row wins over both. The resolved catalog is what the Architect
17
+ // sees; the contract BODIES are read lazily, only for the services the Architect declared,
18
+ // and only by the downstream kinds that need them.
19
19
  // ---------------------------------------------------------------------------
20
20
  /** Which scope owns a foundational service / source: an account, or a workspace. */
21
21
  export const foundationalServiceOwnerKindSchema = fragmentOwnerKindSchema;
22
- /** The tier a resolved catalog entry originated from, lowest-precedence first. */
23
- export const foundationalServiceTierSchema = v.picklist(['account', 'workspace']);
24
22
  /**
25
- * The API-contract document formats the catalog accepts. Each is stored verbatim as text;
26
- * only OpenAPI is additionally PARSED (into an operation index the lazy read renders as a
27
- * compact summary) because the other two are TypeScript modules, which cannot be evaluated
28
- * in a Worker isolate and are handed to the agent as source.
23
+ * The tier a resolved catalog entry originated from, lowest-precedence first.
24
+ *
25
+ * `builtin` is the DEPLOYMENT's own tier: services a deployment registers in code on the
26
+ * app-owned `FoundationalServiceRegistry`, exactly as it registers pipelines or task types.
27
+ * It carries no rows, so it is present from a workspace's first request and cannot drift from
28
+ * the definitions; an account or workspace row of the same id still wins over it, and a
29
+ * tombstone at either tier suppresses it.
30
+ */
31
+ export const foundationalServiceTierSchema = v.picklist(['builtin', 'account', 'workspace']);
32
+ /**
33
+ * The API-contract document formats the catalog accepts. Each is stored verbatim as text and
34
+ * additionally INDEXED into operation names where the format allows it — see
35
+ * {@link operationsAreIndexable}, which is the one place that judgement lives.
29
36
  */
30
37
  export const apiContractFormatSchema = v.picklist([
31
38
  /** An OpenAPI 3.x document, JSON or YAML. */
@@ -35,6 +42,73 @@ export const apiContractFormatSchema = v.picklist([
35
42
  /** A module built on `@lokalise/api-contract` (`buildPayloadRoute` / `buildGetRoute` …). */
36
43
  'lokalise-api-contract',
37
44
  ]);
45
+ /**
46
+ * Whether an operation index can be derived from a document of this format at all.
47
+ *
48
+ * This is what keeps "this interface declares no operations" apart from "this platform does not
49
+ * read this format": both render as an empty `operations` list, they need opposite reactions
50
+ * from whoever reads the catalog, and collapsing them tells an Architect that a fully-specified
51
+ * service offers nothing. Every surface that renders an operation list branches on it — the
52
+ * agent-facing catalog and the SPA's manifest row alike — so the two cannot disagree.
53
+ *
54
+ * `lokalise-api-contract` is false because its route builders' shapes are not pinned down here
55
+ * and a partial guess at them would be reported as fact. Adding an extractor for it means
56
+ * flipping this and nothing else.
57
+ */
58
+ export function operationsAreIndexable(format) {
59
+ return format === 'openapi' || format === 'toad-contract';
60
+ }
61
+ /**
62
+ * The capability tag a foundational service must carry to be selectable as a binary-output
63
+ * step's STORAGE target (enforced at run admission — see `docs/initiatives/
64
+ * binary-output-foundational-storage.md`).
65
+ *
66
+ * It lives here, on the wire, rather than in the kernel alone because the people who need to
67
+ * spell it right are OUTSIDE the backend: a deployment registering its estate, and the SPA
68
+ * rendering the picker. A client that cannot import the vocabulary re-declares it, and the
69
+ * failure of a re-declaration is silent — `asset_storage` registers cleanly and surfaces much
70
+ * later as a refused run.
71
+ */
72
+ export const ASSET_STORAGE_CAPABILITY = 'asset-storage';
73
+ /**
74
+ * The CONVENTIONAL tag for a service that can scope a generation — an inventory answering
75
+ * "what entities exist, which lack an asset, how is each described". Deliberately NOT enforced
76
+ * (any service with a readable contract can inform scope), but still reserved: a picker orders
77
+ * by it, so a typo silently loses the ordering rather than failing.
78
+ */
79
+ export const GENERATION_CONTEXT_CAPABILITY = 'generation-context';
80
+ /**
81
+ * Capability tags the PLATFORM assigns meaning to. Everything else is free-form org taxonomy
82
+ * and stays that way — this list is not a closed vocabulary, it is the set of spellings a
83
+ * registrant must not miss by a character.
84
+ */
85
+ export const RESERVED_CAPABILITY_TAGS = [
86
+ ASSET_STORAGE_CAPABILITY,
87
+ GENERATION_CONTEXT_CAPABILITY,
88
+ ];
89
+ /**
90
+ * The reserved tag `tag` was plainly TRYING to be, when it is not that tag exactly — else null.
91
+ *
92
+ * Capability tags are free-form strings, which is right (an org's taxonomy is its own) and is
93
+ * also why `asset_storage` / `Asset-Storage` / `assetstorage` register without complaint and
94
+ * fail a run hours later as `not_storage_capable`. Comparing on a form with separators and case
95
+ * removed catches exactly the near-misses and nothing else: a genuinely different tag does not
96
+ * collide with a reserved one under it.
97
+ *
98
+ * The caller REFUSES on a hit rather than silently canonicalising, because a registrant who
99
+ * meant a tag of their own under a colliding spelling must learn that the platform reads it as
100
+ * reserved, and a quiet rewrite of someone's taxonomy is its own surprise.
101
+ */
102
+ export function reservedCapabilityNearMiss(tag) {
103
+ if (RESERVED_CAPABILITY_TAGS.includes(tag))
104
+ return null;
105
+ const normalized = normalizeCapabilityTag(tag);
106
+ return (RESERVED_CAPABILITY_TAGS.find((reserved) => normalizeCapabilityTag(reserved) === normalized) ??
107
+ null);
108
+ }
109
+ function normalizeCapabilityTag(tag) {
110
+ return tag.toLowerCase().replace(/[\s_-]+/g, '');
111
+ }
38
112
  /**
39
113
  * A contract as the CATALOG lists it — identity, format and SIZE, never the body. This is
40
114
  * what the Architect's catalog carries: enough to decide whether a service is relevant and
@@ -50,14 +124,19 @@ export const apiContractSummarySchema = v.object({
50
124
  /** Repo provenance (`path`), or null when uploaded directly. */
51
125
  path: v.nullable(v.string()),
52
126
  /**
53
- * The operations an OpenAPI document declares (`GET /files/{id}` …), capped. Empty for the
54
- * TypeScript formats, which are not parsed. Cheap enough to ride the catalog and it is what
55
- * makes the catalog actionable — an architect can name the endpoint it intends to call.
127
+ * The operations this document declares (`GET /files/{id}` …), capped. Cheap enough to ride
128
+ * the catalog and it is what makes the catalog actionable an architect can name the
129
+ * endpoint it intends to call.
130
+ *
131
+ * EMPTY means one of two different things and {@link operationsAreIndexable} is what tells
132
+ * them apart: this format is not read at all, or it is and this document declares nothing.
56
133
  */
57
134
  operations: v.array(v.string()),
58
135
  /**
59
- * How many operations were dropped from {@link operations} by the cap. Non-zero says the
60
- * list is a PREFIX, so a reader never concludes the tail does not exist.
136
+ * How many operations the document declares that {@link operations} does NOT list dropped
137
+ * by the cap, or (for a contract MODULE) declared in a shape the static extractor could not
138
+ * read. Non-zero says the list is incomplete, so a reader never concludes the rest does not
139
+ * exist.
61
140
  */
62
141
  omittedOperations: v.number(),
63
142
  });
@@ -89,22 +168,36 @@ export const foundationalServiceSchema = v.object({
89
168
  createdAt: v.number(),
90
169
  updatedAt: v.number(),
91
170
  });
92
- /** A resolved (account ⊕ workspace merged) catalog entry, carrying its winning tier. */
171
+ /**
172
+ * A resolved (builtin ⊕ account ⊕ workspace merged) catalog entry, carrying its winning tier.
173
+ *
174
+ * Deliberately NARROWER than {@link foundationalServiceSchema}: the merged read carries only
175
+ * what every tier can honestly fill. A `builtin` entry is registered in code, so it has no
176
+ * owning scope, no repo provenance and no row timestamps — and the alternative to dropping
177
+ * those fields is filling them with placeholders that read as facts. They remain on the
178
+ * per-tier management read, which is where a stored row's provenance belongs.
179
+ */
93
180
  export const resolvedFoundationalServiceSchema = v.object({
94
- ...foundationalServiceSchema.entries,
181
+ id: v.string(),
182
+ name: v.string(),
183
+ summary: v.string(),
184
+ description: v.string(),
185
+ capabilities: v.array(v.string()),
186
+ contracts: v.array(apiContractSummarySchema),
95
187
  tier: foundationalServiceTierSchema,
96
188
  });
97
189
  /**
98
- * One SUPPRESSION a board is asserting: an id its workspace tier tombstones, so the account
99
- * service of that id loses the merge.
190
+ * One SUPPRESSION a tier is asserting: an id it tombstones, so the service it inherits under
191
+ * that id a `builtin` the deployment registered, or (for a board) an account service — loses
192
+ * the merge.
100
193
  *
101
194
  * A suppressed id is by construction absent from the merged catalog, which is what makes this a
102
195
  * separate read rather than a flag on it — without it the management surface could offer no way
103
196
  * back, and suppression would be a one-way door.
104
197
  *
105
198
  * `inherited` is the honest half: `false` says the tombstone currently shadows NOTHING (the
106
- * account withdrew the service, or the board deleted its own registration), so a reader does not
107
- * conclude a capability is being withheld when there is none to withhold. The name is the
199
+ * tier below withdrew the service, or this tier deleted its own registration), so a reader does
200
+ * not conclude a capability is being withheld when there is none to withhold. The name is the
108
201
  * inherited service's when there is one and the tombstone's own otherwise, which is empty for a
109
202
  * suppression written against an id this tier never registered.
110
203
  */
@@ -132,6 +225,24 @@ export const createFoundationalServiceSchema = v.object({
132
225
  capabilities: v.optional(v.array(v.pipe(v.string(), v.trim(), v.minLength(1), v.maxLength(64)))),
133
226
  contracts: v.optional(v.array(uploadApiContractSchema)),
134
227
  });
228
+ /**
229
+ * The ways `definition` fails {@link createFoundationalServiceSchema}, as readable lines — empty
230
+ * when it would be accepted.
231
+ *
232
+ * Exists so a caller that cannot depend on valibot (the backend's kernel and orchestration
233
+ * layers) can still hold a deployment's CODE-registered service to the very schema the REST
234
+ * write boundary applies. Re-stating those rules in a second place is how a code-registered
235
+ * definition ends up accepted where an uploaded one is refused.
236
+ */
237
+ export function foundationalServiceDefinitionIssues(definition) {
238
+ const parsed = v.safeParse(createFoundationalServiceSchema, definition);
239
+ if (parsed.success)
240
+ return [];
241
+ return parsed.issues.map((issue) => {
242
+ const path = issue.path?.map((segment) => String(segment.key)).join('.');
243
+ return path ? `${path}: ${issue.message}` : issue.message;
244
+ });
245
+ }
135
246
  /**
136
247
  * Patch a registered service. `contracts`, when present, REPLACES the whole uploaded set —
137
248
  * a contract document has no meaningful partial edit, and a merge would leave a removed
@@ -1 +1 @@
1
- {"version":3,"file":"foundational-services.js","sourceRoot":"","sources":["../src/foundational-services.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"foundational-services.js","sourceRoot":"","sources":["../src/foundational-services.ts"],"names":[],"mappings":"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"}
package/dist/github.d.ts CHANGED
@@ -284,4 +284,83 @@ export declare const commentSchema: v.ObjectSchema<{
284
284
  readonly body: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
285
285
  }, undefined>;
286
286
  export type CommentInput = v.InferOutput<typeof commentSchema>;
287
+ /**
288
+ * Three states, never two. `unknown` is a real answer: a probe that could not reach the host
289
+ * must not render as either "protected" or "unprotected", or the report manufactures an
290
+ * all-clear (or a false alarm) out of an outage.
291
+ */
292
+ export declare const branchProtectionStateSchema: v.PicklistSchema<["protected", "unprotected", "unknown"], undefined>;
293
+ export type BranchProtectionStateValue = v.InferOutput<typeof branchProtectionStateSchema>;
294
+ /** Why a state is `unknown`. Kept apart because each needs a different fix. */
295
+ export declare const branchProtectionUnknownReasonSchema: v.PicklistSchema<["branch_not_found", "forbidden", "error"], undefined>;
296
+ /**
297
+ * The protection rule's contents. Present only when the run credential could READ the rule,
298
+ * which needs admin access a minimally-scoped App installation deliberately lacks — so the
299
+ * state above is always answerable and this is not.
300
+ */
301
+ export declare const branchProtectionDetailSchema: v.ObjectSchema<{
302
+ readonly requiresPullRequest: v.BooleanSchema<undefined>;
303
+ readonly requiredApprovingReviewCount: v.NumberSchema<undefined>;
304
+ readonly requiredStatusChecks: v.ArraySchema<v.StringSchema<undefined>, undefined>;
305
+ readonly allowsForcePush: v.BooleanSchema<undefined>;
306
+ }, undefined>;
307
+ export declare const branchProtectionSummarySchema: v.ObjectSchema<{
308
+ readonly state: v.PicklistSchema<["protected", "unprotected", "unknown"], undefined>;
309
+ readonly reason: v.OptionalSchema<v.PicklistSchema<["branch_not_found", "forbidden", "error"], undefined>, undefined>;
310
+ readonly detail: v.OptionalSchema<v.ObjectSchema<{
311
+ readonly requiresPullRequest: v.BooleanSchema<undefined>;
312
+ readonly requiredApprovingReviewCount: v.NumberSchema<undefined>;
313
+ readonly requiredStatusChecks: v.ArraySchema<v.StringSchema<undefined>, undefined>;
314
+ readonly allowsForcePush: v.BooleanSchema<undefined>;
315
+ }, undefined>, undefined>;
316
+ /** Set on a PROTECTED branch whose rule could not be read — a distinct operator situation. */
317
+ readonly detailUnavailable: v.OptionalSchema<v.PicklistSchema<["forbidden", "error"], undefined>, undefined>;
318
+ }, undefined>;
319
+ export type BranchProtectionSummaryView = v.InferOutput<typeof branchProtectionSummarySchema>;
320
+ export declare const repoBranchProtectionSchema: v.ObjectSchema<{
321
+ readonly repoGithubId: v.NumberSchema<undefined>;
322
+ readonly owner: v.StringSchema<undefined>;
323
+ readonly name: v.StringSchema<undefined>;
324
+ readonly defaultBranch: v.StringSchema<undefined>;
325
+ readonly protection: v.ObjectSchema<{
326
+ readonly state: v.PicklistSchema<["protected", "unprotected", "unknown"], undefined>;
327
+ readonly reason: v.OptionalSchema<v.PicklistSchema<["branch_not_found", "forbidden", "error"], undefined>, undefined>;
328
+ readonly detail: v.OptionalSchema<v.ObjectSchema<{
329
+ readonly requiresPullRequest: v.BooleanSchema<undefined>;
330
+ readonly requiredApprovingReviewCount: v.NumberSchema<undefined>;
331
+ readonly requiredStatusChecks: v.ArraySchema<v.StringSchema<undefined>, undefined>;
332
+ readonly allowsForcePush: v.BooleanSchema<undefined>;
333
+ }, undefined>, undefined>;
334
+ /** Set on a PROTECTED branch whose rule could not be read — a distinct operator situation. */
335
+ readonly detailUnavailable: v.OptionalSchema<v.PicklistSchema<["forbidden", "error"], undefined>, undefined>;
336
+ }, undefined>;
337
+ }, undefined>;
338
+ export declare const branchProtectionReportSchema: v.ObjectSchema<{
339
+ /**
340
+ * `unavailable` ⇒ the wired VCS provider cannot answer this at all. Reported as its own
341
+ * state so an empty report never impersonates a clean one.
342
+ */
343
+ readonly capability: v.PicklistSchema<["ok", "unavailable"], undefined>;
344
+ readonly repos: v.ArraySchema<v.ObjectSchema<{
345
+ readonly repoGithubId: v.NumberSchema<undefined>;
346
+ readonly owner: v.StringSchema<undefined>;
347
+ readonly name: v.StringSchema<undefined>;
348
+ readonly defaultBranch: v.StringSchema<undefined>;
349
+ readonly protection: v.ObjectSchema<{
350
+ readonly state: v.PicklistSchema<["protected", "unprotected", "unknown"], undefined>;
351
+ readonly reason: v.OptionalSchema<v.PicklistSchema<["branch_not_found", "forbidden", "error"], undefined>, undefined>;
352
+ readonly detail: v.OptionalSchema<v.ObjectSchema<{
353
+ readonly requiresPullRequest: v.BooleanSchema<undefined>;
354
+ readonly requiredApprovingReviewCount: v.NumberSchema<undefined>;
355
+ readonly requiredStatusChecks: v.ArraySchema<v.StringSchema<undefined>, undefined>;
356
+ readonly allowsForcePush: v.BooleanSchema<undefined>;
357
+ }, undefined>, undefined>;
358
+ /** Set on a PROTECTED branch whose rule could not be read — a distinct operator situation. */
359
+ readonly detailUnavailable: v.OptionalSchema<v.PicklistSchema<["forbidden", "error"], undefined>, undefined>;
360
+ }, undefined>;
361
+ }, undefined>, undefined>;
362
+ /** Linked repositories left unprobed by the fan-out cap — stated, never silently dropped. */
363
+ readonly omittedRepos: v.NumberSchema<undefined>;
364
+ }, undefined>;
365
+ export type BranchProtectionReportView = v.InferOutput<typeof branchProtectionReportSchema>;
287
366
  //# sourceMappingURL=github.d.ts.map