@yolk-sdk/knowledge 0.1.0-canary.77 → 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 +21 -8
- package/dist/agent.d.mts.map +1 -1
- package/dist/agent.mjs +2 -3
- package/dist/agent.mjs.map +1 -1
- package/dist/chunking.d.mts +5 -5
- package/dist/chunking.d.mts.map +1 -1
- package/dist/chunking.mjs.map +1 -1
- package/dist/context.mjs.map +1 -1
- package/dist/documents.d.mts +44 -31
- package/dist/documents.d.mts.map +1 -1
- package/dist/documents.mjs +24 -30
- package/dist/documents.mjs.map +1 -1
- package/dist/errors.mjs +3 -3
- package/dist/errors.mjs.map +1 -1
- package/dist/ingestion.d.mts +13 -12
- package/dist/ingestion.d.mts.map +1 -1
- package/dist/ingestion.mjs.map +1 -1
- package/dist/search.d.mts.map +1 -1
- package/dist/search.mjs +5 -7
- package/dist/search.mjs.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 +3 -3
- package/src/agent.ts +17 -5
- package/src/chunking.ts +17 -3
- package/src/context.ts +1 -0
- package/src/documents.ts +60 -29
- package/src/errors.ts +3 -3
- package/src/index.ts +3 -0
- package/src/ingestion.ts +5 -2
- package/src/search.ts +14 -9
- package/src/store.ts +15 -13
package/README.md
CHANGED
|
@@ -5,11 +5,11 @@ Domain-free knowledge document/source/file/context, ingestion, hybrid search, an
|
|
|
5
5
|
## Install
|
|
6
6
|
|
|
7
7
|
```bash
|
|
8
|
-
pnpm add @yolk-sdk/knowledge@canary @yolk-sdk/agent@canary effect@4.0.0-
|
|
8
|
+
pnpm add @yolk-sdk/knowledge@canary @yolk-sdk/agent@canary effect@4.0.0-rc.115
|
|
9
9
|
```
|
|
10
10
|
|
|
11
11
|
Canary APIs are unstable. Keep all `@yolk-sdk/*` packages on the same version.
|
|
12
|
-
Use the SDK's matching Effect version (`4.0.0-
|
|
12
|
+
Use the SDK's matching Effect version (`4.0.0-rc.115`) in host code.
|
|
13
13
|
Published package metadata requires Node.js 22+.
|
|
14
14
|
|
|
15
15
|
## Model
|
|
@@ -40,11 +40,12 @@ Optional files and chunks are modeled as `KnowledgeFile` and `KnowledgeChunk`. F
|
|
|
40
40
|
metadata and host-owned blob keys; `KnowledgeFileBlobStore` stores the bytes separately. Chunks are
|
|
41
41
|
search-index records. Hosts own blob storage, chunk persistence, transactions, and lifecycle.
|
|
42
42
|
|
|
43
|
-
`KnowledgeSource` is a separate ingestion ADT
|
|
43
|
+
`KnowledgeSource` is a separate ingestion ADT. Build variants with `Schema.TaggedStruct` constructors
|
|
44
|
+
from `@yolk-sdk/knowledge/documents`:
|
|
44
45
|
|
|
45
|
-
- `
|
|
46
|
-
- `
|
|
47
|
-
- `
|
|
46
|
+
- `KnowledgeFileSource.make({ ref, name?, mediaType? })` — host-owned `ref` plus optional name/media type
|
|
47
|
+
- `KnowledgeUrlSource.make({ url })` — host-owned URL string
|
|
48
|
+
- `KnowledgeTextSource.make({ label? })` — optional label; bytes/text arrive through `LoadedKnowledgeSource.content`
|
|
48
49
|
|
|
49
50
|
`IndexedKnowledgeDocument` is the search-index record. It carries `source`, indexing `status`, and
|
|
50
51
|
optional title/summary/error/hash/count metadata. It is distinct from the content-oriented
|
|
@@ -65,7 +66,12 @@ ready/pinned documents and exclude processing, error, or archived records as app
|
|
|
65
66
|
|
|
66
67
|
`KnowledgeScope` and `KnowledgeSearchScope` are opaque, caller-provided routing metadata. Hosts
|
|
67
68
|
construct and enforce them; the package does not infer identity, tenancy, or permissions from scope
|
|
68
|
-
ids or kinds.
|
|
69
|
+
ids or kinds. The **value** `KnowledgeSearchScope` is the single-id constructor
|
|
70
|
+
(`KnowledgeSearchScope.make({ id })`, tag `KnowledgeScope`). `KnowledgeSearchScopes.make({ ids })`
|
|
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.
|
|
69
75
|
|
|
70
76
|
## Subpaths
|
|
71
77
|
|
|
@@ -89,7 +95,14 @@ ids or kinds.
|
|
|
89
95
|
|
|
90
96
|
```ts
|
|
91
97
|
import { buildKnowledgeContext, KnowledgeStore } from '@yolk-sdk/knowledge'
|
|
92
|
-
import
|
|
98
|
+
import {
|
|
99
|
+
KnowledgeFileSource,
|
|
100
|
+
KnowledgeSearchScope,
|
|
101
|
+
KnowledgeSearchScopes,
|
|
102
|
+
KnowledgeTextSource,
|
|
103
|
+
KnowledgeUrlSource,
|
|
104
|
+
type KnowledgeDocument
|
|
105
|
+
} from '@yolk-sdk/knowledge/documents'
|
|
93
106
|
import { KnowledgeFileBlobStore } from '@yolk-sdk/knowledge/files'
|
|
94
107
|
import { makeKnowledgeLookupTool, makeKnowledgeManageTool } from '@yolk-sdk/knowledge/agent'
|
|
95
108
|
```
|
package/dist/agent.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.d.mts","names":[],"sources":["../src/agent.ts"],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"agent.d.mts","names":[],"sources":["../src/agent.ts"],"mappings":";;;;;;KA0EY,eAAA;EAAA,SACD,IAAA;EAAA,SACA,KAAK;AAAA;AAAA,KAGJ,qBAAA;EAAA,SACD,QAAA,EAAU,iBAAA;EAAA,SACV,KAAA;EAAA,SACA,OAAA,GAAU,aAAa;IAAA,SAAY,OAAA;EAAA;AAAA;AAAA,KAGlC,sBAAA;EAAA,SACD,EAAA;EAAA,SACA,IAAA;EAAA,SACA,KAAA;AAAA;AAAA,KAGC,uBAAA;EAAA,SACD,MAAA,GAAS,KAAA;IAAA,SACP,OAAA,EAAS,OAAA;IAAA,SACT,KAAA;IAAA,SACA,KAAA;IAAA,SACA,QAAA;IAAA,SACA,aAAA;EAAA,MACL,MAAA,CAAO,MAAA,CAAO,aAAA,CAAc,qBAAA,GAAwB,SAAA;EAAA,SACjD,GAAA,GAAM,KAAA;IAAA,SACJ,OAAA,EAAS,OAAA;IAAA,SACT,EAAA;IAAA,SACA,MAAA,GAAS,eAAA;EAAA,MACd,MAAA,CAAO,MAAA,CAAO,iBAAA,EAAmB,SAAA;AAAA;AAAA,KAG7B,uBAAA;EAAA,SACD,MAAA,GAAS,KAAA;IAAA,SACP,OAAA,EAAS,OAAA;IAAA,SACT,MAAA,EAAQ,eAAA;IAAA,SACR,KAAA;IAAA,SACA,OAAA;IAAA,SACA,MAAA;IAAA,SACA,OAAA;IAAA,SACA,YAAA,EAAc,qBAAA;EAAA,MACnB,MAAA,CAAO,MAAA,CAAO,sBAAA,EAAwB,SAAA;EAAA,SACnC,eAAA,GAAkB,KAAA;IAAA,SAChB,OAAA,EAAS,OAAA;IAAA,SACT,MAAA,EAAQ,eAAA;IAAA,SACR,YAAA,EAAc,qBAAA;EAAA,MACnB,MAAA,CAAO,MAAA,CAAO,sBAAA,EAAwB,SAAA;EAAA,SACnC,UAAA,GAAa,KAAA;IAAA,SACX,OAAA,EAAS,OAAA;IAAA,SACT,MAAA,EAAQ,eAAA;IAAA,SACR,QAAA;EAAA,MACL,MAAA,CAAO,MAAA,CAAO,sBAAA,EAAwB,SAAA;EAAA,SACnC,MAAA,GAAS,KAAA;IAAA,SACP,OAAA,EAAS,OAAA;IAAA,SACT,MAAA,EAAQ,eAAA;EAAA,MACb,MAAA,CAAO,MAAA,CAAO,sBAAA,EAAwB,SAAA;AAAA;AAAA,cAoDjC,uBAAA,YACX,QAAA,EAAU,uBAAA,CAAwB,OAAA,GAClC,OAAA;EAAA,SAAoB,IAAA;EAAA,SAAwB,WAAA;AAAA,MAC3C,gBAAA,CAAiB,OAAA;AAAA,cAqCP,uBAAA,YACX,QAAA,EAAU,uBAAA,CAAwB,OAAA,GAClC,OAAA;EAAA,SAAoB,IAAA;EAAA,SAAwB,WAAA;AAAA,MAC3C,gBAAA,CAAiB,OAAA"}
|
package/dist/agent.mjs
CHANGED
|
@@ -49,7 +49,6 @@ const KnowledgeManageParams = Schema.Union([
|
|
|
49
49
|
target: KnowledgeTargetParamsSchema
|
|
50
50
|
})
|
|
51
51
|
]);
|
|
52
|
-
const unknownToMessage = (error) => error instanceof Error ? error.message : String(error);
|
|
53
52
|
const optionalValue = (value) => value ?? void 0;
|
|
54
53
|
const targetFromParams = (target) => target.scope === null || target.scope === void 0 ? { slug: target.slug } : {
|
|
55
54
|
slug: target.slug,
|
|
@@ -90,7 +89,7 @@ const makeKnowledgeLookupTool = (handlers, options = {}) => {
|
|
|
90
89
|
description: options.description ?? "Look up durable knowledge. Search for semantic discovery; get when document_id or slug is known.",
|
|
91
90
|
parameters: KnowledgeLookupParams,
|
|
92
91
|
access: "read",
|
|
93
|
-
invalidParamsMessage: (error) => `Invalid knowledge lookup arguments: ${
|
|
92
|
+
invalidParamsMessage: (error) => `Invalid knowledge lookup arguments: ${error instanceof Error ? error.message : String(error)}`,
|
|
94
93
|
execute: ({ call, context, params }) => Effect.gen(function* () {
|
|
95
94
|
if (params.operation === "search") {
|
|
96
95
|
const results = yield* handlers.search({
|
|
@@ -123,7 +122,7 @@ const makeKnowledgeManageTool = (handlers, options = {}) => {
|
|
|
123
122
|
description: options.description ?? "Create, replace, pin, archive, rename, or delete durable knowledge. Use only when explicitly asked.",
|
|
124
123
|
parameters: KnowledgeManageParams,
|
|
125
124
|
access: "write",
|
|
126
|
-
invalidParamsMessage: (error) => `Invalid knowledge manage arguments: ${
|
|
125
|
+
invalidParamsMessage: (error) => `Invalid knowledge manage arguments: ${error instanceof Error ? error.message : String(error)}`,
|
|
127
126
|
execute: ({ call, context, params }) => Effect.gen(function* () {
|
|
128
127
|
switch (params.operation) {
|
|
129
128
|
case "upsert": {
|
package/dist/agent.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.mjs","names":[],"sources":["../src/agent.ts"],"sourcesContent":["import { Effect } from 'effect'\nimport * as Schema from 'effect/Schema'\nimport { ToolError } from '@yolk-sdk/agent/loop'\nimport { ToolResult } from '@yolk-sdk/agent/protocol'\nimport { makeTool, type ToolRegistration } from '@yolk-sdk/agent/tools'\nimport {\n KnowledgeAvailabilitySchema,\n NonNegativeInteger,\n NonEmptyTrimmedString,\n PositiveInteger,\n type KnowledgeAvailability,\n type KnowledgeDocument\n} from './documents.ts'\n\nconst OptionalNonEmptyTrimmedString = Schema.optional(Schema.NullOr(NonEmptyTrimmedString))\nconst OptionalPositiveInteger = Schema.optional(Schema.NullOr(PositiveInteger))\nconst OptionalNonNegativeInteger = Schema.optional(Schema.NullOr(NonNegativeInteger))\nconst OptionalNumber = Schema.optional(Schema.NullOr(Schema.Number))\n\nconst KnowledgeTargetParamsSchema = Schema.Struct({\n slug: NonEmptyTrimmedString,\n scope: OptionalNonEmptyTrimmedString\n})\n\nconst KnowledgeLookupParams = Schema.Union([\n Schema.Struct({\n operation: Schema.Literal('search'),\n query: NonEmptyTrimmedString,\n limit: OptionalPositiveInteger,\n minScore: OptionalNumber,\n contextChunks: OptionalNonNegativeInteger\n }),\n Schema.Struct({\n operation: Schema.Literal('get'),\n id: OptionalNonEmptyTrimmedString,\n target: Schema.optional(Schema.NullOr(KnowledgeTargetParamsSchema))\n })\n])\n\nconst KnowledgeManageParams = Schema.Union([\n Schema.Struct({\n operation: Schema.Literal('upsert'),\n target: KnowledgeTargetParamsSchema,\n title: NonEmptyTrimmedString,\n purpose: NonEmptyTrimmedString,\n origin: NonEmptyTrimmedString,\n content: NonEmptyTrimmedString,\n availability: KnowledgeAvailabilitySchema\n }),\n Schema.Struct({\n operation: Schema.Literal('set_availability'),\n target: KnowledgeTargetParamsSchema,\n availability: KnowledgeAvailabilitySchema\n }),\n Schema.Struct({\n operation: Schema.Literal('rename_slug'),\n target: KnowledgeTargetParamsSchema,\n nextSlug: NonEmptyTrimmedString\n }),\n Schema.Struct({\n operation: Schema.Literal('delete'),\n target: KnowledgeTargetParamsSchema\n })\n])\n\ntype KnowledgeTargetParams = typeof KnowledgeTargetParamsSchema.Type\ntype KnowledgeLookupParams = typeof KnowledgeLookupParams.Type\ntype KnowledgeManageParams = typeof KnowledgeManageParams.Type\n\nexport type KnowledgeTarget = {\n readonly slug: string\n readonly scope?: string\n}\n\nexport type KnowledgeLookupResult = {\n readonly document: KnowledgeDocument\n readonly score?: number\n readonly context?: ReadonlyArray<{ readonly content: string }>\n}\n\nexport type KnowledgeSavedDocument = {\n readonly id: string\n readonly slug: string\n readonly title: string\n}\n\nexport type KnowledgeLookupHandlers<Context> = {\n readonly search: (input: {\n readonly context: Context\n readonly query: string\n readonly limit?: number\n readonly minScore?: number\n readonly contextChunks?: number\n }) => Effect.Effect<ReadonlyArray<KnowledgeLookupResult>, ToolError>\n readonly get: (input: {\n readonly context: Context\n readonly id?: string\n readonly target?: KnowledgeTarget\n }) => Effect.Effect<KnowledgeDocument, ToolError>\n}\n\nexport type KnowledgeManageHandlers<Context> = {\n readonly upsert: (input: {\n readonly context: Context\n readonly target: KnowledgeTarget\n readonly title: string\n readonly purpose: string\n readonly origin: string\n readonly content: string\n readonly availability: KnowledgeAvailability\n }) => Effect.Effect<KnowledgeSavedDocument, ToolError>\n readonly setAvailability: (input: {\n readonly context: Context\n readonly target: KnowledgeTarget\n readonly availability: KnowledgeAvailability\n }) => Effect.Effect<KnowledgeSavedDocument, ToolError>\n readonly renameSlug: (input: {\n readonly context: Context\n readonly target: KnowledgeTarget\n readonly nextSlug: string\n }) => Effect.Effect<KnowledgeSavedDocument, ToolError>\n readonly delete: (input: {\n readonly context: Context\n readonly target: KnowledgeTarget\n }) => Effect.Effect<KnowledgeSavedDocument, ToolError>\n}\n\nconst unknownToMessage = (error: unknown) =>\n error instanceof Error ? error.message : String(error)\n\nconst optionalValue = <Value>(value: Value | null | undefined) => value ?? undefined\n\nconst targetFromParams = (target: KnowledgeTargetParams): KnowledgeTarget =>\n target.scope === null || target.scope === undefined\n ? { slug: target.slug }\n : { slug: target.slug, scope: target.scope }\n\nconst optionalTargetFromParams = (target: KnowledgeTargetParams | null | undefined) =>\n target === null || target === undefined ? undefined : targetFromParams(target)\n\nconst formatDocument = (document: KnowledgeDocument) =>\n [\n `# ${document.title}`,\n `document_id: ${document.id}`,\n `slug: ${document.slug}`,\n `purpose: ${document.purpose}`,\n `origin: ${document.origin}`,\n `availability: ${document.availability}`,\n `status: ${document.status}`,\n '',\n document.content\n ].join('\\n')\n\nconst formatSearchResults = (results: ReadonlyArray<KnowledgeLookupResult>) =>\n results.length === 0\n ? 'No knowledge matches found.'\n : results\n .map(result =>\n [\n `## ${result.document.title}`,\n `document_id: ${result.document.id}`,\n `slug: ${result.document.slug}`,\n `purpose: ${result.document.purpose}`,\n `origin: ${result.document.origin}`,\n `availability: ${result.document.availability}`,\n result.score === undefined ? undefined : `score: ${result.score}`,\n '',\n result.context?.map(chunk => chunk.content).join('\\n\\n') ?? result.document.content\n ]\n .filter(line => line !== undefined)\n .join('\\n')\n )\n .join('\\n\\n')\n\nconst formatSaved = (verb: string, document: KnowledgeSavedDocument) =>\n [verb, `title: ${document.title}`, `slug: ${document.slug}`, `document_id: ${document.id}`].join(\n '\\n'\n )\n\nexport const makeKnowledgeLookupTool = <Context>(\n handlers: KnowledgeLookupHandlers<Context>,\n options: { readonly name?: string; readonly description?: string } = {}\n): ToolRegistration<Context> => {\n const name = options.name ?? 'knowledge_lookup'\n\n return makeTool({\n name,\n description:\n options.description ??\n 'Look up durable knowledge. Search for semantic discovery; get when document_id or slug is known.',\n parameters: KnowledgeLookupParams,\n access: 'read',\n invalidParamsMessage: error => `Invalid knowledge lookup arguments: ${unknownToMessage(error)}`,\n execute: ({ call, context, params }) =>\n Effect.gen(function* () {\n if (params.operation === 'search') {\n const results = yield* handlers.search({\n context,\n query: params.query,\n limit: optionalValue(params.limit),\n minScore: optionalValue(params.minScore),\n contextChunks: optionalValue(params.contextChunks)\n })\n\n return ToolResult.make({ toolCallId: call.id, content: formatSearchResults(results) })\n }\n\n const document = yield* handlers.get({\n context,\n id: optionalValue(params.id),\n target: optionalTargetFromParams(params.target)\n })\n return ToolResult.make({ toolCallId: call.id, content: formatDocument(document) })\n })\n })\n}\n\nexport const makeKnowledgeManageTool = <Context>(\n handlers: KnowledgeManageHandlers<Context>,\n options: { readonly name?: string; readonly description?: string } = {}\n): ToolRegistration<Context> => {\n const name = options.name ?? 'knowledge_manage'\n\n return makeTool({\n name,\n description:\n options.description ??\n 'Create, replace, pin, archive, rename, or delete durable knowledge. Use only when explicitly asked.',\n parameters: KnowledgeManageParams,\n access: 'write',\n invalidParamsMessage: error => `Invalid knowledge manage arguments: ${unknownToMessage(error)}`,\n execute: ({ call, context, params }) =>\n Effect.gen(function* () {\n switch (params.operation) {\n case 'upsert': {\n const document = yield* handlers.upsert({\n context,\n target: targetFromParams(params.target),\n title: params.title,\n purpose: params.purpose,\n origin: params.origin,\n content: params.content,\n availability: params.availability\n })\n return ToolResult.make({\n toolCallId: call.id,\n content: formatSaved('Knowledge upserted', document)\n })\n }\n case 'set_availability': {\n const document = yield* handlers.setAvailability({\n context,\n target: targetFromParams(params.target),\n availability: params.availability\n })\n return ToolResult.make({\n toolCallId: call.id,\n content: formatSaved('Knowledge availability updated', document)\n })\n }\n case 'rename_slug': {\n const document = yield* handlers.renameSlug({\n context,\n target: targetFromParams(params.target),\n nextSlug: params.nextSlug\n })\n return ToolResult.make({\n toolCallId: call.id,\n content: formatSaved('Knowledge slug renamed', document)\n })\n }\n case 'delete': {\n const document = yield* handlers.delete({\n context,\n target: targetFromParams(params.target)\n })\n return ToolResult.make({\n toolCallId: call.id,\n content: formatSaved('Knowledge deleted', document)\n })\n }\n }\n\n return yield* Effect.fail(\n new ToolError({\n tool: call.name,\n message: 'Unsupported knowledge operation',\n cause: 'validation'\n })\n )\n })\n })\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"agent.mjs","names":[],"sources":["../src/agent.ts"],"sourcesContent":["import { Effect } from 'effect'\nimport * as Schema from 'effect/Schema'\nimport { ToolError } from '@yolk-sdk/agent/loop'\nimport { ToolResult } from '@yolk-sdk/agent/protocol'\nimport { makeTool, type ToolRegistration } from '@yolk-sdk/agent/tools'\nimport {\n KnowledgeAvailabilitySchema,\n NonNegativeInteger,\n NonEmptyTrimmedString,\n PositiveInteger,\n type KnowledgeAvailability,\n type KnowledgeDocument\n} from './documents.ts'\n\nconst OptionalNonEmptyTrimmedString = Schema.optional(Schema.NullOr(NonEmptyTrimmedString))\n\nconst OptionalPositiveInteger = Schema.optional(Schema.NullOr(PositiveInteger))\n\nconst OptionalNonNegativeInteger = Schema.optional(Schema.NullOr(NonNegativeInteger))\n\nconst OptionalNumber = Schema.optional(Schema.NullOr(Schema.Number))\n\nconst KnowledgeTargetParamsSchema = Schema.Struct({\n slug: NonEmptyTrimmedString,\n scope: OptionalNonEmptyTrimmedString\n})\n\nconst KnowledgeLookupParams = Schema.Union([\n Schema.Struct({\n operation: Schema.Literal('search'),\n query: NonEmptyTrimmedString,\n limit: OptionalPositiveInteger,\n minScore: OptionalNumber,\n contextChunks: OptionalNonNegativeInteger\n }),\n Schema.Struct({\n operation: Schema.Literal('get'),\n id: OptionalNonEmptyTrimmedString,\n target: Schema.optional(Schema.NullOr(KnowledgeTargetParamsSchema))\n })\n])\n\nconst KnowledgeManageParams = Schema.Union([\n Schema.Struct({\n operation: Schema.Literal('upsert'),\n target: KnowledgeTargetParamsSchema,\n title: NonEmptyTrimmedString,\n purpose: NonEmptyTrimmedString,\n origin: NonEmptyTrimmedString,\n content: NonEmptyTrimmedString,\n availability: KnowledgeAvailabilitySchema\n }),\n Schema.Struct({\n operation: Schema.Literal('set_availability'),\n target: KnowledgeTargetParamsSchema,\n availability: KnowledgeAvailabilitySchema\n }),\n Schema.Struct({\n operation: Schema.Literal('rename_slug'),\n target: KnowledgeTargetParamsSchema,\n nextSlug: NonEmptyTrimmedString\n }),\n Schema.Struct({\n operation: Schema.Literal('delete'),\n target: KnowledgeTargetParamsSchema\n })\n])\n\ntype KnowledgeTargetParams = typeof KnowledgeTargetParamsSchema.Type\n\ntype KnowledgeLookupParams = typeof KnowledgeLookupParams.Type\n\ntype KnowledgeManageParams = typeof KnowledgeManageParams.Type\n\nexport type KnowledgeTarget = {\n readonly slug: string\n readonly scope?: string\n}\n\nexport type KnowledgeLookupResult = {\n readonly document: KnowledgeDocument\n readonly score?: number\n readonly context?: ReadonlyArray<{ readonly content: string }>\n}\n\nexport type KnowledgeSavedDocument = {\n readonly id: string\n readonly slug: string\n readonly title: string\n}\n\nexport type KnowledgeLookupHandlers<Context> = {\n readonly search: (input: {\n readonly context: Context\n readonly query: string\n readonly limit?: number\n readonly minScore?: number\n readonly contextChunks?: number\n }) => Effect.Effect<ReadonlyArray<KnowledgeLookupResult>, ToolError>\n readonly get: (input: {\n readonly context: Context\n readonly id?: string\n readonly target?: KnowledgeTarget\n }) => Effect.Effect<KnowledgeDocument, ToolError>\n}\n\nexport type KnowledgeManageHandlers<Context> = {\n readonly upsert: (input: {\n readonly context: Context\n readonly target: KnowledgeTarget\n readonly title: string\n readonly purpose: string\n readonly origin: string\n readonly content: string\n readonly availability: KnowledgeAvailability\n }) => Effect.Effect<KnowledgeSavedDocument, ToolError>\n readonly setAvailability: (input: {\n readonly context: Context\n readonly target: KnowledgeTarget\n readonly availability: KnowledgeAvailability\n }) => Effect.Effect<KnowledgeSavedDocument, ToolError>\n readonly renameSlug: (input: {\n readonly context: Context\n readonly target: KnowledgeTarget\n readonly nextSlug: string\n }) => Effect.Effect<KnowledgeSavedDocument, ToolError>\n readonly delete: (input: {\n readonly context: Context\n readonly target: KnowledgeTarget\n }) => Effect.Effect<KnowledgeSavedDocument, ToolError>\n}\n\nconst optionalValue = <Value>(value: Value | null | undefined) => value ?? undefined\n\nconst targetFromParams = (target: KnowledgeTargetParams): KnowledgeTarget =>\n target.scope === null || target.scope === undefined\n ? { slug: target.slug }\n : { slug: target.slug, scope: target.scope }\n\nconst optionalTargetFromParams = (target: KnowledgeTargetParams | null | undefined) =>\n target === null || target === undefined ? undefined : targetFromParams(target)\n\nconst formatDocument = (document: KnowledgeDocument) =>\n [\n `# ${document.title}`,\n `document_id: ${document.id}`,\n `slug: ${document.slug}`,\n `purpose: ${document.purpose}`,\n `origin: ${document.origin}`,\n `availability: ${document.availability}`,\n `status: ${document.status}`,\n '',\n document.content\n ].join('\\n')\n\nconst formatSearchResults = (results: ReadonlyArray<KnowledgeLookupResult>) =>\n results.length === 0\n ? 'No knowledge matches found.'\n : results\n .map(result =>\n [\n `## ${result.document.title}`,\n `document_id: ${result.document.id}`,\n `slug: ${result.document.slug}`,\n `purpose: ${result.document.purpose}`,\n `origin: ${result.document.origin}`,\n `availability: ${result.document.availability}`,\n result.score === undefined ? undefined : `score: ${result.score}`,\n '',\n result.context?.map(chunk => chunk.content).join('\\n\\n') ?? result.document.content\n ]\n .filter(line => line !== undefined)\n .join('\\n')\n )\n .join('\\n\\n')\n\nconst formatSaved = (verb: string, document: KnowledgeSavedDocument) =>\n [verb, `title: ${document.title}`, `slug: ${document.slug}`, `document_id: ${document.id}`].join(\n '\\n'\n )\n\nexport const makeKnowledgeLookupTool = <Context>(\n handlers: KnowledgeLookupHandlers<Context>,\n options: { readonly name?: string; readonly description?: string } = {}\n): ToolRegistration<Context> => {\n const name = options.name ?? 'knowledge_lookup'\n\n return makeTool({\n name,\n description:\n options.description ??\n 'Look up durable knowledge. Search for semantic discovery; get when document_id or slug is known.',\n parameters: KnowledgeLookupParams,\n access: 'read',\n invalidParamsMessage: error =>\n `Invalid knowledge lookup arguments: ${error instanceof Error ? error.message : String(error)}`,\n execute: ({ call, context, params }) =>\n Effect.gen(function* () {\n if (params.operation === 'search') {\n const results = yield* handlers.search({\n context,\n query: params.query,\n limit: optionalValue(params.limit),\n minScore: optionalValue(params.minScore),\n contextChunks: optionalValue(params.contextChunks)\n })\n\n return ToolResult.make({ toolCallId: call.id, content: formatSearchResults(results) })\n }\n\n const document = yield* handlers.get({\n context,\n id: optionalValue(params.id),\n target: optionalTargetFromParams(params.target)\n })\n\n return ToolResult.make({ toolCallId: call.id, content: formatDocument(document) })\n })\n })\n}\n\nexport const makeKnowledgeManageTool = <Context>(\n handlers: KnowledgeManageHandlers<Context>,\n options: { readonly name?: string; readonly description?: string } = {}\n): ToolRegistration<Context> => {\n const name = options.name ?? 'knowledge_manage'\n\n return makeTool({\n name,\n description:\n options.description ??\n 'Create, replace, pin, archive, rename, or delete durable knowledge. Use only when explicitly asked.',\n parameters: KnowledgeManageParams,\n access: 'write',\n invalidParamsMessage: error =>\n `Invalid knowledge manage arguments: ${error instanceof Error ? error.message : String(error)}`,\n execute: ({ call, context, params }) =>\n Effect.gen(function* () {\n switch (params.operation) {\n case 'upsert': {\n const document = yield* handlers.upsert({\n context,\n target: targetFromParams(params.target),\n title: params.title,\n purpose: params.purpose,\n origin: params.origin,\n content: params.content,\n availability: params.availability\n })\n\n return ToolResult.make({\n toolCallId: call.id,\n content: formatSaved('Knowledge upserted', document)\n })\n }\n\n case 'set_availability': {\n const document = yield* handlers.setAvailability({\n context,\n target: targetFromParams(params.target),\n availability: params.availability\n })\n\n return ToolResult.make({\n toolCallId: call.id,\n content: formatSaved('Knowledge availability updated', document)\n })\n }\n\n case 'rename_slug': {\n const document = yield* handlers.renameSlug({\n context,\n target: targetFromParams(params.target),\n nextSlug: params.nextSlug\n })\n\n return ToolResult.make({\n toolCallId: call.id,\n content: formatSaved('Knowledge slug renamed', document)\n })\n }\n\n case 'delete': {\n const document = yield* handlers.delete({\n context,\n target: targetFromParams(params.target)\n })\n\n return ToolResult.make({\n toolCallId: call.id,\n content: formatSaved('Knowledge deleted', document)\n })\n }\n }\n\n return yield* Effect.fail(\n new ToolError({\n tool: call.name,\n message: 'Unsupported knowledge operation',\n cause: 'validation'\n })\n )\n })\n })\n}\n"],"mappings":"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"}
|
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/context.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.mjs","names":["Arr"],"sources":["../src/context.ts"],"sourcesContent":["import { Array as Arr } from 'effect'\nimport type { KnowledgeDocument } from './documents.ts'\n\nexport type BuildKnowledgeContextInput = {\n readonly documents: ReadonlyArray<KnowledgeDocument>\n readonly maxCharacters: number\n}\n\nconst truncationMarker = '\\n\\n[truncated: pinned knowledge exceeded context budget]'\n\nconst documentHeader = (document: KnowledgeDocument) =>\n [\n `## ${document.title}`,\n `slug: ${document.slug}`,\n `purpose: ${document.purpose}`,\n `origin: ${document.origin}`,\n `status: ${document.status}`,\n `availability: ${document.availability}`,\n document.reviewedAt === undefined ? undefined : `reviewed_at: ${document.reviewedAt.toString()}`\n ]\n .filter(line => line !== undefined && line.trim().length > 0)\n .join('\\n')\n\nconst documentBody = (document: KnowledgeDocument) =>\n [documentHeader(document), document.summary, document.content]\n .filter(section => section !== undefined && section.trim().length > 0)\n .join('\\n')\n\nexport const buildKnowledgeContext = (input: BuildKnowledgeContextInput) => {\n const sections = Arr.map(input.documents, documentBody).filter(\n section => section.trim().length > 0\n )\n const header = '# Pinned knowledge\\nUse this durable knowledge as high-priority context.'\n const body = sections.join('\\n\\n')\n const context = body.length === 0 ? '' : `${header}\\n\\n${body}`\n\n if (context.length <= input.maxCharacters) {\n return context\n }\n\n if (input.maxCharacters <= truncationMarker.length) {\n return context.slice(0, input.maxCharacters).trimEnd()\n }\n\n return `${context.slice(0, input.maxCharacters - truncationMarker.length).trimEnd()}${truncationMarker}`\n}\n"],"mappings":";;AAQA,MAAM,mBAAmB;AAEzB,MAAM,kBAAkB,aACtB;CACE,MAAM,SAAS;CACf,SAAS,SAAS;CAClB,YAAY,SAAS;CACrB,WAAW,SAAS;CACpB,WAAW,SAAS;CACpB,iBAAiB,SAAS;CAC1B,SAAS,eAAe,KAAA,IAAY,KAAA,IAAY,gBAAgB,SAAS,WAAW,SAAS;AAC/F,EACG,QAAO,SAAQ,SAAS,KAAA,KAAa,KAAK,KAAK,EAAE,SAAS,CAAC,EAC3D,KAAK,IAAI;AAEd,MAAM,gBAAgB,aACpB;CAAC,eAAe,QAAQ;CAAG,SAAS;CAAS,SAAS;AAAO,EAC1D,QAAO,YAAW,YAAY,KAAA,KAAa,QAAQ,KAAK,EAAE,SAAS,CAAC,EACpE,KAAK,IAAI;AAEd,MAAa,yBAAyB,UAAsC;CAC1E,MAAM,WAAWA,MAAI,IAAI,MAAM,WAAW,YAAY,EAAE,QACtD,YAAW,QAAQ,KAAK,EAAE,SAAS,CACrC;
|
|
1
|
+
{"version":3,"file":"context.mjs","names":["Arr"],"sources":["../src/context.ts"],"sourcesContent":["import { Array as Arr } from 'effect'\nimport type { KnowledgeDocument } from './documents.ts'\n\nexport type BuildKnowledgeContextInput = {\n readonly documents: ReadonlyArray<KnowledgeDocument>\n readonly maxCharacters: number\n}\n\nconst truncationMarker = '\\n\\n[truncated: pinned knowledge exceeded context budget]'\n\nconst documentHeader = (document: KnowledgeDocument) =>\n [\n `## ${document.title}`,\n `slug: ${document.slug}`,\n `purpose: ${document.purpose}`,\n `origin: ${document.origin}`,\n `status: ${document.status}`,\n `availability: ${document.availability}`,\n document.reviewedAt === undefined ? undefined : `reviewed_at: ${document.reviewedAt.toString()}`\n ]\n .filter(line => line !== undefined && line.trim().length > 0)\n .join('\\n')\n\nconst documentBody = (document: KnowledgeDocument) =>\n [documentHeader(document), document.summary, document.content]\n .filter(section => section !== undefined && section.trim().length > 0)\n .join('\\n')\n\nexport const buildKnowledgeContext = (input: BuildKnowledgeContextInput) => {\n const sections = Arr.map(input.documents, documentBody).filter(\n section => section.trim().length > 0\n )\n\n const header = '# Pinned knowledge\\nUse this durable knowledge as high-priority context.'\n const body = sections.join('\\n\\n')\n const context = body.length === 0 ? '' : `${header}\\n\\n${body}`\n\n if (context.length <= input.maxCharacters) {\n return context\n }\n\n if (input.maxCharacters <= truncationMarker.length) {\n return context.slice(0, input.maxCharacters).trimEnd()\n }\n\n return `${context.slice(0, input.maxCharacters - truncationMarker.length).trimEnd()}${truncationMarker}`\n}\n"],"mappings":";;AAQA,MAAM,mBAAmB;AAEzB,MAAM,kBAAkB,aACtB;CACE,MAAM,SAAS;CACf,SAAS,SAAS;CAClB,YAAY,SAAS;CACrB,WAAW,SAAS;CACpB,WAAW,SAAS;CACpB,iBAAiB,SAAS;CAC1B,SAAS,eAAe,KAAA,IAAY,KAAA,IAAY,gBAAgB,SAAS,WAAW,SAAS;AAC/F,EACG,QAAO,SAAQ,SAAS,KAAA,KAAa,KAAK,KAAK,EAAE,SAAS,CAAC,EAC3D,KAAK,IAAI;AAEd,MAAM,gBAAgB,aACpB;CAAC,eAAe,QAAQ;CAAG,SAAS;CAAS,SAAS;AAAO,EAC1D,QAAO,YAAW,YAAY,KAAA,KAAa,QAAQ,KAAK,EAAE,SAAS,CAAC,EACpE,KAAK,IAAI;AAEd,MAAa,yBAAyB,UAAsC;CAC1E,MAAM,WAAWA,MAAI,IAAI,MAAM,WAAW,YAAY,EAAE,QACtD,YAAW,QAAQ,KAAK,EAAE,SAAS,CACrC;CAEA,MAAM,SAAS;CACf,MAAM,OAAO,SAAS,KAAK,MAAM;CACjC,MAAM,UAAU,KAAK,WAAW,IAAI,KAAK,GAAG,OAAO,MAAM;CAEzD,IAAI,QAAQ,UAAU,MAAM,eAC1B,OAAO;CAGT,IAAI,MAAM,iBAAiB,IACzB,OAAO,QAAQ,MAAM,GAAG,MAAM,aAAa,EAAE,QAAQ;CAGvD,OAAO,GAAG,QAAQ,MAAM,GAAG,MAAM,gBAAgB,EAAuB,EAAE,QAAQ,IAAI;AACxF"}
|
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,48 +83,57 @@ 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;
|
|
87
91
|
readonly metadata: Schema.optional<Schema.$Record<Schema.String, Schema.Unknown>>;
|
|
88
92
|
}>;
|
|
89
93
|
type KnowledgeChunk = Schema.Schema.Type<typeof KnowledgeChunkSchema>;
|
|
90
|
-
declare const
|
|
91
|
-
readonly
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
readonly
|
|
95
|
-
|
|
94
|
+
declare const KnowledgeSearchScope: Schema.TaggedStruct<"KnowledgeScope", {
|
|
95
|
+
readonly id: Schema.brand<Schema.Trimmed, "KnowledgeScopeId">;
|
|
96
|
+
}>;
|
|
97
|
+
declare const KnowledgeSearchScopes: Schema.TaggedStruct<"KnowledgeScopes", {
|
|
98
|
+
readonly ids: Schema.NonEmptyArray<Schema.brand<Schema.Trimmed, "KnowledgeScopeId">>;
|
|
99
|
+
}>;
|
|
100
|
+
declare const KnowledgeSearchScopeSchema: Schema.Union<readonly [Schema.TaggedStruct<"KnowledgeScope", {
|
|
101
|
+
readonly id: Schema.brand<Schema.Trimmed, "KnowledgeScopeId">;
|
|
102
|
+
}>, Schema.TaggedStruct<"KnowledgeScopes", {
|
|
103
|
+
readonly ids: Schema.NonEmptyArray<Schema.brand<Schema.Trimmed, "KnowledgeScopeId">>;
|
|
96
104
|
}>]>;
|
|
97
|
-
type KnowledgeSearchScope =
|
|
98
|
-
declare const
|
|
99
|
-
readonly _tag: Schema.Literal<"File">;
|
|
105
|
+
type KnowledgeSearchScope = typeof KnowledgeSearchScopeSchema.Type;
|
|
106
|
+
declare const KnowledgeFileSource: Schema.TaggedStruct<"File", {
|
|
100
107
|
readonly ref: Schema.Trimmed;
|
|
101
108
|
readonly name: Schema.optional<Schema.Trimmed>;
|
|
102
109
|
readonly mediaType: Schema.optional<Schema.Trimmed>;
|
|
103
|
-
}
|
|
104
|
-
|
|
110
|
+
}>;
|
|
111
|
+
declare const KnowledgeUrlSource: Schema.TaggedStruct<"Url", {
|
|
105
112
|
readonly url: Schema.Trimmed;
|
|
106
|
-
}
|
|
107
|
-
|
|
113
|
+
}>;
|
|
114
|
+
declare const KnowledgeTextSource: Schema.TaggedStruct<"Text", {
|
|
115
|
+
readonly label: Schema.optional<Schema.Trimmed>;
|
|
116
|
+
}>;
|
|
117
|
+
declare const KnowledgeSourceSchema: Schema.Union<readonly [Schema.TaggedStruct<"File", {
|
|
118
|
+
readonly ref: Schema.Trimmed;
|
|
119
|
+
readonly name: Schema.optional<Schema.Trimmed>;
|
|
120
|
+
readonly mediaType: Schema.optional<Schema.Trimmed>;
|
|
121
|
+
}>, Schema.TaggedStruct<"Url", {
|
|
122
|
+
readonly url: Schema.Trimmed;
|
|
123
|
+
}>, Schema.TaggedStruct<"Text", {
|
|
108
124
|
readonly label: Schema.optional<Schema.Trimmed>;
|
|
109
125
|
}>]>;
|
|
110
|
-
type KnowledgeSource =
|
|
126
|
+
type KnowledgeSource = typeof KnowledgeSourceSchema.Type;
|
|
111
127
|
declare const IndexedKnowledgeDocumentSchema: Schema.Struct<{
|
|
112
|
-
readonly id: Schema.Trimmed
|
|
113
|
-
readonly scopeId: Schema.Trimmed
|
|
114
|
-
readonly source: Schema.Union<readonly [Schema.
|
|
115
|
-
readonly _tag: Schema.Literal<"File">;
|
|
128
|
+
readonly id: Schema.brand<Schema.Trimmed, "KnowledgeDocumentId">;
|
|
129
|
+
readonly scopeId: Schema.brand<Schema.Trimmed, "KnowledgeScopeId">;
|
|
130
|
+
readonly source: Schema.Union<readonly [Schema.TaggedStruct<"File", {
|
|
116
131
|
readonly ref: Schema.Trimmed;
|
|
117
132
|
readonly name: Schema.optional<Schema.Trimmed>;
|
|
118
133
|
readonly mediaType: Schema.optional<Schema.Trimmed>;
|
|
119
|
-
}>, Schema.
|
|
120
|
-
readonly _tag: Schema.Literal<"Url">;
|
|
134
|
+
}>, Schema.TaggedStruct<"Url", {
|
|
121
135
|
readonly url: Schema.Trimmed;
|
|
122
|
-
}>, Schema.
|
|
123
|
-
readonly _tag: Schema.Literal<"Text">;
|
|
136
|
+
}>, Schema.TaggedStruct<"Text", {
|
|
124
137
|
readonly label: Schema.optional<Schema.Trimmed>;
|
|
125
138
|
}>]>;
|
|
126
139
|
readonly status: Schema.Literals<readonly ["processing", "ready", "error"]>;
|
|
@@ -142,5 +155,5 @@ declare const ExtractedKnowledgeDocumentSchema: Schema.Struct<{
|
|
|
142
155
|
type ExtractedKnowledgeDocument = Schema.Schema.Type<typeof ExtractedKnowledgeDocumentSchema>;
|
|
143
156
|
declare const defaultKnowledgeChunkMaxTokens = 512;
|
|
144
157
|
//#endregion
|
|
145
|
-
export { CreateKnowledgeDocumentInput, CreateKnowledgeDocumentInputSchema, ExtractedKnowledgeDocument, ExtractedKnowledgeDocumentSchema, IndexedKnowledgeDocument, IndexedKnowledgeDocumentSchema, KnowledgeAvailability, KnowledgeAvailabilitySchema, KnowledgeChunk, KnowledgeChunkSchema, KnowledgeDocument, KnowledgeDocumentSchema, KnowledgeDocumentStatus, KnowledgeDocumentStatusSchema, KnowledgeFile, KnowledgeFileSchema, KnowledgeMetadata, KnowledgeMetadataSchema, KnowledgeScope, KnowledgeScopeSchema, KnowledgeSearchScope, KnowledgeSearchScopeSchema, KnowledgeSource, KnowledgeSourceSchema, 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 };
|
|
146
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,
|
|
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,39 +74,31 @@ 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
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
84
|
+
const KnowledgeSearchScope = Schema.TaggedStruct("KnowledgeScope", { id: KnowledgeScopeId });
|
|
85
|
+
const KnowledgeSearchScopes = Schema.TaggedStruct("KnowledgeScopes", { ids: Schema.NonEmptyArray(KnowledgeScopeId) });
|
|
86
|
+
const KnowledgeSearchScopeSchema = Schema.Union([KnowledgeSearchScope, KnowledgeSearchScopes]);
|
|
87
|
+
const KnowledgeFileSource = Schema.TaggedStruct("File", {
|
|
88
|
+
ref: NonEmptyTrimmedString,
|
|
89
|
+
name: Schema.optional(NonEmptyTrimmedString),
|
|
90
|
+
mediaType: Schema.optional(NonEmptyTrimmedString)
|
|
91
|
+
});
|
|
92
|
+
const KnowledgeUrlSource = Schema.TaggedStruct("Url", { url: NonEmptyTrimmedString });
|
|
93
|
+
const KnowledgeTextSource = Schema.TaggedStruct("Text", { label: Schema.optional(NonEmptyTrimmedString) });
|
|
89
94
|
const KnowledgeSourceSchema = Schema.Union([
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
name: Schema.optional(NonEmptyTrimmedString),
|
|
94
|
-
mediaType: Schema.optional(NonEmptyTrimmedString)
|
|
95
|
-
}),
|
|
96
|
-
Schema.Struct({
|
|
97
|
-
_tag: Schema.Literal("Url"),
|
|
98
|
-
url: NonEmptyTrimmedString
|
|
99
|
-
}),
|
|
100
|
-
Schema.Struct({
|
|
101
|
-
_tag: Schema.Literal("Text"),
|
|
102
|
-
label: Schema.optional(NonEmptyTrimmedString)
|
|
103
|
-
})
|
|
95
|
+
KnowledgeFileSource,
|
|
96
|
+
KnowledgeUrlSource,
|
|
97
|
+
KnowledgeTextSource
|
|
104
98
|
]);
|
|
105
99
|
const IndexedKnowledgeDocumentSchema = Schema.Struct({
|
|
106
|
-
id:
|
|
107
|
-
scopeId:
|
|
100
|
+
id: KnowledgeDocumentId,
|
|
101
|
+
scopeId: KnowledgeScopeId,
|
|
108
102
|
source: KnowledgeSourceSchema,
|
|
109
103
|
status: KnowledgeDocumentStatusSchema,
|
|
110
104
|
title: Schema.optional(NonEmptyTrimmedString),
|
|
@@ -123,6 +117,6 @@ const ExtractedKnowledgeDocumentSchema = Schema.Struct({
|
|
|
123
117
|
});
|
|
124
118
|
const defaultKnowledgeChunkMaxTokens = 512;
|
|
125
119
|
//#endregion
|
|
126
|
-
export { CreateKnowledgeDocumentInputSchema, ExtractedKnowledgeDocumentSchema, IndexedKnowledgeDocumentSchema, KnowledgeAvailabilitySchema, KnowledgeChunkSchema, KnowledgeDocumentSchema, KnowledgeDocumentStatusSchema, KnowledgeFileSchema, KnowledgeMetadataSchema, KnowledgeScopeSchema, KnowledgeSearchScopeSchema, KnowledgeSourceSchema, 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 };
|
|
127
121
|
|
|
128
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()))\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 KnowledgeAvailabilitySchema = Schema.Literals(['pinned', 'searchable', 'archived'])\nexport type KnowledgeAvailability = Schema.Schema.Type<typeof KnowledgeAvailabilitySchema>\n\nexport const KnowledgeDocumentStatusSchema = Schema.Literals(['processing', 'ready', 'error'])\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/errors.mjs
CHANGED
|
@@ -8,15 +8,15 @@ var KnowledgeEmbeddingError = class extends Data.TaggedError("KnowledgeEmbedding
|
|
|
8
8
|
var KnowledgeSummarizationError = class extends Data.TaggedError("KnowledgeSummarizationError") {};
|
|
9
9
|
var KnowledgeIngestionError = class extends Data.TaggedError("KnowledgeIngestionError") {};
|
|
10
10
|
var KnowledgeSearchError = class extends Data.TaggedError("KnowledgeSearchError") {};
|
|
11
|
-
var KnowledgeStoreError = class extends Schema.
|
|
11
|
+
var KnowledgeStoreError = class extends Schema.TaggedError()("KnowledgeStoreError", {
|
|
12
12
|
message: Schema.String,
|
|
13
13
|
cause: Schema.optional(Schema.Unknown)
|
|
14
14
|
}) {};
|
|
15
|
-
var KnowledgeFileError = class extends Schema.
|
|
15
|
+
var KnowledgeFileError = class extends Schema.TaggedError()("KnowledgeFileError", {
|
|
16
16
|
message: Schema.String,
|
|
17
17
|
cause: Schema.optional(Schema.Unknown)
|
|
18
18
|
}) {};
|
|
19
|
-
var KnowledgeContextError = class extends Schema.
|
|
19
|
+
var KnowledgeContextError = class extends Schema.TaggedError()("KnowledgeContextError", {
|
|
20
20
|
message: Schema.String,
|
|
21
21
|
cause: Schema.optional(Schema.Unknown)
|
|
22
22
|
}) {};
|
package/dist/errors.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.mjs","names":[],"sources":["../src/errors.ts"],"sourcesContent":["import { Data } from 'effect'\nimport * as Schema from 'effect/Schema'\n\nexport class SearchIndexStoreError extends Data.TaggedError('SearchIndexStoreError')<{\n readonly message: string\n readonly cause?: unknown\n}> {}\n\nexport class KnowledgeExtractionError extends Data.TaggedError('KnowledgeExtractionError')<{\n readonly message: string\n readonly cause?: unknown\n}> {}\n\nexport class KnowledgeChunkingError extends Data.TaggedError('KnowledgeChunkingError')<{\n readonly message: string\n readonly cause?: unknown\n}> {}\n\nexport class KnowledgeEmbeddingError extends Data.TaggedError('KnowledgeEmbeddingError')<{\n readonly message: string\n readonly cause?: unknown\n}> {}\n\nexport class KnowledgeSummarizationError extends Data.TaggedError('KnowledgeSummarizationError')<{\n readonly message: string\n readonly cause?: unknown\n}> {}\n\nexport class KnowledgeIngestionError extends Data.TaggedError('KnowledgeIngestionError')<{\n readonly message: string\n readonly stage: 'store' | 'extract' | 'chunk' | 'embed' | 'summarize'\n readonly cause?: unknown\n}> {}\n\nexport class KnowledgeSearchError extends Data.TaggedError('KnowledgeSearchError')<{\n readonly message: string\n readonly stage: 'store' | 'embed'\n readonly cause?: unknown\n}> {}\n\nexport class KnowledgeStoreError extends Schema.
|
|
1
|
+
{"version":3,"file":"errors.mjs","names":[],"sources":["../src/errors.ts"],"sourcesContent":["import { Data } from 'effect'\nimport * as Schema from 'effect/Schema'\n\nexport class SearchIndexStoreError extends Data.TaggedError('SearchIndexStoreError')<{\n readonly message: string\n readonly cause?: unknown\n}> {}\n\nexport class KnowledgeExtractionError extends Data.TaggedError('KnowledgeExtractionError')<{\n readonly message: string\n readonly cause?: unknown\n}> {}\n\nexport class KnowledgeChunkingError extends Data.TaggedError('KnowledgeChunkingError')<{\n readonly message: string\n readonly cause?: unknown\n}> {}\n\nexport class KnowledgeEmbeddingError extends Data.TaggedError('KnowledgeEmbeddingError')<{\n readonly message: string\n readonly cause?: unknown\n}> {}\n\nexport class KnowledgeSummarizationError extends Data.TaggedError('KnowledgeSummarizationError')<{\n readonly message: string\n readonly cause?: unknown\n}> {}\n\nexport class KnowledgeIngestionError extends Data.TaggedError('KnowledgeIngestionError')<{\n readonly message: string\n readonly stage: 'store' | 'extract' | 'chunk' | 'embed' | 'summarize'\n readonly cause?: unknown\n}> {}\n\nexport class KnowledgeSearchError extends Data.TaggedError('KnowledgeSearchError')<{\n readonly message: string\n readonly stage: 'store' | 'embed'\n readonly cause?: unknown\n}> {}\n\nexport class KnowledgeStoreError extends Schema.TaggedError<KnowledgeStoreError>()(\n 'KnowledgeStoreError',\n {\n message: Schema.String,\n cause: Schema.optional(Schema.Unknown)\n }\n) {}\n\nexport class KnowledgeFileError extends Schema.TaggedError<KnowledgeFileError>()(\n 'KnowledgeFileError',\n {\n message: Schema.String,\n cause: Schema.optional(Schema.Unknown)\n }\n) {}\n\nexport class KnowledgeContextError extends Schema.TaggedError<KnowledgeContextError>()(\n 'KnowledgeContextError',\n {\n message: Schema.String,\n cause: Schema.optional(Schema.Unknown)\n }\n) {}\n"],"mappings":";;;AAGA,IAAa,wBAAb,cAA2C,KAAK,YAAY,uBAAuB,EAGhF,CAAC;AAEJ,IAAa,2BAAb,cAA8C,KAAK,YAAY,0BAA0B,EAGtF,CAAC;AAEJ,IAAa,yBAAb,cAA4C,KAAK,YAAY,wBAAwB,EAGlF,CAAC;AAEJ,IAAa,0BAAb,cAA6C,KAAK,YAAY,yBAAyB,EAGpF,CAAC;AAEJ,IAAa,8BAAb,cAAiD,KAAK,YAAY,6BAA6B,EAG5F,CAAC;AAEJ,IAAa,0BAAb,cAA6C,KAAK,YAAY,yBAAyB,EAIpF,CAAC;AAEJ,IAAa,uBAAb,cAA0C,KAAK,YAAY,sBAAsB,EAI9E,CAAC;AAEJ,IAAa,sBAAb,cAAyC,OAAO,YAAiC,EAC/E,uBACA;CACE,SAAS,OAAO;CAChB,OAAO,OAAO,SAAS,OAAO,OAAO;AACvC,CACF,EAAE,CAAC;AAEH,IAAa,qBAAb,cAAwC,OAAO,YAAgC,EAC7E,sBACA;CACE,SAAS,OAAO;CAChB,OAAO,OAAO,SAAS,OAAO,OAAO;AACvC,CACF,EAAE,CAAC;AAEH,IAAa,wBAAb,cAA2C,OAAO,YAAmC,EACnF,yBACA;CACE,SAAS,OAAO;CAChB,OAAO,OAAO,SAAS,OAAO,OAAO;AACvC,CACF,EAAE,CAAC"}
|