@cossistant/types 0.0.29 → 0.0.30
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/api/ai-agent.d.ts +8 -40
- package/api/ai-agent.d.ts.map +1 -1
- package/api/ai-agent.js +10 -26
- package/api/ai-agent.js.map +1 -1
- package/api/common.d.ts.map +1 -1
- package/api/conversation.d.ts +458 -78
- package/api/conversation.d.ts.map +1 -1
- package/api/index.d.ts +3 -3
- package/api/index.js +3 -3
- package/api/knowledge.d.ts +57 -25
- package/api/knowledge.d.ts.map +1 -1
- package/api/knowledge.js +61 -11
- package/api/knowledge.js.map +1 -1
- package/api/link-source.d.ts +2 -0
- package/api/link-source.d.ts.map +1 -1
- package/api/link-source.js +8 -0
- package/api/link-source.js.map +1 -1
- package/api/timeline-item.d.ts +580 -91
- package/api/timeline-item.d.ts.map +1 -1
- package/api/timeline-item.js +68 -20
- package/api/timeline-item.js.map +1 -1
- package/index.d.ts +4 -4
- package/index.js +4 -4
- package/package.json +1 -1
- package/realtime-events.d.ts +446 -48
- package/realtime-events.d.ts.map +1 -1
- package/realtime-events.js +116 -1
- package/realtime-events.js.map +1 -1
- package/schemas.d.ts +92 -16
- package/schemas.d.ts.map +1 -1
- package/trpc/conversation.d.ts +369 -65
- package/trpc/conversation.d.ts.map +1 -1
- package/trpc/visitor.d.ts +1 -1
package/api/link-source.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"link-source.d.ts","names":[],"sources":["../../src/api/link-source.ts"],"sourcesContent":[],"mappings":";;;cAEa,wBAAsB,CAAA,CAAA;;EAAtB,OAAA,EAAA,SAAA;EAUA,QAAA,EAAA,UAAA;;;;;;;cAAA,0BAAwB,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAA,eAAA,CAAA;AAAA,KAiGzB,kBAAA,GAAqB,CAAA,CAAE,KAjGE,CAAA,OAiGW,wBAjGX,CAAA;AAiGzB,KACA,gBAAA,GAAmB,CAAA,CAAE,KADe,CAAA,OACF,sBADX,CAAA;AACnC;AASA;;cAAa,8BAA4B,CAAA,CAAA;;;;;;;;;;EAAA,IAAA,cAAA,mBAAA,CAAA,OAAA,CAAA,CAAA;EAAA,KAAA,cAAA,mBAAA,CAAA,OAAA,CAAA,CAAA;AA4BzC,CAAA,eAAY,CAAA;AAOC,KAPD,sBAAA,GAAyB,CAAA,CAAE,KAqCpC,CAAA,OApCK,4BAoCL,CAAA;;;;cA9BU,+BAA6B,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAgC9B,uBAAA,GAA0B,CAAA,CAAE,aAChC;;;;AAjCkC,cAuC7B,0BAvC6B,EAuCH,CAAA,CAAA,SAvCG,CAAA;EAgC9B,WAAA,aAAA;EAOC,EAAA,WAAA;;KAeD,oBAAA,GAAuB,CAAA,CAAE,aAAa;;;;AAAtC,cAKC,6BALqC,EAKR,CAAA,CAAA,SALQ,CAAA;EAKrC,WAAA,aAAA;;;;;;;;KA4CD,uBAAA,GAA0B,CAAA,CAAE,aAChC;;;;cAMK,+BAA6B,CAAA,CAAA;;;;KAe9B,uBAAA,GAA0B,CAAA,CAAE,aAChC;;;;AAnEkC,cAyE7B,8BAzE6B,EAyEC,CAAA,CAAA,SAzED,CAAA;EA4C9B,WAAA,aAAA;EAOC,EAAA,WAAA;;KAqCD,wBAAA,GAA2B,CAAA,CAAE,aACjC;;;;AAvBI,cA6BC,6BA5BL,EA4BkC,CAAA,CAAA,SA5BlC,CAAA;EAMK,WAAA,aAAA;;;KAqCD,uBAAA,GAA0B,CAAA,CAAE,aAChC;;;AAvBR;AAOa,cAsBA,2BATV,EASqC,CAAA,CAAA,SATrC,CAAA;;;;AAbuC,KAqC9B,qBAAA,GAAwB,CAAA,CAAE,KArCI,CAAA,OAqCS,2BArCT,CAAA;;AAe1C;AAOA;cAoBa,6BAA2B,CAAA,CAAA;;;EApBA,iBAAA,aAAA;EAAA,qBAAA,aAAA;EAe5B,cAAA,aAAqB;EAKpB,cAAA,eAAA,
|
|
1
|
+
{"version":3,"file":"link-source.d.ts","names":[],"sources":["../../src/api/link-source.ts"],"sourcesContent":[],"mappings":"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"}
|
package/api/link-source.js
CHANGED
|
@@ -279,6 +279,14 @@ const trainingStatsResponseSchema = z.object({
|
|
|
279
279
|
totalPagesLimit: z.number().int().nonnegative().nullable().openapi({
|
|
280
280
|
description: "Plan limit for total pages across all sources (null = unlimited)",
|
|
281
281
|
example: 10
|
|
282
|
+
}),
|
|
283
|
+
planLimitFaqs: z.number().int().nonnegative().nullable().openapi({
|
|
284
|
+
description: "Plan limit for number of FAQs (null = unlimited)",
|
|
285
|
+
example: 10
|
|
286
|
+
}),
|
|
287
|
+
planLimitFiles: z.number().int().nonnegative().nullable().openapi({
|
|
288
|
+
description: "Plan limit for number of files (null = unlimited)",
|
|
289
|
+
example: 5
|
|
282
290
|
})
|
|
283
291
|
}).openapi({ description: "Training statistics for the AI agent" });
|
|
284
292
|
/**
|
package/api/link-source.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"link-source.js","names":[],"sources":["../../src/api/link-source.ts"],"sourcesContent":["import { z } from \"@hono/zod-openapi\";\n\nexport const linkSourceStatusSchema = z\n\t.enum([\"pending\", \"mapping\", \"crawling\", \"completed\", \"failed\"])\n\t.openapi({\n\t\tdescription: \"Link source crawl status\",\n\t\texample: \"completed\",\n\t});\n\n/**\n * Link source response schema - used for single item responses\n */\nexport const linkSourceResponseSchema = z\n\t.object({\n\t\tid: z.ulid().openapi({\n\t\t\tdescription: \"Link source identifier\",\n\t\t\texample: \"01JG00000000000000000000A\",\n\t\t}),\n\t\torganizationId: z.ulid().openapi({\n\t\t\tdescription: \"Owning organization identifier\",\n\t\t\texample: \"01JG000000000000000000000\",\n\t\t}),\n\t\twebsiteId: z.ulid().openapi({\n\t\t\tdescription: \"Website identifier\",\n\t\t\texample: \"01JG000000000000000000001\",\n\t\t}),\n\t\taiAgentId: z.ulid().nullable().openapi({\n\t\t\tdescription:\n\t\t\t\t\"Optional AI agent identifier; null means shared at website scope\",\n\t\t\texample: \"01JG000000000000000000002\",\n\t\t}),\n\t\tparentLinkSourceId: z.ulid().nullable().openapi({\n\t\t\tdescription:\n\t\t\t\t\"Parent link source ID for hierarchical crawling; null means root\",\n\t\t\texample: null,\n\t\t}),\n\t\turl: z.url().openapi({\n\t\t\tdescription: \"Root URL to crawl\",\n\t\t\texample: \"https://docs.example.com\",\n\t\t}),\n\t\tstatus: linkSourceStatusSchema,\n\t\tfirecrawlJobId: z.string().nullable().openapi({\n\t\t\tdescription: \"Firecrawl job ID for tracking async crawl\",\n\t\t\texample: \"fc_job_123456\",\n\t\t}),\n\t\tdepth: z.number().int().nonnegative().openapi({\n\t\t\tdescription: \"Crawl depth from root (0 = root, 1 = direct subpage)\",\n\t\t\texample: 0,\n\t\t}),\n\t\tdiscoveredPagesCount: z.number().int().nonnegative().openapi({\n\t\t\tdescription: \"Number of pages discovered during mapping phase\",\n\t\t\texample: 25,\n\t\t}),\n\t\tcrawledPagesCount: z.number().int().nonnegative().openapi({\n\t\t\tdescription: \"Number of pages successfully crawled\",\n\t\t\texample: 15,\n\t\t}),\n\t\ttotalSizeBytes: z.number().int().nonnegative().openapi({\n\t\t\tdescription: \"Total size of crawled content in bytes\",\n\t\t\texample: 102_400,\n\t\t}),\n\t\tincludePaths: z\n\t\t\t.array(z.string())\n\t\t\t.nullable()\n\t\t\t.openapi({\n\t\t\t\tdescription: \"Paths to include in crawl (only URLs matching these)\",\n\t\t\t\texample: [\"/docs\", \"/blog\"],\n\t\t\t}),\n\t\texcludePaths: z\n\t\t\t.array(z.string())\n\t\t\t.nullable()\n\t\t\t.openapi({\n\t\t\t\tdescription:\n\t\t\t\t\t\"Paths to exclude from crawl (URLs matching these are skipped)\",\n\t\t\t\texample: [\"/admin\", \"/api\"],\n\t\t\t}),\n\t\tignoredUrls: z\n\t\t\t.array(z.string())\n\t\t\t.nullable()\n\t\t\t.openapi({\n\t\t\t\tdescription:\n\t\t\t\t\t\"URLs explicitly ignored by user (excluded from future crawls)\",\n\t\t\t\texample: [\"https://docs.example.com/deprecated\"],\n\t\t\t}),\n\t\tlastCrawledAt: z.string().nullable().openapi({\n\t\t\tdescription: \"Timestamp of last successful crawl\",\n\t\t\texample: \"2024-06-10T12:00:00.000Z\",\n\t\t}),\n\t\terrorMessage: z.string().nullable().openapi({\n\t\t\tdescription: \"Error message if crawl failed\",\n\t\t\texample: null,\n\t\t}),\n\t\tcreatedAt: z.string().openapi({\n\t\t\tdescription: \"Creation timestamp\",\n\t\t\texample: \"2024-06-10T12:00:00.000Z\",\n\t\t}),\n\t\tupdatedAt: z.string().openapi({\n\t\t\tdescription: \"Last update timestamp\",\n\t\t\texample: \"2024-06-11T08:00:00.000Z\",\n\t\t}),\n\t\tdeletedAt: z.string().nullable().openapi({\n\t\t\tdescription: \"Soft delete timestamp\",\n\t\t\texample: null,\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"Link source response\",\n\t});\n\nexport type LinkSourceResponse = z.infer<typeof linkSourceResponseSchema>;\nexport type LinkSourceStatus = z.infer<typeof linkSourceStatusSchema>;\n\n// ============================================================================\n// API Request/Response Schemas\n// ============================================================================\n\n/**\n * List link sources request schema (TRPC) - with websiteSlug\n */\nexport const listLinkSourcesRequestSchema = z\n\t.object({\n\t\twebsiteSlug: z.string().openapi({\n\t\t\tdescription: \"The website slug to list link sources for\",\n\t\t\texample: \"my-website\",\n\t\t}),\n\t\taiAgentId: z.ulid().nullable().optional().openapi({\n\t\t\tdescription:\n\t\t\t\t\"Filter by AI agent ID; null for shared entries; omit for all\",\n\t\t\texample: \"01JG000000000000000000002\",\n\t\t}),\n\t\tstatus: linkSourceStatusSchema.optional().openapi({\n\t\t\tdescription: \"Filter by crawl status\",\n\t\t\texample: \"completed\",\n\t\t}),\n\t\tpage: z.coerce.number().int().positive().default(1).openapi({\n\t\t\tdescription: \"Page number (1-indexed)\",\n\t\t\texample: 1,\n\t\t}),\n\t\tlimit: z.coerce.number().int().positive().max(100).default(20).openapi({\n\t\t\tdescription: \"Items per page (max 100)\",\n\t\t\texample: 20,\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"Request to list link sources with filters and pagination\",\n\t});\n\nexport type ListLinkSourcesRequest = z.infer<\n\ttypeof listLinkSourcesRequestSchema\n>;\n\n/**\n * List link sources response schema\n */\nexport const listLinkSourcesResponseSchema = z\n\t.object({\n\t\titems: z.array(linkSourceResponseSchema).openapi({\n\t\t\tdescription: \"Array of link sources\",\n\t\t}),\n\t\tpagination: z\n\t\t\t.object({\n\t\t\t\tpage: z.number().int().positive().openapi({\n\t\t\t\t\tdescription: \"Current page number\",\n\t\t\t\t\texample: 1,\n\t\t\t\t}),\n\t\t\t\tlimit: z.number().int().positive().openapi({\n\t\t\t\t\tdescription: \"Items per page\",\n\t\t\t\t\texample: 20,\n\t\t\t\t}),\n\t\t\t\ttotal: z.number().int().nonnegative().openapi({\n\t\t\t\t\tdescription: \"Total number of items\",\n\t\t\t\t\texample: 100,\n\t\t\t\t}),\n\t\t\t\thasMore: z.boolean().openapi({\n\t\t\t\t\tdescription: \"Whether there are more items available\",\n\t\t\t\t\texample: true,\n\t\t\t\t}),\n\t\t\t})\n\t\t\t.openapi({\n\t\t\t\tdescription: \"Pagination metadata\",\n\t\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"Paginated list of link sources\",\n\t});\n\nexport type ListLinkSourcesResponse = z.infer<\n\ttypeof listLinkSourcesResponseSchema\n>;\n\n/**\n * Get link source request schema (TRPC)\n */\nexport const getLinkSourceRequestSchema = z\n\t.object({\n\t\twebsiteSlug: z.string().openapi({\n\t\t\tdescription: \"The website slug\",\n\t\t\texample: \"my-website\",\n\t\t}),\n\t\tid: z.ulid().openapi({\n\t\t\tdescription: \"Link source ID\",\n\t\t\texample: \"01JG00000000000000000000A\",\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"Request to get a single link source\",\n\t});\n\nexport type GetLinkSourceRequest = z.infer<typeof getLinkSourceRequestSchema>;\n\n/**\n * Create link source request schema (TRPC)\n */\nexport const createLinkSourceRequestSchema = z\n\t.object({\n\t\twebsiteSlug: z.string().openapi({\n\t\t\tdescription: \"The website slug to create link source for\",\n\t\t\texample: \"my-website\",\n\t\t}),\n\t\taiAgentId: z.ulid().nullable().optional().openapi({\n\t\t\tdescription:\n\t\t\t\t\"Optional AI agent ID; null/omit for shared at website scope\",\n\t\t\texample: \"01JG000000000000000000002\",\n\t\t}),\n\t\tparentLinkSourceId: z.ulid().nullable().optional().openapi({\n\t\t\tdescription:\n\t\t\t\t\"Parent link source ID for hierarchical crawling; null/omit for root\",\n\t\t\texample: null,\n\t\t}),\n\t\turl: z.url().openapi({\n\t\t\tdescription: \"Root URL to crawl\",\n\t\t\texample: \"https://docs.example.com\",\n\t\t}),\n\t\tincludePaths: z\n\t\t\t.array(z.string())\n\t\t\t.optional()\n\t\t\t.openapi({\n\t\t\t\tdescription: \"Paths to include in crawl (only URLs matching these)\",\n\t\t\t\texample: [\"/docs\", \"/blog\"],\n\t\t\t}),\n\t\texcludePaths: z\n\t\t\t.array(z.string())\n\t\t\t.optional()\n\t\t\t.openapi({\n\t\t\t\tdescription:\n\t\t\t\t\t\"Paths to exclude from crawl (URLs matching these are skipped)\",\n\t\t\t\texample: [\"/admin\", \"/api\"],\n\t\t\t}),\n\t\tmaxDepth: z.number().int().nonnegative().default(1).optional().openapi({\n\t\t\tdescription: \"Maximum crawl depth (1 = direct subpages only)\",\n\t\t\texample: 1,\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"Request to create a new link source and trigger crawl\",\n\t});\n\nexport type CreateLinkSourceRequest = z.infer<\n\ttypeof createLinkSourceRequestSchema\n>;\n\n/**\n * Delete link source request schema (TRPC)\n */\nexport const deleteLinkSourceRequestSchema = z\n\t.object({\n\t\twebsiteSlug: z.string().openapi({\n\t\t\tdescription: \"The website slug\",\n\t\t\texample: \"my-website\",\n\t\t}),\n\t\tid: z.ulid().openapi({\n\t\t\tdescription: \"Link source ID to delete\",\n\t\t\texample: \"01JG00000000000000000000A\",\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"Request to delete a link source\",\n\t});\n\nexport type DeleteLinkSourceRequest = z.infer<\n\ttypeof deleteLinkSourceRequestSchema\n>;\n\n/**\n * Recrawl link source request schema (TRPC)\n */\nexport const recrawlLinkSourceRequestSchema = z\n\t.object({\n\t\twebsiteSlug: z.string().openapi({\n\t\t\tdescription: \"The website slug\",\n\t\t\texample: \"my-website\",\n\t\t}),\n\t\tid: z.ulid().openapi({\n\t\t\tdescription: \"Link source ID to recrawl\",\n\t\t\texample: \"01JG00000000000000000000A\",\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"Request to trigger a recrawl of an existing link source\",\n\t});\n\nexport type RecrawlLinkSourceRequest = z.infer<\n\ttypeof recrawlLinkSourceRequestSchema\n>;\n\n/**\n * Cancel link source request schema (TRPC)\n */\nexport const cancelLinkSourceRequestSchema = z\n\t.object({\n\t\twebsiteSlug: z.string().openapi({\n\t\t\tdescription: \"The website slug\",\n\t\t\texample: \"my-website\",\n\t\t}),\n\t\tid: z.ulid().openapi({\n\t\t\tdescription: \"Link source ID to cancel\",\n\t\t\texample: \"01JG00000000000000000000A\",\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"Request to cancel a crawl in progress\",\n\t});\n\nexport type CancelLinkSourceRequest = z.infer<\n\ttypeof cancelLinkSourceRequestSchema\n>;\n\n/**\n * Get crawl status request schema (TRPC)\n */\nexport const getCrawlStatusRequestSchema = z\n\t.object({\n\t\twebsiteSlug: z.string().openapi({\n\t\t\tdescription: \"The website slug\",\n\t\t\texample: \"my-website\",\n\t\t}),\n\t\tid: z.ulid().openapi({\n\t\t\tdescription: \"Link source ID to check status\",\n\t\t\texample: \"01JG00000000000000000000A\",\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"Request to get crawl status of a link source\",\n\t});\n\nexport type GetCrawlStatusRequest = z.infer<typeof getCrawlStatusRequestSchema>;\n\n/**\n * Training stats response schema\n */\nexport const trainingStatsResponseSchema = z\n\t.object({\n\t\tlinkSourcesCount: z.number().int().nonnegative().openapi({\n\t\t\tdescription: \"Total number of link sources\",\n\t\t\texample: 5,\n\t\t}),\n\t\turlKnowledgeCount: z.number().int().nonnegative().openapi({\n\t\t\tdescription: \"Total number of URL knowledge entries\",\n\t\t\texample: 50,\n\t\t}),\n\t\tfaqKnowledgeCount: z.number().int().nonnegative().openapi({\n\t\t\tdescription: \"Total number of FAQ knowledge entries\",\n\t\t\texample: 20,\n\t\t}),\n\t\tarticleKnowledgeCount: z.number().int().nonnegative().openapi({\n\t\t\tdescription: \"Total number of article knowledge entries\",\n\t\t\texample: 10,\n\t\t}),\n\t\ttotalSizeBytes: z.number().int().nonnegative().openapi({\n\t\t\tdescription: \"Total size of all knowledge in bytes\",\n\t\t\texample: 512_000,\n\t\t}),\n\t\tplanLimitBytes: z.number().int().nonnegative().nullable().openapi({\n\t\t\tdescription: \"Plan limit for knowledge size in bytes (null = unlimited)\",\n\t\t\texample: 10_485_760,\n\t\t}),\n\t\tplanLimitLinks: z.number().int().nonnegative().nullable().openapi({\n\t\t\tdescription: \"Plan limit for number of link sources (null = unlimited)\",\n\t\t\texample: 100,\n\t\t}),\n\t\tcrawlPagesPerSourceLimit: z\n\t\t\t.number()\n\t\t\t.int()\n\t\t\t.nonnegative()\n\t\t\t.nullable()\n\t\t\t.openapi({\n\t\t\t\tdescription:\n\t\t\t\t\t\"Plan limit for pages crawled per source (null = unlimited)\",\n\t\t\t\texample: 1000,\n\t\t\t}),\n\t\ttotalPagesLimit: z.number().int().nonnegative().nullable().openapi({\n\t\t\tdescription:\n\t\t\t\t\"Plan limit for total pages across all sources (null = unlimited)\",\n\t\t\texample: 10,\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"Training statistics for the AI agent\",\n\t});\n\nexport type TrainingStatsResponse = z.infer<typeof trainingStatsResponseSchema>;\n\n/**\n * Get training stats request schema (TRPC)\n */\nexport const getTrainingStatsRequestSchema = z\n\t.object({\n\t\twebsiteSlug: z.string().openapi({\n\t\t\tdescription: \"The website slug\",\n\t\t\texample: \"my-website\",\n\t\t}),\n\t\taiAgentId: z.ulid().nullable().optional().openapi({\n\t\t\tdescription:\n\t\t\t\t\"Filter by AI agent ID; null for shared entries; omit for all\",\n\t\t\texample: \"01JG000000000000000000002\",\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"Request to get training statistics\",\n\t});\n\nexport type GetTrainingStatsRequest = z.infer<\n\ttypeof getTrainingStatsRequestSchema\n>;\n\n/**\n * Scan subpages request schema (TRPC)\n * Used to trigger crawl of deeper subpages for a specific knowledge entry\n */\nexport const scanSubpagesRequestSchema = z\n\t.object({\n\t\twebsiteSlug: z.string().openapi({\n\t\t\tdescription: \"The website slug\",\n\t\t\texample: \"my-website\",\n\t\t}),\n\t\tlinkSourceId: z.ulid().openapi({\n\t\t\tdescription: \"Parent link source ID\",\n\t\t\texample: \"01JG00000000000000000000A\",\n\t\t}),\n\t\tknowledgeId: z.ulid().openapi({\n\t\t\tdescription: \"Knowledge entry ID to scan subpages for\",\n\t\t\texample: \"01JG00000000000000000000B\",\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"Request to scan subpages of a specific page\",\n\t});\n\nexport type ScanSubpagesRequest = z.infer<typeof scanSubpagesRequestSchema>;\n\n/**\n * List knowledge by link source request schema (TRPC)\n */\nexport const listKnowledgeByLinkSourceRequestSchema = z\n\t.object({\n\t\twebsiteSlug: z.string().openapi({\n\t\t\tdescription: \"The website slug\",\n\t\t\texample: \"my-website\",\n\t\t}),\n\t\tlinkSourceId: z.ulid().openapi({\n\t\t\tdescription: \"Link source ID to list knowledge for\",\n\t\t\texample: \"01JG00000000000000000000A\",\n\t\t}),\n\t\tpage: z.coerce.number().int().positive().default(1).openapi({\n\t\t\tdescription: \"Page number (1-indexed)\",\n\t\t\texample: 1,\n\t\t}),\n\t\tlimit: z.coerce.number().int().positive().max(100).default(50).openapi({\n\t\t\tdescription: \"Items per page (max 100)\",\n\t\t\texample: 50,\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"Request to list knowledge entries for a link source\",\n\t});\n\nexport type ListKnowledgeByLinkSourceRequest = z.infer<\n\ttypeof listKnowledgeByLinkSourceRequestSchema\n>;\n\n/**\n * Toggle knowledge included request schema (TRPC)\n */\nexport const toggleKnowledgeIncludedRequestSchema = z\n\t.object({\n\t\twebsiteSlug: z.string().openapi({\n\t\t\tdescription: \"The website slug\",\n\t\t\texample: \"my-website\",\n\t\t}),\n\t\tknowledgeId: z.ulid().openapi({\n\t\t\tdescription: \"Knowledge entry ID to toggle\",\n\t\t\texample: \"01JG00000000000000000000A\",\n\t\t}),\n\t\tisIncluded: z.boolean().openapi({\n\t\t\tdescription: \"Whether to include this knowledge in training\",\n\t\t\texample: true,\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"Request to toggle knowledge inclusion in training\",\n\t});\n\nexport type ToggleKnowledgeIncludedRequest = z.infer<\n\ttypeof toggleKnowledgeIncludedRequestSchema\n>;\n\n/**\n * Discovered page schema for realtime updates\n */\nexport const discoveredPageSchema = z.object({\n\turl: z.string().openapi({\n\t\tdescription: \"URL of the discovered page\",\n\t\texample: \"https://docs.example.com/getting-started\",\n\t}),\n\ttitle: z.string().nullable().openapi({\n\t\tdescription: \"Title of the page if available\",\n\t\texample: \"Getting Started Guide\",\n\t}),\n\tdepth: z.number().int().nonnegative().openapi({\n\t\tdescription: \"Depth from the root URL\",\n\t\texample: 1,\n\t}),\n});\n\nexport type DiscoveredPage = z.infer<typeof discoveredPageSchema>;\n\n/**\n * Crawl progress page schema for realtime updates\n */\nexport const crawlProgressPageSchema = z.object({\n\turl: z.string().openapi({\n\t\tdescription: \"URL of the crawled page\",\n\t\texample: \"https://docs.example.com/getting-started\",\n\t}),\n\ttitle: z.string().nullable().openapi({\n\t\tdescription: \"Title of the page\",\n\t\texample: \"Getting Started Guide\",\n\t}),\n\tstatus: z.enum([\"pending\", \"crawling\", \"completed\", \"failed\"]).openapi({\n\t\tdescription: \"Status of this specific page\",\n\t\texample: \"completed\",\n\t}),\n\tsizeBytes: z.number().int().nonnegative().optional().openapi({\n\t\tdescription: \"Size of crawled content in bytes\",\n\t\texample: 4096,\n\t}),\n\terror: z.string().nullable().optional().openapi({\n\t\tdescription: \"Error message if page crawl failed\",\n\t\texample: null,\n\t}),\n});\n\nexport type CrawlProgressPage = z.infer<typeof crawlProgressPageSchema>;\n\n/**\n * Ignore page request schema (TRPC)\n * Adds URL to ignoredUrls and soft-deletes the knowledge entry\n */\nexport const ignorePageRequestSchema = z\n\t.object({\n\t\twebsiteSlug: z.string().openapi({\n\t\t\tdescription: \"The website slug\",\n\t\t\texample: \"my-website\",\n\t\t}),\n\t\tlinkSourceId: z.ulid().openapi({\n\t\t\tdescription: \"Link source ID containing this page\",\n\t\t\texample: \"01JG00000000000000000000A\",\n\t\t}),\n\t\tknowledgeId: z.ulid().openapi({\n\t\t\tdescription: \"Knowledge entry ID to ignore\",\n\t\t\texample: \"01JG00000000000000000000B\",\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"Request to ignore a page (add to ignoredUrls and delete)\",\n\t});\n\nexport type IgnorePageRequest = z.infer<typeof ignorePageRequestSchema>;\n\n/**\n * Reindex page request schema (TRPC)\n * Re-scrapes a single URL and updates the knowledge entry\n */\nexport const reindexPageRequestSchema = z\n\t.object({\n\t\twebsiteSlug: z.string().openapi({\n\t\t\tdescription: \"The website slug\",\n\t\t\texample: \"my-website\",\n\t\t}),\n\t\tlinkSourceId: z.ulid().openapi({\n\t\t\tdescription: \"Link source ID containing this page\",\n\t\t\texample: \"01JG00000000000000000000A\",\n\t\t}),\n\t\tknowledgeId: z.ulid().openapi({\n\t\t\tdescription: \"Knowledge entry ID to reindex\",\n\t\t\texample: \"01JG00000000000000000000B\",\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"Request to reindex (re-scrape) a specific page\",\n\t});\n\nexport type ReindexPageRequest = z.infer<typeof reindexPageRequestSchema>;\n\n/**\n * Delete page request schema (TRPC)\n * Soft-deletes a knowledge entry without ignoring future crawls\n */\nexport const deletePageRequestSchema = z\n\t.object({\n\t\twebsiteSlug: z.string().openapi({\n\t\t\tdescription: \"The website slug\",\n\t\t\texample: \"my-website\",\n\t\t}),\n\t\tknowledgeId: z.ulid().openapi({\n\t\t\tdescription: \"Knowledge entry ID to delete\",\n\t\t\texample: \"01JG00000000000000000000B\",\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"Request to delete a page from knowledge base\",\n\t});\n\nexport type DeletePageRequest = z.infer<typeof deletePageRequestSchema>;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"link-source.js","names":[],"sources":["../../src/api/link-source.ts"],"sourcesContent":["import { z } from \"@hono/zod-openapi\";\n\nexport const linkSourceStatusSchema = z\n\t.enum([\"pending\", \"mapping\", \"crawling\", \"completed\", \"failed\"])\n\t.openapi({\n\t\tdescription: \"Link source crawl status\",\n\t\texample: \"completed\",\n\t});\n\n/**\n * Link source response schema - used for single item responses\n */\nexport const linkSourceResponseSchema = z\n\t.object({\n\t\tid: z.ulid().openapi({\n\t\t\tdescription: \"Link source identifier\",\n\t\t\texample: \"01JG00000000000000000000A\",\n\t\t}),\n\t\torganizationId: z.ulid().openapi({\n\t\t\tdescription: \"Owning organization identifier\",\n\t\t\texample: \"01JG000000000000000000000\",\n\t\t}),\n\t\twebsiteId: z.ulid().openapi({\n\t\t\tdescription: \"Website identifier\",\n\t\t\texample: \"01JG000000000000000000001\",\n\t\t}),\n\t\taiAgentId: z.ulid().nullable().openapi({\n\t\t\tdescription:\n\t\t\t\t\"Optional AI agent identifier; null means shared at website scope\",\n\t\t\texample: \"01JG000000000000000000002\",\n\t\t}),\n\t\tparentLinkSourceId: z.ulid().nullable().openapi({\n\t\t\tdescription:\n\t\t\t\t\"Parent link source ID for hierarchical crawling; null means root\",\n\t\t\texample: null,\n\t\t}),\n\t\turl: z.url().openapi({\n\t\t\tdescription: \"Root URL to crawl\",\n\t\t\texample: \"https://docs.example.com\",\n\t\t}),\n\t\tstatus: linkSourceStatusSchema,\n\t\tfirecrawlJobId: z.string().nullable().openapi({\n\t\t\tdescription: \"Firecrawl job ID for tracking async crawl\",\n\t\t\texample: \"fc_job_123456\",\n\t\t}),\n\t\tdepth: z.number().int().nonnegative().openapi({\n\t\t\tdescription: \"Crawl depth from root (0 = root, 1 = direct subpage)\",\n\t\t\texample: 0,\n\t\t}),\n\t\tdiscoveredPagesCount: z.number().int().nonnegative().openapi({\n\t\t\tdescription: \"Number of pages discovered during mapping phase\",\n\t\t\texample: 25,\n\t\t}),\n\t\tcrawledPagesCount: z.number().int().nonnegative().openapi({\n\t\t\tdescription: \"Number of pages successfully crawled\",\n\t\t\texample: 15,\n\t\t}),\n\t\ttotalSizeBytes: z.number().int().nonnegative().openapi({\n\t\t\tdescription: \"Total size of crawled content in bytes\",\n\t\t\texample: 102_400,\n\t\t}),\n\t\tincludePaths: z\n\t\t\t.array(z.string())\n\t\t\t.nullable()\n\t\t\t.openapi({\n\t\t\t\tdescription: \"Paths to include in crawl (only URLs matching these)\",\n\t\t\t\texample: [\"/docs\", \"/blog\"],\n\t\t\t}),\n\t\texcludePaths: z\n\t\t\t.array(z.string())\n\t\t\t.nullable()\n\t\t\t.openapi({\n\t\t\t\tdescription:\n\t\t\t\t\t\"Paths to exclude from crawl (URLs matching these are skipped)\",\n\t\t\t\texample: [\"/admin\", \"/api\"],\n\t\t\t}),\n\t\tignoredUrls: z\n\t\t\t.array(z.string())\n\t\t\t.nullable()\n\t\t\t.openapi({\n\t\t\t\tdescription:\n\t\t\t\t\t\"URLs explicitly ignored by user (excluded from future crawls)\",\n\t\t\t\texample: [\"https://docs.example.com/deprecated\"],\n\t\t\t}),\n\t\tlastCrawledAt: z.string().nullable().openapi({\n\t\t\tdescription: \"Timestamp of last successful crawl\",\n\t\t\texample: \"2024-06-10T12:00:00.000Z\",\n\t\t}),\n\t\terrorMessage: z.string().nullable().openapi({\n\t\t\tdescription: \"Error message if crawl failed\",\n\t\t\texample: null,\n\t\t}),\n\t\tcreatedAt: z.string().openapi({\n\t\t\tdescription: \"Creation timestamp\",\n\t\t\texample: \"2024-06-10T12:00:00.000Z\",\n\t\t}),\n\t\tupdatedAt: z.string().openapi({\n\t\t\tdescription: \"Last update timestamp\",\n\t\t\texample: \"2024-06-11T08:00:00.000Z\",\n\t\t}),\n\t\tdeletedAt: z.string().nullable().openapi({\n\t\t\tdescription: \"Soft delete timestamp\",\n\t\t\texample: null,\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"Link source response\",\n\t});\n\nexport type LinkSourceResponse = z.infer<typeof linkSourceResponseSchema>;\nexport type LinkSourceStatus = z.infer<typeof linkSourceStatusSchema>;\n\n// ============================================================================\n// API Request/Response Schemas\n// ============================================================================\n\n/**\n * List link sources request schema (TRPC) - with websiteSlug\n */\nexport const listLinkSourcesRequestSchema = z\n\t.object({\n\t\twebsiteSlug: z.string().openapi({\n\t\t\tdescription: \"The website slug to list link sources for\",\n\t\t\texample: \"my-website\",\n\t\t}),\n\t\taiAgentId: z.ulid().nullable().optional().openapi({\n\t\t\tdescription:\n\t\t\t\t\"Filter by AI agent ID; null for shared entries; omit for all\",\n\t\t\texample: \"01JG000000000000000000002\",\n\t\t}),\n\t\tstatus: linkSourceStatusSchema.optional().openapi({\n\t\t\tdescription: \"Filter by crawl status\",\n\t\t\texample: \"completed\",\n\t\t}),\n\t\tpage: z.coerce.number().int().positive().default(1).openapi({\n\t\t\tdescription: \"Page number (1-indexed)\",\n\t\t\texample: 1,\n\t\t}),\n\t\tlimit: z.coerce.number().int().positive().max(100).default(20).openapi({\n\t\t\tdescription: \"Items per page (max 100)\",\n\t\t\texample: 20,\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"Request to list link sources with filters and pagination\",\n\t});\n\nexport type ListLinkSourcesRequest = z.infer<\n\ttypeof listLinkSourcesRequestSchema\n>;\n\n/**\n * List link sources response schema\n */\nexport const listLinkSourcesResponseSchema = z\n\t.object({\n\t\titems: z.array(linkSourceResponseSchema).openapi({\n\t\t\tdescription: \"Array of link sources\",\n\t\t}),\n\t\tpagination: z\n\t\t\t.object({\n\t\t\t\tpage: z.number().int().positive().openapi({\n\t\t\t\t\tdescription: \"Current page number\",\n\t\t\t\t\texample: 1,\n\t\t\t\t}),\n\t\t\t\tlimit: z.number().int().positive().openapi({\n\t\t\t\t\tdescription: \"Items per page\",\n\t\t\t\t\texample: 20,\n\t\t\t\t}),\n\t\t\t\ttotal: z.number().int().nonnegative().openapi({\n\t\t\t\t\tdescription: \"Total number of items\",\n\t\t\t\t\texample: 100,\n\t\t\t\t}),\n\t\t\t\thasMore: z.boolean().openapi({\n\t\t\t\t\tdescription: \"Whether there are more items available\",\n\t\t\t\t\texample: true,\n\t\t\t\t}),\n\t\t\t})\n\t\t\t.openapi({\n\t\t\t\tdescription: \"Pagination metadata\",\n\t\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"Paginated list of link sources\",\n\t});\n\nexport type ListLinkSourcesResponse = z.infer<\n\ttypeof listLinkSourcesResponseSchema\n>;\n\n/**\n * Get link source request schema (TRPC)\n */\nexport const getLinkSourceRequestSchema = z\n\t.object({\n\t\twebsiteSlug: z.string().openapi({\n\t\t\tdescription: \"The website slug\",\n\t\t\texample: \"my-website\",\n\t\t}),\n\t\tid: z.ulid().openapi({\n\t\t\tdescription: \"Link source ID\",\n\t\t\texample: \"01JG00000000000000000000A\",\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"Request to get a single link source\",\n\t});\n\nexport type GetLinkSourceRequest = z.infer<typeof getLinkSourceRequestSchema>;\n\n/**\n * Create link source request schema (TRPC)\n */\nexport const createLinkSourceRequestSchema = z\n\t.object({\n\t\twebsiteSlug: z.string().openapi({\n\t\t\tdescription: \"The website slug to create link source for\",\n\t\t\texample: \"my-website\",\n\t\t}),\n\t\taiAgentId: z.ulid().nullable().optional().openapi({\n\t\t\tdescription:\n\t\t\t\t\"Optional AI agent ID; null/omit for shared at website scope\",\n\t\t\texample: \"01JG000000000000000000002\",\n\t\t}),\n\t\tparentLinkSourceId: z.ulid().nullable().optional().openapi({\n\t\t\tdescription:\n\t\t\t\t\"Parent link source ID for hierarchical crawling; null/omit for root\",\n\t\t\texample: null,\n\t\t}),\n\t\turl: z.url().openapi({\n\t\t\tdescription: \"Root URL to crawl\",\n\t\t\texample: \"https://docs.example.com\",\n\t\t}),\n\t\tincludePaths: z\n\t\t\t.array(z.string())\n\t\t\t.optional()\n\t\t\t.openapi({\n\t\t\t\tdescription: \"Paths to include in crawl (only URLs matching these)\",\n\t\t\t\texample: [\"/docs\", \"/blog\"],\n\t\t\t}),\n\t\texcludePaths: z\n\t\t\t.array(z.string())\n\t\t\t.optional()\n\t\t\t.openapi({\n\t\t\t\tdescription:\n\t\t\t\t\t\"Paths to exclude from crawl (URLs matching these are skipped)\",\n\t\t\t\texample: [\"/admin\", \"/api\"],\n\t\t\t}),\n\t\tmaxDepth: z.number().int().nonnegative().default(1).optional().openapi({\n\t\t\tdescription: \"Maximum crawl depth (1 = direct subpages only)\",\n\t\t\texample: 1,\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"Request to create a new link source and trigger crawl\",\n\t});\n\nexport type CreateLinkSourceRequest = z.infer<\n\ttypeof createLinkSourceRequestSchema\n>;\n\n/**\n * Delete link source request schema (TRPC)\n */\nexport const deleteLinkSourceRequestSchema = z\n\t.object({\n\t\twebsiteSlug: z.string().openapi({\n\t\t\tdescription: \"The website slug\",\n\t\t\texample: \"my-website\",\n\t\t}),\n\t\tid: z.ulid().openapi({\n\t\t\tdescription: \"Link source ID to delete\",\n\t\t\texample: \"01JG00000000000000000000A\",\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"Request to delete a link source\",\n\t});\n\nexport type DeleteLinkSourceRequest = z.infer<\n\ttypeof deleteLinkSourceRequestSchema\n>;\n\n/**\n * Recrawl link source request schema (TRPC)\n */\nexport const recrawlLinkSourceRequestSchema = z\n\t.object({\n\t\twebsiteSlug: z.string().openapi({\n\t\t\tdescription: \"The website slug\",\n\t\t\texample: \"my-website\",\n\t\t}),\n\t\tid: z.ulid().openapi({\n\t\t\tdescription: \"Link source ID to recrawl\",\n\t\t\texample: \"01JG00000000000000000000A\",\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"Request to trigger a recrawl of an existing link source\",\n\t});\n\nexport type RecrawlLinkSourceRequest = z.infer<\n\ttypeof recrawlLinkSourceRequestSchema\n>;\n\n/**\n * Cancel link source request schema (TRPC)\n */\nexport const cancelLinkSourceRequestSchema = z\n\t.object({\n\t\twebsiteSlug: z.string().openapi({\n\t\t\tdescription: \"The website slug\",\n\t\t\texample: \"my-website\",\n\t\t}),\n\t\tid: z.ulid().openapi({\n\t\t\tdescription: \"Link source ID to cancel\",\n\t\t\texample: \"01JG00000000000000000000A\",\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"Request to cancel a crawl in progress\",\n\t});\n\nexport type CancelLinkSourceRequest = z.infer<\n\ttypeof cancelLinkSourceRequestSchema\n>;\n\n/**\n * Get crawl status request schema (TRPC)\n */\nexport const getCrawlStatusRequestSchema = z\n\t.object({\n\t\twebsiteSlug: z.string().openapi({\n\t\t\tdescription: \"The website slug\",\n\t\t\texample: \"my-website\",\n\t\t}),\n\t\tid: z.ulid().openapi({\n\t\t\tdescription: \"Link source ID to check status\",\n\t\t\texample: \"01JG00000000000000000000A\",\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"Request to get crawl status of a link source\",\n\t});\n\nexport type GetCrawlStatusRequest = z.infer<typeof getCrawlStatusRequestSchema>;\n\n/**\n * Training stats response schema\n */\nexport const trainingStatsResponseSchema = z\n\t.object({\n\t\tlinkSourcesCount: z.number().int().nonnegative().openapi({\n\t\t\tdescription: \"Total number of link sources\",\n\t\t\texample: 5,\n\t\t}),\n\t\turlKnowledgeCount: z.number().int().nonnegative().openapi({\n\t\t\tdescription: \"Total number of URL knowledge entries\",\n\t\t\texample: 50,\n\t\t}),\n\t\tfaqKnowledgeCount: z.number().int().nonnegative().openapi({\n\t\t\tdescription: \"Total number of FAQ knowledge entries\",\n\t\t\texample: 20,\n\t\t}),\n\t\tarticleKnowledgeCount: z.number().int().nonnegative().openapi({\n\t\t\tdescription: \"Total number of article knowledge entries\",\n\t\t\texample: 10,\n\t\t}),\n\t\ttotalSizeBytes: z.number().int().nonnegative().openapi({\n\t\t\tdescription: \"Total size of all knowledge in bytes\",\n\t\t\texample: 512_000,\n\t\t}),\n\t\tplanLimitBytes: z.number().int().nonnegative().nullable().openapi({\n\t\t\tdescription: \"Plan limit for knowledge size in bytes (null = unlimited)\",\n\t\t\texample: 10_485_760,\n\t\t}),\n\t\tplanLimitLinks: z.number().int().nonnegative().nullable().openapi({\n\t\t\tdescription: \"Plan limit for number of link sources (null = unlimited)\",\n\t\t\texample: 100,\n\t\t}),\n\t\tcrawlPagesPerSourceLimit: z\n\t\t\t.number()\n\t\t\t.int()\n\t\t\t.nonnegative()\n\t\t\t.nullable()\n\t\t\t.openapi({\n\t\t\t\tdescription:\n\t\t\t\t\t\"Plan limit for pages crawled per source (null = unlimited)\",\n\t\t\t\texample: 1000,\n\t\t\t}),\n\t\ttotalPagesLimit: z.number().int().nonnegative().nullable().openapi({\n\t\t\tdescription:\n\t\t\t\t\"Plan limit for total pages across all sources (null = unlimited)\",\n\t\t\texample: 10,\n\t\t}),\n\t\tplanLimitFaqs: z.number().int().nonnegative().nullable().openapi({\n\t\t\tdescription: \"Plan limit for number of FAQs (null = unlimited)\",\n\t\t\texample: 10,\n\t\t}),\n\t\tplanLimitFiles: z.number().int().nonnegative().nullable().openapi({\n\t\t\tdescription: \"Plan limit for number of files (null = unlimited)\",\n\t\t\texample: 5,\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"Training statistics for the AI agent\",\n\t});\n\nexport type TrainingStatsResponse = z.infer<typeof trainingStatsResponseSchema>;\n\n/**\n * Get training stats request schema (TRPC)\n */\nexport const getTrainingStatsRequestSchema = z\n\t.object({\n\t\twebsiteSlug: z.string().openapi({\n\t\t\tdescription: \"The website slug\",\n\t\t\texample: \"my-website\",\n\t\t}),\n\t\taiAgentId: z.ulid().nullable().optional().openapi({\n\t\t\tdescription:\n\t\t\t\t\"Filter by AI agent ID; null for shared entries; omit for all\",\n\t\t\texample: \"01JG000000000000000000002\",\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"Request to get training statistics\",\n\t});\n\nexport type GetTrainingStatsRequest = z.infer<\n\ttypeof getTrainingStatsRequestSchema\n>;\n\n/**\n * Scan subpages request schema (TRPC)\n * Used to trigger crawl of deeper subpages for a specific knowledge entry\n */\nexport const scanSubpagesRequestSchema = z\n\t.object({\n\t\twebsiteSlug: z.string().openapi({\n\t\t\tdescription: \"The website slug\",\n\t\t\texample: \"my-website\",\n\t\t}),\n\t\tlinkSourceId: z.ulid().openapi({\n\t\t\tdescription: \"Parent link source ID\",\n\t\t\texample: \"01JG00000000000000000000A\",\n\t\t}),\n\t\tknowledgeId: z.ulid().openapi({\n\t\t\tdescription: \"Knowledge entry ID to scan subpages for\",\n\t\t\texample: \"01JG00000000000000000000B\",\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"Request to scan subpages of a specific page\",\n\t});\n\nexport type ScanSubpagesRequest = z.infer<typeof scanSubpagesRequestSchema>;\n\n/**\n * List knowledge by link source request schema (TRPC)\n */\nexport const listKnowledgeByLinkSourceRequestSchema = z\n\t.object({\n\t\twebsiteSlug: z.string().openapi({\n\t\t\tdescription: \"The website slug\",\n\t\t\texample: \"my-website\",\n\t\t}),\n\t\tlinkSourceId: z.ulid().openapi({\n\t\t\tdescription: \"Link source ID to list knowledge for\",\n\t\t\texample: \"01JG00000000000000000000A\",\n\t\t}),\n\t\tpage: z.coerce.number().int().positive().default(1).openapi({\n\t\t\tdescription: \"Page number (1-indexed)\",\n\t\t\texample: 1,\n\t\t}),\n\t\tlimit: z.coerce.number().int().positive().max(100).default(50).openapi({\n\t\t\tdescription: \"Items per page (max 100)\",\n\t\t\texample: 50,\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"Request to list knowledge entries for a link source\",\n\t});\n\nexport type ListKnowledgeByLinkSourceRequest = z.infer<\n\ttypeof listKnowledgeByLinkSourceRequestSchema\n>;\n\n/**\n * Toggle knowledge included request schema (TRPC)\n */\nexport const toggleKnowledgeIncludedRequestSchema = z\n\t.object({\n\t\twebsiteSlug: z.string().openapi({\n\t\t\tdescription: \"The website slug\",\n\t\t\texample: \"my-website\",\n\t\t}),\n\t\tknowledgeId: z.ulid().openapi({\n\t\t\tdescription: \"Knowledge entry ID to toggle\",\n\t\t\texample: \"01JG00000000000000000000A\",\n\t\t}),\n\t\tisIncluded: z.boolean().openapi({\n\t\t\tdescription: \"Whether to include this knowledge in training\",\n\t\t\texample: true,\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"Request to toggle knowledge inclusion in training\",\n\t});\n\nexport type ToggleKnowledgeIncludedRequest = z.infer<\n\ttypeof toggleKnowledgeIncludedRequestSchema\n>;\n\n/**\n * Discovered page schema for realtime updates\n */\nexport const discoveredPageSchema = z.object({\n\turl: z.string().openapi({\n\t\tdescription: \"URL of the discovered page\",\n\t\texample: \"https://docs.example.com/getting-started\",\n\t}),\n\ttitle: z.string().nullable().openapi({\n\t\tdescription: \"Title of the page if available\",\n\t\texample: \"Getting Started Guide\",\n\t}),\n\tdepth: z.number().int().nonnegative().openapi({\n\t\tdescription: \"Depth from the root URL\",\n\t\texample: 1,\n\t}),\n});\n\nexport type DiscoveredPage = z.infer<typeof discoveredPageSchema>;\n\n/**\n * Crawl progress page schema for realtime updates\n */\nexport const crawlProgressPageSchema = z.object({\n\turl: z.string().openapi({\n\t\tdescription: \"URL of the crawled page\",\n\t\texample: \"https://docs.example.com/getting-started\",\n\t}),\n\ttitle: z.string().nullable().openapi({\n\t\tdescription: \"Title of the page\",\n\t\texample: \"Getting Started Guide\",\n\t}),\n\tstatus: z.enum([\"pending\", \"crawling\", \"completed\", \"failed\"]).openapi({\n\t\tdescription: \"Status of this specific page\",\n\t\texample: \"completed\",\n\t}),\n\tsizeBytes: z.number().int().nonnegative().optional().openapi({\n\t\tdescription: \"Size of crawled content in bytes\",\n\t\texample: 4096,\n\t}),\n\terror: z.string().nullable().optional().openapi({\n\t\tdescription: \"Error message if page crawl failed\",\n\t\texample: null,\n\t}),\n});\n\nexport type CrawlProgressPage = z.infer<typeof crawlProgressPageSchema>;\n\n/**\n * Ignore page request schema (TRPC)\n * Adds URL to ignoredUrls and soft-deletes the knowledge entry\n */\nexport const ignorePageRequestSchema = z\n\t.object({\n\t\twebsiteSlug: z.string().openapi({\n\t\t\tdescription: \"The website slug\",\n\t\t\texample: \"my-website\",\n\t\t}),\n\t\tlinkSourceId: z.ulid().openapi({\n\t\t\tdescription: \"Link source ID containing this page\",\n\t\t\texample: \"01JG00000000000000000000A\",\n\t\t}),\n\t\tknowledgeId: z.ulid().openapi({\n\t\t\tdescription: \"Knowledge entry ID to ignore\",\n\t\t\texample: \"01JG00000000000000000000B\",\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"Request to ignore a page (add to ignoredUrls and delete)\",\n\t});\n\nexport type IgnorePageRequest = z.infer<typeof ignorePageRequestSchema>;\n\n/**\n * Reindex page request schema (TRPC)\n * Re-scrapes a single URL and updates the knowledge entry\n */\nexport const reindexPageRequestSchema = z\n\t.object({\n\t\twebsiteSlug: z.string().openapi({\n\t\t\tdescription: \"The website slug\",\n\t\t\texample: \"my-website\",\n\t\t}),\n\t\tlinkSourceId: z.ulid().openapi({\n\t\t\tdescription: \"Link source ID containing this page\",\n\t\t\texample: \"01JG00000000000000000000A\",\n\t\t}),\n\t\tknowledgeId: z.ulid().openapi({\n\t\t\tdescription: \"Knowledge entry ID to reindex\",\n\t\t\texample: \"01JG00000000000000000000B\",\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"Request to reindex (re-scrape) a specific page\",\n\t});\n\nexport type ReindexPageRequest = z.infer<typeof reindexPageRequestSchema>;\n\n/**\n * Delete page request schema (TRPC)\n * Soft-deletes a knowledge entry without ignoring future crawls\n */\nexport const deletePageRequestSchema = z\n\t.object({\n\t\twebsiteSlug: z.string().openapi({\n\t\t\tdescription: \"The website slug\",\n\t\t\texample: \"my-website\",\n\t\t}),\n\t\tknowledgeId: z.ulid().openapi({\n\t\t\tdescription: \"Knowledge entry ID to delete\",\n\t\t\texample: \"01JG00000000000000000000B\",\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"Request to delete a page from knowledge base\",\n\t});\n\nexport type DeletePageRequest = z.infer<typeof deletePageRequestSchema>;\n"],"mappings":"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"}
|