@alpic-ai/api 0.0.0-dev.f861645 → 0.0.0-dev.fb2f877

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
@@ -5,7 +5,7 @@ import { z } from "zod";
5
5
  //#region src/api.contract.d.ts
6
6
  type ApiContext = {
7
7
  request: Request & {
8
- teamId: string;
8
+ teamIds: string[];
9
9
  };
10
10
  };
11
11
  declare const createEnvironmentContractV1: _orpc_contract0.ContractProcedureBuilderWithInputOutput<z.ZodObject<{
@@ -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;
@@ -53,12 +139,27 @@ declare const contract: {
53
139
  }>, Record<never, never>>;
54
140
  };
55
141
  uploadArtifact: {
56
- v1: _orpc_contract0.ContractProcedureBuilderWithOutput<_orpc_contract0.Schema<unknown, unknown>, z.ZodObject<{
142
+ v1: _orpc_contract0.ContractProcedureBuilderWithInputOutput<z.ZodOptional<z.ZodObject<{
143
+ teamId: z.ZodOptional<z.ZodString>;
144
+ }, z.core.$strip>>, z.ZodObject<{
57
145
  uploadUrl: z.ZodString;
58
146
  token: z.ZodString;
59
147
  expiresAt: z.ZodCoercedDate<unknown>;
60
148
  }, z.core.$strip>, Record<never, never>, Record<never, never>>;
61
149
  };
150
+ getLogs: {
151
+ v1: _orpc_contract0.ContractProcedureBuilderWithInputOutput<z.ZodObject<{
152
+ deploymentId: z.ZodString;
153
+ }, z.core.$strip>, z.ZodObject<{
154
+ logs: z.ZodArray<z.ZodObject<{
155
+ timestamp: z.ZodOptional<z.ZodCoercedDate<unknown>>;
156
+ content: z.ZodOptional<z.ZodString>;
157
+ }, z.core.$strip>>;
158
+ hasMoreLogs: z.ZodBoolean;
159
+ }, z.core.$strip>, _orpc_contract0.MergedErrorMap<Record<never, never>, {
160
+ NOT_FOUND: {};
161
+ }>, Record<never, never>>;
162
+ };
62
163
  };
63
164
  environments: {
64
165
  create: {
@@ -124,6 +225,74 @@ declare const contract: {
124
225
  };
125
226
  };
126
227
  projects: {
228
+ update: {
229
+ v1: _orpc_contract0.ContractProcedureBuilderWithInputOutput<z.ZodObject<{
230
+ projectId: z.ZodString;
231
+ sourceRepository: z.ZodOptional<z.ZodNullable<z.ZodString>>;
232
+ }, z.core.$strip>, z.ZodObject<{
233
+ id: z.ZodString;
234
+ name: z.ZodString;
235
+ teamId: z.ZodString;
236
+ sourceRepository: z.ZodNullable<z.ZodString>;
237
+ runtime: z.ZodEnum<{
238
+ "python3.13": "python3.13";
239
+ "python3.14": "python3.14";
240
+ node22: "node22";
241
+ node24: "node24";
242
+ }>;
243
+ transport: z.ZodNullable<z.ZodEnum<{
244
+ stdio: "stdio";
245
+ sse: "sse";
246
+ streamablehttp: "streamablehttp";
247
+ }>>;
248
+ rootDirectory: z.ZodNullable<z.ZodString>;
249
+ buildCommand: z.ZodNullable<z.ZodString>;
250
+ buildOutputDir: z.ZodNullable<z.ZodString>;
251
+ installCommand: z.ZodNullable<z.ZodString>;
252
+ startCommand: z.ZodNullable<z.ZodString>;
253
+ createdAt: z.ZodCoercedDate<unknown>;
254
+ productionEnvironment: z.ZodNullable<z.ZodObject<{
255
+ id: z.ZodString;
256
+ name: z.ZodString;
257
+ mcpServerUrl: z.ZodString;
258
+ latestDeployment: z.ZodNullable<z.ZodObject<{
259
+ id: z.ZodString;
260
+ status: z.ZodEnum<{
261
+ ongoing: "ongoing";
262
+ deployed: "deployed";
263
+ failed: "failed";
264
+ canceled: "canceled";
265
+ }>;
266
+ sourceCommitId: z.ZodNullable<z.ZodString>;
267
+ sourceCommitMessage: z.ZodNullable<z.ZodString>;
268
+ completedAt: z.ZodNullable<z.ZodCoercedDate<unknown>>;
269
+ }, z.core.$strip>>;
270
+ }, z.core.$strip>>;
271
+ environments: z.ZodArray<z.ZodObject<{
272
+ id: z.ZodString;
273
+ name: z.ZodString;
274
+ sourceBranch: z.ZodNullable<z.ZodString>;
275
+ mcpServerUrl: z.ZodString;
276
+ createdAt: z.ZodCoercedDate<unknown>;
277
+ projectId: z.ZodString;
278
+ latestDeployment: z.ZodNullable<z.ZodObject<{
279
+ id: z.ZodString;
280
+ status: z.ZodEnum<{
281
+ ongoing: "ongoing";
282
+ deployed: "deployed";
283
+ failed: "failed";
284
+ canceled: "canceled";
285
+ }>;
286
+ sourceCommitId: z.ZodNullable<z.ZodString>;
287
+ sourceCommitMessage: z.ZodNullable<z.ZodString>;
288
+ completedAt: z.ZodNullable<z.ZodCoercedDate<unknown>>;
289
+ }, z.core.$strip>>;
290
+ }, z.core.$strip>>;
291
+ }, z.core.$strip>, _orpc_contract0.MergedErrorMap<Record<never, never>, {
292
+ NOT_FOUND: {};
293
+ BAD_REQUEST: {};
294
+ }>, Record<never, never>>;
295
+ };
127
296
  get: {
128
297
  v1: _orpc_contract0.ContractProcedureBuilderWithInputOutput<z.ZodObject<{
129
298
  projectId: z.ZodString;
@@ -254,6 +423,7 @@ declare const contract: {
254
423
  };
255
424
  create: {
256
425
  v1: _orpc_contract0.ContractProcedureBuilderWithInputOutput<z.ZodObject<{
426
+ teamId: z.ZodOptional<z.ZodString>;
257
427
  name: z.ZodString;
258
428
  sourceRepository: z.ZodOptional<z.ZodString>;
259
429
  branchName: z.ZodOptional<z.ZodString>;
@@ -315,6 +485,15 @@ declare const contract: {
315
485
  BAD_REQUEST: {};
316
486
  }>, Record<never, never>>;
317
487
  };
488
+ delete: {
489
+ v1: _orpc_contract0.ContractProcedureBuilderWithInputOutput<z.ZodObject<{
490
+ projectId: z.ZodString;
491
+ }, z.core.$strip>, z.ZodObject<{
492
+ success: z.ZodLiteral<true>;
493
+ }, z.core.$strip>, _orpc_contract0.MergedErrorMap<Record<never, never>, {
494
+ NOT_FOUND: {};
495
+ }>, Record<never, never>>;
496
+ };
318
497
  };
319
498
  };
320
499
  type RouterInput = InferContractRouterInputs<typeof contract>;
package/dist/index.mjs CHANGED
@@ -106,7 +106,7 @@ const createEnvironmentContractV1 = oc.route({
106
106
  projectId: z.string().describe("The ID of the project the environment belongs to")
107
107
  }));
108
108
  const getEnvironmentContractV1 = oc.route({
109
- path: "/v1/environments/:environmentId",
109
+ path: "/v1/environments/{environmentId}",
110
110
  method: "GET",
111
111
  summary: "Get an environment",
112
112
  description: "Get an environment by ID",
@@ -153,7 +153,7 @@ const projectOutputSchema = z.object({
153
153
  environments: z.array(environmentSchema)
154
154
  });
155
155
  const getProjectContractV1 = oc.route({
156
- path: "/v1/projects/:projectId",
156
+ path: "/v1/projects/{projectId}",
157
157
  method: "GET",
158
158
  summary: "Get a project",
159
159
  description: "Get a project by ID",
@@ -179,6 +179,7 @@ const createProjectContractV1 = oc.route({
179
179
  NOT_FOUND: {},
180
180
  BAD_REQUEST: {}
181
181
  }).input(z.object({
182
+ teamId: z.string().optional(),
182
183
  name: z.string().min(1).max(100),
183
184
  sourceRepository: z.string().optional(),
184
185
  branchName: z.string().min(1).optional(),
@@ -209,8 +210,30 @@ const createProjectContractV1 = oc.route({
209
210
  startCommand: z.string().nullable(),
210
211
  createdAt: z.coerce.date()
211
212
  }));
213
+ const deleteProjectContractV1 = oc.route({
214
+ path: "/v1/projects/:projectId",
215
+ method: "DELETE",
216
+ summary: "Delete a project",
217
+ description: "Delete a project and all its environments",
218
+ tags: ["projects"],
219
+ successDescription: "The project has been deleted successfully"
220
+ }).errors({ NOT_FOUND: {} }).input(z.object({ projectId: z.string().describe("The ID of the project") })).output(z.object({ success: z.literal(true) }));
221
+ const updateProjectContractV1 = oc.route({
222
+ path: "/v1/projects/{projectId}",
223
+ method: "PATCH",
224
+ summary: "Update a project",
225
+ description: "Update project settings",
226
+ tags: ["projects"],
227
+ successDescription: "The project has been updated successfully"
228
+ }).errors({
229
+ NOT_FOUND: {},
230
+ BAD_REQUEST: {}
231
+ }).input(z.object({
232
+ projectId: z.string().describe("The ID of the project"),
233
+ sourceRepository: z.string().nullable().optional().describe("The source repository to connect to the project")
234
+ })).output(projectOutputSchema);
212
235
  const deployEnvironmentContractV1 = oc.route({
213
- path: "/v1/environments/:environmentId/deploy",
236
+ path: "/v1/environments/{environmentId}/deploy",
214
237
  method: "POST",
215
238
  summary: "Deploy an environment",
216
239
  description: "Deploy an environment",
@@ -230,23 +253,104 @@ const uploadDeploymentArtifactContractV1 = oc.route({
230
253
  description: "Return a presigned S3 URL to upload a deployment artifact",
231
254
  tags: ["deployments"],
232
255
  successDescription: "The presigned upload URL has been generated successfully"
233
- }).output(z.object({
256
+ }).input(z.object({ teamId: z.string().optional() }).optional()).output(z.object({
234
257
  uploadUrl: z.string().url().describe("Presigned S3 URL to upload the source archive with HTTP PUT"),
235
258
  token: z.string().describe("Token to identify the source archive"),
236
259
  expiresAt: z.coerce.date().describe("Expiration date of the presigned URL")
237
260
  }));
261
+ const listProjectDeploymentsContractV1 = oc.route({
262
+ path: "/v1/projects/{projectId}/deployments",
263
+ method: "GET",
264
+ summary: "List project deployments",
265
+ description: "List all deployments for a project",
266
+ tags: ["deployments"],
267
+ successDescription: "The list of deployments"
268
+ }).errors({ NOT_FOUND: {} }).input(z.object({ projectId: z.string().describe("The ID of the project") })).output(z.array(deploymentSchema.extend({
269
+ isCurrent: z.boolean(),
270
+ environmentId: z.string()
271
+ })));
238
272
  const getDeploymentContractV1 = oc.route({
239
- path: "/v1/deployments/:deploymentId",
273
+ path: "/v1/deployments/{deploymentId}",
240
274
  method: "GET",
241
275
  summary: "Get a deployment",
242
276
  description: "Get a deployment by ID",
243
277
  tags: ["deployments"],
244
278
  successDescription: "The deployment details"
245
279
  }).errors({ NOT_FOUND: {} }).input(z.object({ deploymentId: z.string().describe("The ID of the deployment") })).output(deploymentSchema);
280
+ const getDeploymentLogsContractV1 = oc.route({
281
+ path: "/v1/deployments/{deploymentId}/logs",
282
+ method: "GET",
283
+ summary: "Get deployment logs",
284
+ description: "Get the logs for a deployment",
285
+ tags: ["deployments"],
286
+ successDescription: "The deployment logs"
287
+ }).errors({ NOT_FOUND: {} }).input(z.object({ deploymentId: z.string().describe("The ID of the deployment") })).output(z.object({
288
+ logs: z.array(z.object({
289
+ timestamp: z.coerce.date().optional(),
290
+ content: z.string().optional()
291
+ })),
292
+ hasMoreLogs: z.boolean()
293
+ }));
294
+ const analyticsDataPointSchema = z.object({
295
+ timestamp: z.number(),
296
+ categories: z.record(z.string(), z.unknown())
297
+ });
298
+ const analyticsTimeSeriesSchema = z.object({
299
+ sessions_count: z.array(analyticsDataPointSchema),
300
+ requests_count: z.array(analyticsDataPointSchema),
301
+ requests_latency_mean: z.array(analyticsDataPointSchema),
302
+ tool_errors: z.array(analyticsDataPointSchema),
303
+ mcp_errors: z.array(analyticsDataPointSchema),
304
+ output_token_mean: z.array(analyticsDataPointSchema),
305
+ task_count: z.array(analyticsDataPointSchema)
306
+ });
307
+ const getProjectAnalyticsContractV1 = oc.route({
308
+ path: "/v1/analytics/{projectId}",
309
+ method: "GET",
310
+ summary: "Get project analytics",
311
+ description: "Get analytics data for a project over a time range",
312
+ tags: ["analytics"],
313
+ successDescription: "The project analytics data"
314
+ }).errors({
315
+ NOT_FOUND: {},
316
+ BAD_REQUEST: {}
317
+ }).input(z.object({
318
+ projectId: z.string().describe("The ID of the project"),
319
+ startTimestamp: z.coerce.number().describe("Start timestamp in milliseconds"),
320
+ endTimestamp: z.coerce.number().describe("End timestamp in milliseconds"),
321
+ timeZone: z.string().describe("IANA timezone (e.g. Europe/Paris)")
322
+ }).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({
323
+ metadata: z.object({
324
+ startTimestamp: z.number(),
325
+ endTimestamp: z.number(),
326
+ timeZone: z.string(),
327
+ startDate: z.coerce.date(),
328
+ interval: z.string()
329
+ }),
330
+ timeSeries: analyticsTimeSeriesSchema
331
+ }));
332
+ const listTeamsContractV1 = oc.route({
333
+ path: "/v1/teams",
334
+ method: "GET",
335
+ summary: "List teams",
336
+ description: "List all teams for the authenticated user",
337
+ tags: ["teams"],
338
+ successDescription: "The list of teams"
339
+ }).output(z.array(z.object({
340
+ id: z.string(),
341
+ name: z.string(),
342
+ createdAt: z.coerce.date(),
343
+ hasStripeAccount: z.boolean(),
344
+ hasActiveSubscription: z.boolean()
345
+ })));
246
346
  const contract = {
347
+ teams: { list: { v1: listTeamsContractV1 } },
348
+ analytics: { get: { v1: getProjectAnalyticsContractV1 } },
247
349
  deployments: {
350
+ list: { v1: listProjectDeploymentsContractV1 },
248
351
  get: { v1: getDeploymentContractV1 },
249
- uploadArtifact: { v1: uploadDeploymentArtifactContractV1 }
352
+ uploadArtifact: { v1: uploadDeploymentArtifactContractV1 },
353
+ getLogs: { v1: getDeploymentLogsContractV1 }
250
354
  },
251
355
  environments: {
252
356
  create: { v1: createEnvironmentContractV1 },
@@ -254,9 +358,11 @@ const contract = {
254
358
  deploy: { v1: deployEnvironmentContractV1 }
255
359
  },
256
360
  projects: {
361
+ update: { v1: updateProjectContractV1 },
257
362
  get: { v1: getProjectContractV1 },
258
363
  list: { v1: listProjectsContractV1 },
259
- create: { v1: createProjectContractV1 }
364
+ create: { v1: createProjectContractV1 },
365
+ delete: { v1: deleteProjectContractV1 }
260
366
  }
261
367
  };
262
368
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alpic-ai/api",
3
- "version": "0.0.0-dev.f861645",
3
+ "version": "0.0.0-dev.fb2f877",
4
4
  "description": "Contract for the Alpic API",
5
5
  "type": "module",
6
6
  "main": "./dist/index.mjs",
@@ -17,7 +17,7 @@
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": {