( input: unknown, )
| 304 | } |
| 305 | |
| 306 | export function normalizeCreateTaskInput( |
| 307 | input: unknown, |
| 308 | ): TaskLedgerNormalizeResult<{ subject: string; parentId?: string }> { |
| 309 | if (typeof input !== 'object' || input === null || Array.isArray(input)) { |
| 310 | return invalid('invalid_subject', 'Task input must be an object'); |
| 311 | } |
| 312 | const record = input as CreateTaskInput; |
| 313 | const subject = normalizeTaskSubject(record.subject); |
| 314 | if (!subject.ok) return subject; |
| 315 | if (record.parentId !== undefined && !isSafeTaskId(record.parentId)) { |
| 316 | return invalid('invalid_subject', 'Task parentId must be a stable task id or key'); |
| 317 | } |
| 318 | return { |
| 319 | ok: true, |
| 320 | value: { subject: subject.value, ...(record.parentId ? { parentId: record.parentId } : {}) }, |
| 321 | }; |
| 322 | } |
| 323 | |
| 324 | export function normalizeUpdateTaskInput(input: unknown): TaskLedgerNormalizeResult<{ |
| 325 | subject?: string; |
no test coverage detected