@alpic-ai/api 0.0.0-staging.bb4cc5e → 0.0.0-staging.bca6ae1

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;
@@ -61,6 +147,19 @@ declare const contract: {
61
147
  expiresAt: z.ZodCoercedDate<unknown>;
62
148
  }, z.core.$strip>, Record<never, never>, Record<never, never>>;
63
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
+ };
64
163
  };
65
164
  environments: {
66
165
  create: {
@@ -126,6 +225,74 @@ declare const contract: {
126
225
  };
127
226
  };
128
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
+ };
129
296
  get: {
130
297
  v1: _orpc_contract0.ContractProcedureBuilderWithInputOutput<z.ZodObject<{
131
298
  projectId: z.ZodString;
@@ -318,6 +485,15 @@ declare const contract: {
318
485
  BAD_REQUEST: {};
319
486
  }>, Record<never, never>>;
320
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
+ };
321
497
  };
322
498
  };
323
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",
@@ -210,8 +210,30 @@ const createProjectContractV1 = oc.route({
210
210
  startCommand: z.string().nullable(),
211
211
  createdAt: z.coerce.date()
212
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);
213
235
  const deployEnvironmentContractV1 = oc.route({
214
- path: "/v1/environments/:environmentId/deploy",
236
+ path: "/v1/environments/{environmentId}/deploy",
215
237
  method: "POST",
216
238
  summary: "Deploy an environment",
217
239
  description: "Deploy an environment",
@@ -236,18 +258,99 @@ const uploadDeploymentArtifactContractV1 = oc.route({
236
258
  token: z.string().describe("Token to identify the source archive"),
237
259
  expiresAt: z.coerce.date().describe("Expiration date of the presigned URL")
238
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
+ })));
239
272
  const getDeploymentContractV1 = oc.route({
240
- path: "/v1/deployments/:deploymentId",
273
+ path: "/v1/deployments/{deploymentId}",
241
274
  method: "GET",
242
275
  summary: "Get a deployment",
243
276
  description: "Get a deployment by ID",
244
277
  tags: ["deployments"],
245
278
  successDescription: "The deployment details"
246
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
+ })));
247
346
  const contract = {
347
+ teams: { list: { v1: listTeamsContractV1 } },
348
+ analytics: { get: { v1: getProjectAnalyticsContractV1 } },
248
349
  deployments: {
350
+ list: { v1: listProjectDeploymentsContractV1 },
249
351
  get: { v1: getDeploymentContractV1 },
250
- uploadArtifact: { v1: uploadDeploymentArtifactContractV1 }
352
+ uploadArtifact: { v1: uploadDeploymentArtifactContractV1 },
353
+ getLogs: { v1: getDeploymentLogsContractV1 }
251
354
  },
252
355
  environments: {
253
356
  create: { v1: createEnvironmentContractV1 },
@@ -255,9 +358,11 @@ const contract = {
255
358
  deploy: { v1: deployEnvironmentContractV1 }
256
359
  },
257
360
  projects: {
361
+ update: { v1: updateProjectContractV1 },
258
362
  get: { v1: getProjectContractV1 },
259
363
  list: { v1: listProjectsContractV1 },
260
- create: { v1: createProjectContractV1 }
364
+ create: { v1: createProjectContractV1 },
365
+ delete: { v1: deleteProjectContractV1 }
261
366
  }
262
367
  };
263
368
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alpic-ai/api",
3
- "version": "0.0.0-staging.bb4cc5e",
3
+ "version": "0.0.0-staging.bca6ae1",
4
4
  "description": "Contract for the Alpic API",
5
5
  "type": "module",
6
6
  "main": "./dist/index.mjs",