@djangocfg/ext-knowbase 1.0.4 → 1.0.7

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 (38) hide show
  1. package/dist/config.cjs +3 -2
  2. package/dist/config.js +3 -2
  3. package/dist/hooks.cjs +143 -140
  4. package/dist/hooks.js +142 -140
  5. package/dist/index.cjs +6 -2
  6. package/dist/index.js +6 -2
  7. package/package.json +9 -8
  8. package/src/api/generated/ext_knowbase/CLAUDE.md +64 -0
  9. package/src/api/generated/ext_knowbase/_utils/fetchers/ext_knowbase__knowbase.ts +1 -0
  10. package/src/api/generated/ext_knowbase/_utils/fetchers/index.ts +1 -0
  11. package/src/api/generated/ext_knowbase/_utils/hooks/ext_knowbase__knowbase.ts +1 -0
  12. package/src/api/generated/ext_knowbase/_utils/hooks/index.ts +1 -0
  13. package/src/api/generated/ext_knowbase/_utils/schemas/index.ts +1 -0
  14. package/src/api/generated/ext_knowbase/api-instance.ts +1 -0
  15. package/src/api/generated/ext_knowbase/enums.ts +1 -0
  16. package/src/api/generated/ext_knowbase/errors.ts +1 -0
  17. package/src/api/generated/ext_knowbase/ext_knowbase__knowbase/index.ts +1 -0
  18. package/src/api/generated/ext_knowbase/ext_knowbase__knowbase/models.ts +1 -0
  19. package/src/api/generated/ext_knowbase/http.ts +1 -0
  20. package/src/api/generated/ext_knowbase/index.ts +1 -0
  21. package/src/api/generated/ext_knowbase/logger.ts +1 -0
  22. package/src/api/generated/ext_knowbase/retry.ts +1 -0
  23. package/src/api/generated/ext_knowbase/storage.ts +1 -0
  24. package/src/api/generated/ext_knowbase/validation-events.ts +1 -0
  25. package/src/api/index.ts +7 -1
  26. package/src/components/Chat/ChatUIContext.tsx +2 -1
  27. package/src/components/Chat/ChatWidget.tsx +9 -11
  28. package/src/components/Chat/components/MessageInput.tsx +5 -2
  29. package/src/components/Chat/components/MessageList.tsx +15 -8
  30. package/src/components/Chat/components/SessionList.tsx +8 -12
  31. package/src/components/Chat/hooks/useInfiniteSessions.ts +2 -1
  32. package/src/components/Chat/index.tsx +2 -0
  33. package/src/components/Chat/types.ts +3 -1
  34. package/src/config.ts +1 -0
  35. package/src/contexts/knowbase/ChatContext.tsx +6 -9
  36. package/src/contexts/knowbase/DocumentsContext.tsx +11 -17
  37. package/src/contexts/knowbase/KnowbaseProvider.tsx +1 -0
  38. package/src/contexts/knowbase/SessionsContext.tsx +6 -9
package/dist/config.cjs CHANGED
@@ -27,7 +27,7 @@ var import_ext_base = require("@djangocfg/ext-base");
27
27
  // package.json
28
28
  var package_default = {
29
29
  name: "@djangocfg/ext-knowbase",
30
- version: "1.0.4",
30
+ version: "1.0.6",
31
31
  description: "Knowledge base and chat extension for DjangoCFG",
32
32
  keywords: [
33
33
  "django",
@@ -97,7 +97,8 @@ var package_default = {
97
97
  "react-dom": "^18 || ^19",
98
98
  "react-markdown": "^9.0.0 || ^10.0.0",
99
99
  swr: "^2.3.7",
100
- zod: "^4.1.13"
100
+ zod: "^4.1.13",
101
+ moment: "^2.30.1"
101
102
  },
102
103
  devDependencies: {
103
104
  "@djangocfg/api": "workspace:*",
package/dist/config.js CHANGED
@@ -4,7 +4,7 @@ import { createExtensionConfig } from "@djangocfg/ext-base";
4
4
  // package.json
5
5
  var package_default = {
6
6
  name: "@djangocfg/ext-knowbase",
7
- version: "1.0.4",
7
+ version: "1.0.6",
8
8
  description: "Knowledge base and chat extension for DjangoCFG",
9
9
  keywords: [
10
10
  "django",
@@ -74,7 +74,8 @@ var package_default = {
74
74
  "react-dom": "^18 || ^19",
75
75
  "react-markdown": "^9.0.0 || ^10.0.0",
76
76
  swr: "^2.3.7",
77
- zod: "^4.1.13"
77
+ zod: "^4.1.13",
78
+ moment: "^2.30.1"
78
79
  },
79
80
  devDependencies: {
80
81
  "@djangocfg/api": "workspace:*",
package/dist/hooks.cjs CHANGED
@@ -4,23 +4,24 @@ var consola = require('consola');
4
4
  var pRetry = require('p-retry');
5
5
  var zod = require('zod');
6
6
  var api = require('@djangocfg/ext-base/api');
7
- var extBase = require('@djangocfg/ext-base');
8
7
  var useSWR = require('swr');
8
+ var extBase = require('@djangocfg/ext-base');
9
9
  require('@djangocfg/ext-base/hooks');
10
10
  var react = require('react');
11
11
  var jsxRuntime = require('react/jsx-runtime');
12
- var reactDom = require('react-dom');
12
+ var lucideReact = require('lucide-react');
13
13
  var navigation = require('next/navigation');
14
+ var reactDom = require('react-dom');
14
15
  var uiNextjs = require('@djangocfg/ui-nextjs');
15
- var lucideReact = require('lucide-react');
16
+ var moment = require('moment');
16
17
  var auth = require('@djangocfg/api/auth');
17
18
  var useSWRInfinite = require('swr/infinite');
18
- var api$1 = require('@djangocfg/api');
19
19
 
20
20
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
21
21
 
22
22
  var pRetry__default = /*#__PURE__*/_interopDefault(pRetry);
23
23
  var useSWR__default = /*#__PURE__*/_interopDefault(useSWR);
24
+ var moment__default = /*#__PURE__*/_interopDefault(moment);
24
25
  var useSWRInfinite__default = /*#__PURE__*/_interopDefault(useSWRInfinite);
25
26
 
26
27
  var __defProp = Object.defineProperty;
@@ -4323,132 +4324,6 @@ var API = class {
4323
4324
  return "./schema.json";
4324
4325
  }
4325
4326
  };
4326
- var apiKnowbase = api.createExtensionAPI(API);
4327
-
4328
- // package.json
4329
- var package_default = {
4330
- name: "@djangocfg/ext-knowbase",
4331
- version: "1.0.4",
4332
- description: "Knowledge base and chat extension for DjangoCFG",
4333
- keywords: [
4334
- "django",
4335
- "djangocfg",
4336
- "extension",
4337
- "knowledge-base",
4338
- "chat",
4339
- "documentation",
4340
- "help",
4341
- "typescript",
4342
- "react"
4343
- ],
4344
- author: {
4345
- name: "DjangoCFG",
4346
- url: "https://djangocfg.com"
4347
- },
4348
- homepage: "https://hub.djangocfg.com/extensions/djangocfg-ext-knowbase",
4349
- repository: {
4350
- type: "git",
4351
- url: "https://github.com/markolofsen/django-cfg.git",
4352
- directory: "extensions/knowbase"
4353
- },
4354
- bugs: {
4355
- url: "https://github.com/markolofsen/django-cfg/issues"
4356
- },
4357
- license: "MIT",
4358
- type: "module",
4359
- main: "./dist/index.cjs",
4360
- module: "./dist/index.js",
4361
- types: "./dist/index.d.ts",
4362
- exports: {
4363
- ".": {
4364
- types: "./dist/index.d.ts",
4365
- import: "./dist/index.js",
4366
- require: "./dist/index.cjs"
4367
- },
4368
- "./hooks": {
4369
- types: "./dist/hooks.d.ts",
4370
- import: "./dist/hooks.js",
4371
- require: "./dist/hooks.cjs"
4372
- },
4373
- "./config": {
4374
- types: "./dist/config.d.ts",
4375
- import: "./dist/config.js",
4376
- require: "./dist/config.cjs"
4377
- }
4378
- },
4379
- files: [
4380
- "dist",
4381
- "src",
4382
- "preview.png"
4383
- ],
4384
- scripts: {
4385
- build: "tsup",
4386
- dev: "tsup --watch",
4387
- check: "tsc --noEmit"
4388
- },
4389
- peerDependencies: {
4390
- "@djangocfg/api": "workspace:*",
4391
- "@djangocfg/ext-base": "workspace:*",
4392
- "@djangocfg/ui-nextjs": "workspace:*",
4393
- consola: "^3.4.2",
4394
- "lucide-react": "^0.545.0",
4395
- next: "^15.5.7",
4396
- "p-retry": "^7.0.0",
4397
- react: "^18 || ^19",
4398
- "react-dom": "^18 || ^19",
4399
- "react-markdown": "^9.0.0 || ^10.0.0",
4400
- swr: "^2.3.7",
4401
- zod: "^4.1.13"
4402
- },
4403
- devDependencies: {
4404
- "@djangocfg/api": "workspace:*",
4405
- "@djangocfg/ext-base": "workspace:*",
4406
- "@djangocfg/typescript-config": "workspace:*",
4407
- "@types/node": "^24.7.2",
4408
- "@types/react": "^19.0.0",
4409
- consola: "^3.4.2",
4410
- "p-retry": "^7.0.0",
4411
- swr: "^2.3.7",
4412
- tsup: "^8.5.0",
4413
- typescript: "^5.9.3"
4414
- }
4415
- };
4416
-
4417
- // src/config.ts
4418
- var extensionConfig = extBase.createExtensionConfig(package_default, {
4419
- name: "knowbase",
4420
- displayName: "Knowledge Base",
4421
- category: "content",
4422
- features: [
4423
- "Article management",
4424
- "Category organization",
4425
- "Full-text search",
4426
- "Markdown support",
4427
- "Chat interface",
4428
- "Version control"
4429
- ],
4430
- minVersion: "2.0.0",
4431
- examples: [
4432
- {
4433
- title: "Knowledge Base Search",
4434
- description: "Add searchable documentation",
4435
- code: `import { KnowledgeBase, useArticles } from '@djangocfg/ext-knowbase';
4436
-
4437
- export default function DocsPage() {
4438
- const { articles, search } = useArticles();
4439
-
4440
- return (
4441
- <KnowledgeBase
4442
- articles={articles}
4443
- onSearch={(query) => search(query)}
4444
- showChat={true}
4445
- />
4446
- );
4447
- }`,
4448
- language: "tsx"
4449
- }
4450
- ]
4451
- });
4452
4327
  function useKnowbaseAdminChatList(params, client) {
4453
4328
  return useSWR__default.default(
4454
4329
  params ? ["cfg-knowbase-admin-chat", params] : "cfg-knowbase-admin-chat",
@@ -4863,6 +4738,135 @@ function useKnowbaseSystemItemsContentRetrieve(id, client) {
4863
4738
  () => getKnowbaseSystemItemsContentRetrieve(id, client)
4864
4739
  );
4865
4740
  }
4741
+
4742
+ // src/api/index.ts
4743
+ var apiKnowbase = api.createExtensionAPI(API);
4744
+
4745
+ // package.json
4746
+ var package_default = {
4747
+ name: "@djangocfg/ext-knowbase",
4748
+ version: "1.0.6",
4749
+ description: "Knowledge base and chat extension for DjangoCFG",
4750
+ keywords: [
4751
+ "django",
4752
+ "djangocfg",
4753
+ "extension",
4754
+ "knowledge-base",
4755
+ "chat",
4756
+ "documentation",
4757
+ "help",
4758
+ "typescript",
4759
+ "react"
4760
+ ],
4761
+ author: {
4762
+ name: "DjangoCFG",
4763
+ url: "https://djangocfg.com"
4764
+ },
4765
+ homepage: "https://hub.djangocfg.com/extensions/djangocfg-ext-knowbase",
4766
+ repository: {
4767
+ type: "git",
4768
+ url: "https://github.com/markolofsen/django-cfg.git",
4769
+ directory: "extensions/knowbase"
4770
+ },
4771
+ bugs: {
4772
+ url: "https://github.com/markolofsen/django-cfg/issues"
4773
+ },
4774
+ license: "MIT",
4775
+ type: "module",
4776
+ main: "./dist/index.cjs",
4777
+ module: "./dist/index.js",
4778
+ types: "./dist/index.d.ts",
4779
+ exports: {
4780
+ ".": {
4781
+ types: "./dist/index.d.ts",
4782
+ import: "./dist/index.js",
4783
+ require: "./dist/index.cjs"
4784
+ },
4785
+ "./hooks": {
4786
+ types: "./dist/hooks.d.ts",
4787
+ import: "./dist/hooks.js",
4788
+ require: "./dist/hooks.cjs"
4789
+ },
4790
+ "./config": {
4791
+ types: "./dist/config.d.ts",
4792
+ import: "./dist/config.js",
4793
+ require: "./dist/config.cjs"
4794
+ }
4795
+ },
4796
+ files: [
4797
+ "dist",
4798
+ "src",
4799
+ "preview.png"
4800
+ ],
4801
+ scripts: {
4802
+ build: "tsup",
4803
+ dev: "tsup --watch",
4804
+ check: "tsc --noEmit"
4805
+ },
4806
+ peerDependencies: {
4807
+ "@djangocfg/api": "workspace:*",
4808
+ "@djangocfg/ext-base": "workspace:*",
4809
+ "@djangocfg/ui-nextjs": "workspace:*",
4810
+ consola: "^3.4.2",
4811
+ "lucide-react": "^0.545.0",
4812
+ next: "^15.5.7",
4813
+ "p-retry": "^7.0.0",
4814
+ react: "^18 || ^19",
4815
+ "react-dom": "^18 || ^19",
4816
+ "react-markdown": "^9.0.0 || ^10.0.0",
4817
+ swr: "^2.3.7",
4818
+ zod: "^4.1.13",
4819
+ moment: "^2.30.1"
4820
+ },
4821
+ devDependencies: {
4822
+ "@djangocfg/api": "workspace:*",
4823
+ "@djangocfg/ext-base": "workspace:*",
4824
+ "@djangocfg/typescript-config": "workspace:*",
4825
+ "@types/node": "^24.7.2",
4826
+ "@types/react": "^19.0.0",
4827
+ consola: "^3.4.2",
4828
+ "p-retry": "^7.0.0",
4829
+ swr: "^2.3.7",
4830
+ tsup: "^8.5.0",
4831
+ typescript: "^5.9.3"
4832
+ }
4833
+ };
4834
+
4835
+ // src/config.ts
4836
+ var extensionConfig = extBase.createExtensionConfig(package_default, {
4837
+ name: "knowbase",
4838
+ displayName: "Knowledge Base",
4839
+ category: "content",
4840
+ features: [
4841
+ "Article management",
4842
+ "Category organization",
4843
+ "Full-text search",
4844
+ "Markdown support",
4845
+ "Chat interface",
4846
+ "Version control"
4847
+ ],
4848
+ minVersion: "2.0.0",
4849
+ examples: [
4850
+ {
4851
+ title: "Knowledge Base Search",
4852
+ description: "Add searchable documentation",
4853
+ code: `import { KnowledgeBase, useArticles } from '@djangocfg/ext-knowbase';
4854
+
4855
+ export default function DocsPage() {
4856
+ const { articles, search } = useArticles();
4857
+
4858
+ return (
4859
+ <KnowledgeBase
4860
+ articles={articles}
4861
+ onSearch={(query) => search(query)}
4862
+ showChat={true}
4863
+ />
4864
+ );
4865
+ }`,
4866
+ language: "tsx"
4867
+ }
4868
+ ]
4869
+ });
4866
4870
  var KnowbaseChatContext = react.createContext(void 0);
4867
4871
  function KnowbaseChatProvider({ children }) {
4868
4872
  const {
@@ -5187,14 +5191,14 @@ function useChatUI() {
5187
5191
  }
5188
5192
  return context;
5189
5193
  }
5190
-
5191
- // src/components/Chat/types.ts
5192
- var Enums = enums_exports;
5193
5194
  var isDevelopment = process.env.NODE_ENV === "development";
5194
5195
  var logger = consola.createConsola({
5195
5196
  level: isDevelopment ? 4 : 1
5196
5197
  }).withTag("ext-knowbase");
5197
5198
  var chatLogger = logger;
5199
+
5200
+ // src/components/Chat/types.ts
5201
+ var Enums = enums_exports;
5198
5202
  var MessageList = ({
5199
5203
  messages,
5200
5204
  isLoading = false,
@@ -5214,9 +5218,9 @@ var MessageList = ({
5214
5218
  }
5215
5219
  }, [messages, isLoading, autoScroll]);
5216
5220
  const formatTimestamp = (timestamp) => {
5217
- const date = new Date(timestamp);
5218
- return date.toLocaleTimeString("en-US", { hour: "2-digit", minute: "2-digit" });
5221
+ return moment__default.default.utc(timestamp).local().format("hh:mm A");
5219
5222
  };
5223
+ const userInitial = user?.display_username?.charAt(0)?.toUpperCase() || user?.email?.charAt(0)?.toUpperCase() || null;
5220
5224
  return /* @__PURE__ */ jsxRuntime.jsx(uiNextjs.ScrollArea, { className: `h-full bg-muted/50 ${className}`, viewportRef: scrollRef, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4 p-4", children: [
5221
5225
  messages.length === 0 && !isLoading ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center justify-center h-full text-center py-12", children: [
5222
5226
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Bot, { className: "h-12 w-12 text-muted-foreground mb-4" }),
@@ -5263,7 +5267,7 @@ var MessageList = ({
5263
5267
  ),
5264
5268
  isUser && /* @__PURE__ */ jsxRuntime.jsxs(uiNextjs.Avatar, { className: "h-8 w-8 shrink-0", children: [
5265
5269
  user?.avatar && /* @__PURE__ */ jsxRuntime.jsx(uiNextjs.AvatarImage, { src: user.avatar, alt: user.display_username || user.email || "User" }),
5266
- /* @__PURE__ */ jsxRuntime.jsx(uiNextjs.AvatarFallback, { className: "bg-primary/10 text-primary font-semibold", children: user?.display_username?.charAt(0)?.toUpperCase() || user?.email?.charAt(0)?.toUpperCase() || /* @__PURE__ */ jsxRuntime.jsx(lucideReact.User, { className: "h-5 w-5" }) })
5270
+ /* @__PURE__ */ jsxRuntime.jsx(uiNextjs.AvatarFallback, { className: "bg-primary/10 text-primary font-semibold", children: userInitial || /* @__PURE__ */ jsxRuntime.jsx(lucideReact.User, { className: "h-5 w-5" }) })
5267
5271
  ] })
5268
5272
  ]
5269
5273
  },
@@ -5372,9 +5376,9 @@ function useInfiniteSessions() {
5372
5376
  return ["cfg-knowbase-admin-sessions-infinite", pageIndex + 1, PAGE_SIZE];
5373
5377
  };
5374
5378
  const fetcher = async ([, page, pageSize]) => {
5375
- return api$1.ExtKnowbaseFetchers.getKnowbaseAdminSessionsList(
5379
+ return fetchers_exports.getKnowbaseAdminSessionsList(
5376
5380
  { page, page_size: pageSize },
5377
- api$1.apiKnowbase
5381
+ apiKnowbase
5378
5382
  );
5379
5383
  };
5380
5384
  const {
@@ -5444,8 +5448,7 @@ var SessionList = ({
5444
5448
  return () => scrollContainer.removeEventListener("scroll", handleScroll);
5445
5449
  }, [handleScroll]);
5446
5450
  const formatDate = (dateString) => {
5447
- const date = new Date(dateString);
5448
- return date.toLocaleDateString("en-US", { month: "short", day: "numeric" });
5451
+ return moment__default.default.utc(dateString).local().format("MMM D");
5449
5452
  };
5450
5453
  return /* @__PURE__ */ jsxRuntime.jsx(uiNextjs.Sheet, { open: isOpen, onOpenChange: onClose, children: /* @__PURE__ */ jsxRuntime.jsxs(uiNextjs.SheetContent, { side: "left", className: `w-[400px] sm:w-[540px] ${className}`, children: [
5451
5454
  /* @__PURE__ */ jsxRuntime.jsxs(uiNextjs.SheetHeader, { children: [