@alpic-ai/api 0.0.0-dev.f52c42d → 0.0.0-dev.f59195e

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/dist/index.d.mts CHANGED
@@ -29,7 +29,93 @@ declare const createEnvironmentContractV1: _orpc_contract0.ContractProcedureBuil
29
29
  BAD_REQUEST: {};
30
30
  }>, Record<never, never>>;
31
31
  declare const contract: {
32
+ teams: {
33
+ list: {
34
+ v1: _orpc_contract0.ContractProcedureBuilderWithOutput<_orpc_contract0.Schema<unknown, unknown>, z.ZodArray<z.ZodObject<{
35
+ id: z.ZodString;
36
+ name: z.ZodString;
37
+ createdAt: z.ZodCoercedDate<unknown>;
38
+ hasStripeAccount: z.ZodBoolean;
39
+ hasActiveSubscription: z.ZodBoolean;
40
+ }, z.core.$strip>>, Record<never, never>, Record<never, never>>;
41
+ };
42
+ };
43
+ analytics: {
44
+ get: {
45
+ v1: _orpc_contract0.ContractProcedureBuilderWithInputOutput<z.ZodObject<{
46
+ projectId: z.ZodString;
47
+ startTimestamp: z.ZodCoercedNumber<unknown>;
48
+ endTimestamp: z.ZodCoercedNumber<unknown>;
49
+ timeZone: z.ZodString;
50
+ }, z.core.$strip>, z.ZodObject<{
51
+ metadata: z.ZodObject<{
52
+ startTimestamp: z.ZodNumber;
53
+ endTimestamp: z.ZodNumber;
54
+ timeZone: z.ZodString;
55
+ startDate: z.ZodCoercedDate<unknown>;
56
+ interval: z.ZodString;
57
+ }, z.core.$strip>;
58
+ timeSeries: z.ZodObject<{
59
+ sessions_count: z.ZodArray<z.ZodObject<{
60
+ timestamp: z.ZodNumber;
61
+ categories: z.ZodRecord<z.ZodString, z.ZodUnknown>;
62
+ }, z.core.$strip>>;
63
+ requests_count: z.ZodArray<z.ZodObject<{
64
+ timestamp: z.ZodNumber;
65
+ categories: z.ZodRecord<z.ZodString, z.ZodUnknown>;
66
+ }, z.core.$strip>>;
67
+ requests_latency_mean: z.ZodArray<z.ZodObject<{
68
+ timestamp: z.ZodNumber;
69
+ categories: z.ZodRecord<z.ZodString, z.ZodUnknown>;
70
+ }, z.core.$strip>>;
71
+ tool_errors: z.ZodArray<z.ZodObject<{
72
+ timestamp: z.ZodNumber;
73
+ categories: z.ZodRecord<z.ZodString, z.ZodUnknown>;
74
+ }, z.core.$strip>>;
75
+ mcp_errors: z.ZodArray<z.ZodObject<{
76
+ timestamp: z.ZodNumber;
77
+ categories: z.ZodRecord<z.ZodString, z.ZodUnknown>;
78
+ }, z.core.$strip>>;
79
+ output_token_mean: z.ZodArray<z.ZodObject<{
80
+ timestamp: z.ZodNumber;
81
+ categories: z.ZodRecord<z.ZodString, z.ZodUnknown>;
82
+ }, z.core.$strip>>;
83
+ task_count: z.ZodArray<z.ZodObject<{
84
+ timestamp: z.ZodNumber;
85
+ categories: z.ZodRecord<z.ZodString, z.ZodUnknown>;
86
+ }, z.core.$strip>>;
87
+ }, z.core.$strip>;
88
+ }, z.core.$strip>, _orpc_contract0.MergedErrorMap<Record<never, never>, {
89
+ NOT_FOUND: {};
90
+ BAD_REQUEST: {};
91
+ }>, Record<never, never>>;
92
+ };
93
+ };
32
94
  deployments: {
95
+ list: {
96
+ v1: _orpc_contract0.ContractProcedureBuilderWithInputOutput<z.ZodObject<{
97
+ projectId: z.ZodString;
98
+ }, z.core.$strip>, z.ZodArray<z.ZodObject<{
99
+ id: z.ZodString;
100
+ status: z.ZodEnum<{
101
+ ongoing: "ongoing";
102
+ deployed: "deployed";
103
+ failed: "failed";
104
+ canceled: "canceled";
105
+ }>;
106
+ sourceRef: z.ZodNullable<z.ZodString>;
107
+ sourceCommitId: z.ZodNullable<z.ZodString>;
108
+ sourceCommitMessage: z.ZodNullable<z.ZodString>;
109
+ authorUsername: z.ZodNullable<z.ZodString>;
110
+ authorAvatarUrl: z.ZodNullable<z.ZodString>;
111
+ startedAt: z.ZodNullable<z.ZodCoercedDate<unknown>>;
112
+ completedAt: z.ZodNullable<z.ZodCoercedDate<unknown>>;
113
+ isCurrent: z.ZodBoolean;
114
+ environmentId: z.ZodString;
115
+ }, z.core.$strip>>, _orpc_contract0.MergedErrorMap<Record<never, never>, {
116
+ NOT_FOUND: {};
117
+ }>, Record<never, never>>;
118
+ };
33
119
  get: {
34
120
  v1: _orpc_contract0.ContractProcedureBuilderWithInputOutput<z.ZodObject<{
35
121
  deploymentId: z.ZodString;
@@ -48,6 +134,7 @@ declare const contract: {
48
134
  authorAvatarUrl: z.ZodNullable<z.ZodString>;
49
135
  startedAt: z.ZodNullable<z.ZodCoercedDate<unknown>>;
50
136
  completedAt: z.ZodNullable<z.ZodCoercedDate<unknown>>;
137
+ deploymentPageUrl: z.ZodNullable<z.ZodURL>;
51
138
  }, z.core.$strip>, _orpc_contract0.MergedErrorMap<Record<never, never>, {
52
139
  NOT_FOUND: {};
53
140
  }>, Record<never, never>>;
@@ -61,6 +148,19 @@ declare const contract: {
61
148
  expiresAt: z.ZodCoercedDate<unknown>;
62
149
  }, z.core.$strip>, Record<never, never>, Record<never, never>>;
63
150
  };
151
+ getLogs: {
152
+ v1: _orpc_contract0.ContractProcedureBuilderWithInputOutput<z.ZodObject<{
153
+ deploymentId: z.ZodString;
154
+ }, z.core.$strip>, z.ZodObject<{
155
+ logs: z.ZodArray<z.ZodObject<{
156
+ timestamp: z.ZodOptional<z.ZodCoercedDate<unknown>>;
157
+ content: z.ZodOptional<z.ZodString>;
158
+ }, z.core.$strip>>;
159
+ hasMoreLogs: z.ZodBoolean;
160
+ }, z.core.$strip>, _orpc_contract0.MergedErrorMap<Record<never, never>, {
161
+ NOT_FOUND: {};
162
+ }>, Record<never, never>>;
163
+ };
64
164
  };
65
165
  environments: {
66
166
  create: {
@@ -119,6 +219,7 @@ declare const contract: {
119
219
  authorAvatarUrl: z.ZodNullable<z.ZodString>;
120
220
  startedAt: z.ZodNullable<z.ZodCoercedDate<unknown>>;
121
221
  completedAt: z.ZodNullable<z.ZodCoercedDate<unknown>>;
222
+ deploymentPageUrl: z.ZodNullable<z.ZodURL>;
122
223
  }, z.core.$strip>, _orpc_contract0.MergedErrorMap<Record<never, never>, {
123
224
  NOT_FOUND: {};
124
225
  BAD_REQUEST: {};
@@ -129,6 +230,7 @@ declare const contract: {
129
230
  update: {
130
231
  v1: _orpc_contract0.ContractProcedureBuilderWithInputOutput<z.ZodObject<{
131
232
  projectId: z.ZodString;
233
+ name: z.ZodOptional<z.ZodString>;
132
234
  sourceRepository: z.ZodOptional<z.ZodNullable<z.ZodString>>;
133
235
  }, z.core.$strip>, z.ZodObject<{
134
236
  id: z.ZodString;
@@ -386,6 +488,15 @@ declare const contract: {
386
488
  BAD_REQUEST: {};
387
489
  }>, Record<never, never>>;
388
490
  };
491
+ delete: {
492
+ v1: _orpc_contract0.ContractProcedureBuilderWithInputOutput<z.ZodObject<{
493
+ projectId: z.ZodString;
494
+ }, z.core.$strip>, z.ZodObject<{
495
+ success: z.ZodLiteral<true>;
496
+ }, z.core.$strip>, _orpc_contract0.MergedErrorMap<Record<never, never>, {
497
+ NOT_FOUND: {};
498
+ }>, Record<never, never>>;
499
+ };
389
500
  };
390
501
  };
391
502
  type RouterInput = InferContractRouterInputs<typeof contract>;
package/dist/index.mjs CHANGED
@@ -82,6 +82,7 @@ const deploymentSchema = z.object({
82
82
  startedAt: z.coerce.date().nullable(),
83
83
  completedAt: z.coerce.date().nullable()
84
84
  });
85
+ const deploymentWithPageUrlSchema = deploymentSchema.extend({ deploymentPageUrl: z.url().nullable() });
85
86
  const createEnvironmentContractV1 = oc.route({
86
87
  path: "/v1/environments",
87
88
  method: "POST",
@@ -106,7 +107,7 @@ const createEnvironmentContractV1 = oc.route({
106
107
  projectId: z.string().describe("The ID of the project the environment belongs to")
107
108
  }));
108
109
  const getEnvironmentContractV1 = oc.route({
109
- path: "/v1/environments/:environmentId",
110
+ path: "/v1/environments/{environmentId}",
110
111
  method: "GET",
111
112
  summary: "Get an environment",
112
113
  description: "Get an environment by ID",
@@ -153,7 +154,7 @@ const projectOutputSchema = z.object({
153
154
  environments: z.array(environmentSchema)
154
155
  });
155
156
  const getProjectContractV1 = oc.route({
156
- path: "/v1/projects/:projectId",
157
+ path: "/v1/projects/{projectId}",
157
158
  method: "GET",
158
159
  summary: "Get a project",
159
160
  description: "Get a project by ID",
@@ -180,7 +181,7 @@ const createProjectContractV1 = oc.route({
180
181
  BAD_REQUEST: {}
181
182
  }).input(z.object({
182
183
  teamId: z.string().optional(),
183
- name: z.string().min(1).max(100),
184
+ name: z.string().trim().min(1).max(100),
184
185
  sourceRepository: z.string().optional(),
185
186
  branchName: z.string().min(1).optional(),
186
187
  runtime: runtimeSchema,
@@ -210,8 +211,16 @@ const createProjectContractV1 = oc.route({
210
211
  startCommand: z.string().nullable(),
211
212
  createdAt: z.coerce.date()
212
213
  }));
213
- const updateProjectContractV1 = oc.route({
214
+ const deleteProjectContractV1 = oc.route({
214
215
  path: "/v1/projects/:projectId",
216
+ method: "DELETE",
217
+ summary: "Delete a project",
218
+ description: "Delete a project and all its environments",
219
+ tags: ["projects"],
220
+ successDescription: "The project has been deleted successfully"
221
+ }).errors({ NOT_FOUND: {} }).input(z.object({ projectId: z.string().describe("The ID of the project") })).output(z.object({ success: z.literal(true) }));
222
+ const updateProjectContractV1 = oc.route({
223
+ path: "/v1/projects/{projectId}",
215
224
  method: "PATCH",
216
225
  summary: "Update a project",
217
226
  description: "Update project settings",
@@ -222,10 +231,11 @@ const updateProjectContractV1 = oc.route({
222
231
  BAD_REQUEST: {}
223
232
  }).input(z.object({
224
233
  projectId: z.string().describe("The ID of the project"),
234
+ name: z.string().min(1).max(100).optional().describe("The new name for the project"),
225
235
  sourceRepository: z.string().nullable().optional().describe("The source repository to connect to the project")
226
236
  })).output(projectOutputSchema);
227
237
  const deployEnvironmentContractV1 = oc.route({
228
- path: "/v1/environments/:environmentId/deploy",
238
+ path: "/v1/environments/{environmentId}/deploy",
229
239
  method: "POST",
230
240
  summary: "Deploy an environment",
231
241
  description: "Deploy an environment",
@@ -237,7 +247,7 @@ const deployEnvironmentContractV1 = oc.route({
237
247
  }).input(z.object({
238
248
  environmentId: z.string().describe("The ID of the environment to deploy"),
239
249
  token: z.string().describe("The token to identify the source archive").optional()
240
- })).output(deploymentSchema);
250
+ })).output(deploymentWithPageUrlSchema);
241
251
  const uploadDeploymentArtifactContractV1 = oc.route({
242
252
  path: "/v1/deployments/upload",
243
253
  method: "POST",
@@ -250,18 +260,99 @@ const uploadDeploymentArtifactContractV1 = oc.route({
250
260
  token: z.string().describe("Token to identify the source archive"),
251
261
  expiresAt: z.coerce.date().describe("Expiration date of the presigned URL")
252
262
  }));
263
+ const listProjectDeploymentsContractV1 = oc.route({
264
+ path: "/v1/projects/{projectId}/deployments",
265
+ method: "GET",
266
+ summary: "List project deployments",
267
+ description: "List all deployments for a project",
268
+ tags: ["deployments"],
269
+ successDescription: "The list of deployments"
270
+ }).errors({ NOT_FOUND: {} }).input(z.object({ projectId: z.string().describe("The ID of the project") })).output(z.array(deploymentSchema.extend({
271
+ isCurrent: z.boolean(),
272
+ environmentId: z.string()
273
+ })));
253
274
  const getDeploymentContractV1 = oc.route({
254
- path: "/v1/deployments/:deploymentId",
275
+ path: "/v1/deployments/{deploymentId}",
255
276
  method: "GET",
256
277
  summary: "Get a deployment",
257
278
  description: "Get a deployment by ID",
258
279
  tags: ["deployments"],
259
280
  successDescription: "The deployment details"
260
- }).errors({ NOT_FOUND: {} }).input(z.object({ deploymentId: z.string().describe("The ID of the deployment") })).output(deploymentSchema);
281
+ }).errors({ NOT_FOUND: {} }).input(z.object({ deploymentId: z.string().describe("The ID of the deployment") })).output(deploymentWithPageUrlSchema);
282
+ const getDeploymentLogsContractV1 = oc.route({
283
+ path: "/v1/deployments/{deploymentId}/logs",
284
+ method: "GET",
285
+ summary: "Get deployment logs",
286
+ description: "Get the logs for a deployment",
287
+ tags: ["deployments"],
288
+ successDescription: "The deployment logs"
289
+ }).errors({ NOT_FOUND: {} }).input(z.object({ deploymentId: z.string().describe("The ID of the deployment") })).output(z.object({
290
+ logs: z.array(z.object({
291
+ timestamp: z.coerce.date().optional(),
292
+ content: z.string().optional()
293
+ })),
294
+ hasMoreLogs: z.boolean()
295
+ }));
296
+ const analyticsDataPointSchema = z.object({
297
+ timestamp: z.number(),
298
+ categories: z.record(z.string(), z.unknown())
299
+ });
300
+ const analyticsTimeSeriesSchema = z.object({
301
+ sessions_count: z.array(analyticsDataPointSchema),
302
+ requests_count: z.array(analyticsDataPointSchema),
303
+ requests_latency_mean: z.array(analyticsDataPointSchema),
304
+ tool_errors: z.array(analyticsDataPointSchema),
305
+ mcp_errors: z.array(analyticsDataPointSchema),
306
+ output_token_mean: z.array(analyticsDataPointSchema),
307
+ task_count: z.array(analyticsDataPointSchema)
308
+ });
309
+ const getProjectAnalyticsContractV1 = oc.route({
310
+ path: "/v1/analytics/{projectId}",
311
+ method: "GET",
312
+ summary: "Get project analytics",
313
+ description: "Get analytics data for a project over a time range",
314
+ tags: ["analytics"],
315
+ successDescription: "The project analytics data"
316
+ }).errors({
317
+ NOT_FOUND: {},
318
+ BAD_REQUEST: {}
319
+ }).input(z.object({
320
+ projectId: z.string().describe("The ID of the project"),
321
+ startTimestamp: z.coerce.number().describe("Start timestamp in milliseconds"),
322
+ endTimestamp: z.coerce.number().describe("End timestamp in milliseconds"),
323
+ timeZone: z.string().describe("IANA timezone (e.g. Europe/Paris)")
324
+ }).refine(({ startTimestamp, endTimestamp }) => endTimestamp - startTimestamp > 0, { message: "End date must be after start date" }).refine(({ startTimestamp, endTimestamp }) => endTimestamp - startTimestamp <= 744 * 60 * 60 * 1e3, { message: "Date range must be less than 1 month" }).refine(({ timeZone }) => Intl.supportedValuesOf("timeZone").includes(timeZone), { message: "Time zone must be a valid IANA timezone" })).output(z.object({
325
+ metadata: z.object({
326
+ startTimestamp: z.number(),
327
+ endTimestamp: z.number(),
328
+ timeZone: z.string(),
329
+ startDate: z.coerce.date(),
330
+ interval: z.string()
331
+ }),
332
+ timeSeries: analyticsTimeSeriesSchema
333
+ }));
334
+ const listTeamsContractV1 = oc.route({
335
+ path: "/v1/teams",
336
+ method: "GET",
337
+ summary: "List teams",
338
+ description: "List all teams for the authenticated user",
339
+ tags: ["teams"],
340
+ successDescription: "The list of teams"
341
+ }).output(z.array(z.object({
342
+ id: z.string(),
343
+ name: z.string(),
344
+ createdAt: z.coerce.date(),
345
+ hasStripeAccount: z.boolean(),
346
+ hasActiveSubscription: z.boolean()
347
+ })));
261
348
  const contract = {
349
+ teams: { list: { v1: listTeamsContractV1 } },
350
+ analytics: { get: { v1: getProjectAnalyticsContractV1 } },
262
351
  deployments: {
352
+ list: { v1: listProjectDeploymentsContractV1 },
263
353
  get: { v1: getDeploymentContractV1 },
264
- uploadArtifact: { v1: uploadDeploymentArtifactContractV1 }
354
+ uploadArtifact: { v1: uploadDeploymentArtifactContractV1 },
355
+ getLogs: { v1: getDeploymentLogsContractV1 }
265
356
  },
266
357
  environments: {
267
358
  create: { v1: createEnvironmentContractV1 },
@@ -272,7 +363,8 @@ const contract = {
272
363
  update: { v1: updateProjectContractV1 },
273
364
  get: { v1: getProjectContractV1 },
274
365
  list: { v1: listProjectsContractV1 },
275
- create: { v1: createProjectContractV1 }
366
+ create: { v1: createProjectContractV1 },
367
+ delete: { v1: deleteProjectContractV1 }
276
368
  }
277
369
  };
278
370
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alpic-ai/api",
3
- "version": "0.0.0-dev.f52c42d",
3
+ "version": "0.0.0-dev.f59195e",
4
4
  "description": "Contract for the Alpic API",
5
5
  "type": "module",
6
6
  "main": "./dist/index.mjs",
@@ -17,12 +17,11 @@
17
17
  "author": "Alpic",
18
18
  "license": "ISC",
19
19
  "dependencies": {
20
- "@orpc/contract": "^1.13.4",
20
+ "@orpc/contract": "^1.13.5",
21
21
  "zod": "^4.3.6"
22
22
  },
23
23
  "devDependencies": {
24
24
  "@total-typescript/tsconfig": "^1.0.4",
25
- "biome": "^0.3.3",
26
25
  "shx": "^0.4.0",
27
26
  "tsdown": "^0.20.3",
28
27
  "typescript": "^5.9.3",