@djangocfg/ext-knowbase 1.0.8 → 1.0.10

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.
Files changed (29) hide show
  1. package/dist/config.cjs +3 -1
  2. package/dist/config.js +3 -1
  3. package/dist/hooks.cjs +71 -16
  4. package/dist/hooks.d.cts +6 -5
  5. package/dist/hooks.d.ts +6 -5
  6. package/dist/hooks.js +70 -16
  7. package/dist/index.cjs +67 -13
  8. package/dist/index.d.cts +81 -25
  9. package/dist/index.d.ts +81 -25
  10. package/dist/index.js +68 -15
  11. package/package.json +7 -5
  12. package/src/api/generated/ext_knowbase/CLAUDE.md +2 -9
  13. package/src/api/generated/ext_knowbase/_utils/fetchers/ext_knowbase__knowbase.ts +2 -1
  14. package/src/api/generated/ext_knowbase/_utils/hooks/ext_knowbase__knowbase.ts +2 -1
  15. package/src/api/generated/ext_knowbase/_utils/schemas/ArchiveSearchResult.schema.ts +3 -3
  16. package/src/api/generated/ext_knowbase/_utils/schemas/CfgKnowbaseSystemArchivesCreateRequest.schema.ts +20 -0
  17. package/src/api/generated/ext_knowbase/_utils/schemas/DocumentArchive.schema.ts +1 -1
  18. package/src/api/generated/ext_knowbase/_utils/schemas/DocumentArchiveDetail.schema.ts +1 -1
  19. package/src/api/generated/ext_knowbase/_utils/schemas/index.ts +1 -0
  20. package/src/api/generated/ext_knowbase/api-instance.ts +61 -13
  21. package/src/api/generated/ext_knowbase/client.ts +23 -2
  22. package/src/api/generated/ext_knowbase/ext_knowbase__knowbase/client.ts +9 -2
  23. package/src/api/generated/ext_knowbase/ext_knowbase__knowbase/models.ts +13 -0
  24. package/src/api/generated/ext_knowbase/http.ts +8 -2
  25. package/src/api/generated/ext_knowbase/index.ts +3 -1
  26. package/src/api/index.ts +6 -1
  27. package/src/components/Chat/ChatWidget.tsx +2 -1
  28. package/src/contexts/knowbase/DocumentsContext.tsx +4 -2
  29. package/src/contexts/knowbase/types.ts +1 -0
package/dist/hooks.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { createConsola, consola } from 'consola';
2
2
  import pRetry, { AbortError } from 'p-retry';
3
3
  import { z } from 'zod';
4
- import { createExtensionAPI } from '@djangocfg/ext-base/api';
4
+ import { initializeExtensionAPI, createExtensionAPI } from '@djangocfg/ext-base/api';
5
5
  import useSWR, { useSWRConfig } from 'swr';
6
6
  import { createExtensionConfig } from '@djangocfg/ext-base';
7
7
  import '@djangocfg/ext-base/hooks';
@@ -10,7 +10,8 @@ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
10
10
  import { Bot, ExternalLink, User, Loader2, Send, MessageSquare, Clock, Archive, Trash2, List, Plus, X, Minimize2, Maximize2 } from 'lucide-react';
11
11
  import { usePathname } from 'next/navigation';
12
12
  import { createPortal } from 'react-dom';
13
- import { ScrollArea, Avatar, Card, CardContent, Badge, AvatarImage, AvatarFallback, Textarea, Button, Sheet, SheetContent, SheetHeader, SheetTitle, SheetDescription, useIsMobile, useLocalStorage, CardHeader } from '@djangocfg/ui-nextjs';
13
+ import { ScrollArea, Avatar, Card, CardContent, Badge, AvatarImage, AvatarFallback, Textarea, Button, Sheet, SheetContent, SheetHeader, SheetTitle, SheetDescription, CardHeader } from '@djangocfg/ui-nextjs';
14
+ import { useIsMobile, useLocalStorage } from '@djangocfg/ui-core/hooks';
14
15
  import moment from 'moment';
15
16
  import { useAuth } from '@djangocfg/api/auth';
16
17
  import useSWRInfinite from 'swr/infinite';
@@ -319,7 +320,14 @@ var ExtKnowbaseKnowbase = class {
319
320
  * Upload archive file and process it synchronously
320
321
  */
321
322
  async systemArchivesCreate(data) {
322
- const response = await this.client.request("POST", "/cfg/knowbase/system/archives/", { formData: data });
323
+ const formData = new FormData();
324
+ formData.append("file", data.file);
325
+ if (data.title !== void 0) formData.append("title", String(data.title));
326
+ if (data.description !== void 0) formData.append("description", String(data.description));
327
+ if (data.category_ids !== void 0) formData.append("category_ids", String(data.category_ids));
328
+ if (data.is_public !== void 0) formData.append("is_public", String(data.is_public));
329
+ if (data.process_immediately !== void 0) formData.append("process_immediately", String(data.process_immediately));
330
+ const response = await this.client.request("POST", "/cfg/knowbase/system/archives/", { formData });
323
331
  return response;
324
332
  }
325
333
  /**
@@ -586,7 +594,7 @@ var models_exports = {};
586
594
  // src/api/generated/ext_knowbase/http.ts
587
595
  var FetchAdapter = class {
588
596
  async request(request) {
589
- const { method, url, headers, body, params, formData } = request;
597
+ const { method, url, headers, body, params, formData, binaryBody } = request;
590
598
  let finalUrl = url;
591
599
  if (params) {
592
600
  const searchParams = new URLSearchParams();
@@ -604,6 +612,9 @@ var FetchAdapter = class {
604
612
  let requestBody;
605
613
  if (formData) {
606
614
  requestBody = formData;
615
+ } else if (binaryBody) {
616
+ finalHeaders["Content-Type"] = "application/octet-stream";
617
+ requestBody = binaryBody;
607
618
  } else if (body) {
608
619
  finalHeaders["Content-Type"] = "application/json";
609
620
  requestBody = JSON.stringify(body);
@@ -928,11 +939,13 @@ var APIClient = class {
928
939
  httpClient;
929
940
  logger = null;
930
941
  retryConfig = null;
942
+ tokenGetter = null;
931
943
  // Sub-clients
932
944
  ext_knowbase_knowbase;
933
945
  constructor(baseUrl, options) {
934
946
  this.baseUrl = baseUrl.replace(/\/$/, "");
935
947
  this.httpClient = options?.httpClient || new FetchAdapter();
948
+ this.tokenGetter = options?.tokenGetter || null;
936
949
  if (options?.loggerConfig !== void 0) {
937
950
  this.logger = new APILogger(options.loggerConfig);
938
951
  }
@@ -955,6 +968,19 @@ var APIClient = class {
955
968
  }
956
969
  return null;
957
970
  }
971
+ /**
972
+ * Get the base URL for building streaming/download URLs.
973
+ */
974
+ getBaseUrl() {
975
+ return this.baseUrl;
976
+ }
977
+ /**
978
+ * Get JWT token for URL authentication (used in streaming endpoints).
979
+ * Returns null if no token getter is configured or no token is available.
980
+ */
981
+ getToken() {
982
+ return this.tokenGetter ? this.tokenGetter() : null;
983
+ }
958
984
  /**
959
985
  * Make HTTP request with Django CSRF and session handling.
960
986
  * Automatically retries on network errors and 5xx server errors.
@@ -985,7 +1011,7 @@ var APIClient = class {
985
1011
  const headers = {
986
1012
  ...options?.headers || {}
987
1013
  };
988
- if (!options?.formData && !headers["Content-Type"]) {
1014
+ if (!options?.formData && !options?.binaryBody && !headers["Content-Type"]) {
989
1015
  headers["Content-Type"] = "application/json";
990
1016
  }
991
1017
  if (this.logger) {
@@ -1004,7 +1030,8 @@ var APIClient = class {
1004
1030
  headers,
1005
1031
  params: options?.params,
1006
1032
  body: options?.body,
1007
- formData: options?.formData
1033
+ formData: options?.formData,
1034
+ binaryBody: options?.binaryBody
1008
1035
  });
1009
1036
  const duration = Date.now() - startTime;
1010
1037
  if (response.status >= 400) {
@@ -1388,6 +1415,7 @@ __export(schemas_exports, {
1388
1415
  ArchiveSearchRequestRequestSchema: () => ArchiveSearchRequestRequestSchema,
1389
1416
  ArchiveSearchResultSchema: () => ArchiveSearchResultSchema,
1390
1417
  ArchiveStatisticsSchema: () => ArchiveStatisticsSchema,
1418
+ CfgKnowbaseSystemArchivesCreateRequestSchema: () => CfgKnowbaseSystemArchivesCreateRequestSchema,
1391
1419
  ChatHistorySchema: () => ChatHistorySchema,
1392
1420
  ChatMessageSchema: () => ChatMessageSchema,
1393
1421
  ChatQueryRequestSchema: () => ChatQueryRequestSchema,
@@ -1523,9 +1551,9 @@ var ArchiveSearchRequestRequestSchema = z.object({
1523
1551
  var ArchiveSearchResultSchema = z.object({
1524
1552
  chunk: ArchiveItemChunkSchema,
1525
1553
  similarity_score: z.number(),
1526
- context_summary: z.record(z.string(), z.record(z.string(), z.any())),
1527
- archive_info: z.record(z.string(), z.record(z.string(), z.any())),
1528
- item_info: z.record(z.string(), z.record(z.string(), z.any()))
1554
+ context_summary: z.record(z.string(), z.any()),
1555
+ archive_info: z.record(z.string(), z.any()),
1556
+ item_info: z.record(z.string(), z.any())
1529
1557
  });
1530
1558
  var ArchiveStatisticsSchema = z.object({
1531
1559
  total_archives: z.int(),
@@ -1539,6 +1567,14 @@ var ArchiveStatisticsSchema = z.object({
1539
1567
  avg_items_per_archive: z.number(),
1540
1568
  avg_chunks_per_archive: z.number()
1541
1569
  });
1570
+ var CfgKnowbaseSystemArchivesCreateRequestSchema = z.object({
1571
+ file: z.union([z.instanceof(File), z.instanceof(Blob)]).optional(),
1572
+ title: z.string().optional(),
1573
+ description: z.string().optional(),
1574
+ category_ids: z.array(z.string()).optional(),
1575
+ is_public: z.boolean().optional(),
1576
+ process_immediately: z.boolean().optional()
1577
+ });
1542
1578
  var ChatMessageSchema = z.object({
1543
1579
  id: z.string().regex(/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i),
1544
1580
  role: z.nativeEnum(ChatMessageRole),
@@ -1657,7 +1693,7 @@ var DocumentArchiveSchema = z.object({
1657
1693
  description: z.string().optional(),
1658
1694
  categories: z.array(DocumentCategorySchema),
1659
1695
  is_public: z.boolean().optional(),
1660
- archive_file: z.url(),
1696
+ archive_file: z.union([z.url(), z.literal("")]),
1661
1697
  original_filename: z.string(),
1662
1698
  file_size: z.int(),
1663
1699
  archive_type: z.nativeEnum(DocumentArchiveArchiveType),
@@ -1683,7 +1719,7 @@ var DocumentArchiveDetailSchema = z.object({
1683
1719
  description: z.string().optional(),
1684
1720
  categories: z.array(DocumentCategorySchema),
1685
1721
  is_public: z.boolean().optional(),
1686
- archive_file: z.url(),
1722
+ archive_file: z.union([z.url(), z.literal("")]),
1687
1723
  original_filename: z.string(),
1688
1724
  file_size: z.int(),
1689
1725
  archive_type: z.nativeEnum(DocumentArchiveDetailArchiveType),
@@ -2053,15 +2089,28 @@ __export(fetchers_exports, {
2053
2089
 
2054
2090
  // src/api/generated/ext_knowbase/api-instance.ts
2055
2091
  var globalAPI = null;
2092
+ var autoConfigAttempted = false;
2093
+ function tryAutoConfigureFromEnv() {
2094
+ if (autoConfigAttempted) return;
2095
+ autoConfigAttempted = true;
2096
+ if (globalAPI) return;
2097
+ if (typeof process === "undefined" || !process.env) return;
2098
+ const baseUrl = process.env.NEXT_PUBLIC_API_URL || process.env.VITE_API_URL || process.env.REACT_APP_API_URL || process.env.API_URL;
2099
+ if (baseUrl) {
2100
+ globalAPI = new API(baseUrl);
2101
+ }
2102
+ }
2056
2103
  function getAPIInstance() {
2104
+ tryAutoConfigureFromEnv();
2057
2105
  if (!globalAPI) {
2058
2106
  throw new Error(
2059
- 'API not configured. Call configureAPI() with your base URL before using fetchers or hooks.\n\nExample:\n import { configureAPI } from "./api-instance"\n configureAPI({ baseUrl: "https://api.example.com" })'
2107
+ 'API not configured. Call configureAPI() with your base URL before using fetchers or hooks.\n\nExample:\n import { configureAPI } from "./api-instance"\n configureAPI({ baseUrl: "https://api.example.com" })\n\nOr set environment variable: NEXT_PUBLIC_API_URL, VITE_API_URL, or REACT_APP_API_URL'
2060
2108
  );
2061
2109
  }
2062
2110
  return globalAPI;
2063
2111
  }
2064
2112
  function isAPIConfigured() {
2113
+ tryAutoConfigureFromEnv();
2065
2114
  return globalAPI !== null;
2066
2115
  }
2067
2116
  function configureAPI(config) {
@@ -4212,7 +4261,8 @@ var API = class {
4212
4261
  this._loadTokensFromStorage();
4213
4262
  this._client = new APIClient(this.baseUrl, {
4214
4263
  retryConfig: this.options?.retryConfig,
4215
- loggerConfig: this.options?.loggerConfig
4264
+ loggerConfig: this.options?.loggerConfig,
4265
+ tokenGetter: () => this.getToken()
4216
4266
  });
4217
4267
  this._injectAuthHeader();
4218
4268
  this.ext_knowbase_knowbase = this._client.ext_knowbase_knowbase;
@@ -4224,7 +4274,8 @@ var API = class {
4224
4274
  _reinitClients() {
4225
4275
  this._client = new APIClient(this.baseUrl, {
4226
4276
  retryConfig: this.options?.retryConfig,
4227
- loggerConfig: this.options?.loggerConfig
4277
+ loggerConfig: this.options?.loggerConfig,
4278
+ tokenGetter: () => this.getToken()
4228
4279
  });
4229
4280
  this._injectAuthHeader();
4230
4281
  this.ext_knowbase_knowbase = this._client.ext_knowbase_knowbase;
@@ -4731,12 +4782,13 @@ function useKnowbaseSystemItemsContentRetrieve(id, client) {
4731
4782
  }
4732
4783
 
4733
4784
  // src/api/index.ts
4785
+ initializeExtensionAPI(configureAPI);
4734
4786
  var apiKnowbase = createExtensionAPI(API);
4735
4787
 
4736
4788
  // package.json
4737
4789
  var package_default = {
4738
4790
  name: "@djangocfg/ext-knowbase",
4739
- version: "1.0.8",
4791
+ version: "1.0.10",
4740
4792
  description: "Knowledge base and chat extension for DjangoCFG",
4741
4793
  keywords: [
4742
4794
  "django",
@@ -4797,6 +4849,7 @@ var package_default = {
4797
4849
  peerDependencies: {
4798
4850
  "@djangocfg/api": "workspace:*",
4799
4851
  "@djangocfg/ext-base": "workspace:*",
4852
+ "@djangocfg/ui-core": "workspace:*",
4800
4853
  "@djangocfg/ui-nextjs": "workspace:*",
4801
4854
  consola: "^3.4.2",
4802
4855
  "lucide-react": "^0.545.0",
@@ -4812,6 +4865,7 @@ var package_default = {
4812
4865
  devDependencies: {
4813
4866
  "@djangocfg/api": "workspace:*",
4814
4867
  "@djangocfg/ext-base": "workspace:*",
4868
+ "@djangocfg/ui-core": "workspace:*",
4815
4869
  "@djangocfg/typescript-config": "workspace:*",
4816
4870
  "@types/node": "^24.7.2",
4817
4871
  "@types/react": "^19.0.0",
@@ -5913,4 +5967,4 @@ var KnowledgeChat = (props) => {
5913
5967
  };
5914
5968
  var Chat_default = KnowledgeChat;
5915
5969
 
5916
- export { API, APIClient, APIError, APILogger, ArchiveItemChunkDetailSchema, ArchiveItemChunkRequestSchema, ArchiveItemChunkSchema, ArchiveItemDetailSchema, ArchiveItemRequestSchema, ArchiveItemSchema, ArchiveProcessingResultSchema, ArchiveSearchRequestRequestSchema, ArchiveSearchResultSchema, ArchiveStatisticsSchema, Chat_default as Chat, ChatHistorySchema, ChatMessageSchema, ChatQueryRequestSchema, ChatResponseRequestSchema, ChatResponseSchema, ChatSessionCreateRequestSchema, ChatSessionRequestSchema, ChatSessionSchema, ChatSourceRequestSchema, ChatSourceSchema, ChatUIProvider, ChatWidget, ChunkRevectorizationRequestRequestSchema, CookieStorageAdapter, DEFAULT_RETRY_CONFIG, DocumentArchiveDetailSchema, DocumentArchiveListSchema, DocumentArchiveRequestSchema, DocumentArchiveSchema, DocumentCategoryRequestSchema, DocumentCategorySchema, DocumentCreateRequestSchema, DocumentProcessingStatusSchema, DocumentRequestSchema, DocumentSchema, DocumentStatsSchema, enums_exports as Enums, models_exports as ExtKnowbaseKnowbaseTypes, FetchAdapter, fetchers_exports as Fetchers, KnowbaseChatProvider, KnowbaseDocumentsProvider, KnowbaseSessionsProvider, KnowledgeChat, LocalStorageAdapter, MemoryStorageAdapter, MessageInput, MessageList, NetworkError, PaginatedArchiveItemChunkListSchema, PaginatedArchiveItemListSchema, PaginatedArchiveSearchResultListSchema, PaginatedChatResponseListSchema, PaginatedChatSessionListSchema, PaginatedDocumentArchiveListListSchema, PaginatedDocumentListSchema, PaginatedPublicCategoryListSchema, PaginatedPublicDocumentListListSchema, PatchedArchiveItemChunkRequestSchema, PatchedArchiveItemRequestSchema, PatchedChatResponseRequestSchema, PatchedChatSessionRequestSchema, PatchedDocumentArchiveRequestSchema, PatchedDocumentRequestSchema, PublicCategorySchema, PublicDocumentListSchema, PublicDocumentSchema, REFRESH_TOKEN_KEY, schemas_exports as Schemas, SessionList, TOKEN_KEY, VectorizationResultSchema, VectorizationStatisticsSchema, apiKnowbase, clearAPITokens, configureAPI, createKnowbaseAdminChatCreate, createKnowbaseAdminChatQueryCreate, createKnowbaseAdminDocumentsCreate, createKnowbaseAdminDocumentsReprocessCreate, createKnowbaseAdminSessionsActivateCreate, createKnowbaseAdminSessionsArchiveCreate, createKnowbaseAdminSessionsCreate, createKnowbaseSystemArchivesCreate, createKnowbaseSystemArchivesRevectorizeCreate, createKnowbaseSystemArchivesSearchCreate, createKnowbaseSystemChunksCreate, createKnowbaseSystemChunksVectorizeCreate, createKnowbaseSystemItemsCreate, deleteKnowbaseAdminChatDestroy, deleteKnowbaseAdminDocumentsDestroy, deleteKnowbaseAdminSessionsDestroy, deleteKnowbaseSystemArchivesDestroy, deleteKnowbaseSystemChunksDestroy, deleteKnowbaseSystemItemsDestroy, dispatchValidationError, extensionConfig, formatZodError, getAPIInstance, getKnowbaseAdminChatHistoryRetrieve, getKnowbaseAdminChatList, getKnowbaseAdminChatRetrieve, getKnowbaseAdminDocumentsList, getKnowbaseAdminDocumentsRetrieve, getKnowbaseAdminDocumentsStatsRetrieve, getKnowbaseAdminDocumentsStatusRetrieve, getKnowbaseAdminSessionsList, getKnowbaseAdminSessionsRetrieve, getKnowbaseCategoriesList, getKnowbaseCategoriesRetrieve, getKnowbaseDocumentsList, getKnowbaseDocumentsRetrieve, getKnowbaseSystemArchivesFileTreeRetrieve, getKnowbaseSystemArchivesItemsList, getKnowbaseSystemArchivesList, getKnowbaseSystemArchivesRetrieve, getKnowbaseSystemArchivesStatisticsRetrieve, getKnowbaseSystemArchivesVectorizationStatsRetrieve, getKnowbaseSystemChunksContextRetrieve, getKnowbaseSystemChunksList, getKnowbaseSystemChunksRetrieve, getKnowbaseSystemItemsChunksList, getKnowbaseSystemItemsContentRetrieve, getKnowbaseSystemItemsList, getKnowbaseSystemItemsRetrieve, isAPIConfigured, onValidationError, partialUpdateKnowbaseAdminChatPartialUpdate, partialUpdateKnowbaseAdminDocumentsPartialUpdate, partialUpdateKnowbaseAdminSessionsPartialUpdate, partialUpdateKnowbaseSystemArchivesPartialUpdate, partialUpdateKnowbaseSystemChunksPartialUpdate, partialUpdateKnowbaseSystemItemsPartialUpdate, reconfigureAPI, resetAPI, shouldRetry, updateKnowbaseAdminChatUpdate, updateKnowbaseAdminDocumentsUpdate, updateKnowbaseAdminSessionsUpdate, updateKnowbaseSystemArchivesUpdate, updateKnowbaseSystemChunksUpdate, updateKnowbaseSystemItemsUpdate, useChatUI, useCreateKnowbaseAdminChatCreate, useCreateKnowbaseAdminChatQueryCreate, useCreateKnowbaseAdminDocumentsCreate, useCreateKnowbaseAdminDocumentsReprocessCreate, useCreateKnowbaseAdminSessionsActivateCreate, useCreateKnowbaseAdminSessionsArchiveCreate, useCreateKnowbaseAdminSessionsCreate, useCreateKnowbaseSystemArchivesCreate, useCreateKnowbaseSystemArchivesRevectorizeCreate, useCreateKnowbaseSystemArchivesSearchCreate, useCreateKnowbaseSystemChunksCreate, useCreateKnowbaseSystemChunksVectorizeCreate, useCreateKnowbaseSystemItemsCreate, useDeleteKnowbaseAdminChatDestroy, useDeleteKnowbaseAdminDocumentsDestroy, useDeleteKnowbaseAdminSessionsDestroy, useDeleteKnowbaseSystemArchivesDestroy, useDeleteKnowbaseSystemChunksDestroy, useDeleteKnowbaseSystemItemsDestroy, useKnowbaseAdminChatHistoryRetrieve, useKnowbaseAdminChatList, useKnowbaseAdminChatRetrieve, useKnowbaseAdminDocumentsList, useKnowbaseAdminDocumentsRetrieve, useKnowbaseAdminDocumentsStatsRetrieve, useKnowbaseAdminDocumentsStatusRetrieve, useKnowbaseAdminSessionsList, useKnowbaseAdminSessionsRetrieve, useKnowbaseCategoriesList, useKnowbaseCategoriesRetrieve, useKnowbaseChatContext, useKnowbaseDocumentsContext, useKnowbaseDocumentsList, useKnowbaseDocumentsRetrieve, useKnowbaseSessionsContext, useKnowbaseSystemArchivesFileTreeRetrieve, useKnowbaseSystemArchivesItemsList, useKnowbaseSystemArchivesList, useKnowbaseSystemArchivesRetrieve, useKnowbaseSystemArchivesStatisticsRetrieve, useKnowbaseSystemArchivesVectorizationStatsRetrieve, useKnowbaseSystemChunksContextRetrieve, useKnowbaseSystemChunksList, useKnowbaseSystemChunksRetrieve, useKnowbaseSystemItemsChunksList, useKnowbaseSystemItemsContentRetrieve, useKnowbaseSystemItemsList, useKnowbaseSystemItemsRetrieve, usePartialUpdateKnowbaseAdminChatPartialUpdate, usePartialUpdateKnowbaseAdminDocumentsPartialUpdate, usePartialUpdateKnowbaseAdminSessionsPartialUpdate, usePartialUpdateKnowbaseSystemArchivesPartialUpdate, usePartialUpdateKnowbaseSystemChunksPartialUpdate, usePartialUpdateKnowbaseSystemItemsPartialUpdate, useUpdateKnowbaseAdminChatUpdate, useUpdateKnowbaseAdminDocumentsUpdate, useUpdateKnowbaseAdminSessionsUpdate, useUpdateKnowbaseSystemArchivesUpdate, useUpdateKnowbaseSystemChunksUpdate, useUpdateKnowbaseSystemItemsUpdate, withRetry };
5970
+ export { API, APIClient, APIError, APILogger, ArchiveItemChunkDetailSchema, ArchiveItemChunkRequestSchema, ArchiveItemChunkSchema, ArchiveItemDetailSchema, ArchiveItemRequestSchema, ArchiveItemSchema, ArchiveProcessingResultSchema, ArchiveSearchRequestRequestSchema, ArchiveSearchResultSchema, ArchiveStatisticsSchema, CfgKnowbaseSystemArchivesCreateRequestSchema, Chat_default as Chat, ChatHistorySchema, ChatMessageSchema, ChatQueryRequestSchema, ChatResponseRequestSchema, ChatResponseSchema, ChatSessionCreateRequestSchema, ChatSessionRequestSchema, ChatSessionSchema, ChatSourceRequestSchema, ChatSourceSchema, ChatUIProvider, ChatWidget, ChunkRevectorizationRequestRequestSchema, CookieStorageAdapter, DEFAULT_RETRY_CONFIG, DocumentArchiveDetailSchema, DocumentArchiveListSchema, DocumentArchiveRequestSchema, DocumentArchiveSchema, DocumentCategoryRequestSchema, DocumentCategorySchema, DocumentCreateRequestSchema, DocumentProcessingStatusSchema, DocumentRequestSchema, DocumentSchema, DocumentStatsSchema, enums_exports as Enums, models_exports as ExtKnowbaseKnowbaseTypes, FetchAdapter, fetchers_exports as Fetchers, KnowbaseChatProvider, KnowbaseDocumentsProvider, KnowbaseSessionsProvider, KnowledgeChat, LocalStorageAdapter, MemoryStorageAdapter, MessageInput, MessageList, NetworkError, PaginatedArchiveItemChunkListSchema, PaginatedArchiveItemListSchema, PaginatedArchiveSearchResultListSchema, PaginatedChatResponseListSchema, PaginatedChatSessionListSchema, PaginatedDocumentArchiveListListSchema, PaginatedDocumentListSchema, PaginatedPublicCategoryListSchema, PaginatedPublicDocumentListListSchema, PatchedArchiveItemChunkRequestSchema, PatchedArchiveItemRequestSchema, PatchedChatResponseRequestSchema, PatchedChatSessionRequestSchema, PatchedDocumentArchiveRequestSchema, PatchedDocumentRequestSchema, PublicCategorySchema, PublicDocumentListSchema, PublicDocumentSchema, REFRESH_TOKEN_KEY, schemas_exports as Schemas, SessionList, TOKEN_KEY, VectorizationResultSchema, VectorizationStatisticsSchema, apiKnowbase, clearAPITokens, configureAPI, createKnowbaseAdminChatCreate, createKnowbaseAdminChatQueryCreate, createKnowbaseAdminDocumentsCreate, createKnowbaseAdminDocumentsReprocessCreate, createKnowbaseAdminSessionsActivateCreate, createKnowbaseAdminSessionsArchiveCreate, createKnowbaseAdminSessionsCreate, createKnowbaseSystemArchivesCreate, createKnowbaseSystemArchivesRevectorizeCreate, createKnowbaseSystemArchivesSearchCreate, createKnowbaseSystemChunksCreate, createKnowbaseSystemChunksVectorizeCreate, createKnowbaseSystemItemsCreate, deleteKnowbaseAdminChatDestroy, deleteKnowbaseAdminDocumentsDestroy, deleteKnowbaseAdminSessionsDestroy, deleteKnowbaseSystemArchivesDestroy, deleteKnowbaseSystemChunksDestroy, deleteKnowbaseSystemItemsDestroy, dispatchValidationError, extensionConfig, formatZodError, getAPIInstance, getKnowbaseAdminChatHistoryRetrieve, getKnowbaseAdminChatList, getKnowbaseAdminChatRetrieve, getKnowbaseAdminDocumentsList, getKnowbaseAdminDocumentsRetrieve, getKnowbaseAdminDocumentsStatsRetrieve, getKnowbaseAdminDocumentsStatusRetrieve, getKnowbaseAdminSessionsList, getKnowbaseAdminSessionsRetrieve, getKnowbaseCategoriesList, getKnowbaseCategoriesRetrieve, getKnowbaseDocumentsList, getKnowbaseDocumentsRetrieve, getKnowbaseSystemArchivesFileTreeRetrieve, getKnowbaseSystemArchivesItemsList, getKnowbaseSystemArchivesList, getKnowbaseSystemArchivesRetrieve, getKnowbaseSystemArchivesStatisticsRetrieve, getKnowbaseSystemArchivesVectorizationStatsRetrieve, getKnowbaseSystemChunksContextRetrieve, getKnowbaseSystemChunksList, getKnowbaseSystemChunksRetrieve, getKnowbaseSystemItemsChunksList, getKnowbaseSystemItemsContentRetrieve, getKnowbaseSystemItemsList, getKnowbaseSystemItemsRetrieve, isAPIConfigured, onValidationError, partialUpdateKnowbaseAdminChatPartialUpdate, partialUpdateKnowbaseAdminDocumentsPartialUpdate, partialUpdateKnowbaseAdminSessionsPartialUpdate, partialUpdateKnowbaseSystemArchivesPartialUpdate, partialUpdateKnowbaseSystemChunksPartialUpdate, partialUpdateKnowbaseSystemItemsPartialUpdate, reconfigureAPI, resetAPI, shouldRetry, updateKnowbaseAdminChatUpdate, updateKnowbaseAdminDocumentsUpdate, updateKnowbaseAdminSessionsUpdate, updateKnowbaseSystemArchivesUpdate, updateKnowbaseSystemChunksUpdate, updateKnowbaseSystemItemsUpdate, useChatUI, useCreateKnowbaseAdminChatCreate, useCreateKnowbaseAdminChatQueryCreate, useCreateKnowbaseAdminDocumentsCreate, useCreateKnowbaseAdminDocumentsReprocessCreate, useCreateKnowbaseAdminSessionsActivateCreate, useCreateKnowbaseAdminSessionsArchiveCreate, useCreateKnowbaseAdminSessionsCreate, useCreateKnowbaseSystemArchivesCreate, useCreateKnowbaseSystemArchivesRevectorizeCreate, useCreateKnowbaseSystemArchivesSearchCreate, useCreateKnowbaseSystemChunksCreate, useCreateKnowbaseSystemChunksVectorizeCreate, useCreateKnowbaseSystemItemsCreate, useDeleteKnowbaseAdminChatDestroy, useDeleteKnowbaseAdminDocumentsDestroy, useDeleteKnowbaseAdminSessionsDestroy, useDeleteKnowbaseSystemArchivesDestroy, useDeleteKnowbaseSystemChunksDestroy, useDeleteKnowbaseSystemItemsDestroy, useKnowbaseAdminChatHistoryRetrieve, useKnowbaseAdminChatList, useKnowbaseAdminChatRetrieve, useKnowbaseAdminDocumentsList, useKnowbaseAdminDocumentsRetrieve, useKnowbaseAdminDocumentsStatsRetrieve, useKnowbaseAdminDocumentsStatusRetrieve, useKnowbaseAdminSessionsList, useKnowbaseAdminSessionsRetrieve, useKnowbaseCategoriesList, useKnowbaseCategoriesRetrieve, useKnowbaseChatContext, useKnowbaseDocumentsContext, useKnowbaseDocumentsList, useKnowbaseDocumentsRetrieve, useKnowbaseSessionsContext, useKnowbaseSystemArchivesFileTreeRetrieve, useKnowbaseSystemArchivesItemsList, useKnowbaseSystemArchivesList, useKnowbaseSystemArchivesRetrieve, useKnowbaseSystemArchivesStatisticsRetrieve, useKnowbaseSystemArchivesVectorizationStatsRetrieve, useKnowbaseSystemChunksContextRetrieve, useKnowbaseSystemChunksList, useKnowbaseSystemChunksRetrieve, useKnowbaseSystemItemsChunksList, useKnowbaseSystemItemsContentRetrieve, useKnowbaseSystemItemsList, useKnowbaseSystemItemsRetrieve, usePartialUpdateKnowbaseAdminChatPartialUpdate, usePartialUpdateKnowbaseAdminDocumentsPartialUpdate, usePartialUpdateKnowbaseAdminSessionsPartialUpdate, usePartialUpdateKnowbaseSystemArchivesPartialUpdate, usePartialUpdateKnowbaseSystemChunksPartialUpdate, usePartialUpdateKnowbaseSystemItemsPartialUpdate, useUpdateKnowbaseAdminChatUpdate, useUpdateKnowbaseAdminDocumentsUpdate, useUpdateKnowbaseAdminSessionsUpdate, useUpdateKnowbaseSystemArchivesUpdate, useUpdateKnowbaseSystemChunksUpdate, useUpdateKnowbaseSystemItemsUpdate, withRetry };
package/dist/index.cjs CHANGED
@@ -315,7 +315,14 @@ var ExtKnowbaseKnowbase = class {
315
315
  * Upload archive file and process it synchronously
316
316
  */
317
317
  async systemArchivesCreate(data) {
318
- const response = await this.client.request("POST", "/cfg/knowbase/system/archives/", { formData: data });
318
+ const formData = new FormData();
319
+ formData.append("file", data.file);
320
+ if (data.title !== void 0) formData.append("title", String(data.title));
321
+ if (data.description !== void 0) formData.append("description", String(data.description));
322
+ if (data.category_ids !== void 0) formData.append("category_ids", String(data.category_ids));
323
+ if (data.is_public !== void 0) formData.append("is_public", String(data.is_public));
324
+ if (data.process_immediately !== void 0) formData.append("process_immediately", String(data.process_immediately));
325
+ const response = await this.client.request("POST", "/cfg/knowbase/system/archives/", { formData });
319
326
  return response;
320
327
  }
321
328
  /**
@@ -582,7 +589,7 @@ var models_exports = {};
582
589
  // src/api/generated/ext_knowbase/http.ts
583
590
  var FetchAdapter = class {
584
591
  async request(request) {
585
- const { method, url, headers, body, params, formData } = request;
592
+ const { method, url, headers, body, params, formData, binaryBody } = request;
586
593
  let finalUrl = url;
587
594
  if (params) {
588
595
  const searchParams = new URLSearchParams();
@@ -600,6 +607,9 @@ var FetchAdapter = class {
600
607
  let requestBody;
601
608
  if (formData) {
602
609
  requestBody = formData;
610
+ } else if (binaryBody) {
611
+ finalHeaders["Content-Type"] = "application/octet-stream";
612
+ requestBody = binaryBody;
603
613
  } else if (body) {
604
614
  finalHeaders["Content-Type"] = "application/json";
605
615
  requestBody = JSON.stringify(body);
@@ -924,11 +934,13 @@ var APIClient = class {
924
934
  httpClient;
925
935
  logger = null;
926
936
  retryConfig = null;
937
+ tokenGetter = null;
927
938
  // Sub-clients
928
939
  ext_knowbase_knowbase;
929
940
  constructor(baseUrl, options) {
930
941
  this.baseUrl = baseUrl.replace(/\/$/, "");
931
942
  this.httpClient = options?.httpClient || new FetchAdapter();
943
+ this.tokenGetter = options?.tokenGetter || null;
932
944
  if (options?.loggerConfig !== void 0) {
933
945
  this.logger = new APILogger(options.loggerConfig);
934
946
  }
@@ -951,6 +963,19 @@ var APIClient = class {
951
963
  }
952
964
  return null;
953
965
  }
966
+ /**
967
+ * Get the base URL for building streaming/download URLs.
968
+ */
969
+ getBaseUrl() {
970
+ return this.baseUrl;
971
+ }
972
+ /**
973
+ * Get JWT token for URL authentication (used in streaming endpoints).
974
+ * Returns null if no token getter is configured or no token is available.
975
+ */
976
+ getToken() {
977
+ return this.tokenGetter ? this.tokenGetter() : null;
978
+ }
954
979
  /**
955
980
  * Make HTTP request with Django CSRF and session handling.
956
981
  * Automatically retries on network errors and 5xx server errors.
@@ -981,7 +1006,7 @@ var APIClient = class {
981
1006
  const headers = {
982
1007
  ...options?.headers || {}
983
1008
  };
984
- if (!options?.formData && !headers["Content-Type"]) {
1009
+ if (!options?.formData && !options?.binaryBody && !headers["Content-Type"]) {
985
1010
  headers["Content-Type"] = "application/json";
986
1011
  }
987
1012
  if (this.logger) {
@@ -1000,7 +1025,8 @@ var APIClient = class {
1000
1025
  headers,
1001
1026
  params: options?.params,
1002
1027
  body: options?.body,
1003
- formData: options?.formData
1028
+ formData: options?.formData,
1029
+ binaryBody: options?.binaryBody
1004
1030
  });
1005
1031
  const duration = Date.now() - startTime;
1006
1032
  if (response.status >= 400) {
@@ -1384,6 +1410,7 @@ __export(schemas_exports, {
1384
1410
  ArchiveSearchRequestRequestSchema: () => ArchiveSearchRequestRequestSchema,
1385
1411
  ArchiveSearchResultSchema: () => ArchiveSearchResultSchema,
1386
1412
  ArchiveStatisticsSchema: () => ArchiveStatisticsSchema,
1413
+ CfgKnowbaseSystemArchivesCreateRequestSchema: () => CfgKnowbaseSystemArchivesCreateRequestSchema,
1387
1414
  ChatHistorySchema: () => ChatHistorySchema,
1388
1415
  ChatMessageSchema: () => ChatMessageSchema,
1389
1416
  ChatQueryRequestSchema: () => ChatQueryRequestSchema,
@@ -1519,9 +1546,9 @@ var ArchiveSearchRequestRequestSchema = zod.z.object({
1519
1546
  var ArchiveSearchResultSchema = zod.z.object({
1520
1547
  chunk: ArchiveItemChunkSchema,
1521
1548
  similarity_score: zod.z.number(),
1522
- context_summary: zod.z.record(zod.z.string(), zod.z.record(zod.z.string(), zod.z.any())),
1523
- archive_info: zod.z.record(zod.z.string(), zod.z.record(zod.z.string(), zod.z.any())),
1524
- item_info: zod.z.record(zod.z.string(), zod.z.record(zod.z.string(), zod.z.any()))
1549
+ context_summary: zod.z.record(zod.z.string(), zod.z.any()),
1550
+ archive_info: zod.z.record(zod.z.string(), zod.z.any()),
1551
+ item_info: zod.z.record(zod.z.string(), zod.z.any())
1525
1552
  });
1526
1553
  var ArchiveStatisticsSchema = zod.z.object({
1527
1554
  total_archives: zod.z.int(),
@@ -1535,6 +1562,14 @@ var ArchiveStatisticsSchema = zod.z.object({
1535
1562
  avg_items_per_archive: zod.z.number(),
1536
1563
  avg_chunks_per_archive: zod.z.number()
1537
1564
  });
1565
+ var CfgKnowbaseSystemArchivesCreateRequestSchema = zod.z.object({
1566
+ file: zod.z.union([zod.z.instanceof(File), zod.z.instanceof(Blob)]).optional(),
1567
+ title: zod.z.string().optional(),
1568
+ description: zod.z.string().optional(),
1569
+ category_ids: zod.z.array(zod.z.string()).optional(),
1570
+ is_public: zod.z.boolean().optional(),
1571
+ process_immediately: zod.z.boolean().optional()
1572
+ });
1538
1573
  var ChatMessageSchema = zod.z.object({
1539
1574
  id: zod.z.string().regex(/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i),
1540
1575
  role: zod.z.nativeEnum(ChatMessageRole),
@@ -1653,7 +1688,7 @@ var DocumentArchiveSchema = zod.z.object({
1653
1688
  description: zod.z.string().optional(),
1654
1689
  categories: zod.z.array(DocumentCategorySchema),
1655
1690
  is_public: zod.z.boolean().optional(),
1656
- archive_file: zod.z.url(),
1691
+ archive_file: zod.z.union([zod.z.url(), zod.z.literal("")]),
1657
1692
  original_filename: zod.z.string(),
1658
1693
  file_size: zod.z.int(),
1659
1694
  archive_type: zod.z.nativeEnum(DocumentArchiveArchiveType),
@@ -1679,7 +1714,7 @@ var DocumentArchiveDetailSchema = zod.z.object({
1679
1714
  description: zod.z.string().optional(),
1680
1715
  categories: zod.z.array(DocumentCategorySchema),
1681
1716
  is_public: zod.z.boolean().optional(),
1682
- archive_file: zod.z.url(),
1717
+ archive_file: zod.z.union([zod.z.url(), zod.z.literal("")]),
1683
1718
  original_filename: zod.z.string(),
1684
1719
  file_size: zod.z.int(),
1685
1720
  archive_type: zod.z.nativeEnum(DocumentArchiveDetailArchiveType),
@@ -2049,15 +2084,28 @@ __export(fetchers_exports, {
2049
2084
 
2050
2085
  // src/api/generated/ext_knowbase/api-instance.ts
2051
2086
  var globalAPI = null;
2087
+ var autoConfigAttempted = false;
2088
+ function tryAutoConfigureFromEnv() {
2089
+ if (autoConfigAttempted) return;
2090
+ autoConfigAttempted = true;
2091
+ if (globalAPI) return;
2092
+ if (typeof process === "undefined" || !process.env) return;
2093
+ const baseUrl = process.env.NEXT_PUBLIC_API_URL || process.env.VITE_API_URL || process.env.REACT_APP_API_URL || process.env.API_URL;
2094
+ if (baseUrl) {
2095
+ globalAPI = new API(baseUrl);
2096
+ }
2097
+ }
2052
2098
  function getAPIInstance() {
2099
+ tryAutoConfigureFromEnv();
2053
2100
  if (!globalAPI) {
2054
2101
  throw new Error(
2055
- 'API not configured. Call configureAPI() with your base URL before using fetchers or hooks.\n\nExample:\n import { configureAPI } from "./api-instance"\n configureAPI({ baseUrl: "https://api.example.com" })'
2102
+ 'API not configured. Call configureAPI() with your base URL before using fetchers or hooks.\n\nExample:\n import { configureAPI } from "./api-instance"\n configureAPI({ baseUrl: "https://api.example.com" })\n\nOr set environment variable: NEXT_PUBLIC_API_URL, VITE_API_URL, or REACT_APP_API_URL'
2056
2103
  );
2057
2104
  }
2058
2105
  return globalAPI;
2059
2106
  }
2060
2107
  function isAPIConfigured() {
2108
+ tryAutoConfigureFromEnv();
2061
2109
  return globalAPI !== null;
2062
2110
  }
2063
2111
  function configureAPI(config) {
@@ -4208,7 +4256,8 @@ var API = class {
4208
4256
  this._loadTokensFromStorage();
4209
4257
  this._client = new APIClient(this.baseUrl, {
4210
4258
  retryConfig: this.options?.retryConfig,
4211
- loggerConfig: this.options?.loggerConfig
4259
+ loggerConfig: this.options?.loggerConfig,
4260
+ tokenGetter: () => this.getToken()
4212
4261
  });
4213
4262
  this._injectAuthHeader();
4214
4263
  this.ext_knowbase_knowbase = this._client.ext_knowbase_knowbase;
@@ -4220,7 +4269,8 @@ var API = class {
4220
4269
  _reinitClients() {
4221
4270
  this._client = new APIClient(this.baseUrl, {
4222
4271
  retryConfig: this.options?.retryConfig,
4223
- loggerConfig: this.options?.loggerConfig
4272
+ loggerConfig: this.options?.loggerConfig,
4273
+ tokenGetter: () => this.getToken()
4224
4274
  });
4225
4275
  this._injectAuthHeader();
4226
4276
  this.ext_knowbase_knowbase = this._client.ext_knowbase_knowbase;
@@ -4313,12 +4363,13 @@ var API = class {
4313
4363
  };
4314
4364
 
4315
4365
  // src/api/index.ts
4366
+ api.initializeExtensionAPI(configureAPI);
4316
4367
  var apiKnowbase = api.createExtensionAPI(API);
4317
4368
 
4318
4369
  // package.json
4319
4370
  var package_default = {
4320
4371
  name: "@djangocfg/ext-knowbase",
4321
- version: "1.0.8",
4372
+ version: "1.0.10",
4322
4373
  description: "Knowledge base and chat extension for DjangoCFG",
4323
4374
  keywords: [
4324
4375
  "django",
@@ -4379,6 +4430,7 @@ var package_default = {
4379
4430
  peerDependencies: {
4380
4431
  "@djangocfg/api": "workspace:*",
4381
4432
  "@djangocfg/ext-base": "workspace:*",
4433
+ "@djangocfg/ui-core": "workspace:*",
4382
4434
  "@djangocfg/ui-nextjs": "workspace:*",
4383
4435
  consola: "^3.4.2",
4384
4436
  "lucide-react": "^0.545.0",
@@ -4394,6 +4446,7 @@ var package_default = {
4394
4446
  devDependencies: {
4395
4447
  "@djangocfg/api": "workspace:*",
4396
4448
  "@djangocfg/ext-base": "workspace:*",
4449
+ "@djangocfg/ui-core": "workspace:*",
4397
4450
  "@djangocfg/typescript-config": "workspace:*",
4398
4451
  "@types/node": "^24.7.2",
4399
4452
  "@types/react": "^19.0.0",
@@ -4455,6 +4508,7 @@ exports.ArchiveProcessingResultSchema = ArchiveProcessingResultSchema;
4455
4508
  exports.ArchiveSearchRequestRequestSchema = ArchiveSearchRequestRequestSchema;
4456
4509
  exports.ArchiveSearchResultSchema = ArchiveSearchResultSchema;
4457
4510
  exports.ArchiveStatisticsSchema = ArchiveStatisticsSchema;
4511
+ exports.CfgKnowbaseSystemArchivesCreateRequestSchema = CfgKnowbaseSystemArchivesCreateRequestSchema;
4458
4512
  exports.ChatHistorySchema = ChatHistorySchema;
4459
4513
  exports.ChatMessageSchema = ChatMessageSchema;
4460
4514
  exports.ChatQueryRequestSchema = ChatQueryRequestSchema;