Skip to content

Commit

Permalink
feat: adapt sdk for pipeline related endpoint
Browse files Browse the repository at this point in the history
  • Loading branch information
EiffelFly committed Jul 13, 2024
1 parent b5f4226 commit e6cb6ec
Show file tree
Hide file tree
Showing 110 changed files with 1,184 additions and 1,663 deletions.
2 changes: 1 addition & 1 deletion packages/sdk/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "instill-sdk",
"version": "0.1.0-rc.1",
"version": "0.1.0-rc.5",
"description": "Instill AI's Typescript SDK",
"repository": "https://github.com/instill-ai/typescript-sdk.git",
"bugs": "https://github.com/instill-ai/community/issues",
Expand Down
27 changes: 21 additions & 6 deletions packages/sdk/src/main/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,20 @@ export type RequestOption = {
export class InstillAPIClient {
baseURL: string;
apiToken: string;
publicAccess?: boolean;

constructor({ baseURL, apiToken }: { baseURL: string; apiToken: string }) {
constructor({
baseURL,
apiToken,
publicAccess,
}: {
baseURL: string;
apiToken: string;
publicAccess?: boolean;
}) {
this.baseURL = baseURL;
this.apiToken = apiToken;
this.publicAccess = publicAccess;
}

async get<Rsp>(path: string, opt?: RequestOption): Promise<Rsp> {
Expand Down Expand Up @@ -56,11 +66,16 @@ export class InstillAPIClient {
try {
const response = await fetch(`${this.baseURL}${path}`, {
method,
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${this.apiToken}`,
...opt?.additionalHeaders,
},
headers: this.publicAccess
? {
"Content-Type": "application/json",
...opt?.additionalHeaders,
}
: {
"Content-Type": "application/json",
Authorization: `Bearer ${this.apiToken}`,
...opt?.additionalHeaders,
},
body: opt?.body,
});

Expand Down
20 changes: 20 additions & 0 deletions packages/sdk/src/vdp/component/ComponentClient.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ import {
ConnectorDefinition,
GetConnectorDefinitionRequest,
GetConnectorDefinitionResponse,
GetOperatorDefinitionRequest,
GetOperatorDefinitionResponse,
ListConnectorDefinitionsRequest,
ListConnectorDefinitionsResponse,
ListOperatorDefinitionsRequest,
Expand Down Expand Up @@ -86,6 +88,24 @@ export class ComponentClient extends APIResource {
}
}

async getOperatorDefinition({
operatorDefinitionName,
view,
}: GetOperatorDefinitionRequest) {
try {
const queryString = getQueryString({
baseURL: `/${operatorDefinitionName}`,
view,
});

const data =
await this._client.get<GetOperatorDefinitionResponse>(queryString);
return Promise.resolve(data.operatorDefinition);
} catch (error) {
return Promise.reject(error);
}
}

async listOperatorDefinitions(
props: ListOperatorDefinitionsRequest & {
enablePagination: true;
Expand Down
9 changes: 9 additions & 0 deletions packages/sdk/src/vdp/component/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -73,3 +73,12 @@ export type ListOperatorDefinitionsResponse = {
nextPageToken: string;
totalSize: number;
};

export type GetOperatorDefinitionRequest = {
operatorDefinitionName: string;
view?: string;
};

export type GetOperatorDefinitionResponse = {
operatorDefinition: OperatorDefinition;
};
11 changes: 8 additions & 3 deletions packages/sdk/src/vdp/release/ReleaseClient.ts
Original file line number Diff line number Diff line change
Expand Up @@ -47,11 +47,16 @@ export class ReleaseClient extends APIResource {
): Promise<PipelineRelease[]>;
async listNamespacePipelineReleases(
props: ListNamespacePipelineReleaseRequest & {
enablePagination: boolean;
enablePagination: undefined;
},
): Promise<PipelineRelease[]>;
async listNamespacePipelineReleases(
props: ListNamespacePipelineReleaseRequest & {
enablePagination?: boolean;
},
): Promise<ListNamespacePipelineReleaseResponse | PipelineRelease[]>;
async listNamespacePipelineReleases(
props: ListNamespacePipelineReleaseRequest & { enablePagination: boolean },
props: ListNamespacePipelineReleaseRequest & { enablePagination?: boolean },
) {
const {
namespacePipelineName,
Expand Down Expand Up @@ -101,7 +106,7 @@ export class ReleaseClient extends APIResource {
shareCode,
view,
filter,
enablePagination,
enablePagination: false,
})),
);
}
Expand Down
16 changes: 8 additions & 8 deletions packages/sdk/src/vdp/trigger/TriggerClient.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import {
export class TriggerClient extends APIResource {
async triggerNamespacePipeline({
namespacePipelineName,
input,
inputs,
requesterUid,
returnTraces,
shareCode,
Expand All @@ -22,7 +22,7 @@ export class TriggerClient extends APIResource {
const data = this._client.post<TriggerNamespacePipelineResponse>(
`/${namespacePipelineName}/trigger`,
{
body: JSON.stringify({ input }),
body: JSON.stringify({ inputs }),
additionalHeaders: {
"instill-return-traces": returnTraces ? "true" : "false",
"instill-share-code": shareCode,
Expand All @@ -41,7 +41,7 @@ export class TriggerClient extends APIResource {

async triggerAsyncNamespacePipeline({
namespacePipelineName,
input,
inputs,
returnTraces,
requesterUid,
shareCode,
Expand All @@ -51,7 +51,7 @@ export class TriggerClient extends APIResource {
await this._client.post<TriggerAsyncNamespacePipelineResponse>(
`/${namespacePipelineName}/triggerAsync`,
{
body: JSON.stringify({ input }),
body: JSON.stringify({ inputs }),
additionalHeaders: {
"instill-return-traces": returnTraces ? "true" : "false",
"instill-share-code": shareCode,
Expand All @@ -70,7 +70,7 @@ export class TriggerClient extends APIResource {

async triggerNamespacePipelineRelease({
namespacePipelineReleaseName,
input,
inputs,
returnTraces,
requesterUid,
shareCode,
Expand All @@ -80,7 +80,7 @@ export class TriggerClient extends APIResource {
await this._client.post<TriggerNamespacePipelineReleaseResponse>(
`/${namespacePipelineReleaseName}/trigger`,
{
body: JSON.stringify({ input }),
body: JSON.stringify({ inputs }),
additionalHeaders: {
"instill-return-traces": returnTraces ? "true" : "false",
"instill-share-code": shareCode,
Expand All @@ -99,7 +99,7 @@ export class TriggerClient extends APIResource {

async triggerAsyncNamespacePipelineRelease({
namespacePipelineReleaseName,
input,
inputs,
returnTraces,
requesterUid,
shareCode,
Expand All @@ -109,7 +109,7 @@ export class TriggerClient extends APIResource {
await this._client.post<TriggerAsyncNamespacePipelineReleaseResponse>(
`/${namespacePipelineReleaseName}/triggerAsync`,
{
body: JSON.stringify({ input }),
body: JSON.stringify({ inputs }),
additionalHeaders: {
"instill-return-traces": returnTraces ? "true" : "false",
"instill-share-code": shareCode,
Expand Down
8 changes: 4 additions & 4 deletions packages/sdk/src/vdp/trigger/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ export type PipelineTriggerMetadata = {

export type TriggerNamespacePipelineRequest = {
namespacePipelineName: string;
input: GeneralRecord[];
inputs: GeneralRecord[];
returnTraces?: boolean;
shareCode?: string;
requesterUid?: string;
Expand All @@ -20,7 +20,7 @@ export type TriggerNamespacePipelineResponse = {

export type TriggerAsyncNamespacePipelineRequest = {
namespacePipelineName: string;
input: GeneralRecord[];
inputs: GeneralRecord[];
returnTraces?: boolean;
shareCode?: string;
requesterUid?: string;
Expand All @@ -32,7 +32,7 @@ export type TriggerAsyncNamespacePipelineResponse = {

export type TriggerNamespacePipelineReleaseRequest = {
namespacePipelineReleaseName: string;
input: GeneralRecord[];
inputs: GeneralRecord[];
returnTraces?: boolean;
shareCode?: string;
requesterUid?: string;
Expand All @@ -45,7 +45,7 @@ export type TriggerNamespacePipelineReleaseResponse = {

export type TriggerAsyncNamespacePipelineReleaseRequest = {
namespacePipelineReleaseName: string;
input: GeneralRecord[];
inputs: GeneralRecord[];
returnTraces?: boolean;
shareCode?: string;
requesterUid?: string;
Expand Down
2 changes: 1 addition & 1 deletion packages/toolkit/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@instill-ai/toolkit",
"version": "0.96.0-rc.8",
"version": "0.96.0-rc.13",
"description": "Instill AI's frontend toolkit",
"repository": "https://github.com/instill-ai/design-system.git",
"bugs": "https://github.com/instill-ai/design-system/issues",
Expand Down
31 changes: 14 additions & 17 deletions packages/toolkit/src/components/ClonePipelineDialog.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import * as React from "react";
import { useRouter } from "next/navigation";
import { zodResolver } from "@hookform/resolvers/zod";
import { CreateNamespacePipelineRequest } from "instill-sdk";
import { useForm } from "react-hook-form";
import * as z from "zod";

Expand All @@ -21,7 +22,6 @@ import {

import { InstillErrors } from "../constant";
import {
CreateUserPipelinePayload,
InstillStore,
Nullable,
Pipeline,
Expand All @@ -30,7 +30,7 @@ import {
toastInstillError,
useAmplitudeCtx,
useAuthenticatedUser,
useCreateUserPipeline,
useCreateNamespacePipeline,
useInstillStore,
useRouteInfo,
useShallow,
Expand Down Expand Up @@ -113,7 +113,7 @@ export const ClonePipelineDialog = ({

const namespaces = useUserNamespaces();

const createPipeline = useCreateUserPipeline();
const createPipeline = useCreateNamespacePipeline();
async function handleClone(data: z.infer<typeof ClonePipelineSchema>) {
if (!me.isSuccess || !accessToken || !pipeline) {
return;
Expand Down Expand Up @@ -150,26 +150,23 @@ export const ClonePipelineDialog = ({

const recipe = composePipelineRecipeFromNodes(nodes);

const payload: CreateUserPipelinePayload = {
id: data.id,
recipe,
metadata: pipeline.metadata,
readme: pipeline.readme,
description: data.brief ? data.brief : pipeline.description,
sharing,
};

const namespace = namespaces.find(
(account) => account.id === data.namespaceId,
);

if (namespace) {
const payload: CreateNamespacePipelineRequest = {
namespaceName: namespace.name,
id: data.id,
recipe,
metadata: pipeline.metadata,
readme: pipeline.readme,
description: data.brief ? data.brief : pipeline.description,
sharing,
};

try {
await createPipeline.mutateAsync({
payload,
accessToken,
entityName: namespace.name,
});
await createPipeline.mutateAsync({ payload, accessToken });
if (amplitudeIsInit) {
if (pipeline.ownerName === me.data.name) {
sendAmplitudeData("duplicate_pipeline");
Expand Down
6 changes: 3 additions & 3 deletions packages/toolkit/src/components/card-pipeline/Head.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import {
OrganizationOwner,
Pipeline,
toastInstillError,
useDeleteUserPipeline,
useDeleteNamespacePipeline,
useInstillStore,
UserOwner,
useShallow,
Expand Down Expand Up @@ -48,11 +48,11 @@ export const Head = ({
const { toast } = useToast();
const { accessToken } = useInstillStore(useShallow(selector));

const deletePipeline = useDeleteUserPipeline();
const deletePipeline = useDeleteNamespacePipeline();
async function handleDeletePipeline() {
try {
await deletePipeline.mutateAsync({
pipelineName: pipeline.name,
namespacePipelineName: pipeline.name,
accessToken: accessToken ? accessToken : null,
});

Expand Down
8 changes: 5 additions & 3 deletions packages/toolkit/src/components/top-bar/NamespaceSwitch.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,11 @@ import {
useAuthenticatedUser,
useGuardPipelineBuilderUnsavedChangesNavigation,
useInstillStore,
useNamespacePipeline,
useNamespacesRemainingCredit,
useRouteInfo,
useShallow,
useUserModel,
useUserPipeline,
} from "../../lib";
import { useUserNamespaces } from "../../lib/useUserNamespaces";
import { env } from "../../server";
Expand Down Expand Up @@ -76,8 +76,10 @@ export const NamespaceSwitch = () => {
accessToken,
});

const pipeline = useUserPipeline({
pipelineName: routeInfo.isSuccess ? routeInfo.data.pipelineName : null,
const pipeline = useNamespacePipeline({
namespacePipelineName: routeInfo.isSuccess
? routeInfo.data.pipelineName
: null,
accessToken,
enabled: enabledQuery && pathnameEvaluator.isPipelineOverviewPage(pathname),
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ export function useCreditConsumptionChartRecords({
return Promise.reject(new Error("owner not provided"));
}

const client = getInstillAPIClient({ accessToken });
const client = getInstillAPIClient({ accessToken, publicAccess: false });

const data =
await client.core.metric.listInstillCreditConsumptionTimeChart({
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ export function usePipelineTriggerComputationTimeCharts({
return Promise.reject(new Error("accessToken not provided"));
}

const client = getInstillAPIClient({ accessToken });
const client = getInstillAPIClient({ accessToken, publicAccess: false });

const triggers =
await client.core.metric.listPipelineTriggerComputationTimeCharts({
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ export function usePipelineTriggerMetric({
return Promise.reject(new Error("accessToken not provided"));
}

const client = getInstillAPIClient({ accessToken });
const client = getInstillAPIClient({ accessToken, publicAccess: false });

const triggerMetric = await client.core.metric.listPipelineTriggerMetric({
pageSize: env("NEXT_PUBLIC_QUERY_PAGE_SIZE"),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ export function usePipelineTriggers({
return Promise.reject(new Error("accessToken not provided"));
}

const client = getInstillAPIClient({ accessToken });
const client = getInstillAPIClient({ accessToken, publicAccess: false });

const triggers = await client.core.metric.listPipelineTriggers({
pageSize: env("NEXT_PUBLIC_QUERY_PAGE_SIZE"),
Expand Down
Loading

0 comments on commit e6cb6ec

Please sign in to comment.