@semiont/make-meaning 0.5.2 → 0.5.4
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 +13 -0
- package/dist/annotation-assembly.d.ts +8 -0
- package/dist/annotation-assembly.d.ts.map +1 -0
- package/dist/annotation-context.d.ts +104 -0
- package/dist/annotation-context.d.ts.map +1 -0
- package/dist/annotation-operations.d.ts +41 -0
- package/dist/annotation-operations.d.ts.map +1 -0
- package/dist/batch-utils.d.ts +14 -0
- package/dist/batch-utils.d.ts.map +1 -0
- package/dist/bootstrap/entity-types.d.ts +26 -0
- package/dist/bootstrap/entity-types.d.ts.map +1 -0
- package/dist/browser.d.ts +45 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/clone-token-manager.d.ts +31 -0
- package/dist/clone-token-manager.d.ts.map +1 -0
- package/dist/config.d.ts +55 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/embedding-store.d.ts +63 -0
- package/dist/embedding-store.d.ts.map +1 -0
- package/dist/event-enrichment.d.ts +5 -0
- package/dist/event-enrichment.d.ts.map +1 -0
- package/dist/exchange/backup-exporter.d.ts +43 -0
- package/dist/exchange/backup-exporter.d.ts.map +1 -0
- package/dist/exchange/backup-importer.d.ts +41 -0
- package/dist/exchange/backup-importer.d.ts.map +1 -0
- package/dist/exchange/index.d.ts +10 -0
- package/dist/exchange/index.d.ts.map +1 -0
- package/dist/exchange/linked-data-exporter.d.ts +42 -0
- package/dist/exchange/linked-data-exporter.d.ts.map +1 -0
- package/dist/exchange/linked-data-importer.d.ts +44 -0
- package/dist/exchange/linked-data-importer.d.ts.map +1 -0
- package/dist/exchange/manifest.d.ts +42 -0
- package/dist/exchange/manifest.d.ts.map +1 -0
- package/dist/exchange/replay.d.ts +37 -0
- package/dist/exchange/replay.d.ts.map +1 -0
- package/dist/exchange/tar.d.ts +34 -0
- package/dist/exchange/tar.d.ts.map +1 -0
- package/dist/gatherer.d.ts +45 -0
- package/dist/gatherer.d.ts.map +1 -0
- package/dist/generation/resource-generation.d.ts +20 -0
- package/dist/generation/resource-generation.d.ts.map +1 -0
- package/dist/graph/consumer.d.ts +104 -0
- package/dist/graph/consumer.d.ts.map +1 -0
- package/dist/graph-context.d.ts +56 -0
- package/dist/graph-context.d.ts.map +1 -0
- package/dist/handlers/annotation-assembly.d.ts +19 -0
- package/dist/handlers/annotation-assembly.d.ts.map +1 -0
- package/dist/handlers/annotation-lookups.d.ts +8 -0
- package/dist/handlers/annotation-lookups.d.ts.map +1 -0
- package/dist/handlers/bind-update-body.d.ts +19 -0
- package/dist/handlers/bind-update-body.d.ts.map +1 -0
- package/dist/handlers/index.d.ts +27 -0
- package/dist/handlers/index.d.ts.map +1 -0
- package/dist/handlers/job-commands.d.ts +5 -0
- package/dist/handlers/job-commands.d.ts.map +1 -0
- package/dist/index.d.ts +37 -1240
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +108 -27
- package/dist/index.js.map +1 -1
- package/dist/knowledge-base.d.ts +40 -0
- package/dist/knowledge-base.d.ts.map +1 -0
- package/dist/knowledge-system.d.ts +32 -0
- package/dist/knowledge-system.d.ts.map +1 -0
- package/dist/llm-context.d.ts +26 -0
- package/dist/llm-context.d.ts.map +1 -0
- package/dist/local-content-transport.d.ts +41 -0
- package/dist/local-content-transport.d.ts.map +1 -0
- package/dist/local-transport.d.ts +80 -0
- package/dist/local-transport.d.ts.map +1 -0
- package/dist/matcher.d.ts +60 -0
- package/dist/matcher.d.ts.map +1 -0
- package/dist/resource-context.d.ts +44 -0
- package/dist/resource-context.d.ts.map +1 -0
- package/dist/resource-operations.d.ts +38 -0
- package/dist/resource-operations.d.ts.map +1 -0
- package/dist/service.d.ts +21 -0
- package/dist/service.d.ts.map +1 -0
- package/dist/smelter-actor-state-unit.d.ts +31 -0
- package/dist/smelter-actor-state-unit.d.ts.map +1 -0
- package/dist/smelter-main.d.ts +16 -2
- package/dist/smelter-main.d.ts.map +1 -0
- package/dist/smelter-main.js +6 -2
- package/dist/smelter-main.js.map +1 -1
- package/dist/smelter.d.ts +95 -0
- package/dist/smelter.d.ts.map +1 -0
- package/dist/stower.d.ts +69 -0
- package/dist/stower.d.ts.map +1 -0
- package/dist/views/entity-types-reader.d.ts +12 -0
- package/dist/views/entity-types-reader.d.ts.map +1 -0
- package/dist/views/projection-validators.d.ts +80 -0
- package/dist/views/projection-validators.d.ts.map +1 -0
- package/dist/views/tag-schemas-reader.d.ts +14 -0
- package/dist/views/tag-schemas-reader.d.ts.map +1 -0
- package/package.json +4 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAGvE,YAAY,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAGzD,OAAO,EAAE,cAAc,EAAE,KAAK,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC9E,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAIlE,OAAO,EACL,mBAAmB,EACnB,iCAAiC,EACjC,gCAAgC,EAChC,6BAA6B,EAC7B,0BAA0B,GAC3B,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAGhE,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAGxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,YAAY,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGtD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,YAAY,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAK1D,OAAO,EACL,2BAA2B,EAC3B,KAAK,qBAAqB,EAC1B,KAAK,4BAA4B,EACjC,KAAK,YAAY,GAClB,MAAM,4BAA4B,CAAC;AAGpC,cAAc,YAAY,CAAC;AAG3B,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,YAAY,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAGjE,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAChF,YAAY,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAGjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,YAAY,EAAE,sBAAsB,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AAGlG,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,YAAY,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,YAAY,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACjF,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,YAAY,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAGvD,OAAO,EACL,uBAAuB,EACvB,4BAA4B,GAC7B,MAAM,kCAAkC,CAAC;AAG1C,eAAO,MAAM,YAAY,0BAA0B,CAAC;AACpD,eAAO,MAAM,OAAO,UAAU,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { FsJobQueue } from '@semiont/jobs';
|
|
2
2
|
import { FilesystemViewStorage, resolveStorageUri, EventQuery, createEventStore } from '@semiont/event-sourcing';
|
|
3
|
-
import { getPrimaryRepresentation, decodeRepresentation, getTargetSource, getBodySource, resourceId, getTargetSelector, getResourceEntityTypes, getResourceId, getTextPositionSelector, annotationId, errField, userId, generateUuid,
|
|
3
|
+
import { getPrimaryRepresentation, decodeRepresentation, getTargetSource, getBodySource, resourceId, getTargetSelector, getResourceEntityTypes, getResourceId, getTextPositionSelector, annotationId, errField, userId, generateUuid, getExactText, cloneToken, didToAgent, assembleAnnotation, jobId, entityType, baseUrl, busLog, BRIDGED_CHANNELS, applyBodyOperations, burstBuffer, findBodyItem } from '@semiont/core';
|
|
4
4
|
export { applyBodyOperations, assembleAnnotation } from '@semiont/core';
|
|
5
5
|
import { withActorSpan, recordBusEmit, withSpan, SpanKind, registerJobQueueProvider } from '@semiont/observability';
|
|
6
6
|
import { createInferenceClient } from '@semiont/inference';
|
|
@@ -8,7 +8,7 @@ import { getGraphDatabase } from '@semiont/graph';
|
|
|
8
8
|
import { WorkingTreeStore, deriveStorageUri, getExtensionForMimeType } from '@semiont/content';
|
|
9
9
|
import { getEntityTypes, DEFAULT_ENTITY_TYPES } from '@semiont/ontology';
|
|
10
10
|
import { promises } from 'fs';
|
|
11
|
-
import * as
|
|
11
|
+
import * as path3 from 'path';
|
|
12
12
|
import { createGzip, createGunzip } from 'zlib';
|
|
13
13
|
import { pipeline, Readable } from 'stream';
|
|
14
14
|
import { promisify } from 'util';
|
|
@@ -9953,7 +9953,6 @@ var GraphDBConsumer = class _GraphDBConsumer {
|
|
|
9953
9953
|
archived: false,
|
|
9954
9954
|
dateCreated: (/* @__PURE__ */ new Date()).toISOString(),
|
|
9955
9955
|
wasAttributedTo: didToAgent(event.userId),
|
|
9956
|
-
creationMethod: event.payload.creationMethod,
|
|
9957
9956
|
...event.payload.storageUri ? { storageUri: event.payload.storageUri } : {}
|
|
9958
9957
|
};
|
|
9959
9958
|
}
|
|
@@ -10673,7 +10672,6 @@ Summary:`;
|
|
|
10673
10672
|
entityTypes: resource.entityTypes,
|
|
10674
10673
|
representations: resource.representations,
|
|
10675
10674
|
archived: resource.archived,
|
|
10676
|
-
creationMethod: resource.creationMethod,
|
|
10677
10675
|
wasAttributedTo: resource.wasAttributedTo,
|
|
10678
10676
|
dateCreated: resource.dateCreated
|
|
10679
10677
|
}
|
|
@@ -11347,6 +11345,7 @@ var Stower = class {
|
|
|
11347
11345
|
pipe("mark:delete", (e) => this.handleMarkDelete(e)),
|
|
11348
11346
|
pipe("mark:update-body", (e) => this.handleMarkUpdateBody(e)),
|
|
11349
11347
|
pipe("frame:add-entity-type", (e) => this.handleAddEntityType(e)),
|
|
11348
|
+
pipe("frame:add-tag-schema", (e) => this.handleAddTagSchema(e)),
|
|
11350
11349
|
pipe("mark:archive", (e) => this.handleMarkArchive(e)),
|
|
11351
11350
|
pipe("mark:unarchive", (e) => this.handleMarkUnarchive(e)),
|
|
11352
11351
|
pipe("mark:update-entity-types", (e) => this.handleUpdateEntityTypes(e)),
|
|
@@ -11370,8 +11369,6 @@ var Stower = class {
|
|
|
11370
11369
|
const stored = await this.kb.content.register(event.storageUri, event.contentChecksum, { noGit: event.noGit });
|
|
11371
11370
|
const checksum = stored.checksum;
|
|
11372
11371
|
const byteSize = event.byteSize;
|
|
11373
|
-
const validCreationMethods = Object.values(CREATION_METHODS);
|
|
11374
|
-
const validatedCreationMethod = event.creationMethod && validCreationMethods.includes(event.creationMethod) ? event.creationMethod : CREATION_METHODS.API;
|
|
11375
11372
|
const generatedFrom = event.generatedFrom?.resourceId && event.generatedFrom?.annotationId ? {
|
|
11376
11373
|
resourceId: resourceId(event.generatedFrom.resourceId),
|
|
11377
11374
|
annotationId: annotationId(event.generatedFrom.annotationId)
|
|
@@ -11387,7 +11384,6 @@ var Stower = class {
|
|
|
11387
11384
|
contentChecksum: checksum,
|
|
11388
11385
|
contentByteSize: byteSize,
|
|
11389
11386
|
storageUri: event.storageUri,
|
|
11390
|
-
creationMethod: validatedCreationMethod,
|
|
11391
11387
|
entityTypes: event.entityTypes || [],
|
|
11392
11388
|
language: event.language || void 0,
|
|
11393
11389
|
isDraft: event.isDraft ?? false,
|
|
@@ -11402,7 +11398,6 @@ var Stower = class {
|
|
|
11402
11398
|
name: event.name,
|
|
11403
11399
|
archived: false,
|
|
11404
11400
|
entityTypes: event.entityTypes || [],
|
|
11405
|
-
creationMethod: validatedCreationMethod,
|
|
11406
11401
|
storageUri: event.storageUri,
|
|
11407
11402
|
currentChecksum: checksum,
|
|
11408
11403
|
dateCreated: (/* @__PURE__ */ new Date()).toISOString(),
|
|
@@ -11634,6 +11629,24 @@ var Stower = class {
|
|
|
11634
11629
|
});
|
|
11635
11630
|
}
|
|
11636
11631
|
}
|
|
11632
|
+
async handleAddTagSchema(event) {
|
|
11633
|
+
if (!event._userId) {
|
|
11634
|
+
throw new Error("frame:add-tag-schema missing _userId (gateway injection)");
|
|
11635
|
+
}
|
|
11636
|
+
try {
|
|
11637
|
+
await this.kb.eventStore.appendEvent({
|
|
11638
|
+
type: "frame:tag-schema-added",
|
|
11639
|
+
userId: userId(event._userId),
|
|
11640
|
+
version: 1,
|
|
11641
|
+
payload: { schema: event.schema }
|
|
11642
|
+
});
|
|
11643
|
+
} catch (error) {
|
|
11644
|
+
this.logger.error("Failed to add tag schema", { schemaId: event.schema?.id, error: errField(error) });
|
|
11645
|
+
this.eventBus.get("frame:tag-schema-add-failed").next({
|
|
11646
|
+
message: error instanceof Error ? error.message : String(error)
|
|
11647
|
+
});
|
|
11648
|
+
}
|
|
11649
|
+
}
|
|
11637
11650
|
async handleUpdateEntityTypes(event) {
|
|
11638
11651
|
if (!event._userId) {
|
|
11639
11652
|
throw new Error("mark:update-entity-types missing _userId (gateway injection)");
|
|
@@ -11721,7 +11734,7 @@ var Stower = class {
|
|
|
11721
11734
|
var import_rxjs5 = __toESM(require_cjs());
|
|
11722
11735
|
var import_operators5 = __toESM(require_operators());
|
|
11723
11736
|
async function readEntityTypesProjection(project) {
|
|
11724
|
-
const entityTypesPath =
|
|
11737
|
+
const entityTypesPath = path3.join(
|
|
11725
11738
|
project.stateDir,
|
|
11726
11739
|
"projections",
|
|
11727
11740
|
"__system__",
|
|
@@ -11738,6 +11751,24 @@ async function readEntityTypesProjection(project) {
|
|
|
11738
11751
|
throw error;
|
|
11739
11752
|
}
|
|
11740
11753
|
}
|
|
11754
|
+
async function readTagSchemasProjection(project) {
|
|
11755
|
+
const tagSchemasPath = path3.join(
|
|
11756
|
+
project.stateDir,
|
|
11757
|
+
"projections",
|
|
11758
|
+
"__system__",
|
|
11759
|
+
"tagschemas.json"
|
|
11760
|
+
);
|
|
11761
|
+
try {
|
|
11762
|
+
const content = await promises.readFile(tagSchemasPath, "utf-8");
|
|
11763
|
+
const projection = JSON.parse(content);
|
|
11764
|
+
return projection.tagSchemas || [];
|
|
11765
|
+
} catch (error) {
|
|
11766
|
+
if (error.code === "ENOENT") {
|
|
11767
|
+
return [];
|
|
11768
|
+
}
|
|
11769
|
+
throw error;
|
|
11770
|
+
}
|
|
11771
|
+
}
|
|
11741
11772
|
|
|
11742
11773
|
// src/browser.ts
|
|
11743
11774
|
var Browser = class {
|
|
@@ -11767,6 +11798,7 @@ var Browser = class {
|
|
|
11767
11798
|
pipe("browse:annotation-history-requested", (e) => this.handleBrowseAnnotationHistory(e)).subscribe({ error: errorHandler }),
|
|
11768
11799
|
pipe("browse:referenced-by-requested", (e) => this.handleReferencedBy(e)).subscribe({ error: errorHandler }),
|
|
11769
11800
|
pipe("browse:entity-types-requested", (e) => this.handleEntityTypes(e)).subscribe({ error: errorHandler }),
|
|
11801
|
+
pipe("browse:tag-schemas-requested", (e) => this.handleTagSchemas(e)).subscribe({ error: errorHandler }),
|
|
11770
11802
|
pipe("browse:directory-requested", (e) => this.handleBrowseDirectory(e)).subscribe({ error: errorHandler })
|
|
11771
11803
|
);
|
|
11772
11804
|
}
|
|
@@ -12011,14 +12043,29 @@ var Browser = class {
|
|
|
12011
12043
|
});
|
|
12012
12044
|
}
|
|
12013
12045
|
}
|
|
12046
|
+
async handleTagSchemas(event) {
|
|
12047
|
+
try {
|
|
12048
|
+
const tagSchemas = await readTagSchemasProjection(this.project);
|
|
12049
|
+
this.eventBus.get("browse:tag-schemas-result").next({
|
|
12050
|
+
correlationId: event.correlationId,
|
|
12051
|
+
response: { tagSchemas }
|
|
12052
|
+
});
|
|
12053
|
+
} catch (error) {
|
|
12054
|
+
this.logger.error("Tag schemas read failed", { error: errField(error) });
|
|
12055
|
+
this.eventBus.get("browse:tag-schemas-failed").next({
|
|
12056
|
+
correlationId: event.correlationId,
|
|
12057
|
+
message: error instanceof Error ? error.message : String(error)
|
|
12058
|
+
});
|
|
12059
|
+
}
|
|
12060
|
+
}
|
|
12014
12061
|
// ========================================================================
|
|
12015
12062
|
// Filesystem read handler
|
|
12016
12063
|
// ========================================================================
|
|
12017
12064
|
async handleBrowseDirectory(event) {
|
|
12018
12065
|
const { correlationId, path: reqPath, sort = "name" } = event;
|
|
12019
12066
|
const projectRoot = this.project.root;
|
|
12020
|
-
const resolved =
|
|
12021
|
-
if (!resolved.startsWith(projectRoot +
|
|
12067
|
+
const resolved = path3.resolve(projectRoot, reqPath);
|
|
12068
|
+
if (!resolved.startsWith(projectRoot + path3.sep) && resolved !== projectRoot) {
|
|
12022
12069
|
this.eventBus.get("browse:directory-failed").next({
|
|
12023
12070
|
correlationId,
|
|
12024
12071
|
path: reqPath,
|
|
@@ -12042,12 +12089,12 @@ var Browser = class {
|
|
|
12042
12089
|
const allViews = await this.views.getAll();
|
|
12043
12090
|
const prefix = `file://${resolved}`;
|
|
12044
12091
|
const viewsByUri = new Map(
|
|
12045
|
-
allViews.filter((v) => v.resource.storageUri?.startsWith(prefix + "/") || v.resource.storageUri?.startsWith(prefix +
|
|
12092
|
+
allViews.filter((v) => v.resource.storageUri?.startsWith(prefix + "/") || v.resource.storageUri?.startsWith(prefix + path3.sep)).map((v) => [v.resource.storageUri, v])
|
|
12046
12093
|
);
|
|
12047
12094
|
const entries = [];
|
|
12048
12095
|
for (const dirent of visible) {
|
|
12049
|
-
const entryPath =
|
|
12050
|
-
const relPath =
|
|
12096
|
+
const entryPath = path3.join(resolved, dirent.name);
|
|
12097
|
+
const relPath = path3.relative(projectRoot, entryPath);
|
|
12051
12098
|
if (dirent.isDirectory()) {
|
|
12052
12099
|
let mtime = (/* @__PURE__ */ new Date(0)).toISOString();
|
|
12053
12100
|
try {
|
|
@@ -12168,7 +12215,6 @@ var ResourceOperations = class {
|
|
|
12168
12215
|
_userId: userId3,
|
|
12169
12216
|
language: input.language,
|
|
12170
12217
|
entityTypes: input.entityTypes,
|
|
12171
|
-
creationMethod: input.creationMethod,
|
|
12172
12218
|
generatedFrom: input.generatedFrom,
|
|
12173
12219
|
generationPrompt: input.generationPrompt,
|
|
12174
12220
|
generator: input.generator,
|
|
@@ -12345,8 +12391,7 @@ var CloneTokenManager = class {
|
|
|
12345
12391
|
contentChecksum: stored.checksum,
|
|
12346
12392
|
byteSize: stored.byteSize,
|
|
12347
12393
|
format,
|
|
12348
|
-
entityTypes: getResourceEntityTypes(sourceDoc)
|
|
12349
|
-
creationMethod: CREATION_METHODS.CLONE
|
|
12394
|
+
entityTypes: getResourceEntityTypes(sourceDoc)
|
|
12350
12395
|
},
|
|
12351
12396
|
userId(event._userId),
|
|
12352
12397
|
this.eventBus
|
|
@@ -12585,6 +12630,31 @@ function registerBindUpdateBodyHandler(eventBus, parentLogger) {
|
|
|
12585
12630
|
logger.warn("Bind body-update failed after forwarding", { correlationId: cid, message });
|
|
12586
12631
|
});
|
|
12587
12632
|
}
|
|
12633
|
+
|
|
12634
|
+
// src/views/projection-validators.ts
|
|
12635
|
+
function resolveTagSchema(tagSchemas, schemaId) {
|
|
12636
|
+
if (typeof schemaId !== "string" || !schemaId) {
|
|
12637
|
+
return { error: "tag-annotation requires schemaId" };
|
|
12638
|
+
}
|
|
12639
|
+
const schema = tagSchemas.find((s) => s.id === schemaId);
|
|
12640
|
+
if (!schema) {
|
|
12641
|
+
return { error: `Tag schema not registered: ${schemaId}` };
|
|
12642
|
+
}
|
|
12643
|
+
return { schema };
|
|
12644
|
+
}
|
|
12645
|
+
function validateEntityTypes(registered, requested) {
|
|
12646
|
+
if (!requested || requested.length === 0) {
|
|
12647
|
+
return { ok: true };
|
|
12648
|
+
}
|
|
12649
|
+
const set = new Set(registered);
|
|
12650
|
+
const unknown = requested.filter((t) => !set.has(t));
|
|
12651
|
+
return unknown.length > 0 ? { ok: false, unknown } : { ok: true };
|
|
12652
|
+
}
|
|
12653
|
+
function entityTypesNotRegisteredMessage(unknown) {
|
|
12654
|
+
return `Entity type not registered: ${unknown.join(", ")}`;
|
|
12655
|
+
}
|
|
12656
|
+
|
|
12657
|
+
// src/handlers/job-commands.ts
|
|
12588
12658
|
function parseDidUser(did) {
|
|
12589
12659
|
const parts = did.split(":");
|
|
12590
12660
|
const usersIdx = parts.indexOf("users");
|
|
@@ -12592,7 +12662,7 @@ function parseDidUser(did) {
|
|
|
12592
12662
|
const email = decodeURIComponent(parts.slice(usersIdx + 1).join(":"));
|
|
12593
12663
|
return { userId: did, email, domain };
|
|
12594
12664
|
}
|
|
12595
|
-
function registerJobCommandHandlers(eventBus, jobQueue, parentLogger) {
|
|
12665
|
+
function registerJobCommandHandlers(eventBus, jobQueue, project, parentLogger) {
|
|
12596
12666
|
const logger = parentLogger.child({ component: "job-commands" });
|
|
12597
12667
|
eventBus.get("job:create").subscribe(async (command) => {
|
|
12598
12668
|
const { correlationId, jobType, resourceId: resId, params, _userId } = command;
|
|
@@ -12620,9 +12690,25 @@ function registerJobCommandHandlers(eventBus, jobQueue, parentLogger) {
|
|
|
12620
12690
|
}
|
|
12621
12691
|
};
|
|
12622
12692
|
const jobParams = job.params;
|
|
12693
|
+
if ((jobType === "reference-annotation" || jobType === "generation") && Array.isArray(jobParams.entityTypes) && jobParams.entityTypes.length > 0) {
|
|
12694
|
+
const registered = await readEntityTypesProjection(project);
|
|
12695
|
+
const result = validateEntityTypes(registered, jobParams.entityTypes);
|
|
12696
|
+
if (!result.ok) {
|
|
12697
|
+
throw new Error(entityTypesNotRegisteredMessage(result.unknown));
|
|
12698
|
+
}
|
|
12699
|
+
}
|
|
12623
12700
|
if (jobType === "reference-annotation" && jobParams.entityTypes) {
|
|
12624
12701
|
jobParams.entityTypes = jobParams.entityTypes.map((et) => entityType(et));
|
|
12625
12702
|
}
|
|
12703
|
+
if (jobType === "tag-annotation") {
|
|
12704
|
+
const schemas = await readTagSchemasProjection(project);
|
|
12705
|
+
const result = resolveTagSchema(schemas, jobParams.schemaId);
|
|
12706
|
+
if (result.error !== void 0) {
|
|
12707
|
+
throw new Error(result.error);
|
|
12708
|
+
}
|
|
12709
|
+
jobParams.schema = result.schema;
|
|
12710
|
+
delete jobParams.schemaId;
|
|
12711
|
+
}
|
|
12626
12712
|
await jobQueue.createJob(job);
|
|
12627
12713
|
logger.info("Job created via bus", { jobId: job.metadata.id, jobType, correlationId });
|
|
12628
12714
|
eventBus.get("job:created").next({
|
|
@@ -12668,11 +12754,11 @@ function registerJobCommandHandlers(eventBus, jobQueue, parentLogger) {
|
|
|
12668
12754
|
}
|
|
12669
12755
|
|
|
12670
12756
|
// src/handlers/index.ts
|
|
12671
|
-
function registerBusHandlers(eventBus, knowledgeSystem, jobQueue, logger) {
|
|
12757
|
+
function registerBusHandlers(eventBus, knowledgeSystem, jobQueue, project, logger) {
|
|
12672
12758
|
registerAnnotationAssemblyHandler(eventBus, logger);
|
|
12673
12759
|
registerAnnotationLookupHandlers(eventBus, knowledgeSystem.kb, knowledgeSystem.gatherer, logger);
|
|
12674
12760
|
registerBindUpdateBodyHandler(eventBus, logger);
|
|
12675
|
-
registerJobCommandHandlers(eventBus, jobQueue, logger);
|
|
12761
|
+
registerJobCommandHandlers(eventBus, jobQueue, project, logger);
|
|
12676
12762
|
}
|
|
12677
12763
|
|
|
12678
12764
|
// src/service.ts
|
|
@@ -12783,7 +12869,7 @@ async function startMakeMeaning(project, config, eventBus, logger, options) {
|
|
|
12783
12869
|
const skipRebuild = options?.skipRebuild ?? process.env.SEMIONT_SKIP_REBUILD === "true";
|
|
12784
12870
|
const { jobQueue, jobStatusSubscription } = await createJobQueue(project, eventBus, logger);
|
|
12785
12871
|
const knowledgeSystem = await createKnowledgeSystemFromConfig(project, config, eventBus, logger, skipRebuild);
|
|
12786
|
-
registerBusHandlers(eventBus, knowledgeSystem, jobQueue, logger);
|
|
12872
|
+
registerBusHandlers(eventBus, knowledgeSystem, jobQueue, project, logger);
|
|
12787
12873
|
return {
|
|
12788
12874
|
knowledgeSystem,
|
|
12789
12875
|
jobQueue,
|
|
@@ -13276,7 +13362,6 @@ async function replayResourceCreated(event, eventBus, resolveBlob, contentStore,
|
|
|
13276
13362
|
_userId: event.userId,
|
|
13277
13363
|
language: payload.language,
|
|
13278
13364
|
entityTypes: payload.entityTypes,
|
|
13279
|
-
creationMethod: payload.creationMethod,
|
|
13280
13365
|
isDraft: payload.isDraft,
|
|
13281
13366
|
generatedFrom: payload.generatedFrom,
|
|
13282
13367
|
generationPrompt: payload.generationPrompt
|
|
@@ -13457,7 +13542,6 @@ var SEMIONT_CONTEXT = [
|
|
|
13457
13542
|
{
|
|
13458
13543
|
"semiont": "https://semiont.org/vocab/",
|
|
13459
13544
|
"entityTypes": "semiont:entityTypes",
|
|
13460
|
-
"creationMethod": "semiont:creationMethod",
|
|
13461
13545
|
"archived": "semiont:archived",
|
|
13462
13546
|
"representations": { "@id": "semiont:representations", "@container": "@set" },
|
|
13463
13547
|
"annotations": { "@id": "semiont:annotations", "@container": "@set" }
|
|
@@ -13579,7 +13663,6 @@ function buildResourceJsonLd(resource, annotations, sourceUrl) {
|
|
|
13579
13663
|
if (primary.language) doc["inLanguage"] = primary.language;
|
|
13580
13664
|
if (primary.mediaType) doc["encodingFormat"] = primary.mediaType;
|
|
13581
13665
|
}
|
|
13582
|
-
if (resource.creationMethod) doc["creationMethod"] = resource.creationMethod;
|
|
13583
13666
|
if (resource.entityTypes && resource.entityTypes.length > 0) doc["entityTypes"] = resource.entityTypes;
|
|
13584
13667
|
if (resource.archived) doc["archived"] = resource.archived;
|
|
13585
13668
|
if (resource.wasDerivedFrom) doc["wasDerivedFrom"] = resource.wasDerivedFrom;
|
|
@@ -13747,7 +13830,6 @@ async function importResource(doc, userId3, eventBus, contentStore, resolveBlob,
|
|
|
13747
13830
|
const representations = doc["representations"];
|
|
13748
13831
|
const annotations = doc["annotations"];
|
|
13749
13832
|
const entityTypes = doc["entityTypes"];
|
|
13750
|
-
const creationMethod = doc["creationMethod"];
|
|
13751
13833
|
let format = "text/markdown";
|
|
13752
13834
|
let language;
|
|
13753
13835
|
let contentChecksum;
|
|
@@ -13783,8 +13865,7 @@ async function importResource(doc, userId3, eventBus, contentStore, resolveBlob,
|
|
|
13783
13865
|
format,
|
|
13784
13866
|
_userId: userId3,
|
|
13785
13867
|
language,
|
|
13786
|
-
entityTypes: entityTypes ?? []
|
|
13787
|
-
creationMethod
|
|
13868
|
+
entityTypes: entityTypes ?? []
|
|
13788
13869
|
});
|
|
13789
13870
|
const created = await (0, import_rxjs13.firstValueFrom)(createResult$);
|
|
13790
13871
|
const resourceId10 = resourceId(created.resourceId);
|