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

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,75 @@ declare const contract: {
124
225
  };
125
226
  };
126
227
  projects: {
228
+ update: {
229
+ v1: _orpc_contract0.ContractProcedureBuilderWithInputOutput<z.ZodObject<{
230
+ projectId: z.ZodString;
231
+ name: z.ZodOptional<z.ZodString>;
232
+ sourceRepository: z.ZodOptional<z.ZodNullable<z.ZodString>>;
233
+ }, z.core.$strip>, z.ZodObject<{
234
+ id: z.ZodString;
235
+ name: z.ZodString;
236
+ teamId: z.ZodString;
237
+ sourceRepository: z.ZodNullable<z.ZodString>;
238
+ runtime: z.ZodEnum<{
239
+ "python3.13": "python3.13";
240
+ "python3.14": "python3.14";
241
+ node22: "node22";
242
+ node24: "node24";
243
+ }>;
244
+ transport: z.ZodNullable<z.ZodEnum<{
245
+ stdio: "stdio";
246
+ sse: "sse";
247
+ streamablehttp: "streamablehttp";
248
+ }>>;
249
+ rootDirectory: z.ZodNullable<z.ZodString>;
250
+ buildCommand: z.ZodNullable<z.ZodString>;
251
+ buildOutputDir: z.ZodNullable<z.ZodString>;
252
+ installCommand: z.ZodNullable<z.ZodString>;
253
+ startCommand: z.ZodNullable<z.ZodString>;
254
+ createdAt: z.ZodCoercedDate<unknown>;
255
+ productionEnvironment: z.ZodNullable<z.ZodObject<{
256
+ id: z.ZodString;
257
+ name: z.ZodString;
258
+ mcpServerUrl: z.ZodString;
259
+ latestDeployment: z.ZodNullable<z.ZodObject<{
260
+ id: z.ZodString;
261
+ status: z.ZodEnum<{
262
+ ongoing: "ongoing";
263
+ deployed: "deployed";
264
+ failed: "failed";
265
+ canceled: "canceled";
266
+ }>;
267
+ sourceCommitId: z.ZodNullable<z.ZodString>;
268
+ sourceCommitMessage: z.ZodNullable<z.ZodString>;
269
+ completedAt: z.ZodNullable<z.ZodCoercedDate<unknown>>;
270
+ }, z.core.$strip>>;
271
+ }, z.core.$strip>>;
272
+ environments: z.ZodArray<z.ZodObject<{
273
+ id: z.ZodString;
274
+ name: z.ZodString;
275
+ sourceBranch: z.ZodNullable<z.ZodString>;
276
+ mcpServerUrl: z.ZodString;
277
+ createdAt: z.ZodCoercedDate<unknown>;
278
+ projectId: z.ZodString;
279
+ latestDeployment: z.ZodNullable<z.ZodObject<{
280
+ id: z.ZodString;
281
+ status: z.ZodEnum<{
282
+ ongoing: "ongoing";
283
+ deployed: "deployed";
284
+ failed: "failed";
285
+ canceled: "canceled";
286
+ }>;
287
+ sourceCommitId: z.ZodNullable<z.ZodString>;
288
+ sourceCommitMessage: z.ZodNullable<z.ZodString>;
289
+ completedAt: z.ZodNullable<z.ZodCoercedDate<unknown>>;
290
+ }, z.core.$strip>>;
291
+ }, z.core.$strip>>;
292
+ }, z.core.$strip>, _orpc_contract0.MergedErrorMap<Record<never, never>, {
293
+ NOT_FOUND: {};
294
+ BAD_REQUEST: {};
295
+ }>, Record<never, never>>;
296
+ };
127
297
  get: {
128
298
  v1: _orpc_contract0.ContractProcedureBuilderWithInputOutput<z.ZodObject<{
129
299
  projectId: z.ZodString;
@@ -254,6 +424,7 @@ declare const contract: {
254
424
  };
255
425
  create: {
256
426
  v1: _orpc_contract0.ContractProcedureBuilderWithInputOutput<z.ZodObject<{
427
+ teamId: z.ZodOptional<z.ZodString>;
257
428
  name: z.ZodString;
258
429
  sourceRepository: z.ZodOptional<z.ZodString>;
259
430
  branchName: z.ZodOptional<z.ZodString>;
@@ -315,6 +486,15 @@ declare const contract: {
315
486
  BAD_REQUEST: {};
316
487
  }>, Record<never, never>>;
317
488
  };
489
+ delete: {
490
+ v1: _orpc_contract0.ContractProcedureBuilderWithInputOutput<z.ZodObject<{
491
+ projectId: z.ZodString;
492
+ }, z.core.$strip>, z.ZodObject<{
493
+ success: z.ZodLiteral<true>;
494
+ }, z.core.$strip>, _orpc_contract0.MergedErrorMap<Record<never, never>, {
495
+ NOT_FOUND: {};
496
+ }>, Record<never, never>>;
497
+ };
318
498
  };
319
499
  };
320
500
  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,31 @@ 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
+ name: z.string().min(1).max(100).optional().describe("The new name for the project"),
234
+ sourceRepository: z.string().nullable().optional().describe("The source repository to connect to the project")
235
+ })).output(projectOutputSchema);
212
236
  const deployEnvironmentContractV1 = oc.route({
213
- path: "/v1/environments/:environmentId/deploy",
237
+ path: "/v1/environments/{environmentId}/deploy",
214
238
  method: "POST",
215
239
  summary: "Deploy an environment",
216
240
  description: "Deploy an environment",
@@ -230,23 +254,104 @@ const uploadDeploymentArtifactContractV1 = oc.route({
230
254
  description: "Return a presigned S3 URL to upload a deployment artifact",
231
255
  tags: ["deployments"],
232
256
  successDescription: "The presigned upload URL has been generated successfully"
233
- }).output(z.object({
257
+ }).input(z.object({ teamId: z.string().optional() }).optional()).output(z.object({
234
258
  uploadUrl: z.string().url().describe("Presigned S3 URL to upload the source archive with HTTP PUT"),
235
259
  token: z.string().describe("Token to identify the source archive"),
236
260
  expiresAt: z.coerce.date().describe("Expiration date of the presigned URL")
237
261
  }));
262
+ const listProjectDeploymentsContractV1 = oc.route({
263
+ path: "/v1/projects/{projectId}/deployments",
264
+ method: "GET",
265
+ summary: "List project deployments",
266
+ description: "List all deployments for a project",
267
+ tags: ["deployments"],
268
+ successDescription: "The list of deployments"
269
+ }).errors({ NOT_FOUND: {} }).input(z.object({ projectId: z.string().describe("The ID of the project") })).output(z.array(deploymentSchema.extend({
270
+ isCurrent: z.boolean(),
271
+ environmentId: z.string()
272
+ })));
238
273
  const getDeploymentContractV1 = oc.route({
239
- path: "/v1/deployments/:deploymentId",
274
+ path: "/v1/deployments/{deploymentId}",
240
275
  method: "GET",
241
276
  summary: "Get a deployment",
242
277
  description: "Get a deployment by ID",
243
278
  tags: ["deployments"],
244
279
  successDescription: "The deployment details"
245
280
  }).errors({ NOT_FOUND: {} }).input(z.object({ deploymentId: z.string().describe("The ID of the deployment") })).output(deploymentSchema);
281
+ const getDeploymentLogsContractV1 = oc.route({
282
+ path: "/v1/deployments/{deploymentId}/logs",
283
+ method: "GET",
284
+ summary: "Get deployment logs",
285
+ description: "Get the logs for a deployment",
286
+ tags: ["deployments"],
287
+ successDescription: "The deployment logs"
288
+ }).errors({ NOT_FOUND: {} }).input(z.object({ deploymentId: z.string().describe("The ID of the deployment") })).output(z.object({
289
+ logs: z.array(z.object({
290
+ timestamp: z.coerce.date().optional(),
291
+ content: z.string().optional()
292
+ })),
293
+ hasMoreLogs: z.boolean()
294
+ }));
295
+ const analyticsDataPointSchema = z.object({
296
+ timestamp: z.number(),
297
+ categories: z.record(z.string(), z.unknown())
298
+ });
299
+ const analyticsTimeSeriesSchema = z.object({
300
+ sessions_count: z.array(analyticsDataPointSchema),
301
+ requests_count: z.array(analyticsDataPointSchema),
302
+ requests_latency_mean: z.array(analyticsDataPointSchema),
303
+ tool_errors: z.array(analyticsDataPointSchema),
304
+ mcp_errors: z.array(analyticsDataPointSchema),
305
+ output_token_mean: z.array(analyticsDataPointSchema),
306
+ task_count: z.array(analyticsDataPointSchema)
307
+ });
308
+ const getProjectAnalyticsContractV1 = oc.route({
309
+ path: "/v1/analytics/{projectId}",
310
+ method: "GET",
311
+ summary: "Get project analytics",
312
+ description: "Get analytics data for a project over a time range",
313
+ tags: ["analytics"],
314
+ successDescription: "The project analytics data"
315
+ }).errors({
316
+ NOT_FOUND: {},
317
+ BAD_REQUEST: {}
318
+ }).input(z.object({
319
+ projectId: z.string().describe("The ID of the project"),
320
+ startTimestamp: z.coerce.number().describe("Start timestamp in milliseconds"),
321
+ endTimestamp: z.coerce.number().describe("End timestamp in milliseconds"),
322
+ timeZone: z.string().describe("IANA timezone (e.g. Europe/Paris)")
323
+ }).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({
324
+ metadata: z.object({
325
+ startTimestamp: z.number(),
326
+ endTimestamp: z.number(),
327
+ timeZone: z.string(),
328
+ startDate: z.coerce.date(),
329
+ interval: z.string()
330
+ }),
331
+ timeSeries: analyticsTimeSeriesSchema
332
+ }));
333
+ const listTeamsContractV1 = oc.route({
334
+ path: "/v1/teams",
335
+ method: "GET",
336
+ summary: "List teams",
337
+ description: "List all teams for the authenticated user",
338
+ tags: ["teams"],
339
+ successDescription: "The list of teams"
340
+ }).output(z.array(z.object({
341
+ id: z.string(),
342
+ name: z.string(),
343
+ createdAt: z.coerce.date(),
344
+ hasStripeAccount: z.boolean(),
345
+ hasActiveSubscription: z.boolean()
346
+ })));
246
347
  const contract = {
348
+ teams: { list: { v1: listTeamsContractV1 } },
349
+ analytics: { get: { v1: getProjectAnalyticsContractV1 } },
247
350
  deployments: {
351
+ list: { v1: listProjectDeploymentsContractV1 },
248
352
  get: { v1: getDeploymentContractV1 },
249
- uploadArtifact: { v1: uploadDeploymentArtifactContractV1 }
353
+ uploadArtifact: { v1: uploadDeploymentArtifactContractV1 },
354
+ getLogs: { v1: getDeploymentLogsContractV1 }
250
355
  },
251
356
  environments: {
252
357
  create: { v1: createEnvironmentContractV1 },
@@ -254,9 +359,11 @@ const contract = {
254
359
  deploy: { v1: deployEnvironmentContractV1 }
255
360
  },
256
361
  projects: {
362
+ update: { v1: updateProjectContractV1 },
257
363
  get: { v1: getProjectContractV1 },
258
364
  list: { v1: listProjectsContractV1 },
259
- create: { v1: createProjectContractV1 }
365
+ create: { v1: createProjectContractV1 },
366
+ delete: { v1: deleteProjectContractV1 }
260
367
  }
261
368
  };
262
369
 
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.f91105e",
4
4
  "description": "Contract for the Alpic API",
5
5
  "type": "module",
6
6
  "main": "./dist/index.mjs",