@yolk-sdk/knowledge 0.1.0-canary.78 → 0.1.0-canary.79
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/README.md +3 -0
- package/dist/chunking.d.mts +5 -5
- package/dist/chunking.d.mts.map +1 -1
- package/dist/chunking.mjs.map +1 -1
- package/dist/documents.d.mts +19 -15
- package/dist/documents.d.mts.map +1 -1
- package/dist/documents.mjs +13 -11
- package/dist/documents.mjs.map +1 -1
- package/dist/ingestion.d.mts +6 -5
- package/dist/ingestion.d.mts.map +1 -1
- package/dist/ingestion.mjs.map +1 -1
- package/dist/search.d.mts +1 -1
- package/dist/search.d.mts.map +1 -1
- package/dist/store.d.mts +14 -14
- package/dist/store.d.mts.map +1 -1
- package/dist/store.mjs.map +1 -1
- package/package.json +2 -2
- package/src/chunking.ts +8 -3
- package/src/documents.ts +18 -10
- package/src/ingestion.ts +3 -2
- package/src/store.ts +15 -13
package/README.md
CHANGED
|
@@ -69,6 +69,9 @@ construct and enforce them; the package does not infer identity, tenancy, or per
|
|
|
69
69
|
ids or kinds. The **value** `KnowledgeSearchScope` is the single-id constructor
|
|
70
70
|
(`KnowledgeSearchScope.make({ id })`, tag `KnowledgeScope`). `KnowledgeSearchScopes.make({ ids })`
|
|
71
71
|
is the non-empty-ids variant. The **type** `KnowledgeSearchScope` remains the union of both.
|
|
72
|
+
Scope and document references use the branded `KnowledgeScopeId` and `KnowledgeDocumentId`
|
|
73
|
+
(non-empty trimmed strings, same wire representation). Hosts Effect-decode raw external/persisted
|
|
74
|
+
ids at their boundary and use `.make` for trusted constants and minted values.
|
|
72
75
|
|
|
73
76
|
## Subpaths
|
|
74
77
|
|
package/dist/chunking.d.mts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { KnowledgeChunk, KnowledgeMetadata } from "./documents.mjs";
|
|
1
|
+
import { KnowledgeChunk, KnowledgeDocumentId, KnowledgeMetadata, KnowledgeScopeId } from "./documents.mjs";
|
|
2
2
|
import { KnowledgeChunkingError } from "./errors.mjs";
|
|
3
3
|
import { Context, Effect, Layer } from "effect";
|
|
4
4
|
|
|
5
5
|
//#region src/chunking.d.ts
|
|
6
6
|
type ChunkKnowledgeDocumentInput = {
|
|
7
|
-
readonly scopeId:
|
|
8
|
-
readonly documentId:
|
|
7
|
+
readonly scopeId: KnowledgeScopeId;
|
|
8
|
+
readonly documentId: KnowledgeDocumentId;
|
|
9
9
|
readonly content: string;
|
|
10
10
|
readonly maxTokens?: number;
|
|
11
11
|
readonly metadata?: KnowledgeMetadata;
|
|
@@ -18,8 +18,8 @@ declare class KnowledgeChunker extends KnowledgeChunker_base {}
|
|
|
18
18
|
declare const countKnowledgeChunkTokens: (text: string) => number;
|
|
19
19
|
declare const chunkKnowledgeText: (input: ChunkKnowledgeDocumentInput, maxTokens: number) => Effect.Effect<{
|
|
20
20
|
id: string;
|
|
21
|
-
scopeId: string
|
|
22
|
-
documentId: string
|
|
21
|
+
scopeId: string & import("effect/Brand").Brand<"KnowledgeScopeId">;
|
|
22
|
+
documentId: string & import("effect/Brand").Brand<"KnowledgeDocumentId">;
|
|
23
23
|
content: string;
|
|
24
24
|
position: number;
|
|
25
25
|
tokenCount: number;
|
package/dist/chunking.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chunking.d.mts","names":[],"sources":["../src/chunking.ts"],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"chunking.d.mts","names":[],"sources":["../src/chunking.ts"],"mappings":";;;;;KAgBY,2BAAA;EAAA,SACD,OAAA,EAAS,gBAAA;EAAA,SACT,UAAA,EAAY,mBAAA;EAAA,SACZ,OAAA;EAAA,SACA,SAAA;EAAA,SACA,QAAA,GAAW,iBAAA;AAAA;AAAA,KAGV,mBAAA;EAAA,SACD,KAAA,GACP,KAAA,EAAO,2BAAA,KACJ,MAAA,CAAO,MAAA,CAAO,aAAA,CAAc,cAAA,GAAiB,sBAAA;AAAA;AAAA,cACnD,qBAAA;cAEY,gBAAA,SAAyB,qBAErC;AAAA,cAEY,yBAAA,GAA6B,IAAY;AAAA,cAqHzC,kBAAA,GAAsB,KAAA,EAAO,2BAAA,EAA6B,SAAA,aAAiB,MAAA,CAAA,MAAA;;;;;;;;;;;cAkC3E,2BAAA,GAA+B,KAAA;EAAA,SACjC,SAAA;AAAA,MACP,mBAEF;AAAA,cAEW,2BAAA,GACX,KAAA;EAAA,SAAkB,SAAA;AAAA,MAAwC,KAAA,CAAA,KAAA,CAAA,gBAAA"}
|
package/dist/chunking.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chunking.mjs","names":[],"sources":["../src/chunking.ts"],"sourcesContent":["import { Context, Effect, Layer } from 'effect'\nimport { countTokens, decode, encode } from 'gpt-tokenizer/encoding/o200k_base'\nimport type {
|
|
1
|
+
{"version":3,"file":"chunking.mjs","names":[],"sources":["../src/chunking.ts"],"sourcesContent":["import { Context, Effect, Layer } from 'effect'\nimport { countTokens, decode, encode } from 'gpt-tokenizer/encoding/o200k_base'\nimport type {\n KnowledgeChunk,\n KnowledgeDocumentId,\n KnowledgeMetadata,\n KnowledgeScopeId\n} from './documents.ts'\nimport { KnowledgeChunkingError } from './errors.ts'\n\nconst SENTENCE_PATTERN = /[^.!?]+[.!?]+(?:[\"')\\]]+)?\\s*|[^.!?]+$/g\n\nconst PARAGRAPH_BREAK_PATTERN = /(\\n{2,})/\n\nconst WORD_PATTERN = /\\S+\\s*/g\n\nexport type ChunkKnowledgeDocumentInput = {\n readonly scopeId: KnowledgeScopeId\n readonly documentId: KnowledgeDocumentId\n readonly content: string\n readonly maxTokens?: number\n readonly metadata?: KnowledgeMetadata\n}\n\nexport type KnowledgeChunkerApi = {\n readonly chunk: (\n input: ChunkKnowledgeDocumentInput\n ) => Effect.Effect<ReadonlyArray<KnowledgeChunk>, KnowledgeChunkingError>\n}\n\nexport class KnowledgeChunker extends Context.Service<KnowledgeChunker, KnowledgeChunkerApi>()(\n '@yolk-sdk/knowledge/KnowledgeChunker'\n) {}\n\nexport const countKnowledgeChunkTokens = (text: string) => countTokens(text)\n\nconst sanitizeText = (text: string) =>\n text\n .replace(/\\r\\n/g, '\\n')\n .replace(/[\\t ]+/g, ' ')\n .replace(/\\n{3,}/g, '\\n\\n')\n .trim()\n\nconst splitSentences = (text: string) =>\n text\n .split(PARAGRAPH_BREAK_PATTERN)\n .flatMap(part => {\n if (part.length === 0) {\n return []\n }\n\n if (/^\\n{2,}$/.test(part)) {\n return ['\\n\\n']\n }\n\n return part.match(SENTENCE_PATTERN) ?? [part]\n })\n .filter(unit => unit.length > 0)\n\nconst splitEncodedTokens = (text: string, maxTokens: number) => {\n const tokens = encode(text)\n\n return Array.from({ length: Math.ceil(tokens.length / maxTokens) }, (_, index) =>\n decode(tokens.slice(index * maxTokens, index * maxTokens + maxTokens)).trim()\n ).filter(chunk => chunk.length > 0)\n}\n\nconst splitOversizedUnit = (text: string, maxTokens: number) => {\n const words = text.match(WORD_PATTERN) ?? []\n const chunks: string[] = []\n let current = ''\n let currentTokenCount = 0\n\n for (const word of words) {\n const wordTokenCount = countTokens(word)\n\n if (wordTokenCount > maxTokens) {\n const currentChunk = current.trim()\n\n if (currentChunk.length > 0) {\n chunks.push(currentChunk)\n }\n\n chunks.push(...splitEncodedTokens(word, maxTokens))\n current = ''\n currentTokenCount = 0\n continue\n }\n\n if (currentTokenCount > 0 && currentTokenCount + wordTokenCount > maxTokens) {\n const currentChunk = current.trim()\n\n if (currentChunk.length > 0) {\n chunks.push(currentChunk)\n }\n\n current = word\n currentTokenCount = wordTokenCount\n continue\n }\n\n current = `${current}${word}`\n currentTokenCount += wordTokenCount\n }\n\n const finalChunk = current.trim()\n\n if (finalChunk.length > 0) {\n chunks.push(finalChunk)\n }\n\n return chunks\n}\n\nconst splitUnitsBySize = (units: ReadonlyArray<string>, maxTokens: number) =>\n units.flatMap(unit =>\n countTokens(unit) <= maxTokens ? [unit] : splitOversizedUnit(unit, maxTokens)\n )\n\nconst buildChunkContents = (units: ReadonlyArray<string>, maxTokens: number) => {\n const chunks: string[] = []\n let current = ''\n let currentTokenCount = 0\n\n const pushCurrent = () => {\n const content = current.trim()\n\n if (content.length > 0) {\n chunks.push(content)\n }\n }\n\n for (const unit of units) {\n const unitTokenCount = countTokens(unit)\n\n if (currentTokenCount > 0 && currentTokenCount + unitTokenCount > maxTokens) {\n pushCurrent()\n current = unit\n currentTokenCount = unitTokenCount\n continue\n }\n\n current = `${current}${unit}`\n currentTokenCount += unitTokenCount\n }\n\n pushCurrent()\n\n return chunks\n}\n\nexport const chunkKnowledgeText = (input: ChunkKnowledgeDocumentInput, maxTokens: number) =>\n Effect.gen(function* () {\n if (!Number.isInteger(maxTokens) || maxTokens < 1) {\n return yield* Effect.fail(\n new KnowledgeChunkingError({ message: 'Chunk maxTokens must be a positive integer' })\n )\n }\n\n const sanitized = sanitizeText(input.content)\n\n if (sanitized.length === 0) {\n return yield* Effect.fail(\n new KnowledgeChunkingError({ message: 'Cannot chunk empty content' })\n )\n }\n\n const units = splitUnitsBySize(splitSentences(sanitized), maxTokens)\n const contents = buildChunkContents(units, maxTokens)\n\n if (contents.length === 0) {\n return yield* Effect.fail(new KnowledgeChunkingError({ message: 'No chunks produced' }))\n }\n\n return contents.map((content, position) => ({\n id: `${input.documentId}:chunk:${position}`,\n scopeId: input.scopeId,\n documentId: input.documentId,\n content,\n position,\n tokenCount: countTokens(content),\n metadata: input.metadata\n })) satisfies ReadonlyArray<KnowledgeChunk>\n })\n\nexport const makeDefaultKnowledgeChunker = (input: {\n readonly maxTokens: number\n}): KnowledgeChunkerApi => ({\n chunk: document => chunkKnowledgeText(document, document.maxTokens ?? input.maxTokens)\n})\n\nexport const DefaultKnowledgeChunkerLive = (\n input: { readonly maxTokens: number } = { maxTokens: 512 }\n) => Layer.succeed(KnowledgeChunker, makeDefaultKnowledgeChunker(input))\n"],"mappings":"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"}
|
package/dist/documents.d.mts
CHANGED
|
@@ -10,13 +10,17 @@ declare const KnowledgeAvailabilitySchema: Schema.Literals<readonly ["pinned", "
|
|
|
10
10
|
type KnowledgeAvailability = Schema.Schema.Type<typeof KnowledgeAvailabilitySchema>;
|
|
11
11
|
declare const KnowledgeDocumentStatusSchema: Schema.Literals<readonly ["processing", "ready", "error"]>;
|
|
12
12
|
type KnowledgeDocumentStatus = Schema.Schema.Type<typeof KnowledgeDocumentStatusSchema>;
|
|
13
|
+
declare const KnowledgeScopeId: Schema.brand<Schema.Trimmed, "KnowledgeScopeId">;
|
|
14
|
+
type KnowledgeScopeId = typeof KnowledgeScopeId.Type;
|
|
15
|
+
declare const KnowledgeDocumentId: Schema.brand<Schema.Trimmed, "KnowledgeDocumentId">;
|
|
16
|
+
type KnowledgeDocumentId = typeof KnowledgeDocumentId.Type;
|
|
13
17
|
declare const KnowledgeScopeSchema: Schema.Struct<{
|
|
14
|
-
readonly id: Schema.Trimmed
|
|
18
|
+
readonly id: Schema.brand<Schema.Trimmed, "KnowledgeScopeId">;
|
|
15
19
|
readonly kind: Schema.optional<Schema.Trimmed>;
|
|
16
20
|
}>;
|
|
17
21
|
type KnowledgeScope = Schema.Schema.Type<typeof KnowledgeScopeSchema>;
|
|
18
22
|
declare const KnowledgeDocumentSchema: Schema.Struct<{
|
|
19
|
-
readonly id: Schema.Trimmed
|
|
23
|
+
readonly id: Schema.brand<Schema.Trimmed, "KnowledgeDocumentId">;
|
|
20
24
|
readonly slug: Schema.Trimmed;
|
|
21
25
|
readonly title: Schema.Trimmed;
|
|
22
26
|
readonly purpose: Schema.Trimmed;
|
|
@@ -34,7 +38,7 @@ declare const KnowledgeDocumentSchema: Schema.Struct<{
|
|
|
34
38
|
type KnowledgeDocument = Schema.Schema.Type<typeof KnowledgeDocumentSchema>;
|
|
35
39
|
declare const CreateKnowledgeDocumentInputSchema: Schema.Struct<{
|
|
36
40
|
readonly scope: Schema.Struct<{
|
|
37
|
-
readonly id: Schema.Trimmed
|
|
41
|
+
readonly id: Schema.brand<Schema.Trimmed, "KnowledgeScopeId">;
|
|
38
42
|
readonly kind: Schema.optional<Schema.Trimmed>;
|
|
39
43
|
}>;
|
|
40
44
|
readonly slug: Schema.Trimmed;
|
|
@@ -49,10 +53,10 @@ declare const CreateKnowledgeDocumentInputSchema: Schema.Struct<{
|
|
|
49
53
|
type CreateKnowledgeDocumentInput = Schema.Schema.Type<typeof CreateKnowledgeDocumentInputSchema>;
|
|
50
54
|
declare const UpdateKnowledgeDocumentInputSchema: Schema.Struct<{
|
|
51
55
|
readonly scope: Schema.Struct<{
|
|
52
|
-
readonly id: Schema.Trimmed
|
|
56
|
+
readonly id: Schema.brand<Schema.Trimmed, "KnowledgeScopeId">;
|
|
53
57
|
readonly kind: Schema.optional<Schema.Trimmed>;
|
|
54
58
|
}>;
|
|
55
|
-
readonly id: Schema.Trimmed
|
|
59
|
+
readonly id: Schema.brand<Schema.Trimmed, "KnowledgeDocumentId">;
|
|
56
60
|
readonly slug: Schema.optional<Schema.Trimmed>;
|
|
57
61
|
readonly title: Schema.optional<Schema.Trimmed>;
|
|
58
62
|
readonly purpose: Schema.optional<Schema.Trimmed>;
|
|
@@ -68,7 +72,7 @@ declare const UpdateKnowledgeDocumentInputSchema: Schema.Struct<{
|
|
|
68
72
|
type UpdateKnowledgeDocumentInput = Schema.Schema.Type<typeof UpdateKnowledgeDocumentInputSchema>;
|
|
69
73
|
declare const KnowledgeFileSchema: Schema.Struct<{
|
|
70
74
|
readonly id: Schema.Trimmed;
|
|
71
|
-
readonly documentId: Schema.Trimmed
|
|
75
|
+
readonly documentId: Schema.brand<Schema.Trimmed, "KnowledgeDocumentId">;
|
|
72
76
|
readonly storageKey: Schema.Trimmed;
|
|
73
77
|
readonly mediaType: Schema.optional<Schema.Trimmed>;
|
|
74
78
|
readonly byteSize: Schema.optional<Schema.Int>;
|
|
@@ -79,8 +83,8 @@ declare const KnowledgeFileSchema: Schema.Struct<{
|
|
|
79
83
|
type KnowledgeFile = Schema.Schema.Type<typeof KnowledgeFileSchema>;
|
|
80
84
|
declare const KnowledgeChunkSchema: Schema.Struct<{
|
|
81
85
|
readonly id: Schema.Trimmed;
|
|
82
|
-
readonly scopeId: Schema.Trimmed
|
|
83
|
-
readonly documentId: Schema.Trimmed
|
|
86
|
+
readonly scopeId: Schema.brand<Schema.Trimmed, "KnowledgeScopeId">;
|
|
87
|
+
readonly documentId: Schema.brand<Schema.Trimmed, "KnowledgeDocumentId">;
|
|
84
88
|
readonly content: Schema.Trimmed;
|
|
85
89
|
readonly position: Schema.Int;
|
|
86
90
|
readonly tokenCount: Schema.Int;
|
|
@@ -88,15 +92,15 @@ declare const KnowledgeChunkSchema: Schema.Struct<{
|
|
|
88
92
|
}>;
|
|
89
93
|
type KnowledgeChunk = Schema.Schema.Type<typeof KnowledgeChunkSchema>;
|
|
90
94
|
declare const KnowledgeSearchScope: Schema.TaggedStruct<"KnowledgeScope", {
|
|
91
|
-
readonly id: Schema.Trimmed
|
|
95
|
+
readonly id: Schema.brand<Schema.Trimmed, "KnowledgeScopeId">;
|
|
92
96
|
}>;
|
|
93
97
|
declare const KnowledgeSearchScopes: Schema.TaggedStruct<"KnowledgeScopes", {
|
|
94
|
-
readonly ids: Schema.NonEmptyArray<Schema.Trimmed
|
|
98
|
+
readonly ids: Schema.NonEmptyArray<Schema.brand<Schema.Trimmed, "KnowledgeScopeId">>;
|
|
95
99
|
}>;
|
|
96
100
|
declare const KnowledgeSearchScopeSchema: Schema.Union<readonly [Schema.TaggedStruct<"KnowledgeScope", {
|
|
97
|
-
readonly id: Schema.Trimmed
|
|
101
|
+
readonly id: Schema.brand<Schema.Trimmed, "KnowledgeScopeId">;
|
|
98
102
|
}>, Schema.TaggedStruct<"KnowledgeScopes", {
|
|
99
|
-
readonly ids: Schema.NonEmptyArray<Schema.Trimmed
|
|
103
|
+
readonly ids: Schema.NonEmptyArray<Schema.brand<Schema.Trimmed, "KnowledgeScopeId">>;
|
|
100
104
|
}>]>;
|
|
101
105
|
type KnowledgeSearchScope = typeof KnowledgeSearchScopeSchema.Type;
|
|
102
106
|
declare const KnowledgeFileSource: Schema.TaggedStruct<"File", {
|
|
@@ -121,8 +125,8 @@ declare const KnowledgeSourceSchema: Schema.Union<readonly [Schema.TaggedStruct<
|
|
|
121
125
|
}>]>;
|
|
122
126
|
type KnowledgeSource = typeof KnowledgeSourceSchema.Type;
|
|
123
127
|
declare const IndexedKnowledgeDocumentSchema: Schema.Struct<{
|
|
124
|
-
readonly id: Schema.Trimmed
|
|
125
|
-
readonly scopeId: Schema.Trimmed
|
|
128
|
+
readonly id: Schema.brand<Schema.Trimmed, "KnowledgeDocumentId">;
|
|
129
|
+
readonly scopeId: Schema.brand<Schema.Trimmed, "KnowledgeScopeId">;
|
|
126
130
|
readonly source: Schema.Union<readonly [Schema.TaggedStruct<"File", {
|
|
127
131
|
readonly ref: Schema.Trimmed;
|
|
128
132
|
readonly name: Schema.optional<Schema.Trimmed>;
|
|
@@ -151,5 +155,5 @@ declare const ExtractedKnowledgeDocumentSchema: Schema.Struct<{
|
|
|
151
155
|
type ExtractedKnowledgeDocument = Schema.Schema.Type<typeof ExtractedKnowledgeDocumentSchema>;
|
|
152
156
|
declare const defaultKnowledgeChunkMaxTokens = 512;
|
|
153
157
|
//#endregion
|
|
154
|
-
export { CreateKnowledgeDocumentInput, CreateKnowledgeDocumentInputSchema, ExtractedKnowledgeDocument, ExtractedKnowledgeDocumentSchema, IndexedKnowledgeDocument, IndexedKnowledgeDocumentSchema, KnowledgeAvailability, KnowledgeAvailabilitySchema, KnowledgeChunk, KnowledgeChunkSchema, KnowledgeDocument, KnowledgeDocumentSchema, KnowledgeDocumentStatus, KnowledgeDocumentStatusSchema, KnowledgeFile, KnowledgeFileSchema, KnowledgeFileSource, KnowledgeMetadata, KnowledgeMetadataSchema, KnowledgeScope, KnowledgeScopeSchema, KnowledgeSearchScope, KnowledgeSearchScopeSchema, KnowledgeSearchScopes, KnowledgeSource, KnowledgeSourceSchema, KnowledgeTextSource, KnowledgeUrlSource, NonEmptyTrimmedString, NonNegativeInteger, PositiveInteger, UpdateKnowledgeDocumentInput, UpdateKnowledgeDocumentInputSchema, defaultKnowledgeChunkMaxTokens };
|
|
158
|
+
export { CreateKnowledgeDocumentInput, CreateKnowledgeDocumentInputSchema, ExtractedKnowledgeDocument, ExtractedKnowledgeDocumentSchema, IndexedKnowledgeDocument, IndexedKnowledgeDocumentSchema, KnowledgeAvailability, KnowledgeAvailabilitySchema, KnowledgeChunk, KnowledgeChunkSchema, KnowledgeDocument, KnowledgeDocumentId, KnowledgeDocumentSchema, KnowledgeDocumentStatus, KnowledgeDocumentStatusSchema, KnowledgeFile, KnowledgeFileSchema, KnowledgeFileSource, KnowledgeMetadata, KnowledgeMetadataSchema, KnowledgeScope, KnowledgeScopeId, KnowledgeScopeSchema, KnowledgeSearchScope, KnowledgeSearchScopeSchema, KnowledgeSearchScopes, KnowledgeSource, KnowledgeSourceSchema, KnowledgeTextSource, KnowledgeUrlSource, NonEmptyTrimmedString, NonNegativeInteger, PositiveInteger, UpdateKnowledgeDocumentInput, UpdateKnowledgeDocumentInputSchema, defaultKnowledgeChunkMaxTokens };
|
|
155
159
|
//# sourceMappingURL=documents.d.mts.map
|
package/dist/documents.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"documents.d.mts","names":[],"sources":["../src/documents.ts"],"mappings":";;;cAEa,qBAAA,EAAqB,MAAA,CAAA,OAAyD;AAAA,cAE9E,kBAAA,EAAkB,MAAA,CAAA,GAAkE;AAAA,cAEpF,eAAA,EAAe,MAAA,CAAA,GAAyD;AAAA,cAExE,uBAAA,EAAuB,MAAA,CAAA,OAAA,CAAA,MAAA,CAAA,MAAA,EAAA,MAAA,CAAA,OAAA;AAAA,KAExB,iBAAA,GAAoB,MAAA,CAAO,MAAA,CAAO,IAAI,QAAQ,uBAAA;AAAA,cAE7C,2BAAA,EAA2B,MAAA,CAAA,QAAA;AAAA,KAE5B,qBAAA,GAAwB,MAAA,CAAO,MAAA,CAAO,IAAI,QAAQ,2BAAA;AAAA,cAEjD,6BAAA,EAA6B,MAAA,CAAA,QAAA;AAAA,KAE9B,uBAAA,GAA0B,MAAA,CAAO,MAAA,CAAO,IAAI,QAAQ,6BAAA;AAAA,cAEnD,oBAAA,EAAoB,MAAA,CAAA,MAAA;EAAA;;;KAKrB,cAAA,GAAiB,MAAA,CAAO,MAAA,CAAO,IAAI,QAAQ,oBAAA;AAAA,cAE1C,uBAAA,EAAuB,MAAA,CAAA,MAAA;EAAA;;;;;;;;;;;;;;;KAiBxB,iBAAA,GAAoB,MAAA,CAAO,MAAA,CAAO,IAAI,QAAQ,uBAAA;AAAA,cAE7C,kCAAA,EAAkC,MAAA,CAAA,MAAA;EAAA;;;;;;;;;;;;;KAYnC,4BAAA,GAA+B,MAAA,CAAO,MAAA,CAAO,IAAI,QACpD,kCAAA;AAAA,cAGI,kCAAA,EAAkC,MAAA,CAAA,MAAA;EAAA;;;;;;;;;;;;;;;;;KAgBnC,4BAAA,GAA+B,MAAA,CAAO,MAAA,CAAO,IAAI,QACpD,kCAAA;AAAA,cAGI,mBAAA,EAAmB,MAAA,CAAA,MAAA;EAAA;;;;;;;;;KAWpB,aAAA,GAAgB,MAAA,CAAO,MAAA,CAAO,IAAI,QAAQ,mBAAA;AAAA,cAEzC,oBAAA,EAAoB,MAAA,CAAA,MAAA;EAAA;;;;;;;;KAUrB,cAAA,GAAiB,MAAA,CAAO,MAAA,CAAO,IAAI,QAAQ,oBAAA;AAAA,cAE1C,oBAAA,EAAoB,MAAA,CAAA,YAAA;EAAA,
|
|
1
|
+
{"version":3,"file":"documents.d.mts","names":[],"sources":["../src/documents.ts"],"mappings":";;;cAEa,qBAAA,EAAqB,MAAA,CAAA,OAAyD;AAAA,cAE9E,kBAAA,EAAkB,MAAA,CAAA,GAAkE;AAAA,cAEpF,eAAA,EAAe,MAAA,CAAA,GAAyD;AAAA,cAExE,uBAAA,EAAuB,MAAA,CAAA,OAAA,CAAA,MAAA,CAAA,MAAA,EAAA,MAAA,CAAA,OAAA;AAAA,KAExB,iBAAA,GAAoB,MAAA,CAAO,MAAA,CAAO,IAAI,QAAQ,uBAAA;AAAA,cAE7C,2BAAA,EAA2B,MAAA,CAAA,QAAA;AAAA,KAE5B,qBAAA,GAAwB,MAAA,CAAO,MAAA,CAAO,IAAI,QAAQ,2BAAA;AAAA,cAEjD,6BAAA,EAA6B,MAAA,CAAA,QAAA;AAAA,KAE9B,uBAAA,GAA0B,MAAA,CAAO,MAAA,CAAO,IAAI,QAAQ,6BAAA;AAAA,cAEnD,gBAAA,EAAgB,MAAA,CAAA,KAAA,CAAA,MAAA,CAAA,OAAA;AAAA,KAEjB,gBAAA,UAA0B,gBAAA,CAAiB,IAAI;AAAA,cAE9C,mBAAA,EAAmB,MAAA,CAAA,KAAA,CAAA,MAAA,CAAA,OAAA;AAAA,KAEpB,mBAAA,UAA6B,mBAAA,CAAoB,IAAI;AAAA,cAEpD,oBAAA,EAAoB,MAAA,CAAA,MAAA;EAAA;;;KAKrB,cAAA,GAAiB,MAAA,CAAO,MAAA,CAAO,IAAI,QAAQ,oBAAA;AAAA,cAE1C,uBAAA,EAAuB,MAAA,CAAA,MAAA;EAAA;;;;;;;;;;;;;;;KAiBxB,iBAAA,GAAoB,MAAA,CAAO,MAAA,CAAO,IAAI,QAAQ,uBAAA;AAAA,cAE7C,kCAAA,EAAkC,MAAA,CAAA,MAAA;EAAA;;;;;;;;;;;;;KAYnC,4BAAA,GAA+B,MAAA,CAAO,MAAA,CAAO,IAAI,QACpD,kCAAA;AAAA,cAGI,kCAAA,EAAkC,MAAA,CAAA,MAAA;EAAA;;;;;;;;;;;;;;;;;KAgBnC,4BAAA,GAA+B,MAAA,CAAO,MAAA,CAAO,IAAI,QACpD,kCAAA;AAAA,cAGI,mBAAA,EAAmB,MAAA,CAAA,MAAA;EAAA;;;;;;;;;KAWpB,aAAA,GAAgB,MAAA,CAAO,MAAA,CAAO,IAAI,QAAQ,mBAAA;AAAA,cAEzC,oBAAA,EAAoB,MAAA,CAAA,MAAA;EAAA;;;;;;;;KAUrB,cAAA,GAAiB,MAAA,CAAO,MAAA,CAAO,IAAI,QAAQ,oBAAA;AAAA,cAE1C,oBAAA,EAAoB,MAAA,CAAA,YAAA;EAAA;;cAIpB,qBAAA,EAAqB,MAAA,CAAA,YAAA;EAAA;;cAIrB,0BAAA,EAA0B,MAAA,CAAA,KAAA,WAAA,MAAA,CAAA,YAAA;EAAA;;;;KAK3B,oBAAA,UAA8B,0BAAA,CAA2B,IAAI;AAAA,cAE5D,mBAAA,EAAmB,MAAA,CAAA,YAAA;EAAA;;;;cAMnB,kBAAA,EAAkB,MAAA,CAAA,YAAA;EAAA,cAE7B,MAAA,CAAA,OAAA;AAAA;AAAA,cAEW,mBAAA,EAAmB,MAAA,CAAA,YAAA;EAAA;;cAInB,qBAAA,EAAqB,MAAA,CAAA,KAAA,WAAA,MAAA,CAAA,YAAA;EAAA;;;;;;;;KAMtB,eAAA,UAAyB,qBAAA,CAAsB,IAAI;AAAA,cAElD,8BAAA,EAA8B,MAAA,CAAA,MAAA;EAAA;;;;;;;;;;;;;;;;;;;;KAc/B,wBAAA,GAA2B,MAAA,CAAO,MAAA,CAAO,IAAI,QAAQ,8BAAA;AAAA,cAEpD,gCAAA,EAAgC,MAAA,CAAA,MAAA;EAAA;;;;;KAOjC,0BAAA,GAA6B,MAAA,CAAO,MAAA,CAAO,IAAI,QAAQ,gCAAA;AAAA,cAEtD,8BAAA"}
|
package/dist/documents.mjs
CHANGED
|
@@ -14,12 +14,14 @@ const KnowledgeDocumentStatusSchema = Schema.Literals([
|
|
|
14
14
|
"ready",
|
|
15
15
|
"error"
|
|
16
16
|
]);
|
|
17
|
+
const KnowledgeScopeId = NonEmptyTrimmedString.pipe(Schema.brand("KnowledgeScopeId"));
|
|
18
|
+
const KnowledgeDocumentId = NonEmptyTrimmedString.pipe(Schema.brand("KnowledgeDocumentId"));
|
|
17
19
|
const KnowledgeScopeSchema = Schema.Struct({
|
|
18
|
-
id:
|
|
20
|
+
id: KnowledgeScopeId,
|
|
19
21
|
kind: Schema.optional(NonEmptyTrimmedString)
|
|
20
22
|
});
|
|
21
23
|
const KnowledgeDocumentSchema = Schema.Struct({
|
|
22
|
-
id:
|
|
24
|
+
id: KnowledgeDocumentId,
|
|
23
25
|
slug: NonEmptyTrimmedString,
|
|
24
26
|
title: NonEmptyTrimmedString,
|
|
25
27
|
purpose: NonEmptyTrimmedString,
|
|
@@ -47,7 +49,7 @@ const CreateKnowledgeDocumentInputSchema = Schema.Struct({
|
|
|
47
49
|
});
|
|
48
50
|
const UpdateKnowledgeDocumentInputSchema = Schema.Struct({
|
|
49
51
|
scope: KnowledgeScopeSchema,
|
|
50
|
-
id:
|
|
52
|
+
id: KnowledgeDocumentId,
|
|
51
53
|
slug: Schema.optional(NonEmptyTrimmedString),
|
|
52
54
|
title: Schema.optional(NonEmptyTrimmedString),
|
|
53
55
|
purpose: Schema.optional(NonEmptyTrimmedString),
|
|
@@ -62,7 +64,7 @@ const UpdateKnowledgeDocumentInputSchema = Schema.Struct({
|
|
|
62
64
|
});
|
|
63
65
|
const KnowledgeFileSchema = Schema.Struct({
|
|
64
66
|
id: NonEmptyTrimmedString,
|
|
65
|
-
documentId:
|
|
67
|
+
documentId: KnowledgeDocumentId,
|
|
66
68
|
storageKey: NonEmptyTrimmedString,
|
|
67
69
|
mediaType: Schema.optional(NonEmptyTrimmedString),
|
|
68
70
|
byteSize: Schema.optional(NonNegativeInteger),
|
|
@@ -72,15 +74,15 @@ const KnowledgeFileSchema = Schema.Struct({
|
|
|
72
74
|
});
|
|
73
75
|
const KnowledgeChunkSchema = Schema.Struct({
|
|
74
76
|
id: NonEmptyTrimmedString,
|
|
75
|
-
scopeId:
|
|
76
|
-
documentId:
|
|
77
|
+
scopeId: KnowledgeScopeId,
|
|
78
|
+
documentId: KnowledgeDocumentId,
|
|
77
79
|
content: NonEmptyTrimmedString,
|
|
78
80
|
position: NonNegativeInteger,
|
|
79
81
|
tokenCount: PositiveInteger,
|
|
80
82
|
metadata: Schema.optional(KnowledgeMetadataSchema)
|
|
81
83
|
});
|
|
82
|
-
const KnowledgeSearchScope = Schema.TaggedStruct("KnowledgeScope", { id:
|
|
83
|
-
const KnowledgeSearchScopes = Schema.TaggedStruct("KnowledgeScopes", { ids: Schema.NonEmptyArray(
|
|
84
|
+
const KnowledgeSearchScope = Schema.TaggedStruct("KnowledgeScope", { id: KnowledgeScopeId });
|
|
85
|
+
const KnowledgeSearchScopes = Schema.TaggedStruct("KnowledgeScopes", { ids: Schema.NonEmptyArray(KnowledgeScopeId) });
|
|
84
86
|
const KnowledgeSearchScopeSchema = Schema.Union([KnowledgeSearchScope, KnowledgeSearchScopes]);
|
|
85
87
|
const KnowledgeFileSource = Schema.TaggedStruct("File", {
|
|
86
88
|
ref: NonEmptyTrimmedString,
|
|
@@ -95,8 +97,8 @@ const KnowledgeSourceSchema = Schema.Union([
|
|
|
95
97
|
KnowledgeTextSource
|
|
96
98
|
]);
|
|
97
99
|
const IndexedKnowledgeDocumentSchema = Schema.Struct({
|
|
98
|
-
id:
|
|
99
|
-
scopeId:
|
|
100
|
+
id: KnowledgeDocumentId,
|
|
101
|
+
scopeId: KnowledgeScopeId,
|
|
100
102
|
source: KnowledgeSourceSchema,
|
|
101
103
|
status: KnowledgeDocumentStatusSchema,
|
|
102
104
|
title: Schema.optional(NonEmptyTrimmedString),
|
|
@@ -115,6 +117,6 @@ const ExtractedKnowledgeDocumentSchema = Schema.Struct({
|
|
|
115
117
|
});
|
|
116
118
|
const defaultKnowledgeChunkMaxTokens = 512;
|
|
117
119
|
//#endregion
|
|
118
|
-
export { CreateKnowledgeDocumentInputSchema, ExtractedKnowledgeDocumentSchema, IndexedKnowledgeDocumentSchema, KnowledgeAvailabilitySchema, KnowledgeChunkSchema, KnowledgeDocumentSchema, KnowledgeDocumentStatusSchema, KnowledgeFileSchema, KnowledgeFileSource, KnowledgeMetadataSchema, KnowledgeScopeSchema, KnowledgeSearchScope, KnowledgeSearchScopeSchema, KnowledgeSearchScopes, KnowledgeSourceSchema, KnowledgeTextSource, KnowledgeUrlSource, NonEmptyTrimmedString, NonNegativeInteger, PositiveInteger, UpdateKnowledgeDocumentInputSchema, defaultKnowledgeChunkMaxTokens };
|
|
120
|
+
export { CreateKnowledgeDocumentInputSchema, ExtractedKnowledgeDocumentSchema, IndexedKnowledgeDocumentSchema, KnowledgeAvailabilitySchema, KnowledgeChunkSchema, KnowledgeDocumentId, KnowledgeDocumentSchema, KnowledgeDocumentStatusSchema, KnowledgeFileSchema, KnowledgeFileSource, KnowledgeMetadataSchema, KnowledgeScopeId, KnowledgeScopeSchema, KnowledgeSearchScope, KnowledgeSearchScopeSchema, KnowledgeSearchScopes, KnowledgeSourceSchema, KnowledgeTextSource, KnowledgeUrlSource, NonEmptyTrimmedString, NonNegativeInteger, PositiveInteger, UpdateKnowledgeDocumentInputSchema, defaultKnowledgeChunkMaxTokens };
|
|
119
121
|
|
|
120
122
|
//# sourceMappingURL=documents.mjs.map
|
package/dist/documents.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"documents.mjs","names":[],"sources":["../src/documents.ts"],"sourcesContent":["import * as Schema from 'effect/Schema'\n\nexport const NonEmptyTrimmedString = Schema.Trimmed.pipe(Schema.check(Schema.isNonEmpty()))\n\nexport const NonNegativeInteger = Schema.Int.pipe(Schema.check(Schema.isGreaterThanOrEqualTo(0)))\n\nexport const PositiveInteger = Schema.Int.pipe(Schema.check(Schema.isGreaterThan(0)))\n\nexport const KnowledgeMetadataSchema = Schema.Record(Schema.String, Schema.Unknown)\n\nexport type KnowledgeMetadata = Schema.Schema.Type<typeof KnowledgeMetadataSchema>\n\nexport const KnowledgeAvailabilitySchema = Schema.Literals(['pinned', 'searchable', 'archived'])\n\nexport type KnowledgeAvailability = Schema.Schema.Type<typeof KnowledgeAvailabilitySchema>\n\nexport const KnowledgeDocumentStatusSchema = Schema.Literals(['processing', 'ready', 'error'])\n\nexport type KnowledgeDocumentStatus = Schema.Schema.Type<typeof KnowledgeDocumentStatusSchema>\n\nexport const KnowledgeScopeSchema = Schema.Struct({\n id:
|
|
1
|
+
{"version":3,"file":"documents.mjs","names":[],"sources":["../src/documents.ts"],"sourcesContent":["import * as Schema from 'effect/Schema'\n\nexport const NonEmptyTrimmedString = Schema.Trimmed.pipe(Schema.check(Schema.isNonEmpty()))\n\nexport const NonNegativeInteger = Schema.Int.pipe(Schema.check(Schema.isGreaterThanOrEqualTo(0)))\n\nexport const PositiveInteger = Schema.Int.pipe(Schema.check(Schema.isGreaterThan(0)))\n\nexport const KnowledgeMetadataSchema = Schema.Record(Schema.String, Schema.Unknown)\n\nexport type KnowledgeMetadata = Schema.Schema.Type<typeof KnowledgeMetadataSchema>\n\nexport const KnowledgeAvailabilitySchema = Schema.Literals(['pinned', 'searchable', 'archived'])\n\nexport type KnowledgeAvailability = Schema.Schema.Type<typeof KnowledgeAvailabilitySchema>\n\nexport const KnowledgeDocumentStatusSchema = Schema.Literals(['processing', 'ready', 'error'])\n\nexport type KnowledgeDocumentStatus = Schema.Schema.Type<typeof KnowledgeDocumentStatusSchema>\n\nexport const KnowledgeScopeId = NonEmptyTrimmedString.pipe(Schema.brand('KnowledgeScopeId'))\n\nexport type KnowledgeScopeId = typeof KnowledgeScopeId.Type\n\nexport const KnowledgeDocumentId = NonEmptyTrimmedString.pipe(Schema.brand('KnowledgeDocumentId'))\n\nexport type KnowledgeDocumentId = typeof KnowledgeDocumentId.Type\n\nexport const KnowledgeScopeSchema = Schema.Struct({\n id: KnowledgeScopeId,\n kind: Schema.optional(NonEmptyTrimmedString)\n})\n\nexport type KnowledgeScope = Schema.Schema.Type<typeof KnowledgeScopeSchema>\n\nexport const KnowledgeDocumentSchema = Schema.Struct({\n id: KnowledgeDocumentId,\n slug: NonEmptyTrimmedString,\n title: NonEmptyTrimmedString,\n purpose: NonEmptyTrimmedString,\n origin: NonEmptyTrimmedString,\n content: NonEmptyTrimmedString,\n status: KnowledgeDocumentStatusSchema,\n availability: KnowledgeAvailabilitySchema,\n summary: Schema.optional(Schema.String),\n errorMessage: Schema.optional(Schema.String),\n reviewedAt: Schema.optional(Schema.DateTimeUtc),\n metadata: Schema.optional(KnowledgeMetadataSchema),\n createdAt: Schema.DateTimeUtc,\n updatedAt: Schema.DateTimeUtc\n})\n\nexport type KnowledgeDocument = Schema.Schema.Type<typeof KnowledgeDocumentSchema>\n\nexport const CreateKnowledgeDocumentInputSchema = Schema.Struct({\n scope: KnowledgeScopeSchema,\n slug: NonEmptyTrimmedString,\n title: NonEmptyTrimmedString,\n purpose: NonEmptyTrimmedString,\n origin: NonEmptyTrimmedString,\n content: NonEmptyTrimmedString,\n availability: KnowledgeAvailabilitySchema,\n summary: Schema.optional(Schema.String),\n metadata: Schema.optional(KnowledgeMetadataSchema)\n})\n\nexport type CreateKnowledgeDocumentInput = Schema.Schema.Type<\n typeof CreateKnowledgeDocumentInputSchema\n>\n\nexport const UpdateKnowledgeDocumentInputSchema = Schema.Struct({\n scope: KnowledgeScopeSchema,\n id: KnowledgeDocumentId,\n slug: Schema.optional(NonEmptyTrimmedString),\n title: Schema.optional(NonEmptyTrimmedString),\n purpose: Schema.optional(NonEmptyTrimmedString),\n origin: Schema.optional(NonEmptyTrimmedString),\n content: Schema.optional(NonEmptyTrimmedString),\n status: Schema.optional(KnowledgeDocumentStatusSchema),\n availability: Schema.optional(KnowledgeAvailabilitySchema),\n summary: Schema.optional(Schema.String),\n errorMessage: Schema.optional(Schema.String),\n reviewedAt: Schema.optional(Schema.DateTimeUtc),\n metadata: Schema.optional(KnowledgeMetadataSchema)\n})\n\nexport type UpdateKnowledgeDocumentInput = Schema.Schema.Type<\n typeof UpdateKnowledgeDocumentInputSchema\n>\n\nexport const KnowledgeFileSchema = Schema.Struct({\n id: NonEmptyTrimmedString,\n documentId: KnowledgeDocumentId,\n storageKey: NonEmptyTrimmedString,\n mediaType: Schema.optional(NonEmptyTrimmedString),\n byteSize: Schema.optional(NonNegativeInteger),\n checksum: Schema.optional(NonEmptyTrimmedString),\n metadata: Schema.optional(KnowledgeMetadataSchema),\n createdAt: Schema.DateTimeUtc\n})\n\nexport type KnowledgeFile = Schema.Schema.Type<typeof KnowledgeFileSchema>\n\nexport const KnowledgeChunkSchema = Schema.Struct({\n id: NonEmptyTrimmedString,\n scopeId: KnowledgeScopeId,\n documentId: KnowledgeDocumentId,\n content: NonEmptyTrimmedString,\n position: NonNegativeInteger,\n tokenCount: PositiveInteger,\n metadata: Schema.optional(KnowledgeMetadataSchema)\n})\n\nexport type KnowledgeChunk = Schema.Schema.Type<typeof KnowledgeChunkSchema>\n\nexport const KnowledgeSearchScope = Schema.TaggedStruct('KnowledgeScope', {\n id: KnowledgeScopeId\n})\n\nexport const KnowledgeSearchScopes = Schema.TaggedStruct('KnowledgeScopes', {\n ids: Schema.NonEmptyArray(KnowledgeScopeId)\n})\n\nexport const KnowledgeSearchScopeSchema = Schema.Union([\n KnowledgeSearchScope,\n KnowledgeSearchScopes\n])\n\nexport type KnowledgeSearchScope = typeof KnowledgeSearchScopeSchema.Type\n\nexport const KnowledgeFileSource = Schema.TaggedStruct('File', {\n ref: NonEmptyTrimmedString,\n name: Schema.optional(NonEmptyTrimmedString),\n mediaType: Schema.optional(NonEmptyTrimmedString)\n})\n\nexport const KnowledgeUrlSource = Schema.TaggedStruct('Url', {\n url: NonEmptyTrimmedString\n})\n\nexport const KnowledgeTextSource = Schema.TaggedStruct('Text', {\n label: Schema.optional(NonEmptyTrimmedString)\n})\n\nexport const KnowledgeSourceSchema = Schema.Union([\n KnowledgeFileSource,\n KnowledgeUrlSource,\n KnowledgeTextSource\n])\n\nexport type KnowledgeSource = typeof KnowledgeSourceSchema.Type\n\nexport const IndexedKnowledgeDocumentSchema = Schema.Struct({\n id: KnowledgeDocumentId,\n scopeId: KnowledgeScopeId,\n source: KnowledgeSourceSchema,\n status: KnowledgeDocumentStatusSchema,\n title: Schema.optional(NonEmptyTrimmedString),\n summary: Schema.optional(Schema.String),\n errorMessage: Schema.optional(Schema.String),\n contentHash: Schema.optional(NonEmptyTrimmedString),\n tokenCount: Schema.optional(NonNegativeInteger),\n chunkCount: Schema.optional(NonNegativeInteger),\n metadata: Schema.optional(KnowledgeMetadataSchema)\n})\n\nexport type IndexedKnowledgeDocument = Schema.Schema.Type<typeof IndexedKnowledgeDocumentSchema>\n\nexport const ExtractedKnowledgeDocumentSchema = Schema.Struct({\n content: NonEmptyTrimmedString,\n title: Schema.optional(NonEmptyTrimmedString),\n summary: Schema.optional(Schema.String),\n metadata: Schema.optional(KnowledgeMetadataSchema)\n})\n\nexport type ExtractedKnowledgeDocument = Schema.Schema.Type<typeof ExtractedKnowledgeDocumentSchema>\n\nexport const defaultKnowledgeChunkMaxTokens = 512\n"],"mappings":"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"}
|
package/dist/ingestion.d.mts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { KnowledgeDocumentId, KnowledgeScopeId } from "./documents.mjs";
|
|
1
2
|
import { KnowledgeIngestionError } from "./errors.mjs";
|
|
2
3
|
import { KnowledgeChunker } from "./chunking.mjs";
|
|
3
4
|
import { KnowledgeEmbedder } from "./embeddings.mjs";
|
|
@@ -8,15 +9,15 @@ import { Effect } from "effect";
|
|
|
8
9
|
|
|
9
10
|
//#region src/ingestion.d.ts
|
|
10
11
|
type IngestKnowledgeDocumentInput = {
|
|
11
|
-
readonly scopeId:
|
|
12
|
-
readonly documentId:
|
|
12
|
+
readonly scopeId: KnowledgeScopeId;
|
|
13
|
+
readonly documentId: KnowledgeDocumentId;
|
|
13
14
|
readonly source: LoadedKnowledgeSource;
|
|
14
15
|
readonly contentHash?: string;
|
|
15
16
|
readonly maxTokens?: number;
|
|
16
17
|
};
|
|
17
18
|
declare const ingestKnowledgeDocument: (input: IngestKnowledgeDocumentInput) => Effect.Effect<{
|
|
18
|
-
readonly id: string
|
|
19
|
-
readonly scopeId: string
|
|
19
|
+
readonly id: string & import("effect/Brand").Brand<"KnowledgeDocumentId">;
|
|
20
|
+
readonly scopeId: string & import("effect/Brand").Brand<"KnowledgeScopeId">;
|
|
20
21
|
readonly status: "processing" | "ready" | "error";
|
|
21
22
|
readonly source: {
|
|
22
23
|
readonly _tag: "File";
|
|
@@ -39,7 +40,7 @@ declare const ingestKnowledgeDocument: (input: IngestKnowledgeDocumentInput) =>
|
|
|
39
40
|
readonly title?: string | undefined;
|
|
40
41
|
readonly contentHash?: string | undefined;
|
|
41
42
|
readonly chunkCount?: number | undefined;
|
|
42
|
-
}, KnowledgeIngestionError, KnowledgeSummarizer | KnowledgeChunker |
|
|
43
|
+
}, KnowledgeIngestionError, KnowledgeSummarizer | KnowledgeChunker | SearchIndexStore | KnowledgeEmbedder | KnowledgeExtractor>;
|
|
43
44
|
type KnowledgeIngestionPipeline = {
|
|
44
45
|
readonly ingest: (input: IngestKnowledgeDocumentInput) => ReturnType<typeof ingestKnowledgeDocument>;
|
|
45
46
|
};
|
package/dist/ingestion.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ingestion.d.mts","names":[],"sources":["../src/ingestion.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"ingestion.d.mts","names":[],"sources":["../src/ingestion.ts"],"mappings":";;;;;;;;;;KAWY,4BAAA;EAAA,SACD,OAAA,EAAS,gBAAA;EAAA,SACT,UAAA,EAAY,mBAAA;EAAA,SACZ,MAAA,EAAQ,qBAAA;EAAA,SACR,WAAA;EAAA,SACA,SAAA;AAAA;AAAA,cAaE,uBAAA,GAA2B,KAAA,EAAO,4BAAA,KAA4B,MAAA,CAAA,MAAA;EAAA;;;;;;;;;;;;;;;;;;;;;;;;;KA0I/D,0BAAA;EAAA,SACD,MAAA,GACP,KAAA,EAAO,4BAAA,KACJ,UAAA,QAAkB,uBAAA;AAAA;AAAA,cAGZ,qBAAA,QAA4B,0BAEvC"}
|
package/dist/ingestion.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ingestion.mjs","names":["Arr"],"sources":["../src/ingestion.ts"],"sourcesContent":["import { Array as Arr, Effect } from 'effect'\nimport { KnowledgeChunker } from './chunking.ts'\nimport { defaultKnowledgeChunkMaxTokens } from './documents.ts'\nimport { KnowledgeEmbedder } from './embeddings.ts'\nimport { KnowledgeExtractor } from './extraction.ts'\nimport { KnowledgeSummarizer } from './summarization.ts'\nimport type { LoadedKnowledgeSource } from './extraction.ts'\nimport { KnowledgeIngestionError } from './errors.ts'\nimport { SearchIndexStore } from './store.ts'\n\nexport type IngestKnowledgeDocumentInput = {\n readonly scopeId:
|
|
1
|
+
{"version":3,"file":"ingestion.mjs","names":["Arr"],"sources":["../src/ingestion.ts"],"sourcesContent":["import { Array as Arr, Effect } from 'effect'\nimport { KnowledgeChunker } from './chunking.ts'\nimport { defaultKnowledgeChunkMaxTokens } from './documents.ts'\nimport type { KnowledgeDocumentId, KnowledgeScopeId } from './documents.ts'\nimport { KnowledgeEmbedder } from './embeddings.ts'\nimport { KnowledgeExtractor } from './extraction.ts'\nimport { KnowledgeSummarizer } from './summarization.ts'\nimport type { LoadedKnowledgeSource } from './extraction.ts'\nimport { KnowledgeIngestionError } from './errors.ts'\nimport { SearchIndexStore } from './store.ts'\n\nexport type IngestKnowledgeDocumentInput = {\n readonly scopeId: KnowledgeScopeId\n readonly documentId: KnowledgeDocumentId\n readonly source: LoadedKnowledgeSource\n readonly contentHash?: string\n readonly maxTokens?: number\n}\n\nconst markErrorBestEffort = (input: IngestKnowledgeDocumentInput, error: KnowledgeIngestionError) =>\n Effect.gen(function* () {\n const store = yield* SearchIndexStore\n yield* store.markDocumentError({\n scopeId: input.scopeId,\n documentId: input.documentId,\n message: error.message\n })\n }).pipe(Effect.catch(() => Effect.void))\n\nexport const ingestKnowledgeDocument = (input: IngestKnowledgeDocumentInput) =>\n Effect.gen(function* () {\n yield* Effect.annotateCurrentSpan({\n 'knowledge_search.scope_id': input.scopeId,\n 'knowledge_search.document_id': input.documentId,\n 'knowledge_search.source_type': input.source.source._tag\n })\n const store = yield* SearchIndexStore\n const extractor = yield* KnowledgeExtractor\n const chunker = yield* KnowledgeChunker\n const embedder = yield* KnowledgeEmbedder\n const summarizer = yield* KnowledgeSummarizer\n\n yield* store\n .upsertDocument({\n document: {\n id: input.documentId,\n scopeId: input.scopeId,\n source: input.source.source,\n status: 'processing',\n metadata: input.source.metadata\n }\n })\n .pipe(\n Effect.mapError(\n error =>\n new KnowledgeIngestionError({ message: error.message, stage: 'store', cause: error })\n )\n )\n\n const extracted = yield* extractor\n .extract(input.source)\n .pipe(\n Effect.mapError(\n error =>\n new KnowledgeIngestionError({ message: error.message, stage: 'extract', cause: error })\n )\n )\n\n const chunks = yield* chunker\n .chunk({\n scopeId: input.scopeId,\n documentId: input.documentId,\n content: extracted.content,\n maxTokens: input.maxTokens ?? defaultKnowledgeChunkMaxTokens,\n metadata: extracted.metadata\n })\n .pipe(\n Effect.mapError(\n error =>\n new KnowledgeIngestionError({ message: error.message, stage: 'chunk', cause: error })\n )\n )\n\n const indexed = yield* Effect.all(\n {\n embeddings: embedder.embedTexts(chunks.map(chunk => chunk.content)).pipe(\n Effect.mapError(\n error =>\n new KnowledgeIngestionError({\n message: error.message,\n stage: 'embed',\n cause: error\n })\n )\n ),\n summary: summarizer\n .summarize({\n content: extracted.content,\n sourceTitle: extracted.title,\n metadata: extracted.metadata\n })\n .pipe(\n Effect.mapError(\n error =>\n new KnowledgeIngestionError({\n message: error.message,\n stage: 'summarize',\n cause: error\n })\n )\n )\n },\n { concurrency: 'unbounded' }\n )\n\n if (indexed.embeddings.length !== chunks.length) {\n return yield* Effect.fail(\n new KnowledgeIngestionError({\n message: 'Embedding count did not match chunk count',\n stage: 'embed'\n })\n )\n }\n\n const indexedChunks = Arr.zip(chunks, indexed.embeddings).map(([chunk, embedding]) => ({\n chunk,\n embedding\n }))\n\n yield* store\n .replaceDocumentChunks({\n scopeId: input.scopeId,\n documentId: input.documentId,\n chunks: indexedChunks\n })\n .pipe(\n Effect.mapError(\n error =>\n new KnowledgeIngestionError({ message: error.message, stage: 'store', cause: error })\n )\n )\n\n const tokenCount = chunks.reduce((total, chunk) => total + chunk.tokenCount, 0)\n\n return yield* store\n .markDocumentReady({\n scopeId: input.scopeId,\n documentId: input.documentId,\n title: indexed.summary.title ?? extracted.title,\n summary: indexed.summary.summary ?? extracted.summary,\n contentHash: input.contentHash,\n tokenCount,\n chunkCount: chunks.length\n })\n .pipe(\n Effect.mapError(\n error =>\n new KnowledgeIngestionError({ message: error.message, stage: 'store', cause: error })\n )\n )\n }).pipe(\n Effect.withSpan('knowledge_search.ingestDocument'),\n Effect.catch(error =>\n markErrorBestEffort(input, error).pipe(Effect.flatMap(() => Effect.fail(error)))\n )\n )\n\nexport type KnowledgeIngestionPipeline = {\n readonly ingest: (\n input: IngestKnowledgeDocumentInput\n ) => ReturnType<typeof ingestKnowledgeDocument>\n}\n\nexport const makeIngestionPipeline = (): KnowledgeIngestionPipeline => ({\n ingest: ingestKnowledgeDocument\n})\n"],"mappings":"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"}
|
package/dist/search.d.mts
CHANGED
|
@@ -43,7 +43,7 @@ declare const fuseKnowledgeSearchResults: (input: {
|
|
|
43
43
|
readonly limit: number;
|
|
44
44
|
readonly rankConstant?: number;
|
|
45
45
|
}) => ReadonlyArray<KnowledgeSearchResult>;
|
|
46
|
-
declare const searchKnowledge: (input: KnowledgeSearchInput) => Effect.Effect<readonly KnowledgeSearchResult[], KnowledgeSearchError,
|
|
46
|
+
declare const searchKnowledge: (input: KnowledgeSearchInput) => Effect.Effect<readonly KnowledgeSearchResult[], KnowledgeSearchError, SearchIndexStore | KnowledgeEmbedder>;
|
|
47
47
|
//#endregion
|
|
48
48
|
export { KnowledgeSearchContext, KnowledgeSearchInput, KnowledgeSearchMode, KnowledgeSearchResult, KnowledgeSearchScores, KnowledgeSearcher, fuseKnowledgeSearchResults, packKnowledgeSearchContext, searchKnowledge };
|
|
49
49
|
//# sourceMappingURL=search.d.mts.map
|
package/dist/search.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.d.mts","names":[],"sources":["../src/search.ts"],"mappings":";;;;;;;KAMY,oBAAA;EAAA,SACD,KAAA,EAAO,oBAAA;EAAA,SACP,KAAA;EAAA,SACA,KAAA;EAAA,SACA,QAAA;EAAA,SACA,aAAA;EAAA,SACA,IAAA,GAAO,mBAAmB;EAAA,SAC1B,WAAA;EAAA,SACA,SAAA;AAAA;AAAA,KAGC,mBAAA;AAAA,KAEA,qBAAA;EAAA,SACD,MAAA;EAAA,SACA,IAAA;EAAA,SACA,KAAA;AAAA;AAAA,KAGC,qBAAA;EAAA,SACD,KAAA,EAAO,cAAA;EAAA,SACP,KAAA;EAAA,SACA,QAAA,EAAU,wBAAA;EAAA,SACV,OAAA,GAAU,aAAA,CAAc,cAAA;EAAA,SACxB,MAAA,GAAS,qBAAA;AAAA;AAAA,KAGR,sBAAA;EAAA,SACD,KAAA;EAAA,SACA,OAAA,EAAS,aAAa,CAAC,qBAAA;EAAA,SACvB,IAAA;AAAA;AAAA,KAGC,iBAAA;EAAA,SACD,MAAA,GACP,KAAA,EAAO,oBAAA,KACJ,MAAA,CAAO,MAAA,CAAO,aAAA,CAAc,qBAAA,GAAwB,oBAAA;AAAA;AAAA,cAM9C,0BAAA,GACX,KAAA,UACA,OAAA,EAAS,aAAA,CAAc,qBAAA,MACtB,sBAAA;AAAA,cAkBU,0BAAA,GAA8B,KAAA;EAAA,SAChC,aAAA,EAAe,aAAA,CAAc,qBAAA;EAAA,SAC7B,WAAA,EAAa,aAAA,CAAc,qBAAA;EAAA,SAC3B,KAAA;EAAA,SACA,YAAA;AAAA,MACP,aAAA,CAAc,qBAAA;AAAA,cA8JL,eAAA,GAAmB,KAAA,EAAO,oBAAA,KAAoB,MAAA,CAAA,MAAA,UAAA,qBAAA,IAAA,oBAAA,EAAA,
|
|
1
|
+
{"version":3,"file":"search.d.mts","names":[],"sources":["../src/search.ts"],"mappings":";;;;;;;KAMY,oBAAA;EAAA,SACD,KAAA,EAAO,oBAAA;EAAA,SACP,KAAA;EAAA,SACA,KAAA;EAAA,SACA,QAAA;EAAA,SACA,aAAA;EAAA,SACA,IAAA,GAAO,mBAAmB;EAAA,SAC1B,WAAA;EAAA,SACA,SAAA;AAAA;AAAA,KAGC,mBAAA;AAAA,KAEA,qBAAA;EAAA,SACD,MAAA;EAAA,SACA,IAAA;EAAA,SACA,KAAA;AAAA;AAAA,KAGC,qBAAA;EAAA,SACD,KAAA,EAAO,cAAA;EAAA,SACP,KAAA;EAAA,SACA,QAAA,EAAU,wBAAA;EAAA,SACV,OAAA,GAAU,aAAA,CAAc,cAAA;EAAA,SACxB,MAAA,GAAS,qBAAA;AAAA;AAAA,KAGR,sBAAA;EAAA,SACD,KAAA;EAAA,SACA,OAAA,EAAS,aAAa,CAAC,qBAAA;EAAA,SACvB,IAAA;AAAA;AAAA,KAGC,iBAAA;EAAA,SACD,MAAA,GACP,KAAA,EAAO,oBAAA,KACJ,MAAA,CAAO,MAAA,CAAO,aAAA,CAAc,qBAAA,GAAwB,oBAAA;AAAA;AAAA,cAM9C,0BAAA,GACX,KAAA,UACA,OAAA,EAAS,aAAA,CAAc,qBAAA,MACtB,sBAAA;AAAA,cAkBU,0BAAA,GAA8B,KAAA;EAAA,SAChC,aAAA,EAAe,aAAA,CAAc,qBAAA;EAAA,SAC7B,WAAA,EAAa,aAAA,CAAc,qBAAA;EAAA,SAC3B,KAAA;EAAA,SACA,YAAA;AAAA,MACP,aAAA,CAAc,qBAAA;AAAA,cA8JL,eAAA,GAAmB,KAAA,EAAO,oBAAA,KAAoB,MAAA,CAAA,MAAA,UAAA,qBAAA,IAAA,oBAAA,EAAA,gBAAA,GAAA,iBAAA"}
|
package/dist/store.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CreateKnowledgeDocumentInput, IndexedKnowledgeDocument, KnowledgeChunk, KnowledgeDocument, KnowledgeFile, KnowledgeScope, KnowledgeSearchScope, UpdateKnowledgeDocumentInput } from "./documents.mjs";
|
|
1
|
+
import { CreateKnowledgeDocumentInput, IndexedKnowledgeDocument, KnowledgeChunk, KnowledgeDocument, KnowledgeDocumentId, KnowledgeFile, KnowledgeScope, KnowledgeScopeId, KnowledgeSearchScope, UpdateKnowledgeDocumentInput } from "./documents.mjs";
|
|
2
2
|
import { KnowledgeStoreError, SearchIndexStoreError } from "./errors.mjs";
|
|
3
3
|
import { KnowledgeEmbedding } from "./embeddings.mjs";
|
|
4
4
|
import { Context, Effect } from "effect";
|
|
@@ -6,7 +6,7 @@ import { Context, Effect } from "effect";
|
|
|
6
6
|
//#region src/store.d.ts
|
|
7
7
|
type GetKnowledgeDocumentInput = {
|
|
8
8
|
readonly scope: KnowledgeScope;
|
|
9
|
-
readonly id:
|
|
9
|
+
readonly id: KnowledgeDocumentId;
|
|
10
10
|
};
|
|
11
11
|
type GetKnowledgeDocumentBySlugInput = {
|
|
12
12
|
readonly scope: KnowledgeScope;
|
|
@@ -43,16 +43,16 @@ type UpsertIndexedKnowledgeDocumentInput = {
|
|
|
43
43
|
readonly document: IndexedKnowledgeDocument;
|
|
44
44
|
};
|
|
45
45
|
type ReplaceKnowledgeDocumentChunksInput = {
|
|
46
|
-
readonly scopeId:
|
|
47
|
-
readonly documentId:
|
|
46
|
+
readonly scopeId: KnowledgeScopeId;
|
|
47
|
+
readonly documentId: KnowledgeDocumentId;
|
|
48
48
|
readonly chunks: ReadonlyArray<{
|
|
49
49
|
readonly chunk: KnowledgeChunk;
|
|
50
50
|
readonly embedding: KnowledgeEmbedding;
|
|
51
51
|
}>;
|
|
52
52
|
};
|
|
53
53
|
type MarkKnowledgeDocumentReadyInput = {
|
|
54
|
-
readonly scopeId:
|
|
55
|
-
readonly documentId:
|
|
54
|
+
readonly scopeId: KnowledgeScopeId;
|
|
55
|
+
readonly documentId: KnowledgeDocumentId;
|
|
56
56
|
readonly title?: string;
|
|
57
57
|
readonly summary?: string;
|
|
58
58
|
readonly contentHash?: string;
|
|
@@ -60,8 +60,8 @@ type MarkKnowledgeDocumentReadyInput = {
|
|
|
60
60
|
readonly chunkCount: number;
|
|
61
61
|
};
|
|
62
62
|
type MarkKnowledgeDocumentErrorInput = {
|
|
63
|
-
readonly scopeId:
|
|
64
|
-
readonly documentId:
|
|
63
|
+
readonly scopeId: KnowledgeScopeId;
|
|
64
|
+
readonly documentId: KnowledgeDocumentId;
|
|
65
65
|
readonly message: string;
|
|
66
66
|
};
|
|
67
67
|
type KnowledgeChunkSearchInput = {
|
|
@@ -81,23 +81,23 @@ type KnowledgeChunkSearchResult = {
|
|
|
81
81
|
readonly document: IndexedKnowledgeDocument;
|
|
82
82
|
};
|
|
83
83
|
type KnowledgeSearchContextChunksInput = {
|
|
84
|
-
readonly scopeId:
|
|
85
|
-
readonly documentId:
|
|
84
|
+
readonly scopeId: KnowledgeScopeId;
|
|
85
|
+
readonly documentId: KnowledgeDocumentId;
|
|
86
86
|
readonly position: number;
|
|
87
87
|
readonly contextChunks: number;
|
|
88
88
|
};
|
|
89
89
|
type SearchIndexStoreApi = {
|
|
90
90
|
readonly upsertDocument: (input: UpsertIndexedKnowledgeDocumentInput) => Effect.Effect<IndexedKnowledgeDocument, SearchIndexStoreError>;
|
|
91
91
|
readonly markDocumentProcessing: (input: {
|
|
92
|
-
readonly scopeId:
|
|
93
|
-
readonly documentId:
|
|
92
|
+
readonly scopeId: KnowledgeScopeId;
|
|
93
|
+
readonly documentId: KnowledgeDocumentId;
|
|
94
94
|
}) => Effect.Effect<IndexedKnowledgeDocument, SearchIndexStoreError>;
|
|
95
95
|
readonly replaceDocumentChunks: (input: ReplaceKnowledgeDocumentChunksInput) => Effect.Effect<void, SearchIndexStoreError>;
|
|
96
96
|
readonly markDocumentReady: (input: MarkKnowledgeDocumentReadyInput) => Effect.Effect<IndexedKnowledgeDocument, SearchIndexStoreError>;
|
|
97
97
|
readonly markDocumentError: (input: MarkKnowledgeDocumentErrorInput) => Effect.Effect<void, SearchIndexStoreError>;
|
|
98
98
|
readonly deleteDocument: (input: {
|
|
99
|
-
readonly scopeId:
|
|
100
|
-
readonly documentId:
|
|
99
|
+
readonly scopeId: KnowledgeScopeId;
|
|
100
|
+
readonly documentId: KnowledgeDocumentId;
|
|
101
101
|
}) => Effect.Effect<void, SearchIndexStoreError>;
|
|
102
102
|
readonly searchChunks: (input: KnowledgeChunkSearchInput) => Effect.Effect<ReadonlyArray<KnowledgeChunkSearchResult>, SearchIndexStoreError>;
|
|
103
103
|
readonly searchChunksByText: (input: KnowledgeChunkTextSearchInput) => Effect.Effect<ReadonlyArray<KnowledgeChunkSearchResult>, SearchIndexStoreError>;
|
package/dist/store.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.mts","names":[],"sources":["../src/store.ts"],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"store.d.mts","names":[],"sources":["../src/store.ts"],"mappings":"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"}
|
package/dist/store.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.mjs","names":[],"sources":["../src/store.ts"],"sourcesContent":["import { Context } from 'effect'\nimport type { Effect } from 'effect'\nimport type {\n CreateKnowledgeDocumentInput,\n IndexedKnowledgeDocument,\n KnowledgeChunk,\n KnowledgeDocument,\n KnowledgeFile,\n KnowledgeScope,\n KnowledgeSearchScope,\n UpdateKnowledgeDocumentInput\n} from './documents.ts'\nimport type { KnowledgeEmbedding } from './embeddings.ts'\nimport type { KnowledgeStoreError, SearchIndexStoreError } from './errors.ts'\n\nexport type GetKnowledgeDocumentInput = {\n readonly scope: KnowledgeScope\n readonly id:
|
|
1
|
+
{"version":3,"file":"store.mjs","names":[],"sources":["../src/store.ts"],"sourcesContent":["import { Context } from 'effect'\nimport type { Effect } from 'effect'\nimport type {\n CreateKnowledgeDocumentInput,\n IndexedKnowledgeDocument,\n KnowledgeChunk,\n KnowledgeDocument,\n KnowledgeDocumentId,\n KnowledgeFile,\n KnowledgeScope,\n KnowledgeScopeId,\n KnowledgeSearchScope,\n UpdateKnowledgeDocumentInput\n} from './documents.ts'\nimport type { KnowledgeEmbedding } from './embeddings.ts'\nimport type { KnowledgeStoreError, SearchIndexStoreError } from './errors.ts'\n\nexport type GetKnowledgeDocumentInput = {\n readonly scope: KnowledgeScope\n readonly id: KnowledgeDocumentId\n}\n\nexport type GetKnowledgeDocumentBySlugInput = {\n readonly scope: KnowledgeScope\n readonly slug: string\n}\n\nexport type ListKnowledgeDocumentsInput = {\n readonly scope: KnowledgeScope\n readonly limit: number\n readonly availability?: KnowledgeDocument['availability']\n}\n\nexport type ListKnowledgeDocumentsResult = {\n readonly documents: ReadonlyArray<KnowledgeDocument>\n}\n\nexport type ListPinnedKnowledgeInput = {\n readonly scope: KnowledgeScope\n readonly limit: number\n}\n\nexport type ListPinnedKnowledgeResult = {\n readonly documents: ReadonlyArray<KnowledgeDocument>\n}\n\nexport type KnowledgeStoreApi = {\n readonly createDocument: (\n input: CreateKnowledgeDocumentInput\n ) => Effect.Effect<KnowledgeDocument, KnowledgeStoreError>\n readonly updateDocument: (\n input: UpdateKnowledgeDocumentInput\n ) => Effect.Effect<KnowledgeDocument, KnowledgeStoreError>\n readonly getDocument: (\n input: GetKnowledgeDocumentInput\n ) => Effect.Effect<KnowledgeDocument, KnowledgeStoreError>\n readonly getDocumentBySlug: (\n input: GetKnowledgeDocumentBySlugInput\n ) => Effect.Effect<KnowledgeDocument, KnowledgeStoreError>\n readonly listDocuments: (\n input: ListKnowledgeDocumentsInput\n ) => Effect.Effect<ListKnowledgeDocumentsResult, KnowledgeStoreError>\n readonly listPinned: (\n input: ListPinnedKnowledgeInput\n ) => Effect.Effect<ListPinnedKnowledgeResult, KnowledgeStoreError>\n readonly deleteDocument: (\n input: GetKnowledgeDocumentInput\n ) => Effect.Effect<void, KnowledgeStoreError>\n readonly listFiles: (\n input: GetKnowledgeDocumentInput\n ) => Effect.Effect<ReadonlyArray<KnowledgeFile>, KnowledgeStoreError>\n}\n\nexport class KnowledgeStore extends Context.Service<KnowledgeStore, KnowledgeStoreApi>()(\n '@yolk-sdk/knowledge/KnowledgeStore'\n) {}\n\nexport type UpsertIndexedKnowledgeDocumentInput = {\n readonly document: IndexedKnowledgeDocument\n}\n\nexport type ReplaceKnowledgeDocumentChunksInput = {\n readonly scopeId: KnowledgeScopeId\n readonly documentId: KnowledgeDocumentId\n readonly chunks: ReadonlyArray<{\n readonly chunk: KnowledgeChunk\n readonly embedding: KnowledgeEmbedding\n }>\n}\n\nexport type MarkKnowledgeDocumentReadyInput = {\n readonly scopeId: KnowledgeScopeId\n readonly documentId: KnowledgeDocumentId\n readonly title?: string\n readonly summary?: string\n readonly contentHash?: string\n readonly tokenCount: number\n readonly chunkCount: number\n}\n\nexport type MarkKnowledgeDocumentErrorInput = {\n readonly scopeId: KnowledgeScopeId\n readonly documentId: KnowledgeDocumentId\n readonly message: string\n}\n\nexport type KnowledgeChunkSearchInput = {\n readonly scope: KnowledgeSearchScope\n readonly embedding: KnowledgeEmbedding\n readonly limit: number\n readonly minScore?: number\n}\n\nexport type KnowledgeChunkTextSearchInput = {\n readonly scope: KnowledgeSearchScope\n readonly query: string\n readonly limit: number\n}\n\nexport type KnowledgeChunkSearchResult = {\n readonly chunk: KnowledgeChunk\n readonly score: number\n readonly document: IndexedKnowledgeDocument\n}\n\nexport type KnowledgeSearchContextChunksInput = {\n readonly scopeId: KnowledgeScopeId\n readonly documentId: KnowledgeDocumentId\n readonly position: number\n readonly contextChunks: number\n}\n\nexport type SearchIndexStoreApi = {\n readonly upsertDocument: (\n input: UpsertIndexedKnowledgeDocumentInput\n ) => Effect.Effect<IndexedKnowledgeDocument, SearchIndexStoreError>\n readonly markDocumentProcessing: (input: {\n readonly scopeId: KnowledgeScopeId\n readonly documentId: KnowledgeDocumentId\n }) => Effect.Effect<IndexedKnowledgeDocument, SearchIndexStoreError>\n readonly replaceDocumentChunks: (\n input: ReplaceKnowledgeDocumentChunksInput\n ) => Effect.Effect<void, SearchIndexStoreError>\n readonly markDocumentReady: (\n input: MarkKnowledgeDocumentReadyInput\n ) => Effect.Effect<IndexedKnowledgeDocument, SearchIndexStoreError>\n readonly markDocumentError: (\n input: MarkKnowledgeDocumentErrorInput\n ) => Effect.Effect<void, SearchIndexStoreError>\n readonly deleteDocument: (input: {\n readonly scopeId: KnowledgeScopeId\n readonly documentId: KnowledgeDocumentId\n }) => Effect.Effect<void, SearchIndexStoreError>\n readonly searchChunks: (\n input: KnowledgeChunkSearchInput\n ) => Effect.Effect<ReadonlyArray<KnowledgeChunkSearchResult>, SearchIndexStoreError>\n readonly searchChunksByText: (\n input: KnowledgeChunkTextSearchInput\n ) => Effect.Effect<ReadonlyArray<KnowledgeChunkSearchResult>, SearchIndexStoreError>\n readonly getContextChunks: (\n input: KnowledgeSearchContextChunksInput\n ) => Effect.Effect<ReadonlyArray<KnowledgeChunk>, SearchIndexStoreError>\n}\n\nexport class SearchIndexStore extends Context.Service<SearchIndexStore, SearchIndexStoreApi>()(\n '@yolk-sdk/knowledge/SearchIndexStore'\n) {}\n"],"mappings":";;AAyEA,IAAa,iBAAb,cAAoC,QAAQ,QAA2C,EACrF,oCACF,EAAE,CAAC;AAyFH,IAAa,mBAAb,cAAsC,QAAQ,QAA+C,EAC3F,sCACF,EAAE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yolk-sdk/knowledge",
|
|
3
|
-
"version": "0.1.0-canary.
|
|
3
|
+
"version": "0.1.0-canary.79",
|
|
4
4
|
"description": "Domain-free knowledge document/source/file/context, ingestion, hybrid search, and lookup/manage tool helpers for agents.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -106,7 +106,7 @@
|
|
|
106
106
|
"dependencies": {
|
|
107
107
|
"effect": "4.0.0-rc.115",
|
|
108
108
|
"gpt-tokenizer": "^3.4.0",
|
|
109
|
-
"@yolk-sdk/agent": "^0.1.0-canary.
|
|
109
|
+
"@yolk-sdk/agent": "^0.1.0-canary.79"
|
|
110
110
|
},
|
|
111
111
|
"scripts": {
|
|
112
112
|
"build": "tsdown",
|
package/src/chunking.ts
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import { Context, Effect, Layer } from 'effect'
|
|
2
2
|
import { countTokens, decode, encode } from 'gpt-tokenizer/encoding/o200k_base'
|
|
3
|
-
import type {
|
|
3
|
+
import type {
|
|
4
|
+
KnowledgeChunk,
|
|
5
|
+
KnowledgeDocumentId,
|
|
6
|
+
KnowledgeMetadata,
|
|
7
|
+
KnowledgeScopeId
|
|
8
|
+
} from './documents.ts'
|
|
4
9
|
import { KnowledgeChunkingError } from './errors.ts'
|
|
5
10
|
|
|
6
11
|
const SENTENCE_PATTERN = /[^.!?]+[.!?]+(?:["')\]]+)?\s*|[^.!?]+$/g
|
|
@@ -10,8 +15,8 @@ const PARAGRAPH_BREAK_PATTERN = /(\n{2,})/
|
|
|
10
15
|
const WORD_PATTERN = /\S+\s*/g
|
|
11
16
|
|
|
12
17
|
export type ChunkKnowledgeDocumentInput = {
|
|
13
|
-
readonly scopeId:
|
|
14
|
-
readonly documentId:
|
|
18
|
+
readonly scopeId: KnowledgeScopeId
|
|
19
|
+
readonly documentId: KnowledgeDocumentId
|
|
15
20
|
readonly content: string
|
|
16
21
|
readonly maxTokens?: number
|
|
17
22
|
readonly metadata?: KnowledgeMetadata
|
package/src/documents.ts
CHANGED
|
@@ -18,15 +18,23 @@ export const KnowledgeDocumentStatusSchema = Schema.Literals(['processing', 'rea
|
|
|
18
18
|
|
|
19
19
|
export type KnowledgeDocumentStatus = Schema.Schema.Type<typeof KnowledgeDocumentStatusSchema>
|
|
20
20
|
|
|
21
|
+
export const KnowledgeScopeId = NonEmptyTrimmedString.pipe(Schema.brand('KnowledgeScopeId'))
|
|
22
|
+
|
|
23
|
+
export type KnowledgeScopeId = typeof KnowledgeScopeId.Type
|
|
24
|
+
|
|
25
|
+
export const KnowledgeDocumentId = NonEmptyTrimmedString.pipe(Schema.brand('KnowledgeDocumentId'))
|
|
26
|
+
|
|
27
|
+
export type KnowledgeDocumentId = typeof KnowledgeDocumentId.Type
|
|
28
|
+
|
|
21
29
|
export const KnowledgeScopeSchema = Schema.Struct({
|
|
22
|
-
id:
|
|
30
|
+
id: KnowledgeScopeId,
|
|
23
31
|
kind: Schema.optional(NonEmptyTrimmedString)
|
|
24
32
|
})
|
|
25
33
|
|
|
26
34
|
export type KnowledgeScope = Schema.Schema.Type<typeof KnowledgeScopeSchema>
|
|
27
35
|
|
|
28
36
|
export const KnowledgeDocumentSchema = Schema.Struct({
|
|
29
|
-
id:
|
|
37
|
+
id: KnowledgeDocumentId,
|
|
30
38
|
slug: NonEmptyTrimmedString,
|
|
31
39
|
title: NonEmptyTrimmedString,
|
|
32
40
|
purpose: NonEmptyTrimmedString,
|
|
@@ -62,7 +70,7 @@ export type CreateKnowledgeDocumentInput = Schema.Schema.Type<
|
|
|
62
70
|
|
|
63
71
|
export const UpdateKnowledgeDocumentInputSchema = Schema.Struct({
|
|
64
72
|
scope: KnowledgeScopeSchema,
|
|
65
|
-
id:
|
|
73
|
+
id: KnowledgeDocumentId,
|
|
66
74
|
slug: Schema.optional(NonEmptyTrimmedString),
|
|
67
75
|
title: Schema.optional(NonEmptyTrimmedString),
|
|
68
76
|
purpose: Schema.optional(NonEmptyTrimmedString),
|
|
@@ -82,7 +90,7 @@ export type UpdateKnowledgeDocumentInput = Schema.Schema.Type<
|
|
|
82
90
|
|
|
83
91
|
export const KnowledgeFileSchema = Schema.Struct({
|
|
84
92
|
id: NonEmptyTrimmedString,
|
|
85
|
-
documentId:
|
|
93
|
+
documentId: KnowledgeDocumentId,
|
|
86
94
|
storageKey: NonEmptyTrimmedString,
|
|
87
95
|
mediaType: Schema.optional(NonEmptyTrimmedString),
|
|
88
96
|
byteSize: Schema.optional(NonNegativeInteger),
|
|
@@ -95,8 +103,8 @@ export type KnowledgeFile = Schema.Schema.Type<typeof KnowledgeFileSchema>
|
|
|
95
103
|
|
|
96
104
|
export const KnowledgeChunkSchema = Schema.Struct({
|
|
97
105
|
id: NonEmptyTrimmedString,
|
|
98
|
-
scopeId:
|
|
99
|
-
documentId:
|
|
106
|
+
scopeId: KnowledgeScopeId,
|
|
107
|
+
documentId: KnowledgeDocumentId,
|
|
100
108
|
content: NonEmptyTrimmedString,
|
|
101
109
|
position: NonNegativeInteger,
|
|
102
110
|
tokenCount: PositiveInteger,
|
|
@@ -106,11 +114,11 @@ export const KnowledgeChunkSchema = Schema.Struct({
|
|
|
106
114
|
export type KnowledgeChunk = Schema.Schema.Type<typeof KnowledgeChunkSchema>
|
|
107
115
|
|
|
108
116
|
export const KnowledgeSearchScope = Schema.TaggedStruct('KnowledgeScope', {
|
|
109
|
-
id:
|
|
117
|
+
id: KnowledgeScopeId
|
|
110
118
|
})
|
|
111
119
|
|
|
112
120
|
export const KnowledgeSearchScopes = Schema.TaggedStruct('KnowledgeScopes', {
|
|
113
|
-
ids: Schema.NonEmptyArray(
|
|
121
|
+
ids: Schema.NonEmptyArray(KnowledgeScopeId)
|
|
114
122
|
})
|
|
115
123
|
|
|
116
124
|
export const KnowledgeSearchScopeSchema = Schema.Union([
|
|
@@ -143,8 +151,8 @@ export const KnowledgeSourceSchema = Schema.Union([
|
|
|
143
151
|
export type KnowledgeSource = typeof KnowledgeSourceSchema.Type
|
|
144
152
|
|
|
145
153
|
export const IndexedKnowledgeDocumentSchema = Schema.Struct({
|
|
146
|
-
id:
|
|
147
|
-
scopeId:
|
|
154
|
+
id: KnowledgeDocumentId,
|
|
155
|
+
scopeId: KnowledgeScopeId,
|
|
148
156
|
source: KnowledgeSourceSchema,
|
|
149
157
|
status: KnowledgeDocumentStatusSchema,
|
|
150
158
|
title: Schema.optional(NonEmptyTrimmedString),
|
package/src/ingestion.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Array as Arr, Effect } from 'effect'
|
|
2
2
|
import { KnowledgeChunker } from './chunking.ts'
|
|
3
3
|
import { defaultKnowledgeChunkMaxTokens } from './documents.ts'
|
|
4
|
+
import type { KnowledgeDocumentId, KnowledgeScopeId } from './documents.ts'
|
|
4
5
|
import { KnowledgeEmbedder } from './embeddings.ts'
|
|
5
6
|
import { KnowledgeExtractor } from './extraction.ts'
|
|
6
7
|
import { KnowledgeSummarizer } from './summarization.ts'
|
|
@@ -9,8 +10,8 @@ import { KnowledgeIngestionError } from './errors.ts'
|
|
|
9
10
|
import { SearchIndexStore } from './store.ts'
|
|
10
11
|
|
|
11
12
|
export type IngestKnowledgeDocumentInput = {
|
|
12
|
-
readonly scopeId:
|
|
13
|
-
readonly documentId:
|
|
13
|
+
readonly scopeId: KnowledgeScopeId
|
|
14
|
+
readonly documentId: KnowledgeDocumentId
|
|
14
15
|
readonly source: LoadedKnowledgeSource
|
|
15
16
|
readonly contentHash?: string
|
|
16
17
|
readonly maxTokens?: number
|
package/src/store.ts
CHANGED
|
@@ -5,8 +5,10 @@ import type {
|
|
|
5
5
|
IndexedKnowledgeDocument,
|
|
6
6
|
KnowledgeChunk,
|
|
7
7
|
KnowledgeDocument,
|
|
8
|
+
KnowledgeDocumentId,
|
|
8
9
|
KnowledgeFile,
|
|
9
10
|
KnowledgeScope,
|
|
11
|
+
KnowledgeScopeId,
|
|
10
12
|
KnowledgeSearchScope,
|
|
11
13
|
UpdateKnowledgeDocumentInput
|
|
12
14
|
} from './documents.ts'
|
|
@@ -15,7 +17,7 @@ import type { KnowledgeStoreError, SearchIndexStoreError } from './errors.ts'
|
|
|
15
17
|
|
|
16
18
|
export type GetKnowledgeDocumentInput = {
|
|
17
19
|
readonly scope: KnowledgeScope
|
|
18
|
-
readonly id:
|
|
20
|
+
readonly id: KnowledgeDocumentId
|
|
19
21
|
}
|
|
20
22
|
|
|
21
23
|
export type GetKnowledgeDocumentBySlugInput = {
|
|
@@ -78,8 +80,8 @@ export type UpsertIndexedKnowledgeDocumentInput = {
|
|
|
78
80
|
}
|
|
79
81
|
|
|
80
82
|
export type ReplaceKnowledgeDocumentChunksInput = {
|
|
81
|
-
readonly scopeId:
|
|
82
|
-
readonly documentId:
|
|
83
|
+
readonly scopeId: KnowledgeScopeId
|
|
84
|
+
readonly documentId: KnowledgeDocumentId
|
|
83
85
|
readonly chunks: ReadonlyArray<{
|
|
84
86
|
readonly chunk: KnowledgeChunk
|
|
85
87
|
readonly embedding: KnowledgeEmbedding
|
|
@@ -87,8 +89,8 @@ export type ReplaceKnowledgeDocumentChunksInput = {
|
|
|
87
89
|
}
|
|
88
90
|
|
|
89
91
|
export type MarkKnowledgeDocumentReadyInput = {
|
|
90
|
-
readonly scopeId:
|
|
91
|
-
readonly documentId:
|
|
92
|
+
readonly scopeId: KnowledgeScopeId
|
|
93
|
+
readonly documentId: KnowledgeDocumentId
|
|
92
94
|
readonly title?: string
|
|
93
95
|
readonly summary?: string
|
|
94
96
|
readonly contentHash?: string
|
|
@@ -97,8 +99,8 @@ export type MarkKnowledgeDocumentReadyInput = {
|
|
|
97
99
|
}
|
|
98
100
|
|
|
99
101
|
export type MarkKnowledgeDocumentErrorInput = {
|
|
100
|
-
readonly scopeId:
|
|
101
|
-
readonly documentId:
|
|
102
|
+
readonly scopeId: KnowledgeScopeId
|
|
103
|
+
readonly documentId: KnowledgeDocumentId
|
|
102
104
|
readonly message: string
|
|
103
105
|
}
|
|
104
106
|
|
|
@@ -122,8 +124,8 @@ export type KnowledgeChunkSearchResult = {
|
|
|
122
124
|
}
|
|
123
125
|
|
|
124
126
|
export type KnowledgeSearchContextChunksInput = {
|
|
125
|
-
readonly scopeId:
|
|
126
|
-
readonly documentId:
|
|
127
|
+
readonly scopeId: KnowledgeScopeId
|
|
128
|
+
readonly documentId: KnowledgeDocumentId
|
|
127
129
|
readonly position: number
|
|
128
130
|
readonly contextChunks: number
|
|
129
131
|
}
|
|
@@ -133,8 +135,8 @@ export type SearchIndexStoreApi = {
|
|
|
133
135
|
input: UpsertIndexedKnowledgeDocumentInput
|
|
134
136
|
) => Effect.Effect<IndexedKnowledgeDocument, SearchIndexStoreError>
|
|
135
137
|
readonly markDocumentProcessing: (input: {
|
|
136
|
-
readonly scopeId:
|
|
137
|
-
readonly documentId:
|
|
138
|
+
readonly scopeId: KnowledgeScopeId
|
|
139
|
+
readonly documentId: KnowledgeDocumentId
|
|
138
140
|
}) => Effect.Effect<IndexedKnowledgeDocument, SearchIndexStoreError>
|
|
139
141
|
readonly replaceDocumentChunks: (
|
|
140
142
|
input: ReplaceKnowledgeDocumentChunksInput
|
|
@@ -146,8 +148,8 @@ export type SearchIndexStoreApi = {
|
|
|
146
148
|
input: MarkKnowledgeDocumentErrorInput
|
|
147
149
|
) => Effect.Effect<void, SearchIndexStoreError>
|
|
148
150
|
readonly deleteDocument: (input: {
|
|
149
|
-
readonly scopeId:
|
|
150
|
-
readonly documentId:
|
|
151
|
+
readonly scopeId: KnowledgeScopeId
|
|
152
|
+
readonly documentId: KnowledgeDocumentId
|
|
151
153
|
}) => Effect.Effect<void, SearchIndexStoreError>
|
|
152
154
|
readonly searchChunks: (
|
|
153
155
|
input: KnowledgeChunkSearchInput
|