@promptdriven/pds 0.1.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,469 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PdsApiClient = exports.PDS_API_VERSION = void 0;
4
+ const errors_1 = require("../errors/errors");
5
+ const version_1 = require("../version");
6
+ Object.defineProperty(exports, "PDS_API_VERSION", { enumerable: true, get: function () { return version_1.PDS_API_VERSION; } });
7
+ class PdsApiClient {
8
+ apiUrl;
9
+ token;
10
+ timeoutMs;
11
+ fetchImpl;
12
+ clientVersion;
13
+ sleepImpl;
14
+ maxWatchReconnects;
15
+ constructor(options) {
16
+ this.apiUrl = options.apiUrl.replace(/\/+$/, "");
17
+ this.token = options.token;
18
+ this.timeoutMs = options.timeoutMs;
19
+ this.fetchImpl = options.fetchImpl ?? fetch;
20
+ this.clientVersion = options.clientVersion ?? version_1.PDS_CLIENT_VERSION;
21
+ this.sleepImpl = options.sleepImpl ?? sleep;
22
+ this.maxWatchReconnects = options.maxWatchReconnects ?? 8;
23
+ }
24
+ async getVersion() {
25
+ return await this.request("GET", "/api/agent/version");
26
+ }
27
+ async getAuthStatus() {
28
+ return await this.request("GET", "/api/agent/auth/status");
29
+ }
30
+ async createProject(request) {
31
+ const { idempotencyKey, ...body } = request;
32
+ return await this.request("POST", "/api/agent/projects", { body, idempotencyKey });
33
+ }
34
+ async getProject(projectId) {
35
+ return await this.request("GET", `/api/agent/projects/${encodeURIComponent(projectId)}`);
36
+ }
37
+ async getScript(request) {
38
+ return await this.request("GET", `/api/agent/projects/${encodeURIComponent(request.projectId)}/script`, {
39
+ query: { file: request.file }
40
+ });
41
+ }
42
+ async setScript(request) {
43
+ const { idempotencyKey, ...body } = request;
44
+ return await this.request("PUT", `/api/agent/projects/${encodeURIComponent(request.projectId)}/script`, {
45
+ query: { file: body.file },
46
+ body: { content: body.content },
47
+ idempotencyKey
48
+ });
49
+ }
50
+ async listArtifacts(projectId) {
51
+ return await this.request("GET", `/api/agent/projects/${encodeURIComponent(projectId)}/artifacts`);
52
+ }
53
+ async planPipeline(request) {
54
+ return await this.request("POST", "/api/agent/pipeline/plan", { body: request });
55
+ }
56
+ async runPipeline(request) {
57
+ const { idempotencyKey, ...body } = request;
58
+ return await this.request("POST", "/api/agent/pipeline/run", {
59
+ body,
60
+ idempotencyKey,
61
+ timeoutMs: body.wait !== false ? null : undefined
62
+ });
63
+ }
64
+ async resetPipeline(request) {
65
+ const { projectId, idempotencyKey, ...body } = request;
66
+ return await this.request("POST", `/api/agent/projects/${encodeURIComponent(projectId)}/reset-pipeline`, { body, idempotencyKey });
67
+ }
68
+ async getPipelineStatus(request) {
69
+ return await this.request("GET", "/api/agent/pipeline/status", {
70
+ query: { projectId: request.projectId }
71
+ });
72
+ }
73
+ async watchJob(request) {
74
+ const events = [];
75
+ const seenEvents = new Set();
76
+ let retryDelayMs = 250;
77
+ let reconnects = 0;
78
+ while (true) {
79
+ try {
80
+ await this.requestNdjson("GET", `/api/agent/jobs/${encodeURIComponent(request.jobId)}/events`, { accept: "application/x-ndjson", timeoutMs: null }, async (event) => {
81
+ const eventKey = JSON.stringify(event);
82
+ if (seenEvents.has(eventKey)) {
83
+ return;
84
+ }
85
+ if (request.onEvent) {
86
+ try {
87
+ await request.onEvent(event);
88
+ }
89
+ catch (error) {
90
+ throw new WatchEventHandlerError(error);
91
+ }
92
+ }
93
+ else {
94
+ events.push(event);
95
+ }
96
+ seenEvents.add(eventKey);
97
+ });
98
+ return {
99
+ events
100
+ };
101
+ }
102
+ catch (error) {
103
+ if (error instanceof WatchEventHandlerError) {
104
+ throw error.cause;
105
+ }
106
+ if (!shouldRetryWatch(error)) {
107
+ throw error;
108
+ }
109
+ if (reconnects >= this.maxWatchReconnects) {
110
+ throw new errors_1.ApiError(`Agent job event stream disconnected after ${this.maxWatchReconnects} reconnect attempts`, {
111
+ code: "watch_reconnect_exhausted",
112
+ exitCode: errors_1.EXIT_CODES.unexpected,
113
+ details: {
114
+ jobId: request.jobId,
115
+ reconnects
116
+ }
117
+ });
118
+ }
119
+ reconnects += 1;
120
+ await this.sleepImpl(retryDelayMs);
121
+ retryDelayMs = Math.min(retryDelayMs * 2, 5_000);
122
+ }
123
+ }
124
+ }
125
+ async getJob(request) {
126
+ return await this.request("GET", `/api/agent/jobs/${encodeURIComponent(request.jobId)}`);
127
+ }
128
+ async cancelJob(request) {
129
+ return await this.request("POST", `/api/agent/jobs/${encodeURIComponent(request.jobId)}`, {
130
+ body: { action: "cancel" }
131
+ });
132
+ }
133
+ async startDeviceLogin(request) {
134
+ return await this.request("POST", "/api/agent/auth/device/start", {
135
+ body: request
136
+ });
137
+ }
138
+ async completeDeviceLogin(request) {
139
+ return await this.request("POST", "/api/agent/auth/device/complete", {
140
+ body: request
141
+ });
142
+ }
143
+ async createToken(request) {
144
+ return await this.request("POST", "/api/agent/auth/tokens", {
145
+ body: request
146
+ });
147
+ }
148
+ async listTokens() {
149
+ return await this.request("GET", "/api/agent/auth/tokens");
150
+ }
151
+ async revokeToken(request) {
152
+ return await this.request("DELETE", `/api/agent/auth/tokens/${encodeURIComponent(request.tokenId)}`);
153
+ }
154
+ async generateDistribution(request) {
155
+ const { idempotencyKey, ...body } = request;
156
+ return await this.request("POST", "/api/agent/distribution/package", {
157
+ body,
158
+ idempotencyKey,
159
+ timeoutMs: body.dryRun === true ? undefined : null
160
+ });
161
+ }
162
+ async getDistributionStatus(request) {
163
+ return await this.request("GET", "/api/agent/distribution/package", {
164
+ query: {
165
+ projectId: request.projectId,
166
+ platform: request.platform
167
+ }
168
+ });
169
+ }
170
+ async publishDistribution(request) {
171
+ const { idempotencyKey, ...body } = request;
172
+ return await this.request("POST", "/api/agent/distribution/publish", {
173
+ body,
174
+ idempotencyKey,
175
+ timeoutMs: body.wait !== false ? null : undefined
176
+ });
177
+ }
178
+ async listDistributionConnections(request) {
179
+ return await this.request("GET", "/api/agent/distribution/connections", {
180
+ query: {
181
+ projectId: request.projectId,
182
+ platform: request.platform
183
+ }
184
+ });
185
+ }
186
+ async selectDistributionConnection(request) {
187
+ return await this.request("POST", "/api/agent/distribution/connection", {
188
+ body: request
189
+ });
190
+ }
191
+ async createReleaseVideo(request) {
192
+ const { idempotencyKey, ...body } = request;
193
+ return await this.request("POST", "/api/agent/release-video", {
194
+ body,
195
+ idempotencyKey,
196
+ timeoutMs: body.wait !== false ? null : undefined
197
+ });
198
+ }
199
+ async request(method, path, options = {}) {
200
+ const attempts = method === "GET" ? 2 : 1;
201
+ let lastError;
202
+ for (let attempt = 0; attempt < attempts; attempt += 1) {
203
+ try {
204
+ return await this.requestOnce(method, path, options);
205
+ }
206
+ catch (error) {
207
+ lastError = error;
208
+ if (!(method === "GET" && shouldRetryRead(error) && attempt + 1 < attempts)) {
209
+ throw error;
210
+ }
211
+ }
212
+ }
213
+ throw lastError;
214
+ }
215
+ async requestOnce(method, path, options) {
216
+ const response = await this.fetchResponse(method, path, options);
217
+ return await parseResponse(response);
218
+ }
219
+ async requestText(method, path, options = {}) {
220
+ const response = await this.fetchResponse(method, path, options);
221
+ const text = await readResponseText(response);
222
+ if (response.ok) {
223
+ return text;
224
+ }
225
+ throw apiErrorFromResponseText(response, text);
226
+ }
227
+ async requestNdjson(method, path, options = {}, onEvent) {
228
+ const response = await this.fetchResponse(method, path, options);
229
+ if (!response.ok) {
230
+ throw apiErrorFromResponseText(response, await readResponseText(response));
231
+ }
232
+ const events = [];
233
+ const collectEvents = onEvent === undefined;
234
+ const handleEvent = async (event) => {
235
+ if (collectEvents) {
236
+ events.push(event);
237
+ }
238
+ if (onEvent) {
239
+ await onEvent(event);
240
+ }
241
+ };
242
+ if (!response.body) {
243
+ await parseNdjsonText(await readResponseText(response), handleEvent);
244
+ return events;
245
+ }
246
+ const reader = response.body.getReader();
247
+ const decoder = new TextDecoder();
248
+ let buffer = "";
249
+ while (true) {
250
+ const { done, value } = await reader.read();
251
+ if (done) {
252
+ break;
253
+ }
254
+ buffer += decoder.decode(value, { stream: true });
255
+ buffer = await drainNdjsonBuffer(buffer, handleEvent);
256
+ }
257
+ buffer += decoder.decode();
258
+ await parseNdjsonText(buffer, handleEvent);
259
+ return events;
260
+ }
261
+ async fetchResponse(method, path, options) {
262
+ const url = new URL(path, `${this.apiUrl}/`);
263
+ for (const [key, value] of Object.entries(options.query ?? {})) {
264
+ if (value !== undefined) {
265
+ url.searchParams.set(key, value);
266
+ }
267
+ }
268
+ const headers = new Headers({
269
+ accept: options.accept ?? "application/json",
270
+ "x-pds-api-version": version_1.PDS_API_VERSION,
271
+ "x-pds-client-version": this.clientVersion
272
+ });
273
+ if (this.token) {
274
+ headers.set("authorization", `Bearer ${this.token}`);
275
+ }
276
+ if (options.idempotencyKey) {
277
+ headers.set("idempotency-key", options.idempotencyKey);
278
+ }
279
+ const init = { method, headers };
280
+ if (options.body !== undefined) {
281
+ headers.set("content-type", "application/json");
282
+ init.body = JSON.stringify(options.body);
283
+ }
284
+ const timeoutMs = options.timeoutMs === undefined ? this.timeoutMs : options.timeoutMs;
285
+ let timeout;
286
+ if (timeoutMs !== null) {
287
+ const controller = new AbortController();
288
+ timeout = setTimeout(() => controller.abort(), timeoutMs);
289
+ init.signal = controller.signal;
290
+ }
291
+ try {
292
+ return await this.fetchImpl(url.toString(), init);
293
+ }
294
+ catch (error) {
295
+ if (isAbortError(error)) {
296
+ throw new errors_1.ApiError(`Request timed out after ${timeoutMs}ms`, {
297
+ code: "timeout",
298
+ exitCode: errors_1.EXIT_CODES.timeout
299
+ });
300
+ }
301
+ if (error instanceof errors_1.ApiError) {
302
+ throw error;
303
+ }
304
+ if (error instanceof Error) {
305
+ throw new errors_1.ApiError((0, errors_1.redactSecretString)(error.message), {
306
+ code: "network_error",
307
+ exitCode: errors_1.EXIT_CODES.unexpected
308
+ });
309
+ }
310
+ throw error;
311
+ }
312
+ finally {
313
+ if (timeout) {
314
+ clearTimeout(timeout);
315
+ }
316
+ }
317
+ }
318
+ }
319
+ exports.PdsApiClient = PdsApiClient;
320
+ async function parseResponse(response) {
321
+ const text = await readResponseText(response);
322
+ const parsed = parseResponseBody(text, response.headers.get("content-type"));
323
+ if (response.ok) {
324
+ return parsed;
325
+ }
326
+ throw apiErrorFromParsedBody(response, parsed);
327
+ }
328
+ async function readResponseText(response) {
329
+ try {
330
+ return await response.text();
331
+ }
332
+ catch (error) {
333
+ if (error instanceof errors_1.ApiError) {
334
+ throw error;
335
+ }
336
+ if (error instanceof Error) {
337
+ throw new errors_1.ApiError((0, errors_1.redactSecretString)(error.message), {
338
+ code: "network_error",
339
+ exitCode: errors_1.EXIT_CODES.unexpected
340
+ });
341
+ }
342
+ throw error;
343
+ }
344
+ }
345
+ async function drainNdjsonBuffer(buffer, handleEvent) {
346
+ let newlineIndex = buffer.search(/\r?\n/);
347
+ while (newlineIndex >= 0) {
348
+ const line = buffer.slice(0, newlineIndex).trim();
349
+ buffer = buffer.slice(buffer[newlineIndex] === "\r" ? newlineIndex + 2 : newlineIndex + 1);
350
+ if (line.length > 0) {
351
+ await handleEvent(JSON.parse(line));
352
+ }
353
+ newlineIndex = buffer.search(/\r?\n/);
354
+ }
355
+ return buffer;
356
+ }
357
+ async function parseNdjsonText(text, handleEvent) {
358
+ const trimmed = text.trim();
359
+ if (!trimmed) {
360
+ return;
361
+ }
362
+ for (const line of trimmed.split(/\n+/)) {
363
+ const normalized = line.trim();
364
+ if (normalized.length > 0) {
365
+ await handleEvent(JSON.parse(normalized));
366
+ }
367
+ }
368
+ }
369
+ function apiErrorFromResponseText(response, text) {
370
+ return apiErrorFromParsedBody(response, parseResponseBody(text, response.headers.get("content-type")));
371
+ }
372
+ function apiErrorFromParsedBody(response, parsed) {
373
+ const errorBody = isRecord(parsed) ? parsed : {};
374
+ const nestedError = isRecord(errorBody.error) ? errorBody.error : {};
375
+ const code = stringOrUndefined(nestedError.code) ?? stringOrUndefined(errorBody.code);
376
+ const details = nestedError.details !== undefined ? nestedError.details : errorBody;
377
+ const message = stringOrUndefined(nestedError.message) ??
378
+ stringOrUndefined(errorBody.message) ??
379
+ response.statusText ??
380
+ `HTTP ${response.status}`;
381
+ throw new errors_1.ApiError(enhanceApiErrorMessage(message, code, details), {
382
+ code: code ?? `http_${response.status}`,
383
+ status: response.status,
384
+ exitCode: (0, errors_1.mapApiErrorToExitCode)(code, response.status),
385
+ details
386
+ });
387
+ }
388
+ function enhanceApiErrorMessage(message, code, details) {
389
+ if (code !== "stage_not_enabled_for_agent_execution") {
390
+ return message;
391
+ }
392
+ const record = isRecord(details) ? details : {};
393
+ const enablement = isRecord(record.enablement) ? record.enablement : {};
394
+ const target = stringOrUndefined(record.target);
395
+ const operation = stringOrUndefined(record.operation);
396
+ const targetEnv = stringOrUndefined(enablement.targetEnv);
397
+ const releaseVideoTargetEnv = stringOrUndefined(enablement.releaseVideoTargetEnv);
398
+ const allEnv = stringOrUndefined(enablement.env);
399
+ const recommendedValue = stringOrUndefined(enablement.recommendedValue);
400
+ const targetText = target ? ` for target ${target}` : "";
401
+ if (!targetEnv && !releaseVideoTargetEnv && !allEnv) {
402
+ return message;
403
+ }
404
+ const isReleaseVideoGate = operation === "release-video.create";
405
+ const isReleaseVideoScopedRetryGate = operation === "pipeline.run" && Boolean(releaseVideoTargetEnv);
406
+ const scopedTargetValue = recommendedValue ?? target;
407
+ const primaryGuidance = releaseVideoTargetEnv
408
+ ? scopedTargetValue
409
+ ? `set ${releaseVideoTargetEnv}=${scopedTargetValue} on the API service to enable release-video ${scopedTargetValue} stage retries`
410
+ : `set ${releaseVideoTargetEnv} on the API service to enable release-video stage retries`
411
+ : targetEnv && scopedTargetValue
412
+ ? isReleaseVideoGate
413
+ ? `set ${targetEnv}=${scopedTargetValue} on the API service to enable release-video ${scopedTargetValue} targets`
414
+ : `set ${targetEnv}=${scopedTargetValue} on the API service to enable direct pipeline target ${scopedTargetValue}`
415
+ : targetEnv
416
+ ? `set ${targetEnv} on the API service to enable the required paid target`
417
+ : undefined;
418
+ const guidance = [
419
+ primaryGuidance,
420
+ !isReleaseVideoScopedRetryGate && allEnv
421
+ ? `${allEnv}=1 enables all paid agent targets and should be reserved for controlled environments`
422
+ : undefined
423
+ ].filter(Boolean);
424
+ return `${message}${targetText}. ${guidance.join("; ")}.`;
425
+ }
426
+ function parseResponseBody(text, contentType) {
427
+ if (!text) {
428
+ return {};
429
+ }
430
+ if (contentType?.includes("application/json") || /^[\s]*[{[]/.test(text)) {
431
+ try {
432
+ return JSON.parse(text);
433
+ }
434
+ catch {
435
+ return { message: text };
436
+ }
437
+ }
438
+ return { message: text };
439
+ }
440
+ function isRecord(value) {
441
+ return typeof value === "object" && value !== null;
442
+ }
443
+ function stringOrUndefined(value) {
444
+ return typeof value === "string" ? value : undefined;
445
+ }
446
+ function isAbortError(error) {
447
+ return error instanceof DOMException && error.name === "AbortError";
448
+ }
449
+ function shouldRetryRead(error) {
450
+ return error instanceof errors_1.ApiError && (error.exitCode === errors_1.EXIT_CODES.server || error.exitCode === errors_1.EXIT_CODES.unexpected);
451
+ }
452
+ function shouldRetryWatch(error) {
453
+ if (shouldRetryRead(error)) {
454
+ return true;
455
+ }
456
+ return error instanceof Error && !(error instanceof errors_1.ApiError) && !(error instanceof SyntaxError);
457
+ }
458
+ function sleep(ms) {
459
+ return new Promise((resolve) => setTimeout(resolve, ms));
460
+ }
461
+ class WatchEventHandlerError extends Error {
462
+ cause;
463
+ constructor(cause) {
464
+ super(cause instanceof Error ? cause.message : String(cause));
465
+ this.name = "WatchEventHandlerError";
466
+ this.cause = cause;
467
+ }
468
+ }
469
+ //# sourceMappingURL=api-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../src/client/api-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,137 @@
1
+ export type JsonRecord = Record<string, unknown>;
2
+ export type CreateProjectRequest = {
3
+ name: string;
4
+ projectId?: string;
5
+ template?: string;
6
+ idempotencyKey?: string;
7
+ };
8
+ export type ScriptGetRequest = {
9
+ projectId: string;
10
+ file?: string;
11
+ };
12
+ export type ScriptSetRequest = {
13
+ projectId: string;
14
+ file?: string;
15
+ content: string;
16
+ idempotencyKey?: string;
17
+ };
18
+ export type PipelineRequest = {
19
+ projectId: string;
20
+ to?: string;
21
+ stage?: string;
22
+ mode?: string;
23
+ dryRun?: boolean;
24
+ forceRegenerate?: boolean;
25
+ wait?: boolean;
26
+ idempotencyKey?: string;
27
+ };
28
+ export type ResetPipelineRequest = {
29
+ projectId: string;
30
+ all?: true;
31
+ from?: string;
32
+ stage?: string;
33
+ idempotencyKey?: string;
34
+ };
35
+ export type PipelineStatusRequest = {
36
+ projectId: string;
37
+ };
38
+ export type JobRequest = {
39
+ jobId: string;
40
+ onEvent?: (event: unknown) => void | Promise<void>;
41
+ };
42
+ export type CreateTokenRequest = {
43
+ label: string;
44
+ scopes: string[];
45
+ projectIds: string[] | "*";
46
+ expiresAt: string;
47
+ };
48
+ export type DeviceLoginStartRequest = {
49
+ scopes: string[];
50
+ projectIds: string[] | "*";
51
+ expiresAt: string;
52
+ };
53
+ export type DeviceLoginCompleteRequest = {
54
+ deviceCode?: string;
55
+ userCode?: string;
56
+ };
57
+ export type RevokeTokenRequest = {
58
+ tokenId: string;
59
+ };
60
+ export type DistributionRequest = {
61
+ projectId: string;
62
+ platform?: string;
63
+ mode?: string;
64
+ privacy?: string;
65
+ dryRun?: boolean;
66
+ forceRegenerate?: boolean;
67
+ noGenerate?: boolean;
68
+ overrideAudit?: boolean;
69
+ auditOverrideRationale?: string;
70
+ wait?: boolean;
71
+ idempotencyKey?: string;
72
+ };
73
+ export type DistributionConnectionListRequest = {
74
+ projectId?: string;
75
+ platform?: string;
76
+ };
77
+ export type DistributionConnectionSelectRequest = {
78
+ projectId: string;
79
+ platform?: string;
80
+ connectionId: string;
81
+ };
82
+ export type ReleaseVideoRequest = {
83
+ projectName?: string;
84
+ projectId?: string;
85
+ script?: {
86
+ content: string;
87
+ fileName?: string;
88
+ };
89
+ releaseNotes?: {
90
+ content: string;
91
+ fileName?: string;
92
+ };
93
+ changelog?: {
94
+ content: string;
95
+ fileName?: string;
96
+ };
97
+ repoUrl?: string;
98
+ repoName?: string;
99
+ gitSha?: string;
100
+ releaseTag?: string;
101
+ preset?: string;
102
+ target?: string;
103
+ platform?: string;
104
+ privacy?: string;
105
+ overrideAudit?: boolean;
106
+ auditOverrideRationale?: string;
107
+ dryRun?: boolean;
108
+ idempotencyKey?: string;
109
+ wait?: boolean;
110
+ };
111
+ export interface PdsClient {
112
+ getVersion(): Promise<unknown>;
113
+ getAuthStatus(): Promise<unknown>;
114
+ createProject(request: CreateProjectRequest): Promise<unknown>;
115
+ getProject(projectId: string): Promise<unknown>;
116
+ getScript(request: ScriptGetRequest): Promise<unknown>;
117
+ setScript(request: ScriptSetRequest): Promise<unknown>;
118
+ listArtifacts(projectId: string): Promise<unknown>;
119
+ planPipeline(request: PipelineRequest): Promise<unknown>;
120
+ runPipeline(request: PipelineRequest): Promise<unknown>;
121
+ resetPipeline(request: ResetPipelineRequest): Promise<unknown>;
122
+ getPipelineStatus(request: PipelineStatusRequest): Promise<unknown>;
123
+ getJob(request: JobRequest): Promise<unknown>;
124
+ watchJob(request: JobRequest): Promise<unknown>;
125
+ cancelJob(request: JobRequest): Promise<unknown>;
126
+ startDeviceLogin(request: DeviceLoginStartRequest): Promise<unknown>;
127
+ completeDeviceLogin(request: DeviceLoginCompleteRequest): Promise<unknown>;
128
+ createToken(request: CreateTokenRequest): Promise<unknown>;
129
+ listTokens(): Promise<unknown>;
130
+ revokeToken(request: RevokeTokenRequest): Promise<unknown>;
131
+ generateDistribution(request: DistributionRequest): Promise<unknown>;
132
+ getDistributionStatus(request: DistributionRequest): Promise<unknown>;
133
+ publishDistribution(request: DistributionRequest): Promise<unknown>;
134
+ listDistributionConnections(request: DistributionConnectionListRequest): Promise<unknown>;
135
+ selectDistributionConnection(request: DistributionConnectionSelectRequest): Promise<unknown>;
136
+ createReleaseVideo(request: ReleaseVideoRequest): Promise<unknown>;
137
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/client/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,13 @@
1
+ import type { ResolvedConfig } from "../config/config";
2
+ import type { PdsClient } from "../client/types";
3
+ export type CommandContext = {
4
+ client: PdsClient;
5
+ config: ResolvedConfig;
6
+ configRoot?: string;
7
+ env: Record<string, string | undefined>;
8
+ emitJsonlEvent?: (event: unknown) => void;
9
+ notice?: (text: string) => void;
10
+ openUrl?: (url: string) => void | Promise<void>;
11
+ sleep?: (ms: number) => Promise<void>;
12
+ };
13
+ export declare function dispatchCommand(commandPath: string[], commandArgs: string[], context: CommandContext): Promise<unknown>;