@stackfactor/client-api 1.19.3 → 1.20.2

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 (87) hide show
  1. package/dist/cjs/lib/constants.d.ts +2 -1
  2. package/dist/cjs/lib/constants.d.ts.map +1 -1
  3. package/dist/cjs/lib/constants.js +3 -1
  4. package/dist/cjs/lib/constants.js.map +1 -1
  5. package/dist/cjs/lib/knowledgeAssessmentAttempts.d.ts +22 -0
  6. package/dist/cjs/lib/knowledgeAssessmentAttempts.d.ts.map +1 -1
  7. package/dist/cjs/lib/knowledgeAssessmentAttempts.js +44 -1
  8. package/dist/cjs/lib/knowledgeAssessmentAttempts.js.map +1 -1
  9. package/dist/cjs/lib/knowledgeBase/documents.d.ts +127 -0
  10. package/dist/cjs/lib/knowledgeBase/documents.d.ts.map +1 -0
  11. package/dist/cjs/lib/knowledgeBase/documents.js +114 -0
  12. package/dist/cjs/lib/knowledgeBase/documents.js.map +1 -0
  13. package/dist/cjs/lib/knowledgeBase/knowledgeBases.d.ts +118 -0
  14. package/dist/cjs/lib/knowledgeBase/knowledgeBases.d.ts.map +1 -0
  15. package/dist/cjs/lib/knowledgeBase/knowledgeBases.js +256 -0
  16. package/dist/cjs/lib/knowledgeBase/knowledgeBases.js.map +1 -0
  17. package/dist/cjs/lib/knowledgeBase/review.d.ts +184 -0
  18. package/dist/cjs/lib/knowledgeBase/review.d.ts.map +1 -0
  19. package/dist/cjs/lib/knowledgeBase/review.js +413 -0
  20. package/dist/cjs/lib/knowledgeBase/review.js.map +1 -0
  21. package/dist/cjs/lib/knowledgeBase/skills.d.ts +247 -0
  22. package/dist/cjs/lib/knowledgeBase/skills.d.ts.map +1 -0
  23. package/dist/cjs/lib/knowledgeBase/skills.js +199 -0
  24. package/dist/cjs/lib/knowledgeBase/skills.js.map +1 -0
  25. package/dist/cjs/lib/knowledgeBase/sources.d.ts +136 -0
  26. package/dist/cjs/lib/knowledgeBase/sources.d.ts.map +1 -0
  27. package/dist/cjs/lib/knowledgeBase/sources.js +234 -0
  28. package/dist/cjs/lib/knowledgeBase/sources.js.map +1 -0
  29. package/dist/cjs/lib/knowledgeBase.d.ts +5 -785
  30. package/dist/cjs/lib/knowledgeBase.d.ts.map +1 -1
  31. package/dist/cjs/lib/knowledgeBase.js +32 -1229
  32. package/dist/cjs/lib/knowledgeBase.js.map +1 -1
  33. package/dist/cjs/lib/knowledgeBaseAgent.d.ts +109 -2
  34. package/dist/cjs/lib/knowledgeBaseAgent.d.ts.map +1 -1
  35. package/dist/cjs/lib/knowledgeBaseAgent.js +71 -8
  36. package/dist/cjs/lib/knowledgeBaseAgent.js.map +1 -1
  37. package/dist/cjs/lib/learningContent.d.ts.map +1 -1
  38. package/dist/cjs/lib/learningContent.js +12 -2
  39. package/dist/cjs/lib/learningContent.js.map +1 -1
  40. package/dist/cjs/lib/learningContentCohorts.d.ts +80 -0
  41. package/dist/cjs/lib/learningContentCohorts.d.ts.map +1 -1
  42. package/dist/cjs/lib/learningContentCohorts.js +80 -1
  43. package/dist/cjs/lib/learningContentCohorts.js.map +1 -1
  44. package/dist/esm/lib/constants.d.ts +2 -1
  45. package/dist/esm/lib/constants.d.ts.map +1 -1
  46. package/dist/esm/lib/constants.js +3 -1
  47. package/dist/esm/lib/constants.js.map +1 -1
  48. package/dist/esm/lib/knowledgeAssessmentAttempts.d.ts +22 -0
  49. package/dist/esm/lib/knowledgeAssessmentAttempts.d.ts.map +1 -1
  50. package/dist/esm/lib/knowledgeAssessmentAttempts.js +40 -0
  51. package/dist/esm/lib/knowledgeAssessmentAttempts.js.map +1 -1
  52. package/dist/esm/lib/knowledgeBase/documents.d.ts +127 -0
  53. package/dist/esm/lib/knowledgeBase/documents.d.ts.map +1 -0
  54. package/dist/esm/lib/knowledgeBase/documents.js +107 -0
  55. package/dist/esm/lib/knowledgeBase/documents.js.map +1 -0
  56. package/dist/esm/lib/knowledgeBase/knowledgeBases.d.ts +118 -0
  57. package/dist/esm/lib/knowledgeBase/knowledgeBases.d.ts.map +1 -0
  58. package/dist/esm/lib/knowledgeBase/knowledgeBases.js +242 -0
  59. package/dist/esm/lib/knowledgeBase/knowledgeBases.js.map +1 -0
  60. package/dist/esm/lib/knowledgeBase/review.d.ts +184 -0
  61. package/dist/esm/lib/knowledgeBase/review.d.ts.map +1 -0
  62. package/dist/esm/lib/knowledgeBase/review.js +392 -0
  63. package/dist/esm/lib/knowledgeBase/review.js.map +1 -0
  64. package/dist/esm/lib/knowledgeBase/skills.d.ts +247 -0
  65. package/dist/esm/lib/knowledgeBase/skills.d.ts.map +1 -0
  66. package/dist/esm/lib/knowledgeBase/skills.js +189 -0
  67. package/dist/esm/lib/knowledgeBase/skills.js.map +1 -0
  68. package/dist/esm/lib/knowledgeBase/sources.d.ts +136 -0
  69. package/dist/esm/lib/knowledgeBase/sources.d.ts.map +1 -0
  70. package/dist/esm/lib/knowledgeBase/sources.js +221 -0
  71. package/dist/esm/lib/knowledgeBase/sources.js.map +1 -0
  72. package/dist/esm/lib/knowledgeBase.d.ts +5 -785
  73. package/dist/esm/lib/knowledgeBase.d.ts.map +1 -1
  74. package/dist/esm/lib/knowledgeBase.js +18 -1175
  75. package/dist/esm/lib/knowledgeBase.js.map +1 -1
  76. package/dist/esm/lib/knowledgeBaseAgent.d.ts +109 -2
  77. package/dist/esm/lib/knowledgeBaseAgent.d.ts.map +1 -1
  78. package/dist/esm/lib/knowledgeBaseAgent.js +66 -7
  79. package/dist/esm/lib/knowledgeBaseAgent.js.map +1 -1
  80. package/dist/esm/lib/learningContent.d.ts.map +1 -1
  81. package/dist/esm/lib/learningContent.js +12 -2
  82. package/dist/esm/lib/learningContent.js.map +1 -1
  83. package/dist/esm/lib/learningContentCohorts.d.ts +80 -0
  84. package/dist/esm/lib/learningContentCohorts.d.ts.map +1 -1
  85. package/dist/esm/lib/learningContentCohorts.js +66 -0
  86. package/dist/esm/lib/learningContentCohorts.js.map +1 -1
  87. package/package.json +1 -3
@@ -0,0 +1,107 @@
1
+ import { client } from "../axiosClient.js";
2
+ // ── Document Management ───────────────────────────────────────────────────────
3
+ /**
4
+ * List a knowledge base's documents (paginated, with status + lastSync). There is
5
+ * no upload endpoint — documents are only ingested via configured sources.
6
+ * GET /api/v1/knowledge-base/:id/documents
7
+ * @param {String} id The knowledge base id
8
+ * @param {DocumentListParams} params Optional pagination / status filters
9
+ * @param {String} authToken Authentication token
10
+ * @returns {Promise<object>}
11
+ */
12
+ export const listDocuments = (id, params, authToken) => {
13
+ return new Promise((resolve, reject) => {
14
+ const request = client.get(`/api/v1/knowledge-base/${id}/documents`, {
15
+ headers: { authorization: authToken },
16
+ params: params,
17
+ });
18
+ request
19
+ .then((response) => {
20
+ resolve(response.data);
21
+ })
22
+ .catch((error) => {
23
+ reject(error);
24
+ });
25
+ });
26
+ };
27
+ /**
28
+ * Get one knowledge base document and what the RAG holds for it: its chunks,
29
+ * after redaction, in order (the first 1000; `truncated` says when there are
30
+ * more). No chunks while the document is not processed, or is held for review
31
+ * or blocked. Needs the knowledge base access search needs, and the
32
+ * document's own source permissions (403); 404 when either is missing.
33
+ * GET /api/v1/knowledge-base/:id/documents/:docId
34
+ * @param {String} id The knowledge base id
35
+ * @param {String} docId The document id
36
+ * @param {String} authToken Authentication token
37
+ * @returns {Promise<KnowledgeBaseDocumentContent>}
38
+ */
39
+ export const getDocument = (id, docId, authToken) => {
40
+ return new Promise((resolve, reject) => {
41
+ const request = client.get(`/api/v1/knowledge-base/${id}/documents/${docId}`, { headers: { authorization: authToken } });
42
+ request
43
+ .then((response) => {
44
+ resolve(response.data);
45
+ })
46
+ .catch((error) => {
47
+ reject(error);
48
+ });
49
+ });
50
+ };
51
+ /**
52
+ * Get the picture of one image passage (chunk) of a knowledge base document,
53
+ * for the document's page: a chunk `getDocument` answered with `hasImage`.
54
+ * Its preview unless `size` is "full", which is the stored original (often
55
+ * several MB: ask for it only to show the picture full size). The same access
56
+ * as `getDocument` applies (403), and only while its chunks are shown; 404
57
+ * when the passage has no picture to show. Answered `private, no-cache`, so
58
+ * the platform judges access each time it is asked.
59
+ * GET /api/v1/knowledge-base/:id/documents/:docId/chunks/:chunkId/image[?size=full]
60
+ * @param {String} id The knowledge base id
61
+ * @param {String} docId The document id
62
+ * @param {String} chunkId The image chunk id
63
+ * @param {String} authToken Authentication token
64
+ * @param {DocumentImageSize} size Optional: "full" for the stored original;
65
+ * the preview otherwise
66
+ * @returns {Promise<Blob>} The picture, typed by what it is: the preview is
67
+ * WebP, or the original's own type when no preview could be made; the full
68
+ * picture is the original's type
69
+ */
70
+ export const getDocumentImage = (id, docId, chunkId, authToken, size) => {
71
+ return new Promise((resolve, reject) => {
72
+ const request = client.get(`/api/v1/knowledge-base/${id}/documents/${docId}/chunks/${chunkId}/image`, {
73
+ headers: { authorization: authToken },
74
+ responseType: "blob",
75
+ ...(size ? { params: { size } } : {}),
76
+ });
77
+ request
78
+ .then((response) => {
79
+ resolve(response.data);
80
+ })
81
+ .catch((error) => {
82
+ reject(error);
83
+ });
84
+ });
85
+ };
86
+ /**
87
+ * Delete a single document (cascades to chunks + S3 images + dependent entity
88
+ * flags).
89
+ * DELETE /api/v1/knowledge-base/:id/documents/:docId
90
+ * @param {String} id The knowledge base id
91
+ * @param {String} docId The document id
92
+ * @param {String} authToken Authentication token
93
+ * @returns {Promise<object>}
94
+ */
95
+ export const deleteDocument = (id, docId, authToken) => {
96
+ return new Promise((resolve, reject) => {
97
+ const request = client.delete(`/api/v1/knowledge-base/${id}/documents/${docId}`, { headers: { authorization: authToken } });
98
+ request
99
+ .then((response) => {
100
+ resolve(response.data);
101
+ })
102
+ .catch((error) => {
103
+ reject(error);
104
+ });
105
+ });
106
+ };
107
+ //# sourceMappingURL=documents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"documents.js","sourceRoot":"","sources":["../../../../src/lib/knowledgeBase/documents.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,118 @@
1
+ /** Create / update payload for a KB's metadata (§14 CRUD). */
2
+ export interface KnowledgeBaseInput {
3
+ name?: string;
4
+ description?: string | null;
5
+ category?: string | null;
6
+ /** One of `KNOWLEDGE_BASE.VISIBILITY` — "private" | "team" | "public". */
7
+ visibility?: string;
8
+ embeddingProvider?: string;
9
+ embeddingModel?: string;
10
+ embeddingDimensions?: number;
11
+ status?: number;
12
+ }
13
+ /** An access grant (§14 KB Access Management). */
14
+ export interface AccessEntryInput {
15
+ /** One of `KNOWLEDGE_BASE.SUBJECT_TYPE` — "user" | "group" | "team". */
16
+ subjectType: string;
17
+ subjectId: string;
18
+ /** One of `KNOWLEDGE_BASE.ACCESS_ROLE` — "owner" | "editor" | "contributor" | "viewer". */
19
+ role: string;
20
+ }
21
+ /**
22
+ * List the knowledge bases the caller can see.
23
+ * GET /api/v1/knowledge-base
24
+ * @param {String} authToken Authentication token
25
+ * @returns {Promise<object>}
26
+ */
27
+ export declare const listKnowledgeBases: (authToken: string) => Promise<object>;
28
+ /**
29
+ * Create a knowledge base (the creator becomes owner automatically). Requires the
30
+ * global CREATE_KNOWLEDGE_BASE capability.
31
+ * POST /api/v1/knowledge-base
32
+ * @param {KnowledgeBaseInput} data KB metadata (at minimum `name`)
33
+ * @param {String} authToken Authentication token
34
+ * @returns {Promise<object>}
35
+ */
36
+ export declare const createKnowledgeBase: (data: KnowledgeBaseInput, authToken: string) => Promise<object>;
37
+ /**
38
+ * Get a single knowledge base (plus stats).
39
+ * GET /api/v1/knowledge-base/:id
40
+ * @param {String} id The knowledge base id
41
+ * @param {String} authToken Authentication token
42
+ * @returns {Promise<object>}
43
+ */
44
+ export declare const getKnowledgeBase: (id: string, authToken: string) => Promise<object>;
45
+ /**
46
+ * Update a knowledge base's metadata. Owner or editor only. Does not touch
47
+ * `access[]`, `sources`, or `createdBy` — those have their own gated flows.
48
+ * PUT /api/v1/knowledge-base/:id
49
+ * @param {String} id The knowledge base id
50
+ * @param {KnowledgeBaseInput} data The fields to update
51
+ * @param {String} authToken Authentication token
52
+ * @returns {Promise<object>}
53
+ */
54
+ export declare const updateKnowledgeBase: (id: string, data: KnowledgeBaseInput, authToken: string) => Promise<object>;
55
+ /**
56
+ * Delete a knowledge base (cascades to its chunks). Owner only.
57
+ * DELETE /api/v1/knowledge-base/:id
58
+ * @param {String} id The knowledge base id
59
+ * @param {String} authToken Authentication token
60
+ * @returns {Promise<object>}
61
+ */
62
+ export declare const deleteKnowledgeBase: (id: string, authToken: string) => Promise<object>;
63
+ /**
64
+ * List a knowledge base's access entries.
65
+ * GET /api/v1/knowledge-base/:id/access
66
+ * @param {String} id The knowledge base id
67
+ * @param {String} authToken Authentication token
68
+ * @returns {Promise<object>}
69
+ */
70
+ export declare const listAccess: (id: string, authToken: string) => Promise<object>;
71
+ /**
72
+ * Grant (upsert) an access entry. Owner only. Access is keyed by
73
+ * `(subjectType, subjectId)`, so re-granting a subject that already has an entry
74
+ * updates its role — there is no separate "update role" endpoint.
75
+ * POST /api/v1/knowledge-base/:id/access
76
+ * @param {String} id The knowledge base id
77
+ * @param {AccessEntryInput} entry The `{ subjectType, subjectId, role }` grant
78
+ * @param {String} authToken Authentication token
79
+ * @returns {Promise<object>}
80
+ */
81
+ export declare const grantAccess: (id: string, entry: AccessEntryInput, authToken: string) => Promise<object>;
82
+ /**
83
+ * Revoke a subject's access. Owner only. Keyed by `(subjectType, subjectId)` — the
84
+ * same composite key `grantAccess` upserts on. The backend refuses to remove the
85
+ * last owner.
86
+ * DELETE /api/v1/knowledge-base/:id/access
87
+ * @param {String} id The knowledge base id
88
+ * @param {String} subjectType One of `KNOWLEDGE_BASE.SUBJECT_TYPE`
89
+ * @param {String} subjectId The subject whose access is revoked
90
+ * @param {String} authToken Authentication token
91
+ * @returns {Promise<object>}
92
+ */
93
+ export declare const revokeAccess: (id: string, subjectType: string, subjectId: string, authToken: string) => Promise<object>;
94
+ /**
95
+ * Read the tenant's compliance profile (admin only). Governs which RAG processors
96
+ * a KB may route to (e.g. HIPAA tenants → BAA-eligible processors only).
97
+ * GET /api/v1/tenants/compliance-profile
98
+ * @param {String} authToken Authentication token
99
+ * @returns {Promise<object>}
100
+ */
101
+ export declare const getComplianceProfile: (authToken: string) => Promise<object>;
102
+ /**
103
+ * Update the tenant's compliance profile (admin only; not exposed via the KB UI).
104
+ * PUT /api/v1/tenants/compliance-profile
105
+ * @param {object} profile The compliance profile
106
+ * @param {String} authToken Authentication token
107
+ * @returns {Promise<object>}
108
+ */
109
+ export declare const updateComplianceProfile: (profile: object, authToken: string) => Promise<object>;
110
+ /**
111
+ * Trigger a GDPR subject-purge ("right to be forgotten"; admin only).
112
+ * POST /api/v1/compliance/right-to-be-forgotten
113
+ * @param {object} data The subject-purge request
114
+ * @param {String} authToken Authentication token
115
+ * @returns {Promise<object>}
116
+ */
117
+ export declare const rightToBeForgotten: (data: object, authToken: string) => Promise<object>;
118
+ //# sourceMappingURL=knowledgeBases.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"knowledgeBases.d.ts","sourceRoot":"","sources":["../../../../src/lib/knowledgeBase/knowledgeBases.ts"],"names":[],"mappings":"AAQA,8DAA8D;AAC9D,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,0EAA0E;IAC1E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CAGjB;AAED,kDAAkD;AAClD,MAAM,WAAW,gBAAgB;IAC/B,wEAAwE;IACxE,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,2FAA2F;IAC3F,IAAI,EAAE,MAAM,CAAC;CACd;AAID;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,GAAI,WAAW,MAAM,KAAG,OAAO,CAAC,MAAM,CAapE,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,GAC9B,MAAM,kBAAkB,EACxB,WAAW,MAAM,KAChB,OAAO,CAAC,MAAM,CAahB,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,GAC3B,IAAI,MAAM,EACV,WAAW,MAAM,KAChB,OAAO,CAAC,MAAM,CAahB,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,mBAAmB,GAC9B,IAAI,MAAM,EACV,MAAM,kBAAkB,EACxB,WAAW,MAAM,KAChB,OAAO,CAAC,MAAM,CAahB,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,GAC9B,IAAI,MAAM,EACV,WAAW,MAAM,KAChB,OAAO,CAAC,MAAM,CAahB,CAAC;AAIF;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,GAAI,IAAI,MAAM,EAAE,WAAW,MAAM,KAAG,OAAO,CAAC,MAAM,CAaxE,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,WAAW,GACtB,IAAI,MAAM,EACV,OAAO,gBAAgB,EACvB,WAAW,MAAM,KAChB,OAAO,CAAC,MAAM,CAahB,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,YAAY,GACvB,IAAI,MAAM,EACV,aAAa,MAAM,EACnB,WAAW,MAAM,EACjB,WAAW,MAAM,KAChB,OAAO,CAAC,MAAM,CAchB,CAAC;AAIF;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,GAAI,WAAW,MAAM,KAAG,OAAO,CAAC,MAAM,CAatE,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,GAClC,SAAS,MAAM,EACf,WAAW,MAAM,KAChB,OAAO,CAAC,MAAM,CAehB,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,GAC7B,MAAM,MAAM,EACZ,WAAW,MAAM,KAChB,OAAO,CAAC,MAAM,CAehB,CAAC"}
@@ -0,0 +1,242 @@
1
+ import { client } from "../axiosClient.js";
2
+ // ── Knowledge Base CRUD ───────────────────────────────────────────────────────
3
+ /**
4
+ * List the knowledge bases the caller can see.
5
+ * GET /api/v1/knowledge-base
6
+ * @param {String} authToken Authentication token
7
+ * @returns {Promise<object>}
8
+ */
9
+ export const listKnowledgeBases = (authToken) => {
10
+ return new Promise((resolve, reject) => {
11
+ const request = client.get(`/api/v1/knowledge-base`, {
12
+ headers: { authorization: authToken },
13
+ });
14
+ request
15
+ .then((response) => {
16
+ resolve(response.data);
17
+ })
18
+ .catch((error) => {
19
+ reject(error);
20
+ });
21
+ });
22
+ };
23
+ /**
24
+ * Create a knowledge base (the creator becomes owner automatically). Requires the
25
+ * global CREATE_KNOWLEDGE_BASE capability.
26
+ * POST /api/v1/knowledge-base
27
+ * @param {KnowledgeBaseInput} data KB metadata (at minimum `name`)
28
+ * @param {String} authToken Authentication token
29
+ * @returns {Promise<object>}
30
+ */
31
+ export const createKnowledgeBase = (data, authToken) => {
32
+ return new Promise((resolve, reject) => {
33
+ const request = client.post(`/api/v1/knowledge-base`, data, {
34
+ headers: { authorization: authToken },
35
+ });
36
+ request
37
+ .then((response) => {
38
+ resolve(response.data);
39
+ })
40
+ .catch((error) => {
41
+ reject(error);
42
+ });
43
+ });
44
+ };
45
+ /**
46
+ * Get a single knowledge base (plus stats).
47
+ * GET /api/v1/knowledge-base/:id
48
+ * @param {String} id The knowledge base id
49
+ * @param {String} authToken Authentication token
50
+ * @returns {Promise<object>}
51
+ */
52
+ export const getKnowledgeBase = (id, authToken) => {
53
+ return new Promise((resolve, reject) => {
54
+ const request = client.get(`/api/v1/knowledge-base/${id}`, {
55
+ headers: { authorization: authToken },
56
+ });
57
+ request
58
+ .then((response) => {
59
+ resolve(response.data);
60
+ })
61
+ .catch((error) => {
62
+ reject(error);
63
+ });
64
+ });
65
+ };
66
+ /**
67
+ * Update a knowledge base's metadata. Owner or editor only. Does not touch
68
+ * `access[]`, `sources`, or `createdBy` — those have their own gated flows.
69
+ * PUT /api/v1/knowledge-base/:id
70
+ * @param {String} id The knowledge base id
71
+ * @param {KnowledgeBaseInput} data The fields to update
72
+ * @param {String} authToken Authentication token
73
+ * @returns {Promise<object>}
74
+ */
75
+ export const updateKnowledgeBase = (id, data, authToken) => {
76
+ return new Promise((resolve, reject) => {
77
+ const request = client.put(`/api/v1/knowledge-base/${id}`, data, {
78
+ headers: { authorization: authToken },
79
+ });
80
+ request
81
+ .then((response) => {
82
+ resolve(response.data);
83
+ })
84
+ .catch((error) => {
85
+ reject(error);
86
+ });
87
+ });
88
+ };
89
+ /**
90
+ * Delete a knowledge base (cascades to its chunks). Owner only.
91
+ * DELETE /api/v1/knowledge-base/:id
92
+ * @param {String} id The knowledge base id
93
+ * @param {String} authToken Authentication token
94
+ * @returns {Promise<object>}
95
+ */
96
+ export const deleteKnowledgeBase = (id, authToken) => {
97
+ return new Promise((resolve, reject) => {
98
+ const request = client.delete(`/api/v1/knowledge-base/${id}`, {
99
+ headers: { authorization: authToken },
100
+ });
101
+ request
102
+ .then((response) => {
103
+ resolve(response.data);
104
+ })
105
+ .catch((error) => {
106
+ reject(error);
107
+ });
108
+ });
109
+ };
110
+ // ── KB Access Management (owner only) ─────────────────────────────────────────
111
+ /**
112
+ * List a knowledge base's access entries.
113
+ * GET /api/v1/knowledge-base/:id/access
114
+ * @param {String} id The knowledge base id
115
+ * @param {String} authToken Authentication token
116
+ * @returns {Promise<object>}
117
+ */
118
+ export const listAccess = (id, authToken) => {
119
+ return new Promise((resolve, reject) => {
120
+ const request = client.get(`/api/v1/knowledge-base/${id}/access`, {
121
+ headers: { authorization: authToken },
122
+ });
123
+ request
124
+ .then((response) => {
125
+ resolve(response.data);
126
+ })
127
+ .catch((error) => {
128
+ reject(error);
129
+ });
130
+ });
131
+ };
132
+ /**
133
+ * Grant (upsert) an access entry. Owner only. Access is keyed by
134
+ * `(subjectType, subjectId)`, so re-granting a subject that already has an entry
135
+ * updates its role — there is no separate "update role" endpoint.
136
+ * POST /api/v1/knowledge-base/:id/access
137
+ * @param {String} id The knowledge base id
138
+ * @param {AccessEntryInput} entry The `{ subjectType, subjectId, role }` grant
139
+ * @param {String} authToken Authentication token
140
+ * @returns {Promise<object>}
141
+ */
142
+ export const grantAccess = (id, entry, authToken) => {
143
+ return new Promise((resolve, reject) => {
144
+ const request = client.post(`/api/v1/knowledge-base/${id}/access`, entry, {
145
+ headers: { authorization: authToken },
146
+ });
147
+ request
148
+ .then((response) => {
149
+ resolve(response.data);
150
+ })
151
+ .catch((error) => {
152
+ reject(error);
153
+ });
154
+ });
155
+ };
156
+ /**
157
+ * Revoke a subject's access. Owner only. Keyed by `(subjectType, subjectId)` — the
158
+ * same composite key `grantAccess` upserts on. The backend refuses to remove the
159
+ * last owner.
160
+ * DELETE /api/v1/knowledge-base/:id/access
161
+ * @param {String} id The knowledge base id
162
+ * @param {String} subjectType One of `KNOWLEDGE_BASE.SUBJECT_TYPE`
163
+ * @param {String} subjectId The subject whose access is revoked
164
+ * @param {String} authToken Authentication token
165
+ * @returns {Promise<object>}
166
+ */
167
+ export const revokeAccess = (id, subjectType, subjectId, authToken) => {
168
+ return new Promise((resolve, reject) => {
169
+ const request = client.delete(`/api/v1/knowledge-base/${id}/access`, {
170
+ headers: { authorization: authToken },
171
+ data: { subjectType: subjectType, subjectId: subjectId },
172
+ });
173
+ request
174
+ .then((response) => {
175
+ resolve(response.data);
176
+ })
177
+ .catch((error) => {
178
+ reject(error);
179
+ });
180
+ });
181
+ };
182
+ // ── Compliance ────────────────────────────────────────────────────────────────
183
+ /**
184
+ * Read the tenant's compliance profile (admin only). Governs which RAG processors
185
+ * a KB may route to (e.g. HIPAA tenants → BAA-eligible processors only).
186
+ * GET /api/v1/tenants/compliance-profile
187
+ * @param {String} authToken Authentication token
188
+ * @returns {Promise<object>}
189
+ */
190
+ export const getComplianceProfile = (authToken) => {
191
+ return new Promise((resolve, reject) => {
192
+ const request = client.get(`/api/v1/tenants/compliance-profile`, {
193
+ headers: { authorization: authToken },
194
+ });
195
+ request
196
+ .then((response) => {
197
+ resolve(response.data);
198
+ })
199
+ .catch((error) => {
200
+ reject(error);
201
+ });
202
+ });
203
+ };
204
+ /**
205
+ * Update the tenant's compliance profile (admin only; not exposed via the KB UI).
206
+ * PUT /api/v1/tenants/compliance-profile
207
+ * @param {object} profile The compliance profile
208
+ * @param {String} authToken Authentication token
209
+ * @returns {Promise<object>}
210
+ */
211
+ export const updateComplianceProfile = (profile, authToken) => {
212
+ return new Promise((resolve, reject) => {
213
+ const request = client.put(`/api/v1/tenants/compliance-profile`, profile, { headers: { authorization: authToken } });
214
+ request
215
+ .then((response) => {
216
+ resolve(response.data);
217
+ })
218
+ .catch((error) => {
219
+ reject(error);
220
+ });
221
+ });
222
+ };
223
+ /**
224
+ * Trigger a GDPR subject-purge ("right to be forgotten"; admin only).
225
+ * POST /api/v1/compliance/right-to-be-forgotten
226
+ * @param {object} data The subject-purge request
227
+ * @param {String} authToken Authentication token
228
+ * @returns {Promise<object>}
229
+ */
230
+ export const rightToBeForgotten = (data, authToken) => {
231
+ return new Promise((resolve, reject) => {
232
+ const request = client.post(`/api/v1/compliance/right-to-be-forgotten`, data, { headers: { authorization: authToken } });
233
+ request
234
+ .then((response) => {
235
+ resolve(response.data);
236
+ })
237
+ .catch((error) => {
238
+ reject(error);
239
+ });
240
+ });
241
+ };
242
+ //# sourceMappingURL=knowledgeBases.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"knowledgeBases.js","sourceRoot":"","sources":["../../../../src/lib/knowledgeBase/knowledgeBases.ts"],"names":[],"mappings":"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"}