@cat-factory/contracts 0.318.0 → 0.320.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/dist/binary-generators.d.ts +10 -127
  2. package/dist/binary-generators.d.ts.map +1 -1
  3. package/dist/binary-generators.js +10 -92
  4. package/dist/binary-generators.js.map +1 -1
  5. package/dist/binary-outputs.d.ts +44 -0
  6. package/dist/binary-outputs.d.ts.map +1 -1
  7. package/dist/binary-outputs.js +22 -0
  8. package/dist/binary-outputs.js.map +1 -1
  9. package/dist/capability-credentials.d.ts +142 -2
  10. package/dist/capability-credentials.d.ts.map +1 -1
  11. package/dist/capability-credentials.js +167 -1
  12. package/dist/capability-credentials.js.map +1 -1
  13. package/dist/execution.d.ts +2 -0
  14. package/dist/execution.d.ts.map +1 -1
  15. package/dist/foundational-services.d.ts +88 -2
  16. package/dist/foundational-services.d.ts.map +1 -1
  17. package/dist/foundational-services.js +62 -2
  18. package/dist/foundational-services.js.map +1 -1
  19. package/dist/platform-assets.d.ts +22 -0
  20. package/dist/platform-assets.d.ts.map +1 -1
  21. package/dist/platform-assets.js +24 -0
  22. package/dist/platform-assets.js.map +1 -1
  23. package/dist/public-api.d.ts +31 -0
  24. package/dist/public-api.d.ts.map +1 -1
  25. package/dist/public-api.js +26 -3
  26. package/dist/public-api.js.map +1 -1
  27. package/dist/public-provisioning.d.ts +193 -0
  28. package/dist/public-provisioning.d.ts.map +1 -1
  29. package/dist/public-provisioning.js +161 -0
  30. package/dist/public-provisioning.js.map +1 -1
  31. package/dist/routes/agent-runs.d.ts +2 -0
  32. package/dist/routes/agent-runs.d.ts.map +1 -1
  33. package/dist/routes/bug-hunt.d.ts +2 -0
  34. package/dist/routes/bug-hunt.d.ts.map +1 -1
  35. package/dist/routes/capability-credentials.d.ts +3 -3
  36. package/dist/routes/execution.d.ts +9 -0
  37. package/dist/routes/execution.d.ts.map +1 -1
  38. package/dist/routes/foundational-services.d.ts +38 -2
  39. package/dist/routes/foundational-services.d.ts.map +1 -1
  40. package/dist/routes/human-review.d.ts +1 -0
  41. package/dist/routes/human-review.d.ts.map +1 -1
  42. package/dist/routes/human-test.d.ts +5 -0
  43. package/dist/routes/human-test.d.ts.map +1 -1
  44. package/dist/routes/public-api.d.ts +4 -0
  45. package/dist/routes/public-api.d.ts.map +1 -1
  46. package/dist/routes/public-board.d.ts +4 -0
  47. package/dist/routes/public-board.d.ts.map +1 -1
  48. package/dist/routes/public-provisioning.d.ts +147 -0
  49. package/dist/routes/public-provisioning.d.ts.map +1 -1
  50. package/dist/routes/public-provisioning.js +60 -2
  51. package/dist/routes/public-provisioning.js.map +1 -1
  52. package/dist/routes/runners.d.ts +30 -0
  53. package/dist/routes/runners.d.ts.map +1 -1
  54. package/dist/routes/sandbox.d.ts +20 -10
  55. package/dist/routes/sandbox.d.ts.map +1 -1
  56. package/dist/routes/sandbox.js +12 -2
  57. package/dist/routes/sandbox.js.map +1 -1
  58. package/dist/routes/visual-confirm.d.ts +3 -0
  59. package/dist/routes/visual-confirm.d.ts.map +1 -1
  60. package/dist/routes/workspaces.d.ts +2 -0
  61. package/dist/routes/workspaces.d.ts.map +1 -1
  62. package/dist/runners.d.ts +208 -0
  63. package/dist/runners.d.ts.map +1 -1
  64. package/dist/runners.js +45 -0
  65. package/dist/runners.js.map +1 -1
  66. package/dist/sandbox.d.ts +70 -13
  67. package/dist/sandbox.d.ts.map +1 -1
  68. package/dist/sandbox.js +41 -2
  69. package/dist/sandbox.js.map +1 -1
  70. package/dist/snapshot.d.ts +1 -0
  71. package/dist/snapshot.d.ts.map +1 -1
  72. package/package.json +1 -1
@@ -1,4 +1,5 @@
1
1
  import * as v from 'valibot';
2
+ import { type CapabilityCredential } from './capability-credentials.js';
2
3
  /**
3
4
  * The registry id of the ONE integration the platform itself ships: Google's Gemini image models,
4
5
  * defined in `@cat-factory/binary-generators` and installed by every facade's default registry.
@@ -15,106 +16,23 @@ import * as v from 'valibot';
15
16
  */
16
17
  export declare const NANO_BANANA_GENERATOR_ID = "nano-banana";
17
18
  /**
18
- * ONE credential a generative integration needs, declared by NAME only, never a value.
19
+ * The credential declaration a generative integration uses: the shared
20
+ * {@link capabilityCredentialSchema}, unchanged.
19
21
  *
20
- * The value is resolved per dispatch through the facade-wired `ToolSecretResolver` port (the
21
- * same port a tool server's credentials go through) and written straight onto the job body,
22
- * where the harness injects it into THIS JOB's agent environment. It never reaches
23
- * `AgentRunContext`, a prompt, or the telemetry snapshot: only the key NAME does, because the
24
- * agent has to know which variable to read.
25
- *
26
- * An integration declares a LIST of these ({@link binaryGeneratorDefinitionSchema}'s
27
- * `credentials`), because a vendor's account is not always one string. HTTP Basic over a
28
- * key/secret pair is the ordinary case that breaks a single field, and it is common enough to be
29
- * a shape rather than one vendor's eccentricity. Under one field the two halves have to be
30
- * colon-joined into a single variable, which rotates them together, hands the operator one
31
- * checklist row where their vendor console shows two values, and turns a mis-joined value into a
32
- * 401 indistinguishable from a wrong key.
22
+ * An ALIAS rather than a copy, and named here because the brief, the picker and the checklist all
23
+ * speak of "the integration's credentials". The shape moved out when a foundational STORAGE
24
+ * service needed the same declaration: the two names a credential carries, and the reserved-key
25
+ * and toolchain floors over them, are properties of the injection CHANNEL rather than of what
26
+ * declared it, and a second copy is the first place two declarers could disagree about a reserved
27
+ * key.
33
28
  */
34
29
  export declare const binaryGeneratorCredentialSchema: v.ObjectSchema<{
35
- /**
36
- * The credential's LOOKUP key: what the secret resolver is asked for, and what a workspace
37
- * stores its own value under. Also the ENVIRONMENT VARIABLE the agent reads it from unless
38
- * {@link envName} says otherwise, so it must be a valid POSIX variable name either way: a
39
- * generator declaring `x-rd-token` would resolve fine and then be dropped by the harness's env
40
- * validation, which is a silent "the integration just 401s" at run time.
41
- *
42
- * It may NOT name a variable the platform's own configuration owns
43
- * ({@link isReservedPlatformEnvKey}). The resolver reads the key off the deployment's
44
- * environment and the value is injected into an agent process, so an integration declaring
45
- * `ENCRYPTION_KEY` would hand a prompt-injectable agent the deployment's master sealing key.
46
- * Refused here so a deployment learns at boot, and again at dispatch, since a mothership-mode
47
- * node boot-validates none of the definitions it resolves.
48
- */
49
30
  readonly key: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 128, undefined>, v.RegexAction<string, "must be a valid environment variable name">, v.CheckAction<string, (issue: v.CheckIssue<string>) => string>]>;
50
- /**
51
- * The environment variable the value is injected as, when that differs from {@link key}. This
52
- * is the name the agent is told to read, and it is what a vendor SDK that auto-reads its own
53
- * documented variable needs.
54
- *
55
- * Held to the toolchain rule rather than the reserved-platform one, because it reads nothing:
56
- * the floor above is about what may be READ off the deployment's environment, and an injection
57
- * name only decides what a variable is called inside this job's agent process. That is what lets
58
- * an integration keep a vendor's documented name even when a platform prefix family covers it.
59
- */
60
31
  readonly envName: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 128, undefined>, v.RegexAction<string, "must be a valid environment variable name">, v.CheckAction<string, (issue: v.CheckIssue<string>) => string>]>, undefined>;
61
- /**
62
- * How the integration expects the credential to be presented (`X-RD-Token: <value>`,
63
- * `Authorization: Bearer <value>`). Folded into the brief verbatim: the agent writes the
64
- * request itself, and a key with no stated header is a key it has to guess the use of.
65
- */
66
32
  readonly usage: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MaxLengthAction<string, 400, undefined>]>, undefined>;
67
- /**
68
- * When true (the default), an integration whose credential does not resolve is reported to
69
- * the agent as UNAVAILABLE rather than offered. Set false only for an endpoint that genuinely
70
- * works unauthenticated — an agent handed an API whose first call 401s burns a run
71
- * discovering it.
72
- */
73
33
  readonly required: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
74
34
  }, undefined>;
75
- export type BinaryGeneratorCredential = v.InferOutput<typeof binaryGeneratorCredentialSchema>;
76
- /**
77
- * The two names a credential carries, which is all the fallback below reads.
78
- *
79
- * Structural rather than {@link BinaryGeneratorCredential} itself, because the DISPATCH projection
80
- * carries a narrower shape (kernel's `ResolvedBinaryGeneratorCredential`, which drops `usage` and
81
- * every other prose field the container executor has no use for) and would otherwise have to
82
- * either widen or re-spell the fallback. A parameter type nothing outside the two names can
83
- * satisfy is what makes the "one place" claim below enforceable rather than aspirational.
84
- */
85
- export interface BinaryCredentialNames {
86
- key: string;
87
- envName?: string;
88
- }
89
- /**
90
- * The environment variable one credential arrives as: its {@link BinaryGeneratorCredential.envName}
91
- * when it declares one, else its lookup key.
92
- *
93
- * The ONE place that fallback is written, because three layers apply it (the schema's uniqueness
94
- * check below, the dispatch-time resolver that keys the job body, and the brief that tells the
95
- * agent which variable to read) and a copy that drifted would name a variable that is never set:
96
- * an integration reported as unavailable on every run, with nothing to see at either end.
97
- */
98
- export declare function binaryCredentialInjectionName(credential: BinaryCredentialNames): string;
99
- /**
100
- * The form an injection name is COMPARED in, which is not the form it is injected under.
101
- *
102
- * Case-folded, the same way {@link isReservedPlatformEnvKey} folds the lookup key it screens, and
103
- * for the reason that floor has: environment lookup is case-insensitive on Windows, so `ACME_KEY`
104
- * and `acme_key` are two variables in the declaration and one variable in the process that reads
105
- * them. A rule comparing them exactly would call that pair distinct and let one value overwrite
106
- * the other on the one platform where it matters.
107
- */
108
- export declare function comparableCredentialInjectionName(credential: BinaryCredentialNames): string;
109
- /**
110
- * Whether every credential in a declaration arrives as its own variable.
111
- *
112
- * Exported so the boot check and the schema share one implementation rather than agreeing by
113
- * hand. Duplicate LOOKUP keys are deliberately allowed: an integration wanting one stored value
114
- * delivered under two names is odd but honest, and nothing is lost. A duplicate INJECTION name
115
- * loses a value, which is why only that one is refused.
116
- */
117
- export declare function uniqueCredentialInjectionNames(credentials: readonly BinaryGeneratorCredential[]): boolean;
35
+ export type BinaryGeneratorCredential = CapabilityCredential;
118
36
  /**
119
37
  * HOW an integration is reached, which decides what the rest of the definition may say.
120
38
  *
@@ -238,44 +156,9 @@ export declare const binaryGeneratorDefinitionSchema: v.SchemaWithPipe<readonly
238
156
  * half of a pair.
239
157
  */
240
158
  readonly credentials: v.OptionalSchema<v.SchemaWithPipe<readonly [v.ArraySchema<v.ObjectSchema<{
241
- /**
242
- * The credential's LOOKUP key: what the secret resolver is asked for, and what a workspace
243
- * stores its own value under. Also the ENVIRONMENT VARIABLE the agent reads it from unless
244
- * {@link envName} says otherwise, so it must be a valid POSIX variable name either way: a
245
- * generator declaring `x-rd-token` would resolve fine and then be dropped by the harness's env
246
- * validation, which is a silent "the integration just 401s" at run time.
247
- *
248
- * It may NOT name a variable the platform's own configuration owns
249
- * ({@link isReservedPlatformEnvKey}). The resolver reads the key off the deployment's
250
- * environment and the value is injected into an agent process, so an integration declaring
251
- * `ENCRYPTION_KEY` would hand a prompt-injectable agent the deployment's master sealing key.
252
- * Refused here so a deployment learns at boot, and again at dispatch, since a mothership-mode
253
- * node boot-validates none of the definitions it resolves.
254
- */
255
159
  readonly key: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 128, undefined>, v.RegexAction<string, "must be a valid environment variable name">, v.CheckAction<string, (issue: v.CheckIssue<string>) => string>]>;
256
- /**
257
- * The environment variable the value is injected as, when that differs from {@link key}. This
258
- * is the name the agent is told to read, and it is what a vendor SDK that auto-reads its own
259
- * documented variable needs.
260
- *
261
- * Held to the toolchain rule rather than the reserved-platform one, because it reads nothing:
262
- * the floor above is about what may be READ off the deployment's environment, and an injection
263
- * name only decides what a variable is called inside this job's agent process. That is what lets
264
- * an integration keep a vendor's documented name even when a platform prefix family covers it.
265
- */
266
160
  readonly envName: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 128, undefined>, v.RegexAction<string, "must be a valid environment variable name">, v.CheckAction<string, (issue: v.CheckIssue<string>) => string>]>, undefined>;
267
- /**
268
- * How the integration expects the credential to be presented (`X-RD-Token: <value>`,
269
- * `Authorization: Bearer <value>`). Folded into the brief verbatim: the agent writes the
270
- * request itself, and a key with no stated header is a key it has to guess the use of.
271
- */
272
161
  readonly usage: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MaxLengthAction<string, 400, undefined>]>, undefined>;
273
- /**
274
- * When true (the default), an integration whose credential does not resolve is reported to
275
- * the agent as UNAVAILABLE rather than offered. Set false only for an endpoint that genuinely
276
- * works unauthenticated — an agent handed an API whose first call 401s burns a run
277
- * discovering it.
278
- */
279
162
  readonly required: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
280
163
  }, undefined>, undefined>, v.MaxLengthAction<{
281
164
  key: string;
@@ -1 +1 @@
1
- {"version":3,"file":"binary-generators.d.ts","sourceRoot":"","sources":["../src/binary-generators.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAkC5B;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,wBAAwB,gBAAgB,CAAA;AAUrD;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,+BAA+B;IAC1C;;;;;;;;;;;;;OAaG;;IAYH;;;;;;;;;OASG;;IAcH;;;;OAIG;;IAEH;;;;;OAKG;;aAEH,CAAA;AACF,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,+BAA+B,CAAC,CAAA;AAE7F;;;;;;;;GAQG;AACH,MAAM,WAAW,qBAAqB;IACpC,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED;;;;;;;;GAQG;AACH,wBAAgB,6BAA6B,CAAC,UAAU,EAAE,qBAAqB,GAAG,MAAM,CAEvF;AAED;;;;;;;;GAQG;AACH,wBAAgB,iCAAiC,CAAC,UAAU,EAAE,qBAAqB,GAAG,MAAM,CAE3F;AAED;;;;;;;GAOG;AACH,wBAAgB,8BAA8B,CAC5C,WAAW,EAAE,SAAS,yBAAyB,EAAE,GAChD,OAAO,CAGT;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,8BAA8B,iDAAiC,CAAA;AAC5E,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,8BAA8B,CAAC,CAAA;AAE3F;;;;;;;GAOG;AACH,eAAO,MAAM,+BAA+B;IAExC,iFAAiF;;;IAGjF,2DAA2D;;IAE3D;;;OAGG;;IAEH;;;OAGG;;IAEH;;;;OAIG;;IAEH;;;;;;;;;;;;;;OAcG;;IAEH;;;;;;;;;;;;;;OAcG;;;;;;;;;;;;;;;IAEH;;;;OAIG;;IAEH;;;;OAIG;;IAEH;;;;;;;;;;;;;;;OAeG;;QArOL;;;;;;;;;;;;;WAaG;;QAYH;;;;;;;;;WASG;;QAcH;;;;WAIG;;QAEH;;;;;WAKG;;;;;;;;;;;;;IA2LD;;;;OAIG;;;;;;;IAEH;;;OAGG;;IAEH;;;;;;;;OAQG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iHA0BN,CAAA;AACD,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,+BAA+B,CAAC,CAAA;AAE7F;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE;IAAE,SAAS,CAAC,EAAE,wBAAwB,CAAA;CAAE,GAAG,OAAO,CAE7F;AAED;;;;;;;;GAQG;AACH;;;;;;;;;;GAUG;AACH,eAAO,MAAM,+BAA+B;;;;IAI1C,0FAA0F;;IAE1F,gGAAgG;;IAEhG;;;;;;;;;OASG;;IAEH;;;;;;OAMG;;;;;;;;;;;;;;;IAEH;;;;;;;;OAQG;;;aAGH,CAAA;AACF,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,+BAA+B,CAAC,CAAA;AAE7F,wBAAgB,+BAA+B,CAAC,UAAU,EAAE,OAAO,GAAG,MAAM,EAAE,CAO7E"}
1
+ {"version":3,"file":"binary-generators.d.ts","sourceRoot":"","sources":["../src/binary-generators.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAC5B,OAAO,EACL,KAAK,oBAAoB,EAG1B,MAAM,6BAA6B,CAAA;AA4BpC;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,wBAAwB,gBAAgB,CAAA;AAUrD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,+BAA+B;;;;;aAA6B,CAAA;AACzE,MAAM,MAAM,yBAAyB,GAAG,oBAAoB,CAAA;AAE5D;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,8BAA8B,iDAAiC,CAAA;AAC5E,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,8BAA8B,CAAC,CAAA;AAE3F;;;;;;;GAOG;AACH,eAAO,MAAM,+BAA+B;IAExC,iFAAiF;;;IAGjF,2DAA2D;;IAE3D;;;OAGG;;IAEH;;;OAGG;;IAEH;;;;OAIG;;IAEH;;;;;;;;;;;;;;OAcG;;IAEH;;;;;;;;;;;;;;OAcG;;;;;;;;;;;;;;;IAEH;;;;OAIG;;IAEH;;;;OAIG;;IAEH;;;;;;;;;;;;;;;OAeG;;;;;;;;;;;;;;;;;IAiBH;;;;OAIG;;;;;;;IAEH;;;OAGG;;IAEH;;;;;;;;OAQG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iHA0BN,CAAA;AACD,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,+BAA+B,CAAC,CAAA;AAE7F;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE;IAAE,SAAS,CAAC,EAAE,wBAAwB,CAAA;CAAE,GAAG,OAAO,CAE7F;AAED;;;;;;;;GAQG;AACH;;;;;;;;;;GAUG;AACH,eAAO,MAAM,+BAA+B;;;;IAI1C,0FAA0F;;IAE1F,gGAAgG;;IAEhG;;;;;;;;;OASG;;IAEH;;;;;;OAMG;;;;;;;;;;;;;;;IAEH;;;;;;;;OAQG;;;aAGH,CAAA;AACF,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,+BAA+B,CAAC,CAAA;AAE7F,wBAAgB,+BAA+B,CAAC,UAAU,EAAE,OAAO,GAAG,MAAM,EAAE,CAO7E"}
@@ -1,8 +1,8 @@
1
1
  import * as v from 'valibot';
2
+ import { capabilityCredentialSchema, uniqueCredentialInjectionNames, } from './capability-credentials.js';
2
3
  import { binaryGeneratorAcceptsSchema, binaryGeneratorCapabilitySchema, } from './binary-capabilities.js';
3
4
  import { binaryModalitySchema, mediaTypeSchema } from './binary-modalities.js';
4
5
  import { uploadApiContractSchema } from './foundational-services.js';
5
- import { isReservedPlatformEnvKey, isToolchainEnvName, reservedEnvKeyMessage, toolchainEnvNameMessage, } from './reserved-env-keys.js';
6
6
  // ---------------------------------------------------------------------------
7
7
  // Wire vocabulary for GENERATIVE BINARY INTEGRATIONS — the third-party (or in-house) APIs a
8
8
  // binary-generating agent kind calls to PRODUCE its deliverable: an image generator, a
@@ -39,99 +39,17 @@ import { isReservedPlatformEnvKey, isToolchainEnvName, reservedEnvKeyMessage, to
39
39
  export const NANO_BANANA_GENERATOR_ID = 'nano-banana';
40
40
  const slug = v.pipe(v.string(), v.trim(), v.minLength(1), v.maxLength(64), v.regex(/^[a-z0-9][a-z0-9-]*$/, 'must be a lower-kebab slug'));
41
41
  /**
42
- * ONE credential a generative integration needs, declared by NAME only, never a value.
42
+ * The credential declaration a generative integration uses: the shared
43
+ * {@link capabilityCredentialSchema}, unchanged.
43
44
  *
44
- * The value is resolved per dispatch through the facade-wired `ToolSecretResolver` port (the
45
- * same port a tool server's credentials go through) and written straight onto the job body,
46
- * where the harness injects it into THIS JOB's agent environment. It never reaches
47
- * `AgentRunContext`, a prompt, or the telemetry snapshot: only the key NAME does, because the
48
- * agent has to know which variable to read.
49
- *
50
- * An integration declares a LIST of these ({@link binaryGeneratorDefinitionSchema}'s
51
- * `credentials`), because a vendor's account is not always one string. HTTP Basic over a
52
- * key/secret pair is the ordinary case that breaks a single field, and it is common enough to be
53
- * a shape rather than one vendor's eccentricity. Under one field the two halves have to be
54
- * colon-joined into a single variable, which rotates them together, hands the operator one
55
- * checklist row where their vendor console shows two values, and turns a mis-joined value into a
56
- * 401 indistinguishable from a wrong key.
57
- */
58
- export const binaryGeneratorCredentialSchema = v.object({
59
- /**
60
- * The credential's LOOKUP key: what the secret resolver is asked for, and what a workspace
61
- * stores its own value under. Also the ENVIRONMENT VARIABLE the agent reads it from unless
62
- * {@link envName} says otherwise, so it must be a valid POSIX variable name either way: a
63
- * generator declaring `x-rd-token` would resolve fine and then be dropped by the harness's env
64
- * validation, which is a silent "the integration just 401s" at run time.
65
- *
66
- * It may NOT name a variable the platform's own configuration owns
67
- * ({@link isReservedPlatformEnvKey}). The resolver reads the key off the deployment's
68
- * environment and the value is injected into an agent process, so an integration declaring
69
- * `ENCRYPTION_KEY` would hand a prompt-injectable agent the deployment's master sealing key.
70
- * Refused here so a deployment learns at boot, and again at dispatch, since a mothership-mode
71
- * node boot-validates none of the definitions it resolves.
72
- */
73
- key: v.pipe(v.string(), v.trim(), v.minLength(1), v.maxLength(128), v.regex(/^[A-Za-z_][A-Za-z0-9_]*$/, 'must be a valid environment variable name'), v.check((key) => !isReservedPlatformEnvKey(key), (issue) => reservedEnvKeyMessage(String(issue.input)))),
74
- /**
75
- * The environment variable the value is injected as, when that differs from {@link key}. This
76
- * is the name the agent is told to read, and it is what a vendor SDK that auto-reads its own
77
- * documented variable needs.
78
- *
79
- * Held to the toolchain rule rather than the reserved-platform one, because it reads nothing:
80
- * the floor above is about what may be READ off the deployment's environment, and an injection
81
- * name only decides what a variable is called inside this job's agent process. That is what lets
82
- * an integration keep a vendor's documented name even when a platform prefix family covers it.
83
- */
84
- envName: v.optional(v.pipe(v.string(), v.trim(), v.minLength(1), v.maxLength(128), v.regex(/^[A-Za-z_][A-Za-z0-9_]*$/, 'must be a valid environment variable name'), v.check((name) => !isToolchainEnvName(name), (issue) => toolchainEnvNameMessage(String(issue.input))))),
85
- /**
86
- * How the integration expects the credential to be presented (`X-RD-Token: <value>`,
87
- * `Authorization: Bearer <value>`). Folded into the brief verbatim: the agent writes the
88
- * request itself, and a key with no stated header is a key it has to guess the use of.
89
- */
90
- usage: v.optional(v.pipe(v.string(), v.trim(), v.maxLength(400))),
91
- /**
92
- * When true (the default), an integration whose credential does not resolve is reported to
93
- * the agent as UNAVAILABLE rather than offered. Set false only for an endpoint that genuinely
94
- * works unauthenticated — an agent handed an API whose first call 401s burns a run
95
- * discovering it.
96
- */
97
- required: v.optional(v.boolean()),
98
- });
99
- /**
100
- * The environment variable one credential arrives as: its {@link BinaryGeneratorCredential.envName}
101
- * when it declares one, else its lookup key.
102
- *
103
- * The ONE place that fallback is written, because three layers apply it (the schema's uniqueness
104
- * check below, the dispatch-time resolver that keys the job body, and the brief that tells the
105
- * agent which variable to read) and a copy that drifted would name a variable that is never set:
106
- * an integration reported as unavailable on every run, with nothing to see at either end.
107
- */
108
- export function binaryCredentialInjectionName(credential) {
109
- return credential.envName ?? credential.key;
110
- }
111
- /**
112
- * The form an injection name is COMPARED in, which is not the form it is injected under.
113
- *
114
- * Case-folded, the same way {@link isReservedPlatformEnvKey} folds the lookup key it screens, and
115
- * for the reason that floor has: environment lookup is case-insensitive on Windows, so `ACME_KEY`
116
- * and `acme_key` are two variables in the declaration and one variable in the process that reads
117
- * them. A rule comparing them exactly would call that pair distinct and let one value overwrite
118
- * the other on the one platform where it matters.
119
- */
120
- export function comparableCredentialInjectionName(credential) {
121
- return binaryCredentialInjectionName(credential).toUpperCase();
122
- }
123
- /**
124
- * Whether every credential in a declaration arrives as its own variable.
125
- *
126
- * Exported so the boot check and the schema share one implementation rather than agreeing by
127
- * hand. Duplicate LOOKUP keys are deliberately allowed: an integration wanting one stored value
128
- * delivered under two names is odd but honest, and nothing is lost. A duplicate INJECTION name
129
- * loses a value, which is why only that one is refused.
45
+ * An ALIAS rather than a copy, and named here because the brief, the picker and the checklist all
46
+ * speak of "the integration's credentials". The shape moved out when a foundational STORAGE
47
+ * service needed the same declaration: the two names a credential carries, and the reserved-key
48
+ * and toolchain floors over them, are properties of the injection CHANNEL rather than of what
49
+ * declared it, and a second copy is the first place two declarers could disagree about a reserved
50
+ * key.
130
51
  */
131
- export function uniqueCredentialInjectionNames(credentials) {
132
- const names = credentials.map(comparableCredentialInjectionName);
133
- return new Set(names).size === names.length;
134
- }
52
+ export const binaryGeneratorCredentialSchema = capabilityCredentialSchema;
135
53
  /**
136
54
  * HOW an integration is reached, which decides what the rest of the definition may say.
137
55
  *
@@ -1 +1 @@
1
- {"version":3,"file":"binary-generators.js","sourceRoot":"","sources":["../src/binary-generators.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"binary-generators.js","sourceRoot":"","sources":["../src/binary-generators.ts"],"names":[],"mappings":"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"}
@@ -160,6 +160,28 @@ export declare const binaryOutputArtifactSchema: v.ObjectSchema<{
160
160
  * NAMED in the report rather than dropped.
161
161
  */
162
162
  readonly generator: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
163
+ /**
164
+ * What ran over the generated bytes AFTER the integration produced them and BEFORE they were
165
+ * stored, in the agent's own words (`pixel-snapper`, `sharp resize`).
166
+ *
167
+ * A post-processing pass gives an artifact two producers, and {@link generator} can name only
168
+ * one. Both single answers are wrong: naming the integration records a producer of something
169
+ * that is not what is stored (the bytes are not the ones it returned, and neither are the
170
+ * dimensions), and naming nothing loses the vendor attribution the field exists for, along with
171
+ * the spend story behind it. So the delivery gets its own hole rather than a contested one.
172
+ *
173
+ * A FREE STRING rather than a registry reference, deliberately. A post-processor is not a
174
+ * registered thing and must not become one: `binaryGeneratorCapabilitySchema` admits a member
175
+ * only when it partitions an ENDPOINT's request, and a step's choice to snap a render onto a
176
+ * pixel grid is a property of the WORK, whose home is the step's own prompt. There is nothing to
177
+ * check this against, so it is recorded verbatim (capped) and judged by whoever reads the run,
178
+ * exactly as `location` is. It gets no `unknownGenerators`-style report for the same reason.
179
+ *
180
+ * The same epistemic status as everything else the agent declares here, and the same third
181
+ * state: ABSENT means "not stated", which is what every artifact recorded before this field
182
+ * existed says, and is never evidence that nothing ran.
183
+ */
184
+ readonly processedBy: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
163
185
  /**
164
186
  * The CONTENT TYPE of the artifact, DERIVED in code from {@link contentType} — never read off
165
187
  * the model's prose. Absent when no media type was declared, or when the declared one is not
@@ -231,6 +253,28 @@ export declare const binaryOutputReportSchema: v.ObjectSchema<{
231
253
  * NAMED in the report rather than dropped.
232
254
  */
233
255
  readonly generator: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
256
+ /**
257
+ * What ran over the generated bytes AFTER the integration produced them and BEFORE they were
258
+ * stored, in the agent's own words (`pixel-snapper`, `sharp resize`).
259
+ *
260
+ * A post-processing pass gives an artifact two producers, and {@link generator} can name only
261
+ * one. Both single answers are wrong: naming the integration records a producer of something
262
+ * that is not what is stored (the bytes are not the ones it returned, and neither are the
263
+ * dimensions), and naming nothing loses the vendor attribution the field exists for, along with
264
+ * the spend story behind it. So the delivery gets its own hole rather than a contested one.
265
+ *
266
+ * A FREE STRING rather than a registry reference, deliberately. A post-processor is not a
267
+ * registered thing and must not become one: `binaryGeneratorCapabilitySchema` admits a member
268
+ * only when it partitions an ENDPOINT's request, and a step's choice to snap a render onto a
269
+ * pixel grid is a property of the WORK, whose home is the step's own prompt. There is nothing to
270
+ * check this against, so it is recorded verbatim (capped) and judged by whoever reads the run,
271
+ * exactly as `location` is. It gets no `unknownGenerators`-style report for the same reason.
272
+ *
273
+ * The same epistemic status as everything else the agent declares here, and the same third
274
+ * state: ABSENT means "not stated", which is what every artifact recorded before this field
275
+ * existed says, and is never evidence that nothing ran.
276
+ */
277
+ readonly processedBy: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
234
278
  /**
235
279
  * The CONTENT TYPE of the artifact, DERIVED in code from {@link contentType} — never read off
236
280
  * the model's prose. Absent when no media type was declared, or when the declared one is not
@@ -1 +1 @@
1
- {"version":3,"file":"binary-outputs.d.ts","sourceRoot":"","sources":["../src/binary-outputs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAyB5B;;;;;;GAMG;AACH,eAAO,MAAM,wBAAwB;IACnC;;;;OAIG;;IAEH;;;;;;OAMG;;IAEH;;;;;;;;;OASG;;IAEH;;;;;;;;;;OAUG;;IAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAkCG;;IAEH;;;;;;;;;;;;;;;OAeG;;IAEH;;;;;;;;;OASG;;;;;aAEH,CAAA;AACF,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,wBAAwB,CAAC,CAAA;AAE/E,+FAA+F;AAC/F,eAAO,MAAM,0BAA0B;IACrC;;;;;OAKG;;IAEH;;;OAGG;;IAEH,8FAA8F;;IAE9F,uEAAuE;;IAEvE,oDAAoD;;IAEpD;;;;;;;;;;;;;;OAcG;;;;;IAEH;;;;;;OAMG;;IAEH;;;;;OAKG;;aAEH,CAAA;AACF,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,0BAA0B,CAAC,CAAA;AAEnF;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,wBAAwB;;QAnEnC;;;;;WAKG;;QAEH;;;WAGG;;QAEH,8FAA8F;;QAE9F,uEAAuE;;QAEvE,oDAAoD;;QAEpD;;;;;;;;;;;;;;WAcG;;;;;QAEH;;;;;;WAMG;;QAEH;;;;;WAKG;;;IAsBH,0FAA0F;;IAE1F;;;;;;OAMG;;IAEH;;;;;;;;OAQG;;IAEH,2FAA2F;;IAE3F,qDAAqD;;IAErD,0FAA0F;;IAE1F,qEAAqE;;aAErE,CAAA;AACF,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,wBAAwB,CAAC,CAAA"}
1
+ {"version":3,"file":"binary-outputs.d.ts","sourceRoot":"","sources":["../src/binary-outputs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAyB5B;;;;;;GAMG;AACH,eAAO,MAAM,wBAAwB;IACnC;;;;OAIG;;IAEH;;;;;;OAMG;;IAEH;;;;;;;;;OASG;;IAEH;;;;;;;;;;OAUG;;IAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAkCG;;IAEH;;;;;;;;;;;;;;;OAeG;;IAEH;;;;;;;;;OASG;;;;;aAEH,CAAA;AACF,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,wBAAwB,CAAC,CAAA;AAE/E,+FAA+F;AAC/F,eAAO,MAAM,0BAA0B;IACrC;;;;;OAKG;;IAEH;;;OAGG;;IAEH,8FAA8F;;IAE9F,uEAAuE;;IAEvE,oDAAoD;;IAEpD;;;;;;;;;;;;;;OAcG;;;;;IAEH;;;;;;OAMG;;IAEH;;;;;;;;;;;;;;;;;;;;OAoBG;;IAEH;;;;;OAKG;;aAEH,CAAA;AACF,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,0BAA0B,CAAC,CAAA;AAEnF;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,wBAAwB;;QAzFnC;;;;;WAKG;;QAEH;;;WAGG;;QAEH,8FAA8F;;QAE9F,uEAAuE;;QAEvE,oDAAoD;;QAEpD;;;;;;;;;;;;;;WAcG;;;;;QAEH;;;;;;WAMG;;QAEH;;;;;;;;;;;;;;;;;;;;WAoBG;;QAEH;;;;;WAKG;;;IAsBH,0FAA0F;;IAE1F;;;;;;OAMG;;IAEH;;;;;;;;OAQG;;IAEH,2FAA2F;;IAE3F,qDAAqD;;IAErD,0FAA0F;;IAE1F,qEAAqE;;aAErE,CAAA;AACF,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,wBAAwB,CAAC,CAAA"}
@@ -168,6 +168,28 @@ export const binaryOutputArtifactSchema = v.object({
168
168
  * NAMED in the report rather than dropped.
169
169
  */
170
170
  generator: v.optional(v.string()),
171
+ /**
172
+ * What ran over the generated bytes AFTER the integration produced them and BEFORE they were
173
+ * stored, in the agent's own words (`pixel-snapper`, `sharp resize`).
174
+ *
175
+ * A post-processing pass gives an artifact two producers, and {@link generator} can name only
176
+ * one. Both single answers are wrong: naming the integration records a producer of something
177
+ * that is not what is stored (the bytes are not the ones it returned, and neither are the
178
+ * dimensions), and naming nothing loses the vendor attribution the field exists for, along with
179
+ * the spend story behind it. So the delivery gets its own hole rather than a contested one.
180
+ *
181
+ * A FREE STRING rather than a registry reference, deliberately. A post-processor is not a
182
+ * registered thing and must not become one: `binaryGeneratorCapabilitySchema` admits a member
183
+ * only when it partitions an ENDPOINT's request, and a step's choice to snap a render onto a
184
+ * pixel grid is a property of the WORK, whose home is the step's own prompt. There is nothing to
185
+ * check this against, so it is recorded verbatim (capped) and judged by whoever reads the run,
186
+ * exactly as `location` is. It gets no `unknownGenerators`-style report for the same reason.
187
+ *
188
+ * The same epistemic status as everything else the agent declares here, and the same third
189
+ * state: ABSENT means "not stated", which is what every artifact recorded before this field
190
+ * existed says, and is never evidence that nothing ran.
191
+ */
192
+ processedBy: v.optional(v.string()),
171
193
  /**
172
194
  * The CONTENT TYPE of the artifact, DERIVED in code from {@link contentType} — never read off
173
195
  * the model's prose. Absent when no media type was declared, or when the declared one is not
@@ -1 +1 @@
1
- {"version":3,"file":"binary-outputs.js","sourceRoot":"","sources":["../src/binary-outputs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"binary-outputs.js","sourceRoot":"","sources":["../src/binary-outputs.ts"],"names":[],"mappings":"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"}
@@ -74,7 +74,7 @@ export declare const capabilityCredentialStatusSchema: v.ObjectSchema<{
74
74
  readonly key: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 128, undefined>, v.RegexAction<string, "must be a valid environment variable name (letters, digits and underscores, not starting with a digit)">, v.CheckAction<string, (issue: v.CheckIssue<string>) => string>, v.CheckAction<string, (issue: v.CheckIssue<string>) => string>]>;
75
75
  /** Which capabilities want it — id + label, so the UI can say who a key is for. */
76
76
  readonly declaredBy: v.ArraySchema<v.ObjectSchema<{
77
- readonly subject: v.PicklistSchema<["tool-server", "binary-generator"], undefined>;
77
+ readonly subject: v.PicklistSchema<["tool-server", "binary-generator", "foundational-service"], undefined>;
78
78
  readonly id: v.StringSchema<undefined>;
79
79
  readonly label: v.StringSchema<undefined>;
80
80
  /** The definition's own note on how the value is presented, when it states one. */
@@ -127,7 +127,7 @@ export declare const capabilityCredentialsViewSchema: v.ObjectSchema<{
127
127
  readonly key: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 128, undefined>, v.RegexAction<string, "must be a valid environment variable name (letters, digits and underscores, not starting with a digit)">, v.CheckAction<string, (issue: v.CheckIssue<string>) => string>, v.CheckAction<string, (issue: v.CheckIssue<string>) => string>]>;
128
128
  /** Which capabilities want it — id + label, so the UI can say who a key is for. */
129
129
  readonly declaredBy: v.ArraySchema<v.ObjectSchema<{
130
- readonly subject: v.PicklistSchema<["tool-server", "binary-generator"], undefined>;
130
+ readonly subject: v.PicklistSchema<["tool-server", "binary-generator", "foundational-service"], undefined>;
131
131
  readonly id: v.StringSchema<undefined>;
132
132
  readonly label: v.StringSchema<undefined>;
133
133
  /** The definition's own note on how the value is presented, when it states one. */
@@ -182,4 +182,144 @@ export declare const capabilityCredentialEntriesSchema: v.ArraySchema<v.ObjectSc
182
182
  export declare function parseCapabilityCredentialEntries(raw: unknown): CapabilityCredentialEntry[];
183
183
  /** The non-secret summary persisted beside the sealed values, so a read decrypts nothing. */
184
184
  export declare function capabilityCredentialsSummary(entries: CapabilityCredentialEntry[], updatedAt: number): CapabilityCredentialRef[];
185
+ /**
186
+ * ONE credential a registered capability needs, declared by NAME only, never a value.
187
+ *
188
+ * The value is resolved per dispatch through the facade-wired `ToolSecretResolver` port (the
189
+ * same port a tool server's credentials go through) and written straight onto the job body,
190
+ * where the harness injects it into THIS JOB's agent environment. It never reaches
191
+ * `AgentRunContext`, a prompt, or the telemetry snapshot: only the key NAME does, because the
192
+ * agent has to know which variable to read.
193
+ *
194
+ * A declarer states a LIST of these, because a vendor's account is not always one string. HTTP Basic over a
195
+ * key/secret pair is the ordinary case that breaks a single field, and it is common enough to be
196
+ * a shape rather than one vendor's eccentricity. Under one field the two halves have to be
197
+ * colon-joined into a single variable, which rotates them together, hands the operator one
198
+ * checklist row where their vendor console shows two values, and turns a mis-joined value into a
199
+ * 401 indistinguishable from a wrong key.
200
+ */
201
+ export declare const capabilityCredentialSchema: v.ObjectSchema<{
202
+ /**
203
+ * The credential's LOOKUP key: what the secret resolver is asked for, and what a workspace
204
+ * stores its own value under. Also the ENVIRONMENT VARIABLE the agent reads it from unless
205
+ * {@link envName} says otherwise, so it must be a valid POSIX variable name either way: a
206
+ * generator declaring `x-rd-token` would resolve fine and then be dropped by the harness's env
207
+ * validation, which is a silent "the integration just 401s" at run time.
208
+ *
209
+ * It may NOT name a variable the platform's own configuration owns
210
+ * ({@link isReservedPlatformEnvKey}). The resolver reads the key off the deployment's
211
+ * environment and the value is injected into an agent process, so an integration declaring
212
+ * `ENCRYPTION_KEY` would hand a prompt-injectable agent the deployment's master sealing key.
213
+ * Refused here so a deployment learns at boot, and again at dispatch, since a mothership-mode
214
+ * node boot-validates none of the definitions it resolves.
215
+ */
216
+ readonly key: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 128, undefined>, v.RegexAction<string, "must be a valid environment variable name">, v.CheckAction<string, (issue: v.CheckIssue<string>) => string>]>;
217
+ /**
218
+ * The environment variable the value is injected as, when that differs from {@link key}. This
219
+ * is the name the agent is told to read, and it is what a vendor SDK that auto-reads its own
220
+ * documented variable needs.
221
+ *
222
+ * Held to the toolchain rule rather than the reserved-platform one, because it reads nothing:
223
+ * the floor above is about what may be READ off the deployment's environment, and an injection
224
+ * name only decides what a variable is called inside this job's agent process. That is what lets
225
+ * a declaration keep a vendor's documented name even when a platform prefix family covers it.
226
+ */
227
+ readonly envName: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 128, undefined>, v.RegexAction<string, "must be a valid environment variable name">, v.CheckAction<string, (issue: v.CheckIssue<string>) => string>]>, undefined>;
228
+ /**
229
+ * How the capability expects the credential to be presented (`X-RD-Token: <value>`,
230
+ * `Authorization: Bearer <value>`). Folded into the brief verbatim: the agent writes the
231
+ * request itself, and a key with no stated header is a key it has to guess the use of.
232
+ */
233
+ readonly usage: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MaxLengthAction<string, 400, undefined>]>, undefined>;
234
+ /**
235
+ * When true (the default), a capability whose credential does not resolve is reported to
236
+ * the agent as UNAVAILABLE rather than offered. Set false only for an endpoint that genuinely
237
+ * works unauthenticated — an agent handed an API whose first call 401s burns a run
238
+ * discovering it.
239
+ */
240
+ readonly required: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
241
+ }, undefined>;
242
+ export type CapabilityCredential = v.InferOutput<typeof capabilityCredentialSchema>;
243
+ /**
244
+ * The two names a credential carries, which is all the fallback below reads.
245
+ *
246
+ * Structural rather than {@link CapabilityCredential} itself, because the DISPATCH projection
247
+ * carries a narrower shape (kernel's `ResolvedBinaryGeneratorCredential`, which drops `usage` and
248
+ * every other prose field the container executor has no use for) and would otherwise have to
249
+ * either widen or re-spell the fallback. A parameter type nothing outside the two names can
250
+ * satisfy is what makes the "one place" claim below enforceable rather than aspirational.
251
+ */
252
+ export interface CapabilityCredentialNames {
253
+ key: string;
254
+ envName?: string;
255
+ }
256
+ /**
257
+ * The environment variable one credential arrives as: its {@link CapabilityCredential.envName}
258
+ * when it declares one, else its lookup key.
259
+ *
260
+ * The ONE place that fallback is written, because three layers apply it (the schemas' uniqueness
261
+ * checks, the dispatch-time resolvers that key the job body, and the briefs that tell the
262
+ * agent which variable to read) and a copy that drifted would name a variable that is never set:
263
+ * a capability reported as unavailable on every run, with nothing to see at either end.
264
+ */
265
+ export declare function credentialInjectionName(credential: CapabilityCredentialNames): string;
266
+ /**
267
+ * The form an injection name is COMPARED in, which is not the form it is injected under.
268
+ *
269
+ * Case-folded, the same way {@link isReservedPlatformEnvKey} folds the lookup key it screens, and
270
+ * for the reason that floor has: environment lookup is case-insensitive on Windows, so `ACME_KEY`
271
+ * and `acme_key` are two variables in the declaration and one variable in the process that reads
272
+ * them. A rule comparing them exactly would call that pair distinct and let one value overwrite
273
+ * the other on the one platform where it matters.
274
+ */
275
+ export declare function comparableCredentialInjectionName(credential: CapabilityCredentialNames): string;
276
+ /**
277
+ * Whether every credential in a declaration arrives as its own variable.
278
+ *
279
+ * Exported so the boot checks and the schemas share one implementation rather than agreeing by
280
+ * hand. Duplicate LOOKUP keys are deliberately allowed: a capability wanting one stored value
281
+ * delivered under two names is odd but honest, and nothing is lost. A duplicate INJECTION name
282
+ * loses a value, which is why only that one is refused.
283
+ */
284
+ export declare function uniqueCredentialInjectionNames(credentials: readonly CapabilityCredentialNames[]): boolean;
285
+ /** One capability that claims environment variables, as {@link credentialInjectionCollisions} reads it. */
286
+ export interface CredentialInjectionClaimant {
287
+ /**
288
+ * How this claimant is NAMED in the fault message, qualified by what it is: `integration "x"`,
289
+ * `service "y"`. The rule spans registries, so an id alone would leave an operator hunting for
290
+ * which registry to edit.
291
+ */
292
+ owner: string;
293
+ credentials?: readonly CapabilityCredentialNames[];
294
+ }
295
+ /** One environment variable two or more claimants want to hold different values. */
296
+ export interface CredentialInjectionCollision {
297
+ /** The variable, in the spelling the deployment wrote (comparison is case-folded; injection is not). */
298
+ envName: string;
299
+ message: string;
300
+ }
301
+ /**
302
+ * The rule that spans DECLARATIONS: two capabilities may not inject different values into one
303
+ * environment variable.
304
+ *
305
+ * The across-declaration twin of {@link uniqueCredentialInjectionNames}, and stated over CLAIMANTS
306
+ * rather than over any one registry's definition type because the variable is the shared resource
307
+ * and the registries cannot see each other. A generative integration, a foundational service and
308
+ * an MCP tool server are registered independently, and the pair only meets when a step selects
309
+ * both, so a rule scoped to one registry answers a question narrower than the fault: the same
310
+ * collision graded twice, once per registry, produces two remediations for one variable.
311
+ *
312
+ * A SHARED name is legitimate and common, because one vendor behind an image endpoint and a music
313
+ * endpoint is one account: what makes that safe is that both look the value up under the SAME key,
314
+ * so whichever resolves first sets the variable to exactly what the other wanted. Different keys
315
+ * behind one name is the opposite, and there is no arbitration that makes it right. Serving the
316
+ * first claimant sets the variable the second capability's brief tells the agent to read, so the
317
+ * agent authenticates one thing with another's credential; withholding it (what dispatch does,
318
+ * since a mothership node validates nothing) costs both capabilities every run. Only a
319
+ * disagreement about the VALUE is reported.
320
+ *
321
+ * Takes the claimants that PARSED. Reading a malformed definition's credentials would restate a
322
+ * fault already reported as a second, more confusing one.
323
+ */
324
+ export declare function credentialInjectionCollisions(claimants: readonly CredentialInjectionClaimant[]): CredentialInjectionCollision[];
185
325
  //# sourceMappingURL=capability-credentials.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"capability-credentials.d.ts","sourceRoot":"","sources":["../src/capability-credentials.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAiC5B;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,6BAA6B,2ZAiBzC,CAAA;AAED,8FAA8F;AAC9F,eAAO,MAAM,+BAA+B;;;aAG1C,CAAA;AACF,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,+BAA+B,CAAC,CAAA;AAE7F;;;;;;;;;;GAUG;AACH,eAAO,MAAM,6BAA6B;;aAExC,CAAA;AACF,MAAM,MAAM,4BAA4B,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,6BAA6B,CAAC,CAAA;AAE9F;;;;;;;;GAQG;AACH,eAAO,MAAM,6BAA6B;;IAExC,2FAA2F;;aAE3F,CAAA;AACF,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,6BAA6B,CAAC,CAAA;AAEzF;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,gCAAgC;;IAE3C,mFAAmF;;;;;QAM/E,mFAAmF;;;IAIvF,uEAAuE;;IAEvE,iDAAiD;;IAEjD,6EAA6E;;aAE7E,CAAA;AACF,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,gCAAgC,CAAC,CAAA;AAE/F;;;GAGG;AACH,eAAO,MAAM,0BAA0B,MAAM,CAAA;AAE7C,wFAAwF;AACxF,eAAO,MAAM,iCAAiC;;;;;;;;;;;;;;;wDAU7C,CAAA;AACD,MAAM,MAAM,gCAAgC,GAAG,CAAC,CAAC,WAAW,CAC1D,OAAO,iCAAiC,CACzC,CAAA;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,+BAA+B;;;QApD1C,mFAAmF;;;;;YAM/E,mFAAmF;;;QAIvF,uEAAuE;;QAEvE,iDAAiD;;QAEjD,6EAA6E;;;IAwC7E,qDAAqD;;;QA5ErD,2FAA2F;;;IA8E3F;;;;;;;;;;;;;OAaG;;IAEH;;;;;;;;;OASG;;aAEH,CAAA;AACF,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,+BAA+B,CAAC,CAAA;AAE7F,gGAAgG;AAChG,eAAO,MAAM,iCAAiC;;;yBAA2C,CAAA;AACzF,wBAAgB,gCAAgC,CAAC,GAAG,EAAE,OAAO,GAAG,yBAAyB,EAAE,CAE1F;AAED,6FAA6F;AAC7F,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,yBAAyB,EAAE,EACpC,SAAS,EAAE,MAAM,GAChB,uBAAuB,EAAE,CAE3B"}
1
+ {"version":3,"file":"capability-credentials.d.ts","sourceRoot":"","sources":["../src/capability-credentials.ts"],"names":[],"mappings":"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"}