@jamesaphoenix/tx-types 0.4.2 → 0.4.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/README.md +480 -0
  2. package/dist/anchor.d.ts +93 -96
  3. package/dist/anchor.d.ts.map +1 -1
  4. package/dist/anchor.js +74 -1
  5. package/dist/anchor.js.map +1 -1
  6. package/dist/attempt.d.ts +36 -28
  7. package/dist/attempt.d.ts.map +1 -1
  8. package/dist/attempt.js +59 -1
  9. package/dist/attempt.js.map +1 -1
  10. package/dist/candidate.d.ts +117 -145
  11. package/dist/candidate.d.ts.map +1 -1
  12. package/dist/candidate.js +109 -0
  13. package/dist/candidate.js.map +1 -1
  14. package/dist/cycle.d.ts +130 -0
  15. package/dist/cycle.d.ts.map +1 -0
  16. package/dist/cycle.js +89 -0
  17. package/dist/cycle.js.map +1 -0
  18. package/dist/deduplication.d.ts +76 -92
  19. package/dist/deduplication.d.ts.map +1 -1
  20. package/dist/deduplication.js +63 -2
  21. package/dist/deduplication.js.map +1 -1
  22. package/dist/doc.d.ts +269 -0
  23. package/dist/doc.d.ts.map +1 -0
  24. package/dist/doc.js +232 -0
  25. package/dist/doc.js.map +1 -0
  26. package/dist/edge.d.ts +53 -56
  27. package/dist/edge.d.ts.map +1 -1
  28. package/dist/edge.js +51 -1
  29. package/dist/edge.js.map +1 -1
  30. package/dist/file-learning.d.ts +23 -28
  31. package/dist/file-learning.d.ts.map +1 -1
  32. package/dist/file-learning.js +22 -2
  33. package/dist/file-learning.js.map +1 -1
  34. package/dist/index.d.ts +14 -14
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.js +38 -21
  37. package/dist/index.js.map +1 -1
  38. package/dist/learning.d.ts +167 -172
  39. package/dist/learning.d.ts.map +1 -1
  40. package/dist/learning.js +109 -1
  41. package/dist/learning.js.map +1 -1
  42. package/dist/response.d.ts +636 -0
  43. package/dist/response.d.ts.map +1 -0
  44. package/dist/response.js +354 -0
  45. package/dist/response.js.map +1 -0
  46. package/dist/run.d.ts +73 -40
  47. package/dist/run.d.ts.map +1 -1
  48. package/dist/run.js +108 -1
  49. package/dist/run.js.map +1 -1
  50. package/dist/symbol.d.ts +42 -43
  51. package/dist/symbol.d.ts.map +1 -1
  52. package/dist/symbol.js +55 -1
  53. package/dist/symbol.js.map +1 -1
  54. package/dist/task.d.ts +114 -78
  55. package/dist/task.d.ts.map +1 -1
  56. package/dist/task.js +149 -2
  57. package/dist/task.js.map +1 -1
  58. package/dist/tracked-project.d.ts +24 -34
  59. package/dist/tracked-project.d.ts.map +1 -1
  60. package/dist/tracked-project.js +34 -0
  61. package/dist/tracked-project.js.map +1 -1
  62. package/package.json +7 -3
@@ -0,0 +1,354 @@
1
+ /**
2
+ * Response types for tx
3
+ *
4
+ * Shared response schemas optimized for agent consumption.
5
+ * All types use consistent camelCase naming and provide full context in every response.
6
+ * Serialized types convert Date objects to ISO strings for JSON output.
7
+ * Core type definitions using Effect Schema (Doctrine Rule 10).
8
+ *
9
+ * Design principles:
10
+ * - Consistent field naming across CLI, MCP, API, and SDK
11
+ * - Full context in every response (no bare Task, always TaskWithDeps)
12
+ * - Serialized types ready for JSON.stringify without custom replacers
13
+ * - Standard envelopes for lists, pagination, and actions
14
+ */
15
+ import { Schema } from "effect";
16
+ import { TaskIdSchema, TaskStatusSchema } from "./task.js";
17
+ import { LearningSourceTypeSchema } from "./learning.js";
18
+ import { FileLearningIdSchema } from "./file-learning.js";
19
+ import { RunIdSchema, RunStatusSchema } from "./run.js";
20
+ import { AttemptIdSchema, AttemptOutcomeSchema } from "./attempt.js";
21
+ // =============================================================================
22
+ // SERIALIZED ENTITY SCHEMAS
23
+ // =============================================================================
24
+ // These schemas mirror their domain counterparts but with Date fields as ISO strings.
25
+ // Use these for JSON responses across CLI, MCP, API, and SDK.
26
+ /**
27
+ * TaskWithDeps serialized for JSON output.
28
+ * All Date fields converted to ISO strings.
29
+ * This is the REQUIRED return type for all external APIs (per Doctrine Rule 1).
30
+ */
31
+ export const TaskWithDepsSerializedSchema = Schema.Struct({
32
+ id: TaskIdSchema,
33
+ title: Schema.String,
34
+ description: Schema.String,
35
+ status: TaskStatusSchema,
36
+ parentId: Schema.NullOr(TaskIdSchema),
37
+ score: Schema.Number.pipe(Schema.int()),
38
+ createdAt: Schema.String, // ISO string
39
+ updatedAt: Schema.String, // ISO string
40
+ completedAt: Schema.NullOr(Schema.String), // ISO string
41
+ metadata: Schema.Record({ key: Schema.String, value: Schema.Unknown }),
42
+ /** Task IDs that block this task */
43
+ blockedBy: Schema.Array(TaskIdSchema),
44
+ /** Task IDs this task blocks */
45
+ blocks: Schema.Array(TaskIdSchema),
46
+ /** Direct child task IDs */
47
+ children: Schema.Array(TaskIdSchema),
48
+ /** Whether this task can be worked on (status is workable AND all blockers are done) */
49
+ isReady: Schema.Boolean,
50
+ });
51
+ /**
52
+ * Learning serialized for JSON output.
53
+ * All Date fields converted to ISO strings.
54
+ * Embedding as number array instead of Float32Array.
55
+ */
56
+ export const LearningSerializedSchema = Schema.Struct({
57
+ id: Schema.Number.pipe(Schema.int()),
58
+ content: Schema.String,
59
+ sourceType: LearningSourceTypeSchema,
60
+ sourceRef: Schema.NullOr(Schema.String),
61
+ createdAt: Schema.String, // ISO string
62
+ keywords: Schema.Array(Schema.String),
63
+ category: Schema.NullOr(Schema.String),
64
+ usageCount: Schema.Number.pipe(Schema.int()),
65
+ lastUsedAt: Schema.NullOr(Schema.String), // ISO string
66
+ outcomeScore: Schema.NullOr(Schema.Number),
67
+ /** Embedding vector as number array (null if not computed) */
68
+ embedding: Schema.NullOr(Schema.Array(Schema.Number)),
69
+ });
70
+ /**
71
+ * LearningWithScore serialized for JSON output.
72
+ * Extends LearningSerialized with relevance scoring fields.
73
+ */
74
+ export const LearningWithScoreSerializedSchema = Schema.Struct({
75
+ ...LearningSerializedSchema.fields,
76
+ /** Combined relevance score (0-1) */
77
+ relevanceScore: Schema.Number,
78
+ /** BM25 text search score */
79
+ bm25Score: Schema.Number,
80
+ /** Vector similarity score (0-1) */
81
+ vectorScore: Schema.Number,
82
+ /** Recency score (0-1, higher for newer) */
83
+ recencyScore: Schema.Number,
84
+ /** RRF (Reciprocal Rank Fusion) score from combining BM25 and vector rankings */
85
+ rrfScore: Schema.Number,
86
+ /** Rank in BM25 results (1-indexed, 0 if not in BM25 results) */
87
+ bm25Rank: Schema.Number.pipe(Schema.int()),
88
+ /** Rank in vector similarity results (1-indexed, 0 if not in vector results) */
89
+ vectorRank: Schema.Number.pipe(Schema.int()),
90
+ /** LLM reranker score (0-1, optional - only present when reranking is applied) */
91
+ rerankerScore: Schema.optional(Schema.Number),
92
+ /** Feedback score from historical usage (0-1, 0.5 = neutral, optional) */
93
+ feedbackScore: Schema.optional(Schema.Number),
94
+ });
95
+ /**
96
+ * FileLearning serialized for JSON output.
97
+ */
98
+ export const FileLearningsSerializedSchema = Schema.Struct({
99
+ id: FileLearningIdSchema,
100
+ filePattern: Schema.String,
101
+ note: Schema.String,
102
+ taskId: Schema.NullOr(Schema.String),
103
+ createdAt: Schema.String, // ISO string
104
+ });
105
+ /**
106
+ * Run serialized for JSON output.
107
+ */
108
+ export const RunSerializedSchema = Schema.Struct({
109
+ id: RunIdSchema,
110
+ taskId: Schema.NullOr(Schema.String),
111
+ agent: Schema.String,
112
+ startedAt: Schema.String, // ISO string
113
+ endedAt: Schema.NullOr(Schema.String), // ISO string
114
+ status: RunStatusSchema,
115
+ exitCode: Schema.NullOr(Schema.Number.pipe(Schema.int())),
116
+ pid: Schema.NullOr(Schema.Number.pipe(Schema.int())),
117
+ transcriptPath: Schema.NullOr(Schema.String),
118
+ stderrPath: Schema.NullOr(Schema.String),
119
+ stdoutPath: Schema.NullOr(Schema.String),
120
+ contextInjected: Schema.NullOr(Schema.String),
121
+ summary: Schema.NullOr(Schema.String),
122
+ errorMessage: Schema.NullOr(Schema.String),
123
+ metadata: Schema.Record({ key: Schema.String, value: Schema.Unknown }),
124
+ });
125
+ /**
126
+ * Attempt serialized for JSON output.
127
+ */
128
+ export const AttemptSerializedSchema = Schema.Struct({
129
+ id: AttemptIdSchema,
130
+ taskId: TaskIdSchema,
131
+ approach: Schema.String,
132
+ outcome: AttemptOutcomeSchema,
133
+ reason: Schema.NullOr(Schema.String),
134
+ createdAt: Schema.String, // ISO string
135
+ });
136
+ // =============================================================================
137
+ // SERIALIZATION FUNCTIONS
138
+ // =============================================================================
139
+ // Pure functions to convert domain types to serialized types.
140
+ // Use these across CLI, MCP, API, and SDK for consistent JSON output.
141
+ /**
142
+ * Serialize a TaskWithDeps for JSON output.
143
+ * Converts Date objects to ISO strings.
144
+ */
145
+ export const serializeTask = (task) => ({
146
+ id: task.id,
147
+ title: task.title,
148
+ description: task.description,
149
+ status: task.status,
150
+ parentId: task.parentId,
151
+ score: task.score,
152
+ createdAt: task.createdAt.toISOString(),
153
+ updatedAt: task.updatedAt.toISOString(),
154
+ completedAt: task.completedAt?.toISOString() ?? null,
155
+ metadata: task.metadata,
156
+ blockedBy: task.blockedBy,
157
+ blocks: task.blocks,
158
+ children: task.children,
159
+ isReady: task.isReady,
160
+ });
161
+ /**
162
+ * Serialize a Learning for JSON output.
163
+ * Converts Date objects to ISO strings.
164
+ * Embeddings are omitted (null) to avoid serialization overhead —
165
+ * Float32Array → Array.from() → JSON.stringify is expensive and
166
+ * external consumers never need raw embedding vectors.
167
+ */
168
+ export const serializeLearning = (learning) => ({
169
+ id: learning.id,
170
+ content: learning.content,
171
+ sourceType: learning.sourceType,
172
+ sourceRef: learning.sourceRef,
173
+ createdAt: learning.createdAt.toISOString(),
174
+ keywords: learning.keywords,
175
+ category: learning.category,
176
+ usageCount: learning.usageCount,
177
+ lastUsedAt: learning.lastUsedAt?.toISOString() ?? null,
178
+ outcomeScore: learning.outcomeScore,
179
+ embedding: null,
180
+ });
181
+ /**
182
+ * Serialize a LearningWithScore for JSON output.
183
+ * Extends serializeLearning with score fields.
184
+ */
185
+ export const serializeLearningWithScore = (learning) => ({
186
+ ...serializeLearning(learning),
187
+ relevanceScore: learning.relevanceScore,
188
+ bm25Score: learning.bm25Score,
189
+ vectorScore: learning.vectorScore,
190
+ recencyScore: learning.recencyScore,
191
+ rrfScore: learning.rrfScore,
192
+ bm25Rank: learning.bm25Rank,
193
+ vectorRank: learning.vectorRank,
194
+ rerankerScore: learning.rerankerScore,
195
+ feedbackScore: learning.feedbackScore,
196
+ });
197
+ /**
198
+ * Serialize a FileLearning for JSON output.
199
+ */
200
+ export const serializeFileLearning = (learning) => ({
201
+ id: learning.id,
202
+ filePattern: learning.filePattern,
203
+ note: learning.note,
204
+ taskId: learning.taskId,
205
+ createdAt: learning.createdAt.toISOString(),
206
+ });
207
+ /**
208
+ * Serialize a Run for JSON output.
209
+ */
210
+ export const serializeRun = (run) => ({
211
+ id: run.id,
212
+ taskId: run.taskId,
213
+ agent: run.agent,
214
+ startedAt: run.startedAt.toISOString(),
215
+ endedAt: run.endedAt?.toISOString() ?? null,
216
+ status: run.status,
217
+ exitCode: run.exitCode,
218
+ pid: run.pid,
219
+ transcriptPath: run.transcriptPath,
220
+ stderrPath: run.stderrPath,
221
+ stdoutPath: run.stdoutPath,
222
+ contextInjected: run.contextInjected,
223
+ summary: run.summary,
224
+ errorMessage: run.errorMessage,
225
+ metadata: run.metadata,
226
+ });
227
+ /**
228
+ * Serialize an Attempt for JSON output.
229
+ */
230
+ export const serializeAttempt = (attempt) => ({
231
+ id: attempt.id,
232
+ taskId: attempt.taskId,
233
+ approach: attempt.approach,
234
+ outcome: attempt.outcome,
235
+ reason: attempt.reason,
236
+ createdAt: attempt.createdAt.toISOString(),
237
+ });
238
+ /**
239
+ * Error response with structured error info.
240
+ * Use for all error responses.
241
+ */
242
+ export const ErrorResponseSchema = Schema.Struct({
243
+ error: Schema.Struct({
244
+ /** Error code (e.g., "NOT_FOUND", "VALIDATION_ERROR") */
245
+ code: Schema.String,
246
+ /** Human-readable error message */
247
+ message: Schema.String,
248
+ /** Additional error details */
249
+ details: Schema.optional(Schema.Record({ key: Schema.String, value: Schema.Unknown })),
250
+ }),
251
+ });
252
+ // =============================================================================
253
+ // TASK RESPONSE SCHEMAS
254
+ // =============================================================================
255
+ // Standard task response shapes used across CLI, MCP, API, and SDK.
256
+ /** Response for listing ready tasks. */
257
+ export const TaskReadyResponseSchema = Schema.Struct({
258
+ tasks: Schema.Array(TaskWithDepsSerializedSchema),
259
+ count: Schema.Number.pipe(Schema.int()),
260
+ });
261
+ /** Response for listing tasks with pagination. */
262
+ export const TaskListResponseSchema = Schema.Struct({
263
+ items: Schema.Array(TaskWithDepsSerializedSchema),
264
+ tasks: Schema.Array(TaskWithDepsSerializedSchema),
265
+ total: Schema.Number.pipe(Schema.int()),
266
+ nextCursor: Schema.NullOr(Schema.String),
267
+ hasMore: Schema.Boolean,
268
+ });
269
+ /** Response for getting a single task with full details. */
270
+ export const TaskDetailResponseSchema = Schema.Struct({
271
+ task: TaskWithDepsSerializedSchema,
272
+ /** Tasks that block this task (full details, not just IDs) */
273
+ blockedByTasks: Schema.Array(TaskWithDepsSerializedSchema),
274
+ /** Tasks that this task blocks (full details, not just IDs) */
275
+ blocksTasks: Schema.Array(TaskWithDepsSerializedSchema),
276
+ /** Child tasks (full details, not just IDs) */
277
+ childTasks: Schema.Array(TaskWithDepsSerializedSchema),
278
+ });
279
+ /** Response for completing a task. */
280
+ export const TaskCompletionResponseSchema = Schema.Struct({
281
+ /** The completed task */
282
+ task: TaskWithDepsSerializedSchema,
283
+ /** Tasks that became ready after this completion */
284
+ nowReady: Schema.Array(TaskWithDepsSerializedSchema),
285
+ });
286
+ /** Response for task tree/hierarchy queries. */
287
+ export const TaskTreeResponseSchema = Schema.Struct({
288
+ tasks: Schema.Array(TaskWithDepsSerializedSchema),
289
+ /** Root task ID */
290
+ rootId: TaskIdSchema,
291
+ });
292
+ // =============================================================================
293
+ // LEARNING RESPONSE SCHEMAS
294
+ // =============================================================================
295
+ // Standard learning response shapes.
296
+ /** Response for searching learnings. */
297
+ export const LearningSearchResponseSchema = Schema.Struct({
298
+ learnings: Schema.Array(LearningWithScoreSerializedSchema),
299
+ query: Schema.String,
300
+ count: Schema.Number.pipe(Schema.int()),
301
+ });
302
+ /** Response for getting contextual learnings for a task. */
303
+ export const ContextResponseSchema = Schema.Struct({
304
+ taskId: Schema.String,
305
+ taskTitle: Schema.String,
306
+ learnings: Schema.Array(LearningWithScoreSerializedSchema),
307
+ searchQuery: Schema.String,
308
+ /** Search duration in milliseconds */
309
+ searchDuration: Schema.Number,
310
+ });
311
+ /** Response for file learnings. */
312
+ export const FileLearningListResponseSchema = Schema.Struct({
313
+ learnings: Schema.Array(FileLearningsSerializedSchema),
314
+ count: Schema.Number.pipe(Schema.int()),
315
+ /** File path used for matching (if provided) */
316
+ matchedPath: Schema.optional(Schema.String),
317
+ });
318
+ // =============================================================================
319
+ // RUN RESPONSE SCHEMAS
320
+ // =============================================================================
321
+ // Standard run response shapes.
322
+ /** Response for listing runs. */
323
+ export const RunListResponseSchema = Schema.Struct({
324
+ runs: Schema.Array(RunSerializedSchema),
325
+ count: Schema.Number.pipe(Schema.int()),
326
+ });
327
+ /** Response for getting a single run with details. */
328
+ export const RunDetailResponseSchema = Schema.Struct({
329
+ run: RunSerializedSchema,
330
+ /** Associated task (if any) */
331
+ task: Schema.optional(TaskWithDepsSerializedSchema),
332
+ /** Attempts made during this run */
333
+ attempts: Schema.Array(AttemptSerializedSchema),
334
+ });
335
+ // =============================================================================
336
+ // SYNC RESPONSE SCHEMAS
337
+ // =============================================================================
338
+ // Standard sync operation response shapes.
339
+ /** Response for sync export operation. */
340
+ export const SyncExportResponseSchema = Schema.Struct({
341
+ success: Schema.Boolean,
342
+ outputPath: Schema.String,
343
+ taskCount: Schema.Number.pipe(Schema.int()),
344
+ learningCount: Schema.Number.pipe(Schema.int()),
345
+ });
346
+ /** Response for sync import operation. */
347
+ export const SyncImportResponseSchema = Schema.Struct({
348
+ success: Schema.Boolean,
349
+ inputPath: Schema.String,
350
+ tasksImported: Schema.Number.pipe(Schema.int()),
351
+ learningsImported: Schema.Number.pipe(Schema.int()),
352
+ conflicts: Schema.Number.pipe(Schema.int()),
353
+ });
354
+ //# sourceMappingURL=response.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"response.js","sourceRoot":"","sources":["../src/response.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAE1D,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAA;AAExD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AAEzD,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAEvD,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AAGpE,gFAAgF;AAChF,4BAA4B;AAC5B,gFAAgF;AAChF,sFAAsF;AACtF,8DAA8D;AAE9D;;;;GAIG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,MAAM,CAAC,MAAM,CAAC;IACxD,EAAE,EAAE,YAAY;IAChB,KAAK,EAAE,MAAM,CAAC,MAAM;IACpB,WAAW,EAAE,MAAM,CAAC,MAAM;IAC1B,MAAM,EAAE,gBAAgB;IACxB,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC;IACrC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;IACvC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa;IACvC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa;IACvC,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,aAAa;IACxD,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;IACtE,oCAAoC;IACpC,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC;IACrC,gCAAgC;IAChC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC;IAClC,4BAA4B;IAC5B,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC;IACpC,wFAAwF;IACxF,OAAO,EAAE,MAAM,CAAC,OAAO;CACxB,CAAC,CAAA;AAGF;;;;GAIG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,MAAM,CAAC,MAAM,CAAC;IACpD,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;IACpC,OAAO,EAAE,MAAM,CAAC,MAAM;IACtB,UAAU,EAAE,wBAAwB;IACpC,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;IACvC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa;IACvC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;IACrC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;IACtC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;IAC5C,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,aAAa;IACvD,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;IAC1C,8DAA8D;IAC9D,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;CACtD,CAAC,CAAA;AAGF;;;GAGG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,MAAM,CAAC,MAAM,CAAC;IAC7D,GAAG,wBAAwB,CAAC,MAAM;IAClC,qCAAqC;IACrC,cAAc,EAAE,MAAM,CAAC,MAAM;IAC7B,6BAA6B;IAC7B,SAAS,EAAE,MAAM,CAAC,MAAM;IACxB,oCAAoC;IACpC,WAAW,EAAE,MAAM,CAAC,MAAM;IAC1B,4CAA4C;IAC5C,YAAY,EAAE,MAAM,CAAC,MAAM;IAC3B,iFAAiF;IACjF,QAAQ,EAAE,MAAM,CAAC,MAAM;IACvB,iEAAiE;IACjE,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;IAC1C,gFAAgF;IAChF,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;IAC5C,kFAAkF;IAClF,aAAa,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;IAC7C,0EAA0E;IAC1E,aAAa,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;CAC9C,CAAC,CAAA;AAGF;;GAEG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,MAAM,CAAC,MAAM,CAAC;IACzD,EAAE,EAAE,oBAAoB;IACxB,WAAW,EAAE,MAAM,CAAC,MAAM;IAC1B,IAAI,EAAE,MAAM,CAAC,MAAM;IACnB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;IACpC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa;CACxC,CAAC,CAAA;AAGF;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,CAAC;IAC/C,EAAE,EAAE,WAAW;IACf,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;IACpC,KAAK,EAAE,MAAM,CAAC,MAAM;IACpB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa;IACvC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,aAAa;IACpD,MAAM,EAAE,eAAe;IACvB,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;IACzD,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;IACpD,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;IAC5C,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;IACxC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;IACxC,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;IAC7C,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;IACrC,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;IAC1C,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;CACvE,CAAC,CAAA;AAGF;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAM,CAAC,MAAM,CAAC;IACnD,EAAE,EAAE,eAAe;IACnB,MAAM,EAAE,YAAY;IACpB,QAAQ,EAAE,MAAM,CAAC,MAAM;IACvB,OAAO,EAAE,oBAAoB;IAC7B,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;IACpC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa;CACxC,CAAC,CAAA;AAGF,gFAAgF;AAChF,0BAA0B;AAC1B,gFAAgF;AAChF,8DAA8D;AAC9D,sEAAsE;AAEtE;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,IAAkB,EAA0B,EAAE,CAAC,CAAC;IAC5E,EAAE,EAAE,IAAI,CAAC,EAAE;IACX,KAAK,EAAE,IAAI,CAAC,KAAK;IACjB,WAAW,EAAE,IAAI,CAAC,WAAW;IAC7B,MAAM,EAAE,IAAI,CAAC,MAAM;IACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;IACvB,KAAK,EAAE,IAAI,CAAC,KAAK;IACjB,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE;IACvC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE;IACvC,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,IAAI,IAAI;IACpD,QAAQ,EAAE,IAAI,CAAC,QAAQ;IACvB,SAAS,EAAE,IAAI,CAAC,SAAS;IACzB,MAAM,EAAE,IAAI,CAAC,MAAM;IACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;IACvB,OAAO,EAAE,IAAI,CAAC,OAAO;CACtB,CAAC,CAAA;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,QAAkB,EAAsB,EAAE,CAAC,CAAC;IAC5E,EAAE,EAAE,QAAQ,CAAC,EAAE;IACf,OAAO,EAAE,QAAQ,CAAC,OAAO;IACzB,UAAU,EAAE,QAAQ,CAAC,UAAU;IAC/B,SAAS,EAAE,QAAQ,CAAC,SAAS;IAC7B,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAC,WAAW,EAAE;IAC3C,QAAQ,EAAE,QAAQ,CAAC,QAAQ;IAC3B,QAAQ,EAAE,QAAQ,CAAC,QAAQ;IAC3B,UAAU,EAAE,QAAQ,CAAC,UAAU;IAC/B,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,WAAW,EAAE,IAAI,IAAI;IACtD,YAAY,EAAE,QAAQ,CAAC,YAAY;IACnC,SAAS,EAAE,IAAI;CAChB,CAAC,CAAA;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,QAA2B,EAA+B,EAAE,CAAC,CAAC;IACvG,GAAG,iBAAiB,CAAC,QAAQ,CAAC;IAC9B,cAAc,EAAE,QAAQ,CAAC,cAAc;IACvC,SAAS,EAAE,QAAQ,CAAC,SAAS;IAC7B,WAAW,EAAE,QAAQ,CAAC,WAAW;IACjC,YAAY,EAAE,QAAQ,CAAC,YAAY;IACnC,QAAQ,EAAE,QAAQ,CAAC,QAAQ;IAC3B,QAAQ,EAAE,QAAQ,CAAC,QAAQ;IAC3B,UAAU,EAAE,QAAQ,CAAC,UAAU;IAC/B,aAAa,EAAE,QAAQ,CAAC,aAAa;IACrC,aAAa,EAAE,QAAQ,CAAC,aAAa;CACtC,CAAC,CAAA;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,QAAsB,EAA2B,EAAE,CAAC,CAAC;IACzF,EAAE,EAAE,QAAQ,CAAC,EAAE;IACf,WAAW,EAAE,QAAQ,CAAC,WAAW;IACjC,IAAI,EAAE,QAAQ,CAAC,IAAI;IACnB,MAAM,EAAE,QAAQ,CAAC,MAAM;IACvB,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAC,WAAW,EAAE;CAC5C,CAAC,CAAA;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,GAAQ,EAAiB,EAAE,CAAC,CAAC;IACxD,EAAE,EAAE,GAAG,CAAC,EAAE;IACV,MAAM,EAAE,GAAG,CAAC,MAAM;IAClB,KAAK,EAAE,GAAG,CAAC,KAAK;IAChB,SAAS,EAAE,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE;IACtC,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,IAAI;IAC3C,MAAM,EAAE,GAAG,CAAC,MAAM;IAClB,QAAQ,EAAE,GAAG,CAAC,QAAQ;IACtB,GAAG,EAAE,GAAG,CAAC,GAAG;IACZ,cAAc,EAAE,GAAG,CAAC,cAAc;IAClC,UAAU,EAAE,GAAG,CAAC,UAAU;IAC1B,UAAU,EAAE,GAAG,CAAC,UAAU;IAC1B,eAAe,EAAE,GAAG,CAAC,eAAe;IACpC,OAAO,EAAE,GAAG,CAAC,OAAO;IACpB,YAAY,EAAE,GAAG,CAAC,YAAY;IAC9B,QAAQ,EAAE,GAAG,CAAC,QAAQ;CACvB,CAAC,CAAA;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,OAAgB,EAAqB,EAAE,CAAC,CAAC;IACxE,EAAE,EAAE,OAAO,CAAC,EAAE;IACd,MAAM,EAAE,OAAO,CAAC,MAAM;IACtB,QAAQ,EAAE,OAAO,CAAC,QAAQ;IAC1B,OAAO,EAAE,OAAO,CAAC,OAAO;IACxB,MAAM,EAAE,OAAO,CAAC,MAAM;IACtB,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,WAAW,EAAE;CAC3C,CAAC,CAAA;AA2CF;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,CAAC;IAC/C,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC;QACnB,yDAAyD;QACzD,IAAI,EAAE,MAAM,CAAC,MAAM;QACnB,mCAAmC;QACnC,OAAO,EAAE,MAAM,CAAC,MAAM;QACtB,+BAA+B;QAC/B,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;KACvF,CAAC;CACH,CAAC,CAAA;AAGF,gFAAgF;AAChF,wBAAwB;AACxB,gFAAgF;AAChF,oEAAoE;AAEpE,wCAAwC;AACxC,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAM,CAAC,MAAM,CAAC;IACnD,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,4BAA4B,CAAC;IACjD,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;CACxC,CAAC,CAAA;AAGF,kDAAkD;AAClD,MAAM,CAAC,MAAM,sBAAsB,GAAG,MAAM,CAAC,MAAM,CAAC;IAClD,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,4BAA4B,CAAC;IACjD,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,4BAA4B,CAAC;IACjD,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;IACvC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;IACxC,OAAO,EAAE,MAAM,CAAC,OAAO;CACxB,CAAC,CAAA;AAGF,4DAA4D;AAC5D,MAAM,CAAC,MAAM,wBAAwB,GAAG,MAAM,CAAC,MAAM,CAAC;IACpD,IAAI,EAAE,4BAA4B;IAClC,8DAA8D;IAC9D,cAAc,EAAE,MAAM,CAAC,KAAK,CAAC,4BAA4B,CAAC;IAC1D,+DAA+D;IAC/D,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC,4BAA4B,CAAC;IACvD,+CAA+C;IAC/C,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC,4BAA4B,CAAC;CACvD,CAAC,CAAA;AAGF,sCAAsC;AACtC,MAAM,CAAC,MAAM,4BAA4B,GAAG,MAAM,CAAC,MAAM,CAAC;IACxD,yBAAyB;IACzB,IAAI,EAAE,4BAA4B;IAClC,oDAAoD;IACpD,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,4BAA4B,CAAC;CACrD,CAAC,CAAA;AAGF,gDAAgD;AAChD,MAAM,CAAC,MAAM,sBAAsB,GAAG,MAAM,CAAC,MAAM,CAAC;IAClD,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,4BAA4B,CAAC;IACjD,mBAAmB;IACnB,MAAM,EAAE,YAAY;CACrB,CAAC,CAAA;AAGF,gFAAgF;AAChF,4BAA4B;AAC5B,gFAAgF;AAChF,qCAAqC;AAErC,wCAAwC;AACxC,MAAM,CAAC,MAAM,4BAA4B,GAAG,MAAM,CAAC,MAAM,CAAC;IACxD,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,iCAAiC,CAAC;IAC1D,KAAK,EAAE,MAAM,CAAC,MAAM;IACpB,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;CACxC,CAAC,CAAA;AAGF,4DAA4D;AAC5D,MAAM,CAAC,MAAM,qBAAqB,GAAG,MAAM,CAAC,MAAM,CAAC;IACjD,MAAM,EAAE,MAAM,CAAC,MAAM;IACrB,SAAS,EAAE,MAAM,CAAC,MAAM;IACxB,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,iCAAiC,CAAC;IAC1D,WAAW,EAAE,MAAM,CAAC,MAAM;IAC1B,sCAAsC;IACtC,cAAc,EAAE,MAAM,CAAC,MAAM;CAC9B,CAAC,CAAA;AAGF,mCAAmC;AACnC,MAAM,CAAC,MAAM,8BAA8B,GAAG,MAAM,CAAC,MAAM,CAAC;IAC1D,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,6BAA6B,CAAC;IACtD,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;IACvC,gDAAgD;IAChD,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;CAC5C,CAAC,CAAA;AAGF,gFAAgF;AAChF,uBAAuB;AACvB,gFAAgF;AAChF,gCAAgC;AAEhC,iCAAiC;AACjC,MAAM,CAAC,MAAM,qBAAqB,GAAG,MAAM,CAAC,MAAM,CAAC;IACjD,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC;IACvC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;CACxC,CAAC,CAAA;AAGF,sDAAsD;AACtD,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAM,CAAC,MAAM,CAAC;IACnD,GAAG,EAAE,mBAAmB;IACxB,+BAA+B;IAC/B,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,4BAA4B,CAAC;IACnD,oCAAoC;IACpC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,uBAAuB,CAAC;CAChD,CAAC,CAAA;AAGF,gFAAgF;AAChF,wBAAwB;AACxB,gFAAgF;AAChF,2CAA2C;AAE3C,0CAA0C;AAC1C,MAAM,CAAC,MAAM,wBAAwB,GAAG,MAAM,CAAC,MAAM,CAAC;IACpD,OAAO,EAAE,MAAM,CAAC,OAAO;IACvB,UAAU,EAAE,MAAM,CAAC,MAAM;IACzB,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;IAC3C,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;CAChD,CAAC,CAAA;AAGF,0CAA0C;AAC1C,MAAM,CAAC,MAAM,wBAAwB,GAAG,MAAM,CAAC,MAAM,CAAC;IACpD,OAAO,EAAE,MAAM,CAAC,OAAO;IACvB,SAAS,EAAE,MAAM,CAAC,MAAM;IACxB,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;IAC/C,iBAAiB,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;IACnD,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;CAC5C,CAAC,CAAA"}
package/dist/run.d.ts CHANGED
@@ -2,63 +2,94 @@
2
2
  * Run types for tx
3
3
  *
4
4
  * Type definitions for tracking Claude agent runs/sessions.
5
- * Zero runtime dependencies - pure TypeScript types only.
5
+ * Core type definitions using Effect Schema (Doctrine Rule 10).
6
+ * Schema definitions provide both compile-time types and runtime validation.
6
7
  */
7
- /**
8
- * Run ID format: run-<8 hex chars>
9
- */
10
- export type RunId = `run-${string}`;
8
+ import { Schema } from "effect";
11
9
  /**
12
10
  * Valid run statuses.
13
11
  */
14
12
  export declare const RUN_STATUSES: readonly ["running", "completed", "failed", "timeout", "cancelled"];
13
+ /** Run status - current state of an agent run. */
14
+ export declare const RunStatusSchema: Schema.Literal<["running", "completed", "failed", "timeout", "cancelled"]>;
15
+ export type RunStatus = typeof RunStatusSchema.Type;
16
+ /** Run ID - branded string matching run-<hex chars>. */
17
+ export declare const RunIdSchema: Schema.brand<Schema.filter<typeof Schema.String>, "RunId">;
18
+ export type RunId = typeof RunIdSchema.Type;
19
+ /** A single Claude agent run/session. */
20
+ export declare const RunSchema: Schema.Struct<{
21
+ id: Schema.brand<Schema.filter<typeof Schema.String>, "RunId">;
22
+ taskId: Schema.NullOr<typeof Schema.String>;
23
+ agent: typeof Schema.String;
24
+ startedAt: typeof Schema.DateFromSelf;
25
+ endedAt: Schema.NullOr<typeof Schema.DateFromSelf>;
26
+ status: Schema.Literal<["running", "completed", "failed", "timeout", "cancelled"]>;
27
+ exitCode: Schema.NullOr<Schema.filter<typeof Schema.Number>>;
28
+ pid: Schema.NullOr<Schema.filter<typeof Schema.Number>>;
29
+ transcriptPath: Schema.NullOr<typeof Schema.String>;
30
+ stderrPath: Schema.NullOr<typeof Schema.String>;
31
+ stdoutPath: Schema.NullOr<typeof Schema.String>;
32
+ contextInjected: Schema.NullOr<typeof Schema.String>;
33
+ summary: Schema.NullOr<typeof Schema.String>;
34
+ errorMessage: Schema.NullOr<typeof Schema.String>;
35
+ metadata: Schema.Record$<typeof Schema.String, typeof Schema.Unknown>;
36
+ }>;
37
+ export type Run = typeof RunSchema.Type;
38
+ /** Input for creating a new run. */
39
+ export declare const CreateRunInputSchema: Schema.Struct<{
40
+ taskId: Schema.optional<typeof Schema.String>;
41
+ agent: typeof Schema.String;
42
+ pid: Schema.optional<Schema.filter<typeof Schema.Number>>;
43
+ transcriptPath: Schema.optional<typeof Schema.String>;
44
+ stderrPath: Schema.optional<typeof Schema.String>;
45
+ stdoutPath: Schema.optional<typeof Schema.String>;
46
+ contextInjected: Schema.optional<typeof Schema.String>;
47
+ metadata: Schema.optional<Schema.Record$<typeof Schema.String, typeof Schema.Unknown>>;
48
+ }>;
49
+ export type CreateRunInput = typeof CreateRunInputSchema.Type;
50
+ /** Input for updating an existing run. */
51
+ export declare const UpdateRunInputSchema: Schema.Struct<{
52
+ status: Schema.optional<Schema.Literal<["running", "completed", "failed", "timeout", "cancelled"]>>;
53
+ endedAt: Schema.optional<typeof Schema.DateFromSelf>;
54
+ exitCode: Schema.optional<Schema.filter<typeof Schema.Number>>;
55
+ summary: Schema.optional<typeof Schema.String>;
56
+ errorMessage: Schema.optional<typeof Schema.String>;
57
+ transcriptPath: Schema.optional<typeof Schema.String>;
58
+ stderrPath: Schema.optional<typeof Schema.String>;
59
+ stdoutPath: Schema.optional<typeof Schema.String>;
60
+ }>;
61
+ export type UpdateRunInput = typeof UpdateRunInputSchema.Type;
15
62
  /**
16
- * Run status - current state of an agent run.
63
+ * Check if a string is a valid run status.
17
64
  */
18
- export type RunStatus = (typeof RUN_STATUSES)[number];
65
+ export declare const isValidRunStatus: (status: string) => status is RunStatus;
19
66
  /**
20
- * A single Claude agent run/session.
67
+ * Error thrown when a run status is invalid.
21
68
  */
22
- export interface Run {
23
- readonly id: RunId;
24
- readonly taskId: string | null;
25
- readonly agent: string;
26
- readonly startedAt: Date;
27
- readonly endedAt: Date | null;
28
- readonly status: RunStatus;
29
- readonly exitCode: number | null;
30
- readonly pid: number | null;
31
- readonly transcriptPath: string | null;
32
- readonly contextInjected: string | null;
33
- readonly summary: string | null;
34
- readonly errorMessage: string | null;
35
- readonly metadata: Record<string, unknown>;
69
+ export declare class InvalidRunStatusError extends Error {
70
+ readonly status: string;
71
+ constructor(status: string);
36
72
  }
37
73
  /**
38
- * Input for creating a new run.
74
+ * Validate and return a RunStatus, or throw if invalid.
39
75
  */
40
- export interface CreateRunInput {
41
- readonly taskId?: string;
42
- readonly agent: string;
43
- readonly pid?: number;
44
- readonly transcriptPath?: string;
45
- readonly contextInjected?: string;
46
- readonly metadata?: Record<string, unknown>;
47
- }
76
+ export declare const assertRunStatus: (status: string) => RunStatus;
77
+ /**
78
+ * Check if a string is a valid run ID format.
79
+ */
80
+ export declare const isValidRunId: (id: string) => id is RunId;
48
81
  /**
49
- * Input for updating an existing run.
82
+ * Error thrown when a run ID is invalid.
50
83
  */
51
- export interface UpdateRunInput {
52
- readonly status?: RunStatus;
53
- readonly endedAt?: Date;
54
- readonly exitCode?: number;
55
- readonly summary?: string;
56
- readonly errorMessage?: string;
57
- readonly transcriptPath?: string;
84
+ export declare class InvalidRunIdError extends Error {
85
+ readonly id: string;
86
+ constructor(id: string);
58
87
  }
59
88
  /**
60
- * Database row type for runs (snake_case from SQLite).
89
+ * Validate and return a branded RunId, or throw if invalid.
61
90
  */
91
+ export declare const assertRunId: (id: string) => RunId;
92
+ /** Database row type for runs (snake_case from SQLite). */
62
93
  export interface RunRow {
63
94
  id: string;
64
95
  task_id: string | null;
@@ -69,6 +100,8 @@ export interface RunRow {
69
100
  exit_code: number | null;
70
101
  pid: number | null;
71
102
  transcript_path: string | null;
103
+ stderr_path: string | null;
104
+ stdout_path: string | null;
72
105
  context_injected: string | null;
73
106
  summary: string | null;
74
107
  error_message: string | null;
package/dist/run.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,MAAM,KAAK,GAAG,OAAO,MAAM,EAAE,CAAC;AAEpC;;GAEG;AACH,eAAO,MAAM,YAAY,qEAMf,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAEtD;;GAEG;AACH,MAAM,WAAW,GAAG;IAClB,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IACnB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,IAAI,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,QAAQ,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC5C;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC7C;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC;IACxB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC;CAClB"}
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAM/B;;GAEG;AACH,eAAO,MAAM,YAAY,qEAMf,CAAC;AAMX,kDAAkD;AAClD,eAAO,MAAM,eAAe,4EAAkC,CAAA;AAC9D,MAAM,MAAM,SAAS,GAAG,OAAO,eAAe,CAAC,IAAI,CAAA;AAEnD,wDAAwD;AACxD,eAAO,MAAM,WAAW,4DAGvB,CAAA;AACD,MAAM,MAAM,KAAK,GAAG,OAAO,WAAW,CAAC,IAAI,CAAA;AAE3C,yCAAyC;AACzC,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;EAgBpB,CAAA;AACF,MAAM,MAAM,GAAG,GAAG,OAAO,SAAS,CAAC,IAAI,CAAA;AAEvC,oCAAoC;AACpC,eAAO,MAAM,oBAAoB;;;;;;;;;EAS/B,CAAA;AACF,MAAM,MAAM,cAAc,GAAG,OAAO,oBAAoB,CAAC,IAAI,CAAA;AAE7D,0CAA0C;AAC1C,eAAO,MAAM,oBAAoB;;;;;;;;;EAS/B,CAAA;AACF,MAAM,MAAM,cAAc,GAAG,OAAO,oBAAoB,CAAC,IAAI,CAAA;AAM7D;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAAI,QAAQ,MAAM,KAAG,MAAM,IAAI,SAE3D,CAAC;AAEF;;GAEG;AACH,qBAAa,qBAAsB,SAAQ,KAAK;aAClB,MAAM,EAAE,MAAM;gBAAd,MAAM,EAAE,MAAM;CAI3C;AAED;;GAEG;AACH,eAAO,MAAM,eAAe,GAAI,QAAQ,MAAM,KAAG,SAKhD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,GAAI,IAAI,MAAM,KAAG,EAAE,IAAI,KAE/C,CAAC;AAEF;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,KAAK;aACd,EAAE,EAAE,MAAM;gBAAV,EAAE,EAAE,MAAM;CAIvC;AAED;;GAEG;AACH,eAAO,MAAM,WAAW,GAAI,IAAI,MAAM,KAAG,KAKxC,CAAC;AAMF,2DAA2D;AAC3D,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC;CAClB"}
package/dist/run.js CHANGED
@@ -2,8 +2,13 @@
2
2
  * Run types for tx
3
3
  *
4
4
  * Type definitions for tracking Claude agent runs/sessions.
5
- * Zero runtime dependencies - pure TypeScript types only.
5
+ * Core type definitions using Effect Schema (Doctrine Rule 10).
6
+ * Schema definitions provide both compile-time types and runtime validation.
6
7
  */
8
+ import { Schema } from "effect";
9
+ // =============================================================================
10
+ // CONSTANTS
11
+ // =============================================================================
7
12
  /**
8
13
  * Valid run statuses.
9
14
  */
@@ -14,4 +19,106 @@ export const RUN_STATUSES = [
14
19
  "timeout",
15
20
  "cancelled",
16
21
  ];
22
+ // =============================================================================
23
+ // SCHEMAS & TYPES
24
+ // =============================================================================
25
+ /** Run status - current state of an agent run. */
26
+ export const RunStatusSchema = Schema.Literal(...RUN_STATUSES);
27
+ /** Run ID - branded string matching run-<hex chars>. */
28
+ export const RunIdSchema = Schema.String.pipe(Schema.pattern(/^run-.+$/), Schema.brand("RunId"));
29
+ /** A single Claude agent run/session. */
30
+ export const RunSchema = Schema.Struct({
31
+ id: RunIdSchema,
32
+ taskId: Schema.NullOr(Schema.String),
33
+ agent: Schema.String,
34
+ startedAt: Schema.DateFromSelf,
35
+ endedAt: Schema.NullOr(Schema.DateFromSelf),
36
+ status: RunStatusSchema,
37
+ exitCode: Schema.NullOr(Schema.Number.pipe(Schema.int())),
38
+ pid: Schema.NullOr(Schema.Number.pipe(Schema.int())),
39
+ transcriptPath: Schema.NullOr(Schema.String),
40
+ stderrPath: Schema.NullOr(Schema.String),
41
+ stdoutPath: Schema.NullOr(Schema.String),
42
+ contextInjected: Schema.NullOr(Schema.String),
43
+ summary: Schema.NullOr(Schema.String),
44
+ errorMessage: Schema.NullOr(Schema.String),
45
+ metadata: Schema.Record({ key: Schema.String, value: Schema.Unknown }),
46
+ });
47
+ /** Input for creating a new run. */
48
+ export const CreateRunInputSchema = Schema.Struct({
49
+ taskId: Schema.optional(Schema.String),
50
+ agent: Schema.String,
51
+ pid: Schema.optional(Schema.Number.pipe(Schema.int())),
52
+ transcriptPath: Schema.optional(Schema.String),
53
+ stderrPath: Schema.optional(Schema.String),
54
+ stdoutPath: Schema.optional(Schema.String),
55
+ contextInjected: Schema.optional(Schema.String),
56
+ metadata: Schema.optional(Schema.Record({ key: Schema.String, value: Schema.Unknown })),
57
+ });
58
+ /** Input for updating an existing run. */
59
+ export const UpdateRunInputSchema = Schema.Struct({
60
+ status: Schema.optional(RunStatusSchema),
61
+ endedAt: Schema.optional(Schema.DateFromSelf),
62
+ exitCode: Schema.optional(Schema.Number.pipe(Schema.int())),
63
+ summary: Schema.optional(Schema.String),
64
+ errorMessage: Schema.optional(Schema.String),
65
+ transcriptPath: Schema.optional(Schema.String),
66
+ stderrPath: Schema.optional(Schema.String),
67
+ stdoutPath: Schema.optional(Schema.String),
68
+ });
69
+ // =============================================================================
70
+ // RUNTIME VALIDATORS
71
+ // =============================================================================
72
+ /**
73
+ * Check if a string is a valid run status.
74
+ */
75
+ export const isValidRunStatus = (status) => {
76
+ return RUN_STATUSES.includes(status);
77
+ };
78
+ /**
79
+ * Error thrown when a run status is invalid.
80
+ */
81
+ export class InvalidRunStatusError extends Error {
82
+ status;
83
+ constructor(status) {
84
+ super(`Invalid run status: "${status}". Valid statuses: ${RUN_STATUSES.join(", ")}`);
85
+ this.status = status;
86
+ this.name = "InvalidRunStatusError";
87
+ }
88
+ }
89
+ /**
90
+ * Validate and return a RunStatus, or throw if invalid.
91
+ */
92
+ export const assertRunStatus = (status) => {
93
+ if (!isValidRunStatus(status)) {
94
+ throw new InvalidRunStatusError(status);
95
+ }
96
+ return status;
97
+ };
98
+ /**
99
+ * Check if a string is a valid run ID format.
100
+ */
101
+ export const isValidRunId = (id) => {
102
+ return /^run-.+$/.test(id);
103
+ };
104
+ /**
105
+ * Error thrown when a run ID is invalid.
106
+ */
107
+ export class InvalidRunIdError extends Error {
108
+ id;
109
+ constructor(id) {
110
+ super(`Invalid run ID: "${id}". Expected format: run-<identifier>`);
111
+ this.id = id;
112
+ this.name = "InvalidRunIdError";
113
+ }
114
+ }
115
+ /**
116
+ * Validate and return a branded RunId, or throw if invalid.
117
+ */
118
+ export const assertRunId = (id) => {
119
+ if (!isValidRunId(id)) {
120
+ throw new InvalidRunIdError(id);
121
+ }
122
+ return id;
123
+ };
17
124
  //# sourceMappingURL=run.js.map
package/dist/run.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"run.js","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,SAAS;IACT,WAAW;IACX,QAAQ;IACR,SAAS;IACT,WAAW;CACH,CAAC"}
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"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"}