@boxxy/server 0.0.1 → 0.1.3
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.
- package/README.md +57 -5
- package/dist/auth/authorize-call.d.ts +11 -0
- package/dist/auth/is-browser-request.d.ts +1 -0
- package/dist/auth/pick-request-scope.d.ts +9 -0
- package/dist/config/pick-server-secrets.d.ts +16 -0
- package/dist/config/read-caller-proof.d.ts +10 -0
- package/dist/config/read-server-config.d.ts +9 -0
- package/dist/config/read-trusted-issuers.d.ts +8 -0
- package/dist/config/server-config-schema.d.ts +42 -0
- package/dist/create-capacity-backoff.d.ts +2 -0
- package/dist/handlers/api.d.ts +1683 -0
- package/dist/handlers/attempt-handlers.d.ts +130 -0
- package/dist/handlers/build-owner-fact.d.ts +3 -0
- package/dist/handlers/item-handlers.d.ts +168 -0
- package/dist/handlers/outbox-handlers.d.ts +7 -0
- package/dist/handlers/plan-handlers.d.ts +62 -0
- package/dist/handlers/read-item-ids.d.ts +10 -0
- package/dist/handlers/relation-handlers.d.ts +41 -0
- package/dist/handlers/report-handlers.d.ts +102 -0
- package/dist/handlers/rules-handlers.d.ts +20 -0
- package/dist/handlers/runner-handlers.d.ts +65 -0
- package/dist/handlers/to-wire-json.d.ts +5 -0
- package/dist/handlers/write-levers.d.ts +11 -0
- package/dist/index.d.ts +12 -0
- package/dist/main.d.ts +1 -0
- package/dist/no-caller-proof.d.ts +2 -0
- package/dist/outbox/create-off-outbox.d.ts +3 -0
- package/dist/outbox/start-outbox-sender.d.ts +10 -0
- package/dist/read-limited-request.d.ts +1 -0
- package/dist/rules/create-rules-holder.d.ts +20 -0
- package/dist/rules/load-server-rules.d.ts +7 -0
- package/dist/rules/read-rules-checkout.d.ts +9 -0
- package/dist/serve-api.d.ts +50 -0
- package/dist/start-server.d.ts +18 -0
- package/dist/test-utils/build-mcp-request.d.ts +8 -0
- package/dist/test-utils/build-rpc-request.d.ts +7 -0
- package/dist/test-utils/build-session-input.d.ts +1 -0
- package/dist/test-utils/create-fake-caller-proof.d.ts +5 -0
- package/dist/test-utils/create-test-server.d.ts +30 -0
- package/dist/test-utils/list-owner-procedures.d.ts +5 -0
- package/dist/test-utils/read-mcp-answer.d.ts +11 -0
- package/dist/test-utils/wait-for.d.ts +1 -0
- package/dist/tick/run-tick.d.ts +24 -0
- package/dist/tick/start-tick-loop.d.ts +12 -0
- package/dist/types.d.ts +41 -0
- package/package.json +48 -4
- package/src/auth/authorize-call.ts +50 -0
- package/src/auth/is-browser-request.ts +8 -0
- package/src/auth/pick-request-scope.ts +37 -0
- package/src/config/pick-server-secrets.ts +48 -0
- package/src/config/read-caller-proof.ts +36 -0
- package/src/config/read-server-config.ts +41 -0
- package/src/config/read-trusted-issuers.ts +60 -0
- package/src/config/server-config-schema.ts +71 -0
- package/src/create-capacity-backoff.ts +18 -0
- package/src/handlers/api.ts +23 -0
- package/src/handlers/attempt-handlers.ts +244 -0
- package/src/handlers/build-owner-fact.ts +20 -0
- package/src/handlers/item-handlers.ts +462 -0
- package/src/handlers/outbox-handlers.ts +15 -0
- package/src/handlers/plan-handlers.ts +75 -0
- package/src/handlers/read-item-ids.ts +31 -0
- package/src/handlers/relation-handlers.ts +143 -0
- package/src/handlers/report-handlers.ts +112 -0
- package/src/handlers/rules-handlers.ts +46 -0
- package/src/handlers/runner-handlers.ts +117 -0
- package/src/handlers/to-wire-json.ts +20 -0
- package/src/handlers/write-levers.ts +53 -0
- package/src/index.ts +12 -0
- package/src/main.ts +31 -0
- package/src/no-caller-proof.ts +7 -0
- package/src/outbox/create-off-outbox.ts +21 -0
- package/src/outbox/start-outbox-sender.ts +89 -0
- package/src/read-limited-request.ts +43 -0
- package/src/rules/create-rules-holder.ts +107 -0
- package/src/rules/load-server-rules.ts +24 -0
- package/src/rules/read-rules-checkout.ts +65 -0
- package/src/serve-api.ts +178 -0
- package/src/start-server.ts +308 -0
- package/src/test-utils/build-mcp-request.ts +34 -0
- package/src/test-utils/build-rpc-request.ts +23 -0
- package/src/test-utils/build-session-input.ts +16 -0
- package/src/test-utils/create-fake-caller-proof.ts +18 -0
- package/src/test-utils/create-test-server.ts +142 -0
- package/src/test-utils/list-owner-procedures.ts +38 -0
- package/src/test-utils/read-mcp-answer.ts +26 -0
- package/src/test-utils/wait-for.ts +14 -0
- package/src/tick/run-tick.ts +212 -0
- package/src/tick/start-tick-loop.ts +46 -0
- package/src/types.ts +86 -0
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import type { AttemptRow } from '@boxxy/model';
|
|
2
|
+
import type { ProvenCall } from '../types.ts';
|
|
3
|
+
export declare const attemptHandlers: {
|
|
4
|
+
current: import("@orpc/server").ImplementedProcedure<import("../types.ts").RequestContext & object, {
|
|
5
|
+
call: ProvenCall | null;
|
|
6
|
+
}, import("zod").ZodObject<{}, import("zod/v4/core").$strip>, import("zod").ZodDiscriminatedUnion<[import("zod").ZodObject<{
|
|
7
|
+
kind: import("zod").ZodLiteral<"attempt">;
|
|
8
|
+
attempt: import("zod").ZodType<AttemptRow, unknown, import("zod/v4/core").$ZodTypeInternals<AttemptRow, unknown>>;
|
|
9
|
+
item: import("zod").ZodType<import("@boxxy/model").ItemView, unknown, import("zod/v4/core").$ZodTypeInternals<import("@boxxy/model").ItemView, unknown>>;
|
|
10
|
+
input: import("zod").ZodJSONSchema;
|
|
11
|
+
closeOut: import("zod").ZodObject<{
|
|
12
|
+
phase: import("zod").ZodString;
|
|
13
|
+
schema: import("zod").ZodJSONSchema;
|
|
14
|
+
outcomes: import("zod").ZodArray<import("zod").ZodString>;
|
|
15
|
+
}, import("zod/v4/core").$strip>;
|
|
16
|
+
skills: import("zod").ZodObject<{
|
|
17
|
+
pin: import("zod").ZodNullable<import("zod").ZodObject<{
|
|
18
|
+
source: import("zod").ZodString;
|
|
19
|
+
ref: import("zod").ZodString;
|
|
20
|
+
}, import("zod/v4/core").$strip>>;
|
|
21
|
+
names: import("zod").ZodArray<import("zod").ZodString>;
|
|
22
|
+
}, import("zod/v4/core").$strip>;
|
|
23
|
+
notes: import("zod").ZodArray<import("zod").ZodObject<{
|
|
24
|
+
seq: import("zod").ZodNumber;
|
|
25
|
+
text: import("zod").ZodString;
|
|
26
|
+
at: import("zod").ZodNumber;
|
|
27
|
+
}, import("zod/v4/core").$strip>>;
|
|
28
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
29
|
+
kind: import("zod").ZodLiteral<"refused">;
|
|
30
|
+
reason: import("zod").ZodEnum<{
|
|
31
|
+
"no-attempt": "no-attempt";
|
|
32
|
+
"not-current": "not-current";
|
|
33
|
+
}>;
|
|
34
|
+
}, import("zod/v4/core").$strip>], "kind">, Record<never, never>>;
|
|
35
|
+
closeOut: import("@orpc/server").ImplementedProcedure<import("../types.ts").RequestContext & object, {
|
|
36
|
+
call: ProvenCall | null;
|
|
37
|
+
}, import("zod").ZodObject<{
|
|
38
|
+
session: import("zod").ZodObject<{
|
|
39
|
+
attempt: import("zod").ZodString;
|
|
40
|
+
agentSession: import("zod").ZodOptional<import("zod").ZodString>;
|
|
41
|
+
product: import("zod").ZodOptional<import("zod").ZodEnum<{
|
|
42
|
+
claude_code: "claude_code";
|
|
43
|
+
codex: "codex";
|
|
44
|
+
}>>;
|
|
45
|
+
}, import("zod/v4/core").$strip>;
|
|
46
|
+
closeOut: import("zod").ZodUnknown;
|
|
47
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodType<import("@boxxy/model").CloseOutAnswer, unknown, import("zod/v4/core").$ZodTypeInternals<import("@boxxy/model").CloseOutAnswer, unknown>>, Record<never, never>>;
|
|
48
|
+
evidence: import("@orpc/server").ImplementedProcedure<import("../types.ts").RequestContext & object, {
|
|
49
|
+
call: ProvenCall | null;
|
|
50
|
+
}, import("zod").ZodObject<{
|
|
51
|
+
session: import("zod").ZodObject<{
|
|
52
|
+
attempt: import("zod").ZodString;
|
|
53
|
+
agentSession: import("zod").ZodOptional<import("zod").ZodString>;
|
|
54
|
+
product: import("zod").ZodOptional<import("zod").ZodEnum<{
|
|
55
|
+
claude_code: "claude_code";
|
|
56
|
+
codex: "codex";
|
|
57
|
+
}>>;
|
|
58
|
+
}, import("zod/v4/core").$strip>;
|
|
59
|
+
kind: import("zod").ZodEnum<{
|
|
60
|
+
"ci-run": "ci-run";
|
|
61
|
+
"live-check": "live-check";
|
|
62
|
+
test: "test";
|
|
63
|
+
}>;
|
|
64
|
+
ref: import("zod").ZodString;
|
|
65
|
+
observed: import("zod").ZodOptional<import("zod").ZodString>;
|
|
66
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodDiscriminatedUnion<[import("zod").ZodObject<{
|
|
67
|
+
kind: import("zod").ZodLiteral<"recorded">;
|
|
68
|
+
factId: import("zod").ZodString;
|
|
69
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
70
|
+
kind: import("zod").ZodLiteral<"refused">;
|
|
71
|
+
reason: import("zod").ZodEnum<{
|
|
72
|
+
"no-attempt": "no-attempt";
|
|
73
|
+
"not-current": "not-current";
|
|
74
|
+
}>;
|
|
75
|
+
}, import("zod/v4/core").$strip>], "kind">, Record<never, never>>;
|
|
76
|
+
bindSession: import("@orpc/server").ImplementedProcedure<import("../types.ts").RequestContext & object, {
|
|
77
|
+
call: ProvenCall | null;
|
|
78
|
+
}, import("zod").ZodObject<{
|
|
79
|
+
session: import("zod").ZodObject<{
|
|
80
|
+
attempt: import("zod").ZodNonOptional<import("zod").ZodString>;
|
|
81
|
+
agentSession: import("zod").ZodNonOptional<import("zod").ZodOptional<import("zod").ZodString>>;
|
|
82
|
+
product: import("zod").ZodNonOptional<import("zod").ZodOptional<import("zod").ZodEnum<{
|
|
83
|
+
claude_code: "claude_code";
|
|
84
|
+
codex: "codex";
|
|
85
|
+
}>>>;
|
|
86
|
+
}, import("zod/v4/core").$strip>;
|
|
87
|
+
seenAt: import("zod").ZodISODateTime;
|
|
88
|
+
missingSkills: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
|
|
89
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodDiscriminatedUnion<[import("zod").ZodObject<{
|
|
90
|
+
kind: import("zod").ZodEnum<{
|
|
91
|
+
bound: "bound";
|
|
92
|
+
held: "held";
|
|
93
|
+
"no-attempt": "no-attempt";
|
|
94
|
+
"not-current": "not-current";
|
|
95
|
+
"skill-missing": "skill-missing";
|
|
96
|
+
}>;
|
|
97
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
98
|
+
kind: import("zod").ZodLiteral<"fault">;
|
|
99
|
+
fault: import("zod").ZodLiteral<"agent-session-owned">;
|
|
100
|
+
holder: import("zod").ZodString;
|
|
101
|
+
}, import("zod/v4/core").$strip>], "kind">, Record<never, never>>;
|
|
102
|
+
recordPullRequest: import("@orpc/server").ImplementedProcedure<import("../types.ts").RequestContext & object, {
|
|
103
|
+
call: ProvenCall | null;
|
|
104
|
+
}, import("zod").ZodObject<{
|
|
105
|
+
session: import("zod").ZodObject<{
|
|
106
|
+
attempt: import("zod").ZodString;
|
|
107
|
+
agentSession: import("zod").ZodOptional<import("zod").ZodString>;
|
|
108
|
+
product: import("zod").ZodOptional<import("zod").ZodEnum<{
|
|
109
|
+
claude_code: "claude_code";
|
|
110
|
+
codex: "codex";
|
|
111
|
+
}>>;
|
|
112
|
+
}, import("zod/v4/core").$strip>;
|
|
113
|
+
url: import("zod").ZodURL;
|
|
114
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodDiscriminatedUnion<[import("zod").ZodObject<{
|
|
115
|
+
kind: import("zod").ZodLiteral<"linked">;
|
|
116
|
+
repo: import("zod").ZodString;
|
|
117
|
+
number: import("zod").ZodNumber;
|
|
118
|
+
repeat: import("zod").ZodBoolean;
|
|
119
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
120
|
+
kind: import("zod").ZodLiteral<"retry">;
|
|
121
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
122
|
+
kind: import("zod").ZodLiteral<"refused">;
|
|
123
|
+
reason: import("zod").ZodEnum<{
|
|
124
|
+
"linked-elsewhere": "linked-elsewhere";
|
|
125
|
+
"no-attempt": "no-attempt";
|
|
126
|
+
"not-a-pull-request-url": "not-a-pull-request-url";
|
|
127
|
+
"not-current": "not-current";
|
|
128
|
+
}>;
|
|
129
|
+
}, import("zod/v4/core").$strip>], "kind">, Record<never, never>>;
|
|
130
|
+
};
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
import type { ItemView, NoteRow, RelationRow } from '@boxxy/model';
|
|
2
|
+
export declare const itemHandlers: {
|
|
3
|
+
file: import("@orpc/server").ImplementedProcedure<import("../types.ts").RequestContext & object, {
|
|
4
|
+
call: import("../types.ts").ProvenCall | null;
|
|
5
|
+
}, import("zod").ZodObject<{
|
|
6
|
+
repo: import("zod").ZodString;
|
|
7
|
+
title: import("zod").ZodString;
|
|
8
|
+
outcome: import("zod").ZodString;
|
|
9
|
+
acceptance: import("zod").ZodDefault<import("zod").ZodArray<import("zod").ZodString>>;
|
|
10
|
+
kind: import("zod").ZodOptional<import("zod").ZodString>;
|
|
11
|
+
designMode: import("zod").ZodOptional<import("zod").ZodEnum<{
|
|
12
|
+
agent: "agent";
|
|
13
|
+
attended: "attended";
|
|
14
|
+
}>>;
|
|
15
|
+
blockedBy: import("zod").ZodDefault<import("zod").ZodArray<import("zod").ZodString>>;
|
|
16
|
+
labels: import("zod").ZodDefault<import("zod").ZodArray<import("zod").ZodString>>;
|
|
17
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
18
|
+
item: import("zod").ZodString;
|
|
19
|
+
}, import("zod/v4/core").$strip>, {
|
|
20
|
+
NOT_FOUND: {
|
|
21
|
+
message: string;
|
|
22
|
+
data: import("zod").ZodObject<{
|
|
23
|
+
item: import("zod").ZodString;
|
|
24
|
+
}, import("zod/v4/core").$strip>;
|
|
25
|
+
};
|
|
26
|
+
}>;
|
|
27
|
+
edit: import("@orpc/server").ImplementedProcedure<import("../types.ts").RequestContext & object, {
|
|
28
|
+
call: import("../types.ts").ProvenCall | null;
|
|
29
|
+
}, import("zod").ZodObject<{
|
|
30
|
+
item: import("zod").ZodString;
|
|
31
|
+
title: import("zod").ZodOptional<import("zod").ZodString>;
|
|
32
|
+
outcome: import("zod").ZodOptional<import("zod").ZodString>;
|
|
33
|
+
acceptance: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodObject<{
|
|
34
|
+
id: import("zod").ZodOptional<import("zod").ZodString>;
|
|
35
|
+
text: import("zod").ZodString;
|
|
36
|
+
}, import("zod/v4/core").$strip>>>;
|
|
37
|
+
designMode: import("zod").ZodOptional<import("zod").ZodEnum<{
|
|
38
|
+
agent: "agent";
|
|
39
|
+
attended: "attended";
|
|
40
|
+
}>>;
|
|
41
|
+
labels: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
|
|
42
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
43
|
+
item: import("zod").ZodString;
|
|
44
|
+
}, import("zod/v4/core").$strip>, {
|
|
45
|
+
NOT_FOUND: {
|
|
46
|
+
message: string;
|
|
47
|
+
data: import("zod").ZodObject<{
|
|
48
|
+
item: import("zod").ZodString;
|
|
49
|
+
}, import("zod/v4/core").$strip>;
|
|
50
|
+
};
|
|
51
|
+
}>;
|
|
52
|
+
close: import("@orpc/server").ImplementedProcedure<import("../types.ts").RequestContext & object, {
|
|
53
|
+
call: import("../types.ts").ProvenCall | null;
|
|
54
|
+
}, import("zod").ZodObject<{
|
|
55
|
+
item: import("zod").ZodString;
|
|
56
|
+
reason: import("zod").ZodString;
|
|
57
|
+
of: import("zod").ZodOptional<import("zod").ZodString>;
|
|
58
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
59
|
+
item: import("zod").ZodString;
|
|
60
|
+
ended: import("zod").ZodArray<import("zod").ZodObject<{
|
|
61
|
+
attempt: import("zod").ZodString;
|
|
62
|
+
how: import("zod").ZodEnum<{
|
|
63
|
+
closing: "closing";
|
|
64
|
+
settled: "settled";
|
|
65
|
+
}>;
|
|
66
|
+
}, import("zod/v4/core").$strip>>;
|
|
67
|
+
}, import("zod/v4/core").$strip>, {
|
|
68
|
+
NOT_FOUND: {
|
|
69
|
+
message: string;
|
|
70
|
+
data: import("zod").ZodObject<{
|
|
71
|
+
item: import("zod").ZodString;
|
|
72
|
+
}, import("zod/v4/core").$strip>;
|
|
73
|
+
};
|
|
74
|
+
}>;
|
|
75
|
+
retry: import("@orpc/server").ImplementedProcedure<import("../types.ts").RequestContext & object, {
|
|
76
|
+
call: import("../types.ts").ProvenCall | null;
|
|
77
|
+
}, import("zod").ZodObject<{
|
|
78
|
+
item: import("zod").ZodString;
|
|
79
|
+
phase: import("zod").ZodOptional<import("zod").ZodString>;
|
|
80
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
81
|
+
lever: import("zod").ZodNumber;
|
|
82
|
+
}, import("zod/v4/core").$strip>, {
|
|
83
|
+
NOT_FOUND: {
|
|
84
|
+
message: string;
|
|
85
|
+
data: import("zod").ZodObject<{
|
|
86
|
+
item: import("zod").ZodString;
|
|
87
|
+
}, import("zod/v4/core").$strip>;
|
|
88
|
+
};
|
|
89
|
+
UNKNOWN_PHASE: {
|
|
90
|
+
message: string;
|
|
91
|
+
};
|
|
92
|
+
}>;
|
|
93
|
+
wake: import("@orpc/server").ImplementedProcedure<import("../types.ts").RequestContext & object, {
|
|
94
|
+
call: import("../types.ts").ProvenCall | null;
|
|
95
|
+
}, import("zod").ZodObject<{
|
|
96
|
+
item: import("zod").ZodString;
|
|
97
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodDiscriminatedUnion<[import("zod").ZodObject<{
|
|
98
|
+
kind: import("zod").ZodLiteral<"requested">;
|
|
99
|
+
attempt: import("zod").ZodString;
|
|
100
|
+
atcSession: import("zod").ZodNullable<import("zod").ZodString>;
|
|
101
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
102
|
+
kind: import("zod").ZodLiteral<"not-sleeping">;
|
|
103
|
+
}, import("zod/v4/core").$strip>], "kind">, {
|
|
104
|
+
NOT_FOUND: {
|
|
105
|
+
message: string;
|
|
106
|
+
data: import("zod").ZodObject<{
|
|
107
|
+
item: import("zod").ZodString;
|
|
108
|
+
}, import("zod/v4/core").$strip>;
|
|
109
|
+
};
|
|
110
|
+
}>;
|
|
111
|
+
note: import("@orpc/server").ImplementedProcedure<import("../types.ts").RequestContext & object, {
|
|
112
|
+
call: import("../types.ts").ProvenCall | null;
|
|
113
|
+
}, import("zod").ZodObject<{
|
|
114
|
+
item: import("zod").ZodString;
|
|
115
|
+
text: import("zod").ZodString;
|
|
116
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
117
|
+
item: import("zod").ZodString;
|
|
118
|
+
seq: import("zod").ZodNumber;
|
|
119
|
+
}, import("zod/v4/core").$strip>, {
|
|
120
|
+
NOT_FOUND: {
|
|
121
|
+
message: string;
|
|
122
|
+
data: import("zod").ZodObject<{
|
|
123
|
+
item: import("zod").ZodString;
|
|
124
|
+
}, import("zod/v4/core").$strip>;
|
|
125
|
+
};
|
|
126
|
+
}>;
|
|
127
|
+
get: import("@orpc/server").ImplementedProcedure<import("../types.ts").RequestContext & object, {
|
|
128
|
+
call: import("../types.ts").ProvenCall | null;
|
|
129
|
+
}, import("zod").ZodObject<{
|
|
130
|
+
item: import("zod").ZodString;
|
|
131
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
132
|
+
item: import("zod").ZodType<ItemView, unknown, import("zod/v4/core").$ZodTypeInternals<ItemView, unknown>>;
|
|
133
|
+
notes: import("zod").ZodArray<import("zod").ZodType<NoteRow, unknown, import("zod/v4/core").$ZodTypeInternals<NoteRow, unknown>>>;
|
|
134
|
+
attempts: import("zod").ZodArray<import("zod").ZodType<import("@boxxy/model").AttemptRow, unknown, import("zod/v4/core").$ZodTypeInternals<import("@boxxy/model").AttemptRow, unknown>>>;
|
|
135
|
+
relations: import("zod").ZodArray<import("zod").ZodType<RelationRow, unknown, import("zod/v4/core").$ZodTypeInternals<RelationRow, unknown>>>;
|
|
136
|
+
evidence: import("zod").ZodArray<import("zod").ZodType<import("@boxxy/model").EvidenceRow, unknown, import("zod/v4/core").$ZodTypeInternals<import("@boxxy/model").EvidenceRow, unknown>>>;
|
|
137
|
+
pullRequests: import("zod").ZodArray<import("zod").ZodType<import("@boxxy/model").PullRequestRow, unknown, import("zod/v4/core").$ZodTypeInternals<import("@boxxy/model").PullRequestRow, unknown>>>;
|
|
138
|
+
}, import("zod/v4/core").$strip>, {
|
|
139
|
+
NOT_FOUND: {
|
|
140
|
+
message: string;
|
|
141
|
+
data: import("zod").ZodObject<{
|
|
142
|
+
item: import("zod").ZodString;
|
|
143
|
+
}, import("zod/v4/core").$strip>;
|
|
144
|
+
};
|
|
145
|
+
}>;
|
|
146
|
+
list: import("@orpc/server").ImplementedProcedure<import("../types.ts").RequestContext & object, {
|
|
147
|
+
call: import("../types.ts").ProvenCall | null;
|
|
148
|
+
}, import("zod").ZodObject<{
|
|
149
|
+
state: import("zod").ZodOptional<import("zod").ZodEnum<{
|
|
150
|
+
archived: "archived";
|
|
151
|
+
blocked: "blocked";
|
|
152
|
+
done: "done";
|
|
153
|
+
idea: "idea";
|
|
154
|
+
ready: "ready";
|
|
155
|
+
running: "running";
|
|
156
|
+
waiting: "waiting";
|
|
157
|
+
}>>;
|
|
158
|
+
repo: import("zod").ZodOptional<import("zod").ZodString>;
|
|
159
|
+
phase: import("zod").ZodOptional<import("zod").ZodString>;
|
|
160
|
+
text: import("zod").ZodOptional<import("zod").ZodString>;
|
|
161
|
+
label: import("zod").ZodOptional<import("zod").ZodString>;
|
|
162
|
+
limit: import("zod").ZodDefault<import("zod").ZodNumber>;
|
|
163
|
+
after: import("zod").ZodOptional<import("zod").ZodString>;
|
|
164
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
165
|
+
items: import("zod").ZodArray<import("zod").ZodType<ItemView, unknown, import("zod/v4/core").$ZodTypeInternals<ItemView, unknown>>>;
|
|
166
|
+
next: import("zod").ZodNullable<import("zod").ZodString>;
|
|
167
|
+
}, import("zod/v4/core").$strip>, Record<never, never>>;
|
|
168
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare const outboxHandlers: {
|
|
2
|
+
retry: import("@orpc/server").ImplementedProcedure<import("../types.ts").RequestContext & object, {
|
|
3
|
+
call: import("../types.ts").ProvenCall | null;
|
|
4
|
+
}, import("zod").ZodObject<{}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
5
|
+
unparked: import("zod").ZodNumber;
|
|
6
|
+
}, import("zod/v4/core").$strip>, Record<never, never>>;
|
|
7
|
+
};
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
export declare const planHandlers: {
|
|
2
|
+
defer: import("@orpc/server").ImplementedProcedure<import("../types.ts").RequestContext & object, {
|
|
3
|
+
call: import("../types.ts").ProvenCall | null;
|
|
4
|
+
}, import("zod").ZodObject<{
|
|
5
|
+
item: import("zod").ZodString;
|
|
6
|
+
until: import("zod").ZodOptional<import("zod").ZodISODateTime>;
|
|
7
|
+
reason: import("zod").ZodString;
|
|
8
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
9
|
+
lever: import("zod").ZodNumber;
|
|
10
|
+
}, import("zod/v4/core").$strip>, {
|
|
11
|
+
NOT_FOUND: {
|
|
12
|
+
message: string;
|
|
13
|
+
data: import("zod").ZodObject<{
|
|
14
|
+
item: import("zod").ZodString;
|
|
15
|
+
}, import("zod/v4/core").$strip>;
|
|
16
|
+
};
|
|
17
|
+
}>;
|
|
18
|
+
undefer: import("@orpc/server").ImplementedProcedure<import("../types.ts").RequestContext & object, {
|
|
19
|
+
call: import("../types.ts").ProvenCall | null;
|
|
20
|
+
}, import("zod").ZodObject<{
|
|
21
|
+
item: import("zod").ZodString;
|
|
22
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
23
|
+
lever: import("zod").ZodNumber;
|
|
24
|
+
}, import("zod/v4/core").$strip>, {
|
|
25
|
+
NOT_FOUND: {
|
|
26
|
+
message: string;
|
|
27
|
+
data: import("zod").ZodObject<{
|
|
28
|
+
item: import("zod").ZodString;
|
|
29
|
+
}, import("zod/v4/core").$strip>;
|
|
30
|
+
};
|
|
31
|
+
}>;
|
|
32
|
+
expedite: import("@orpc/server").ImplementedProcedure<import("../types.ts").RequestContext & object, {
|
|
33
|
+
call: import("../types.ts").ProvenCall | null;
|
|
34
|
+
}, import("zod").ZodObject<{
|
|
35
|
+
items: import("zod").ZodArray<import("zod").ZodString>;
|
|
36
|
+
reason: import("zod").ZodString;
|
|
37
|
+
expires: import("zod").ZodOptional<import("zod").ZodISODateTime>;
|
|
38
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
39
|
+
levers: import("zod").ZodArray<import("zod").ZodNumber>;
|
|
40
|
+
}, import("zod/v4/core").$strip>, {
|
|
41
|
+
NOT_FOUND: {
|
|
42
|
+
message: string;
|
|
43
|
+
data: import("zod").ZodObject<{
|
|
44
|
+
item: import("zod").ZodString;
|
|
45
|
+
}, import("zod/v4/core").$strip>;
|
|
46
|
+
};
|
|
47
|
+
}>;
|
|
48
|
+
unexpedite: import("@orpc/server").ImplementedProcedure<import("../types.ts").RequestContext & object, {
|
|
49
|
+
call: import("../types.ts").ProvenCall | null;
|
|
50
|
+
}, import("zod").ZodObject<{
|
|
51
|
+
item: import("zod").ZodString;
|
|
52
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
53
|
+
lever: import("zod").ZodNumber;
|
|
54
|
+
}, import("zod/v4/core").$strip>, {
|
|
55
|
+
NOT_FOUND: {
|
|
56
|
+
message: string;
|
|
57
|
+
data: import("zod").ZodObject<{
|
|
58
|
+
item: import("zod").ZodString;
|
|
59
|
+
}, import("zod/v4/core").$strip>;
|
|
60
|
+
};
|
|
61
|
+
}>;
|
|
62
|
+
};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ItemId, StoreReader } from '@boxxy/model';
|
|
2
|
+
import type { ServerDeps } from '../types.ts';
|
|
3
|
+
export type ItemIdsAnswer = {
|
|
4
|
+
readonly kind: 'found';
|
|
5
|
+
readonly items: ItemId[];
|
|
6
|
+
} | {
|
|
7
|
+
readonly kind: 'not-found';
|
|
8
|
+
readonly item: string;
|
|
9
|
+
};
|
|
10
|
+
export declare function readItemIds(tx: StoreReader, deps: ServerDeps, raw: readonly string[]): Promise<ItemIdsAnswer>;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
export declare const relationHandlers: {
|
|
2
|
+
add: import("@orpc/server").ImplementedProcedure<import("../types.ts").RequestContext & object, {
|
|
3
|
+
call: import("../types.ts").ProvenCall | null;
|
|
4
|
+
}, import("zod").ZodObject<{
|
|
5
|
+
source: import("zod").ZodString;
|
|
6
|
+
type: import("zod").ZodString;
|
|
7
|
+
target: import("zod").ZodString;
|
|
8
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodDiscriminatedUnion<[import("zod").ZodObject<{
|
|
9
|
+
kind: import("zod").ZodLiteral<"added">;
|
|
10
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
11
|
+
kind: import("zod").ZodLiteral<"refused">;
|
|
12
|
+
reason: import("zod").ZodEnum<{
|
|
13
|
+
cycle: "cycle";
|
|
14
|
+
exists: "exists";
|
|
15
|
+
"unknown-type": "unknown-type";
|
|
16
|
+
}>;
|
|
17
|
+
}, import("zod/v4/core").$strip>], "kind">, {
|
|
18
|
+
NOT_FOUND: {
|
|
19
|
+
message: string;
|
|
20
|
+
data: import("zod").ZodObject<{
|
|
21
|
+
item: import("zod").ZodString;
|
|
22
|
+
}, import("zod/v4/core").$strip>;
|
|
23
|
+
};
|
|
24
|
+
}>;
|
|
25
|
+
remove: import("@orpc/server").ImplementedProcedure<import("../types.ts").RequestContext & object, {
|
|
26
|
+
call: import("../types.ts").ProvenCall | null;
|
|
27
|
+
}, import("zod").ZodObject<{
|
|
28
|
+
source: import("zod").ZodString;
|
|
29
|
+
type: import("zod").ZodString;
|
|
30
|
+
target: import("zod").ZodString;
|
|
31
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
32
|
+
removed: import("zod").ZodBoolean;
|
|
33
|
+
}, import("zod/v4/core").$strip>, {
|
|
34
|
+
NOT_FOUND: {
|
|
35
|
+
message: string;
|
|
36
|
+
data: import("zod").ZodObject<{
|
|
37
|
+
item: import("zod").ZodString;
|
|
38
|
+
}, import("zod/v4/core").$strip>;
|
|
39
|
+
};
|
|
40
|
+
}>;
|
|
41
|
+
};
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
export declare const reportHandlers: {
|
|
2
|
+
cost: import("@orpc/server").ImplementedProcedure<import("../types.ts").RequestContext & object, {
|
|
3
|
+
call: import("../types.ts").ProvenCall | null;
|
|
4
|
+
}, import("zod").ZodObject<{
|
|
5
|
+
item: import("zod").ZodString;
|
|
6
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
7
|
+
landedAt: import("zod").ZodNullable<import("zod").ZodString>;
|
|
8
|
+
attempts: import("zod").ZodNumber;
|
|
9
|
+
lines: import("zod").ZodArray<import("zod").ZodObject<{
|
|
10
|
+
phase: import("zod").ZodString;
|
|
11
|
+
rework: import("zod").ZodBoolean;
|
|
12
|
+
product: import("zod").ZodString;
|
|
13
|
+
model: import("zod").ZodNullable<import("zod").ZodString>;
|
|
14
|
+
requests: import("zod").ZodNumber;
|
|
15
|
+
inputTokens: import("zod").ZodNumber;
|
|
16
|
+
cacheReadTokens: import("zod").ZodNumber;
|
|
17
|
+
cacheCreationTokens: import("zod").ZodNumber;
|
|
18
|
+
outputTokens: import("zod").ZodNumber;
|
|
19
|
+
costUSD: import("zod").ZodNullable<import("zod").ZodNumber>;
|
|
20
|
+
costBasis: import("zod").ZodEnum<{
|
|
21
|
+
none: "none";
|
|
22
|
+
reported: "reported";
|
|
23
|
+
turn: "turn";
|
|
24
|
+
}>;
|
|
25
|
+
}, import("zod/v4/core").$strip>>;
|
|
26
|
+
totals: import("zod").ZodObject<{
|
|
27
|
+
requests: import("zod").ZodNumber;
|
|
28
|
+
costUSD: import("zod").ZodNumber;
|
|
29
|
+
reworkCostUSD: import("zod").ZodNumber;
|
|
30
|
+
requestsWithoutCost: import("zod").ZodNumber;
|
|
31
|
+
}, import("zod/v4/core").$strip>;
|
|
32
|
+
item: import("zod").ZodString;
|
|
33
|
+
behind: import("zod").ZodObject<{
|
|
34
|
+
facts: import("zod").ZodNumber;
|
|
35
|
+
oldestAt: import("zod").ZodNullable<import("zod").ZodNumber>;
|
|
36
|
+
}, import("zod/v4/core").$strip>;
|
|
37
|
+
}, import("zod/v4/core").$strip>, {
|
|
38
|
+
NOT_FOUND: {
|
|
39
|
+
message: string;
|
|
40
|
+
data: import("zod").ZodObject<{
|
|
41
|
+
item: import("zod").ZodString;
|
|
42
|
+
}, import("zod/v4/core").$strip>;
|
|
43
|
+
};
|
|
44
|
+
PEPYS_NOT_CONFIGURED: {
|
|
45
|
+
message: string;
|
|
46
|
+
};
|
|
47
|
+
PEPYS_UNAVAILABLE: {
|
|
48
|
+
message: string;
|
|
49
|
+
data: import("zod").ZodObject<{
|
|
50
|
+
reason: import("zod").ZodString;
|
|
51
|
+
}, import("zod/v4/core").$strip>;
|
|
52
|
+
};
|
|
53
|
+
}>;
|
|
54
|
+
stageTimes: import("@orpc/server").ImplementedProcedure<import("../types.ts").RequestContext & object, {
|
|
55
|
+
call: import("../types.ts").ProvenCall | null;
|
|
56
|
+
}, import("zod").ZodObject<{
|
|
57
|
+
item: import("zod").ZodString;
|
|
58
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
59
|
+
environment: import("zod").ZodString;
|
|
60
|
+
steps: import("zod").ZodArray<import("zod").ZodObject<{
|
|
61
|
+
step: import("zod").ZodEnum<{
|
|
62
|
+
build: "build";
|
|
63
|
+
deploy: "deploy";
|
|
64
|
+
design: "design";
|
|
65
|
+
merge: "merge";
|
|
66
|
+
release: "release";
|
|
67
|
+
review: "review";
|
|
68
|
+
triage: "triage";
|
|
69
|
+
}>;
|
|
70
|
+
minutes: import("zod").ZodNullable<import("zod").ZodNumber>;
|
|
71
|
+
endedAt: import("zod").ZodNullable<import("zod").ZodString>;
|
|
72
|
+
}, import("zod/v4/core").$strip>>;
|
|
73
|
+
rework: import("zod").ZodObject<{
|
|
74
|
+
count: import("zod").ZodNumber;
|
|
75
|
+
minutes: import("zod").ZodNumber;
|
|
76
|
+
}, import("zod/v4/core").$strip>;
|
|
77
|
+
reviewWaitMinutes: import("zod").ZodNullable<import("zod").ZodNumber>;
|
|
78
|
+
sleepMinutes: import("zod").ZodNumber;
|
|
79
|
+
pullRequests: import("zod").ZodArray<import("zod").ZodString>;
|
|
80
|
+
item: import("zod").ZodString;
|
|
81
|
+
behind: import("zod").ZodObject<{
|
|
82
|
+
facts: import("zod").ZodNumber;
|
|
83
|
+
oldestAt: import("zod").ZodNullable<import("zod").ZodNumber>;
|
|
84
|
+
}, import("zod/v4/core").$strip>;
|
|
85
|
+
}, import("zod/v4/core").$strip>, {
|
|
86
|
+
NOT_FOUND: {
|
|
87
|
+
message: string;
|
|
88
|
+
data: import("zod").ZodObject<{
|
|
89
|
+
item: import("zod").ZodString;
|
|
90
|
+
}, import("zod/v4/core").$strip>;
|
|
91
|
+
};
|
|
92
|
+
PEPYS_NOT_CONFIGURED: {
|
|
93
|
+
message: string;
|
|
94
|
+
};
|
|
95
|
+
PEPYS_UNAVAILABLE: {
|
|
96
|
+
message: string;
|
|
97
|
+
data: import("zod").ZodObject<{
|
|
98
|
+
reason: import("zod").ZodString;
|
|
99
|
+
}, import("zod/v4/core").$strip>;
|
|
100
|
+
};
|
|
101
|
+
}>;
|
|
102
|
+
};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export declare const rulesHandlers: {
|
|
2
|
+
dryRun: import("@orpc/server").ImplementedProcedure<import("../types.ts").RequestContext & object, {
|
|
3
|
+
call: import("../types.ts").ProvenCall | null;
|
|
4
|
+
}, import("zod").ZodObject<{
|
|
5
|
+
rules: import("zod").ZodString;
|
|
6
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodDiscriminatedUnion<[import("zod").ZodObject<{
|
|
7
|
+
kind: import("zod").ZodLiteral<"loaded">;
|
|
8
|
+
version: import("zod").ZodString;
|
|
9
|
+
moved: import("zod").ZodNumber;
|
|
10
|
+
items: import("zod").ZodArray<import("zod").ZodObject<{
|
|
11
|
+
item: import("zod").ZodString;
|
|
12
|
+
now: import("zod").ZodType<import("@boxxy/model").Position, unknown, import("zod/v4/core").$ZodTypeInternals<import("@boxxy/model").Position, unknown>>;
|
|
13
|
+
then: import("zod").ZodType<import("@boxxy/model").Position, unknown, import("zod/v4/core").$ZodTypeInternals<import("@boxxy/model").Position, unknown>>;
|
|
14
|
+
moved: import("zod").ZodBoolean;
|
|
15
|
+
}, import("zod/v4/core").$strip>>;
|
|
16
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
17
|
+
kind: import("zod").ZodLiteral<"rejected">;
|
|
18
|
+
rejections: import("zod").ZodArray<import("zod").ZodType<import("@boxxy/model").LoadRejection, unknown, import("zod/v4/core").$ZodTypeInternals<import("@boxxy/model").LoadRejection, unknown>>>;
|
|
19
|
+
}, import("zod/v4/core").$strip>], "kind">, Record<never, never>>;
|
|
20
|
+
};
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import type { AttemptRow } from '@boxxy/model';
|
|
2
|
+
export declare const runnerHandlers: {
|
|
3
|
+
status: import("@orpc/server").ImplementedProcedure<import("../types.ts").RequestContext & object, {
|
|
4
|
+
call: import("../types.ts").ProvenCall | null;
|
|
5
|
+
}, import("zod").ZodObject<{}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
6
|
+
paused: import("zod").ZodBoolean;
|
|
7
|
+
limits: import("zod").ZodArray<import("zod").ZodType<import("@boxxy/model").LimitFill, unknown, import("zod/v4/core").$ZodTypeInternals<import("@boxxy/model").LimitFill, unknown>>>;
|
|
8
|
+
attempts: import("zod").ZodArray<import("zod").ZodObject<{
|
|
9
|
+
attempt: import("zod").ZodType<AttemptRow, unknown, import("zod/v4/core").$ZodTypeInternals<AttemptRow, unknown>>;
|
|
10
|
+
title: import("zod").ZodString;
|
|
11
|
+
waitingSince: import("zod").ZodNullable<import("zod").ZodNumber>;
|
|
12
|
+
}, import("zod/v4/core").$strip>>;
|
|
13
|
+
strays: import("zod").ZodArray<import("zod").ZodType<AttemptRow, unknown, import("zod/v4/core").$ZodTypeInternals<AttemptRow, unknown>>>;
|
|
14
|
+
notices: import("zod").ZodObject<{
|
|
15
|
+
unsent: import("zod").ZodNumber;
|
|
16
|
+
}, import("zod/v4/core").$strip>;
|
|
17
|
+
outbox: import("zod").ZodObject<{
|
|
18
|
+
sink: import("zod").ZodEnum<{
|
|
19
|
+
none: "none";
|
|
20
|
+
pepys: "pepys";
|
|
21
|
+
}>;
|
|
22
|
+
state: import("zod").ZodEnum<{
|
|
23
|
+
"backing-off": "backing-off";
|
|
24
|
+
blocked: "blocked";
|
|
25
|
+
idle: "idle";
|
|
26
|
+
off: "off";
|
|
27
|
+
sending: "sending";
|
|
28
|
+
}>;
|
|
29
|
+
unsent: import("zod").ZodNumber;
|
|
30
|
+
parked: import("zod").ZodNumber;
|
|
31
|
+
lag: import("zod").ZodNullable<import("zod").ZodNumber>;
|
|
32
|
+
failingSince: import("zod").ZodNullable<import("zod").ZodNumber>;
|
|
33
|
+
nextTryAt: import("zod").ZodNullable<import("zod").ZodNumber>;
|
|
34
|
+
lastError: import("zod").ZodNullable<import("zod").ZodObject<{
|
|
35
|
+
kind: import("zod").ZodEnum<{
|
|
36
|
+
"refused-batch": "refused-batch";
|
|
37
|
+
"refused-sink": "refused-sink";
|
|
38
|
+
retry: "retry";
|
|
39
|
+
}>;
|
|
40
|
+
status: import("zod").ZodNullable<import("zod").ZodNumber>;
|
|
41
|
+
message: import("zod").ZodString;
|
|
42
|
+
at: import("zod").ZodNumber;
|
|
43
|
+
}, import("zod/v4/core").$strip>>;
|
|
44
|
+
lastStoredAt: import("zod").ZodNullable<import("zod").ZodNumber>;
|
|
45
|
+
}, import("zod/v4/core").$strip>;
|
|
46
|
+
rules: import("zod").ZodObject<{
|
|
47
|
+
version: import("zod").ZodString;
|
|
48
|
+
commit: import("zod").ZodString;
|
|
49
|
+
lastRejected: import("zod").ZodNullable<import("zod").ZodObject<{
|
|
50
|
+
commit: import("zod").ZodString;
|
|
51
|
+
rejections: import("zod").ZodArray<import("zod").ZodType<import("@boxxy/model").LoadRejection, unknown, import("zod/v4/core").$ZodTypeInternals<import("@boxxy/model").LoadRejection, unknown>>>;
|
|
52
|
+
}, import("zod/v4/core").$strip>>;
|
|
53
|
+
}, import("zod/v4/core").$strip>;
|
|
54
|
+
}, import("zod/v4/core").$strip>, Record<never, never>>;
|
|
55
|
+
pause: import("@orpc/server").ImplementedProcedure<import("../types.ts").RequestContext & object, {
|
|
56
|
+
call: import("../types.ts").ProvenCall | null;
|
|
57
|
+
}, import("zod").ZodObject<{}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
58
|
+
paused: import("zod").ZodLiteral<true>;
|
|
59
|
+
}, import("zod/v4/core").$strip>, Record<never, never>>;
|
|
60
|
+
resume: import("@orpc/server").ImplementedProcedure<import("../types.ts").RequestContext & object, {
|
|
61
|
+
call: import("../types.ts").ProvenCall | null;
|
|
62
|
+
}, import("zod").ZodObject<{}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
63
|
+
paused: import("zod").ZodLiteral<false>;
|
|
64
|
+
}, import("zod/v4/core").$strip>, Record<never, never>>;
|
|
65
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { LeverRow } from '@boxxy/model';
|
|
2
|
+
import type { ServerDeps } from '../types.ts';
|
|
3
|
+
export type LeverDraft = Pick<LeverRow, 'kind' | 'until' | 'expiresAt' | 'reason' | 'phase'>;
|
|
4
|
+
export type LeverAnswer = {
|
|
5
|
+
readonly kind: 'recorded';
|
|
6
|
+
readonly levers: readonly number[];
|
|
7
|
+
} | {
|
|
8
|
+
readonly kind: 'not-found';
|
|
9
|
+
readonly item: string;
|
|
10
|
+
};
|
|
11
|
+
export declare function writeLevers(deps: ServerDeps, items: readonly string[], draft: LeverDraft): Promise<LeverAnswer>;
|