@shivaedev/agent-codex 0.1.0 → 0.2.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.
- package/CHANGELOG.md +6 -0
- package/README.md +47 -1
- package/dist/adapters/Request.d.ts +4 -0
- package/dist/adapters/Request.d.ts.map +1 -0
- package/dist/adapters/Request.js +2 -0
- package/dist/adapters/Request.js.map +1 -0
- package/dist/adapters/UserMessageItem.d.ts +22 -0
- package/dist/adapters/UserMessageItem.d.ts.map +1 -0
- package/dist/adapters/UserMessageItem.js +24 -0
- package/dist/adapters/UserMessageItem.js.map +1 -0
- package/dist/adapters/attributed.d.ts +6 -0
- package/dist/adapters/attributed.d.ts.map +1 -0
- package/dist/adapters/attributed.js +17 -0
- package/dist/adapters/attributed.js.map +1 -0
- package/dist/adapters/codexFailure.d.ts +3 -0
- package/dist/adapters/codexFailure.d.ts.map +1 -0
- package/dist/adapters/codexFailure.js +5 -0
- package/dist/adapters/codexFailure.js.map +1 -0
- package/dist/adapters/connect.d.ts +11 -0
- package/dist/adapters/connect.d.ts.map +1 -0
- package/dist/adapters/connect.js +100 -0
- package/dist/adapters/connect.js.map +1 -0
- package/dist/adapters/delivery.d.ts +18 -0
- package/dist/adapters/delivery.d.ts.map +1 -0
- package/dist/adapters/delivery.js +115 -0
- package/dist/adapters/delivery.js.map +1 -0
- package/dist/adapters/deliveryState.d.ts +31 -0
- package/dist/adapters/deliveryState.d.ts.map +1 -0
- package/dist/adapters/deliveryState.js +29 -0
- package/dist/adapters/deliveryState.js.map +1 -0
- package/dist/adapters/engine.d.ts +10 -0
- package/dist/adapters/engine.d.ts.map +1 -0
- package/dist/adapters/engine.js +80 -0
- package/dist/adapters/engine.js.map +1 -0
- package/dist/adapters/features.d.ts +726 -0
- package/dist/adapters/features.d.ts.map +1 -0
- package/dist/adapters/features.js +46 -0
- package/dist/adapters/features.js.map +1 -0
- package/dist/adapters/handshake.d.ts +5 -0
- package/dist/adapters/handshake.d.ts.map +1 -0
- package/dist/adapters/handshake.js +30 -0
- package/dist/adapters/handshake.js.map +1 -0
- package/dist/adapters/items.d.ts +7 -0
- package/dist/adapters/items.d.ts.map +1 -0
- package/dist/adapters/items.js +105 -0
- package/dist/adapters/items.js.map +1 -0
- package/dist/adapters/mapping.d.ts +9 -0
- package/dist/adapters/mapping.d.ts.map +1 -0
- package/dist/adapters/mapping.js +57 -0
- package/dist/adapters/mapping.js.map +1 -0
- package/dist/adapters/process.d.ts +15 -0
- package/dist/adapters/process.d.ts.map +1 -0
- package/dist/adapters/process.js +55 -0
- package/dist/adapters/process.js.map +1 -0
- package/dist/adapters/protocol.d.ts +178 -0
- package/dist/adapters/protocol.d.ts.map +1 -0
- package/dist/adapters/protocol.js +97 -0
- package/dist/adapters/protocol.js.map +1 -0
- package/dist/adapters/protocolItems.d.ts +89 -0
- package/dist/adapters/protocolItems.d.ts.map +1 -0
- package/dist/adapters/protocolItems.js +100 -0
- package/dist/adapters/protocolItems.js.map +1 -0
- package/dist/adapters/rateLimits.d.ts +7 -0
- package/dist/adapters/rateLimits.d.ts.map +1 -0
- package/dist/adapters/rateLimits.js +40 -0
- package/dist/adapters/rateLimits.js.map +1 -0
- package/dist/adapters/reads.d.ts +324 -0
- package/dist/adapters/reads.d.ts.map +1 -0
- package/dist/adapters/reads.js +83 -0
- package/dist/adapters/reads.js.map +1 -0
- package/dist/adapters/recovery.d.ts +324 -0
- package/dist/adapters/recovery.d.ts.map +1 -0
- package/dist/adapters/recovery.js +39 -0
- package/dist/adapters/recovery.js.map +1 -0
- package/dist/adapters/residualApproval.d.ts +4 -0
- package/dist/adapters/residualApproval.d.ts.map +1 -0
- package/dist/adapters/residualApproval.js +21 -0
- package/dist/adapters/residualApproval.js.map +1 -0
- package/dist/adapters/rpc.d.ts +8 -0
- package/dist/adapters/rpc.d.ts.map +1 -0
- package/dist/adapters/rpc.js +2 -0
- package/dist/adapters/rpc.js.map +1 -0
- package/dist/adapters/rpcProtocol.d.ts +11 -0
- package/dist/adapters/rpcProtocol.d.ts.map +1 -0
- package/dist/adapters/rpcProtocol.js +29 -0
- package/dist/adapters/rpcProtocol.js.map +1 -0
- package/dist/adapters/server.d.ts +30 -0
- package/dist/adapters/server.d.ts.map +1 -0
- package/dist/adapters/server.js +68 -0
- package/dist/adapters/server.js.map +1 -0
- package/dist/adapters/session.d.ts +312 -0
- package/dist/adapters/session.d.ts.map +1 -0
- package/dist/adapters/session.js +45 -0
- package/dist/adapters/session.js.map +1 -0
- package/dist/adapters/subagentItems.d.ts +16 -0
- package/dist/adapters/subagentItems.d.ts.map +1 -0
- package/dist/adapters/subagentItems.js +58 -0
- package/dist/adapters/subagentItems.js.map +1 -0
- package/dist/adapters/tellCliVersionOnce.d.ts +5 -0
- package/dist/adapters/tellCliVersionOnce.d.ts.map +1 -0
- package/dist/adapters/tellCliVersionOnce.js +13 -0
- package/dist/adapters/tellCliVersionOnce.js.map +1 -0
- package/dist/adapters/threadClaims.d.ts +8 -0
- package/dist/adapters/threadClaims.d.ts.map +1 -0
- package/dist/adapters/threadClaims.js +20 -0
- package/dist/adapters/threadClaims.js.map +1 -0
- package/dist/adapters/threadSweep.d.ts +15 -0
- package/dist/adapters/threadSweep.d.ts.map +1 -0
- package/dist/adapters/threadSweep.js +57 -0
- package/dist/adapters/threadSweep.js.map +1 -0
- package/dist/adapters/threadTree.d.ts +8 -0
- package/dist/adapters/threadTree.d.ts.map +1 -0
- package/dist/adapters/threadTree.js +125 -0
- package/dist/adapters/threadTree.js.map +1 -0
- package/dist/adapters/turnRequests.d.ts +13 -0
- package/dist/adapters/turnRequests.d.ts.map +1 -0
- package/dist/adapters/turnRequests.js +27 -0
- package/dist/adapters/turnRequests.js.map +1 -0
- package/dist/adapters/userMessageEvent.d.ts +7 -0
- package/dist/adapters/userMessageEvent.d.ts.map +1 -0
- package/dist/adapters/userMessageEvent.js +19 -0
- package/dist/adapters/userMessageEvent.js.map +1 -0
- package/dist/codex.d.ts +10 -1
- package/dist/codex.d.ts.map +1 -1
- package/dist/codex.js +15 -1
- package/dist/codex.js.map +1 -1
- package/dist/config.d.ts +24 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +4 -0
- package/dist/config.js.map +1 -0
- package/package.json +21 -4
- package/src/adapters/Request.ts +3 -0
- package/src/adapters/UserMessageItem.ts +28 -0
- package/src/adapters/attributed.ts +21 -0
- package/src/adapters/codexFailure.ts +4 -0
- package/src/adapters/connect.ts +129 -0
- package/src/adapters/delivery.ts +137 -0
- package/src/adapters/deliveryState.ts +43 -0
- package/src/adapters/engine.ts +101 -0
- package/src/adapters/features.ts +62 -0
- package/src/adapters/handshake.ts +35 -0
- package/src/adapters/items.ts +133 -0
- package/src/adapters/mapping.ts +66 -0
- package/src/adapters/process.ts +69 -0
- package/src/adapters/protocol.ts +125 -0
- package/src/adapters/protocolItems.ts +113 -0
- package/src/adapters/rateLimits.ts +55 -0
- package/src/adapters/reads.ts +93 -0
- package/src/adapters/recovery.ts +44 -0
- package/src/adapters/residualApproval.ts +23 -0
- package/src/adapters/rpc.ts +8 -0
- package/src/adapters/rpcProtocol.ts +28 -0
- package/src/adapters/server.ts +96 -0
- package/src/adapters/session.ts +71 -0
- package/src/adapters/subagentItems.ts +73 -0
- package/src/adapters/tellCliVersionOnce.ts +20 -0
- package/src/adapters/threadClaims.ts +26 -0
- package/src/adapters/threadSweep.ts +79 -0
- package/src/adapters/threadTree.ts +149 -0
- package/src/adapters/turnRequests.ts +45 -0
- package/src/adapters/userMessageEvent.ts +22 -0
- package/src/codex.ts +15 -1
- package/src/config.ts +17 -0
|
@@ -0,0 +1,312 @@
|
|
|
1
|
+
import { Effect, PubSub, Scope } from "effect";
|
|
2
|
+
import { AppServer } from "#adapters/server.ts";
|
|
3
|
+
import type { CodexConfiguration } from "#config.ts";
|
|
4
|
+
export declare const openSession: (config: CodexConfiguration, request: Omit<{
|
|
5
|
+
readonly cwd: string;
|
|
6
|
+
readonly effort?: string | undefined;
|
|
7
|
+
readonly input: {
|
|
8
|
+
readonly id?: string | undefined;
|
|
9
|
+
readonly parts: readonly [{
|
|
10
|
+
readonly text: string;
|
|
11
|
+
readonly type: "text";
|
|
12
|
+
}, ...{
|
|
13
|
+
readonly text: string;
|
|
14
|
+
readonly type: "text";
|
|
15
|
+
}[]];
|
|
16
|
+
};
|
|
17
|
+
readonly model?: string | undefined;
|
|
18
|
+
readonly operationId: string;
|
|
19
|
+
}, "input">, resume: string | undefined, remember: (operationId: string, threadId: string) => void) => Effect.Effect<{
|
|
20
|
+
driver: {
|
|
21
|
+
interrupt: (turnId: string) => Effect.Effect<void, import("@shivaedev/agent/failures.ts").BackendUnavailable | import("@shivaedev/agent/failures.ts").ProtocolFailure | import("@shivaedev/agent/failures.ts").Rejected | import("@shivaedev/agent/failures.ts").UnknownAcceptance, never>;
|
|
22
|
+
queue: (input: import("@shivaedev/agent/run.ts").Input) => Effect.Effect<void, import("@shivaedev/agent/failures.ts").BackendUnavailable | import("@shivaedev/agent/failures.ts").ProtocolFailure | import("@shivaedev/agent/failures.ts").Rejected | import("@shivaedev/agent/failures.ts").UnknownAcceptance, never>;
|
|
23
|
+
recovered: (turnId: string, running: boolean) => Effect.Effect<void, never, never>;
|
|
24
|
+
start: (input: import("@shivaedev/agent/run.ts").ImageInput, operationId: string) => Effect.Effect<string, import("@shivaedev/agent/failures.ts").BackendUnavailable | import("@shivaedev/agent/failures.ts").ProtocolFailure | import("@shivaedev/agent/failures.ts").Rejected | import("@shivaedev/agent/failures.ts").UnknownAcceptance, never>;
|
|
25
|
+
steer: (expected: string, input: import("@shivaedev/agent/run.ts").Input) => Effect.Effect<undefined, import("@shivaedev/agent/failures.ts").BackendUnavailable | import("@shivaedev/agent/failures.ts").ProtocolFailure | import("@shivaedev/agent/failures.ts").Rejected | import("@shivaedev/agent/failures.ts").UnknownAcceptance, never>;
|
|
26
|
+
track: (notification: import("./rpc.ts").RpcNotification) => Effect.Effect<void, never, never>;
|
|
27
|
+
};
|
|
28
|
+
events: PubSub.PubSub<{
|
|
29
|
+
readonly origin?: {
|
|
30
|
+
readonly node?: string | undefined;
|
|
31
|
+
readonly parentNode?: string | undefined;
|
|
32
|
+
readonly spawnedBy: string;
|
|
33
|
+
} | undefined;
|
|
34
|
+
readonly raw?: {
|
|
35
|
+
readonly kind: string;
|
|
36
|
+
readonly payload: string;
|
|
37
|
+
readonly source: string;
|
|
38
|
+
} | undefined;
|
|
39
|
+
readonly receipt: {
|
|
40
|
+
readonly backend: string;
|
|
41
|
+
readonly operationId: string;
|
|
42
|
+
readonly reference: {
|
|
43
|
+
readonly value: string;
|
|
44
|
+
readonly version: number;
|
|
45
|
+
};
|
|
46
|
+
readonly session?: {
|
|
47
|
+
readonly value: string;
|
|
48
|
+
readonly version: number;
|
|
49
|
+
} | undefined;
|
|
50
|
+
};
|
|
51
|
+
readonly type: "acknowledged";
|
|
52
|
+
} | {
|
|
53
|
+
readonly origin?: {
|
|
54
|
+
readonly node?: string | undefined;
|
|
55
|
+
readonly parentNode?: string | undefined;
|
|
56
|
+
readonly spawnedBy: string;
|
|
57
|
+
} | undefined;
|
|
58
|
+
readonly raw?: {
|
|
59
|
+
readonly kind: string;
|
|
60
|
+
readonly payload: string;
|
|
61
|
+
readonly source: string;
|
|
62
|
+
} | undefined;
|
|
63
|
+
readonly state: "accepted" | "awaiting-input" | "completed" | "failed" | "interrupted" | "running";
|
|
64
|
+
readonly type: "execution";
|
|
65
|
+
} | {
|
|
66
|
+
readonly origin?: {
|
|
67
|
+
readonly node?: string | undefined;
|
|
68
|
+
readonly parentNode?: string | undefined;
|
|
69
|
+
readonly spawnedBy: string;
|
|
70
|
+
} | undefined;
|
|
71
|
+
readonly raw?: {
|
|
72
|
+
readonly kind: string;
|
|
73
|
+
readonly payload: string;
|
|
74
|
+
readonly source: string;
|
|
75
|
+
} | undefined;
|
|
76
|
+
readonly reference: string;
|
|
77
|
+
readonly type: "session.opened";
|
|
78
|
+
} | {
|
|
79
|
+
readonly origin?: {
|
|
80
|
+
readonly node?: string | undefined;
|
|
81
|
+
readonly parentNode?: string | undefined;
|
|
82
|
+
readonly spawnedBy: string;
|
|
83
|
+
} | undefined;
|
|
84
|
+
readonly raw?: {
|
|
85
|
+
readonly kind: string;
|
|
86
|
+
readonly payload: string;
|
|
87
|
+
readonly source: string;
|
|
88
|
+
} | undefined;
|
|
89
|
+
readonly inputId?: string | undefined;
|
|
90
|
+
readonly parts: readonly ({
|
|
91
|
+
readonly text: string;
|
|
92
|
+
readonly type: "text";
|
|
93
|
+
} | {
|
|
94
|
+
readonly mediaType: string;
|
|
95
|
+
readonly path: string;
|
|
96
|
+
readonly type: "image";
|
|
97
|
+
} | {
|
|
98
|
+
readonly kind: string;
|
|
99
|
+
readonly payload: string;
|
|
100
|
+
readonly type: "native";
|
|
101
|
+
})[];
|
|
102
|
+
readonly role: "agent" | "user";
|
|
103
|
+
readonly type: "message";
|
|
104
|
+
} | {
|
|
105
|
+
readonly origin?: {
|
|
106
|
+
readonly node?: string | undefined;
|
|
107
|
+
readonly parentNode?: string | undefined;
|
|
108
|
+
readonly spawnedBy: string;
|
|
109
|
+
} | undefined;
|
|
110
|
+
readonly raw?: {
|
|
111
|
+
readonly kind: string;
|
|
112
|
+
readonly payload: string;
|
|
113
|
+
readonly source: string;
|
|
114
|
+
} | undefined;
|
|
115
|
+
readonly text: string;
|
|
116
|
+
readonly type: "thinking";
|
|
117
|
+
} | {
|
|
118
|
+
readonly origin?: {
|
|
119
|
+
readonly node?: string | undefined;
|
|
120
|
+
readonly parentNode?: string | undefined;
|
|
121
|
+
readonly spawnedBy: string;
|
|
122
|
+
} | undefined;
|
|
123
|
+
readonly raw?: {
|
|
124
|
+
readonly kind: string;
|
|
125
|
+
readonly payload: string;
|
|
126
|
+
readonly source: string;
|
|
127
|
+
} | undefined;
|
|
128
|
+
readonly input: string;
|
|
129
|
+
readonly name: string;
|
|
130
|
+
readonly providerName?: string | undefined;
|
|
131
|
+
readonly toolId: string;
|
|
132
|
+
readonly type: "tool.started";
|
|
133
|
+
} | {
|
|
134
|
+
readonly origin?: {
|
|
135
|
+
readonly node?: string | undefined;
|
|
136
|
+
readonly parentNode?: string | undefined;
|
|
137
|
+
readonly spawnedBy: string;
|
|
138
|
+
} | undefined;
|
|
139
|
+
readonly raw?: {
|
|
140
|
+
readonly kind: string;
|
|
141
|
+
readonly payload: string;
|
|
142
|
+
readonly source: string;
|
|
143
|
+
} | undefined;
|
|
144
|
+
readonly ok: boolean;
|
|
145
|
+
readonly output: string;
|
|
146
|
+
readonly toolId: string;
|
|
147
|
+
readonly type: "tool.completed";
|
|
148
|
+
} | {
|
|
149
|
+
readonly origin?: {
|
|
150
|
+
readonly node?: string | undefined;
|
|
151
|
+
readonly parentNode?: string | undefined;
|
|
152
|
+
readonly spawnedBy: string;
|
|
153
|
+
} | undefined;
|
|
154
|
+
readonly raw?: {
|
|
155
|
+
readonly kind: string;
|
|
156
|
+
readonly payload: string;
|
|
157
|
+
readonly source: string;
|
|
158
|
+
} | undefined;
|
|
159
|
+
readonly approvalId: string;
|
|
160
|
+
readonly description: string;
|
|
161
|
+
readonly toolId?: string | undefined;
|
|
162
|
+
readonly type: "approval.requested";
|
|
163
|
+
} | {
|
|
164
|
+
readonly origin?: {
|
|
165
|
+
readonly node?: string | undefined;
|
|
166
|
+
readonly parentNode?: string | undefined;
|
|
167
|
+
readonly spawnedBy: string;
|
|
168
|
+
} | undefined;
|
|
169
|
+
readonly raw?: {
|
|
170
|
+
readonly kind: string;
|
|
171
|
+
readonly payload: string;
|
|
172
|
+
readonly source: string;
|
|
173
|
+
} | undefined;
|
|
174
|
+
readonly type: "usage";
|
|
175
|
+
readonly cacheReadTokens?: number | undefined;
|
|
176
|
+
readonly cacheWriteTokens?: number | undefined;
|
|
177
|
+
readonly inputTokens?: number | undefined;
|
|
178
|
+
readonly model?: string | undefined;
|
|
179
|
+
readonly outputTokens?: number | undefined;
|
|
180
|
+
readonly scope: "cumulative" | "delta";
|
|
181
|
+
readonly unit: "run" | "session" | "turn";
|
|
182
|
+
} | {
|
|
183
|
+
readonly origin?: {
|
|
184
|
+
readonly node?: string | undefined;
|
|
185
|
+
readonly parentNode?: string | undefined;
|
|
186
|
+
readonly spawnedBy: string;
|
|
187
|
+
} | undefined;
|
|
188
|
+
readonly raw?: {
|
|
189
|
+
readonly kind: string;
|
|
190
|
+
readonly payload: string;
|
|
191
|
+
readonly source: string;
|
|
192
|
+
} | undefined;
|
|
193
|
+
readonly type: "cost";
|
|
194
|
+
readonly amount: number;
|
|
195
|
+
readonly currency: string;
|
|
196
|
+
readonly model?: string | undefined;
|
|
197
|
+
readonly scope: "cumulative" | "delta";
|
|
198
|
+
readonly source: "estimated" | "provider";
|
|
199
|
+
readonly unit: "run" | "session" | "turn";
|
|
200
|
+
} | {
|
|
201
|
+
readonly origin?: {
|
|
202
|
+
readonly node?: string | undefined;
|
|
203
|
+
readonly parentNode?: string | undefined;
|
|
204
|
+
readonly spawnedBy: string;
|
|
205
|
+
} | undefined;
|
|
206
|
+
readonly raw?: {
|
|
207
|
+
readonly kind: string;
|
|
208
|
+
readonly payload: string;
|
|
209
|
+
readonly source: string;
|
|
210
|
+
} | undefined;
|
|
211
|
+
readonly model: string;
|
|
212
|
+
readonly reason?: string | undefined;
|
|
213
|
+
readonly type: "model.changed";
|
|
214
|
+
} | {
|
|
215
|
+
readonly origin?: {
|
|
216
|
+
readonly node?: string | undefined;
|
|
217
|
+
readonly parentNode?: string | undefined;
|
|
218
|
+
readonly spawnedBy: string;
|
|
219
|
+
} | undefined;
|
|
220
|
+
readonly raw?: {
|
|
221
|
+
readonly kind: string;
|
|
222
|
+
readonly payload: string;
|
|
223
|
+
readonly source: string;
|
|
224
|
+
} | undefined;
|
|
225
|
+
readonly charter?: string | undefined;
|
|
226
|
+
readonly childRef: string;
|
|
227
|
+
readonly label?: string | undefined;
|
|
228
|
+
readonly parentRef?: string | undefined;
|
|
229
|
+
readonly spawnedBy: string;
|
|
230
|
+
readonly type: "child.opened";
|
|
231
|
+
} | {
|
|
232
|
+
readonly origin?: {
|
|
233
|
+
readonly node?: string | undefined;
|
|
234
|
+
readonly parentNode?: string | undefined;
|
|
235
|
+
readonly spawnedBy: string;
|
|
236
|
+
} | undefined;
|
|
237
|
+
readonly raw?: {
|
|
238
|
+
readonly kind: string;
|
|
239
|
+
readonly payload: string;
|
|
240
|
+
readonly source: string;
|
|
241
|
+
} | undefined;
|
|
242
|
+
readonly childRef: string;
|
|
243
|
+
readonly outcome: "completed" | "failed" | "interrupted" | "unknown";
|
|
244
|
+
readonly summary?: string | undefined;
|
|
245
|
+
readonly type: "child.ended";
|
|
246
|
+
} | {
|
|
247
|
+
readonly origin?: {
|
|
248
|
+
readonly node?: string | undefined;
|
|
249
|
+
readonly parentNode?: string | undefined;
|
|
250
|
+
readonly spawnedBy: string;
|
|
251
|
+
} | undefined;
|
|
252
|
+
readonly raw?: {
|
|
253
|
+
readonly kind: string;
|
|
254
|
+
readonly payload: string;
|
|
255
|
+
readonly source: string;
|
|
256
|
+
} | undefined;
|
|
257
|
+
readonly status: "allowed" | "rejected" | "unknown" | "warning";
|
|
258
|
+
readonly type: "rate.limit";
|
|
259
|
+
readonly windows: readonly {
|
|
260
|
+
readonly durationMinutes?: number | undefined;
|
|
261
|
+
readonly model?: string | undefined;
|
|
262
|
+
readonly resetsAt?: number | undefined;
|
|
263
|
+
readonly usedPercent: number;
|
|
264
|
+
}[];
|
|
265
|
+
} | {
|
|
266
|
+
readonly origin?: {
|
|
267
|
+
readonly node?: string | undefined;
|
|
268
|
+
readonly parentNode?: string | undefined;
|
|
269
|
+
readonly spawnedBy: string;
|
|
270
|
+
} | undefined;
|
|
271
|
+
readonly raw?: {
|
|
272
|
+
readonly kind: string;
|
|
273
|
+
readonly payload: string;
|
|
274
|
+
readonly source: string;
|
|
275
|
+
} | undefined;
|
|
276
|
+
readonly tasks: readonly {
|
|
277
|
+
readonly description: string;
|
|
278
|
+
readonly id: string;
|
|
279
|
+
readonly kind: string;
|
|
280
|
+
}[];
|
|
281
|
+
readonly type: "session.background";
|
|
282
|
+
} | {
|
|
283
|
+
readonly origin?: {
|
|
284
|
+
readonly node?: string | undefined;
|
|
285
|
+
readonly parentNode?: string | undefined;
|
|
286
|
+
readonly spawnedBy: string;
|
|
287
|
+
} | undefined;
|
|
288
|
+
readonly raw?: {
|
|
289
|
+
readonly kind: string;
|
|
290
|
+
readonly payload: string;
|
|
291
|
+
readonly source: string;
|
|
292
|
+
} | undefined;
|
|
293
|
+
readonly type: "gap";
|
|
294
|
+
readonly detail: string;
|
|
295
|
+
readonly kind: string;
|
|
296
|
+
} | {
|
|
297
|
+
readonly origin?: {
|
|
298
|
+
readonly node?: string | undefined;
|
|
299
|
+
readonly parentNode?: string | undefined;
|
|
300
|
+
readonly spawnedBy: string;
|
|
301
|
+
} | undefined;
|
|
302
|
+
readonly raw: {
|
|
303
|
+
readonly kind: string;
|
|
304
|
+
readonly payload: string;
|
|
305
|
+
readonly source: string;
|
|
306
|
+
};
|
|
307
|
+
readonly type: "raw";
|
|
308
|
+
}>;
|
|
309
|
+
threadId: string;
|
|
310
|
+
}, import("@shivaedev/agent/failures.ts").BackendUnavailable | import("@shivaedev/agent/failures.ts").ProtocolFailure | import("@shivaedev/agent/failures.ts").Rejected | import("@shivaedev/agent/failures.ts").UnknownAcceptance, AppServer | Scope.Scope>;
|
|
311
|
+
export type Session = Effect.Success<ReturnType<typeof openSession>>;
|
|
312
|
+
//# sourceMappingURL=session.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/adapters/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAU,MAAM,QAAQ,CAAC;AAOvD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACrD,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;iEAIC,MAAM,YAAY,MAAM,KAAK,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4PAuDxD,CAAC;AACH,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { Effect, PubSub, Scope, Stream } from "effect";
|
|
2
|
+
import { delivery } from "#adapters/delivery.ts";
|
|
3
|
+
import { toAgentEvents } from "#adapters/mapping.ts";
|
|
4
|
+
import { ThreadResponse } from "#adapters/protocol.ts";
|
|
5
|
+
import { decode } from "#adapters/reads.ts";
|
|
6
|
+
import { AppServer } from "#adapters/server.ts";
|
|
7
|
+
import { openThreadTree } from "#adapters/threadTree.ts";
|
|
8
|
+
export const openSession = Effect.fn("Codex.openSession")(function* (config, request, resume, remember) {
|
|
9
|
+
const server = yield* AppServer;
|
|
10
|
+
const threadTools = config.tools?.map(({ name, description, inputSchema }) => ({ description, inputSchema, name, type: "function" }));
|
|
11
|
+
const opening = resume === undefined ? { ...(threadTools?.length ? { dynamicTools: threadTools } : {}) } : { threadId: resume };
|
|
12
|
+
const response = yield* server
|
|
13
|
+
.request(resume === undefined ? "thread/start" : "thread/resume", {
|
|
14
|
+
approvalsReviewer: "auto_review",
|
|
15
|
+
cwd: request.cwd,
|
|
16
|
+
model: request.model,
|
|
17
|
+
sandbox: config.sandbox ?? "workspace-write",
|
|
18
|
+
...(config.baseInstructions === undefined ? {} : { baseInstructions: config.baseInstructions }),
|
|
19
|
+
...opening,
|
|
20
|
+
}, request.operationId)
|
|
21
|
+
.pipe(Effect.flatMap((value) => decode(ThreadResponse, value)));
|
|
22
|
+
const threadId = response.thread.id;
|
|
23
|
+
const driver = yield* delivery(threadId, {
|
|
24
|
+
...(request.model === undefined ? {} : { model: request.model }),
|
|
25
|
+
...(request.effort === undefined ? {} : { effort: request.effort }),
|
|
26
|
+
}, (operationId) => remember(operationId, threadId));
|
|
27
|
+
const toolScope = yield* Scope.fork(yield* Effect.scope);
|
|
28
|
+
server.registrations.set(threadId, toolScope);
|
|
29
|
+
const events = yield* PubSub.unbounded();
|
|
30
|
+
const tree = openThreadTree(threadId, server.claims, request.model ?? "");
|
|
31
|
+
const subscription = yield* PubSub.subscribe(server.notifications);
|
|
32
|
+
yield* Effect.forkScoped(Stream.fromSubscription(subscription).pipe(Stream.interruptWhen(server.exited), Stream.runForEach((notification) => Effect.gen(function* () {
|
|
33
|
+
const mapped = notification.method === "account/rateLimits/updated" ? toAgentEvents(notification, request.model ?? "") : tree.events(notification);
|
|
34
|
+
for (const event of mapped) {
|
|
35
|
+
yield* PubSub.publish(events, event);
|
|
36
|
+
}
|
|
37
|
+
yield* driver.track(notification);
|
|
38
|
+
}))));
|
|
39
|
+
yield* Effect.addFinalizer(() => Effect.sync(() => {
|
|
40
|
+
server.registrations.delete(threadId);
|
|
41
|
+
server.claims.release(threadId);
|
|
42
|
+
}));
|
|
43
|
+
return { driver, events, threadId };
|
|
44
|
+
});
|
|
45
|
+
//# sourceMappingURL=session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/adapters/session.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { Raw as RawSchema } from "@shivaedev/agent/eventData.ts";
|
|
2
|
+
import type { RunEvent as AgentEvent } from "@shivaedev/agent/events.ts";
|
|
3
|
+
type RawPayload = typeof RawSchema.Type;
|
|
4
|
+
import { KnownItem } from "#adapters/protocolItems.ts";
|
|
5
|
+
type Item<T extends KnownItem["type"]> = Extract<KnownItem, {
|
|
6
|
+
type: T;
|
|
7
|
+
}>;
|
|
8
|
+
export type SubAgentActivity = Item<"subAgentActivity">;
|
|
9
|
+
export type CollabCall = Item<"collabAgentToolCall">;
|
|
10
|
+
export declare function subAgentItem(item: unknown): SubAgentActivity | CollabCall | undefined;
|
|
11
|
+
export declare function announced(item: SubAgentActivity, threadId: string, spawnedBy: string, raw: RawPayload): AgentEvent;
|
|
12
|
+
export declare function interrupted(item: SubAgentActivity, raw: RawPayload): AgentEvent;
|
|
13
|
+
export declare function closedWithoutWord(childRef: string, raw: RawPayload): AgentEvent;
|
|
14
|
+
export declare function collabEvents(item: CollabCall, raw: RawPayload, started: boolean): readonly AgentEvent[];
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=subagentItems.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subagentItems.d.ts","sourceRoot":"","sources":["../../src/adapters/subagentItems.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,IAAI,SAAS,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,KAAK,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAEzE,KAAK,UAAU,GAAG,OAAO,SAAS,CAAC,IAAI,CAAC;AAGxC,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAEvD,KAAK,IAAI,CAAC,CAAC,SAAS,SAAS,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,SAAS,EAAE;IAAE,IAAI,EAAE,CAAC,CAAA;CAAE,CAAC,CAAC;AAEzE,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC;AACxD,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC,qBAAqB,CAAC,CAAC;AAIrD,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,gBAAgB,GAAG,UAAU,GAAG,SAAS,CAKrF;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,GAAG,UAAU,CASlH;AAGD,wBAAgB,WAAW,CAAC,IAAI,EAAE,gBAAgB,EAAE,GAAG,EAAE,UAAU,GAAG,UAAU,CAO/E;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,GAAG,UAAU,CAO/E;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,GAAG,SAAS,UAAU,EAAE,CAoBvG"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { Option, Schema } from "effect";
|
|
2
|
+
import { KnownItem } from "#adapters/protocolItems.ts";
|
|
3
|
+
const decodeItem = Schema.decodeUnknownOption(KnownItem);
|
|
4
|
+
export function subAgentItem(item) {
|
|
5
|
+
return Option.match(decodeItem(item), {
|
|
6
|
+
onNone: () => undefined,
|
|
7
|
+
onSome: (known) => (known.type === "subAgentActivity" || known.type === "collabAgentToolCall" ? known : undefined),
|
|
8
|
+
});
|
|
9
|
+
}
|
|
10
|
+
export function announced(item, threadId, spawnedBy, raw) {
|
|
11
|
+
return {
|
|
12
|
+
childRef: item.agentThreadId,
|
|
13
|
+
label: item.agentPath,
|
|
14
|
+
parentRef: threadId,
|
|
15
|
+
raw,
|
|
16
|
+
spawnedBy,
|
|
17
|
+
type: "child.opened",
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
// Codex reports forced sub-agent termination as `interrupted`.
|
|
21
|
+
export function interrupted(item, raw) {
|
|
22
|
+
return {
|
|
23
|
+
childRef: item.agentThreadId,
|
|
24
|
+
outcome: "interrupted",
|
|
25
|
+
raw,
|
|
26
|
+
type: "child.ended",
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
export function closedWithoutWord(childRef, raw) {
|
|
30
|
+
return {
|
|
31
|
+
childRef,
|
|
32
|
+
outcome: "unknown",
|
|
33
|
+
raw,
|
|
34
|
+
type: "child.ended",
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
export function collabEvents(item, raw, started) {
|
|
38
|
+
return started
|
|
39
|
+
? [
|
|
40
|
+
{
|
|
41
|
+
input: item.prompt ?? "",
|
|
42
|
+
name: item.tool,
|
|
43
|
+
raw,
|
|
44
|
+
toolId: item.id,
|
|
45
|
+
type: "tool.started",
|
|
46
|
+
},
|
|
47
|
+
]
|
|
48
|
+
: [
|
|
49
|
+
{
|
|
50
|
+
ok: item.status === "completed",
|
|
51
|
+
output: item.receiverThreadIds.join("\n"),
|
|
52
|
+
raw,
|
|
53
|
+
toolId: item.id,
|
|
54
|
+
type: "tool.completed",
|
|
55
|
+
},
|
|
56
|
+
];
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=subagentItems.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subagentItems.js","sourceRoot":"","sources":["../../src/adapters/subagentItems.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAOvD,MAAM,UAAU,GAAG,MAAM,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;AAEzD,MAAM,UAAU,YAAY,CAAC,IAAa;IACzC,OAAO,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;QACrC,MAAM,EAAE,GAAG,EAAE,CAAC,SAAS;QACvB,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,kBAAkB,IAAI,KAAK,CAAC,IAAI,KAAK,qBAAqB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;KAClH,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,IAAsB,EAAE,QAAgB,EAAE,SAAiB,EAAE,GAAe;IACrG,OAAO;QACN,QAAQ,EAAE,IAAI,CAAC,aAAa;QAC5B,KAAK,EAAE,IAAI,CAAC,SAAS;QACrB,SAAS,EAAE,QAAQ;QACnB,GAAG;QACH,SAAS;QACT,IAAI,EAAE,cAAc;KACpB,CAAC;AACH,CAAC;AAED,+DAA+D;AAC/D,MAAM,UAAU,WAAW,CAAC,IAAsB,EAAE,GAAe;IAClE,OAAO;QACN,QAAQ,EAAE,IAAI,CAAC,aAAa;QAC5B,OAAO,EAAE,aAAa;QACtB,GAAG;QACH,IAAI,EAAE,aAAa;KACnB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,QAAgB,EAAE,GAAe;IAClE,OAAO;QACN,QAAQ;QACR,OAAO,EAAE,SAAS;QAClB,GAAG;QACH,IAAI,EAAE,aAAa;KACnB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAgB,EAAE,GAAe,EAAE,OAAgB;IAC/E,OAAO,OAAO;QACb,CAAC,CAAC;YACA;gBACC,KAAK,EAAE,IAAI,CAAC,MAAM,IAAI,EAAE;gBACxB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,GAAG;gBACH,MAAM,EAAE,IAAI,CAAC,EAAE;gBACf,IAAI,EAAE,cAAc;aACpB;SACD;QACF,CAAC,CAAC;YACA;gBACC,EAAE,EAAE,IAAI,CAAC,MAAM,KAAK,WAAW;gBAC/B,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;gBACzC,GAAG;gBACH,MAAM,EAAE,IAAI,CAAC,EAAE;gBACf,IAAI,EAAE,gBAAgB;aACtB;SACD,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tellCliVersionOnce.d.ts","sourceRoot":"","sources":["../../src/adapters/tellCliVersionOnce.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAO,MAAM,QAAQ,CAAC;AAG7C,KAAK,cAAc,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAa9E,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,CAAC,cAAc,CAG5D,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Effect, Option, Ref } from "effect";
|
|
2
|
+
import { PINNED_CLI_VERSION } from "#adapters/protocol.ts";
|
|
3
|
+
// Codex has no protocol negotiation; the userAgent it reports at initialize is compared with the pinned CLI version.
|
|
4
|
+
function tell(version) {
|
|
5
|
+
return Option.match(version, {
|
|
6
|
+
onNone: () => Effect.logWarning("codex: initialize response unrecognised"),
|
|
7
|
+
onSome: (installed) => installed === PINNED_CLI_VERSION
|
|
8
|
+
? Effect.logInfo("codex app-server", { version: installed })
|
|
9
|
+
: Effect.logWarning("codex app-server version differs from the pin", { pinned: PINNED_CLI_VERSION, version: installed }),
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
export const tellCliVersionOnce = Effect.map(Ref.make(false), (told) => (version) => Effect.flatMap(Ref.getAndSet(told, true), (already) => (already ? Effect.void : tell(version))));
|
|
13
|
+
//# sourceMappingURL=tellCliVersionOnce.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tellCliVersionOnce.js","sourceRoot":"","sources":["../../src/adapters/tellCliVersionOnce.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAI3D,qHAAqH;AACrH,SAAS,IAAI,CAAC,OAA8B;IAC3C,OAAO,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE;QAC5B,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,yCAAyC,CAAC;QAC1E,MAAM,EAAE,CAAC,SAAS,EAAE,EAAE,CACrB,SAAS,KAAK,kBAAkB;YAC/B,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;YAC5D,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,+CAA+C,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;KAC1H,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAkC,MAAM,CAAC,GAAG,CAC1E,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,EACf,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CACtH,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export interface ThreadClaims {
|
|
2
|
+
readonly claim: (rootThreadId: string, threadId: string) => void;
|
|
3
|
+
readonly isNode: (threadId: string) => boolean;
|
|
4
|
+
readonly ownerOf: (threadId: string) => string | undefined;
|
|
5
|
+
readonly release: (rootThreadId: string) => void;
|
|
6
|
+
}
|
|
7
|
+
export declare function openThreadClaims(): ThreadClaims;
|
|
8
|
+
//# sourceMappingURL=threadClaims.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"threadClaims.d.ts","sourceRoot":"","sources":["../../src/adapters/threadClaims.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC5B,QAAQ,CAAC,KAAK,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACjE,QAAQ,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC;IAC/C,QAAQ,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IAC3D,QAAQ,CAAC,OAAO,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;CACjD;AAED,wBAAgB,gBAAgB,IAAI,YAAY,CAkB/C"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export function openThreadClaims() {
|
|
2
|
+
const owners = new Map();
|
|
3
|
+
return {
|
|
4
|
+
claim: (rootThreadId, threadId) => {
|
|
5
|
+
if (!owners.has(threadId)) {
|
|
6
|
+
owners.set(threadId, rootThreadId);
|
|
7
|
+
}
|
|
8
|
+
},
|
|
9
|
+
isNode: (threadId) => owners.has(threadId),
|
|
10
|
+
ownerOf: (threadId) => owners.get(threadId),
|
|
11
|
+
release: (rootThreadId) => {
|
|
12
|
+
for (const [threadId, owner] of [...owners]) {
|
|
13
|
+
if (owner === rootThreadId) {
|
|
14
|
+
owners.delete(threadId);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=threadClaims.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"threadClaims.js","sourceRoot":"","sources":["../../src/adapters/threadClaims.ts"],"names":[],"mappings":"AAOA,MAAM,UAAU,gBAAgB;IAC/B,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,OAAO;QACN,KAAK,EAAE,CAAC,YAAY,EAAE,QAAQ,EAAE,EAAE;YACjC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC3B,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;YACpC,CAAC;QACF,CAAC;QACD,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAC1C,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAC3C,OAAO,EAAE,CAAC,YAAY,EAAE,EAAE;YACzB,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC;gBAC7C,IAAI,KAAK,KAAK,YAAY,EAAE,CAAC;oBAC5B,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;gBACzB,CAAC;YACF,CAAC;QACF,CAAC;KACD,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Effect } from "effect";
|
|
2
|
+
import type { ReadFailure as BackendFailure } from "@shivaedev/agent/failures.ts";
|
|
3
|
+
type Request = (method: string, params: unknown) => Effect.Effect<unknown, BackendFailure>;
|
|
4
|
+
export interface SpawnedChild {
|
|
5
|
+
readonly agentNickname: string | undefined;
|
|
6
|
+
readonly agentPath: string | undefined;
|
|
7
|
+
readonly agentRole: string | undefined;
|
|
8
|
+
readonly parentThreadId: string;
|
|
9
|
+
readonly threadId: string;
|
|
10
|
+
readonly working: boolean;
|
|
11
|
+
}
|
|
12
|
+
export type CensusSweep = readonly SpawnedChild[];
|
|
13
|
+
export declare const sweepSpawnedDescendants: (request: Request, rootThreadId: string) => Effect.Effect<CensusSweep, BackendFailure, never>;
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=threadSweep.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"threadSweep.d.ts","sourceRoot":"","sources":["../../src/adapters/threadSweep.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAkB,MAAM,QAAQ,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,IAAI,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAIlF,KAAK,OAAO,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,KAAK,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;AAE3F,MAAM,WAAW,YAAY;IAC5B,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3C,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,MAAM,WAAW,GAAG,SAAS,YAAY,EAAE,CAAC;AA+BlD,eAAO,MAAM,uBAAuB,+FA+BlC,CAAC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { Effect, Option, Schema } from "effect";
|
|
2
|
+
import { codexFailure } from "#adapters/codexFailure.ts";
|
|
3
|
+
import { ThreadListResponse } from "#adapters/protocol.ts";
|
|
4
|
+
// Codex caps thread-list pages at 100 rows.
|
|
5
|
+
const PAGE = 100;
|
|
6
|
+
const PAGES = 200;
|
|
7
|
+
const decodeListing = Schema.decodeUnknownOption(ThreadListResponse);
|
|
8
|
+
function named(value) {
|
|
9
|
+
return value === null ? undefined : value;
|
|
10
|
+
}
|
|
11
|
+
function isWorking(status) {
|
|
12
|
+
return status.type === "active";
|
|
13
|
+
}
|
|
14
|
+
function childrenOf(listed) {
|
|
15
|
+
return listed.data.map((thread) => {
|
|
16
|
+
const spawn = thread.source.subAgent.threadSpawn;
|
|
17
|
+
return {
|
|
18
|
+
agentNickname: named(spawn.agentNickname),
|
|
19
|
+
agentPath: named(spawn.agentPath),
|
|
20
|
+
agentRole: named(spawn.agentRole),
|
|
21
|
+
parentThreadId: spawn.parentThreadId,
|
|
22
|
+
threadId: thread.id,
|
|
23
|
+
working: isWorking(thread.status),
|
|
24
|
+
};
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
// Codex thread/list with ancestorThreadId returns the descendant tree without attaching to it.
|
|
28
|
+
export const sweepSpawnedDescendants = Effect.fn("Codex.sweepSpawnedDescendants")(function* (request, rootThreadId) {
|
|
29
|
+
const found = new Map();
|
|
30
|
+
const cursors = new Set();
|
|
31
|
+
let cursor;
|
|
32
|
+
for (let page = 0; page < PAGES; page += 1) {
|
|
33
|
+
const response = yield* request("thread/list", {
|
|
34
|
+
ancestorThreadId: rootThreadId,
|
|
35
|
+
...(cursor === undefined ? {} : { cursor }),
|
|
36
|
+
limit: PAGE,
|
|
37
|
+
});
|
|
38
|
+
const decoded = decodeListing(response);
|
|
39
|
+
if (Option.isNone(decoded)) {
|
|
40
|
+
return yield* Effect.fail(codexFailure("it answered in a shape this backend cannot read"));
|
|
41
|
+
}
|
|
42
|
+
for (const child of childrenOf(decoded.value)) {
|
|
43
|
+
found.set(child.threadId, child);
|
|
44
|
+
}
|
|
45
|
+
const nextCursor = named(decoded.value.nextCursor);
|
|
46
|
+
if (nextCursor === undefined) {
|
|
47
|
+
return [...found.values()];
|
|
48
|
+
}
|
|
49
|
+
if (cursors.has(nextCursor)) {
|
|
50
|
+
return yield* codexFailure("Repeated descendant pagination cursor");
|
|
51
|
+
}
|
|
52
|
+
cursors.add(nextCursor);
|
|
53
|
+
cursor = nextCursor;
|
|
54
|
+
}
|
|
55
|
+
return yield* Effect.fail(codexFailure("its listing of this session's threads never ended"));
|
|
56
|
+
});
|
|
57
|
+
//# sourceMappingURL=threadSweep.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"threadSweep.js","sourceRoot":"","sources":["../../src/adapters/threadSweep.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { RunEvent as AgentEvent } from "@shivaedev/agent/events.ts";
|
|
2
|
+
import type { RpcNotification } from "#adapters/rpc.ts";
|
|
3
|
+
import type { ThreadClaims } from "#adapters/threadClaims.ts";
|
|
4
|
+
export interface ThreadTree {
|
|
5
|
+
readonly events: (notification: RpcNotification) => readonly AgentEvent[];
|
|
6
|
+
}
|
|
7
|
+
export declare function openThreadTree(rootThreadId: string, claims: ThreadClaims, sessionModel: string): ThreadTree;
|
|
8
|
+
//# sourceMappingURL=threadTree.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"threadTree.d.ts","sourceRoot":"","sources":["../../src/adapters/threadTree.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAYzE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAUxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAO9D,MAAM,WAAW,UAAU;IAC1B,QAAQ,CAAC,MAAM,EAAE,CAAC,YAAY,EAAE,eAAe,KAAK,SAAS,UAAU,EAAE,CAAC;CAC1E;AAGD,wBAAgB,cAAc,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,GAAG,UAAU,CAiH3G"}
|