@memberjunction/content-autotagging 5.30.1 → 5.32.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -0
- package/dist/CloudStorage/generic/CloudStorageBase.d.ts +2 -2
- package/dist/CloudStorage/generic/CloudStorageBase.d.ts.map +1 -1
- package/dist/CloudStorage/generic/CloudStorageBase.js +3 -1
- package/dist/CloudStorage/generic/CloudStorageBase.js.map +1 -1
- package/dist/CloudStorage/providers/AutotagAzureBlob.js +2 -3
- package/dist/CloudStorage/providers/AutotagAzureBlob.js.map +1 -1
- package/dist/CloudStorage/providers/AutotagCloudStorage.d.ts +2 -2
- package/dist/CloudStorage/providers/AutotagCloudStorage.d.ts.map +1 -1
- package/dist/CloudStorage/providers/AutotagCloudStorage.js +5 -3
- package/dist/CloudStorage/providers/AutotagCloudStorage.js.map +1 -1
- package/dist/Core/generic/AutotagBase.d.ts +7 -2
- package/dist/Core/generic/AutotagBase.d.ts.map +1 -1
- package/dist/Core/generic/AutotagBase.js +5 -0
- package/dist/Core/generic/AutotagBase.js.map +1 -1
- package/dist/Engine/generic/AutotagBaseEngine.d.ts +10 -0
- package/dist/Engine/generic/AutotagBaseEngine.d.ts.map +1 -1
- package/dist/Engine/generic/AutotagBaseEngine.js +50 -14
- package/dist/Engine/generic/AutotagBaseEngine.js.map +1 -1
- package/dist/Engine/generic/RunBudget.d.ts +50 -0
- package/dist/Engine/generic/RunBudget.d.ts.map +1 -0
- package/dist/Engine/generic/RunBudget.js +69 -0
- package/dist/Engine/generic/RunBudget.js.map +1 -0
- package/dist/Engine/generic/ScopeContextResolver.d.ts +27 -0
- package/dist/Engine/generic/ScopeContextResolver.d.ts.map +1 -0
- package/dist/Engine/generic/ScopeContextResolver.js +63 -0
- package/dist/Engine/generic/ScopeContextResolver.js.map +1 -0
- package/dist/Entity/generic/AutotagEntity.d.ts +22 -2
- package/dist/Entity/generic/AutotagEntity.d.ts.map +1 -1
- package/dist/Entity/generic/AutotagEntity.js +114 -13
- package/dist/Entity/generic/AutotagEntity.js.map +1 -1
- package/dist/LocalFileSystem/generic/AutotagLocalFileSystem.d.ts +2 -2
- package/dist/LocalFileSystem/generic/AutotagLocalFileSystem.d.ts.map +1 -1
- package/dist/LocalFileSystem/generic/AutotagLocalFileSystem.js +5 -4
- package/dist/LocalFileSystem/generic/AutotagLocalFileSystem.js.map +1 -1
- package/dist/RSSFeed/generic/AutotagRSSFeed.d.ts +2 -2
- package/dist/RSSFeed/generic/AutotagRSSFeed.d.ts.map +1 -1
- package/dist/RSSFeed/generic/AutotagRSSFeed.js +5 -3
- package/dist/RSSFeed/generic/AutotagRSSFeed.js.map +1 -1
- package/dist/Websites/generic/AutotagWebsite.d.ts +2 -2
- package/dist/Websites/generic/AutotagWebsite.d.ts.map +1 -1
- package/dist/Websites/generic/AutotagWebsite.js +6 -4
- package/dist/Websites/generic/AutotagWebsite.js.map +1 -1
- package/package.json +16 -16
package/README.md
CHANGED
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
AI-powered content ingestion, autotagging, and vectorization engine for MemberJunction. Scans content from multiple sources (local files, websites, RSS feeds, cloud storage), extracts text from documents, uses LLMs to generate weighted tags and metadata attributes, and vectorizes content for semantic search.
|
|
4
4
|
|
|
5
|
+
> **Read these guides first** if you're working on tag classification, taxonomy growth, or governance:
|
|
6
|
+
> - [Content Autotagging Guide](../../guides/CONTENT_AUTOTAGGING_GUIDE.md) — pipeline architecture, prompt structure, source-type providers
|
|
7
|
+
> - [Taxonomy & Tagging Guide](../../guides/TAXONOMY_TAGGING_GUIDE.md) — the tag taxonomy itself: 4+1-tier resolver, per-tag governance, scoping, the suggestion queue, Tag Health, and per-source configuration knobs
|
|
8
|
+
|
|
5
9
|
## Overview
|
|
6
10
|
|
|
7
11
|
The `@memberjunction/content-autotagging` package provides an extensible framework for ingesting content from diverse sources and leveraging AI models to extract meaningful tags, summaries, and metadata. Built on the MemberJunction platform, it helps organizations automatically organize and categorize their content. The engine uses the managed **"Content Autotagging"** AI prompt via `AIPromptRunner` (rather than direct `BaseLLM` calls), enabling prompt versioning, model routing, and centralized prompt management.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { AutotagBase, AutotagProgressCallback } from "../../Core/index.js";
|
|
2
2
|
import { AutotagBaseEngine } from "../../Engine/index.js";
|
|
3
3
|
import { ContentSourceParams } from "../../Engine/index.js";
|
|
4
|
-
import { UserInfo } from "@memberjunction/core";
|
|
4
|
+
import { IMetadataProvider, UserInfo } from "@memberjunction/core";
|
|
5
5
|
import { MJContentSourceEntity, MJContentItemEntity } from "@memberjunction/core-entities";
|
|
6
6
|
export declare abstract class CloudStorageBase extends AutotagBase {
|
|
7
7
|
protected contextUser: UserInfo;
|
|
@@ -22,7 +22,7 @@ export declare abstract class CloudStorageBase extends AutotagBase {
|
|
|
22
22
|
* @returns - An array of content source items that have been modified or added after the most recent process run for that content source
|
|
23
23
|
*/
|
|
24
24
|
abstract SetNewAndModifiedContentItems(contentSourceParams: ContentSourceParams, lastRunDate: Date, contextUser: UserInfo): Promise<MJContentItemEntity[]>;
|
|
25
|
-
Autotag(contextUser: UserInfo, onProgress?: AutotagProgressCallback): Promise<number>;
|
|
25
|
+
Autotag(contextUser: UserInfo, onProgress?: AutotagProgressCallback, contentSourceIDs?: string[], provider?: IMetadataProvider): Promise<number>;
|
|
26
26
|
SetContentItemsToProcess(contentSources: MJContentSourceEntity[]): Promise<MJContentItemEntity[]>;
|
|
27
27
|
}
|
|
28
28
|
//# sourceMappingURL=CloudStorageBase.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CloudStorageBase.d.ts","sourceRoot":"","sources":["../../../src/CloudStorage/generic/CloudStorageBase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"CloudStorageBase.d.ts","sourceRoot":"","sources":["../../../src/CloudStorage/generic/CloudStorageBase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAI3F,8BAAsB,gBAAiB,SAAQ,WAAW;IACtD,SAAS,CAAC,WAAW,EAAE,QAAQ,CAAC;IAChC,SAAS,CAAC,MAAM,EAAE,iBAAiB,CAAC;IACpC,SAAS,CAAC,mBAAmB,EAAE,MAAM,CAAA;;IAOrC;;MAEE;aACc,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAE7C;;;;;;;;MAQE;aACc,6BAA6B,CAAC,mBAAmB,EAAE,mBAAmB,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAEpJ,OAAO,CAAC,WAAW,EAAE,QAAQ,EAAE,UAAU,CAAC,EAAE,uBAAuB,EAAE,gBAAgB,CAAC,EAAE,MAAM,EAAE,EAAE,QAAQ,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC;IAUhJ,wBAAwB,CAAC,cAAc,EAAE,qBAAqB,EAAE,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;CAyBjH"}
|
|
@@ -7,7 +7,9 @@ export class CloudStorageBase extends AutotagBase {
|
|
|
7
7
|
super();
|
|
8
8
|
this.engine = AutotagBaseEngine.Instance;
|
|
9
9
|
}
|
|
10
|
-
async Autotag(contextUser, onProgress) {
|
|
10
|
+
async Autotag(contextUser, onProgress, contentSourceIDs, provider) {
|
|
11
|
+
if (provider)
|
|
12
|
+
this._provider = provider;
|
|
11
13
|
this.contextUser = contextUser;
|
|
12
14
|
this.contentSourceTypeID = this.engine.SetSubclassContentSourceType('Cloud Storage');
|
|
13
15
|
const contentSources = await this.engine.getAllContentSources(this.contextUser, this.contentSourceTypeID) || [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CloudStorageBase.js","sourceRoot":"","sources":["../../../src/CloudStorage/generic/CloudStorageBase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAA2B,MAAM,YAAY,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAIjD,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;AAE9B,MAAM,OAAgB,gBAAiB,SAAQ,WAAW;IAKtD;QACI,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,iBAAiB,CAAC,QAAQ,CAAC;IAC7C,CAAC;IAkBM,KAAK,CAAC,OAAO,CAAC,WAAqB,EAAE,UAAoC;
|
|
1
|
+
{"version":3,"file":"CloudStorageBase.js","sourceRoot":"","sources":["../../../src/CloudStorage/generic/CloudStorageBase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAA2B,MAAM,YAAY,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAIjD,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;AAE9B,MAAM,OAAgB,gBAAiB,SAAQ,WAAW;IAKtD;QACI,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,iBAAiB,CAAC,QAAQ,CAAC;IAC7C,CAAC;IAkBM,KAAK,CAAC,OAAO,CAAC,WAAqB,EAAE,UAAoC,EAAE,gBAA2B,EAAE,QAA4B;QACvI,IAAI,QAAQ;YAAE,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QACxC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC,4BAA4B,CAAC,eAAe,CAAC,CAAC;QACrF,MAAM,cAAc,GAA4B,MAAM,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC;QACzI,MAAM,qBAAqB,GAA0B,MAAM,IAAI,CAAC,wBAAwB,CAAC,cAAc,CAAC,CAAA;QACxG,MAAM,IAAI,CAAC,MAAM,CAAC,4BAA4B,CAAC,qBAAqB,EAAE,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;QAC1H,OAAO,qBAAqB,CAAC,MAAM,CAAC;IACxC,CAAC;IAEM,KAAK,CAAC,wBAAwB,CAAC,cAAuC;QACzE,MAAM,qBAAqB,GAA0B,EAAE,CAAA;QAEvD,KAAK,MAAM,aAAa,IAAI,cAAc,EAAE,CAAC;YACzC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;YAE1B,MAAM,mBAAmB,GAAwB;gBAC7C,eAAe,EAAE,aAAa,CAAC,EAAE;gBACjC,IAAI,EAAE,aAAa,CAAC,IAAI;gBACxB,aAAa,EAAE,aAAa,CAAC,aAAa;gBAC1C,mBAAmB,EAAE,aAAa,CAAC,mBAAmB;gBACtD,iBAAiB,EAAE,aAAa,CAAC,iBAAiB;gBAClD,GAAG,EAAE,aAAa,CAAC,GAAG;aACzB,CAAA;YAED,MAAM,WAAW,GAAS,MAAM,IAAI,CAAC,MAAM,CAAC,2BAA2B,CAAC,mBAAmB,CAAC,eAAe,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;YAE/H,IAAI,WAAW,EAAE,CAAC;gBACd,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,6BAA6B,CAAC,mBAAmB,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;gBAClH,qBAAqB,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC;YAChD,CAAC;QACL,CAAC;QAED,OAAO,qBAAqB,CAAC;IACjC,CAAC;CACJ"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { CloudStorageBase } from "../generic/CloudStorageBase.js";
|
|
2
2
|
import { BlobServiceClient } from '@azure/storage-blob';
|
|
3
3
|
import dotenv from 'dotenv';
|
|
4
|
-
import { Metadata } from "@memberjunction/core";
|
|
5
4
|
import path from "path";
|
|
6
5
|
dotenv.config({ quiet: true });
|
|
7
6
|
export class AutotagAzureBlob extends CloudStorageBase {
|
|
@@ -33,7 +32,7 @@ export class AutotagAzureBlob extends CloudStorageBase {
|
|
|
33
32
|
const filePath = path.join(this.containerName, blob.name);
|
|
34
33
|
if (blob.properties.createdOn && blob.properties.createdOn > lastRunDate) {
|
|
35
34
|
// The file has been created, add a new record for this file
|
|
36
|
-
const md =
|
|
35
|
+
const md = this.ProviderToUse;
|
|
37
36
|
const contentItem = await md.GetEntityObject('MJ: Content Items', contextUser);
|
|
38
37
|
const text = await this.extractText(blob.name);
|
|
39
38
|
contentItem.ContentSourceID = contentSourceParams.contentSourceID;
|
|
@@ -50,7 +49,7 @@ export class AutotagAzureBlob extends CloudStorageBase {
|
|
|
50
49
|
}
|
|
51
50
|
else if (blob.properties.lastModified && blob.properties.lastModified > lastRunDate) {
|
|
52
51
|
// The file has been modified, update the record for this file
|
|
53
|
-
const md =
|
|
52
|
+
const md = this.ProviderToUse;
|
|
54
53
|
const contentItem = await md.GetEntityObject('MJ: Content Items', contextUser);
|
|
55
54
|
const contentItemID = await this.engine.getContentItemIDFromURL(contentSourceParams, contextUser);
|
|
56
55
|
await contentItem.Load(contentItemID);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutotagAzureBlob.js","sourceRoot":"","sources":["../../../src/CloudStorage/providers/AutotagAzureBlob.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAE/D,OAAO,EAAE,iBAAiB,EAAmB,MAAM,qBAAqB,CAAC;AACzE,OAAO,MAAM,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"AutotagAzureBlob.js","sourceRoot":"","sources":["../../../src/CloudStorage/providers/AutotagAzureBlob.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { UserInfo } from '@memberjunction/core';
|
|
1
|
+
import { IMetadataProvider, UserInfo } from '@memberjunction/core';
|
|
2
2
|
import { MJContentItemEntity } from '@memberjunction/core-entities';
|
|
3
3
|
import { AutotagBase, AutotagProgressCallback } from '../../Core/index.js';
|
|
4
4
|
import { MJContentSourceEntity } from '@memberjunction/core-entities';
|
|
@@ -20,7 +20,7 @@ export declare class AutotagCloudStorage extends AutotagBase {
|
|
|
20
20
|
private contextUser;
|
|
21
21
|
private engine;
|
|
22
22
|
protected contentSourceTypeID: string;
|
|
23
|
-
Autotag(contextUser: UserInfo, onProgress?: AutotagProgressCallback): Promise<number>;
|
|
23
|
+
Autotag(contextUser: UserInfo, onProgress?: AutotagProgressCallback, contentSourceIDs?: string[], provider?: IMetadataProvider): Promise<number>;
|
|
24
24
|
SetContentItemsToProcess(contentSources: MJContentSourceEntity[]): Promise<MJContentItemEntity[]>;
|
|
25
25
|
/**
|
|
26
26
|
* Process a single content source: initialize the storage driver, list files,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutotagCloudStorage.d.ts","sourceRoot":"","sources":["../../../src/CloudStorage/providers/AutotagCloudStorage.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAA0C,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"AutotagCloudStorage.d.ts","sourceRoot":"","sources":["../../../src/CloudStorage/providers/AutotagCloudStorage.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAA0C,MAAM,sBAAsB,CAAC;AAC3G,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAEpE,OAAO,EAAE,WAAW,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAElE,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAgBtE;;;;;;;;;;;;;GAaG;AACH,qBACa,mBAAoB,SAAQ,WAAW;IAChD,OAAO,CAAC,WAAW,CAAY;IAC/B,OAAO,CAAC,MAAM,CAAqB;IACnC,SAAS,CAAC,mBAAmB,EAAG,MAAM,CAAC;IAE1B,OAAO,CAAC,WAAW,EAAE,QAAQ,EAAE,UAAU,CAAC,EAAE,uBAAuB,EAAE,gBAAgB,CAAC,EAAE,MAAM,EAAE,EAAE,QAAQ,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC;IAkBhJ,wBAAwB,CAAC,cAAc,EAAE,qBAAqB,EAAE,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAgB9G;;;OAGG;YACW,oBAAoB;IA4ClC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAsBzB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAgB3B;;;OAGG;YACW,mBAAmB;IAsBjC;;OAEG;YACW,iBAAiB;IAsD/B;;OAEG;YACW,wBAAwB;IAmBtC;;;OAGG;YACW,qBAAqB;IAoBnC;;OAEG;IACH,OAAO,CAAC,gBAAgB;CAK3B"}
|
|
@@ -6,7 +6,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
6
6
|
};
|
|
7
7
|
import { RegisterClass } from '@memberjunction/global';
|
|
8
8
|
import { MJGlobal } from '@memberjunction/global';
|
|
9
|
-
import {
|
|
9
|
+
import { RunView, LogStatus, LogError } from '@memberjunction/core';
|
|
10
10
|
import { FileStorageBase } from '@memberjunction/storage';
|
|
11
11
|
import { AutotagBase } from '../../Core/index.js';
|
|
12
12
|
import { AutotagBaseEngine } from '../../Engine/index.js';
|
|
@@ -25,7 +25,9 @@ import { AutotagBaseEngine } from '../../Engine/index.js';
|
|
|
25
25
|
* drivers read automatically on construction.
|
|
26
26
|
*/
|
|
27
27
|
let AutotagCloudStorage = class AutotagCloudStorage extends AutotagBase {
|
|
28
|
-
async Autotag(contextUser, onProgress) {
|
|
28
|
+
async Autotag(contextUser, onProgress, contentSourceIDs, provider) {
|
|
29
|
+
if (provider)
|
|
30
|
+
this._provider = provider;
|
|
29
31
|
this.contextUser = contextUser;
|
|
30
32
|
this.engine = AutotagBaseEngine.Instance;
|
|
31
33
|
this.contentSourceTypeID = this.engine.SetSubclassContentSourceType('Cloud Storage');
|
|
@@ -174,7 +176,7 @@ let AutotagCloudStorage = class AutotagCloudStorage extends AutotagBase {
|
|
|
174
176
|
if (existing && existing.Checksum === checksum) {
|
|
175
177
|
return null; // Content unchanged
|
|
176
178
|
}
|
|
177
|
-
const md =
|
|
179
|
+
const md = this.ProviderToUse;
|
|
178
180
|
let contentItem;
|
|
179
181
|
if (existing) {
|
|
180
182
|
contentItem = existing;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutotagCloudStorage.js","sourceRoot":"","sources":["../../../src/CloudStorage/providers/AutotagCloudStorage.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,
|
|
1
|
+
{"version":3,"file":"AutotagCloudStorage.js","sourceRoot":"","sources":["../../../src/CloudStorage/providers/AutotagCloudStorage.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,18 +1,23 @@
|
|
|
1
|
-
import { UserInfo } from '@memberjunction/core';
|
|
1
|
+
import { IMetadataProvider, UserInfo } from '@memberjunction/core';
|
|
2
2
|
import { MJContentSourceEntity, MJContentItemEntity } from '@memberjunction/core-entities';
|
|
3
3
|
/** Progress callback for per-item updates during autotagging */
|
|
4
4
|
export type AutotagProgressCallback = (processed: number, total: number, currentItem?: string) => void;
|
|
5
5
|
export declare abstract class AutotagBase {
|
|
6
|
+
/** Optional provider override; falls back to Metadata.Provider when not set. */
|
|
7
|
+
protected _provider?: IMetadataProvider;
|
|
8
|
+
/** Returns the active provider — explicit override if set, otherwise the global default. */
|
|
9
|
+
protected get ProviderToUse(): IMetadataProvider;
|
|
6
10
|
abstract SetContentItemsToProcess(contentSources: MJContentSourceEntity[]): Promise<MJContentItemEntity[]>;
|
|
7
11
|
/**
|
|
8
12
|
* Run autotagging for this source type.
|
|
9
13
|
* @param contextUser - The user context for server-side operations
|
|
10
14
|
* @param onProgress - Optional progress callback
|
|
11
15
|
* @param contentSourceIDs - Optional filter: only process these specific source IDs. If omitted, processes all sources for this type.
|
|
16
|
+
* @param provider - Optional metadata provider override; defaults to Metadata.Provider
|
|
12
17
|
*/
|
|
13
18
|
/**
|
|
14
19
|
* @returns the number of content items processed (new + retried)
|
|
15
20
|
*/
|
|
16
|
-
abstract Autotag(contextUser: UserInfo, onProgress?: AutotagProgressCallback, contentSourceIDs?: string[]): Promise<number>;
|
|
21
|
+
abstract Autotag(contextUser: UserInfo, onProgress?: AutotagProgressCallback, contentSourceIDs?: string[], provider?: IMetadataProvider): Promise<number>;
|
|
17
22
|
}
|
|
18
23
|
//# sourceMappingURL=AutotagBase.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutotagBase.d.ts","sourceRoot":"","sources":["../../../src/Core/generic/AutotagBase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"AutotagBase.d.ts","sourceRoot":"","sources":["../../../src/Core/generic/AutotagBase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAY,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAE3F,gEAAgE;AAChE,MAAM,MAAM,uBAAuB,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;AAEvG,8BAAsB,WAAW;IAC7B,gFAAgF;IAChF,SAAS,CAAC,SAAS,CAAC,EAAE,iBAAiB,CAAC;IAExC,4FAA4F;IAC5F,SAAS,KAAK,aAAa,IAAI,iBAAiB,CAE/C;aAEe,wBAAwB,CAAC,cAAc,EAAE,qBAAqB,EAAE,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;IACjH;;;;;;OAMG;IACH;;OAEG;aACa,OAAO,CAAC,WAAW,EAAE,QAAQ,EAAE,UAAU,CAAC,EAAE,uBAAuB,EAAE,gBAAgB,CAAC,EAAE,MAAM,EAAE,EAAE,QAAQ,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC;CACnK"}
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
import { Metadata } from '@memberjunction/core';
|
|
1
2
|
export class AutotagBase {
|
|
3
|
+
/** Returns the active provider — explicit override if set, otherwise the global default. */
|
|
4
|
+
get ProviderToUse() {
|
|
5
|
+
return this._provider ?? Metadata.Provider;
|
|
6
|
+
}
|
|
2
7
|
}
|
|
3
8
|
//# sourceMappingURL=AutotagBase.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutotagBase.js","sourceRoot":"","sources":["../../../src/Core/generic/AutotagBase.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AutotagBase.js","sourceRoot":"","sources":["../../../src/Core/generic/AutotagBase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,QAAQ,EAAY,MAAM,sBAAsB,CAAC;AAM7E,MAAM,OAAgB,WAAW;IAI7B,4FAA4F;IAC5F,IAAc,aAAa;QACvB,OAAO,IAAI,CAAC,SAAS,IAAI,QAAQ,CAAC,QAAQ,CAAC;IAC/C,CAAC;CAcJ"}
|
|
@@ -174,6 +174,16 @@ export declare class AutotagBaseEngine extends BaseEngine<AutotagBaseEngine> {
|
|
|
174
174
|
* Parameters: (contentItemTag: MJContentItemTagEntity, parentTag: string | null, contextUser: UserInfo)
|
|
175
175
|
*/
|
|
176
176
|
OnContentItemTagSaved: ((tag: MJContentItemTagEntity, parentTag: string | null, contextUser: UserInfo) => Promise<void>) | null;
|
|
177
|
+
/**
|
|
178
|
+
* Optional after-batch hook used to enforce per-run budgets. Subclasses
|
|
179
|
+
* (e.g., AutotagEntity) check their RunBudget instances and may return
|
|
180
|
+
* `{ continue: false }` to gracefully pause the run via the existing
|
|
181
|
+
* CancellationRequested machinery.
|
|
182
|
+
*/
|
|
183
|
+
OnAfterBatch: ((batch: MJContentItemEntity[], totalProcessed: number) => Promise<{
|
|
184
|
+
continue: boolean;
|
|
185
|
+
reason?: string;
|
|
186
|
+
} | null>) | null;
|
|
177
187
|
/**
|
|
178
188
|
* Saves keyword tags from LLM results as Content Item Tags.
|
|
179
189
|
* Uses batched saves for better performance.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutotagBaseEngine.d.ts","sourceRoot":"","sources":["../../../src/Engine/generic/AutotagBaseEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAA4B,iBAAiB,EAAqB,QAAQ,EAAuB,MAAM,sBAAsB,CAAA;AAEhJ,OAAO,EACH,qBAAqB,EAAE,mBAAmB,EAAE,uBAAuB,EACnE,yBAAyB,EAAE,mBAAmB,EAAE,yBAAyB,EACzE,4BAA4B,EAA8B,sBAAsB,EAClD,8BAA8B,EAC5D,yDAAyD,EAG5D,MAAM,+BAA+B,CAAA;AACtC,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAA;AAC3G,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAI3C,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAA;AAUxF,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAA;AAoB5E;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC5B,8CAA8C;IAC9C,UAAU,EAAE,MAAM,CAAC;IACnB,iDAAiD;IACjD,OAAO,EAAE,MAAM,CAAC;IAChB,2EAA2E;IAC3E,YAAY,EAAE,MAAM,EAAE,CAAC;CAC1B;AAKD;;;;GAIG;AACH,qBACa,iBAAkB,SAAQ,UAAU,CAAC,iBAAiB,CAAC;IAChE,WAAkB,QAAQ,IAAI,iBAAiB,CAE9C;IAGD,OAAO,CAAC,sBAAsB,CAAsC;IACpE,OAAO,CAAC,wBAAwB,CAAwC;IAExE,6CAA6C;IAC7C,OAAO,KAAK,QAAQ,GAA8E;IAElG,kEAAkE;IAClE,IAAW,YAAY,IAAI,mBAAmB,EAAE,CAAuC;IACvF,yEAAyE;IACzE,IAAW,kBAAkB,IAAI,yBAAyB,EAAE,CAA6C;IACzG,uEAAuE;IACvE,IAAW,gBAAgB,IAAI,uBAAuB,EAAE,CAA2C;IACnG,qDAAqD;IACrD,IAAW,qBAAqB,IAAI,4BAA4B,EAAE,CAAwC;IAC1G,wDAAwD;IACxD,IAAW,uBAAuB,IAAI,8BAA8B,EAAE,CAA0C;IAEnG,MAAM,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC;IAqBnH;;;OAGG;IACH;;;;;;;;;;;OAWG;IACU,4BAA4B,CACrC,YAAY,EAAE,mBAAmB,EAAE,EACnC,WAAW,EAAE,QAAQ,EACrB,UAAU,CAAC,EAAE,yBAAyB,EACtC,MAAM,CAAC,EAAE,yDAAyD,EAClE,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,KAAK,IAAI,GAC9E,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"AutotagBaseEngine.d.ts","sourceRoot":"","sources":["../../../src/Engine/generic/AutotagBaseEngine.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
5
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
};
|
|
7
7
|
var AutotagBaseEngine_1;
|
|
8
|
-
import { BaseEngine,
|
|
8
|
+
import { BaseEngine, RunView, LogError, LogStatus } from '@memberjunction/core';
|
|
9
9
|
import { MJGlobal, UUIDsEqual, NormalizeUUID, RegisterClass } from '@memberjunction/global';
|
|
10
10
|
import { ContentSourceTypeParams } from './content.types.js';
|
|
11
11
|
import { RateLimiter } from './RateLimiter.js';
|
|
@@ -71,6 +71,13 @@ let AutotagBaseEngine = class AutotagBaseEngine extends BaseEngine {
|
|
|
71
71
|
* Parameters: (contentItemTag: MJContentItemTagEntity, parentTag: string | null, contextUser: UserInfo)
|
|
72
72
|
*/
|
|
73
73
|
this.OnContentItemTagSaved = null;
|
|
74
|
+
/**
|
|
75
|
+
* Optional after-batch hook used to enforce per-run budgets. Subclasses
|
|
76
|
+
* (e.g., AutotagEntity) check their RunBudget instances and may return
|
|
77
|
+
* `{ continue: false }` to gracefully pause the run via the existing
|
|
78
|
+
* CancellationRequested machinery.
|
|
79
|
+
*/
|
|
80
|
+
this.OnAfterBatch = null;
|
|
74
81
|
}
|
|
75
82
|
static { AutotagBaseEngine_1 = this; }
|
|
76
83
|
static get Instance() {
|
|
@@ -175,6 +182,25 @@ let AutotagBaseEngine = class AutotagBaseEngine extends BaseEngine {
|
|
|
175
182
|
return;
|
|
176
183
|
}
|
|
177
184
|
}
|
|
185
|
+
// Per-batch budget gate — subclasses (e.g., AutotagEntity) inspect
|
|
186
|
+
// their per-source RunBudget instances and can request a pause.
|
|
187
|
+
if (this.OnAfterBatch) {
|
|
188
|
+
try {
|
|
189
|
+
const verdict = await this.OnAfterBatch(batch, totalProcessed);
|
|
190
|
+
if (verdict && !verdict.continue) {
|
|
191
|
+
LogStatus(`[Autotag] Pipeline paused by budget gate: ${verdict.reason ?? 'unspecified'} at offset ${totalProcessed}`);
|
|
192
|
+
if (processRun) {
|
|
193
|
+
processRun.ErrorMessage = `Auto-paused: ${verdict.reason ?? 'budget exceeded'}`;
|
|
194
|
+
processRun.CancellationRequested = true;
|
|
195
|
+
await processRun.Save();
|
|
196
|
+
}
|
|
197
|
+
return;
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
catch (e) {
|
|
201
|
+
LogError(`[Autotag] OnAfterBatch hook threw: ${e instanceof Error ? e.message : String(e)}`);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
178
204
|
// Circuit breaker: halt if error rate exceeds threshold
|
|
179
205
|
if (totalProcessed > 0 && totalFailures > 0) {
|
|
180
206
|
const errorRate = (totalFailures / totalProcessed) * 100;
|
|
@@ -261,7 +287,7 @@ let AutotagBaseEngine = class AutotagBaseEngine extends BaseEngine {
|
|
|
261
287
|
/** Update a content item's TaggingStatus and LastTaggedAt */
|
|
262
288
|
async updateContentItemTaggingStatus(contentItemID, status, contextUser) {
|
|
263
289
|
try {
|
|
264
|
-
const md =
|
|
290
|
+
const md = this.ProviderToUse;
|
|
265
291
|
const item = await md.GetEntityObject('MJ: Content Items', contextUser);
|
|
266
292
|
await item.Load(contentItemID);
|
|
267
293
|
item.TaggingStatus = status;
|
|
@@ -396,7 +422,7 @@ let AutotagBaseEngine = class AutotagBaseEngine extends BaseEngine {
|
|
|
396
422
|
*/
|
|
397
423
|
async createTaggedItemFromContentItemTag(contentItemTag, tagID, contextUser) {
|
|
398
424
|
try {
|
|
399
|
-
const md =
|
|
425
|
+
const md = this.ProviderToUse;
|
|
400
426
|
let entityID;
|
|
401
427
|
let recordID;
|
|
402
428
|
// Load the content item to determine source type
|
|
@@ -427,7 +453,7 @@ let AutotagBaseEngine = class AutotagBaseEngine extends BaseEngine {
|
|
|
427
453
|
}
|
|
428
454
|
else {
|
|
429
455
|
// Non-entity source — tag the ContentItem itself
|
|
430
|
-
const contentItemsEntity = md.
|
|
456
|
+
const contentItemsEntity = md.EntityByName('MJ: Content Items');
|
|
431
457
|
if (!contentItemsEntity)
|
|
432
458
|
return;
|
|
433
459
|
entityID = contentItemsEntity.ID;
|
|
@@ -579,7 +605,7 @@ let AutotagBaseEngine = class AutotagBaseEngine extends BaseEngine {
|
|
|
579
605
|
}
|
|
580
606
|
}
|
|
581
607
|
async deleteInvalidContentItem(contentItemID, contextUser) {
|
|
582
|
-
const md =
|
|
608
|
+
const md = this.ProviderToUse;
|
|
583
609
|
const contentItem = await md.GetEntityObject('MJ: Content Items', contextUser);
|
|
584
610
|
await contentItem.Load(contentItemID);
|
|
585
611
|
await contentItem.Delete();
|
|
@@ -634,7 +660,7 @@ let AutotagBaseEngine = class AutotagBaseEngine extends BaseEngine {
|
|
|
634
660
|
* for taxonomy bridge processing.
|
|
635
661
|
*/
|
|
636
662
|
async saveContentItemTags(contentItemID, LLMResults, contextUser) {
|
|
637
|
-
const md =
|
|
663
|
+
const md = this.ProviderToUse;
|
|
638
664
|
const keywords = LLMResults.keywords;
|
|
639
665
|
if (!keywords || !Array.isArray(keywords))
|
|
640
666
|
return;
|
|
@@ -681,7 +707,7 @@ let AutotagBaseEngine = class AutotagBaseEngine extends BaseEngine {
|
|
|
681
707
|
* Updates content item name/description, then creates attribute records for other fields.
|
|
682
708
|
*/
|
|
683
709
|
async saveResultsToContentItemAttribute(LLMResults, contextUser) {
|
|
684
|
-
const md =
|
|
710
|
+
const md = this.ProviderToUse;
|
|
685
711
|
const contentItemID = LLMResults.contentItemID;
|
|
686
712
|
const skipKeys = new Set(['keywords', 'processStartTime', 'processEndTime', 'contentItemID', 'isValidContent']);
|
|
687
713
|
// Update title and description on the content item.
|
|
@@ -893,7 +919,7 @@ let AutotagBaseEngine = class AutotagBaseEngine extends BaseEngine {
|
|
|
893
919
|
* Saves process run metadata to the database (backward-compatible simple version).
|
|
894
920
|
*/
|
|
895
921
|
async saveProcessRun(processRunParams, contextUser) {
|
|
896
|
-
const md =
|
|
922
|
+
const md = this.ProviderToUse;
|
|
897
923
|
const processRun = await md.GetEntityObject('MJ: Content Process Runs', contextUser);
|
|
898
924
|
processRun.NewRecord();
|
|
899
925
|
processRun.SourceID = processRunParams.sourceID;
|
|
@@ -910,7 +936,7 @@ let AutotagBaseEngine = class AutotagBaseEngine extends BaseEngine {
|
|
|
910
936
|
* Uses the JSONType ConfigurationObject for strongly-typed configuration.
|
|
911
937
|
*/
|
|
912
938
|
async CreateBatchedProcessRun(sourceID, totalItemCount, batchSize, contextUser, config) {
|
|
913
|
-
const md =
|
|
939
|
+
const md = this.ProviderToUse;
|
|
914
940
|
const processRun = await md.GetEntityObject('MJ: Content Process Runs', contextUser);
|
|
915
941
|
processRun.NewRecord();
|
|
916
942
|
processRun.SourceID = sourceID;
|
|
@@ -1422,18 +1448,28 @@ let AutotagBaseEngine = class AutotagBaseEngine extends BaseEngine {
|
|
|
1422
1448
|
*/
|
|
1423
1449
|
async recomputeCoOccurrenceIfAvailable(contextUser) {
|
|
1424
1450
|
try {
|
|
1425
|
-
// Dynamic check: TagCoOccurrenceEngine is registered via class factory
|
|
1426
|
-
|
|
1451
|
+
// Dynamic check: TagCoOccurrenceEngine is registered via class factory.
|
|
1452
|
+
// The dynamic import here is the established pattern for the tag-engine
|
|
1453
|
+
// bridge — see CLAUDE.md §"acceptable reasons for dynamic import" #5.
|
|
1454
|
+
const tagEngineModule = await import('@memberjunction/tag-engine');
|
|
1455
|
+
const { TagCoOccurrenceEngine, TagHealthJob, DEFAULT_TAG_HEALTH_THRESHOLDS } = tagEngineModule;
|
|
1427
1456
|
const engine = TagCoOccurrenceEngine.Instance;
|
|
1428
1457
|
if (engine && typeof engine.RecomputeCoOccurrence === 'function') {
|
|
1429
1458
|
LogStatus('[Autotag] Recomputing tag co-occurrence after pipeline completion...');
|
|
1430
1459
|
const result = await engine.RecomputeCoOccurrence(contextUser);
|
|
1431
1460
|
LogStatus(`[Autotag] Co-occurrence recompute complete: ${result.PairsUpdated} pairs updated, ${result.PairsDeleted} deleted`);
|
|
1432
1461
|
}
|
|
1462
|
+
// Tag Health emitters — gated by env flag so deployments can opt in.
|
|
1463
|
+
// Set MJ_AUTOTAG_RUN_TAG_HEALTH=1 to enable.
|
|
1464
|
+
if (process.env.MJ_AUTOTAG_RUN_TAG_HEALTH === '1' && TagHealthJob && DEFAULT_TAG_HEALTH_THRESHOLDS) {
|
|
1465
|
+
LogStatus('[Autotag] Running Tag Health emitters (MJ_AUTOTAG_RUN_TAG_HEALTH=1)...');
|
|
1466
|
+
const summary = await TagHealthJob.Instance.Run(DEFAULT_TAG_HEALTH_THRESHOLDS, contextUser);
|
|
1467
|
+
LogStatus(`[Autotag] Tag Health: ${summary.mergeCount} merge / ${summary.lowUsageCount} low-usage / ${summary.wideNodeCount} wide-node suggestions in ${summary.durationMs}ms.`);
|
|
1468
|
+
}
|
|
1433
1469
|
}
|
|
1434
1470
|
catch (e) {
|
|
1435
1471
|
const msg = e instanceof Error ? e.message : String(e);
|
|
1436
|
-
LogStatus(`[Autotag] Co-occurrence recompute skipped
|
|
1472
|
+
LogStatus(`[Autotag] Co-occurrence / health recompute skipped: ${msg}`);
|
|
1437
1473
|
}
|
|
1438
1474
|
}
|
|
1439
1475
|
/**
|
|
@@ -1633,7 +1669,7 @@ let AutotagBaseEngine = class AutotagBaseEngine extends BaseEngine {
|
|
|
1633
1669
|
*/
|
|
1634
1670
|
async ResolveContentDuplicate(duplicateID, resolution, contextUser) {
|
|
1635
1671
|
try {
|
|
1636
|
-
const md =
|
|
1672
|
+
const md = this.ProviderToUse;
|
|
1637
1673
|
const duplicate = await md.GetEntityObject('MJ: Content Item Duplicates', contextUser);
|
|
1638
1674
|
const loaded = await duplicate.Load(duplicateID);
|
|
1639
1675
|
if (!loaded) {
|
|
@@ -1741,7 +1777,7 @@ let AutotagBaseEngine = class AutotagBaseEngine extends BaseEngine {
|
|
|
1741
1777
|
if (exists) {
|
|
1742
1778
|
return;
|
|
1743
1779
|
}
|
|
1744
|
-
const md =
|
|
1780
|
+
const md = this.ProviderToUse;
|
|
1745
1781
|
const duplicate = await md.GetEntityObject('MJ: Content Item Duplicates', contextUser);
|
|
1746
1782
|
duplicate.NewRecord();
|
|
1747
1783
|
duplicate.ContentItemAID = canonicalAID;
|