KnowledgePublicationStore
KIT · interface · Type contract
Single-writer store for the publication record.
Import
import type { KnowledgePublicationStore } from '@jangts/agent-core/kits/knowledge';/** @typedef {import('@jangts/agent-core/kits/knowledge').KnowledgePublicationStore} KnowledgePublicationStore */Other public entry points:@jangts/agent-core/types, @jangts/agent-core/structs, @jangts/agent-core/kits/knowledge, @jangts/agent-core/kits.
Definition
interface KnowledgePublicationStoreField structure
| Field | Type | Required | Description |
|---|---|---|---|
load | () => Promise<KnowledgePublicationRecord> | Required | Returns the current record; it must always be readable. |
compareAndSwap | (expectedRevision: number, next: KnowledgePublicationRecord) => Promise<boolean> | Required | Atomically replaces the record when the stored revision still equals expectedRevision. |
Member index
| Member | Purpose |
|---|---|
load | Returns the current record; it must always be readable. |
compareAndSwap | Atomically replaces the record when the stored revision still equals expectedRevision. |
Member details
load
Returns the current record; it must always be readable.
KnowledgePublicationStore.load(): Promise<KnowledgePublicationRecord>Returns the current record; it must always be readable.
No call parameters.
Returns: Promise<KnowledgePublicationRecord>.
Awaited value: KnowledgePublicationRecord.
Return value structure
| Field | Type | Required | Description |
|---|---|---|---|
revision | number | Required | Read-only. Monotonic record revision; every accepted mutation increments it. |
publishedRevision | number | Required | Read-only. Revision number of the currently published document set. |
documents | readonly KnowledgeDocument[] | Required | Read-only. Published documents, in catalog order. |
candidates | readonly KnowledgeCandidate[] | Required | Read-only. Pending candidates; expired entries are removed before use. |
compareAndSwap
Atomically replaces the record when the stored revision still equals expectedRevision.
KnowledgePublicationStore.compareAndSwap(expectedRevision: number, next: KnowledgePublicationRecord): Promise<boolean>Atomically replaces the record when the stored revision still equals expectedRevision.
| Parameter | Type | Passing | Description |
|---|---|---|---|
expectedRevision | number | Required | — |
next | KnowledgePublicationRecord | Required | — |
Fields of next
| Field | Type | Required | Description |
|---|---|---|---|
revision | number | Required | Read-only. Monotonic record revision; every accepted mutation increments it. |
publishedRevision | number | Required | Read-only. Revision number of the currently published document set. |
documents | readonly KnowledgeDocument[] | Required | Read-only. Published documents, in catalog order. |
candidates | readonly KnowledgeCandidate[] | Required | Read-only. Pending candidates; expired entries are removed before use. |
Returns: Promise<boolean>.
Awaited value: boolean.
Examples
- Knowledge candidates: compilation checks and explicit publication: Candidate preparation and publication reuse the Knowledge compiler, and the real store commits official documents through CAS.
Bind document storage and source authorization
Beginner · Node.js
import { defineKnowledgePublication } from '@jangts/agent-core/kits/knowledge';
import type { KnowledgePublicationOptions } from '@jangts/agent-core/kits/knowledge';
export function publication<App>(store: KnowledgePublicationOptions<App>['store'],
authorize: KnowledgePublicationOptions<App>['authorize'],
verifySources: KnowledgePublicationOptions<App>['verifySources']) {
return defineKnowledgePublication({ store, authorize, verifySources, maxReadChars: 12000 });
}import { defineKnowledgePublication } from '@jangts/agent-core/kits/knowledge';
export function publication(store, authorize, verifySources) {
return defineKnowledgePublication({ store, authorize, verifySources, maxReadChars: 12000 });
}Publish an approved candidate document set
Configuration · Node.js
Call this after the App's real approval flow. Source changes, expired candidates, or version conflicts reject the commit.
import type { KnowledgePublication } from '@jangts/agent-core/kits/knowledge';
import type { OperationContext } from '@jangts/agent-core';
export async function publish<App>(publication: KnowledgePublication<App>, candidateId: string,
context: OperationContext<App>) {
const record = await publication.read(context);
return publication.publish({ revision: record.revision, candidateId }, context);
}export async function publish(publication, candidateId, context) {
const record = await publication.read(context);
return publication.publish({ revision: record.revision, candidateId }, context);
}