@cospacehq/shared 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 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js ADDED
@@ -0,0 +1,239 @@
1
+ import { z } from "zod";
2
+ export const SenderRoleSchema = z.enum(["human", "agent"]);
3
+ export const TunnelProviderSchema = z.enum(["none", "cloudflare", "ngrok"]);
4
+ export const CoSpaceConfigSchema = z.object({
5
+ version: z.literal(1),
6
+ projectName: z.string().min(1),
7
+ port: z.number().int().positive(),
8
+ workspaceRoot: z.string().min(1),
9
+ dataDir: z.string().min(1),
10
+ auth: z.object({
11
+ token: z.string().min(16),
12
+ encryptionSecret: z.string().min(16).optional(),
13
+ passcodeHash: z.string().length(64).optional()
14
+ }),
15
+ tunnel: z.object({
16
+ provider: TunnelProviderSchema,
17
+ apiKey: z.string().optional()
18
+ })
19
+ });
20
+ export const ProviderKindSchema = z.enum(["openai-compatible"]);
21
+ export const ProviderConfigSchema = z.object({
22
+ id: z.string(),
23
+ providerKey: z.string(),
24
+ label: z.string(),
25
+ kind: ProviderKindSchema,
26
+ baseUrl: z.string().url(),
27
+ defaultModel: z.string(),
28
+ hasApiKey: z.boolean(),
29
+ createdAt: z.string(),
30
+ updatedAt: z.string()
31
+ });
32
+ export const ProviderUpsertInputSchema = z.object({
33
+ label: z.string().trim().min(1),
34
+ kind: ProviderKindSchema.default("openai-compatible"),
35
+ baseUrl: z.string().trim().url(),
36
+ defaultModel: z.string().trim().min(1),
37
+ apiKey: z.string().trim().min(1).optional(),
38
+ clearApiKey: z.boolean().optional().default(false)
39
+ });
40
+ export const ProviderConnectionTestInputSchema = z
41
+ .object({
42
+ providerKey: z.string().trim().min(1).optional(),
43
+ baseUrl: z.string().trim().url().optional(),
44
+ apiKey: z.string().trim().min(1).optional(),
45
+ model: z.string().trim().min(1),
46
+ kind: ProviderKindSchema.default("openai-compatible")
47
+ })
48
+ .superRefine((value, ctx) => {
49
+ const hasDirectConfig = Boolean(value.baseUrl && value.apiKey);
50
+ if (!value.providerKey && !hasDirectConfig) {
51
+ ctx.addIssue({
52
+ code: z.ZodIssueCode.custom,
53
+ message: "Either providerKey or both baseUrl and apiKey are required"
54
+ });
55
+ }
56
+ });
57
+ export const AgentBindingUpdateInputSchema = z.object({
58
+ providerKey: z.string().trim().min(1).nullable().optional(),
59
+ model: z.string().trim().min(1).nullable().optional(),
60
+ seenEnabled: z.boolean().optional(),
61
+ traceEnabled: z.boolean().optional()
62
+ });
63
+ export const AgentCreateInputSchema = z.object({
64
+ name: z.string().trim().min(1).max(80),
65
+ title: z.string().trim().min(1).max(120),
66
+ model: z.string().trim().min(1).max(160),
67
+ providerKey: z.string().trim().min(1).nullable().optional(),
68
+ systemPrompt: z.string().trim().min(1).max(4000).nullable().optional(),
69
+ projectId: z.string().trim().min(1).optional(),
70
+ seenEnabled: z.boolean().default(true),
71
+ traceEnabled: z.boolean().default(true)
72
+ });
73
+ export const AgentStatusSchema = z.enum(["idle", "thinking", "typing"]);
74
+ export const MessageSchema = z.object({
75
+ id: z.string(),
76
+ projectId: z.string(),
77
+ senderId: z.string(),
78
+ senderName: z.string(),
79
+ senderRole: SenderRoleSchema,
80
+ body: z.string(),
81
+ internalTrace: z.string().nullable(),
82
+ createdAt: z.string()
83
+ });
84
+ export const AgentSchema = z.object({
85
+ id: z.string(),
86
+ name: z.string(),
87
+ title: z.string(),
88
+ model: z.string(),
89
+ providerKey: z.string().nullable().default(null),
90
+ systemPrompt: z.string().nullable().default(null),
91
+ seenEnabled: z.boolean().default(true),
92
+ traceEnabled: z.boolean().default(true),
93
+ status: AgentStatusSchema,
94
+ createdAt: z.string()
95
+ });
96
+ export const ProjectSchema = z.object({
97
+ id: z.string(),
98
+ name: z.string(),
99
+ createdAt: z.string()
100
+ });
101
+ export const ProjectMessagePreviewSchema = z.object({
102
+ messageId: z.string(),
103
+ senderRole: SenderRoleSchema,
104
+ senderName: z.string(),
105
+ body: z.string(),
106
+ createdAt: z.string()
107
+ });
108
+ export const ProjectThreadSchema = z.object({
109
+ id: z.string(),
110
+ name: z.string(),
111
+ createdAt: z.string(),
112
+ assignedAgentCount: z.number().int().nonnegative(),
113
+ lastSeenByCount: z.number().int().nonnegative(),
114
+ lastMessage: ProjectMessagePreviewSchema.nullable()
115
+ });
116
+ export const ProjectCreateInputSchema = z.object({
117
+ name: z.string().trim().min(1).max(120)
118
+ });
119
+ export const ProjectAgentAssignmentInputSchema = z.object({
120
+ agentIds: z.array(z.string().trim().min(1)).max(64)
121
+ });
122
+ export const SeenReceiptSchema = z.object({
123
+ id: z.string(),
124
+ messageId: z.string(),
125
+ agentId: z.string(),
126
+ agentName: z.string(),
127
+ model: z.string(),
128
+ seenAt: z.string()
129
+ });
130
+ export const TaskStatusSchema = z.enum(["queued", "in_progress", "blocked", "done", "cancelled"]);
131
+ export const TaskApprovalStatusSchema = z.enum(["not_required", "pending", "approved", "rejected"]);
132
+ export const TaskActionTypeSchema = z.enum(["none", "file_write", "file_mkdir", "file_rename", "file_delete"]);
133
+ export const TaskActionPayloadSchema = z
134
+ .object({
135
+ path: z.string().min(1).optional(),
136
+ nextPath: z.string().min(1).optional(),
137
+ content: z.string().optional()
138
+ })
139
+ .strict();
140
+ export const TaskSchema = z.object({
141
+ id: z.string(),
142
+ projectId: z.string(),
143
+ title: z.string(),
144
+ description: z.string().nullable(),
145
+ status: TaskStatusSchema,
146
+ approvalStatus: TaskApprovalStatusSchema,
147
+ actionType: TaskActionTypeSchema,
148
+ actionPayload: TaskActionPayloadSchema.nullable(),
149
+ assigneeAgentId: z.string().nullable(),
150
+ assigneeAgentName: z.string().nullable(),
151
+ delegatedByMessageId: z.string().nullable(),
152
+ createdBy: z.string(),
153
+ createdAt: z.string(),
154
+ updatedAt: z.string(),
155
+ completedAt: z.string().nullable(),
156
+ errorMessage: z.string().nullable()
157
+ });
158
+ export const TaskEventTypeSchema = z.enum([
159
+ "created",
160
+ "policy_applied",
161
+ "approved",
162
+ "rejected",
163
+ "retry_requested",
164
+ "cancelled",
165
+ "execution_started",
166
+ "execution_succeeded",
167
+ "execution_failed",
168
+ "status_changed"
169
+ ]);
170
+ export const TaskEventSchema = z.object({
171
+ id: z.string(),
172
+ taskId: z.string(),
173
+ projectId: z.string(),
174
+ eventType: TaskEventTypeSchema,
175
+ actorId: z.string(),
176
+ detail: z.string().nullable(),
177
+ createdAt: z.string()
178
+ });
179
+ export const BootstrapPayloadSchema = z.object({
180
+ project: ProjectSchema,
181
+ projects: z.array(ProjectThreadSchema),
182
+ projectAgentIds: z.array(z.string()),
183
+ projectAgentIdsByProject: z.record(z.string(), z.array(z.string())),
184
+ agents: z.array(AgentSchema),
185
+ providers: z.array(ProviderConfigSchema),
186
+ messages: z.array(MessageSchema),
187
+ receiptsByMessage: z.record(z.string(), z.array(SeenReceiptSchema)),
188
+ tasks: z.array(TaskSchema),
189
+ taskEventsByTask: z.record(z.string(), z.array(TaskEventSchema))
190
+ });
191
+ export const TypingEventSchema = z.object({
192
+ projectId: z.string(),
193
+ agentId: z.string(),
194
+ agentName: z.string(),
195
+ model: z.string(),
196
+ state: AgentStatusSchema
197
+ });
198
+ export const ClientMessageInputSchema = z.object({
199
+ body: z.string().trim().min(1),
200
+ senderName: z.string().trim().min(1).default("You")
201
+ });
202
+ export const FileReadInputSchema = z.object({
203
+ path: z.string().min(1),
204
+ actorId: z.string().optional()
205
+ });
206
+ export const FileWriteInputSchema = z.object({
207
+ path: z.string().min(1),
208
+ content: z.string(),
209
+ actorId: z.string().optional()
210
+ });
211
+ export const FileMkdirInputSchema = z.object({
212
+ path: z.string().min(1),
213
+ actorId: z.string().optional()
214
+ });
215
+ export const FileRenameInputSchema = z.object({
216
+ path: z.string().min(1),
217
+ nextPath: z.string().min(1),
218
+ actorId: z.string().optional()
219
+ });
220
+ export const FileDeleteInputSchema = z.object({
221
+ path: z.string().min(1),
222
+ actorId: z.string().optional()
223
+ });
224
+ export const FileListInputSchema = z.object({
225
+ path: z.string().default("."),
226
+ actorId: z.string().optional()
227
+ });
228
+ export const TaskCreateInputSchema = z.object({
229
+ title: z.string().trim().min(1).max(160),
230
+ description: z.string().trim().max(4_000).optional(),
231
+ assigneeAgentId: z.string().trim().min(1).optional(),
232
+ actionType: TaskActionTypeSchema.default("none"),
233
+ actionPayload: TaskActionPayloadSchema.optional(),
234
+ approvalStatus: TaskApprovalStatusSchema.optional()
235
+ });
236
+ export const TaskStatusUpdateInputSchema = z.object({
237
+ status: TaskStatusSchema
238
+ });
239
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,24 @@
1
+ {
2
+ "name": "@cospacehq/shared",
3
+ "version": "0.1.0",
4
+ "type": "module",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "exports": {
8
+ ".": {
9
+ "types": "./dist/index.d.ts",
10
+ "default": "./dist/index.js"
11
+ }
12
+ },
13
+ "scripts": {
14
+ "build": "tsc -p tsconfig.json",
15
+ "typecheck": "tsc -p tsconfig.json --noEmit",
16
+ "lint": "echo \"No lint configured for @cospacehq/shared\""
17
+ },
18
+ "dependencies": {
19
+ "zod": "^3.24.1"
20
+ },
21
+ "devDependencies": {
22
+ "@types/node": "^22.13.10"
23
+ }
24
+ }
package/src/index.ts ADDED
@@ -0,0 +1,304 @@
1
+ import { z } from "zod";
2
+
3
+ export const SenderRoleSchema = z.enum(["human", "agent"]);
4
+ export type SenderRole = z.infer<typeof SenderRoleSchema>;
5
+
6
+ export const TunnelProviderSchema = z.enum(["none", "cloudflare", "ngrok"]);
7
+ export type TunnelProvider = z.infer<typeof TunnelProviderSchema>;
8
+
9
+ export const CoSpaceConfigSchema = z.object({
10
+ version: z.literal(1),
11
+ projectName: z.string().min(1),
12
+ port: z.number().int().positive(),
13
+ workspaceRoot: z.string().min(1),
14
+ dataDir: z.string().min(1),
15
+ auth: z.object({
16
+ token: z.string().min(16),
17
+ encryptionSecret: z.string().min(16).optional(),
18
+ passcodeHash: z.string().length(64).optional()
19
+ }),
20
+ tunnel: z.object({
21
+ provider: TunnelProviderSchema,
22
+ apiKey: z.string().optional()
23
+ })
24
+ });
25
+ export type CoSpaceConfig = z.infer<typeof CoSpaceConfigSchema>;
26
+
27
+ export const ProviderKindSchema = z.enum(["openai-compatible"]);
28
+ export type ProviderKind = z.infer<typeof ProviderKindSchema>;
29
+
30
+ export const ProviderConfigSchema = z.object({
31
+ id: z.string(),
32
+ providerKey: z.string(),
33
+ label: z.string(),
34
+ kind: ProviderKindSchema,
35
+ baseUrl: z.string().url(),
36
+ defaultModel: z.string(),
37
+ hasApiKey: z.boolean(),
38
+ createdAt: z.string(),
39
+ updatedAt: z.string()
40
+ });
41
+ export type ProviderConfig = z.infer<typeof ProviderConfigSchema>;
42
+
43
+ export const ProviderUpsertInputSchema = z.object({
44
+ label: z.string().trim().min(1),
45
+ kind: ProviderKindSchema.default("openai-compatible"),
46
+ baseUrl: z.string().trim().url(),
47
+ defaultModel: z.string().trim().min(1),
48
+ apiKey: z.string().trim().min(1).optional(),
49
+ clearApiKey: z.boolean().optional().default(false)
50
+ });
51
+ export type ProviderUpsertInput = z.infer<typeof ProviderUpsertInputSchema>;
52
+
53
+ export const ProviderConnectionTestInputSchema = z
54
+ .object({
55
+ providerKey: z.string().trim().min(1).optional(),
56
+ baseUrl: z.string().trim().url().optional(),
57
+ apiKey: z.string().trim().min(1).optional(),
58
+ model: z.string().trim().min(1),
59
+ kind: ProviderKindSchema.default("openai-compatible")
60
+ })
61
+ .superRefine((value, ctx) => {
62
+ const hasDirectConfig = Boolean(value.baseUrl && value.apiKey);
63
+ if (!value.providerKey && !hasDirectConfig) {
64
+ ctx.addIssue({
65
+ code: z.ZodIssueCode.custom,
66
+ message: "Either providerKey or both baseUrl and apiKey are required"
67
+ });
68
+ }
69
+ });
70
+ export type ProviderConnectionTestInput = z.infer<typeof ProviderConnectionTestInputSchema>;
71
+
72
+ export const AgentBindingUpdateInputSchema = z.object({
73
+ providerKey: z.string().trim().min(1).nullable().optional(),
74
+ model: z.string().trim().min(1).nullable().optional(),
75
+ seenEnabled: z.boolean().optional(),
76
+ traceEnabled: z.boolean().optional()
77
+ });
78
+ export type AgentBindingUpdateInput = z.infer<typeof AgentBindingUpdateInputSchema>;
79
+
80
+ export const AgentCreateInputSchema = z.object({
81
+ name: z.string().trim().min(1).max(80),
82
+ title: z.string().trim().min(1).max(120),
83
+ model: z.string().trim().min(1).max(160),
84
+ providerKey: z.string().trim().min(1).nullable().optional(),
85
+ systemPrompt: z.string().trim().min(1).max(4000).nullable().optional(),
86
+ projectId: z.string().trim().min(1).optional(),
87
+ seenEnabled: z.boolean().default(true),
88
+ traceEnabled: z.boolean().default(true)
89
+ });
90
+ export type AgentCreateInput = z.infer<typeof AgentCreateInputSchema>;
91
+
92
+ export const AgentStatusSchema = z.enum(["idle", "thinking", "typing"]);
93
+ export type AgentStatus = z.infer<typeof AgentStatusSchema>;
94
+
95
+ export const MessageSchema = z.object({
96
+ id: z.string(),
97
+ projectId: z.string(),
98
+ senderId: z.string(),
99
+ senderName: z.string(),
100
+ senderRole: SenderRoleSchema,
101
+ body: z.string(),
102
+ internalTrace: z.string().nullable(),
103
+ createdAt: z.string()
104
+ });
105
+ export type Message = z.infer<typeof MessageSchema>;
106
+
107
+ export const AgentSchema = z.object({
108
+ id: z.string(),
109
+ name: z.string(),
110
+ title: z.string(),
111
+ model: z.string(),
112
+ providerKey: z.string().nullable().default(null),
113
+ systemPrompt: z.string().nullable().default(null),
114
+ seenEnabled: z.boolean().default(true),
115
+ traceEnabled: z.boolean().default(true),
116
+ status: AgentStatusSchema,
117
+ createdAt: z.string()
118
+ });
119
+ export type Agent = z.infer<typeof AgentSchema>;
120
+
121
+ export const ProjectSchema = z.object({
122
+ id: z.string(),
123
+ name: z.string(),
124
+ createdAt: z.string()
125
+ });
126
+ export type Project = z.infer<typeof ProjectSchema>;
127
+
128
+ export const ProjectMessagePreviewSchema = z.object({
129
+ messageId: z.string(),
130
+ senderRole: SenderRoleSchema,
131
+ senderName: z.string(),
132
+ body: z.string(),
133
+ createdAt: z.string()
134
+ });
135
+ export type ProjectMessagePreview = z.infer<typeof ProjectMessagePreviewSchema>;
136
+
137
+ export const ProjectThreadSchema = z.object({
138
+ id: z.string(),
139
+ name: z.string(),
140
+ createdAt: z.string(),
141
+ assignedAgentCount: z.number().int().nonnegative(),
142
+ lastSeenByCount: z.number().int().nonnegative(),
143
+ lastMessage: ProjectMessagePreviewSchema.nullable()
144
+ });
145
+ export type ProjectThread = z.infer<typeof ProjectThreadSchema>;
146
+
147
+ export const ProjectCreateInputSchema = z.object({
148
+ name: z.string().trim().min(1).max(120)
149
+ });
150
+ export type ProjectCreateInput = z.infer<typeof ProjectCreateInputSchema>;
151
+
152
+ export const ProjectAgentAssignmentInputSchema = z.object({
153
+ agentIds: z.array(z.string().trim().min(1)).max(64)
154
+ });
155
+ export type ProjectAgentAssignmentInput = z.infer<typeof ProjectAgentAssignmentInputSchema>;
156
+
157
+ export const SeenReceiptSchema = z.object({
158
+ id: z.string(),
159
+ messageId: z.string(),
160
+ agentId: z.string(),
161
+ agentName: z.string(),
162
+ model: z.string(),
163
+ seenAt: z.string()
164
+ });
165
+ export type SeenReceipt = z.infer<typeof SeenReceiptSchema>;
166
+
167
+ export const TaskStatusSchema = z.enum(["queued", "in_progress", "blocked", "done", "cancelled"]);
168
+ export type TaskStatus = z.infer<typeof TaskStatusSchema>;
169
+
170
+ export const TaskApprovalStatusSchema = z.enum(["not_required", "pending", "approved", "rejected"]);
171
+ export type TaskApprovalStatus = z.infer<typeof TaskApprovalStatusSchema>;
172
+
173
+ export const TaskActionTypeSchema = z.enum(["none", "file_write", "file_mkdir", "file_rename", "file_delete"]);
174
+ export type TaskActionType = z.infer<typeof TaskActionTypeSchema>;
175
+
176
+ export const TaskActionPayloadSchema = z
177
+ .object({
178
+ path: z.string().min(1).optional(),
179
+ nextPath: z.string().min(1).optional(),
180
+ content: z.string().optional()
181
+ })
182
+ .strict();
183
+ export type TaskActionPayload = z.infer<typeof TaskActionPayloadSchema>;
184
+
185
+ export const TaskSchema = z.object({
186
+ id: z.string(),
187
+ projectId: z.string(),
188
+ title: z.string(),
189
+ description: z.string().nullable(),
190
+ status: TaskStatusSchema,
191
+ approvalStatus: TaskApprovalStatusSchema,
192
+ actionType: TaskActionTypeSchema,
193
+ actionPayload: TaskActionPayloadSchema.nullable(),
194
+ assigneeAgentId: z.string().nullable(),
195
+ assigneeAgentName: z.string().nullable(),
196
+ delegatedByMessageId: z.string().nullable(),
197
+ createdBy: z.string(),
198
+ createdAt: z.string(),
199
+ updatedAt: z.string(),
200
+ completedAt: z.string().nullable(),
201
+ errorMessage: z.string().nullable()
202
+ });
203
+ export type Task = z.infer<typeof TaskSchema>;
204
+
205
+ export const TaskEventTypeSchema = z.enum([
206
+ "created",
207
+ "policy_applied",
208
+ "approved",
209
+ "rejected",
210
+ "retry_requested",
211
+ "cancelled",
212
+ "execution_started",
213
+ "execution_succeeded",
214
+ "execution_failed",
215
+ "status_changed"
216
+ ]);
217
+ export type TaskEventType = z.infer<typeof TaskEventTypeSchema>;
218
+
219
+ export const TaskEventSchema = z.object({
220
+ id: z.string(),
221
+ taskId: z.string(),
222
+ projectId: z.string(),
223
+ eventType: TaskEventTypeSchema,
224
+ actorId: z.string(),
225
+ detail: z.string().nullable(),
226
+ createdAt: z.string()
227
+ });
228
+ export type TaskEvent = z.infer<typeof TaskEventSchema>;
229
+
230
+ export const BootstrapPayloadSchema = z.object({
231
+ project: ProjectSchema,
232
+ projects: z.array(ProjectThreadSchema),
233
+ projectAgentIds: z.array(z.string()),
234
+ projectAgentIdsByProject: z.record(z.string(), z.array(z.string())),
235
+ agents: z.array(AgentSchema),
236
+ providers: z.array(ProviderConfigSchema),
237
+ messages: z.array(MessageSchema),
238
+ receiptsByMessage: z.record(z.string(), z.array(SeenReceiptSchema)),
239
+ tasks: z.array(TaskSchema),
240
+ taskEventsByTask: z.record(z.string(), z.array(TaskEventSchema))
241
+ });
242
+ export type BootstrapPayload = z.infer<typeof BootstrapPayloadSchema>;
243
+
244
+ export const TypingEventSchema = z.object({
245
+ projectId: z.string(),
246
+ agentId: z.string(),
247
+ agentName: z.string(),
248
+ model: z.string(),
249
+ state: AgentStatusSchema
250
+ });
251
+ export type TypingEvent = z.infer<typeof TypingEventSchema>;
252
+
253
+ export const ClientMessageInputSchema = z.object({
254
+ body: z.string().trim().min(1),
255
+ senderName: z.string().trim().min(1).default("You")
256
+ });
257
+ export type ClientMessageInput = z.infer<typeof ClientMessageInputSchema>;
258
+
259
+ export const FileReadInputSchema = z.object({
260
+ path: z.string().min(1),
261
+ actorId: z.string().optional()
262
+ });
263
+
264
+ export const FileWriteInputSchema = z.object({
265
+ path: z.string().min(1),
266
+ content: z.string(),
267
+ actorId: z.string().optional()
268
+ });
269
+
270
+ export const FileMkdirInputSchema = z.object({
271
+ path: z.string().min(1),
272
+ actorId: z.string().optional()
273
+ });
274
+
275
+ export const FileRenameInputSchema = z.object({
276
+ path: z.string().min(1),
277
+ nextPath: z.string().min(1),
278
+ actorId: z.string().optional()
279
+ });
280
+
281
+ export const FileDeleteInputSchema = z.object({
282
+ path: z.string().min(1),
283
+ actorId: z.string().optional()
284
+ });
285
+
286
+ export const FileListInputSchema = z.object({
287
+ path: z.string().default("."),
288
+ actorId: z.string().optional()
289
+ });
290
+
291
+ export const TaskCreateInputSchema = z.object({
292
+ title: z.string().trim().min(1).max(160),
293
+ description: z.string().trim().max(4_000).optional(),
294
+ assigneeAgentId: z.string().trim().min(1).optional(),
295
+ actionType: TaskActionTypeSchema.default("none"),
296
+ actionPayload: TaskActionPayloadSchema.optional(),
297
+ approvalStatus: TaskApprovalStatusSchema.optional()
298
+ });
299
+ export type TaskCreateInput = z.infer<typeof TaskCreateInputSchema>;
300
+
301
+ export const TaskStatusUpdateInputSchema = z.object({
302
+ status: TaskStatusSchema
303
+ });
304
+ export type TaskStatusUpdateInput = z.infer<typeof TaskStatusUpdateInputSchema>;
package/tsconfig.json ADDED
@@ -0,0 +1,8 @@
1
+ {
2
+ "extends": "../../tsconfig.base.json",
3
+ "compilerOptions": {
4
+ "outDir": "dist",
5
+ "rootDir": "src"
6
+ },
7
+ "include": ["src/**/*.ts"]
8
+ }