@cat-factory/contracts 0.348.0 → 0.350.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.
@@ -0,0 +1,138 @@
1
+ /** What the assistant can do here, and whether a model is wired to answer at all. */
2
+ export declare const getAssistantCapabilityContract: {
3
+ readonly method: "get";
4
+ readonly pathResolver: () => string;
5
+ readonly responsesByStatusCode: {
6
+ readonly '4xx': import("valibot").ObjectSchema<{
7
+ readonly error: import("valibot").ObjectSchema<{
8
+ readonly code: import("valibot").StringSchema<undefined>;
9
+ readonly message: import("valibot").StringSchema<undefined>;
10
+ readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
11
+ readonly issues: import("valibot").OptionalSchema<import("valibot").ArraySchema<import("valibot").ObjectSchema<{
12
+ readonly path: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
13
+ readonly message: import("valibot").StringSchema<undefined>;
14
+ }, undefined>, undefined>, undefined>;
15
+ }, undefined>;
16
+ }, undefined>;
17
+ readonly '5xx': import("valibot").ObjectSchema<{
18
+ readonly error: import("valibot").ObjectSchema<{
19
+ readonly code: import("valibot").StringSchema<undefined>;
20
+ readonly message: import("valibot").StringSchema<undefined>;
21
+ readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
22
+ readonly issues: import("valibot").OptionalSchema<import("valibot").ArraySchema<import("valibot").ObjectSchema<{
23
+ readonly path: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
24
+ readonly message: import("valibot").StringSchema<undefined>;
25
+ }, undefined>, undefined>, undefined>;
26
+ }, undefined>;
27
+ }, undefined>;
28
+ readonly 200: import("valibot").ObjectSchema<{
29
+ readonly available: import("valibot").BooleanSchema<undefined>;
30
+ readonly actions: import("valibot").ArraySchema<import("valibot").PicklistSchema<["declare-service-dependency", "add-service-from-repo", "create-task-from-issue"], undefined>, undefined>;
31
+ }, undefined>;
32
+ };
33
+ };
34
+ /**
35
+ * Run one turn: read the prompt, pick an action, perform it.
36
+ *
37
+ * `POST` because a turn is expected to CHANGE the board, and 200 rather than 201 because two of
38
+ * its three outcomes create nothing: a status code cannot carry the distinction the outcome
39
+ * variant makes, and 201 on a turn that only asked a question would be a lie the SPA has to
40
+ * ignore anyway.
41
+ */
42
+ export declare const runAssistantTurnContract: {
43
+ readonly method: "post";
44
+ readonly pathResolver: () => string;
45
+ readonly requestBodySchema: import("valibot").VariantSchema<"kind", [import("valibot").ObjectSchema<{
46
+ readonly kind: import("valibot").LiteralSchema<"prompt", undefined>;
47
+ readonly prompt: import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").TrimAction, import("valibot").MinLengthAction<string, 1, undefined>, import("valibot").MaxLengthAction<string, 2000, undefined>]>;
48
+ }, undefined>, import("valibot").ObjectSchema<{
49
+ readonly kind: import("valibot").LiteralSchema<"answer", undefined>;
50
+ readonly answer: import("valibot").ObjectSchema<{
51
+ readonly actionId: import("valibot").PicklistSchema<["declare-service-dependency", "add-service-from-repo", "create-task-from-issue"], undefined>;
52
+ readonly arguments: import("valibot").RecordSchema<import("valibot").StringSchema<undefined>, import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").MaxLengthAction<string, 2000, undefined>]>, undefined>;
53
+ }, undefined>;
54
+ }, undefined>], undefined>;
55
+ readonly responsesByStatusCode: {
56
+ readonly '4xx': import("valibot").ObjectSchema<{
57
+ readonly error: import("valibot").ObjectSchema<{
58
+ readonly code: import("valibot").StringSchema<undefined>;
59
+ readonly message: import("valibot").StringSchema<undefined>;
60
+ readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
61
+ readonly issues: import("valibot").OptionalSchema<import("valibot").ArraySchema<import("valibot").ObjectSchema<{
62
+ readonly path: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
63
+ readonly message: import("valibot").StringSchema<undefined>;
64
+ }, undefined>, undefined>, undefined>;
65
+ }, undefined>;
66
+ }, undefined>;
67
+ readonly '5xx': import("valibot").ObjectSchema<{
68
+ readonly error: import("valibot").ObjectSchema<{
69
+ readonly code: import("valibot").StringSchema<undefined>;
70
+ readonly message: import("valibot").StringSchema<undefined>;
71
+ readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
72
+ readonly issues: import("valibot").OptionalSchema<import("valibot").ArraySchema<import("valibot").ObjectSchema<{
73
+ readonly path: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
74
+ readonly message: import("valibot").StringSchema<undefined>;
75
+ }, undefined>, undefined>, undefined>;
76
+ }, undefined>;
77
+ }, undefined>;
78
+ readonly 200: import("valibot").ObjectSchema<{
79
+ readonly outcome: import("valibot").VariantSchema<"status", [import("valibot").ObjectSchema<{
80
+ readonly status: import("valibot").LiteralSchema<"performed", undefined>;
81
+ readonly result: import("valibot").VariantSchema<"actionId", [import("valibot").ObjectSchema<{
82
+ readonly actionId: import("valibot").LiteralSchema<"declare-service-dependency", undefined>;
83
+ readonly consumer: import("valibot").ObjectSchema<{
84
+ readonly blockId: import("valibot").StringSchema<undefined>;
85
+ readonly title: import("valibot").StringSchema<undefined>;
86
+ }, undefined>;
87
+ readonly provider: import("valibot").ObjectSchema<{
88
+ readonly blockId: import("valibot").StringSchema<undefined>;
89
+ readonly title: import("valibot").StringSchema<undefined>;
90
+ }, undefined>;
91
+ readonly created: import("valibot").BooleanSchema<undefined>;
92
+ }, undefined>, import("valibot").ObjectSchema<{
93
+ readonly actionId: import("valibot").LiteralSchema<"add-service-from-repo", undefined>;
94
+ readonly service: import("valibot").ObjectSchema<{
95
+ readonly blockId: import("valibot").StringSchema<undefined>;
96
+ readonly title: import("valibot").StringSchema<undefined>;
97
+ }, undefined>;
98
+ readonly repo: import("valibot").ObjectSchema<{
99
+ readonly owner: import("valibot").StringSchema<undefined>;
100
+ readonly name: import("valibot").StringSchema<undefined>;
101
+ readonly directory: import("valibot").NullableSchema<import("valibot").StringSchema<undefined>, undefined>;
102
+ }, undefined>;
103
+ readonly created: import("valibot").BooleanSchema<undefined>;
104
+ }, undefined>, import("valibot").ObjectSchema<{
105
+ readonly actionId: import("valibot").LiteralSchema<"create-task-from-issue", undefined>;
106
+ readonly task: import("valibot").ObjectSchema<{
107
+ readonly blockId: import("valibot").StringSchema<undefined>;
108
+ readonly title: import("valibot").StringSchema<undefined>;
109
+ }, undefined>;
110
+ readonly service: import("valibot").ObjectSchema<{
111
+ readonly blockId: import("valibot").StringSchema<undefined>;
112
+ readonly title: import("valibot").StringSchema<undefined>;
113
+ }, undefined>;
114
+ readonly issue: import("valibot").ObjectSchema<{
115
+ readonly source: import("valibot").UnionSchema<[import("valibot").PicklistSchema<readonly ["jira", "github", "linear", "gitlab"], undefined>, import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").RegexAction<string, "Consumer id must be <namespace>:<name> (lowercase a-z0-9, dash-separated)">]>], undefined>;
116
+ readonly externalId: import("valibot").StringSchema<undefined>;
117
+ readonly url: import("valibot").StringSchema<undefined>;
118
+ }, undefined>;
119
+ }, undefined>], undefined>;
120
+ }, undefined>, import("valibot").ObjectSchema<{
121
+ readonly status: import("valibot").LiteralSchema<"needs_input", undefined>;
122
+ readonly actionId: import("valibot").PicklistSchema<["declare-service-dependency", "add-service-from-repo", "create-task-from-issue"], undefined>;
123
+ readonly reason: import("valibot").PicklistSchema<["missing_argument", "invalid_argument", "unknown_service", "ambiguous_service", "unknown_repository", "unreadable_repository_url", "unknown_issue_source", "ambiguous_issue_source", "unresolved_issue_service"], undefined>;
124
+ readonly field: import("valibot").StringSchema<undefined>;
125
+ readonly candidates: import("valibot").ArraySchema<import("valibot").StringSchema<undefined>, undefined>;
126
+ readonly arguments: import("valibot").RecordSchema<import("valibot").StringSchema<undefined>, import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").MaxLengthAction<string, 2000, undefined>]>, undefined>;
127
+ }, undefined>, import("valibot").ObjectSchema<{
128
+ readonly status: import("valibot").LiteralSchema<"declined", undefined>;
129
+ readonly reason: import("valibot").PicklistSchema<["no_matching_action"], undefined>;
130
+ }, undefined>], undefined>;
131
+ readonly model: import("valibot").NullableSchema<import("valibot").ObjectSchema<{
132
+ readonly provider: import("valibot").StringSchema<undefined>;
133
+ readonly model: import("valibot").StringSchema<undefined>;
134
+ }, undefined>, undefined>;
135
+ }, undefined>;
136
+ };
137
+ };
138
+ //# sourceMappingURL=assistant.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assistant.d.ts","sourceRoot":"","sources":["../../src/routes/assistant.ts"],"names":[],"mappings":"AAaA,qFAAqF;AACrF,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAIzC,CAAA;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKnC,CAAA"}
@@ -0,0 +1,28 @@
1
+ import { defineApiContract } from '@toad-contracts/valibot';
2
+ import { assistantCapabilitySchema, assistantTurnInputSchema, assistantTurnSchema, } from '../assistant.js';
3
+ import { errorResponses } from './_shared.js';
4
+ // ---------------------------------------------------------------------------
5
+ // In-app assistant route contracts. Mounted under `/workspaces/:workspaceId`, so the paths here
6
+ // are relative to that prefix. See AssistantController in @cat-factory/server.
7
+ // ---------------------------------------------------------------------------
8
+ /** What the assistant can do here, and whether a model is wired to answer at all. */
9
+ export const getAssistantCapabilityContract = defineApiContract({
10
+ method: 'get',
11
+ pathResolver: () => '/assistant',
12
+ responsesByStatusCode: { 200: assistantCapabilitySchema, ...errorResponses },
13
+ });
14
+ /**
15
+ * Run one turn: read the prompt, pick an action, perform it.
16
+ *
17
+ * `POST` because a turn is expected to CHANGE the board, and 200 rather than 201 because two of
18
+ * its three outcomes create nothing: a status code cannot carry the distinction the outcome
19
+ * variant makes, and 201 on a turn that only asked a question would be a lie the SPA has to
20
+ * ignore anyway.
21
+ */
22
+ export const runAssistantTurnContract = defineApiContract({
23
+ method: 'post',
24
+ pathResolver: () => '/assistant/turns',
25
+ requestBodySchema: assistantTurnInputSchema,
26
+ responsesByStatusCode: { 200: assistantTurnSchema, ...errorResponses },
27
+ });
28
+ //# sourceMappingURL=assistant.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assistant.js","sourceRoot":"","sources":["../../src/routes/assistant.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAC3D,OAAO,EACL,yBAAyB,EACzB,wBAAwB,EACxB,mBAAmB,GACpB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAE7C,8EAA8E;AAC9E,gGAAgG;AAChG,+EAA+E;AAC/E,8EAA8E;AAE9E,qFAAqF;AACrF,MAAM,CAAC,MAAM,8BAA8B,GAAG,iBAAiB,CAAC;IAC9D,MAAM,EAAE,KAAK;IACb,YAAY,EAAE,GAAG,EAAE,CAAC,YAAY;IAChC,qBAAqB,EAAE,EAAE,GAAG,EAAE,yBAAyB,EAAE,GAAG,cAAc,EAAE;CAC7E,CAAC,CAAA;AAEF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,iBAAiB,CAAC;IACxD,MAAM,EAAE,MAAM;IACd,YAAY,EAAE,GAAG,EAAE,CAAC,kBAAkB;IACtC,iBAAiB,EAAE,wBAAwB;IAC3C,qBAAqB,EAAE,EAAE,GAAG,EAAE,mBAAmB,EAAE,GAAG,cAAc,EAAE;CACvE,CAAC,CAAA"}
@@ -1,6 +1,7 @@
1
1
  export * from './_shared.js';
2
2
  export * from './accounts.js';
3
3
  export * from './agent-runs.js';
4
+ export * from './assistant.js';
4
5
  export * from './api-keys.js';
5
6
  export * from './auth.js';
6
7
  export * from './board.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/routes/index.ts"],"names":[],"mappings":"AAGA,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,cAAc,CAAA;AAC5B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,mBAAmB,CAAA;AACjC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,gBAAgB,CAAA;AAC9B,cAAc,oBAAoB,CAAA;AAClC,cAAc,eAAe,CAAA;AAC7B,cAAc,uBAAuB,CAAA;AACrC,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,YAAY,CAAA;AAC1B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,uBAAuB,CAAA;AACrC,cAAc,oBAAoB,CAAA;AAClC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,UAAU,CAAA;AACxB,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,qBAAqB,CAAA;AACnC,cAAc,0BAA0B,CAAA;AACxC,cAAc,aAAa,CAAA;AAC3B,cAAc,kBAAkB,CAAA;AAChC,cAAc,oBAAoB,CAAA;AAClC,cAAc,YAAY,CAAA;AAC1B,cAAc,uBAAuB,CAAA;AACrC,cAAc,oBAAoB,CAAA;AAClC,cAAc,oBAAoB,CAAA;AAClC,cAAc,qBAAqB,CAAA;AACnC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,oBAAoB,CAAA;AAClC,cAAc,aAAa,CAAA;AAC3B,cAAc,oBAAoB,CAAA;AAClC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,yBAAyB,CAAA;AACvC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,cAAc,CAAA;AAC5B,cAAc,uBAAuB,CAAA;AACrC,cAAc,wBAAwB,CAAA;AACtC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,mBAAmB,CAAA;AACjC,cAAc,0BAA0B,CAAA;AACxC,cAAc,sBAAsB,CAAA;AACpC,cAAc,kBAAkB,CAAA;AAChC,cAAc,oBAAoB,CAAA;AAClC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,gBAAgB,CAAA;AAC9B,cAAc,uBAAuB,CAAA;AACrC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,mBAAmB,CAAA;AACjC,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,sBAAsB,CAAA;AACpC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,eAAe,CAAA;AAC7B,cAAc,mBAAmB,CAAA;AACjC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,wBAAwB,CAAA;AACtC,cAAc,mBAAmB,CAAA;AACjC,cAAc,wBAAwB,CAAA;AACtC,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA;AAC5B,cAAc,kBAAkB,CAAA;AAChC,cAAc,eAAe,CAAA;AAC7B,cAAc,oBAAoB,CAAA;AAClC,cAAc,yBAAyB,CAAA;AACvC,cAAc,wBAAwB,CAAA;AACtC,cAAc,yBAAyB,CAAA;AACvC,cAAc,iBAAiB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/routes/index.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@
4
4
  export * from './_shared.js';
5
5
  export * from './accounts.js';
6
6
  export * from './agent-runs.js';
7
+ export * from './assistant.js';
7
8
  export * from './api-keys.js';
8
9
  export * from './auth.js';
9
10
  export * from './board.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/routes/index.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,+EAA+E;AAC/E,oDAAoD;AACpD,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,cAAc,CAAA;AAC5B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,mBAAmB,CAAA;AACjC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,gBAAgB,CAAA;AAC9B,cAAc,oBAAoB,CAAA;AAClC,cAAc,eAAe,CAAA;AAC7B,cAAc,uBAAuB,CAAA;AACrC,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,YAAY,CAAA;AAC1B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,uBAAuB,CAAA;AACrC,cAAc,oBAAoB,CAAA;AAClC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,UAAU,CAAA;AACxB,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,qBAAqB,CAAA;AACnC,cAAc,0BAA0B,CAAA;AACxC,cAAc,aAAa,CAAA;AAC3B,cAAc,kBAAkB,CAAA;AAChC,cAAc,oBAAoB,CAAA;AAClC,cAAc,YAAY,CAAA;AAC1B,cAAc,uBAAuB,CAAA;AACrC,cAAc,oBAAoB,CAAA;AAClC,cAAc,oBAAoB,CAAA;AAClC,cAAc,qBAAqB,CAAA;AACnC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,oBAAoB,CAAA;AAClC,cAAc,aAAa,CAAA;AAC3B,cAAc,oBAAoB,CAAA;AAClC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,yBAAyB,CAAA;AACvC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,cAAc,CAAA;AAC5B,cAAc,uBAAuB,CAAA;AACrC,cAAc,wBAAwB,CAAA;AACtC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,mBAAmB,CAAA;AACjC,cAAc,0BAA0B,CAAA;AACxC,cAAc,sBAAsB,CAAA;AACpC,cAAc,kBAAkB,CAAA;AAChC,cAAc,oBAAoB,CAAA;AAClC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,gBAAgB,CAAA;AAC9B,cAAc,uBAAuB,CAAA;AACrC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,mBAAmB,CAAA;AACjC,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,sBAAsB,CAAA;AACpC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,eAAe,CAAA;AAC7B,cAAc,mBAAmB,CAAA;AACjC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,wBAAwB,CAAA;AACtC,cAAc,mBAAmB,CAAA;AACjC,cAAc,wBAAwB,CAAA;AACtC,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA;AAC5B,cAAc,kBAAkB,CAAA;AAChC,cAAc,eAAe,CAAA;AAC7B,cAAc,oBAAoB,CAAA;AAClC,cAAc,yBAAyB,CAAA;AACvC,cAAc,wBAAwB,CAAA;AACtC,cAAc,yBAAyB,CAAA;AACvC,cAAc,iBAAiB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/routes/index.ts"],"names":[],"mappings":"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"}
@@ -68,4 +68,33 @@ export type ServiceTestSecretsView = v.InferOutput<typeof serviceTestSecretsView
68
68
  * prompt) can list what is configured without decrypting anything.
69
69
  */
70
70
  export declare function serviceTestSecretsSummary(entries: TestSecretEntry[]): TestSecretRef[];
71
+ /**
72
+ * What the platform can say about a service frame's test credentials, as a STATE rather than a
73
+ * list.
74
+ *
75
+ * Three outcomes that a bare `TestSecretRef[]` collapses into one, and the collapse points an
76
+ * operator at the wrong fix:
77
+ *
78
+ * - `resolved`: the sealed store was read. An EMPTY `refs` here means this service genuinely has
79
+ * no test credentials configured on the board, which is a board fact and a board fix.
80
+ * - `unreadable`: credentials may well be configured, and the platform could not open its own
81
+ * sealed store to fetch them (a bad `ENCRYPTION_KEY`, a store that would not answer). The work
82
+ * still runs, because a report naming what was missing is worth more than a refused dispatch,
83
+ * but the agent must be told the PLATFORM failed, or it files an outage as "nobody configured
84
+ * credentials" and sends someone to re-enter secrets that are already there.
85
+ * - `unwired`: this deployment has no sealed credential store at all, so no service on this board
86
+ * can be handed test credentials. A deployment fact, and again not something to fix on the frame.
87
+ *
88
+ * Shared by the tester step and the environment DRY RUN, which is the point: the dry run exists to
89
+ * predict what a tester will be handed, and two states rendered from two shapes would let a dry run
90
+ * report credentials as fine while the tester step is handed nothing.
91
+ */
92
+ export type TestCredentialBrief = {
93
+ status: 'resolved';
94
+ refs: readonly TestSecretRef[];
95
+ } | {
96
+ status: 'unreadable';
97
+ } | {
98
+ status: 'unwired';
99
+ };
71
100
  //# sourceMappingURL=test-secrets.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"test-secrets.d.ts","sourceRoot":"","sources":["../src/test-secrets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAuD5B,eAAO,MAAM,mBAAmB,qaAa/B,CAAA;AAKD;;;;GAIG;AACH,eAAO,MAAM,qBAAqB;;;;aAIhC,CAAA;AACF,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,qBAAqB,CAAC,CAAA;AAEzE;;;;GAIG;AACH,eAAO,MAAM,mBAAmB;;;aAG9B,CAAA;AACF,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAErE;;;;GAIG;AACH,eAAO,MAAM,uBAAuB;;;;yBAAiC,CAAA;AACrE,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,OAAO,GAAG,eAAe,EAAE,CAEtE;AAED,0FAA0F;AAC1F,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;2CAO1C,CAAA;AACD,MAAM,MAAM,6BAA6B,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,8BAA8B,CAAC,CAAA;AAEhG,kGAAkG;AAClG,eAAO,MAAM,4BAA4B;IACvC,uDAAuD;;;;;;aAGvD,CAAA;AACF,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,4BAA4B,CAAC,CAAA;AAEvF;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,aAAa,EAAE,CAErF"}
1
+ {"version":3,"file":"test-secrets.d.ts","sourceRoot":"","sources":["../src/test-secrets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAuD5B,eAAO,MAAM,mBAAmB,qaAa/B,CAAA;AAKD;;;;GAIG;AACH,eAAO,MAAM,qBAAqB;;;;aAIhC,CAAA;AACF,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,qBAAqB,CAAC,CAAA;AAEzE;;;;GAIG;AACH,eAAO,MAAM,mBAAmB;;;aAG9B,CAAA;AACF,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAErE;;;;GAIG;AACH,eAAO,MAAM,uBAAuB;;;;yBAAiC,CAAA;AACrE,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,OAAO,GAAG,eAAe,EAAE,CAEtE;AAED,0FAA0F;AAC1F,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;2CAO1C,CAAA;AACD,MAAM,MAAM,6BAA6B,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,8BAA8B,CAAC,CAAA;AAEhG,kGAAkG;AAClG,eAAO,MAAM,4BAA4B;IACvC,uDAAuD;;;;;;aAGvD,CAAA;AACF,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,4BAA4B,CAAC,CAAA;AAEvF;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,aAAa,EAAE,CAErF;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,MAAM,mBAAmB,GAC3B;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,SAAS,aAAa,EAAE,CAAA;CAAE,GACtD;IAAE,MAAM,EAAE,YAAY,CAAA;CAAE,GACxB;IAAE,MAAM,EAAE,SAAS,CAAA;CAAE,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cat-factory/contracts",
3
- "version": "0.348.0",
3
+ "version": "0.350.0",
4
4
  "description": "Valibot wire contract shared between the Agent Architecture Board frontend and backend.",
5
5
  "repository": {
6
6
  "type": "git",