@inferedge/moss-clustering v1.0.0-beta.3
@inferedge/moss-clustering / MossClusteringClient
Class: MossClusteringClient
Main client for interacting with the Moss Clustering API
Example
1. Instantiate with your project ID and API key.
2. Call `generateClusters(5)` to create clusters.
3. Access results via `getClusters()`.Constructors
Constructor
new MossClusteringClient(
options):MossClusteringClient
Creates a new MossClusteringClient instance
Parameters
options
Configuration options
Returns
MossClusteringClient
Methods
getServiceHealth()
getServiceHealth(
endpoint):Promise<HealthStatus>
Retrieves service health information.
Parameters
endpoint
Health endpoint to query (health, healthz, or readyz)
"health" | "healthz" | "readyz"
Returns
Promise<HealthStatus>
Health status payload
startClusterGeneration()
startClusterGeneration(
k,options):Promise<GenerateClusterJobResponse>
Starts cluster generation job (async operation)
This method starts an async job to perform k-means++ clustering on indexes in the project. The operation runs in the background. Use the returned jobId to poll for status.
Parameters
k
number
Number of clusters to generate (must be > 0)
options
StartClusterOptions = {}
Optional settings such as a subset of index names to cluster
Returns
Promise<GenerateClusterJobResponse>
Job information with jobId to poll for status
Throws
ClusteringError If k is invalid or the API request fails
Example
const jobResponse = await clustering.startClusterGeneration(5);
console.log('Job started:', jobResponse.jobId);
// Pass StartClusterOptions.indexNames to limit specific indexesgetJobStatus()
getJobStatus(
jobId):Promise<GetJobResponse>
Gets the status of a clustering job
Parameters
jobId
string
Job ID returned from startClusterGeneration
Returns
Promise<GetJobResponse>
Job status with progress and results (if completed)
Example
const jobStatus = await clustering.getJobStatus(jobId);
console.log('Status:', jobStatus.job.status);
console.log('Progress:', jobStatus.job.progress);
console.log('Phase:', jobStatus.job.currentPhase);waitForJobCompletion()
waitForJobCompletion(
jobId,pollInterval,maxWaitTime):Promise<ClusteringResult>
Waits for a job to complete by polling
This is a convenience method that polls getJobStatus until the job completes or fails.
Parameters
jobId
string
Job ID to wait for
pollInterval
number = 2000
Milliseconds between polls (default: 2000)
maxWaitTime
number = 300000
Maximum time to wait in milliseconds (default: 300000 = 5 minutes)
Returns
Promise<ClusteringResult>
Clustering result when job completes
Throws
ClusteringError If job fails or times out
Example
const jobResponse = await clustering.startClusterGeneration(5);
const result = await clustering.waitForJobCompletion(jobResponse.jobId, 2000, 600000);
console.log('Completed job with clusters:', result.clusters.length);generateClusters()
generateClusters(
k,optionsOrPollInterval?,legacyMaxWaitTime?):Promise<ClusteringResult>
Generates clusters and waits for completion (convenience method)
This method combines startClusterGeneration and waitForJobCompletion for a simpler API when you want to wait for the result.
Parameters
k
number
Number of clusters to generate (must be > 0)
optionsOrPollInterval?
Either an options object or the polling interval in milliseconds
number | GenerateClustersOptions
legacyMaxWaitTime?
number
Maximum wait time when using the legacy signature
Returns
Promise<ClusteringResult>
Clustering result with cluster information
Throws
ClusteringError If k is invalid, job fails, or times out
Example
// Simple usage - waits for completion
const result = await clustering.generateClusters(5);
console.log('Created clusters:', result.clusters.length);Advanced usage: supply GenerateClustersOptions with indexNames, pollInterval, and maxWaitTime to process subsets or override polling behavior.
getClusters()
getClusters():
Promise<ClusterInfo[]>
Retrieves all clusters for the project
Returns current clustering state with index counts and assignments. Returns empty array if no clustering exists.
Returns
Promise<ClusterInfo[]>
Array of cluster information
Example
const clusters = await clustering.getClusters();
clusters.forEach(cluster =>
console.log('Cluster label:', cluster.label, 'indexes:', cluster.indexCount)
);getIndexCluster()
getIndexCluster(
indexName):Promise<ClusterAssignment|null>
Gets the cluster assignment for a specific index
Parameters
indexName
string
Name of the index
Returns
Promise<ClusterAssignment | null>
Cluster assignment or null if not classified
Example
const assignment = await clustering.getIndexCluster('my-index');
console.log('Belongs to:', assignment?.label);clusterIndexDocuments()
clusterIndexDocuments(
indexName,k,options?):Promise<GenerateIndexDocumentClustersResponse>
Clusters documents stored within a specific index
Parameters
indexName
string
Name of the index whose documents should be clustered
k
number
Number of clusters to generate (must be > 0)
options?
Optional tuning parameters such as sampling strategy
Returns
Promise<GenerateIndexDocumentClustersResponse>
Document clustering payload including per-phase progress
getIndexDocumentClusters()
getIndexDocumentClusters(
indexName):Promise<GetIndexDocumentClustersResponse|null>
Retrieves the most recently generated document clusters for an index
Returns null if document clustering has not been generated yet.
Parameters
indexName
string
Name of the index to query
Returns
Promise<GetIndexDocumentClustersResponse | null>
Document clustering snapshot or null when unavailable
hasActiveClustering()
hasActiveClustering():
Promise<boolean>
Checks if clustering exists for the project
Quick check to determine if generateClusters() has been called.
Returns
Promise<boolean>
True if clustering exists, false otherwise
Example
if (!(await clustering.hasActiveClustering())) {
await clustering.generateClusters(5);
}deleteClustering()
deleteClustering():
Promise<void>
Deletes all clustering data for the project
This removes all clusters and assignments. This action cannot be undone. You will need to call generateClusters() again to re-cluster.
Returns
Promise<void>
Example
await clustering.deleteClustering();
console.log('All clustering data deleted');