Files
simstudioai--sim/apps/sim/lib/api/contracts/tools/evernote.ts
T
wehub-resource-sync d25d482dc2
CI / Migrate Dev DB (push) Has been skipped
CI / Detect Version (push) Has been cancelled
CI / Migrate DB (push) Has been cancelled
CI / Build Dev ECR (./docker/app.Dockerfile, ECR_APP) (push) Has been cancelled
CI / Build Dev ECR (./docker/db.Dockerfile, ECR_MIGRATIONS) (push) Has been cancelled
CI / Build Dev ECR (./docker/pii.Dockerfile, ECR_PII) (push) Has been cancelled
CI / Build Dev ECR (./docker/realtime.Dockerfile, ECR_REALTIME) (push) Has been cancelled
CI / Deploy Trigger.dev (Dev) (push) Has been cancelled
CI / Build AMD64 (./docker/app.Dockerfile, ECR_APP, ghcr.io/simstudioai/simstudio) (push) Has been cancelled
CI / Build AMD64 (./docker/db.Dockerfile, ECR_MIGRATIONS, ghcr.io/simstudioai/migrations) (push) Has been cancelled
CI / Build AMD64 (./docker/pii.Dockerfile, ECR_PII, ghcr.io/simstudioai/pii) (push) Has been cancelled
CI / Build AMD64 (./docker/realtime.Dockerfile, ECR_REALTIME, ghcr.io/simstudioai/realtime) (push) Has been cancelled
CI / Build ARM64 (GHCR Only) (./docker/app.Dockerfile, ghcr.io/simstudioai/simstudio) (push) Has been cancelled
CI / Build ARM64 (GHCR Only) (./docker/db.Dockerfile, ghcr.io/simstudioai/migrations) (push) Has been cancelled
CI / Build ARM64 (GHCR Only) (./docker/pii.Dockerfile, ghcr.io/simstudioai/pii) (push) Has been cancelled
CI / Build ARM64 (GHCR Only) (./docker/realtime.Dockerfile, ghcr.io/simstudioai/realtime) (push) Has been cancelled
CI / Create GHCR Manifests (ghcr.io/simstudioai/migrations) (push) Has been cancelled
CI / Create GHCR Manifests (ghcr.io/simstudioai/pii) (push) Has been cancelled
CI / Create GHCR Manifests (ghcr.io/simstudioai/realtime) (push) Has been cancelled
CI / Create GHCR Manifests (ghcr.io/simstudioai/simstudio) (push) Has been cancelled
CI / Check Docs Changes (push) Has been cancelled
CI / Process Docs (push) Has been cancelled
CI / Create GitHub Release (push) Has been cancelled
CI / Test and Build (push) Has been cancelled
Publish CLI Package / publish-npm (push) Has been cancelled
Publish Python SDK / publish-pypi (push) Has been cancelled
Publish TypeScript SDK / publish-npm (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:20:55 +08:00

233 lines
10 KiB
TypeScript

import { z } from 'zod'
import type {
ContractBody,
ContractBodyInput,
ContractJsonResponse,
} from '@/lib/api/contracts/types'
import { defineRouteContract } from '@/lib/api/contracts/types'
const evernoteSuccessOutputSchema = <T extends z.ZodType>(output: T) =>
z.object({
success: z.literal(true),
output,
})
const evernoteNoteResponseSchema = evernoteSuccessOutputSchema(z.object({ note: z.unknown() }))
const evernoteNotebookResponseSchema = evernoteSuccessOutputSchema(
z.object({ notebook: z.unknown() })
)
const evernoteTagResponseSchema = evernoteSuccessOutputSchema(z.object({ tag: z.unknown() }))
const evernoteListNotebooksResponseSchema = evernoteSuccessOutputSchema(
z.object({ notebooks: z.array(z.unknown()) })
)
const evernoteListTagsResponseSchema = evernoteSuccessOutputSchema(
z.object({ tags: z.array(z.unknown()) })
)
const evernoteSearchNotesResponseSchema = evernoteSuccessOutputSchema(
z.object({
totalNotes: z.number(),
notes: z.array(z.unknown()),
})
)
const evernoteDeleteNoteResponseSchema = evernoteSuccessOutputSchema(
z.object({
success: z.literal(true),
noteGuid: z.string(),
})
)
const CREATE_NOTE_REQUIRED = 'apiKey, title, and content are required'
export const evernoteCreateNoteBodySchema = z.object({
apiKey: z.string({ error: CREATE_NOTE_REQUIRED }).min(1, CREATE_NOTE_REQUIRED),
title: z.string({ error: CREATE_NOTE_REQUIRED }).min(1, CREATE_NOTE_REQUIRED),
content: z.string({ error: CREATE_NOTE_REQUIRED }).min(1, CREATE_NOTE_REQUIRED),
notebookGuid: z.string().nullish(),
tagNames: z.union([z.string(), z.array(z.string())]).nullish(),
})
const UPDATE_NOTE_REQUIRED = 'apiKey and noteGuid are required'
export const evernoteUpdateNoteBodySchema = z.object({
apiKey: z.string({ error: UPDATE_NOTE_REQUIRED }).min(1, UPDATE_NOTE_REQUIRED),
noteGuid: z.string({ error: UPDATE_NOTE_REQUIRED }).min(1, UPDATE_NOTE_REQUIRED),
title: z.string().nullish(),
content: z.string().nullish(),
notebookGuid: z.string().nullish(),
tagNames: z.union([z.string(), z.array(z.string())]).nullish(),
})
const CREATE_TAG_REQUIRED = 'apiKey and name are required'
export const evernoteCreateTagBodySchema = z.object({
apiKey: z.string({ error: CREATE_TAG_REQUIRED }).min(1, CREATE_TAG_REQUIRED),
name: z.string({ error: CREATE_TAG_REQUIRED }).min(1, CREATE_TAG_REQUIRED),
parentGuid: z.string().nullish(),
})
const SEARCH_NOTES_REQUIRED = 'apiKey and query are required'
export const evernoteSearchNotesBodySchema = z.object({
apiKey: z.string({ error: SEARCH_NOTES_REQUIRED }).min(1, SEARCH_NOTES_REQUIRED),
query: z.string({ error: SEARCH_NOTES_REQUIRED }).min(1, SEARCH_NOTES_REQUIRED),
notebookGuid: z.string().nullish(),
offset: z.unknown().optional().default(0),
maxNotes: z.unknown().optional().default(25),
})
const CREATE_NOTEBOOK_REQUIRED = 'apiKey and name are required'
export const evernoteCreateNotebookBodySchema = z.object({
apiKey: z.string({ error: CREATE_NOTEBOOK_REQUIRED }).min(1, CREATE_NOTEBOOK_REQUIRED),
name: z.string({ error: CREATE_NOTEBOOK_REQUIRED }).min(1, CREATE_NOTEBOOK_REQUIRED),
stack: z.string().nullish(),
})
const DELETE_NOTE_REQUIRED = 'apiKey and noteGuid are required'
export const evernoteDeleteNoteBodySchema = z.object({
apiKey: z.string({ error: DELETE_NOTE_REQUIRED }).min(1, DELETE_NOTE_REQUIRED),
noteGuid: z.string({ error: DELETE_NOTE_REQUIRED }).min(1, DELETE_NOTE_REQUIRED),
})
const LIST_NOTEBOOKS_REQUIRED = 'apiKey is required'
export const evernoteListNotebooksBodySchema = z.object({
apiKey: z.string({ error: LIST_NOTEBOOKS_REQUIRED }).min(1, LIST_NOTEBOOKS_REQUIRED),
})
const GET_NOTEBOOK_REQUIRED = 'apiKey and notebookGuid are required'
export const evernoteGetNotebookBodySchema = z.object({
apiKey: z.string({ error: GET_NOTEBOOK_REQUIRED }).min(1, GET_NOTEBOOK_REQUIRED),
notebookGuid: z.string({ error: GET_NOTEBOOK_REQUIRED }).min(1, GET_NOTEBOOK_REQUIRED),
})
const LIST_TAGS_REQUIRED = 'apiKey is required'
export const evernoteListTagsBodySchema = z.object({
apiKey: z.string({ error: LIST_TAGS_REQUIRED }).min(1, LIST_TAGS_REQUIRED),
})
const GET_NOTE_REQUIRED = 'apiKey and noteGuid are required'
export const evernoteGetNoteBodySchema = z.object({
apiKey: z.string({ error: GET_NOTE_REQUIRED }).min(1, GET_NOTE_REQUIRED),
noteGuid: z.string({ error: GET_NOTE_REQUIRED }).min(1, GET_NOTE_REQUIRED),
withContent: z.boolean().nullish(),
})
const COPY_NOTE_REQUIRED = 'apiKey, noteGuid, and toNotebookGuid are required'
export const evernoteCopyNoteBodySchema = z.object({
apiKey: z.string({ error: COPY_NOTE_REQUIRED }).min(1, COPY_NOTE_REQUIRED),
noteGuid: z.string({ error: COPY_NOTE_REQUIRED }).min(1, COPY_NOTE_REQUIRED),
toNotebookGuid: z.string({ error: COPY_NOTE_REQUIRED }).min(1, COPY_NOTE_REQUIRED),
})
export const evernoteCreateNoteContract = defineRouteContract({
method: 'POST',
path: '/api/tools/evernote/create-note',
body: evernoteCreateNoteBodySchema,
response: { mode: 'json', schema: evernoteNoteResponseSchema },
})
export const evernoteUpdateNoteContract = defineRouteContract({
method: 'POST',
path: '/api/tools/evernote/update-note',
body: evernoteUpdateNoteBodySchema,
response: { mode: 'json', schema: evernoteNoteResponseSchema },
})
export const evernoteCreateTagContract = defineRouteContract({
method: 'POST',
path: '/api/tools/evernote/create-tag',
body: evernoteCreateTagBodySchema,
response: { mode: 'json', schema: evernoteTagResponseSchema },
})
export const evernoteSearchNotesContract = defineRouteContract({
method: 'POST',
path: '/api/tools/evernote/search-notes',
body: evernoteSearchNotesBodySchema,
response: { mode: 'json', schema: evernoteSearchNotesResponseSchema },
})
export const evernoteCreateNotebookContract = defineRouteContract({
method: 'POST',
path: '/api/tools/evernote/create-notebook',
body: evernoteCreateNotebookBodySchema,
response: { mode: 'json', schema: evernoteNotebookResponseSchema },
})
export const evernoteDeleteNoteContract = defineRouteContract({
method: 'POST',
path: '/api/tools/evernote/delete-note',
body: evernoteDeleteNoteBodySchema,
response: { mode: 'json', schema: evernoteDeleteNoteResponseSchema },
})
export const evernoteListNotebooksContract = defineRouteContract({
method: 'POST',
path: '/api/tools/evernote/list-notebooks',
body: evernoteListNotebooksBodySchema,
response: { mode: 'json', schema: evernoteListNotebooksResponseSchema },
})
export const evernoteGetNotebookContract = defineRouteContract({
method: 'POST',
path: '/api/tools/evernote/get-notebook',
body: evernoteGetNotebookBodySchema,
response: { mode: 'json', schema: evernoteNotebookResponseSchema },
})
export const evernoteListTagsContract = defineRouteContract({
method: 'POST',
path: '/api/tools/evernote/list-tags',
body: evernoteListTagsBodySchema,
response: { mode: 'json', schema: evernoteListTagsResponseSchema },
})
export const evernoteGetNoteContract = defineRouteContract({
method: 'POST',
path: '/api/tools/evernote/get-note',
body: evernoteGetNoteBodySchema,
response: { mode: 'json', schema: evernoteNoteResponseSchema },
})
export const evernoteCopyNoteContract = defineRouteContract({
method: 'POST',
path: '/api/tools/evernote/copy-note',
body: evernoteCopyNoteBodySchema,
response: { mode: 'json', schema: evernoteNoteResponseSchema },
})
export type EvernoteCreateNoteBody = ContractBody<typeof evernoteCreateNoteContract>
export type EvernoteCreateNoteBodyInput = ContractBodyInput<typeof evernoteCreateNoteContract>
export type EvernoteCreateNoteResponse = ContractJsonResponse<typeof evernoteCreateNoteContract>
export type EvernoteUpdateNoteBody = ContractBody<typeof evernoteUpdateNoteContract>
export type EvernoteUpdateNoteBodyInput = ContractBodyInput<typeof evernoteUpdateNoteContract>
export type EvernoteUpdateNoteResponse = ContractJsonResponse<typeof evernoteUpdateNoteContract>
export type EvernoteCreateTagBody = ContractBody<typeof evernoteCreateTagContract>
export type EvernoteCreateTagBodyInput = ContractBodyInput<typeof evernoteCreateTagContract>
export type EvernoteCreateTagResponse = ContractJsonResponse<typeof evernoteCreateTagContract>
export type EvernoteSearchNotesBody = ContractBody<typeof evernoteSearchNotesContract>
export type EvernoteSearchNotesBodyInput = ContractBodyInput<typeof evernoteSearchNotesContract>
export type EvernoteSearchNotesResponse = ContractJsonResponse<typeof evernoteSearchNotesContract>
export type EvernoteCreateNotebookBody = ContractBody<typeof evernoteCreateNotebookContract>
export type EvernoteCreateNotebookBodyInput = ContractBodyInput<
typeof evernoteCreateNotebookContract
>
export type EvernoteCreateNotebookResponse = ContractJsonResponse<
typeof evernoteCreateNotebookContract
>
export type EvernoteDeleteNoteBody = ContractBody<typeof evernoteDeleteNoteContract>
export type EvernoteDeleteNoteBodyInput = ContractBodyInput<typeof evernoteDeleteNoteContract>
export type EvernoteDeleteNoteResponse = ContractJsonResponse<typeof evernoteDeleteNoteContract>
export type EvernoteListNotebooksBody = ContractBody<typeof evernoteListNotebooksContract>
export type EvernoteListNotebooksBodyInput = ContractBodyInput<typeof evernoteListNotebooksContract>
export type EvernoteListNotebooksResponse = ContractJsonResponse<
typeof evernoteListNotebooksContract
>
export type EvernoteGetNotebookBody = ContractBody<typeof evernoteGetNotebookContract>
export type EvernoteGetNotebookBodyInput = ContractBodyInput<typeof evernoteGetNotebookContract>
export type EvernoteGetNotebookResponse = ContractJsonResponse<typeof evernoteGetNotebookContract>
export type EvernoteListTagsBody = ContractBody<typeof evernoteListTagsContract>
export type EvernoteListTagsBodyInput = ContractBodyInput<typeof evernoteListTagsContract>
export type EvernoteListTagsResponse = ContractJsonResponse<typeof evernoteListTagsContract>
export type EvernoteGetNoteBody = ContractBody<typeof evernoteGetNoteContract>
export type EvernoteGetNoteBodyInput = ContractBodyInput<typeof evernoteGetNoteContract>
export type EvernoteGetNoteResponse = ContractJsonResponse<typeof evernoteGetNoteContract>
export type EvernoteCopyNoteBody = ContractBody<typeof evernoteCopyNoteContract>
export type EvernoteCopyNoteBodyInput = ContractBodyInput<typeof evernoteCopyNoteContract>
export type EvernoteCopyNoteResponse = ContractJsonResponse<typeof evernoteCopyNoteContract>