steroids-cli 0.12.6 → 0.12.7
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 +52 -0
- package/dist/commands/gc.d.ts.map +1 -1
- package/dist/commands/gc.js +10 -0
- package/dist/commands/gc.js.map +1 -1
- package/dist/commands/llm-content.d.ts +2 -0
- package/dist/commands/llm-content.d.ts.map +1 -0
- package/dist/commands/llm-content.js +319 -0
- package/dist/commands/llm-content.js.map +1 -0
- package/dist/commands/llm.d.ts.map +1 -1
- package/dist/commands/llm.js +22 -290
- package/dist/commands/llm.js.map +1 -1
- package/dist/commands/loop-phases-coder.js +1 -1
- package/dist/commands/loop-phases-coder.js.map +1 -1
- package/dist/commands/loop-phases-reviewer-follow-ups.d.ts +7 -0
- package/dist/commands/loop-phases-reviewer-follow-ups.d.ts.map +1 -0
- package/dist/commands/loop-phases-reviewer-follow-ups.js +44 -0
- package/dist/commands/loop-phases-reviewer-follow-ups.js.map +1 -0
- package/dist/commands/loop-phases-reviewer.d.ts.map +1 -1
- package/dist/commands/loop-phases-reviewer.js +6 -45
- package/dist/commands/loop-phases-reviewer.js.map +1 -1
- package/dist/config/loader.d.ts +4 -0
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +27 -0
- package/dist/config/loader.js.map +1 -1
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +111 -0
- package/dist/config/schema.js.map +1 -1
- package/dist/config/validator.d.ts.map +1 -1
- package/dist/config/validator.js +74 -0
- package/dist/config/validator.js.map +1 -1
- package/dist/database/intake-queries.d.ts +51 -0
- package/dist/database/intake-queries.d.ts.map +1 -0
- package/dist/database/intake-queries.js +250 -0
- package/dist/database/intake-queries.js.map +1 -0
- package/dist/database/queries.d.ts +4 -0
- package/dist/database/queries.d.ts.map +1 -1
- package/dist/database/queries.js.map +1 -1
- package/dist/database/schema.d.ts +2 -2
- package/dist/database/schema.d.ts.map +1 -1
- package/dist/database/schema.js +49 -0
- package/dist/database/schema.js.map +1 -1
- package/dist/git/section-pr.d.ts +3 -2
- package/dist/git/section-pr.d.ts.map +1 -1
- package/dist/git/section-pr.js +95 -15
- package/dist/git/section-pr.js.map +1 -1
- package/dist/hooks/events.d.ts +10 -1
- package/dist/hooks/events.d.ts.map +1 -1
- package/dist/hooks/events.js +23 -1
- package/dist/hooks/events.js.map +1 -1
- package/dist/hooks/integration.d.ts +22 -0
- package/dist/hooks/integration.d.ts.map +1 -1
- package/dist/hooks/integration.js +52 -0
- package/dist/hooks/integration.js.map +1 -1
- package/dist/hooks/payload-factories.d.ts +17 -0
- package/dist/hooks/payload-factories.d.ts.map +1 -0
- package/dist/hooks/payload-factories.js +69 -0
- package/dist/hooks/payload-factories.js.map +1 -0
- package/dist/hooks/payload-types.d.ts +169 -0
- package/dist/hooks/payload-types.d.ts.map +1 -0
- package/dist/hooks/payload-types.js +3 -0
- package/dist/hooks/payload-types.js.map +1 -0
- package/dist/hooks/payload-validation.d.ts +6 -0
- package/dist/hooks/payload-validation.d.ts.map +1 -0
- package/dist/hooks/payload-validation.js +186 -0
- package/dist/hooks/payload-validation.js.map +1 -0
- package/dist/hooks/payload.d.ts +6 -334
- package/dist/hooks/payload.d.ts.map +1 -1
- package/dist/hooks/payload.js +21 -307
- package/dist/hooks/payload.js.map +1 -1
- package/dist/hooks/template-resolvers.d.ts +9 -0
- package/dist/hooks/template-resolvers.d.ts.map +1 -0
- package/dist/hooks/template-resolvers.js +133 -0
- package/dist/hooks/template-resolvers.js.map +1 -0
- package/dist/hooks/templates.d.ts +13 -0
- package/dist/hooks/templates.d.ts.map +1 -1
- package/dist/hooks/templates.js +40 -118
- package/dist/hooks/templates.js.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/intake/github-gate-api.d.ts +37 -0
- package/dist/intake/github-gate-api.d.ts.map +1 -0
- package/dist/intake/github-gate-api.js +210 -0
- package/dist/intake/github-gate-api.js.map +1 -0
- package/dist/intake/github-gate.d.ts +22 -0
- package/dist/intake/github-gate.d.ts.map +1 -0
- package/dist/intake/github-gate.js +261 -0
- package/dist/intake/github-gate.js.map +1 -0
- package/dist/intake/github-issues-connector.d.ts +26 -0
- package/dist/intake/github-issues-connector.d.ts.map +1 -0
- package/dist/intake/github-issues-connector.js +350 -0
- package/dist/intake/github-issues-connector.js.map +1 -0
- package/dist/intake/index.d.ts +10 -0
- package/dist/intake/index.d.ts.map +1 -0
- package/dist/intake/index.js +26 -0
- package/dist/intake/index.js.map +1 -0
- package/dist/intake/pipeline-glue.d.ts +61 -0
- package/dist/intake/pipeline-glue.d.ts.map +1 -0
- package/dist/intake/pipeline-glue.js +137 -0
- package/dist/intake/pipeline-glue.js.map +1 -0
- package/dist/intake/poller.d.ts +28 -0
- package/dist/intake/poller.d.ts.map +1 -0
- package/dist/intake/poller.js +186 -0
- package/dist/intake/poller.js.map +1 -0
- package/dist/intake/post-pr.d.ts +17 -0
- package/dist/intake/post-pr.d.ts.map +1 -0
- package/dist/intake/post-pr.js +78 -0
- package/dist/intake/post-pr.js.map +1 -0
- package/dist/intake/registry.d.ts +17 -0
- package/dist/intake/registry.d.ts.map +1 -0
- package/dist/intake/registry.js +57 -0
- package/dist/intake/registry.js.map +1 -0
- package/dist/intake/reviewer-approval.d.ts +10 -0
- package/dist/intake/reviewer-approval.d.ts.map +1 -0
- package/dist/intake/reviewer-approval.js +70 -0
- package/dist/intake/reviewer-approval.js.map +1 -0
- package/dist/intake/task-reference.d.ts +10 -0
- package/dist/intake/task-reference.d.ts.map +1 -0
- package/dist/intake/task-reference.js +23 -0
- package/dist/intake/task-reference.js.map +1 -0
- package/dist/intake/task-templates.d.ts +25 -0
- package/dist/intake/task-templates.d.ts.map +1 -0
- package/dist/intake/task-templates.js +98 -0
- package/dist/intake/task-templates.js.map +1 -0
- package/dist/intake/types.d.ts +103 -0
- package/dist/intake/types.d.ts.map +1 -0
- package/dist/intake/types.js +3 -0
- package/dist/intake/types.js.map +1 -0
- package/dist/orchestrator/coder.d.ts +2 -0
- package/dist/orchestrator/coder.d.ts.map +1 -1
- package/dist/orchestrator/coder.js +25 -2
- package/dist/orchestrator/coder.js.map +1 -1
- package/dist/providers/gemini.d.ts.map +1 -1
- package/dist/providers/gemini.js +7 -14
- package/dist/providers/gemini.js.map +1 -1
- package/dist/providers/interface.d.ts.map +1 -1
- package/dist/providers/interface.js +50 -0
- package/dist/providers/interface.js.map +1 -1
- package/dist/runners/orchestrator-loop.d.ts.map +1 -1
- package/dist/runners/orchestrator-loop.js +7 -0
- package/dist/runners/orchestrator-loop.js.map +1 -1
- package/dist/runners/system-pressure.d.ts +26 -0
- package/dist/runners/system-pressure.d.ts.map +1 -0
- package/dist/runners/system-pressure.js +128 -0
- package/dist/runners/system-pressure.js.map +1 -0
- package/dist/runners/wakeup-checks.d.ts.map +1 -1
- package/dist/runners/wakeup-checks.js +16 -1
- package/dist/runners/wakeup-checks.js.map +1 -1
- package/dist/runners/wakeup-global-cleanup.d.ts +20 -0
- package/dist/runners/wakeup-global-cleanup.d.ts.map +1 -0
- package/dist/runners/wakeup-global-cleanup.js +317 -0
- package/dist/runners/wakeup-global-cleanup.js.map +1 -0
- package/dist/runners/wakeup-needed.d.ts +5 -0
- package/dist/runners/wakeup-needed.d.ts.map +1 -0
- package/dist/runners/wakeup-needed.js +42 -0
- package/dist/runners/wakeup-needed.js.map +1 -0
- package/dist/runners/wakeup-project-parallel.d.ts +13 -0
- package/dist/runners/wakeup-project-parallel.d.ts.map +1 -0
- package/dist/runners/wakeup-project-parallel.js +238 -0
- package/dist/runners/wakeup-project-parallel.js.map +1 -0
- package/dist/runners/wakeup-project.d.ts +10 -0
- package/dist/runners/wakeup-project.d.ts.map +1 -0
- package/dist/runners/wakeup-project.js +209 -0
- package/dist/runners/wakeup-project.js.map +1 -0
- package/dist/runners/wakeup-registration.d.ts +2 -0
- package/dist/runners/wakeup-registration.d.ts.map +1 -0
- package/dist/runners/wakeup-registration.js +42 -0
- package/dist/runners/wakeup-registration.js.map +1 -0
- package/dist/runners/wakeup-types.d.ts +25 -0
- package/dist/runners/wakeup-types.d.ts.map +1 -0
- package/dist/runners/wakeup-types.js +3 -0
- package/dist/runners/wakeup-types.js.map +1 -0
- package/dist/runners/wakeup.d.ts +4 -24
- package/dist/runners/wakeup.d.ts.map +1 -1
- package/dist/runners/wakeup.js +25 -601
- package/dist/runners/wakeup.js.map +1 -1
- package/dist/workspace/pool.d.ts.map +1 -1
- package/dist/workspace/pool.js +37 -4
- package/dist/workspace/pool.js.map +1 -1
- package/migrations/025_add_intake_tables.sql +51 -0
- package/migrations/026_add_section_coder_and_pr_fields.sql +11 -0
- package/migrations/manifest.json +18 -2
- package/package.json +1 -1
package/dist/hooks/payload.d.ts
CHANGED
|
@@ -1,338 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Hook
|
|
2
|
+
* Hook payload public surface.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* Keeps the main import path stable while the implementation stays split into
|
|
5
|
+
* focused modules that fit the repo size limits.
|
|
6
6
|
*/
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
*
|
|
10
|
-
*/
|
|
11
|
-
export type TaskStatus = 'pending' | 'in_progress' | 'completed' | 'review';
|
|
12
|
-
/**
|
|
13
|
-
* Health status values
|
|
14
|
-
*/
|
|
15
|
-
export type HealthStatus = 'healthy' | 'warning' | 'critical';
|
|
16
|
-
/**
|
|
17
|
-
* Dispute status values
|
|
18
|
-
*/
|
|
19
|
-
export type DisputeStatus = 'open' | 'resolved';
|
|
20
|
-
/**
|
|
21
|
-
* Dispute type values
|
|
22
|
-
*/
|
|
23
|
-
export type DisputeType = 'scope' | 'quality' | 'requirements' | 'other';
|
|
24
|
-
/**
|
|
25
|
-
* Dispute resolution values
|
|
26
|
-
*/
|
|
27
|
-
export type DisputeResolution = 'coder_wins' | 'reviewer_wins' | 'compromise' | 'escalated';
|
|
28
|
-
/**
|
|
29
|
-
* Base payload structure for all events
|
|
30
|
-
*/
|
|
31
|
-
export interface BasePayload {
|
|
32
|
-
/** Event name that triggered this hook */
|
|
33
|
-
event: HookEvent;
|
|
34
|
-
/** ISO 8601 timestamp of when the event occurred */
|
|
35
|
-
timestamp: string;
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Project context included in all payloads
|
|
39
|
-
*/
|
|
40
|
-
export interface ProjectContext {
|
|
41
|
-
/** Project name (directory name) */
|
|
42
|
-
name: string;
|
|
43
|
-
/** Absolute path to project root */
|
|
44
|
-
path: string;
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* Task data for task-related events
|
|
48
|
-
*/
|
|
49
|
-
export interface TaskData {
|
|
50
|
-
/** Unique task identifier */
|
|
51
|
-
id: string;
|
|
52
|
-
/** Task title/description */
|
|
53
|
-
title: string;
|
|
54
|
-
/** Current task status */
|
|
55
|
-
status: TaskStatus;
|
|
56
|
-
/** Previous status (for update events) */
|
|
57
|
-
previousStatus?: TaskStatus;
|
|
58
|
-
/** Section name the task belongs to */
|
|
59
|
-
section?: string | null;
|
|
60
|
-
/** Section ID the task belongs to */
|
|
61
|
-
sectionId?: string | null;
|
|
62
|
-
/** File where task is defined */
|
|
63
|
-
file?: string;
|
|
64
|
-
/** Line number in source file */
|
|
65
|
-
line?: number;
|
|
66
|
-
/** Original source file for synced tasks */
|
|
67
|
-
sourceFile?: string | null;
|
|
68
|
-
/** Number of times task was rejected */
|
|
69
|
-
rejectionCount?: number;
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* Section data for section-related events
|
|
73
|
-
*/
|
|
74
|
-
export interface SectionData {
|
|
75
|
-
/** Unique section identifier */
|
|
76
|
-
id: string;
|
|
77
|
-
/** Section name */
|
|
78
|
-
name: string;
|
|
79
|
-
/** Number of tasks in section */
|
|
80
|
-
taskCount: number;
|
|
81
|
-
/** File where section is defined */
|
|
82
|
-
file?: string;
|
|
83
|
-
}
|
|
84
|
-
/**
|
|
85
|
-
* Task summary for section/project completion
|
|
86
|
-
*/
|
|
87
|
-
export interface TaskSummary {
|
|
88
|
-
/** Task ID */
|
|
89
|
-
id: string;
|
|
90
|
-
/** Task title */
|
|
91
|
-
title: string;
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* Health data for health-related events
|
|
95
|
-
*/
|
|
96
|
-
export interface HealthData {
|
|
97
|
-
/** Current health score (0-100) */
|
|
98
|
-
score: number;
|
|
99
|
-
/** Previous health score (for change events) */
|
|
100
|
-
previousScore?: number;
|
|
101
|
-
/** Health status category */
|
|
102
|
-
status: HealthStatus;
|
|
103
|
-
/** List of failed check names */
|
|
104
|
-
failedChecks?: string[];
|
|
105
|
-
}
|
|
106
|
-
/**
|
|
107
|
-
* Dispute data for dispute-related events
|
|
108
|
-
*/
|
|
109
|
-
export interface DisputeData {
|
|
110
|
-
/** Unique dispute identifier */
|
|
111
|
-
id: string;
|
|
112
|
-
/** Task ID the dispute is about */
|
|
113
|
-
taskId: string;
|
|
114
|
-
/** Type of dispute */
|
|
115
|
-
type: DisputeType;
|
|
116
|
-
/** Dispute status */
|
|
117
|
-
status: DisputeStatus;
|
|
118
|
-
/** Reason for opening dispute */
|
|
119
|
-
reason: string;
|
|
120
|
-
/** Coder's position */
|
|
121
|
-
coderPosition?: string;
|
|
122
|
-
/** Reviewer's position */
|
|
123
|
-
reviewerPosition?: string;
|
|
124
|
-
/** Resolution (for resolved disputes) */
|
|
125
|
-
resolution?: DisputeResolution;
|
|
126
|
-
/** Resolution notes */
|
|
127
|
-
resolutionNotes?: string;
|
|
128
|
-
/** Who created the dispute */
|
|
129
|
-
createdBy: string;
|
|
130
|
-
/** Who resolved the dispute (if resolved) */
|
|
131
|
-
resolvedBy?: string;
|
|
132
|
-
}
|
|
133
|
-
/**
|
|
134
|
-
* Project summary for project completion
|
|
135
|
-
*/
|
|
136
|
-
export interface ProjectSummary {
|
|
137
|
-
/** Total number of tasks in project */
|
|
138
|
-
totalTasks: number;
|
|
139
|
-
/** List of files containing tasks */
|
|
140
|
-
files: string[];
|
|
141
|
-
/** Number of sections */
|
|
142
|
-
sectionCount?: number;
|
|
143
|
-
}
|
|
144
|
-
/**
|
|
145
|
-
* Payload for task.created event
|
|
146
|
-
*/
|
|
147
|
-
export interface TaskCreatedPayload extends BasePayload {
|
|
148
|
-
event: 'task.created';
|
|
149
|
-
task: TaskData;
|
|
150
|
-
project: ProjectContext;
|
|
151
|
-
}
|
|
152
|
-
/**
|
|
153
|
-
* Payload for task.updated event
|
|
154
|
-
*/
|
|
155
|
-
export interface TaskUpdatedPayload extends BasePayload {
|
|
156
|
-
event: 'task.updated';
|
|
157
|
-
task: TaskData;
|
|
158
|
-
project: ProjectContext;
|
|
159
|
-
}
|
|
160
|
-
/**
|
|
161
|
-
* Payload for task.completed event
|
|
162
|
-
*/
|
|
163
|
-
export interface TaskCompletedPayload extends BasePayload {
|
|
164
|
-
event: 'task.completed';
|
|
165
|
-
task: TaskData;
|
|
166
|
-
project: ProjectContext;
|
|
167
|
-
}
|
|
168
|
-
/**
|
|
169
|
-
* Payload for task.failed event
|
|
170
|
-
*/
|
|
171
|
-
export interface TaskFailedPayload extends BasePayload {
|
|
172
|
-
event: 'task.failed';
|
|
173
|
-
task: TaskData;
|
|
174
|
-
project: ProjectContext;
|
|
175
|
-
/** Maximum rejections reached */
|
|
176
|
-
maxRejections: number;
|
|
177
|
-
}
|
|
178
|
-
/**
|
|
179
|
-
* Payload for section.completed event
|
|
180
|
-
*/
|
|
181
|
-
export interface SectionCompletedPayload extends BasePayload {
|
|
182
|
-
event: 'section.completed';
|
|
183
|
-
section: SectionData;
|
|
184
|
-
tasks: TaskSummary[];
|
|
185
|
-
project: ProjectContext;
|
|
186
|
-
}
|
|
187
|
-
/**
|
|
188
|
-
* Payload for project.completed event
|
|
189
|
-
*/
|
|
190
|
-
export interface ProjectCompletedPayload extends BasePayload {
|
|
191
|
-
event: 'project.completed';
|
|
192
|
-
project: ProjectContext;
|
|
193
|
-
summary: ProjectSummary;
|
|
194
|
-
}
|
|
195
|
-
/**
|
|
196
|
-
* Payload for health.changed event
|
|
197
|
-
*/
|
|
198
|
-
export interface HealthChangedPayload extends BasePayload {
|
|
199
|
-
event: 'health.changed';
|
|
200
|
-
project: ProjectContext;
|
|
201
|
-
health: HealthData;
|
|
202
|
-
}
|
|
203
|
-
/**
|
|
204
|
-
* Payload for health.critical event
|
|
205
|
-
*/
|
|
206
|
-
export interface HealthCriticalPayload extends BasePayload {
|
|
207
|
-
event: 'health.critical';
|
|
208
|
-
project: ProjectContext;
|
|
209
|
-
health: HealthData;
|
|
210
|
-
/** Threshold that was violated */
|
|
211
|
-
threshold: number;
|
|
212
|
-
}
|
|
213
|
-
/**
|
|
214
|
-
* Payload for dispute.created event
|
|
215
|
-
*/
|
|
216
|
-
export interface DisputeCreatedPayload extends BasePayload {
|
|
217
|
-
event: 'dispute.created';
|
|
218
|
-
dispute: DisputeData;
|
|
219
|
-
task: TaskData;
|
|
220
|
-
project: ProjectContext;
|
|
221
|
-
}
|
|
222
|
-
/**
|
|
223
|
-
* Payload for dispute.resolved event
|
|
224
|
-
*/
|
|
225
|
-
export interface DisputeResolvedPayload extends BasePayload {
|
|
226
|
-
event: 'dispute.resolved';
|
|
227
|
-
dispute: DisputeData;
|
|
228
|
-
task: TaskData;
|
|
229
|
-
project: ProjectContext;
|
|
230
|
-
}
|
|
231
|
-
/**
|
|
232
|
-
* Credit exhaustion data for credit-related events
|
|
233
|
-
*/
|
|
234
|
-
export interface CreditData {
|
|
235
|
-
/** Provider name (e.g. 'claude', 'codex', 'gemini') */
|
|
236
|
-
provider: string;
|
|
237
|
-
/** Model name */
|
|
238
|
-
model: string;
|
|
239
|
-
/** Role that was affected */
|
|
240
|
-
role: 'orchestrator' | 'coder' | 'reviewer';
|
|
241
|
-
/** Error message from the provider */
|
|
242
|
-
message: string;
|
|
243
|
-
/** Runner ID if available */
|
|
244
|
-
runner_id?: string;
|
|
245
|
-
}
|
|
246
|
-
/**
|
|
247
|
-
* Payload for credit.exhausted event
|
|
248
|
-
*/
|
|
249
|
-
export interface CreditExhaustedPayload extends BasePayload {
|
|
250
|
-
event: 'credit.exhausted';
|
|
251
|
-
credit: CreditData;
|
|
252
|
-
project: ProjectContext;
|
|
253
|
-
}
|
|
254
|
-
/**
|
|
255
|
-
* Payload for credit.resolved event
|
|
256
|
-
*/
|
|
257
|
-
export interface CreditResolvedPayload extends BasePayload {
|
|
258
|
-
event: 'credit.resolved';
|
|
259
|
-
credit: CreditData;
|
|
260
|
-
project: ProjectContext;
|
|
261
|
-
resolution: 'config_changed';
|
|
262
|
-
}
|
|
263
|
-
/**
|
|
264
|
-
* Union of all credit event payloads
|
|
265
|
-
*/
|
|
266
|
-
export type CreditEventPayload = CreditExhaustedPayload | CreditResolvedPayload;
|
|
267
|
-
/**
|
|
268
|
-
* Union of all task event payloads
|
|
269
|
-
*/
|
|
270
|
-
export type TaskEventPayload = TaskCreatedPayload | TaskUpdatedPayload | TaskCompletedPayload | TaskFailedPayload;
|
|
271
|
-
/**
|
|
272
|
-
* Union of all health event payloads
|
|
273
|
-
*/
|
|
274
|
-
export type HealthEventPayload = HealthChangedPayload | HealthCriticalPayload;
|
|
275
|
-
/**
|
|
276
|
-
* Union of all dispute event payloads
|
|
277
|
-
*/
|
|
278
|
-
export type DisputeEventPayload = DisputeCreatedPayload | DisputeResolvedPayload;
|
|
279
|
-
/**
|
|
280
|
-
* Union of all possible hook payloads
|
|
281
|
-
*/
|
|
282
|
-
export type HookPayload = TaskCreatedPayload | TaskUpdatedPayload | TaskCompletedPayload | TaskFailedPayload | SectionCompletedPayload | ProjectCompletedPayload | HealthChangedPayload | HealthCriticalPayload | DisputeCreatedPayload | DisputeResolvedPayload | CreditExhaustedPayload | CreditResolvedPayload;
|
|
283
|
-
/**
|
|
284
|
-
* Create a task.created payload
|
|
285
|
-
*/
|
|
286
|
-
export declare function createTaskCreatedPayload(task: TaskData, project: ProjectContext): TaskCreatedPayload;
|
|
287
|
-
/**
|
|
288
|
-
* Create a task.updated payload
|
|
289
|
-
*/
|
|
290
|
-
export declare function createTaskUpdatedPayload(task: TaskData, project: ProjectContext): TaskUpdatedPayload;
|
|
291
|
-
/**
|
|
292
|
-
* Create a task.completed payload
|
|
293
|
-
*/
|
|
294
|
-
export declare function createTaskCompletedPayload(task: TaskData, project: ProjectContext): TaskCompletedPayload;
|
|
295
|
-
/**
|
|
296
|
-
* Create a task.failed payload
|
|
297
|
-
*/
|
|
298
|
-
export declare function createTaskFailedPayload(task: TaskData, project: ProjectContext, maxRejections: number): TaskFailedPayload;
|
|
299
|
-
/**
|
|
300
|
-
* Create a section.completed payload
|
|
301
|
-
*/
|
|
302
|
-
export declare function createSectionCompletedPayload(section: SectionData, tasks: TaskSummary[], project: ProjectContext): SectionCompletedPayload;
|
|
303
|
-
/**
|
|
304
|
-
* Create a project.completed payload
|
|
305
|
-
*/
|
|
306
|
-
export declare function createProjectCompletedPayload(project: ProjectContext, summary: ProjectSummary): ProjectCompletedPayload;
|
|
307
|
-
/**
|
|
308
|
-
* Create a health.changed payload
|
|
309
|
-
*/
|
|
310
|
-
export declare function createHealthChangedPayload(project: ProjectContext, health: HealthData): HealthChangedPayload;
|
|
311
|
-
/**
|
|
312
|
-
* Create a health.critical payload
|
|
313
|
-
*/
|
|
314
|
-
export declare function createHealthCriticalPayload(project: ProjectContext, health: HealthData, threshold: number): HealthCriticalPayload;
|
|
315
|
-
/**
|
|
316
|
-
* Create a dispute.created payload
|
|
317
|
-
*/
|
|
318
|
-
export declare function createDisputeCreatedPayload(dispute: DisputeData, task: TaskData, project: ProjectContext): DisputeCreatedPayload;
|
|
319
|
-
/**
|
|
320
|
-
* Create a dispute.resolved payload
|
|
321
|
-
*/
|
|
322
|
-
export declare function createDisputeResolvedPayload(dispute: DisputeData, task: TaskData, project: ProjectContext): DisputeResolvedPayload;
|
|
323
|
-
/**
|
|
324
|
-
* Create a credit.exhausted payload
|
|
325
|
-
*/
|
|
326
|
-
export declare function createCreditExhaustedPayload(credit: CreditData, project: ProjectContext): CreditExhaustedPayload;
|
|
327
|
-
/**
|
|
328
|
-
* Create a credit.resolved payload
|
|
329
|
-
*/
|
|
330
|
-
export declare function createCreditResolvedPayload(credit: CreditData, project: ProjectContext, resolution: 'config_changed'): CreditResolvedPayload;
|
|
331
|
-
/**
|
|
332
|
-
* Validate that a payload has required fields for its event type
|
|
333
|
-
*/
|
|
334
|
-
export declare function validatePayload(payload: HookPayload): {
|
|
335
|
-
valid: boolean;
|
|
336
|
-
errors: string[];
|
|
337
|
-
};
|
|
7
|
+
export * from './payload-types.js';
|
|
8
|
+
export * from './payload-factories.js';
|
|
9
|
+
export * from './payload-validation.js';
|
|
338
10
|
//# sourceMappingURL=payload.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"payload.d.ts","sourceRoot":"","sources":["../../src/hooks/payload.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,
|
|
1
|
+
{"version":3,"file":"payload.d.ts","sourceRoot":"","sources":["../../src/hooks/payload.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC"}
|
package/dist/hooks/payload.js
CHANGED
|
@@ -1,312 +1,26 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
-
* Hook
|
|
3
|
+
* Hook payload public surface.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*/
|
|
5
|
+
* Keeps the main import path stable while the implementation stays split into
|
|
6
|
+
* focused modules that fit the repo size limits.
|
|
7
|
+
*/
|
|
8
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
9
|
+
if (k2 === undefined) k2 = k;
|
|
10
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
11
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
12
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
13
|
+
}
|
|
14
|
+
Object.defineProperty(o, k2, desc);
|
|
15
|
+
}) : (function(o, m, k, k2) {
|
|
16
|
+
if (k2 === undefined) k2 = k;
|
|
17
|
+
o[k2] = m[k];
|
|
18
|
+
}));
|
|
19
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
20
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
21
|
+
};
|
|
8
22
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
exports.createTaskFailedPayload = createTaskFailedPayload;
|
|
13
|
-
exports.createSectionCompletedPayload = createSectionCompletedPayload;
|
|
14
|
-
exports.createProjectCompletedPayload = createProjectCompletedPayload;
|
|
15
|
-
exports.createHealthChangedPayload = createHealthChangedPayload;
|
|
16
|
-
exports.createHealthCriticalPayload = createHealthCriticalPayload;
|
|
17
|
-
exports.createDisputeCreatedPayload = createDisputeCreatedPayload;
|
|
18
|
-
exports.createDisputeResolvedPayload = createDisputeResolvedPayload;
|
|
19
|
-
exports.createCreditExhaustedPayload = createCreditExhaustedPayload;
|
|
20
|
-
exports.createCreditResolvedPayload = createCreditResolvedPayload;
|
|
21
|
-
exports.validatePayload = validatePayload;
|
|
22
|
-
// ============================================================================
|
|
23
|
-
// Payload Factory Functions
|
|
24
|
-
// ============================================================================
|
|
25
|
-
/**
|
|
26
|
-
* Create a base payload with common fields
|
|
27
|
-
*/
|
|
28
|
-
function createBasePayload(event) {
|
|
29
|
-
return {
|
|
30
|
-
event,
|
|
31
|
-
timestamp: new Date().toISOString(),
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* Create a task.created payload
|
|
36
|
-
*/
|
|
37
|
-
function createTaskCreatedPayload(task, project) {
|
|
38
|
-
return {
|
|
39
|
-
...createBasePayload('task.created'),
|
|
40
|
-
task,
|
|
41
|
-
project,
|
|
42
|
-
};
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Create a task.updated payload
|
|
46
|
-
*/
|
|
47
|
-
function createTaskUpdatedPayload(task, project) {
|
|
48
|
-
return {
|
|
49
|
-
...createBasePayload('task.updated'),
|
|
50
|
-
task,
|
|
51
|
-
project,
|
|
52
|
-
};
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* Create a task.completed payload
|
|
56
|
-
*/
|
|
57
|
-
function createTaskCompletedPayload(task, project) {
|
|
58
|
-
return {
|
|
59
|
-
...createBasePayload('task.completed'),
|
|
60
|
-
task,
|
|
61
|
-
project,
|
|
62
|
-
};
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
|
-
* Create a task.failed payload
|
|
66
|
-
*/
|
|
67
|
-
function createTaskFailedPayload(task, project, maxRejections) {
|
|
68
|
-
return {
|
|
69
|
-
...createBasePayload('task.failed'),
|
|
70
|
-
task,
|
|
71
|
-
project,
|
|
72
|
-
maxRejections,
|
|
73
|
-
};
|
|
74
|
-
}
|
|
75
|
-
/**
|
|
76
|
-
* Create a section.completed payload
|
|
77
|
-
*/
|
|
78
|
-
function createSectionCompletedPayload(section, tasks, project) {
|
|
79
|
-
return {
|
|
80
|
-
...createBasePayload('section.completed'),
|
|
81
|
-
section,
|
|
82
|
-
tasks,
|
|
83
|
-
project,
|
|
84
|
-
};
|
|
85
|
-
}
|
|
86
|
-
/**
|
|
87
|
-
* Create a project.completed payload
|
|
88
|
-
*/
|
|
89
|
-
function createProjectCompletedPayload(project, summary) {
|
|
90
|
-
return {
|
|
91
|
-
...createBasePayload('project.completed'),
|
|
92
|
-
project,
|
|
93
|
-
summary,
|
|
94
|
-
};
|
|
95
|
-
}
|
|
96
|
-
/**
|
|
97
|
-
* Create a health.changed payload
|
|
98
|
-
*/
|
|
99
|
-
function createHealthChangedPayload(project, health) {
|
|
100
|
-
return {
|
|
101
|
-
...createBasePayload('health.changed'),
|
|
102
|
-
project,
|
|
103
|
-
health,
|
|
104
|
-
};
|
|
105
|
-
}
|
|
106
|
-
/**
|
|
107
|
-
* Create a health.critical payload
|
|
108
|
-
*/
|
|
109
|
-
function createHealthCriticalPayload(project, health, threshold) {
|
|
110
|
-
return {
|
|
111
|
-
...createBasePayload('health.critical'),
|
|
112
|
-
project,
|
|
113
|
-
health,
|
|
114
|
-
threshold,
|
|
115
|
-
};
|
|
116
|
-
}
|
|
117
|
-
/**
|
|
118
|
-
* Create a dispute.created payload
|
|
119
|
-
*/
|
|
120
|
-
function createDisputeCreatedPayload(dispute, task, project) {
|
|
121
|
-
return {
|
|
122
|
-
...createBasePayload('dispute.created'),
|
|
123
|
-
dispute,
|
|
124
|
-
task,
|
|
125
|
-
project,
|
|
126
|
-
};
|
|
127
|
-
}
|
|
128
|
-
/**
|
|
129
|
-
* Create a dispute.resolved payload
|
|
130
|
-
*/
|
|
131
|
-
function createDisputeResolvedPayload(dispute, task, project) {
|
|
132
|
-
return {
|
|
133
|
-
...createBasePayload('dispute.resolved'),
|
|
134
|
-
dispute,
|
|
135
|
-
task,
|
|
136
|
-
project,
|
|
137
|
-
};
|
|
138
|
-
}
|
|
139
|
-
/**
|
|
140
|
-
* Create a credit.exhausted payload
|
|
141
|
-
*/
|
|
142
|
-
function createCreditExhaustedPayload(credit, project) {
|
|
143
|
-
return {
|
|
144
|
-
...createBasePayload('credit.exhausted'),
|
|
145
|
-
credit,
|
|
146
|
-
project,
|
|
147
|
-
};
|
|
148
|
-
}
|
|
149
|
-
/**
|
|
150
|
-
* Create a credit.resolved payload
|
|
151
|
-
*/
|
|
152
|
-
function createCreditResolvedPayload(credit, project, resolution) {
|
|
153
|
-
return {
|
|
154
|
-
...createBasePayload('credit.resolved'),
|
|
155
|
-
credit,
|
|
156
|
-
project,
|
|
157
|
-
resolution,
|
|
158
|
-
};
|
|
159
|
-
}
|
|
160
|
-
// ============================================================================
|
|
161
|
-
// Payload Validation
|
|
162
|
-
// ============================================================================
|
|
163
|
-
/**
|
|
164
|
-
* Validate that a payload has required fields for its event type
|
|
165
|
-
*/
|
|
166
|
-
function validatePayload(payload) {
|
|
167
|
-
const errors = [];
|
|
168
|
-
// Base validation
|
|
169
|
-
if (!payload.event) {
|
|
170
|
-
errors.push('Missing required field: event');
|
|
171
|
-
}
|
|
172
|
-
if (!payload.timestamp) {
|
|
173
|
-
errors.push('Missing required field: timestamp');
|
|
174
|
-
}
|
|
175
|
-
// Event-specific validation
|
|
176
|
-
switch (payload.event) {
|
|
177
|
-
case 'task.created':
|
|
178
|
-
case 'task.updated':
|
|
179
|
-
case 'task.completed':
|
|
180
|
-
case 'task.failed':
|
|
181
|
-
validateTaskPayload(payload, errors);
|
|
182
|
-
break;
|
|
183
|
-
case 'section.completed':
|
|
184
|
-
validateSectionPayload(payload, errors);
|
|
185
|
-
break;
|
|
186
|
-
case 'project.completed':
|
|
187
|
-
validateProjectPayload(payload, errors);
|
|
188
|
-
break;
|
|
189
|
-
case 'health.changed':
|
|
190
|
-
case 'health.critical':
|
|
191
|
-
validateHealthPayload(payload, errors);
|
|
192
|
-
break;
|
|
193
|
-
case 'dispute.created':
|
|
194
|
-
case 'dispute.resolved':
|
|
195
|
-
validateDisputePayload(payload, errors);
|
|
196
|
-
break;
|
|
197
|
-
case 'credit.exhausted':
|
|
198
|
-
case 'credit.resolved':
|
|
199
|
-
validateCreditPayload(payload, errors);
|
|
200
|
-
break;
|
|
201
|
-
}
|
|
202
|
-
return {
|
|
203
|
-
valid: errors.length === 0,
|
|
204
|
-
errors,
|
|
205
|
-
};
|
|
206
|
-
}
|
|
207
|
-
function validateTaskPayload(payload, errors) {
|
|
208
|
-
if (!payload.task) {
|
|
209
|
-
errors.push('Missing required field: task');
|
|
210
|
-
return;
|
|
211
|
-
}
|
|
212
|
-
if (!payload.task.id) {
|
|
213
|
-
errors.push('Missing required field: task.id');
|
|
214
|
-
}
|
|
215
|
-
if (!payload.task.title) {
|
|
216
|
-
errors.push('Missing required field: task.title');
|
|
217
|
-
}
|
|
218
|
-
if (!payload.task.status) {
|
|
219
|
-
errors.push('Missing required field: task.status');
|
|
220
|
-
}
|
|
221
|
-
if (!payload.project) {
|
|
222
|
-
errors.push('Missing required field: project');
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
function validateSectionPayload(payload, errors) {
|
|
226
|
-
if (!payload.section) {
|
|
227
|
-
errors.push('Missing required field: section');
|
|
228
|
-
return;
|
|
229
|
-
}
|
|
230
|
-
if (!payload.section.id) {
|
|
231
|
-
errors.push('Missing required field: section.id');
|
|
232
|
-
}
|
|
233
|
-
if (!payload.section.name) {
|
|
234
|
-
errors.push('Missing required field: section.name');
|
|
235
|
-
}
|
|
236
|
-
if (!payload.project) {
|
|
237
|
-
errors.push('Missing required field: project');
|
|
238
|
-
}
|
|
239
|
-
}
|
|
240
|
-
function validateProjectPayload(payload, errors) {
|
|
241
|
-
if (!payload.project) {
|
|
242
|
-
errors.push('Missing required field: project');
|
|
243
|
-
return;
|
|
244
|
-
}
|
|
245
|
-
if (!payload.project.name) {
|
|
246
|
-
errors.push('Missing required field: project.name');
|
|
247
|
-
}
|
|
248
|
-
if (!payload.project.path) {
|
|
249
|
-
errors.push('Missing required field: project.path');
|
|
250
|
-
}
|
|
251
|
-
if (!payload.summary) {
|
|
252
|
-
errors.push('Missing required field: summary');
|
|
253
|
-
}
|
|
254
|
-
}
|
|
255
|
-
function validateHealthPayload(payload, errors) {
|
|
256
|
-
if (!payload.health) {
|
|
257
|
-
errors.push('Missing required field: health');
|
|
258
|
-
return;
|
|
259
|
-
}
|
|
260
|
-
if (typeof payload.health.score !== 'number') {
|
|
261
|
-
errors.push('Missing or invalid field: health.score');
|
|
262
|
-
}
|
|
263
|
-
if (!payload.health.status) {
|
|
264
|
-
errors.push('Missing required field: health.status');
|
|
265
|
-
}
|
|
266
|
-
if (!payload.project) {
|
|
267
|
-
errors.push('Missing required field: project');
|
|
268
|
-
}
|
|
269
|
-
if (payload.event === 'health.critical') {
|
|
270
|
-
const criticalPayload = payload;
|
|
271
|
-
if (typeof criticalPayload.threshold !== 'number') {
|
|
272
|
-
errors.push('Missing required field: threshold');
|
|
273
|
-
}
|
|
274
|
-
}
|
|
275
|
-
}
|
|
276
|
-
function validateDisputePayload(payload, errors) {
|
|
277
|
-
if (!payload.dispute) {
|
|
278
|
-
errors.push('Missing required field: dispute');
|
|
279
|
-
return;
|
|
280
|
-
}
|
|
281
|
-
if (!payload.dispute.id) {
|
|
282
|
-
errors.push('Missing required field: dispute.id');
|
|
283
|
-
}
|
|
284
|
-
if (!payload.dispute.taskId) {
|
|
285
|
-
errors.push('Missing required field: dispute.taskId');
|
|
286
|
-
}
|
|
287
|
-
if (!payload.task) {
|
|
288
|
-
errors.push('Missing required field: task');
|
|
289
|
-
}
|
|
290
|
-
if (!payload.project) {
|
|
291
|
-
errors.push('Missing required field: project');
|
|
292
|
-
}
|
|
293
|
-
}
|
|
294
|
-
function validateCreditPayload(payload, errors) {
|
|
295
|
-
if (!payload.credit) {
|
|
296
|
-
errors.push('Missing required field: credit');
|
|
297
|
-
return;
|
|
298
|
-
}
|
|
299
|
-
if (!payload.credit.provider) {
|
|
300
|
-
errors.push('Missing required field: credit.provider');
|
|
301
|
-
}
|
|
302
|
-
if (!payload.credit.model) {
|
|
303
|
-
errors.push('Missing required field: credit.model');
|
|
304
|
-
}
|
|
305
|
-
if (!payload.credit.role) {
|
|
306
|
-
errors.push('Missing required field: credit.role');
|
|
307
|
-
}
|
|
308
|
-
if (!payload.project) {
|
|
309
|
-
errors.push('Missing required field: project');
|
|
310
|
-
}
|
|
311
|
-
}
|
|
23
|
+
__exportStar(require("./payload-types.js"), exports);
|
|
24
|
+
__exportStar(require("./payload-factories.js"), exports);
|
|
25
|
+
__exportStar(require("./payload-validation.js"), exports);
|
|
312
26
|
//# sourceMappingURL=payload.js.map
|