@alpic-ai/api 1.86.0 → 1.88.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.
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>;
package/dist/index.mjs CHANGED
@@ -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,6 +210,20 @@ const createProjectContractV1 = oc.route({
209
210
  startCommand: z.string().nullable(),
210
211
  createdAt: z.coerce.date()
211
212
  }));
213
+ const updateProjectContractV1 = oc.route({
214
+ path: "/v1/projects/:projectId",
215
+ method: "PATCH",
216
+ summary: "Update a project",
217
+ description: "Update project settings",
218
+ tags: ["projects"],
219
+ successDescription: "The project has been updated successfully"
220
+ }).errors({
221
+ NOT_FOUND: {},
222
+ BAD_REQUEST: {}
223
+ }).input(z.object({
224
+ projectId: z.string().describe("The ID of the project"),
225
+ sourceRepository: z.string().nullable().optional().describe("The source repository to connect to the project")
226
+ })).output(projectOutputSchema);
212
227
  const deployEnvironmentContractV1 = oc.route({
213
228
  path: "/v1/environments/:environmentId/deploy",
214
229
  method: "POST",
@@ -230,11 +245,22 @@ const uploadDeploymentArtifactContractV1 = oc.route({
230
245
  description: "Return a presigned S3 URL to upload a deployment artifact",
231
246
  tags: ["deployments"],
232
247
  successDescription: "The presigned upload URL has been generated successfully"
233
- }).output(z.object({
248
+ }).input(z.object({ teamId: z.string().optional() }).optional()).output(z.object({
234
249
  uploadUrl: z.string().url().describe("Presigned S3 URL to upload the source archive with HTTP PUT"),
235
250
  token: z.string().describe("Token to identify the source archive"),
236
251
  expiresAt: z.coerce.date().describe("Expiration date of the presigned URL")
237
252
  }));
253
+ const listProjectDeploymentsContractV1 = oc.route({
254
+ path: "/v1/projects/:projectId/deployments",
255
+ method: "GET",
256
+ summary: "List project deployments",
257
+ description: "List all deployments for a project",
258
+ tags: ["deployments"],
259
+ successDescription: "The list of deployments"
260
+ }).errors({ NOT_FOUND: {} }).input(z.object({ projectId: z.string().describe("The ID of the project") })).output(z.array(deploymentSchema.extend({
261
+ isCurrent: z.boolean(),
262
+ environmentId: z.string()
263
+ })));
238
264
  const getDeploymentContractV1 = oc.route({
239
265
  path: "/v1/deployments/:deploymentId",
240
266
  method: "GET",
@@ -243,10 +269,80 @@ const getDeploymentContractV1 = oc.route({
243
269
  tags: ["deployments"],
244
270
  successDescription: "The deployment details"
245
271
  }).errors({ NOT_FOUND: {} }).input(z.object({ deploymentId: z.string().describe("The ID of the deployment") })).output(deploymentSchema);
272
+ const getDeploymentLogsContractV1 = oc.route({
273
+ path: "/v1/deployments/:deploymentId/logs",
274
+ method: "GET",
275
+ summary: "Get deployment logs",
276
+ description: "Get the logs for a deployment",
277
+ tags: ["deployments"],
278
+ successDescription: "The deployment logs"
279
+ }).errors({ NOT_FOUND: {} }).input(z.object({ deploymentId: z.string().describe("The ID of the deployment") })).output(z.object({
280
+ logs: z.array(z.object({
281
+ timestamp: z.coerce.date().optional(),
282
+ content: z.string().optional()
283
+ })),
284
+ hasMoreLogs: z.boolean()
285
+ }));
286
+ const analyticsDataPointSchema = z.object({
287
+ timestamp: z.number(),
288
+ categories: z.record(z.string(), z.unknown())
289
+ });
290
+ const analyticsTimeSeriesSchema = z.object({
291
+ sessions_count: z.array(analyticsDataPointSchema),
292
+ requests_count: z.array(analyticsDataPointSchema),
293
+ requests_latency_mean: z.array(analyticsDataPointSchema),
294
+ tool_errors: z.array(analyticsDataPointSchema),
295
+ mcp_errors: z.array(analyticsDataPointSchema),
296
+ output_token_mean: z.array(analyticsDataPointSchema),
297
+ task_count: z.array(analyticsDataPointSchema)
298
+ });
299
+ const getProjectAnalyticsContractV1 = oc.route({
300
+ path: "/v1/analytics/:projectId",
301
+ method: "GET",
302
+ summary: "Get project analytics",
303
+ description: "Get analytics data for a project over a time range",
304
+ tags: ["analytics"],
305
+ successDescription: "The project analytics data"
306
+ }).errors({
307
+ NOT_FOUND: {},
308
+ BAD_REQUEST: {}
309
+ }).input(z.object({
310
+ projectId: z.string().describe("The ID of the project"),
311
+ startTimestamp: z.coerce.number().describe("Start timestamp in milliseconds"),
312
+ endTimestamp: z.coerce.number().describe("End timestamp in milliseconds"),
313
+ timeZone: z.string().describe("IANA timezone (e.g. Europe/Paris)")
314
+ }).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({
315
+ metadata: z.object({
316
+ startTimestamp: z.number(),
317
+ endTimestamp: z.number(),
318
+ timeZone: z.string(),
319
+ startDate: z.coerce.date(),
320
+ interval: z.string()
321
+ }),
322
+ timeSeries: analyticsTimeSeriesSchema
323
+ }));
324
+ const listTeamsContractV1 = oc.route({
325
+ path: "/v1/teams",
326
+ method: "GET",
327
+ summary: "List teams",
328
+ description: "List all teams for the authenticated user",
329
+ tags: ["teams"],
330
+ successDescription: "The list of teams"
331
+ }).output(z.array(z.object({
332
+ id: z.string(),
333
+ name: z.string(),
334
+ createdAt: z.coerce.date(),
335
+ hasStripeAccount: z.boolean(),
336
+ hasActiveSubscription: z.boolean()
337
+ })));
246
338
  const contract = {
339
+ teams: { list: { v1: listTeamsContractV1 } },
340
+ analytics: { get: { v1: getProjectAnalyticsContractV1 } },
247
341
  deployments: {
342
+ list: { v1: listProjectDeploymentsContractV1 },
248
343
  get: { v1: getDeploymentContractV1 },
249
- uploadArtifact: { v1: uploadDeploymentArtifactContractV1 }
344
+ uploadArtifact: { v1: uploadDeploymentArtifactContractV1 },
345
+ getLogs: { v1: getDeploymentLogsContractV1 }
250
346
  },
251
347
  environments: {
252
348
  create: { v1: createEnvironmentContractV1 },
@@ -254,6 +350,7 @@ const contract = {
254
350
  deploy: { v1: deployEnvironmentContractV1 }
255
351
  },
256
352
  projects: {
353
+ update: { v1: updateProjectContractV1 },
257
354
  get: { v1: getProjectContractV1 },
258
355
  list: { v1: listProjectsContractV1 },
259
356
  create: { v1: createProjectContractV1 }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alpic-ai/api",
3
- "version": "1.86.0",
3
+ "version": "1.88.0",
4
4
  "description": "Contract for the Alpic API",
5
5
  "type": "module",
6
6
  "main": "./dist/index.mjs",