@yolk-sdk/knowledge 0.0.1-canary.0
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/LICENSE +21 -0
- package/README.md +104 -0
- package/dist/agent.d.mts +26 -0
- package/dist/agent.d.mts.map +1 -0
- package/dist/agent.mjs +45 -0
- package/dist/agent.mjs.map +1 -0
- package/dist/artifacts.d.mts +37 -0
- package/dist/artifacts.d.mts.map +1 -0
- package/dist/artifacts.mjs +28 -0
- package/dist/artifacts.mjs.map +1 -0
- package/dist/chunking.d.mts +38 -0
- package/dist/chunking.d.mts.map +1 -0
- package/dist/chunking.mjs +93 -0
- package/dist/chunking.mjs.map +1 -0
- package/dist/context.d.mts +16 -0
- package/dist/context.d.mts.map +1 -0
- package/dist/context.mjs +25 -0
- package/dist/context.mjs.map +1 -0
- package/dist/documents.d.mts +105 -0
- package/dist/documents.d.mts.map +1 -0
- package/dist/documents.mjs +93 -0
- package/dist/documents.mjs.map +1 -0
- package/dist/embeddings.d.mts +14 -0
- package/dist/embeddings.d.mts.map +1 -0
- package/dist/embeddings.mjs +8 -0
- package/dist/embeddings.mjs.map +1 -0
- package/dist/errors.d.mts +72 -0
- package/dist/errors.d.mts.map +1 -0
- package/dist/errors.mjs +26 -0
- package/dist/errors.mjs.map +1 -0
- package/dist/extraction.d.mts +19 -0
- package/dist/extraction.d.mts.map +1 -0
- package/dist/extraction.mjs +7 -0
- package/dist/extraction.mjs.map +1 -0
- package/dist/index.d.mts +5 -0
- package/dist/index.mjs +5 -0
- package/dist/ingestion.d.mts +48 -0
- package/dist/ingestion.d.mts.map +1 -0
- package/dist/ingestion.mjs +111 -0
- package/dist/ingestion.mjs.map +1 -0
- package/dist/links.d.mts +17 -0
- package/dist/links.d.mts.map +1 -0
- package/dist/links.mjs +24 -0
- package/dist/links.mjs.map +1 -0
- package/dist/provenance.d.mts +20 -0
- package/dist/provenance.d.mts.map +1 -0
- package/dist/provenance.mjs +26 -0
- package/dist/provenance.mjs.map +1 -0
- package/dist/records.d.mts +59 -0
- package/dist/records.d.mts.map +1 -0
- package/dist/records.mjs +64 -0
- package/dist/records.mjs.map +1 -0
- package/dist/representations.d.mts +36 -0
- package/dist/representations.d.mts.map +1 -0
- package/dist/representations.mjs +44 -0
- package/dist/representations.mjs.map +1 -0
- package/dist/search-store.d.mts +77 -0
- package/dist/search-store.d.mts.map +1 -0
- package/dist/search-store.mjs +7 -0
- package/dist/search-store.mjs.map +1 -0
- package/dist/search.d.mts +49 -0
- package/dist/search.d.mts.map +1 -0
- package/dist/search.mjs +179 -0
- package/dist/search.mjs.map +1 -0
- package/dist/store.d.mts +44 -0
- package/dist/store.d.mts.map +1 -0
- package/dist/store.mjs +7 -0
- package/dist/store.mjs.map +1 -0
- package/dist/summarization.d.mts +23 -0
- package/dist/summarization.d.mts.map +1 -0
- package/dist/summarization.mjs +8 -0
- package/dist/summarization.mjs.map +1 -0
- package/dist/vector-store.d.mts +3 -0
- package/dist/vector-store.mjs +2 -0
- package/package.json +147 -0
- package/src/agent.ts +96 -0
- package/src/artifacts.ts +48 -0
- package/src/chunking.ts +175 -0
- package/src/context.ts +42 -0
- package/src/documents.ts +109 -0
- package/src/embeddings.ts +18 -0
- package/src/errors.ts +63 -0
- package/src/extraction.ts +21 -0
- package/src/index.ts +4 -0
- package/src/ingestion.ts +157 -0
- package/src/links.ts +23 -0
- package/src/provenance.ts +25 -0
- package/src/records.ts +76 -0
- package/src/representations.ts +51 -0
- package/src/search-store.ts +98 -0
- package/src/search.ts +270 -0
- package/src/store.ts +53 -0
- package/src/summarization.ts +28 -0
- package/src/vector-store.ts +6 -0
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import * as Schema from "effect/Schema";
|
|
2
|
+
|
|
3
|
+
//#region src/records.d.ts
|
|
4
|
+
declare const NonEmptyTrimmedString: Schema.Trimmed;
|
|
5
|
+
declare const NonNegativeInteger: Schema.Int;
|
|
6
|
+
declare const PositiveInteger: Schema.Int;
|
|
7
|
+
declare const KnowledgeMetadataSchema: Schema.$Record<Schema.String, Schema.Unknown>;
|
|
8
|
+
type KnowledgeMetadata = Schema.Schema.Type<typeof KnowledgeMetadataSchema>;
|
|
9
|
+
declare const KnowledgeRecordRoleSchema: Schema.Literals<readonly ["source", "note", "operating_protocol", "knowledge_map", "compiled_truth", "decision"]>;
|
|
10
|
+
type KnowledgeRecordRole = Schema.Schema.Type<typeof KnowledgeRecordRoleSchema>;
|
|
11
|
+
declare const KnowledgeContextPolicySchema: Schema.Literals<readonly ["pinned", "routable", "searchable", "archival"]>;
|
|
12
|
+
type KnowledgeContextPolicy = Schema.Schema.Type<typeof KnowledgeContextPolicySchema>;
|
|
13
|
+
declare const KnowledgeLifecycleStatusSchema: Schema.Literals<readonly ["draft", "processing", "ready", "error", "archived", "deleted"]>;
|
|
14
|
+
type KnowledgeLifecycleStatus = Schema.Schema.Type<typeof KnowledgeLifecycleStatusSchema>;
|
|
15
|
+
declare const KnowledgeScopeSchema: Schema.Struct<{
|
|
16
|
+
readonly id: Schema.Trimmed;
|
|
17
|
+
readonly kind: Schema.optional<Schema.Trimmed>;
|
|
18
|
+
}>;
|
|
19
|
+
type KnowledgeScope = Schema.Schema.Type<typeof KnowledgeScopeSchema>;
|
|
20
|
+
declare const KnowledgeRecordSchema: Schema.Struct<{
|
|
21
|
+
readonly id: Schema.Trimmed;
|
|
22
|
+
readonly role: Schema.Literals<readonly ["source", "note", "operating_protocol", "knowledge_map", "compiled_truth", "decision"]>;
|
|
23
|
+
readonly title: Schema.Trimmed;
|
|
24
|
+
readonly status: Schema.Literals<readonly ["draft", "processing", "ready", "error", "archived", "deleted"]>;
|
|
25
|
+
readonly contextPolicy: Schema.Literals<readonly ["pinned", "routable", "searchable", "archival"]>;
|
|
26
|
+
readonly summary: Schema.optional<Schema.String>;
|
|
27
|
+
readonly metadata: Schema.optional<Schema.$Record<Schema.String, Schema.Unknown>>;
|
|
28
|
+
readonly createdAt: Schema.DateTimeUtc;
|
|
29
|
+
readonly updatedAt: Schema.DateTimeUtc;
|
|
30
|
+
}>;
|
|
31
|
+
type KnowledgeRecord = Schema.Schema.Type<typeof KnowledgeRecordSchema>;
|
|
32
|
+
declare const CreateKnowledgeRecordInputSchema: Schema.Struct<{
|
|
33
|
+
readonly scope: Schema.Struct<{
|
|
34
|
+
readonly id: Schema.Trimmed;
|
|
35
|
+
readonly kind: Schema.optional<Schema.Trimmed>;
|
|
36
|
+
}>;
|
|
37
|
+
readonly role: Schema.Literals<readonly ["source", "note", "operating_protocol", "knowledge_map", "compiled_truth", "decision"]>;
|
|
38
|
+
readonly title: Schema.Trimmed;
|
|
39
|
+
readonly contextPolicy: Schema.Literals<readonly ["pinned", "routable", "searchable", "archival"]>;
|
|
40
|
+
readonly summary: Schema.optional<Schema.String>;
|
|
41
|
+
readonly metadata: Schema.optional<Schema.$Record<Schema.String, Schema.Unknown>>;
|
|
42
|
+
}>;
|
|
43
|
+
type CreateKnowledgeRecordInput = Schema.Schema.Type<typeof CreateKnowledgeRecordInputSchema>;
|
|
44
|
+
declare const UpdateKnowledgeRecordInputSchema: Schema.Struct<{
|
|
45
|
+
readonly scope: Schema.Struct<{
|
|
46
|
+
readonly id: Schema.Trimmed;
|
|
47
|
+
readonly kind: Schema.optional<Schema.Trimmed>;
|
|
48
|
+
}>;
|
|
49
|
+
readonly id: Schema.Trimmed;
|
|
50
|
+
readonly title: Schema.optional<Schema.Trimmed>;
|
|
51
|
+
readonly status: Schema.optional<Schema.Literals<readonly ["draft", "processing", "ready", "error", "archived", "deleted"]>>;
|
|
52
|
+
readonly contextPolicy: Schema.optional<Schema.Literals<readonly ["pinned", "routable", "searchable", "archival"]>>;
|
|
53
|
+
readonly summary: Schema.optional<Schema.String>;
|
|
54
|
+
readonly metadata: Schema.optional<Schema.$Record<Schema.String, Schema.Unknown>>;
|
|
55
|
+
}>;
|
|
56
|
+
type UpdateKnowledgeRecordInput = Schema.Schema.Type<typeof UpdateKnowledgeRecordInputSchema>;
|
|
57
|
+
//#endregion
|
|
58
|
+
export { CreateKnowledgeRecordInput, CreateKnowledgeRecordInputSchema, KnowledgeContextPolicy, KnowledgeContextPolicySchema, KnowledgeLifecycleStatus, KnowledgeLifecycleStatusSchema, KnowledgeMetadata, KnowledgeMetadataSchema, KnowledgeRecord, KnowledgeRecordRole, KnowledgeRecordRoleSchema, KnowledgeRecordSchema, KnowledgeScope, KnowledgeScopeSchema, NonEmptyTrimmedString, NonNegativeInteger, PositiveInteger, UpdateKnowledgeRecordInput, UpdateKnowledgeRecordInputSchema };
|
|
59
|
+
//# sourceMappingURL=records.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"records.d.mts","names":[],"sources":["../src/records.ts"],"mappings":";;;cAEa,qBAAA,EAAqB,MAAA,CAAA,OAAyD;AAAA,cAC9E,kBAAA,EAAkB,MAAA,CAAA,GAAkE;AAAA,cACpF,eAAA,EAAe,MAAA,CAAA,GAAyD;AAAA,cAExE,uBAAA,EAAuB,MAAA,CAAA,OAAA,CAAA,MAAA,CAAA,MAAA,EAAA,MAAA,CAAA,OAAA;AAAA,KACxB,iBAAA,GAAoB,MAAA,CAAO,MAAA,CAAO,IAAI,QAAQ,uBAAA;AAAA,cAE7C,yBAAA,EAAyB,MAAA,CAAA,QAAA;AAAA,KAQ1B,mBAAA,GAAsB,MAAA,CAAO,MAAA,CAAO,IAAI,QAAQ,yBAAA;AAAA,cAE/C,4BAAA,EAA4B,MAAA,CAAA,QAAA;AAAA,KAM7B,sBAAA,GAAyB,MAAA,CAAO,MAAA,CAAO,IAAI,QAAQ,4BAAA;AAAA,cAElD,8BAAA,EAA8B,MAAA,CAAA,QAAA;AAAA,KAQ/B,wBAAA,GAA2B,MAAA,CAAO,MAAA,CAAO,IAAI,QAAQ,8BAAA;AAAA,cAEpD,oBAAA,EAAoB,MAAA,CAAA,MAAA;EAAA;;;KAIrB,cAAA,GAAiB,MAAA,CAAO,MAAA,CAAO,IAAI,QAAQ,oBAAA;AAAA,cAE1C,qBAAA,EAAqB,MAAA,CAAA,MAAA;EAAA;;;;;;;;;;KAWtB,eAAA,GAAkB,MAAA,CAAO,MAAA,CAAO,IAAI,QAAQ,qBAAA;AAAA,cAE3C,gCAAA,EAAgC,MAAA,CAAA,MAAA;EAAA;;;;;;;;;;KAQjC,0BAAA,GAA6B,MAAA,CAAO,MAAA,CAAO,IAAI,QAAQ,gCAAA;AAAA,cAEtD,gCAAA,EAAgC,MAAA,CAAA,MAAA;EAAA;;;;;;;;;;;KASjC,0BAAA,GAA6B,MAAA,CAAO,MAAA,CAAO,IAAI,QAAQ,gCAAA"}
|
package/dist/records.mjs
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import * as Schema from "effect/Schema";
|
|
2
|
+
//#region src/records.ts
|
|
3
|
+
const NonEmptyTrimmedString = Schema.Trimmed.pipe(Schema.check(Schema.isNonEmpty()));
|
|
4
|
+
const NonNegativeInteger = Schema.Int.pipe(Schema.check(Schema.isGreaterThanOrEqualTo(0)));
|
|
5
|
+
const PositiveInteger = Schema.Int.pipe(Schema.check(Schema.isGreaterThan(0)));
|
|
6
|
+
const KnowledgeMetadataSchema = Schema.Record(Schema.String, Schema.Unknown);
|
|
7
|
+
const KnowledgeRecordRoleSchema = Schema.Literals([
|
|
8
|
+
"source",
|
|
9
|
+
"note",
|
|
10
|
+
"operating_protocol",
|
|
11
|
+
"knowledge_map",
|
|
12
|
+
"compiled_truth",
|
|
13
|
+
"decision"
|
|
14
|
+
]);
|
|
15
|
+
const KnowledgeContextPolicySchema = Schema.Literals([
|
|
16
|
+
"pinned",
|
|
17
|
+
"routable",
|
|
18
|
+
"searchable",
|
|
19
|
+
"archival"
|
|
20
|
+
]);
|
|
21
|
+
const KnowledgeLifecycleStatusSchema = Schema.Literals([
|
|
22
|
+
"draft",
|
|
23
|
+
"processing",
|
|
24
|
+
"ready",
|
|
25
|
+
"error",
|
|
26
|
+
"archived",
|
|
27
|
+
"deleted"
|
|
28
|
+
]);
|
|
29
|
+
const KnowledgeScopeSchema = Schema.Struct({
|
|
30
|
+
id: NonEmptyTrimmedString,
|
|
31
|
+
kind: Schema.optional(NonEmptyTrimmedString)
|
|
32
|
+
});
|
|
33
|
+
const KnowledgeRecordSchema = Schema.Struct({
|
|
34
|
+
id: NonEmptyTrimmedString,
|
|
35
|
+
role: KnowledgeRecordRoleSchema,
|
|
36
|
+
title: NonEmptyTrimmedString,
|
|
37
|
+
status: KnowledgeLifecycleStatusSchema,
|
|
38
|
+
contextPolicy: KnowledgeContextPolicySchema,
|
|
39
|
+
summary: Schema.optional(Schema.String),
|
|
40
|
+
metadata: Schema.optional(KnowledgeMetadataSchema),
|
|
41
|
+
createdAt: Schema.DateTimeUtc,
|
|
42
|
+
updatedAt: Schema.DateTimeUtc
|
|
43
|
+
});
|
|
44
|
+
const CreateKnowledgeRecordInputSchema = Schema.Struct({
|
|
45
|
+
scope: KnowledgeScopeSchema,
|
|
46
|
+
role: KnowledgeRecordRoleSchema,
|
|
47
|
+
title: NonEmptyTrimmedString,
|
|
48
|
+
contextPolicy: KnowledgeContextPolicySchema,
|
|
49
|
+
summary: Schema.optional(Schema.String),
|
|
50
|
+
metadata: Schema.optional(KnowledgeMetadataSchema)
|
|
51
|
+
});
|
|
52
|
+
const UpdateKnowledgeRecordInputSchema = Schema.Struct({
|
|
53
|
+
scope: KnowledgeScopeSchema,
|
|
54
|
+
id: NonEmptyTrimmedString,
|
|
55
|
+
title: Schema.optional(NonEmptyTrimmedString),
|
|
56
|
+
status: Schema.optional(KnowledgeLifecycleStatusSchema),
|
|
57
|
+
contextPolicy: Schema.optional(KnowledgeContextPolicySchema),
|
|
58
|
+
summary: Schema.optional(Schema.String),
|
|
59
|
+
metadata: Schema.optional(KnowledgeMetadataSchema)
|
|
60
|
+
});
|
|
61
|
+
//#endregion
|
|
62
|
+
export { CreateKnowledgeRecordInputSchema, KnowledgeContextPolicySchema, KnowledgeLifecycleStatusSchema, KnowledgeMetadataSchema, KnowledgeRecordRoleSchema, KnowledgeRecordSchema, KnowledgeScopeSchema, NonEmptyTrimmedString, NonNegativeInteger, PositiveInteger, UpdateKnowledgeRecordInputSchema };
|
|
63
|
+
|
|
64
|
+
//# sourceMappingURL=records.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"records.mjs","names":[],"sources":["../src/records.ts"],"sourcesContent":["import * as Schema from 'effect/Schema'\n\nexport const NonEmptyTrimmedString = Schema.Trimmed.pipe(Schema.check(Schema.isNonEmpty()))\nexport const NonNegativeInteger = Schema.Int.pipe(Schema.check(Schema.isGreaterThanOrEqualTo(0)))\nexport const PositiveInteger = Schema.Int.pipe(Schema.check(Schema.isGreaterThan(0)))\n\nexport const KnowledgeMetadataSchema = Schema.Record(Schema.String, Schema.Unknown)\nexport type KnowledgeMetadata = Schema.Schema.Type<typeof KnowledgeMetadataSchema>\n\nexport const KnowledgeRecordRoleSchema = Schema.Literals([\n 'source',\n 'note',\n 'operating_protocol',\n 'knowledge_map',\n 'compiled_truth',\n 'decision'\n])\nexport type KnowledgeRecordRole = Schema.Schema.Type<typeof KnowledgeRecordRoleSchema>\n\nexport const KnowledgeContextPolicySchema = Schema.Literals([\n 'pinned',\n 'routable',\n 'searchable',\n 'archival'\n])\nexport type KnowledgeContextPolicy = Schema.Schema.Type<typeof KnowledgeContextPolicySchema>\n\nexport const KnowledgeLifecycleStatusSchema = Schema.Literals([\n 'draft',\n 'processing',\n 'ready',\n 'error',\n 'archived',\n 'deleted'\n])\nexport type KnowledgeLifecycleStatus = Schema.Schema.Type<typeof KnowledgeLifecycleStatusSchema>\n\nexport const KnowledgeScopeSchema = Schema.Struct({\n id: NonEmptyTrimmedString,\n kind: Schema.optional(NonEmptyTrimmedString)\n})\nexport type KnowledgeScope = Schema.Schema.Type<typeof KnowledgeScopeSchema>\n\nexport const KnowledgeRecordSchema = Schema.Struct({\n id: NonEmptyTrimmedString,\n role: KnowledgeRecordRoleSchema,\n title: NonEmptyTrimmedString,\n status: KnowledgeLifecycleStatusSchema,\n contextPolicy: KnowledgeContextPolicySchema,\n summary: Schema.optional(Schema.String),\n metadata: Schema.optional(KnowledgeMetadataSchema),\n createdAt: Schema.DateTimeUtc,\n updatedAt: Schema.DateTimeUtc\n})\nexport type KnowledgeRecord = Schema.Schema.Type<typeof KnowledgeRecordSchema>\n\nexport const CreateKnowledgeRecordInputSchema = Schema.Struct({\n scope: KnowledgeScopeSchema,\n role: KnowledgeRecordRoleSchema,\n title: NonEmptyTrimmedString,\n contextPolicy: KnowledgeContextPolicySchema,\n summary: Schema.optional(Schema.String),\n metadata: Schema.optional(KnowledgeMetadataSchema)\n})\nexport type CreateKnowledgeRecordInput = Schema.Schema.Type<typeof CreateKnowledgeRecordInputSchema>\n\nexport const UpdateKnowledgeRecordInputSchema = Schema.Struct({\n scope: KnowledgeScopeSchema,\n id: NonEmptyTrimmedString,\n title: Schema.optional(NonEmptyTrimmedString),\n status: Schema.optional(KnowledgeLifecycleStatusSchema),\n contextPolicy: Schema.optional(KnowledgeContextPolicySchema),\n summary: Schema.optional(Schema.String),\n metadata: Schema.optional(KnowledgeMetadataSchema)\n})\nexport type UpdateKnowledgeRecordInput = Schema.Schema.Type<typeof UpdateKnowledgeRecordInputSchema>\n"],"mappings":";;AAEA,MAAa,wBAAwB,OAAO,QAAQ,KAAK,OAAO,MAAM,OAAO,WAAW,CAAC,CAAC;AAC1F,MAAa,qBAAqB,OAAO,IAAI,KAAK,OAAO,MAAM,OAAO,uBAAuB,CAAC,CAAC,CAAC;AAChG,MAAa,kBAAkB,OAAO,IAAI,KAAK,OAAO,MAAM,OAAO,cAAc,CAAC,CAAC,CAAC;AAEpF,MAAa,0BAA0B,OAAO,OAAO,OAAO,QAAQ,OAAO,OAAO;AAGlF,MAAa,4BAA4B,OAAO,SAAS;CACvD;CACA;CACA;CACA;CACA;CACA;AACF,CAAC;AAGD,MAAa,+BAA+B,OAAO,SAAS;CAC1D;CACA;CACA;CACA;AACF,CAAC;AAGD,MAAa,iCAAiC,OAAO,SAAS;CAC5D;CACA;CACA;CACA;CACA;CACA;AACF,CAAC;AAGD,MAAa,uBAAuB,OAAO,OAAO;CAChD,IAAI;CACJ,MAAM,OAAO,SAAS,qBAAqB;AAC7C,CAAC;AAGD,MAAa,wBAAwB,OAAO,OAAO;CACjD,IAAI;CACJ,MAAM;CACN,OAAO;CACP,QAAQ;CACR,eAAe;CACf,SAAS,OAAO,SAAS,OAAO,MAAM;CACtC,UAAU,OAAO,SAAS,uBAAuB;CACjD,WAAW,OAAO;CAClB,WAAW,OAAO;AACpB,CAAC;AAGD,MAAa,mCAAmC,OAAO,OAAO;CAC5D,OAAO;CACP,MAAM;CACN,OAAO;CACP,eAAe;CACf,SAAS,OAAO,SAAS,OAAO,MAAM;CACtC,UAAU,OAAO,SAAS,uBAAuB;AACnD,CAAC;AAGD,MAAa,mCAAmC,OAAO,OAAO;CAC5D,OAAO;CACP,IAAI;CACJ,OAAO,OAAO,SAAS,qBAAqB;CAC5C,QAAQ,OAAO,SAAS,8BAA8B;CACtD,eAAe,OAAO,SAAS,4BAA4B;CAC3D,SAAS,OAAO,SAAS,OAAO,MAAM;CACtC,UAAU,OAAO,SAAS,uBAAuB;AACnD,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import * as Schema from "effect/Schema";
|
|
2
|
+
|
|
3
|
+
//#region src/representations.d.ts
|
|
4
|
+
declare const KnowledgeRepresentationModalitySchema: Schema.Literals<readonly ["text", "image", "audio", "video", "table"]>;
|
|
5
|
+
type KnowledgeRepresentationModality = Schema.Schema.Type<typeof KnowledgeRepresentationModalitySchema>;
|
|
6
|
+
declare const KnowledgeRepresentationStatusSchema: Schema.Literals<readonly ["pending", "processing", "ready", "error"]>;
|
|
7
|
+
type KnowledgeRepresentationStatus = Schema.Schema.Type<typeof KnowledgeRepresentationStatusSchema>;
|
|
8
|
+
declare const KnowledgeRepresentationSchema: Schema.Struct<{
|
|
9
|
+
readonly id: Schema.Trimmed;
|
|
10
|
+
readonly recordId: Schema.Trimmed;
|
|
11
|
+
readonly artifactId: Schema.optional<Schema.Trimmed>;
|
|
12
|
+
readonly modality: Schema.Literals<readonly ["text", "image", "audio", "video", "table"]>;
|
|
13
|
+
readonly status: Schema.Literals<readonly ["pending", "processing", "ready", "error"]>;
|
|
14
|
+
readonly contentText: Schema.optional<Schema.String>;
|
|
15
|
+
readonly summary: Schema.optional<Schema.String>;
|
|
16
|
+
readonly model: Schema.optional<Schema.Trimmed>;
|
|
17
|
+
readonly errorMessage: Schema.optional<Schema.String>;
|
|
18
|
+
readonly metadata: Schema.optional<Schema.$Record<Schema.String, Schema.Unknown>>;
|
|
19
|
+
readonly createdAt: Schema.DateTimeUtc;
|
|
20
|
+
readonly updatedAt: Schema.DateTimeUtc;
|
|
21
|
+
}>;
|
|
22
|
+
type KnowledgeRepresentation = Schema.Schema.Type<typeof KnowledgeRepresentationSchema>;
|
|
23
|
+
declare const KnowledgeRepresentationChunkSchema: Schema.Struct<{
|
|
24
|
+
readonly id: Schema.Trimmed;
|
|
25
|
+
readonly recordId: Schema.Trimmed;
|
|
26
|
+
readonly representationId: Schema.Trimmed;
|
|
27
|
+
readonly content: Schema.Trimmed;
|
|
28
|
+
readonly position: Schema.Int;
|
|
29
|
+
readonly tokenCount: Schema.Int;
|
|
30
|
+
readonly metadata: Schema.optional<Schema.$Record<Schema.String, Schema.Unknown>>;
|
|
31
|
+
readonly createdAt: Schema.DateTimeUtc;
|
|
32
|
+
}>;
|
|
33
|
+
type KnowledgeRepresentationChunk = Schema.Schema.Type<typeof KnowledgeRepresentationChunkSchema>;
|
|
34
|
+
//#endregion
|
|
35
|
+
export { KnowledgeRepresentation, KnowledgeRepresentationChunk, KnowledgeRepresentationChunkSchema, KnowledgeRepresentationModality, KnowledgeRepresentationModalitySchema, KnowledgeRepresentationSchema, KnowledgeRepresentationStatus, KnowledgeRepresentationStatusSchema };
|
|
36
|
+
//# sourceMappingURL=representations.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"representations.d.mts","names":[],"sources":["../src/representations.ts"],"mappings":";;;cAOa,qCAAA,EAAqC,MAAA,CAAA,QAAA;AAAA,KAOtC,+BAAA,GAAkC,MAAA,CAAO,MAAA,CAAO,IAAI,QAAQ,qCAAA;AAAA,cAE3D,mCAAA,EAAmC,MAAA,CAAA,QAAA;AAAA,KAMpC,6BAAA,GAAgC,MAAA,CAAO,MAAA,CAAO,IAAI,QAAQ,mCAAA;AAAA,cAEzD,6BAAA,EAA6B,MAAA,CAAA,MAAA;EAAA;;;;;;;;;;;;;KAc9B,uBAAA,GAA0B,MAAA,CAAO,MAAA,CAAO,IAAI,QAAQ,6BAAA;AAAA,cAEnD,kCAAA,EAAkC,MAAA,CAAA,MAAA;EAAA;;;;;;;;;KAUnC,4BAAA,GAA+B,MAAA,CAAO,MAAA,CAAO,IAAI,QAAQ,kCAAA"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { KnowledgeMetadataSchema, NonEmptyTrimmedString, NonNegativeInteger } from "./records.mjs";
|
|
2
|
+
import * as Schema from "effect/Schema";
|
|
3
|
+
//#region src/representations.ts
|
|
4
|
+
const KnowledgeRepresentationModalitySchema = Schema.Literals([
|
|
5
|
+
"text",
|
|
6
|
+
"image",
|
|
7
|
+
"audio",
|
|
8
|
+
"video",
|
|
9
|
+
"table"
|
|
10
|
+
]);
|
|
11
|
+
const KnowledgeRepresentationStatusSchema = Schema.Literals([
|
|
12
|
+
"pending",
|
|
13
|
+
"processing",
|
|
14
|
+
"ready",
|
|
15
|
+
"error"
|
|
16
|
+
]);
|
|
17
|
+
const KnowledgeRepresentationSchema = Schema.Struct({
|
|
18
|
+
id: NonEmptyTrimmedString,
|
|
19
|
+
recordId: NonEmptyTrimmedString,
|
|
20
|
+
artifactId: Schema.optional(NonEmptyTrimmedString),
|
|
21
|
+
modality: KnowledgeRepresentationModalitySchema,
|
|
22
|
+
status: KnowledgeRepresentationStatusSchema,
|
|
23
|
+
contentText: Schema.optional(Schema.String),
|
|
24
|
+
summary: Schema.optional(Schema.String),
|
|
25
|
+
model: Schema.optional(NonEmptyTrimmedString),
|
|
26
|
+
errorMessage: Schema.optional(Schema.String),
|
|
27
|
+
metadata: Schema.optional(KnowledgeMetadataSchema),
|
|
28
|
+
createdAt: Schema.DateTimeUtc,
|
|
29
|
+
updatedAt: Schema.DateTimeUtc
|
|
30
|
+
});
|
|
31
|
+
const KnowledgeRepresentationChunkSchema = Schema.Struct({
|
|
32
|
+
id: NonEmptyTrimmedString,
|
|
33
|
+
recordId: NonEmptyTrimmedString,
|
|
34
|
+
representationId: NonEmptyTrimmedString,
|
|
35
|
+
content: NonEmptyTrimmedString,
|
|
36
|
+
position: NonNegativeInteger,
|
|
37
|
+
tokenCount: NonNegativeInteger,
|
|
38
|
+
metadata: Schema.optional(KnowledgeMetadataSchema),
|
|
39
|
+
createdAt: Schema.DateTimeUtc
|
|
40
|
+
});
|
|
41
|
+
//#endregion
|
|
42
|
+
export { KnowledgeRepresentationChunkSchema, KnowledgeRepresentationModalitySchema, KnowledgeRepresentationSchema, KnowledgeRepresentationStatusSchema };
|
|
43
|
+
|
|
44
|
+
//# sourceMappingURL=representations.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"representations.mjs","names":[],"sources":["../src/representations.ts"],"sourcesContent":["import * as Schema from 'effect/Schema'\nimport {\n KnowledgeMetadataSchema,\n NonEmptyTrimmedString,\n NonNegativeInteger\n} from './records.ts'\n\nexport const KnowledgeRepresentationModalitySchema = Schema.Literals([\n 'text',\n 'image',\n 'audio',\n 'video',\n 'table'\n])\nexport type KnowledgeRepresentationModality = Schema.Schema.Type<typeof KnowledgeRepresentationModalitySchema>\n\nexport const KnowledgeRepresentationStatusSchema = Schema.Literals([\n 'pending',\n 'processing',\n 'ready',\n 'error'\n])\nexport type KnowledgeRepresentationStatus = Schema.Schema.Type<typeof KnowledgeRepresentationStatusSchema>\n\nexport const KnowledgeRepresentationSchema = Schema.Struct({\n id: NonEmptyTrimmedString,\n recordId: NonEmptyTrimmedString,\n artifactId: Schema.optional(NonEmptyTrimmedString),\n modality: KnowledgeRepresentationModalitySchema,\n status: KnowledgeRepresentationStatusSchema,\n contentText: Schema.optional(Schema.String),\n summary: Schema.optional(Schema.String),\n model: Schema.optional(NonEmptyTrimmedString),\n errorMessage: Schema.optional(Schema.String),\n metadata: Schema.optional(KnowledgeMetadataSchema),\n createdAt: Schema.DateTimeUtc,\n updatedAt: Schema.DateTimeUtc\n})\nexport type KnowledgeRepresentation = Schema.Schema.Type<typeof KnowledgeRepresentationSchema>\n\nexport const KnowledgeRepresentationChunkSchema = Schema.Struct({\n id: NonEmptyTrimmedString,\n recordId: NonEmptyTrimmedString,\n representationId: NonEmptyTrimmedString,\n content: NonEmptyTrimmedString,\n position: NonNegativeInteger,\n tokenCount: NonNegativeInteger,\n metadata: Schema.optional(KnowledgeMetadataSchema),\n createdAt: Schema.DateTimeUtc\n})\nexport type KnowledgeRepresentationChunk = Schema.Schema.Type<typeof KnowledgeRepresentationChunkSchema>\n"],"mappings":";;;AAOA,MAAa,wCAAwC,OAAO,SAAS;CACnE;CACA;CACA;CACA;CACA;AACF,CAAC;AAGD,MAAa,sCAAsC,OAAO,SAAS;CACjE;CACA;CACA;CACA;AACF,CAAC;AAGD,MAAa,gCAAgC,OAAO,OAAO;CACzD,IAAI;CACJ,UAAU;CACV,YAAY,OAAO,SAAS,qBAAqB;CACjD,UAAU;CACV,QAAQ;CACR,aAAa,OAAO,SAAS,OAAO,MAAM;CAC1C,SAAS,OAAO,SAAS,OAAO,MAAM;CACtC,OAAO,OAAO,SAAS,qBAAqB;CAC5C,cAAc,OAAO,SAAS,OAAO,MAAM;CAC3C,UAAU,OAAO,SAAS,uBAAuB;CACjD,WAAW,OAAO;CAClB,WAAW,OAAO;AACpB,CAAC;AAGD,MAAa,qCAAqC,OAAO,OAAO;CAC9D,IAAI;CACJ,UAAU;CACV,kBAAkB;CAClB,SAAS;CACT,UAAU;CACV,YAAY;CACZ,UAAU,OAAO,SAAS,uBAAuB;CACjD,WAAW,OAAO;AACpB,CAAC"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { KnowledgeChunk, KnowledgeCollection, KnowledgeDocument, KnowledgeSearchScope } from "./documents.mjs";
|
|
2
|
+
import { SearchIndexStoreError } from "./errors.mjs";
|
|
3
|
+
import { KnowledgeEmbedding } from "./embeddings.mjs";
|
|
4
|
+
import { Context, Effect } from "effect";
|
|
5
|
+
|
|
6
|
+
//#region src/search-store.d.ts
|
|
7
|
+
type UpsertKnowledgeDocumentInput = {
|
|
8
|
+
readonly document: KnowledgeDocument;
|
|
9
|
+
};
|
|
10
|
+
type ReplaceKnowledgeDocumentChunksInput = {
|
|
11
|
+
readonly collectionId: string;
|
|
12
|
+
readonly documentId: string;
|
|
13
|
+
readonly chunks: ReadonlyArray<{
|
|
14
|
+
readonly chunk: KnowledgeChunk;
|
|
15
|
+
readonly embedding: KnowledgeEmbedding;
|
|
16
|
+
}>;
|
|
17
|
+
};
|
|
18
|
+
type MarkKnowledgeDocumentReadyInput = {
|
|
19
|
+
readonly collectionId: string;
|
|
20
|
+
readonly documentId: string;
|
|
21
|
+
readonly title?: string;
|
|
22
|
+
readonly summary?: string;
|
|
23
|
+
readonly contentHash?: string;
|
|
24
|
+
readonly tokenCount: number;
|
|
25
|
+
readonly chunkCount: number;
|
|
26
|
+
};
|
|
27
|
+
type MarkKnowledgeDocumentErrorInput = {
|
|
28
|
+
readonly collectionId: string;
|
|
29
|
+
readonly documentId: string;
|
|
30
|
+
readonly message: string;
|
|
31
|
+
};
|
|
32
|
+
type KnowledgeChunkSearchInput = {
|
|
33
|
+
readonly scope: KnowledgeSearchScope;
|
|
34
|
+
readonly embedding: KnowledgeEmbedding;
|
|
35
|
+
readonly limit: number;
|
|
36
|
+
readonly minScore?: number;
|
|
37
|
+
};
|
|
38
|
+
type KnowledgeChunkTextSearchInput = {
|
|
39
|
+
readonly scope: KnowledgeSearchScope;
|
|
40
|
+
readonly query: string;
|
|
41
|
+
readonly limit: number;
|
|
42
|
+
};
|
|
43
|
+
type KnowledgeChunkSearchResult = {
|
|
44
|
+
readonly chunk: KnowledgeChunk;
|
|
45
|
+
readonly score: number;
|
|
46
|
+
readonly document: KnowledgeDocument;
|
|
47
|
+
};
|
|
48
|
+
type KnowledgeSearchContextChunksInput = {
|
|
49
|
+
readonly collectionId: string;
|
|
50
|
+
readonly documentId: string;
|
|
51
|
+
readonly position: number;
|
|
52
|
+
readonly contextChunks: number;
|
|
53
|
+
};
|
|
54
|
+
type SearchIndexStoreApi = {
|
|
55
|
+
readonly upsertSet: (set: KnowledgeCollection) => Effect.Effect<KnowledgeCollection, SearchIndexStoreError>;
|
|
56
|
+
readonly getSet: (id: string) => Effect.Effect<KnowledgeCollection, SearchIndexStoreError>;
|
|
57
|
+
readonly upsertDocument: (input: UpsertKnowledgeDocumentInput) => Effect.Effect<KnowledgeDocument, SearchIndexStoreError>;
|
|
58
|
+
readonly markDocumentProcessing: (input: {
|
|
59
|
+
readonly collectionId: string;
|
|
60
|
+
readonly documentId: string;
|
|
61
|
+
}) => Effect.Effect<KnowledgeDocument, SearchIndexStoreError>;
|
|
62
|
+
readonly replaceDocumentChunks: (input: ReplaceKnowledgeDocumentChunksInput) => Effect.Effect<void, SearchIndexStoreError>;
|
|
63
|
+
readonly markDocumentReady: (input: MarkKnowledgeDocumentReadyInput) => Effect.Effect<KnowledgeDocument, SearchIndexStoreError>;
|
|
64
|
+
readonly markDocumentError: (input: MarkKnowledgeDocumentErrorInput) => Effect.Effect<void, SearchIndexStoreError>;
|
|
65
|
+
readonly deleteDocument: (input: {
|
|
66
|
+
readonly collectionId: string;
|
|
67
|
+
readonly documentId: string;
|
|
68
|
+
}) => Effect.Effect<void, SearchIndexStoreError>;
|
|
69
|
+
readonly searchChunks: (input: KnowledgeChunkSearchInput) => Effect.Effect<ReadonlyArray<KnowledgeChunkSearchResult>, SearchIndexStoreError>;
|
|
70
|
+
readonly searchChunksByText: (input: KnowledgeChunkTextSearchInput) => Effect.Effect<ReadonlyArray<KnowledgeChunkSearchResult>, SearchIndexStoreError>;
|
|
71
|
+
readonly getContextChunks: (input: KnowledgeSearchContextChunksInput) => Effect.Effect<ReadonlyArray<KnowledgeChunk>, SearchIndexStoreError>;
|
|
72
|
+
};
|
|
73
|
+
declare const SearchIndexStore_base: Context.ServiceClass<SearchIndexStore, "@yolk-sdk/knowledge/SearchIndexStore", SearchIndexStoreApi>;
|
|
74
|
+
declare class SearchIndexStore extends SearchIndexStore_base {}
|
|
75
|
+
//#endregion
|
|
76
|
+
export { KnowledgeChunkSearchInput, KnowledgeChunkSearchResult, KnowledgeChunkTextSearchInput, KnowledgeSearchContextChunksInput, MarkKnowledgeDocumentErrorInput, MarkKnowledgeDocumentReadyInput, ReplaceKnowledgeDocumentChunksInput, SearchIndexStore, SearchIndexStoreApi, UpsertKnowledgeDocumentInput };
|
|
77
|
+
//# sourceMappingURL=search-store.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-store.d.mts","names":[],"sources":["../src/search-store.ts"],"mappings":";;;;;;KAMY,4BAAA;EAAA,SACD,QAAA,EAAU,iBAAiB;AAAA;AAAA,KAG1B,mCAAA;EAAA,SACD,YAAA;EAAA,SACA,UAAA;EAAA,SACA,MAAA,EAAQ,aAAA;IAAA,SACN,KAAA,EAAO,cAAA;IAAA,SACP,SAAA,EAAW,kBAAA;EAAA;AAAA;AAAA,KAIZ,+BAAA;EAAA,SACD,YAAA;EAAA,SACA,UAAA;EAAA,SACA,KAAA;EAAA,SACA,OAAA;EAAA,SACA,WAAA;EAAA,SACA,UAAA;EAAA,SACA,UAAA;AAAA;AAAA,KAGC,+BAAA;EAAA,SACD,YAAA;EAAA,SACA,UAAA;EAAA,SACA,OAAA;AAAA;AAAA,KAGC,yBAAA;EAAA,SACD,KAAA,EAAO,oBAAA;EAAA,SACP,SAAA,EAAW,kBAAkB;EAAA,SAC7B,KAAA;EAAA,SACA,QAAA;AAAA;AAAA,KAGC,6BAAA;EAAA,SACD,KAAA,EAAO,oBAAoB;EAAA,SAC3B,KAAA;EAAA,SACA,KAAA;AAAA;AAAA,KAGC,0BAAA;EAAA,SACD,KAAA,EAAO,cAAA;EAAA,SACP,KAAA;EAAA,SACA,QAAA,EAAU,iBAAiB;AAAA;AAAA,KAG1B,iCAAA;EAAA,SACD,YAAA;EAAA,SACA,UAAA;EAAA,SACA,QAAA;EAAA,SACA,aAAA;AAAA;AAAA,KAGC,mBAAA;EAAA,SACD,SAAA,GAAY,GAAA,EAAK,mBAAA,KAAwB,MAAA,CAAO,MAAA,CAAO,mBAAA,EAAqB,qBAAA;EAAA,SAC5E,MAAA,GAAS,EAAA,aAAe,MAAA,CAAO,MAAA,CAAO,mBAAA,EAAqB,qBAAA;EAAA,SAC3D,cAAA,GACP,KAAA,EAAO,4BAAA,KACJ,MAAA,CAAO,MAAA,CAAO,iBAAA,EAAmB,qBAAA;EAAA,SAC7B,sBAAA,GAAyB,KAAA;IAAA,SACvB,YAAA;IAAA,SACA,UAAA;EAAA,MACL,MAAA,CAAO,MAAA,CAAO,iBAAA,EAAmB,qBAAA;EAAA,SAC9B,qBAAA,GACP,KAAA,EAAO,mCAAA,KACJ,MAAA,CAAO,MAAA,OAAa,qBAAA;EAAA,SAChB,iBAAA,GACP,KAAA,EAAO,+BAAA,KACJ,MAAA,CAAO,MAAA,CAAO,iBAAA,EAAmB,qBAAA;EAAA,SAC7B,iBAAA,GACP,KAAA,EAAO,+BAAA,KACJ,MAAA,CAAO,MAAA,OAAa,qBAAA;EAAA,SAChB,cAAA,GAAiB,KAAA;IAAA,SACf,YAAA;IAAA,SACA,UAAA;EAAA,MACL,MAAA,CAAO,MAAA,OAAa,qBAAA;EAAA,SACjB,YAAA,GACP,KAAA,EAAO,yBAAA,KACJ,MAAA,CAAO,MAAA,CAAO,aAAA,CAAc,0BAAA,GAA6B,qBAAA;EAAA,SACrD,kBAAA,GACP,KAAA,EAAO,6BAAA,KACJ,MAAA,CAAO,MAAA,CAAO,aAAA,CAAc,0BAAA,GAA6B,qBAAA;EAAA,SACrD,gBAAA,GACP,KAAA,EAAO,iCAAA,KACJ,MAAA,CAAO,MAAA,CAAO,aAAA,CAAc,cAAA,GAAiB,qBAAA;AAAA;AAAA,cACnD,qBAAA;cAEY,gBAAA,SAAyB,qBAErC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-store.mjs","names":[],"sources":["../src/search-store.ts"],"sourcesContent":["import { Context } from 'effect'\nimport type { Effect } from 'effect'\nimport type { KnowledgeChunk, KnowledgeDocument, KnowledgeSearchScope, KnowledgeCollection } from './documents.ts'\nimport type { KnowledgeEmbedding } from './embeddings.ts'\nimport type { SearchIndexStoreError } from './errors.ts'\n\nexport type UpsertKnowledgeDocumentInput = {\n readonly document: KnowledgeDocument\n}\n\nexport type ReplaceKnowledgeDocumentChunksInput = {\n readonly collectionId: string\n readonly documentId: string\n readonly chunks: ReadonlyArray<{\n readonly chunk: KnowledgeChunk\n readonly embedding: KnowledgeEmbedding\n }>\n}\n\nexport type MarkKnowledgeDocumentReadyInput = {\n readonly collectionId: string\n readonly documentId: string\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 collectionId: string\n readonly documentId: string\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: KnowledgeDocument\n}\n\nexport type KnowledgeSearchContextChunksInput = {\n readonly collectionId: string\n readonly documentId: string\n readonly position: number\n readonly contextChunks: number\n}\n\nexport type SearchIndexStoreApi = {\n readonly upsertSet: (set: KnowledgeCollection) => Effect.Effect<KnowledgeCollection, SearchIndexStoreError>\n readonly getSet: (id: string) => Effect.Effect<KnowledgeCollection, SearchIndexStoreError>\n readonly upsertDocument: (\n input: UpsertKnowledgeDocumentInput\n ) => Effect.Effect<KnowledgeDocument, SearchIndexStoreError>\n readonly markDocumentProcessing: (input: {\n readonly collectionId: string\n readonly documentId: string\n }) => Effect.Effect<KnowledgeDocument, SearchIndexStoreError>\n readonly replaceDocumentChunks: (\n input: ReplaceKnowledgeDocumentChunksInput\n ) => Effect.Effect<void, SearchIndexStoreError>\n readonly markDocumentReady: (\n input: MarkKnowledgeDocumentReadyInput\n ) => Effect.Effect<KnowledgeDocument, SearchIndexStoreError>\n readonly markDocumentError: (\n input: MarkKnowledgeDocumentErrorInput\n ) => Effect.Effect<void, SearchIndexStoreError>\n readonly deleteDocument: (input: {\n readonly collectionId: string\n readonly documentId: string\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":";;AA+FA,IAAa,mBAAb,cAAsC,QAAQ,QAA+C,EAC3F,sCACF,EAAE,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { KnowledgeChunk, KnowledgeDocument, KnowledgeSearchScope } from "./documents.mjs";
|
|
2
|
+
import { KnowledgeSearchError } from "./errors.mjs";
|
|
3
|
+
import { KnowledgeEmbedder } from "./embeddings.mjs";
|
|
4
|
+
import { SearchIndexStore } from "./search-store.mjs";
|
|
5
|
+
import { Effect } from "effect";
|
|
6
|
+
|
|
7
|
+
//#region src/search.d.ts
|
|
8
|
+
type KnowledgeSearchInput = {
|
|
9
|
+
readonly scope: KnowledgeSearchScope;
|
|
10
|
+
readonly query: string;
|
|
11
|
+
readonly limit?: number;
|
|
12
|
+
readonly minScore?: number;
|
|
13
|
+
readonly contextChunks?: number;
|
|
14
|
+
readonly mode?: KnowledgeSearchMode;
|
|
15
|
+
readonly vectorLimit?: number;
|
|
16
|
+
readonly textLimit?: number;
|
|
17
|
+
};
|
|
18
|
+
type KnowledgeSearchMode = 'vector' | 'hybrid';
|
|
19
|
+
type KnowledgeSearchScores = {
|
|
20
|
+
readonly vector?: number;
|
|
21
|
+
readonly text?: number;
|
|
22
|
+
readonly fused?: number;
|
|
23
|
+
};
|
|
24
|
+
type KnowledgeSearchResult = {
|
|
25
|
+
readonly chunk: KnowledgeChunk;
|
|
26
|
+
readonly score: number;
|
|
27
|
+
readonly document: KnowledgeDocument;
|
|
28
|
+
readonly context?: ReadonlyArray<KnowledgeChunk>;
|
|
29
|
+
readonly scores?: KnowledgeSearchScores;
|
|
30
|
+
};
|
|
31
|
+
type KnowledgeSearchContext = {
|
|
32
|
+
readonly query: string;
|
|
33
|
+
readonly results: ReadonlyArray<KnowledgeSearchResult>;
|
|
34
|
+
readonly text: string;
|
|
35
|
+
};
|
|
36
|
+
type KnowledgeSearcher = {
|
|
37
|
+
readonly search: (input: KnowledgeSearchInput) => Effect.Effect<ReadonlyArray<KnowledgeSearchResult>, KnowledgeSearchError>;
|
|
38
|
+
};
|
|
39
|
+
declare const packKnowledgeSearchContext: (query: string, results: ReadonlyArray<KnowledgeSearchResult>) => KnowledgeSearchContext;
|
|
40
|
+
declare const fuseKnowledgeSearchResults: (input: {
|
|
41
|
+
readonly vectorResults: ReadonlyArray<KnowledgeSearchResult>;
|
|
42
|
+
readonly textResults: ReadonlyArray<KnowledgeSearchResult>;
|
|
43
|
+
readonly limit: number;
|
|
44
|
+
readonly rankConstant?: number;
|
|
45
|
+
}) => ReadonlyArray<KnowledgeSearchResult>;
|
|
46
|
+
declare const searchKnowledge: (input: KnowledgeSearchInput) => Effect.Effect<readonly KnowledgeSearchResult[], KnowledgeSearchError, SearchIndexStore | KnowledgeEmbedder>;
|
|
47
|
+
//#endregion
|
|
48
|
+
export { KnowledgeSearchContext, KnowledgeSearchInput, KnowledgeSearchMode, KnowledgeSearchResult, KnowledgeSearchScores, KnowledgeSearcher, fuseKnowledgeSearchResults, packKnowledgeSearchContext, searchKnowledge };
|
|
49
|
+
//# sourceMappingURL=search.d.mts.map
|
|
@@ -0,0 +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,iBAAA;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,GAA8B,KAAA,UAAe,OAAA,EAAS,aAAA,CAAc,qBAAA,MAAyB,sBAAA;AAAA,cAoB7F,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,cAsIL,eAAA,GAAmB,KAAA,EAAO,oBAAA,KAAoB,MAAA,CAAA,MAAA,UAAA,qBAAA,IAAA,oBAAA,EAAA,gBAAA,GAAA,iBAAA"}
|
package/dist/search.mjs
ADDED
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
import { KnowledgeSearchError } from "./errors.mjs";
|
|
2
|
+
import { KnowledgeEmbedder } from "./embeddings.mjs";
|
|
3
|
+
import { SearchIndexStore } from "./search-store.mjs";
|
|
4
|
+
import { Effect } from "effect";
|
|
5
|
+
//#region src/search.ts
|
|
6
|
+
const packedResultText = (result) => result.context?.map((chunk) => chunk.content).join("\n\n") ?? result.chunk.content;
|
|
7
|
+
const packKnowledgeSearchContext = (query, results) => ({
|
|
8
|
+
query,
|
|
9
|
+
results,
|
|
10
|
+
text: results.map(packedResultText).join("\n\n")
|
|
11
|
+
});
|
|
12
|
+
const scopeIds = (scope) => {
|
|
13
|
+
switch (scope._tag) {
|
|
14
|
+
case "KnowledgeCollection": return [scope.id];
|
|
15
|
+
case "KnowledgeCollections": return scope.ids;
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
const defaultHybridCandidateLimit = (limit) => Math.max(limit * 5, 40);
|
|
19
|
+
const reciprocalRankFusionScore = (rank, rankConstant) => 1 / (rankConstant + rank);
|
|
20
|
+
const fuseKnowledgeSearchResults = (input) => {
|
|
21
|
+
const rankConstant = input.rankConstant ?? 60;
|
|
22
|
+
const fused = /* @__PURE__ */ new Map();
|
|
23
|
+
const addResults = (results, kind) => {
|
|
24
|
+
results.forEach((result, index) => {
|
|
25
|
+
const rank = index + 1;
|
|
26
|
+
const previous = fused.get(result.chunk.id);
|
|
27
|
+
const nextFused = (previous?.fused ?? 0) + reciprocalRankFusionScore(rank, rankConstant);
|
|
28
|
+
fused.set(result.chunk.id, {
|
|
29
|
+
result: previous?.result ?? result,
|
|
30
|
+
vector: kind === "vector" ? result.score : previous?.vector,
|
|
31
|
+
text: kind === "text" ? result.score : previous?.text,
|
|
32
|
+
fused: nextFused
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
};
|
|
36
|
+
addResults(input.vectorResults, "vector");
|
|
37
|
+
addResults(input.textResults, "text");
|
|
38
|
+
return Array.from(fused.values()).sort((left, right) => right.fused - left.fused).slice(0, input.limit).map((item) => ({
|
|
39
|
+
...item.result,
|
|
40
|
+
score: item.fused,
|
|
41
|
+
scores: {
|
|
42
|
+
vector: item.vector,
|
|
43
|
+
text: item.text,
|
|
44
|
+
fused: item.fused
|
|
45
|
+
}
|
|
46
|
+
}));
|
|
47
|
+
};
|
|
48
|
+
const validateSearchInput = (input) => {
|
|
49
|
+
const query = input.query.trim();
|
|
50
|
+
const ids = scopeIds(input.scope);
|
|
51
|
+
const limit = input.limit ?? 10;
|
|
52
|
+
const contextChunks = input.contextChunks ?? 0;
|
|
53
|
+
const mode = input.mode ?? "hybrid";
|
|
54
|
+
const vectorLimit = input.vectorLimit ?? (mode === "hybrid" ? defaultHybridCandidateLimit(limit) : limit);
|
|
55
|
+
const textLimit = input.textLimit ?? defaultHybridCandidateLimit(limit);
|
|
56
|
+
if (query.length === 0) return Effect.fail(new KnowledgeSearchError({
|
|
57
|
+
message: "Search query is empty",
|
|
58
|
+
stage: "embed"
|
|
59
|
+
}));
|
|
60
|
+
if (ids.length === 0) return Effect.fail(new KnowledgeSearchError({
|
|
61
|
+
message: "Search scope is empty",
|
|
62
|
+
stage: "store"
|
|
63
|
+
}));
|
|
64
|
+
if (!Number.isInteger(limit) || limit < 1) return Effect.fail(new KnowledgeSearchError({
|
|
65
|
+
message: "Search limit must be positive",
|
|
66
|
+
stage: "store"
|
|
67
|
+
}));
|
|
68
|
+
if (!Number.isInteger(vectorLimit) || vectorLimit < 1) return Effect.fail(new KnowledgeSearchError({
|
|
69
|
+
message: "Vector search limit must be positive",
|
|
70
|
+
stage: "store"
|
|
71
|
+
}));
|
|
72
|
+
if (!Number.isInteger(textLimit) || textLimit < 1) return Effect.fail(new KnowledgeSearchError({
|
|
73
|
+
message: "Text search limit must be positive",
|
|
74
|
+
stage: "store"
|
|
75
|
+
}));
|
|
76
|
+
if (mode !== "vector" && mode !== "hybrid") return Effect.fail(new KnowledgeSearchError({
|
|
77
|
+
message: "Search mode is invalid",
|
|
78
|
+
stage: "store"
|
|
79
|
+
}));
|
|
80
|
+
if (!Number.isInteger(contextChunks) || contextChunks < 0) return Effect.fail(new KnowledgeSearchError({
|
|
81
|
+
message: "Context chunks must be zero or positive",
|
|
82
|
+
stage: "store"
|
|
83
|
+
}));
|
|
84
|
+
if (input.minScore !== void 0 && !Number.isFinite(input.minScore)) return Effect.fail(new KnowledgeSearchError({
|
|
85
|
+
message: "Search minScore must be finite",
|
|
86
|
+
stage: "store"
|
|
87
|
+
}));
|
|
88
|
+
return Effect.succeed({
|
|
89
|
+
query,
|
|
90
|
+
limit,
|
|
91
|
+
contextChunks,
|
|
92
|
+
mode,
|
|
93
|
+
vectorLimit,
|
|
94
|
+
textLimit
|
|
95
|
+
});
|
|
96
|
+
};
|
|
97
|
+
const searchVectorChunks = (input) => Effect.gen(function* () {
|
|
98
|
+
const store = yield* SearchIndexStore;
|
|
99
|
+
const embedding = yield* (yield* KnowledgeEmbedder).embedQuery(input.query).pipe(Effect.mapError((error) => new KnowledgeSearchError({
|
|
100
|
+
message: error.message,
|
|
101
|
+
stage: "embed",
|
|
102
|
+
cause: error
|
|
103
|
+
})));
|
|
104
|
+
return yield* store.searchChunks({
|
|
105
|
+
scope: input.scope,
|
|
106
|
+
embedding,
|
|
107
|
+
limit: input.limit,
|
|
108
|
+
minScore: input.minScore
|
|
109
|
+
}).pipe(Effect.mapError((error) => new KnowledgeSearchError({
|
|
110
|
+
message: error.message,
|
|
111
|
+
stage: "store",
|
|
112
|
+
cause: error
|
|
113
|
+
})));
|
|
114
|
+
});
|
|
115
|
+
const searchTextChunks = (input) => Effect.gen(function* () {
|
|
116
|
+
return yield* (yield* SearchIndexStore).searchChunksByText({
|
|
117
|
+
scope: input.scope,
|
|
118
|
+
query: input.query,
|
|
119
|
+
limit: input.limit
|
|
120
|
+
}).pipe(Effect.mapError((error) => new KnowledgeSearchError({
|
|
121
|
+
message: error.message,
|
|
122
|
+
stage: "store",
|
|
123
|
+
cause: error
|
|
124
|
+
})));
|
|
125
|
+
});
|
|
126
|
+
const searchKnowledge = (input) => Effect.gen(function* () {
|
|
127
|
+
const valid = yield* validateSearchInput(input);
|
|
128
|
+
yield* Effect.annotateCurrentSpan({
|
|
129
|
+
"knowledge_search.query_length": valid.query.length,
|
|
130
|
+
"knowledge_search.limit": valid.limit,
|
|
131
|
+
"knowledge_search.mode": valid.mode,
|
|
132
|
+
"knowledge_search.context_chunks": valid.contextChunks,
|
|
133
|
+
"knowledge_search.scope_count": scopeIds(input.scope).length
|
|
134
|
+
});
|
|
135
|
+
const store = yield* SearchIndexStore;
|
|
136
|
+
const results = valid.mode === "vector" ? yield* searchVectorChunks({
|
|
137
|
+
scope: input.scope,
|
|
138
|
+
query: valid.query,
|
|
139
|
+
limit: valid.vectorLimit,
|
|
140
|
+
minScore: input.minScore
|
|
141
|
+
}) : yield* Effect.gen(function* () {
|
|
142
|
+
const searches = yield* Effect.all({
|
|
143
|
+
vectorResults: searchVectorChunks({
|
|
144
|
+
scope: input.scope,
|
|
145
|
+
query: valid.query,
|
|
146
|
+
limit: valid.vectorLimit,
|
|
147
|
+
minScore: input.minScore
|
|
148
|
+
}),
|
|
149
|
+
textResults: searchTextChunks({
|
|
150
|
+
scope: input.scope,
|
|
151
|
+
query: valid.query,
|
|
152
|
+
limit: valid.textLimit
|
|
153
|
+
})
|
|
154
|
+
}, { concurrency: "unbounded" });
|
|
155
|
+
return fuseKnowledgeSearchResults({
|
|
156
|
+
vectorResults: searches.vectorResults,
|
|
157
|
+
textResults: searches.textResults,
|
|
158
|
+
limit: valid.limit
|
|
159
|
+
});
|
|
160
|
+
});
|
|
161
|
+
if (valid.contextChunks === 0) return results;
|
|
162
|
+
return yield* Effect.forEach(results, (result) => store.getContextChunks({
|
|
163
|
+
collectionId: result.chunk.collectionId,
|
|
164
|
+
documentId: result.chunk.documentId,
|
|
165
|
+
position: result.chunk.position,
|
|
166
|
+
contextChunks: valid.contextChunks
|
|
167
|
+
}).pipe(Effect.map((context) => ({
|
|
168
|
+
...result,
|
|
169
|
+
context
|
|
170
|
+
})), Effect.mapError((error) => new KnowledgeSearchError({
|
|
171
|
+
message: error.message,
|
|
172
|
+
stage: "store",
|
|
173
|
+
cause: error
|
|
174
|
+
}))));
|
|
175
|
+
}).pipe(Effect.withSpan("knowledge_search.search"));
|
|
176
|
+
//#endregion
|
|
177
|
+
export { fuseKnowledgeSearchResults, packKnowledgeSearchContext, searchKnowledge };
|
|
178
|
+
|
|
179
|
+
//# sourceMappingURL=search.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.mjs","names":[],"sources":["../src/search.ts"],"sourcesContent":["import { Effect } from 'effect'\nimport type { KnowledgeChunk, KnowledgeDocument, KnowledgeSearchScope } from './documents.ts'\nimport { KnowledgeEmbedder } from './embeddings.ts'\nimport { KnowledgeSearchError } from './errors.ts'\nimport { SearchIndexStore } from './search-store.ts'\n\nexport type KnowledgeSearchInput = {\n readonly scope: KnowledgeSearchScope\n readonly query: string\n readonly limit?: number\n readonly minScore?: number\n readonly contextChunks?: number\n readonly mode?: KnowledgeSearchMode\n readonly vectorLimit?: number\n readonly textLimit?: number\n}\n\nexport type KnowledgeSearchMode = 'vector' | 'hybrid'\n\nexport type KnowledgeSearchScores = {\n readonly vector?: number\n readonly text?: number\n readonly fused?: number\n}\n\nexport type KnowledgeSearchResult = {\n readonly chunk: KnowledgeChunk\n readonly score: number\n readonly document: KnowledgeDocument\n readonly context?: ReadonlyArray<KnowledgeChunk>\n readonly scores?: KnowledgeSearchScores\n}\n\nexport type KnowledgeSearchContext = {\n readonly query: string\n readonly results: ReadonlyArray<KnowledgeSearchResult>\n readonly text: string\n}\n\nexport type KnowledgeSearcher = {\n readonly search: (\n input: KnowledgeSearchInput\n ) => Effect.Effect<ReadonlyArray<KnowledgeSearchResult>, KnowledgeSearchError>\n}\n\nconst packedResultText = (result: KnowledgeSearchResult) =>\n result.context?.map(chunk => chunk.content).join('\\n\\n') ?? result.chunk.content\n\nexport const packKnowledgeSearchContext = (query: string, results: ReadonlyArray<KnowledgeSearchResult>): KnowledgeSearchContext =>\n ({\n query,\n results,\n text: results.map(packedResultText).join('\\n\\n')\n })\n\nconst scopeIds = (scope: KnowledgeSearchScope): ReadonlyArray<string> => {\n switch (scope._tag) {\n case 'KnowledgeCollection':\n return [scope.id]\n case 'KnowledgeCollections':\n return scope.ids\n }\n}\n\nconst defaultHybridCandidateLimit = (limit: number) => Math.max(limit * 5, 40)\n\nconst reciprocalRankFusionScore = (rank: number, rankConstant: number) => 1 / (rankConstant + rank)\n\nexport const fuseKnowledgeSearchResults = (input: {\n readonly vectorResults: ReadonlyArray<KnowledgeSearchResult>\n readonly textResults: ReadonlyArray<KnowledgeSearchResult>\n readonly limit: number\n readonly rankConstant?: number\n}): ReadonlyArray<KnowledgeSearchResult> => {\n const rankConstant = input.rankConstant ?? 60\n const fused = new Map<\n string,\n {\n readonly result: KnowledgeSearchResult\n readonly vector?: number\n readonly text?: number\n readonly fused: number\n }\n >()\n\n const addResults = (results: ReadonlyArray<KnowledgeSearchResult>, kind: 'vector' | 'text') => {\n results.forEach((result, index) => {\n const rank = index + 1\n const previous = fused.get(result.chunk.id)\n const nextFused = (previous?.fused ?? 0) + reciprocalRankFusionScore(rank, rankConstant)\n fused.set(result.chunk.id, {\n result: previous?.result ?? result,\n vector: kind === 'vector' ? result.score : previous?.vector,\n text: kind === 'text' ? result.score : previous?.text,\n fused: nextFused\n })\n })\n }\n\n addResults(input.vectorResults, 'vector')\n addResults(input.textResults, 'text')\n\n return Array.from(fused.values())\n .sort((left, right) => right.fused - left.fused)\n .slice(0, input.limit)\n .map(item => ({\n ...item.result,\n score: item.fused,\n scores: { vector: item.vector, text: item.text, fused: item.fused }\n }))\n}\n\nconst validateSearchInput = (input: KnowledgeSearchInput) => {\n const query = input.query.trim()\n const ids = scopeIds(input.scope)\n const limit = input.limit ?? 10\n const contextChunks = input.contextChunks ?? 0\n const mode = input.mode ?? 'hybrid'\n const vectorLimit = input.vectorLimit ?? (mode === 'hybrid' ? defaultHybridCandidateLimit(limit) : limit)\n const textLimit = input.textLimit ?? defaultHybridCandidateLimit(limit)\n\n if (query.length === 0) {\n return Effect.fail(new KnowledgeSearchError({ message: 'Search query is empty', stage: 'embed' }))\n }\n\n if (ids.length === 0) {\n return Effect.fail(new KnowledgeSearchError({ message: 'Search scope is empty', stage: 'store' }))\n }\n\n if (!Number.isInteger(limit) || limit < 1) {\n return Effect.fail(new KnowledgeSearchError({ message: 'Search limit must be positive', stage: 'store' }))\n }\n\n if (!Number.isInteger(vectorLimit) || vectorLimit < 1) {\n return Effect.fail(new KnowledgeSearchError({ message: 'Vector search limit must be positive', stage: 'store' }))\n }\n\n if (!Number.isInteger(textLimit) || textLimit < 1) {\n return Effect.fail(new KnowledgeSearchError({ message: 'Text search limit must be positive', stage: 'store' }))\n }\n\n if (mode !== 'vector' && mode !== 'hybrid') {\n return Effect.fail(new KnowledgeSearchError({ message: 'Search mode is invalid', stage: 'store' }))\n }\n\n if (!Number.isInteger(contextChunks) || contextChunks < 0) {\n return Effect.fail(\n new KnowledgeSearchError({ message: 'Context chunks must be zero or positive', stage: 'store' })\n )\n }\n\n if (input.minScore !== undefined && !Number.isFinite(input.minScore)) {\n return Effect.fail(\n new KnowledgeSearchError({ message: 'Search minScore must be finite', stage: 'store' })\n )\n }\n\n return Effect.succeed({ query, limit, contextChunks, mode, vectorLimit, textLimit })\n}\n\nconst searchVectorChunks = (input: {\n readonly scope: KnowledgeSearchScope\n readonly query: string\n readonly limit: number\n readonly minScore?: number\n}) =>\n Effect.gen(function* () {\n const store = yield* SearchIndexStore\n const embedder = yield* KnowledgeEmbedder\n const embedding = yield* embedder\n .embedQuery(input.query)\n .pipe(\n Effect.mapError(\n error => new KnowledgeSearchError({ message: error.message, stage: 'embed', cause: error })\n )\n )\n\n return yield* store\n .searchChunks({\n scope: input.scope,\n embedding,\n limit: input.limit,\n minScore: input.minScore\n })\n .pipe(\n Effect.mapError(\n error => new KnowledgeSearchError({ message: error.message, stage: 'store', cause: error })\n )\n )\n })\n\nconst searchTextChunks = (input: {\n readonly scope: KnowledgeSearchScope\n readonly query: string\n readonly limit: number\n}) =>\n Effect.gen(function* () {\n const store = yield* SearchIndexStore\n return yield* store\n .searchChunksByText({ scope: input.scope, query: input.query, limit: input.limit })\n .pipe(\n Effect.mapError(\n error => new KnowledgeSearchError({ message: error.message, stage: 'store', cause: error })\n )\n )\n })\n\nexport const searchKnowledge = (input: KnowledgeSearchInput) =>\n Effect.gen(function* () {\n const valid = yield* validateSearchInput(input)\n yield* Effect.annotateCurrentSpan({\n 'knowledge_search.query_length': valid.query.length,\n 'knowledge_search.limit': valid.limit,\n 'knowledge_search.mode': valid.mode,\n 'knowledge_search.context_chunks': valid.contextChunks,\n 'knowledge_search.scope_count': scopeIds(input.scope).length\n })\n const store = yield* SearchIndexStore\n const results: ReadonlyArray<KnowledgeSearchResult> = valid.mode === 'vector'\n ? yield* searchVectorChunks({\n scope: input.scope,\n query: valid.query,\n limit: valid.vectorLimit,\n minScore: input.minScore\n })\n : yield* Effect.gen(function* () {\n const searches = yield* Effect.all(\n {\n vectorResults: searchVectorChunks({\n scope: input.scope,\n query: valid.query,\n limit: valid.vectorLimit,\n minScore: input.minScore\n }),\n textResults: searchTextChunks({\n scope: input.scope,\n query: valid.query,\n limit: valid.textLimit\n })\n },\n { concurrency: 'unbounded' }\n )\n\n return fuseKnowledgeSearchResults({\n vectorResults: searches.vectorResults,\n textResults: searches.textResults,\n limit: valid.limit\n })\n })\n\n if (valid.contextChunks === 0) {\n return results\n }\n\n return yield* Effect.forEach(results, result =>\n store\n .getContextChunks({\n collectionId: result.chunk.collectionId,\n documentId: result.chunk.documentId,\n position: result.chunk.position,\n contextChunks: valid.contextChunks\n })\n .pipe(\n Effect.map(context => ({ ...result, context })),\n Effect.mapError(\n error => new KnowledgeSearchError({ message: error.message, stage: 'store', cause: error })\n )\n )\n )\n }).pipe(Effect.withSpan('knowledge_search.search'))\n"],"mappings":"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"}
|
package/dist/store.d.mts
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { CreateKnowledgeRecordInput, KnowledgeRecord, KnowledgeScope, UpdateKnowledgeRecordInput } from "./records.mjs";
|
|
2
|
+
import { KnowledgeStoreError } from "./errors.mjs";
|
|
3
|
+
import { KnowledgeArtifact } from "./artifacts.mjs";
|
|
4
|
+
import { KnowledgeRepresentation } from "./representations.mjs";
|
|
5
|
+
import { KnowledgeLink } from "./links.mjs";
|
|
6
|
+
import { KnowledgeProvenance } from "./provenance.mjs";
|
|
7
|
+
import { Context, Effect } from "effect";
|
|
8
|
+
|
|
9
|
+
//#region src/store.d.ts
|
|
10
|
+
type GetKnowledgeRecordInput = {
|
|
11
|
+
readonly scope: KnowledgeScope;
|
|
12
|
+
readonly id: string;
|
|
13
|
+
};
|
|
14
|
+
type ListKnowledgeRecordsInput = {
|
|
15
|
+
readonly scope: KnowledgeScope;
|
|
16
|
+
readonly limit: number;
|
|
17
|
+
};
|
|
18
|
+
type ListKnowledgeRecordsResult = {
|
|
19
|
+
readonly records: ReadonlyArray<KnowledgeRecord>;
|
|
20
|
+
};
|
|
21
|
+
type ListPinnedKnowledgeInput = {
|
|
22
|
+
readonly scope: KnowledgeScope;
|
|
23
|
+
readonly limit: number;
|
|
24
|
+
};
|
|
25
|
+
type ListPinnedKnowledgeResult = {
|
|
26
|
+
readonly records: ReadonlyArray<KnowledgeRecord>;
|
|
27
|
+
readonly representations: ReadonlyArray<KnowledgeRepresentation>;
|
|
28
|
+
};
|
|
29
|
+
type KnowledgeStoreApi = {
|
|
30
|
+
readonly createRecord: (input: CreateKnowledgeRecordInput) => Effect.Effect<KnowledgeRecord, KnowledgeStoreError>;
|
|
31
|
+
readonly updateRecord: (input: UpdateKnowledgeRecordInput) => Effect.Effect<KnowledgeRecord, KnowledgeStoreError>;
|
|
32
|
+
readonly getRecord: (input: GetKnowledgeRecordInput) => Effect.Effect<KnowledgeRecord, KnowledgeStoreError>;
|
|
33
|
+
readonly listRecords: (input: ListKnowledgeRecordsInput) => Effect.Effect<ListKnowledgeRecordsResult, KnowledgeStoreError>;
|
|
34
|
+
readonly listPinned: (input: ListPinnedKnowledgeInput) => Effect.Effect<ListPinnedKnowledgeResult, KnowledgeStoreError>;
|
|
35
|
+
readonly deleteRecord: (input: GetKnowledgeRecordInput) => Effect.Effect<void, KnowledgeStoreError>;
|
|
36
|
+
readonly listArtifacts: (input: GetKnowledgeRecordInput) => Effect.Effect<ReadonlyArray<KnowledgeArtifact>, KnowledgeStoreError>;
|
|
37
|
+
readonly listProvenance: (input: GetKnowledgeRecordInput) => Effect.Effect<ReadonlyArray<KnowledgeProvenance>, KnowledgeStoreError>;
|
|
38
|
+
readonly listLinks: (input: GetKnowledgeRecordInput) => Effect.Effect<ReadonlyArray<KnowledgeLink>, KnowledgeStoreError>;
|
|
39
|
+
};
|
|
40
|
+
declare const KnowledgeStore_base: Context.ServiceClass<KnowledgeStore, "@yolk-sdk/knowledge/KnowledgeStore", KnowledgeStoreApi>;
|
|
41
|
+
declare class KnowledgeStore extends KnowledgeStore_base {}
|
|
42
|
+
//#endregion
|
|
43
|
+
export { GetKnowledgeRecordInput, KnowledgeStore, KnowledgeStoreApi, ListKnowledgeRecordsInput, ListKnowledgeRecordsResult, ListPinnedKnowledgeInput, ListPinnedKnowledgeResult };
|
|
44
|
+
//# sourceMappingURL=store.d.mts.map
|