Mostlylucid.StyloFlow.Retrieval.Documents
2.4.0
dotnet add package Mostlylucid.StyloFlow.Retrieval.Documents --version 2.4.0
NuGet\Install-Package Mostlylucid.StyloFlow.Retrieval.Documents -Version 2.4.0
<PackageReference Include="Mostlylucid.StyloFlow.Retrieval.Documents" Version="2.4.0" />
<PackageVersion Include="Mostlylucid.StyloFlow.Retrieval.Documents" Version="2.4.0" />
<PackageReference Include="Mostlylucid.StyloFlow.Retrieval.Documents" />
paket add Mostlylucid.StyloFlow.Retrieval.Documents --version 2.4.0
#r "nuget: Mostlylucid.StyloFlow.Retrieval.Documents, 2.4.0"
#:package Mostlylucid.StyloFlow.Retrieval.Documents@2.4.0
#addin nuget:?package=Mostlylucid.StyloFlow.Retrieval.Documents&version=2.4.0
#tool nuget:?package=Mostlylucid.StyloFlow.Retrieval.Documents&version=2.4.0
Mostlylucid.StyloFlow
Declarative orchestration infrastructure with YAML-driven configuration, blackboard pattern, and signal-based coordination. Built on mostlylucid.ephemeral.
Installation
dotnet add package mostlylucid.styloflow
Quick Start
1. Create a YAML Manifest
# manifests/detectors/mydetector.detector.yaml
name: MyDetector
priority: 50
enabled: true
description: Detects specific patterns
taxonomy:
kind: sensor
determinism: deterministic
persistence: ephemeral
triggers:
requires:
- signal: request.headers.present
- signal: request.ip.present
skip_when:
- verified.human
emits:
on_start:
- detector.mydetector.started
on_complete:
- key: detector.mydetector.confidence
type: double
confidence_range: [0.0, 1.0]
on_failure:
- detector.mydetector.failed
defaults:
weights:
base: 1.0
bot_signal: 1.2
human_signal: 0.9
confidence:
neutral: 0.0
bot_detected: 0.3
high_threshold: 0.7
timing:
timeout_ms: 100
features:
detailed_logging: false
enable_cache: true
parameters:
custom_threshold: 0.5
patterns:
- "pattern1"
- "pattern2"
2. Register Services
// File system manifests
services.AddStyloFlow(
manifestDirectories: new[] { "manifests" },
configSectionPath: "Components");
// Or embedded resource manifests
services.AddStyloFlowFromAssemblies(
sourceAssemblies: new[] { typeof(MyDetector).Assembly },
manifestPattern: ".yaml",
configSectionPath: "Components");
3. Create a Configured Component
public class MyDetector : ConfiguredComponentBase
{
public MyDetector(IConfigProvider configProvider)
: base(configProvider) { }
public async Task<double> DetectAsync(RequestContext context)
{
// Use configured values - no magic numbers!
var threshold = GetParam("custom_threshold", 0.5);
var patterns = GetStringListParam("patterns");
// Use weight shortcuts
var weight = WeightBase;
// Use confidence shortcuts
if (someCondition)
return ConfidenceBotDetected * weight;
return ConfidenceNeutral;
}
}
Configuration Hierarchy
StyloFlow resolves configuration with a three-tier hierarchy:
- appsettings.json (highest priority) - Runtime overrides
- YAML manifest - Default values per component
- Code defaults - Fallback values
// appsettings.json - overrides YAML defaults
{
"Components": {
"MyDetector": {
"Weights": {
"Base": 1.5
},
"Parameters": {
"custom_threshold": 0.7
}
}
}
}
Core Concepts
ComponentManifest
The YAML manifest defines everything about a component:
| Section | Purpose |
|---|---|
name |
Component identifier |
priority |
Execution order (lower = earlier) |
taxonomy |
Classification (kind, determinism, persistence) |
triggers |
When to run (required signals, skip conditions) |
emits |
Signals emitted on start/complete/failure |
listens |
Signals this component consumes |
defaults |
Weights, confidence, timing, features, parameters |
escalation |
When to forward to expensive analysis |
budget |
Resource constraints (duration, tokens, cost) |
ConfiguredComponentBase
Base class providing shortcuts to manifest configuration:
// Weight shortcuts
protected double WeightBase;
protected double WeightBotSignal;
protected double WeightHumanSignal;
protected double WeightVerified;
protected double WeightEarlyExit;
// Confidence shortcuts
protected double ConfidenceNeutral;
protected double ConfidenceBotDetected;
protected double ConfidenceHumanIndicated;
protected double ConfidenceStrongSignal;
protected double ConfidenceHighThreshold;
protected double ConfidenceLowThreshold;
// Timing shortcuts
protected int TimeoutMs;
protected int CacheRefreshSec;
// Feature shortcuts
protected bool DetailedLogging;
protected bool CacheEnabled;
protected bool CanEarlyExit;
protected bool CanEscalate;
// Parameter access
protected T GetParam<T>(string name, T defaultValue);
protected IReadOnlyList<string> GetStringListParam(string name);
protected bool IsFeatureEnabled(string featureName);
IManifestLoader
Load manifests from different sources:
- FileSystemManifestLoader - Watch directories for YAML files
- EmbeddedManifestLoader - Load from assembly embedded resources
IConfigProvider
Resolve configuration with hierarchy:
public interface IConfigProvider
{
ComponentManifest? GetManifest(string componentName);
ComponentDefaults GetDefaults(string componentName);
T GetParameter<T>(string componentName, string parameterName, T defaultValue);
IReadOnlyDictionary<string, ComponentManifest> GetAllManifests();
}
Entity Types
Entity types define the input/output contracts for atoms - what data they consume and produce. This enables type-safe orchestration, validation, and documentation.
Built-in Entity Types
StyloFlow includes built-in entity types for common scenarios:
| Category | Types | Description |
|---|---|---|
http |
http.request, http.response |
HTTP request/response with headers, body, metadata |
image |
image.*, image.png, image.jpeg |
Image files with size/dimension constraints |
video |
video.*, video.mp4 |
Video files with duration limits |
audio |
audio.* |
Audio files |
document |
document.pdf |
Document files |
behavioral |
behavioral.signature, behavioral.session |
User behavioral data |
network |
network.ip, network.tls |
Network-level signals |
detection |
detection.contribution, detection.ledger |
Detection pipeline entities |
embedded |
embedded.vector, embedded.multivector |
Vector embeddings for similarity search |
persistence |
persistence.record, persistence.cached |
Storage-aware entities |
data |
data.json, text.plain |
Generic data formats |
Defining Entity Types in YAML
Create domain-specific entity types in *.entity.yaml files:
# manifests/entities/myapp.entity.yaml
entity_types:
- type: myapp.document
category: myapp
description: Application document with metadata
persistence: database
storage_hint: documents_table
signal_patterns:
- document.id
- document.content
- document.metadata.*
schema:
format: inline
inline:
type: object
required: [id, content]
properties:
id:
type: string
content:
type: string
metadata:
type: object
- type: myapp.embedding
category: myapp
description: Document embedding for search
persistence: embedded
vector_dimension: 1536
signal_patterns:
- embedding.vector
- embedding.document_id
Entity Persistence Hints
Entity types can specify how they're typically stored:
| Persistence | Description | Use Case |
|---|---|---|
ephemeral |
In-memory only | Processing intermediates |
json |
JSON serializable | API responses, logs |
database |
Persistent storage | Learning records, audit |
embedded |
Vector store | Similarity search |
file |
File/blob storage | Documents, media |
cached |
Short-term cache | Expensive computations |
Multi-Vector Embeddings
For ColBERT-style late interaction or multi-aspect embeddings:
- type: myapp.multivector_embedding
category: myapp
description: Multi-vector embedding with named components
persistence: embedded
signal_patterns:
- embedding.vectors
- embedding.fingerprint
schema:
format: inline
inline:
type: object
required: [vectors, fingerprint]
properties:
vectors:
type: array
items:
type: object
required: [name, vector]
properties:
name:
type: string
description: Vector identifier (e.g., "title", "content")
vector:
type: array
items:
type: number
description:
type: string
weight:
type: number
default: 1.0
fingerprint:
type: string
aggregation:
type: string
enum: [maxsim, avgpool, concat]
default: maxsim
Input/Output Contracts in Manifests
Reference entity types in component manifests:
# Input contract - what this component consumes
input:
accepts:
- type: http.request
required: true
description: HTTP request for analysis
signal_pattern: request.headers.*
- type: behavioral.signature
required: false
description: Optional behavioral data
signal_pattern: behavioral.*
required_signals:
- request.headers.user-agent
- request.ip
optional_signals:
- request.headers.accept-language
# Output contract - what this component produces
output:
produces:
- type: detection.contribution
description: Analysis contribution
- type: myapp.embedding
description: Generated embedding
signals:
- key: analysis.confidence
entity_type: number
salience: 0.8
description: Analysis confidence score
EntityTypeRegistry
Register and query entity types programmatically:
var registry = new EntityTypeRegistry();
// Register custom types
registry.Register(new EntityTypeDefinition
{
Type = "myapp.custom",
Category = "myapp",
Description = "Custom entity type",
Persistence = EntityPersistence.Json,
SignalPatterns = ["custom.*"]
});
// Query types
var httpTypes = registry.GetByPattern("http.*");
var isValid = registry.Validate("myapp.custom", myObject);
EntityTypeLoader
Load entity types from YAML files or embedded resources:
var loader = new EntityTypeLoader(logger);
// From directory
var types = loader.LoadFromDirectory("manifests/entities", "*.entity.yaml");
// From embedded resources
var types = loader.LoadFromAssembly(typeof(MyApp).Assembly, ".entity.yaml");
foreach (var type in types)
{
registry.Register(type);
}
YAML Schemas and Validation
StyloFlow provides JSON Schema definitions for validating YAML manifest files. These schemas enable IDE autocompletion, validation, and documentation.
Available Schemas
| Schema | Location | Purpose |
|---|---|---|
component-manifest.schema.json |
StyloFlow/Schemas/ | Base component manifest format |
entity-types.schema.json |
StyloFlow/Schemas/ | Entity type definition format |
detector-manifest.schema.json |
BotDetection/schemas/ | Detector-specific manifest format |
policy.schema.json |
BotDetection/schemas/ | Action policy definition format |
Using Schemas with VS Code
Add a .vscode/settings.json to your project:
{
"yaml.schemas": {
"./node_modules/styloflow/schemas/component-manifest.schema.json": [
"**/*.detector.yaml",
"**/*.sensor.yaml",
"**/*.contributor.yaml"
],
"./node_modules/styloflow/schemas/entity-types.schema.json": [
"**/*.entity.yaml"
]
}
}
Or reference directly in the YAML file:
# yaml-language-server: $schema=https://styloflow.dev/schemas/component-manifest.schema.json
name: MyDetector
priority: 50
# ... rest of manifest
Manifest File Naming Conventions
| Pattern | Purpose | Example |
|---|---|---|
{name}.detector.yaml |
Detection components | useragent.detector.yaml |
{name}.sensor.yaml |
Low-level signal extraction | http2.sensor.yaml |
{name}.contributor.yaml |
Higher-level analysis | heuristic.contributor.yaml |
{name}.gatekeeper.yaml |
Flow control (early exit) | fastpath.gatekeeper.yaml |
{name}.pipeline.yaml |
Pipeline definitions | detection.pipeline.yaml |
{name}.entity.yaml |
Entity type definitions | botdetection.entity.yaml |
{name}.policies.yaml |
Policy definitions | block.policies.yaml |
Schema Structure Overview
Component Manifest Schema
# Core identification
name: string # Required: Component identifier
priority: integer # Execution order (lower = earlier)
enabled: boolean # Whether component is active
description: string # Human-readable description
# Classification
scope:
sink: string # Signal namespace (e.g., 'botdetection')
coordinator: string # Coordinator name
atom: string # Atom identifier
taxonomy:
kind: enum # sensor | analyzer | proposer | gatekeeper | aggregator | emitter
determinism: enum # deterministic | probabilistic
persistence: enum # ephemeral | direct_read | direct_write | cached
# Input/Output contracts
input:
accepts: [] # Entity types consumed
required_signals: [] # Signals that must be present
optional_signals: [] # Signals that may enhance processing
output:
produces: [] # Entity types produced
signals: [] # Signals emitted (key, entity_type, salience, description)
# Execution control
triggers:
requires: [] # Conditions to run
skip_when: [] # Conditions to skip
when: [] # Additional expressions
emits:
on_start: [] # Signals on start
on_complete: [] # Signals on completion
on_failure: [] # Signals on failure
conditional: [] # Conditional signals
listens:
required: [] # Required upstream signals
optional: [] # Optional upstream signals
# Resource management
lane:
name: enum # fast | normal | slow | llm | io
max_concurrency: int # Maximum parallel executions
priority: int # Priority within lane
budget:
max_duration: string # TimeSpan format (00:00:30)
max_tokens: int # For LLM components
max_cost: number # Cost limit in dollars
# Configuration
config:
bindings: [] # Configuration key bindings
defaults:
weights: {} # Weight values
confidence: {} # Confidence thresholds
timing: {} # Timing parameters
features: {} # Feature flags
parameters: {} # Custom parameters
tags: [] # Categorization tags
Entity Types Schema
namespace: string # Prefix for all types (e.g., 'botdetection')
version: string # Schema version
description: string # Collection description
entity_types:
type_name:
base_type: enum # string | number | boolean | object | array | embedded_vector | multivector
description: string
persistence: enum # ephemeral | json | database | embedded | file | cached
nullable: boolean
default_value: any
# For validation
validation:
min: number
max: number
min_length: int
max_length: int
pattern: string # Regex
enum: [] # Allowed values
format: string # email | uri | ipv4 | etc.
# For objects
properties: {}
# For embeddings
embedding:
dimensions: int
model: string
distance_metric: enum # cosine | euclidean | dot_product
normalize: boolean
# For multi-vector
vectors:
- name: string
dimensions: int
description: string
weight: number
model: string
source_field: string
signal_pattern: string # For composing from signals
storage_hint: string # sqlite | redis | qdrant | etc.
tags: []
ManifestEntityValidator
Validate entity type references across manifests:
var validator = new ManifestEntityValidator(registry, loader, logger);
// Validate a single manifest
var result = validator.Validate(manifest);
if (!result.IsValid)
{
foreach (var error in result.Errors)
{
Console.WriteLine($"Error: {error}");
}
}
// Validate all manifests
var results = validator.ValidateAll(manifestLoader);
foreach (var r in results.Where(r => !r.IsValid))
{
Console.WriteLine($"{r.ManifestName}: {r.Errors.Count} errors");
}
Signal-Based Orchestration
Trigger Conditions
triggers:
requires:
- signal: request.headers.present
condition: ">"
value: 0
- signal: ip.analyzed
skip_when:
- verified.bot
- verified.human
when:
- confidence < 0.5
Emitted Signals
emits:
on_start:
- detector.mydetector.started
on_complete:
- key: detector.mydetector.result
type: enum
description: Detection result
conditional:
- key: detector.mydetector.bot_detected
type: bool
when: confidence > 0.7
on_failure:
- detector.mydetector.failed
Escalation
escalation:
targets:
llm_analysis:
when:
- signal: confidence
condition: ">"
value: 0.4
- signal: confidence
condition: "<"
value: 0.7
skip_when:
- signal: budget.exhausted
description: Forward ambiguous cases to LLM
Taxonomy Classification
taxonomy:
kind: sensor # sensor, aggregator, escalator, enricher
determinism: deterministic # deterministic, probabilistic, learning
persistence: ephemeral # ephemeral, cached, persisted
Execution Lanes
lane:
name: fast # fast, standard, expensive
max_concurrency: 4
priority: 50
Budget Constraints
budget:
max_duration: "00:00:30"
max_tokens: 1000
max_cost: 0.01
Architecture
┌─────────────────┐
│ appsettings │
│ overrides │
└────────┬────────┘
│
▼
┌──────────────┐ ┌─────────────────┐ ┌──────────────┐
│ YAML │───▶│ ConfigProvider │◀───│ Code │
│ Manifests │ │ (resolves) │ │ Defaults │
└──────────────┘ └────────┬────────┘ └──────────────┘
│
▼
┌─────────────────┐
│ Configured │
│ ComponentBase │
└────────┬────────┘
│
┌──────────────┼──────────────┐
│ │ │
▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌──────────┐
│Detector 1│ │Detector 2│ │Detector N│
└──────────┘ └──────────┘ └──────────┘
Licensing Module
StyloFlow includes a comprehensive licensing system for commercial deployments with tiered features, work unit metering, and mesh coordination.
Quick Start
// Full licensing with System Coordinator
services.AddStyloFlow(options =>
{
options.LicenseToken = myLicenseJson;
options.HeartbeatInterval = TimeSpan.FromSeconds(30);
});
// Free tier (development/testing)
services.AddStyloFlowFree();
// Mesh mode for distributed deployments
services.AddStyloFlowMesh(new[] { "node1:5200", "node2:5200" });
License Tiers
| Tier | Slots | Work Units/min | Features |
|---|---|---|---|
free |
5 | 100 | Basic functionality |
starter |
50 | 500 | Document/Image processing |
professional |
100 | 1000 | Full retrieval + analytics |
enterprise |
Unlimited | Unlimited | Mesh + priority support |
Licensed Components
Create license-aware components that automatically validate tier requirements:
public class DocumentProcessor : LicensedComponentBase
{
public DocumentProcessor(
ILicenseManager licenseManager,
IWorkUnitMeter workUnitMeter,
SignalSink signalSink)
: base(licenseManager, workUnitMeter, signalSink, new LicenseRequirements
{
MinimumTier = "starter",
WorkUnits = 2.0,
WorkUnitsPerKb = 0.5,
RequiredFeatures = new[] { "documents.*" },
AllowFreeTierDegradation = true
})
{ }
public override string ComponentId => "styloflow.documents.processor";
public async Task<Result> ProcessAsync(byte[] document)
{
// Check if we can perform the operation
if (!CanPerformOperation(document.Length))
return Result.Throttled();
// Do the work...
var result = await DoProcessingAsync(document);
// Record work units
RecordWorkUnits(document.Length);
// Emit completion signal
EmitSignal("processed", document.Length.ToString());
return result;
}
}
Work Unit Metering
Track and throttle resource consumption with sliding window metering:
var meter = provider.GetRequiredService<IWorkUnitMeter>();
// Record work
meter.Record(10.0, "documents");
// Check capacity
if (meter.CanConsume(50.0))
{
// Proceed with operation
}
// Get throttle factor (1.0 = full speed, 0.0 = throttled)
var factor = meter.ThrottleFactor;
// Subscribe to threshold events
meter.ThresholdCrossed += (_, evt) =>
{
Console.WriteLine($"Threshold {evt.ThresholdPercent}% crossed");
};
System Signals
The SystemCoordinator emits these signals for orchestration:
| Signal | Description |
|---|---|
styloflow.system.ready |
System initialized and ready |
styloflow.system.heartbeat |
Periodic health check |
styloflow.system.license.valid |
License validated successfully |
styloflow.system.license.expires_soon |
License expiring within grace period |
styloflow.system.license.tier.{tier} |
Current license tier |
styloflow.system.slots.available |
Available molecule slots |
styloflow.system.workunit.rate |
Current work unit consumption rate |
styloflow.system.workunit.throttling |
Throttling is active |
YAML License Configuration
Configure licensing in component manifests:
license:
tier: starter
features:
- documents.*
- images.*
work_units:
base: 2.0
per_kb: 0.5
requires_system: true
allow_degradation: true
signals:
defer_on:
- styloflow.system.ready
resume_on:
- styloflow.system.ready
free_tier:
- component.degraded
licensed:
- component.ready
For detailed licensing documentation, see src/StyloFlow.Licensing/README.md.
Package Signing & Supply Chain Security
StyloFlow includes sfsign, a package signing tool that provides Ed25519-based cryptographic signatures for supply chain integrity.
Installation
dotnet tool install -g Mostlylucid.StyloFlow.Sign
Quick Start
# Generate a signing key
sfsign key generate --id "myvendor" --name "My Vendor Key" --keyring keyring.json
# Sign a package
sfsign sign --package mypackage.sfpkg --key "myvendor" --keyring keyring.json
# Verify a signed package
sfsign verify --package mypackage.sfpkg
Key Management
# Generate a new Ed25519 key pair
sfsign key generate --id "vendor.example" --name "Example Vendor" --keyring keyring.json
# List keys in a keyring
sfsign key list --keyring keyring.json
# Export public key for distribution (safe to share)
sfsign key export-public --id "vendor.example" --keyring keyring.json --output public.json
Signing Packages
# Sign with author type (package creator)
sfsign sign --package mypackage.sfpkg --key "myvendor" --type author --keyring keyring.json
# Add vendor signature (distribution)
sfsign sign --package mypackage.sfpkg --key "distributor" --type vendor --keyring keyring.json
# Add audit signature (third-party verification)
sfsign sign --package mypackage.sfpkg --key "auditor" --type audit --keyring keyring.json
Verification
# Basic verification (checks hash and signatures)
sfsign verify --package mypackage.sfpkg
# Verify with trust configuration
sfsign verify --package mypackage.sfpkg --trust trust.json
# Require specific signers
sfsign verify --package mypackage.sfpkg --require "myvendor" --require "auditor"
Trust Configuration
# Add a key to trusted roots
sfsign trust add --key "myvendor" --keyring keyring.json --config trust.json
# List trusted keys and cross-signings
sfsign trust list --config trust.json
Cross-Signing for Trust Chains
Cross-signing allows a trusted vendor to vouch for another vendor's key, creating trust chains without centralized authorities.
# Create cross-signing certificate (myvendor vouches for partner)
sfsign cross-sign \
--issuer "myvendor" \
--subject "partner.vendor" \
--keyring keyring.json \
--output trust.json
# Cross-sign with expiration
sfsign cross-sign \
--issuer "myvendor" \
--subject "partner.vendor" \
--valid-to "2027-01-01" \
--keyring keyring.json
Signature Types
| Type | Purpose | Use Case |
|---|---|---|
author |
Package creator | Original developer signs their work |
vendor |
Distribution | Distributor vouches for package authenticity |
audit |
Third-party | Security auditor confirms code review |
Manifest Format
Signatures are stored in .sig.json files alongside packages:
{
"version": "1.0",
"packageId": "mypackage",
"packageHash": "GSP4PaEWyjVhQ+071f+l...",
"packageSize": 12345,
"timestamp": "2026-01-08T18:30:00Z",
"signatures": [
{
"signerId": "myvendor",
"signerName": "My Vendor",
"publicKey": "wE47MgQxtBez5t0z+Jgzs...",
"signature": "jkvkKxSYGT9gNLdLIxUp...",
"signedAt": "2026-01-08T18:30:00Z",
"signatureType": "author"
}
]
}
Security Model
- Ed25519: Fast, secure, deterministic signatures with 128-bit security
- SHA-256: Package integrity verification
- Multi-signature: Support for multiple independent signatures
- Cross-signing: Decentralized trust without certificate authorities
- No key escrow: Private keys never leave your control
Package Structure
| Package | Description |
|---|---|
Mostlylucid.StyloFlow.Core |
Core orchestration, manifests, configuration |
Mostlylucid.StyloFlow.Licensing |
Licensing, work unit metering, mesh coordination |
Mostlylucid.StyloFlow.Sign |
Package signing CLI tool (sfsign) |
Mostlylucid.StyloFlow.Retrieval.Core |
Base retrieval interfaces and scoring |
Mostlylucid.StyloFlow.Retrieval.Documents |
Document chunking, MMR reranking |
Mostlylucid.StyloFlow.Retrieval.Images |
Perceptual hashing, image similarity |
Mostlylucid.StyloFlow.Retrieval.Audio |
Audio fingerprinting |
Mostlylucid.StyloFlow.Retrieval.Video |
Video fingerprinting |
Mostlylucid.StyloFlow.Retrieval.Data |
PII detection, anomaly scoring |
Mostlylucid.StyloFlow.Dashboard.Core |
Monitoring dashboard components |
Mostlylucid.StyloFlow.Complete |
Metapackage with all components |
License
This is free and unencumbered software released into the public domain - see UNLICENSE for details.
Documentation is actively being expanded. Check individual project README files for detailed API documentation.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Mostlylucid.StyloFlow.Retrieval.Core (>= 2.4.0)
-
net8.0
- Mostlylucid.StyloFlow.Retrieval.Core (>= 2.4.0)
-
net9.0
- Mostlylucid.StyloFlow.Retrieval.Core (>= 2.4.0)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Mostlylucid.StyloFlow.Retrieval.Documents:
| Package | Downloads |
|---|---|
|
Mostlylucid.StyloFlow.Complete
StyloFlow Complete - All StyloFlow functionality in a single package. Includes Core, Retrieval (Documents, Images, Audio, Video, Data), Dashboard, and all analysis capabilities. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 2.4.0 | 87 | 1/29/2026 |
| 2.3.1 | 91 | 1/9/2026 |
| 2.3.1-alpha0 | 90 | 1/9/2026 |
| 2.1.4 | 91 | 1/8/2026 |
| 2.0.1 | 111 | 1/8/2026 |