Help us shape the future of Go! Take the 2026 Go Developer Survey

knowledge-engine-toolkit

module
v0.0.5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 12, 2026 License: MIT

README

Tech AI Knowledge Engine

A generic, layered service substrate for building multi-language (Go + Python) backend systems — the reusable "how we build services" library. It carries no product-domain logic: just the foundation, clients, repositories, services, pipelines, workflows, transport, and batch-execution machinery that a service stack is assembled from, behind dependency-free core interfaces.

MIT-licensed and semantically versioned (the git tag is the source of truth). The design rules — layers, swappable components, decorators, error codes — are in ARCHITECTURE.md; contribution rules are in CONTRIBUTING.md.

Layout

go.mod                  ONE Go module: github.com/gt-tech-ai/knowledge-engine-toolkit (packages under go/)
go/
  core/                 Layer 0 — pure interfaces + types (no external deps)
  foundation/           Layer 1 — config, logger, metrics, tracer, resilience, cache, stream (bounded backpressured results)
  clients/              Layer 2 — external-system integration (db, cache, messaging, rpc, storage, lock)
  repos/                Layer 3 — data-access base (repository, cursor, decorators)
  services/             Layer 4 — domain-service base
  pipelines/            Layer 5 — stateless transforms
  workflows/            Layer 6 — multi-step orchestration
  transport/            Layer 7 — HTTP/RPC/JSON:API
  execution/            batch fan-out substrate (discover → map → fan-out → aggregate)
  helpers/              small shared utilities
  tests/                black-box tests (unit + integration via testcontainers), fixtures, generated mocks
python/
  techai_webutils/      the Python mirror of the Go substrate (published to PyPI)

Layers import downward only (core → foundation → clients → … → transport); .golangci.yml carries depguard rules for the boundaries. Every swappable component is a Kind + Config + factory (NewFromConfig in Go, new_<type>_from_config in Python), selected by configuration and injected at a composition root. See ARCHITECTURE.md.

Consuming

Go:

go get github.com/gt-tech-ai/knowledge-engine-toolkit@latest
import "github.com/gt-tech-ai/knowledge-engine-toolkit/go/foundation/logger"

Python:

pip install techai-webutils   # or: uv add techai-webutils

Developing

Mocks are generated by mockgen into go/tests/mocks/; regenerate them (as CI does) after changing a mocked interface:

go install go.uber.org/mock/mockgen@v0.6.0
go generate ./go/tests/mocks/...

Then run the checks:

# Go
go vet ./go/...
golangci-lint run ./go/...          # layer-boundary rules + the linter set
go test ./go/...                    # unit
go test -tags=integration ./go/...  # integration (real deps via testcontainers)

# Python
cd python/techai_webutils
uv run ruff check . && uv run basedpyright src && uv run pytest

Integration tests use real dependencies in throwaway Docker containers (testcontainers) — never fakes.

License

MIT — see LICENSE.

Directories

Path Synopsis
go
clients/analytics
Package analytics builds the AnalyticsStore: the zero-infrastructure stub (the default) or the Cassandra-protocol store (Apache Cassandra locally, Amazon Keyspaces in staging, chosen by the nested Cassandra config).
Package analytics builds the AnalyticsStore: the zero-infrastructure stub (the default) or the Cassandra-protocol store (Apache Cassandra locally, Amazon Keyspaces in staging, chosen by the nested Cassandra config).
clients/analytics/cassandra
Package cassandra is the Cassandra-protocol AnalyticsStore (Apache Cassandra or Amazon Keyspaces behind clients/cassandra.Session).
Package cassandra is the Cassandra-protocol AnalyticsStore (Apache Cassandra or Amazon Keyspaces behind clients/cassandra.Session).
clients/analytics/decorators
Package decorators wraps an AnalyticsStore with resilience and observability, in the order recovery → metrics → tracing → circuit breaker → timeout (outermost first), and wraps a clients/cassandra.Session's writes in the client stack.
Package decorators wraps an AnalyticsStore with resilience and observability, in the order recovery → metrics → tracing → circuit breaker → timeout (outermost first), and wraps a clients/cassandra.Session's writes in the client stack.
clients/analytics/stub
Package stub is the default analytics store: it accepts every write and answers every query with an empty result, so the graph boots with no Cassandra.
Package stub is the default analytics store: it accepts every write and answers every query with an empty result, so the graph boots with no Cassandra.
clients/cache
Package cache provides a builder for ByteCache implementations with multiple backends.
Package cache provides a builder for ByteCache implementations with multiple backends.
clients/cache/decorators
Package decorators provides cache decorators for cross-cutting concerns.
Package decorators provides cache decorators for cross-cutting concerns.
clients/cache/redis
Package redis provides a Redis-backed cache implementation with singleflight support.
Package redis provides a Redis-backed cache implementation with singleflight support.
clients/cassandra
Package cassandra builds a Cassandra-protocol Session — self-managed Apache Cassandra (KindCassandra, local and dev) or Amazon Keyspaces (KindKeyspaces, staging) — behind the consumer-side Session seam, so the choice is a config change.
Package cassandra builds a Cassandra-protocol Session — self-managed Apache Cassandra (KindCassandra, local and dev) or Amazon Keyspaces (KindKeyspaces, staging) — behind the consumer-side Session seam, so the choice is a config change.
clients/cassandra/cassandra
Package cassandra builds the gocql cluster configuration for a self-managed Apache Cassandra (local Compose, dev): a token-aware, DC-aware host policy, optional password auth and TLS.
Package cassandra builds the gocql cluster configuration for a self-managed Apache Cassandra (local Compose, dev): a token-aware, DC-aware host policy, optional password auth and TLS.
clients/cassandra/keyspaces
Package keyspaces builds the gocql cluster configuration for Amazon Keyspaces: the regional endpoint on port 9142, mandatory TLS with host verification, SigV4 authentication (the AWS SigV4 gocql plugin, credentials from an AWS credentials provider — the default chain, IRSA in-cluster) and DisableInitialHostLookup, per AWS guidance.
Package keyspaces builds the gocql cluster configuration for Amazon Keyspaces: the regional endpoint on port 9142, mandatory TLS with host verification, SigV4 authentication (the AWS SigV4 gocql plugin, credentials from an AWS credentials provider — the default chain, IRSA in-cluster) and DisableInitialHostLookup, per AWS guidance.
clients/connector
Package connector builds ConnectorSources for the connector family: S3 now, a future GDrive/Salesforce kind added as a new case + sibling package (ARCHITECTURE.md#the-one-idea; the foundation/logger NewFromConfig pattern).
Package connector builds ConnectorSources for the connector family: S3 now, a future GDrive/Salesforce kind added as a new case + sibling package (ARCHITECTURE.md#the-one-idea; the foundation/logger NewFromConfig pattern).
clients/connector/decorators
Package decorators wraps a connector ConnectorSource with the shared client observability stack (metrics/tracing/logging).
Package decorators wraps a connector ConnectorSource with the shared client observability stack (metrics/tracing/logging).
clients/connector/s3
Package s3 implements the S3 ConnectorSource for the connector family: a "test connection" probe that lists a bounded page under a connector's bucket/prefix using the connector's OWN credentials, over the shared StorageClient (INJECTED — this package never imports go/clients/storage, so there is no lateral same-layer import).
Package s3 implements the S3 ConnectorSource for the connector family: a "test connection" probe that lists a bounded page under a connector's bucket/prefix using the connector's OWN credentials, over the shared StorageClient (INJECTED — this package never imports go/clients/storage, so there is no lateral same-layer import).
clients/database
Package database is the database client tier: it selects a SQL connection-pool backend — PostgreSQL today (postgres/) — by Kind and returns the interfaces.DatabasePool contract, so switching database engines is a config change, not a caller edit.
Package database is the database client tier: it selects a SQL connection-pool backend — PostgreSQL today (postgres/) — by Kind and returns the interfaces.DatabasePool contract, so switching database engines is a config change, not a caller edit.
clients/database/postgres
Package postgres is the PostgreSQL backend of the database client tier: a lifecycle-managed *sql.DB pool (Client) plus ORM-independent pool utilities — a boot-time reachability probe (Ping) and a Prometheus pool-stats collector.
Package postgres is the PostgreSQL backend of the database client tier: a lifecycle-managed *sql.DB pool (Client) plus ORM-independent pool utilities — a boot-time reachability probe (Ping) and a Prometheus pool-stats collector.
clients/decorators
Package decorators provides the shared client-boundary resilience stack: one reusable builder that composes, from outermost to innermost,
Package decorators provides the shared client-boundary resilience stack: one reusable builder that composes, from outermost to innermost,
clients/interceptorcore
Package interceptorcore holds the framework-agnostic resilience decisions shared by the gRPC and Connect interceptor stacks.
Package interceptorcore holds the framework-agnostic resilience decisions shared by the gRPC and Connect interceptor stacks.
clients/jobs
Package jobs provides a factory for background job queue implementations with multiple backends.
Package jobs provides a factory for background job queue implementations with multiple backends.
clients/jobs/decorators
Package decorators composes the Job decorator stack (ARCHITECTURE.md#decorator-order) around a scheduled job function: LeaderElection → RateLimit → Retry → Timeout → Tracing → Metrics → Logging → Job.
Package decorators composes the Job decorator stack (ARCHITECTURE.md#decorator-order) around a scheduled job function: LeaderElection → RateLimit → Retry → Timeout → Tracing → Metrics → Logging → Job.
clients/jobs/river
Package river provides River-based job queue integration: Runtime (a pgxpool-backed River client that works jobs, with leader-elected periodic jobs), InsertClient (an enqueue-only producer), and Migrate (River's own schema).
Package river provides River-based job queue integration: Runtime (a pgxpool-backed River client that works jobs, with leader-elected periodic jobs), InsertClient (an enqueue-only producer), and Migrate (River's own schema).
clients/lock
Package lock builds a config-selected core/interfaces.Locker — a DistributedLock (keyed, token-fenced, best-effort) plus Hold, the managed acquire-with-watchdog helper a single-active-operation guard depends on.
Package lock builds a config-selected core/interfaces.Locker — a DistributedLock (keyed, token-fenced, best-effort) plus Hold, the managed acquire-with-watchdog helper a single-active-operation guard depends on.
clients/lock/decorators
Package decorators composes cross-cutting concerns — resilience (retry, circuit-breaker, timeout) and observability (logging, metrics, tracing) — around any core/interfaces.DistributedLock, without touching the backend.
Package decorators composes cross-cutting concerns — resilience (retry, circuit-breaker, timeout) and observability (logging, metrics, tracing) — around any core/interfaces.DistributedLock, without touching the backend.
clients/lock/local
Package local provides an in-process DistributedLock backend for single-pod deployments (dev / replica=1), where cross-process coordination is unnecessary.
Package local provides an in-process DistributedLock backend for single-pod deployments (dev / replica=1), where cross-process coordination is unnecessary.
clients/lock/redis
Package redis provides a cross-pod DistributedLock backend over Redis, for multi-replica deployments (staging/prod).
Package redis provides a cross-pod DistributedLock backend over Redis, for multi-replica deployments (staging/prod).
clients/messaging
Package messaging provides a factory for message publisher and subscriber implementations with multiple backends.
Package messaging provides a factory for message publisher and subscriber implementations with multiple backends.
clients/messaging/decorators
Package decorators wraps the messaging MessagePublisher and MessageHandler with cross-cutting concerns.
Package decorators wraps the messaging MessagePublisher and MessageHandler with cross-cutting concerns.
clients/messaging/memory
Package memory provides an in-process messaging backend for no-infra builds and tests.
Package memory provides an in-process messaging backend for no-infra builds and tests.
clients/messaging/redis
Package redis provides a Redis Pub/Sub messaging integration (publisher + subscriber) implementing the core MessagePublisher / MessageConsumer contracts over PUBLISH / SUBSCRIBE / PSUBSCRIBE.
Package redis provides a Redis Pub/Sub messaging integration (publisher + subscriber) implementing the core MessagePublisher / MessageConsumer contracts over PUBLISH / SUBSCRIBE / PSUBSCRIBE.
clients/messaging/sqs
Package sqs provides an AWS-SDK-backed SQS messaging integration (publisher + subscriber) usable against real AWS SQS and against ElasticMQ for local dev.
Package sqs provides an AWS-SDK-backed SQS messaging integration (publisher + subscriber) usable against real AWS SQS and against ElasticMQ for local dev.
clients/outbox
Package outbox builds the OutboxSink a transactional-outbox relay delivers through: the zero-infrastructure stub (the default), an SQS queue, or an S3 bucket.
Package outbox builds the OutboxSink a transactional-outbox relay delivers through: the zero-infrastructure stub (the default), an SQS queue, or an S3 bucket.
clients/outbox/decorators
Package decorators wraps the outbox sinks' SDK seams in the client stack (Bulkhead → Retry → CircuitBreaker → Timeout → Tracing → Metrics → Logging) and codes every SDK error so the stack retries only transient failures.
Package decorators wraps the outbox sinks' SDK seams in the client stack (Bulkhead → Retry → CircuitBreaker → Timeout → Tracing → Metrics → Logging) and codes every SDK error so the stack retries only transient failures.
clients/outbox/s3
Package s3 is the S3 OutboxSink: it writes each record as one object, keyed by a template, with a SHA-256 integrity checksum (Object Lock buckets require an integrity checksum and accept it in place of Content-MD5) and SSE-KMS when the record names a key.
Package s3 is the S3 OutboxSink: it writes each record as one object, keyed by a template, with a SHA-256 integrity checksum (Object Lock buckets require an integrity checksum and accept it in place of Content-MD5) and SSE-KMS when the record names a key.
clients/outbox/sqs
Package sqs is the SQS OutboxSink: it routes each record to a queue, sends each queue's records with SendMessageBatch (at most 10 per request) and maps each entry's result back to its record.
Package sqs is the SQS OutboxSink: it routes each record to a queue, sends each queue's records with SendMessageBatch (at most 10 per request) and maps each entry's result back to its record.
clients/outbox/stub
Package stub is the zero-infrastructure OutboxSink: it accepts every record and delivers nothing, so the graph boots with no queue or bucket.
Package stub is the zero-infrastructure OutboxSink: it accepts every record and delivers nothing, so the graph boots with no queue or bucket.
clients/prometheus
Package prometheus is the client for a Prometheus server's HTTP query API: instant queries reduced to one sample, and range queries reduced to one series.
Package prometheus is the client for a Prometheus server's HTTP query API: instant queries reduced to one sample, and range queries reduced to one series.
clients/prometheus/stub
Package stub is the zero-infrastructure metrics querier: every instant query is 0 and every range query an empty series, with no network I/O.
Package stub is the zero-infrastructure metrics querier: every instant query is 0 and every range query an empty series, with no network I/O.
clients/replaybuffer
Package replaybuffer selects and builds a ReplayBuffer backend from configuration and wraps it in the resilience + observability decorator stack, mirroring clients/lock.
Package replaybuffer selects and builds a ReplayBuffer backend from configuration and wraps it in the resilience + observability decorator stack, mirroring clients/lock.
clients/replaybuffer/decorators
Package decorators composes cross-cutting concerns — a per-op timeout and the observability trio (logging, metrics, tracing) — around any core/interfaces.ReplayBuffer, without touching the backend.
Package decorators composes cross-cutting concerns — a per-op timeout and the observability trio (logging, metrics, tracing) — around any core/interfaces.ReplayBuffer, without touching the backend.
clients/replaybuffer/memory
Package memory provides an in-process ReplayBuffer backend for single-pod deployments (dev / replica=1), where a reconnect lands on the same pod so cross-pod sharing is unnecessary.
Package memory provides an in-process ReplayBuffer backend for single-pod deployments (dev / replica=1), where a reconnect lands on the same pod so cross-pod sharing is unnecessary.
clients/replaybuffer/redis
Package redis provides a cross-pod ReplayBuffer backend over Redis, for multi-replica deployments (staging/prod) where a reconnect may land on a different pod than the one that buffered the tail.
Package redis provides a cross-pod ReplayBuffer backend over Redis, for multi-replica deployments (staging/prod) where a reconnect may land on a different pod than the one that buffered the tail.
clients/rpc
Package rpc is the RPC client tier: it selects an RPC transport backend — gRPC today (grpc/) — by Kind and returns the RPCClient contract, so switching RPC frameworks is a config change, not a caller edit.
Package rpc is the RPC client tier: it selects an RPC transport backend — gRPC today (grpc/) — by Kind and returns the RPCClient contract, so switching RPC frameworks is a config change, not a caller edit.
clients/rpc/grpc
Package grpc provides gRPC server and client factories.
Package grpc provides gRPC server and client factories.
clients/rpc/grpc/interceptors
Package interceptors provides gRPC unary interceptors for cross-cutting concerns including observability, resilience, and request lifecycle management.
Package interceptors provides gRPC unary interceptors for cross-cutting concerns including observability, resilience, and request lifecycle management.
clients/secrets
Package secrets is the credential-source client tier: it selects a secret backend — an environment variable (env/), a git-ignored local file (file/), or AWS Secrets Manager (awssm/) — by Kind and returns the interfaces.Source contract, so switching where a credential is read is a configuration change, not a caller edit.
Package secrets is the credential-source client tier: it selects a secret backend — an environment variable (env/), a git-ignored local file (file/), or AWS Secrets Manager (awssm/) — by Kind and returns the interfaces.Source contract, so switching where a credential is read is a configuration change, not a caller edit.
clients/secrets/awssm
Package awssm implements the AWS Secrets Manager credential Source: it reads a credential from a Secrets Manager secret (a JSON object) named by a caller-supplied Ref→location mapping, extracting the configured JSON field.
Package awssm implements the AWS Secrets Manager credential Source: it reads a credential from a Secrets Manager secret (a JSON object) named by a caller-supplied Ref→location mapping, extracting the configured JSON field.
clients/secrets/env
Package env implements the environment-variable credential Source: it resolves a Ref to a configured environment variable name and reads its value via os.Getenv.
Package env implements the environment-variable credential Source: it resolves a Ref to a configured environment variable name and reads its value via os.Getenv.
clients/secrets/file
Package file implements the file-backed credential Source: it reads and writes credentials in a git-ignored local file (a dotenv-style KEY=value store) named by a caller-supplied Ref→location mapping.
Package file implements the file-backed credential Source: it reads and writes credentials in a git-ignored local file (a dotenv-style KEY=value store) named by a caller-supplied Ref→location mapping.
clients/storage
Package storage provides the StorageClient factory.
Package storage provides the StorageClient factory.
clients/storage/decorators
Package decorators wraps a base StorageClient with the shared client-boundary resilience stack (go/clients/decorators): Bulkhead → Retry → CircuitBreaker → Timeout → Tracing → Metrics → Logging.
Package decorators wraps a base StorageClient with the shared client-boundary resilience stack (go/clients/decorators): Bulkhead → Retry → CircuitBreaker → Timeout → Tracing → Metrics → Logging.
clients/storage/memory
Package memory provides an in-memory StorageClient backend for no-infra builds and tests.
Package memory provides an in-memory StorageClient backend for no-infra builds and tests.
clients/storage/s3
Package s3 implements the StorageClient against S3-compatible object stores (AWS S3 and MinIO), selected by configuration.
Package s3 implements the StorageClient against S3-compatible object stores (AWS S3 and MinIO), selected by configuration.
clients/transport
Package transport is the server-transport client tier: it selects an HTTP/RPC server backend — Connect over net/http today (connect/) — by Kind and returns the interfaces.ServerTransport contract, so switching server frameworks is a config change, not a caller edit.
Package transport is the server-transport client tier: it selects an HTTP/RPC server backend — Connect over net/http today (connect/) — by Kind and returns the interfaces.ServerTransport contract, so switching server frameworks is a config change, not a caller edit.
clients/transport/connect
Package connect provides a Connect/gRPC server factory that mounts proto-generated handlers on a standard net/http.ServeMux.
Package connect provides a Connect/gRPC server factory that mounts proto-generated handlers on a standard net/http.ServeMux.
clients/transport/connect/interceptors
Package interceptors provides Connect RPC interceptors for cross-cutting concerns.
Package interceptors provides Connect RPC interceptors for cross-cutting concerns.
core/errctx
Package errctx carries a request-scoped sink that captures the original domain error behind a sanitized transport error.
Package errctx carries a request-scoped sink that captures the original domain error behind a sanitized transport error.
core/errors
Package errors provides application error types and codes.
Package errors provides application error types and codes.
core/events
Package events is the generic event contract: the Event interface, the metadata every event carries, and a Registry a consumer fills with its own event catalog to parse payloads.
Package events is the generic event contract: the Event interface, the metadata every event carries, and a Registry a consumer fills with its own event catalog to parse payloads.
core/interfaces
Package interfaces defines the core contracts for the Tech AI Knowledge Engine.
Package interfaces defines the core contracts for the Tech AI Knowledge Engine.
core/principal
Package principal carries the request's resolved principal — the consumer's own caller type (its authorization model) — in a context.Context.
Package principal carries the request's resolved principal — the consumer's own caller type (its authorization model) — in a context.Context.
core/tenant
Package tenant carries the request-scoped tenant (organization) identity in a context.Context.
Package tenant carries the request-scoped tenant (organization) identity in a context.Context.
core/types
Package types provides shared domain types used across the platform.
Package types provides shared domain types used across the platform.
execution/engine
Package engine provides execution infrastructure: concurrent fan-out, observer dispatch, step execution, and context-based observer propagation.
Package engine provides execution infrastructure: concurrent fan-out, observer dispatch, step execution, and context-based observer propagation.
execution/gate
Package gate provides Phase, Gate, GateBuilder, and RunGate for composing AnyJobs into ordered phases with stop-on-failure and error aggregation.
Package gate provides Phase, Gate, GateBuilder, and RunGate for composing AnyJobs into ordered phases with stop-on-failure and error aggregation.
execution/job
Package job provides the Job[T] type: a discoverer-backed, parallelised, optionally-retried unit of work implementing interfaces.AnyJob.
Package job provides the Job[T] type: a discoverer-backed, parallelised, optionally-retried unit of work implementing interfaces.AnyJob.
execution/job/decorators
Package decorators provides logging, metrics, tracing, and recovery wrappers for interfaces.AnyJob.
Package decorators provides logging, metrics, tracing, and recovery wrappers for interfaces.AnyJob.
foundation/cache
Package cache provides caching utilities for the foundation layer.
Package cache provides caching utilities for the foundation layer.
foundation/cache/decorators
Package decorators provides cache decorators for cross-cutting concerns.
Package decorators provides cache decorators for cross-cutting concerns.
foundation/chartspec
Package chartspec is the pure visual-algebra compiler of the analytics engine.
Package chartspec is the pure visual-algebra compiler of the analytics engine.
foundation/config
Package config provides a factory for ConfigLoader implementations with multiple backends.
Package config provides a factory for ConfigLoader implementations with multiple backends.
foundation/config/schema/infra
Package infra provides typed configuration structures for Tech AI Knowledge Engine services.
Package infra provides typed configuration structures for Tech AI Knowledge Engine services.
foundation/config/schema/listquery
Package listquery is the config surface for the list-query value-suggestion facet: the row threshold above which a facet-eligible field is served from the maintained distinct_values table instead of a live DISTINCT, and the interval at which the reconcile job recomputes refcounts.
Package listquery is the config surface for the list-query value-suggestion facet: the row threshold above which a facet-eligible field is served from the maintained distinct_values table instead of a live DISTINCT, and the interval at which the reconcile job recomputes refcounts.
foundation/config/schema/pipelines
Package pipelines is the config surface for the pipeline (orchestration) layer: the per-pipeline operation timeout and the multipart-upload sizing.
Package pipelines is the config surface for the pipeline (orchestration) layer: the per-pipeline operation timeout and the multipart-upload sizing.
foundation/config/schema/repos
Package repos is the config surface for the repository (data-access) layer: the cache TTL/version/key-prefix and the per-operation timeout of the repository decorators.
Package repos is the config surface for the repository (data-access) layer: the cache TTL/version/key-prefix and the per-operation timeout of the repository decorators.
foundation/config/schema/resilience
Package resilience is the tunable config surface for the foundation resilience decorators (retry, breaker, rate-limit, bulkhead, timeout, budget) — the per-environment knobs threaded through the repo/client/interceptor providers Each struct mirrors its primitive's tunable fields with defaults identical to the primitive's DefaultConfig(), so adopting the config surface is behavior-preserving; the providers convert these into the primitive's options.
Package resilience is the tunable config surface for the foundation resilience decorators (retry, breaker, rate-limit, bulkhead, timeout, budget) — the per-environment knobs threaded through the repo/client/interceptor providers Each struct mirrors its primitive's tunable fields with defaults identical to the primitive's DefaultConfig(), so adopting the config surface is behavior-preserving; the providers convert these into the primitive's options.
foundation/config/schema/stores
Package stores is the config surface for the data (stores) layer: the page-size cap, the per-resource default page sizes and the list-query caches, so a deployer can tune pagination without a rebuild.
Package stores is the config surface for the data (stores) layer: the page-size cap, the per-resource default page sizes and the list-query caches, so a deployer can tune pagination without a rebuild.
foundation/config/schema/transport
Package transport is the config surface for the edge (transport) layer: WebSocket, gRPC, CORS and HTTP tuning plus the rate-limiter toggle.
Package transport is the config surface for the edge (transport) layer: WebSocket, gRPC, CORS and HTTP tuning plus the rate-limiter toggle.
foundation/config/schema/workers
Package workers is the shared config surface for background workers: the common tunables (name, telemetry, relay and sweep cadences, batching) plus the sweep-timing cross-field invariant, so every worker inherits the typed-field + Validate shape.
Package workers is the shared config surface for background workers: the common tunables (name, telemetry, relay and sweep cadences, batching) plus the sweep-timing cross-field invariant, so every worker inherits the typed-field + Validate shape.
foundation/config/schema/workflows
Package workflows is the config surface for the workflow (orchestration) layer: the per-workflow operation timeout applied through workflow.Builder.WithTimeout.
Package workflows is the config surface for the workflow (orchestration) layer: the per-workflow operation timeout applied through workflow.Builder.WithTimeout.
foundation/config/viper
Package viper provides a Viper-backed ConfigLoader implementation.
Package viper provides a Viper-backed ConfigLoader implementation.
foundation/crypto
Package crypto provides authenticated symmetric encryption for data at rest — e.g.
Package crypto provides authenticated symmetric encryption for data at rest — e.g.
foundation/decorate
Package decorate is the type-agnostic operation-decoration mechanism: a common OpMiddleware interface, a Chain composer, and a generic Exec[R] runner that wraps ANY named operation with the cross-cutting decorator stack, regardless of the operation's return type.
Package decorate is the type-agnostic operation-decoration mechanism: a common OpMiddleware interface, a Chain composer, and a generic Exec[R] runner that wraps ANY named operation with the cross-cutting decorator stack, regardless of the operation's return type.
foundation/decorator
Package decorator provides one generic implementation of the cross-cutting decorator stack (timeout, circuit breaker, metrics, tracing, logging, recovery) shared by every tier whose unit of work has the shape Execute(ctx, In) (Out, error) — pipelines and workflows today.
Package decorator provides one generic implementation of the cross-cutting decorator stack (timeout, circuit breaker, metrics, tracing, logging, recovery) shared by every tier whose unit of work has the shape Execute(ctx, In) (Out, error) — pipelines and workflows today.
foundation/dtovalidate
Package dtovalidate is the leaf rule library the generated DTO Validate() methods compose Each rule is a small, hand-written check that REUSES the standard library (google/uuid, net/url, path/filepath, net/mail) rather than a hand-rolled regex, and returns a core/errors CodeInvalidInput AppError on violation so the failure classifies to 400 / InvalidArgument at the boundary.
Package dtovalidate is the leaf rule library the generated DTO Validate() methods compose Each rule is a small, hand-written check that REUSES the standard library (google/uuid, net/url, path/filepath, net/mail) rather than a hand-rolled regex, and returns a core/errors CodeInvalidInput AppError on violation so the failure classifies to 400 / InvalidArgument at the boundary.
foundation/fsys
Package fsys provides a real-OS filesystem implementation of the FS interface defined in core/interfaces.
Package fsys provides a real-OS filesystem implementation of the FS interface defined in core/interfaces.
foundation/git
Package git provides reusable git operations for the CLI and tooling layers.
Package git provides reusable git operations for the CLI and tooling layers.
foundation/lifecycle
Package lifecycle provides a Manager that starts a set of lifecycle-managed clients in registration order and stops them in reverse for graceful shutdown, so a composition root wires its clients once and coordinates their startup and teardown centrally instead of by hand.
Package lifecycle provides a Manager that starts a set of lifecycle-managed clients in registration order and stops them in reverse for graceful shutdown, so a composition root wires its clients once and coordinates their startup and teardown centrally instead of by hand.
foundation/listquery
Package listquery is the pure, ORM-free half of the list-query SDK a per-resource filter allow-list (Map) + sort allow-list (Set), a JSON filter-DSL parser that compiles a client filter string into the core/types Filter contract (gated by the allow-list so only allow-listed fields with type-checked values reach a query), and the shared Compile/CompileOrder fold that walks that IR through a core/interfaces.QueryBackend algebra.
Package listquery is the pure, ORM-free half of the list-query SDK a per-resource filter allow-list (Map) + sort allow-list (Set), a JSON filter-DSL parser that compiles a client filter string into the core/types Filter contract (gated by the allow-list so only allow-listed fields with type-checked values reach a query), and the shared Compile/CompileOrder fold that walks that IR through a core/interfaces.QueryBackend algebra.
foundation/logger
Package logger provides structured logging with multiple backend implementations.
Package logger provides structured logging with multiple backend implementations.
foundation/logger/logctx
Package logctx provides shared context utilities for logger sub-packages.
Package logctx provides shared context utilities for logger sub-packages.
foundation/logger/stdlib
Package stdlib provides a pure stdlib slog logger implementation.
Package stdlib provides a pure stdlib slog logger implementation.
foundation/logger/zap
Package zap provides a zap-backed logger implementation with PII redaction.
Package zap provides a zap-backed logger implementation with PII redaction.
foundation/metrics
Package metrics provides a builder for the Prometheus metrics implementation.
Package metrics provides a builder for the Prometheus metrics implementation.
foundation/metrics/noop
Package noop provides a no-op metrics implementation that silently discards all metric operations.
Package noop provides a no-op metrics implementation that silently discards all metric operations.
foundation/metrics/prom
Package prom provides a Prometheus-backed metrics implementation.
Package prom provides a Prometheus-backed metrics implementation.
foundation/middleware
Package middleware provides stdlib net/http middleware for composing request processing pipelines without external web frameworks.
Package middleware provides stdlib net/http middleware for composing request processing pipelines without external web frameworks.
foundation/options
Package options provides a generic functional options pattern for configuring types.
Package options provides a generic functional options pattern for configuring types.
foundation/resilience
Package resilience provides fault-tolerance primitives as standalone subpackages.
Package resilience provides fault-tolerance primitives as standalone subpackages.
foundation/resilience/adaptivethrottle
Package adaptivethrottle provides a client-side adaptive throttler (Google SRE "Handling Overload"): it sheds a growing fraction of outbound requests locally when a backend's accept-rate drops, protecting the backend from a client-side retry storm.
Package adaptivethrottle provides a client-side adaptive throttler (Google SRE "Handling Overload"): it sheds a growing fraction of outbound requests locally when a backend's accept-rate drops, protecting the backend from a client-side retry storm.
foundation/resilience/budget
Package budget tracks retry consumption across a call chain via context propagation.
Package budget tracks retry consumption across a call chain via context propagation.
foundation/resilience/bulkhead
Package bulkhead provides a builder for Bulkhead implementations with multiple backends.
Package bulkhead provides a builder for Bulkhead implementations with multiple backends.
foundation/resilience/bulkhead/adaptive
Package adaptive provides a self-tuning (AIMD) concurrency-limiting Bulkhead.
Package adaptive provides a self-tuning (AIMD) concurrency-limiting Bulkhead.
foundation/resilience/bulkhead/channel
Package channel provides a channel-based semaphore bulkhead implementation.
Package channel provides a channel-based semaphore bulkhead implementation.
foundation/resilience/circuitbreaker
Package circuitbreaker provides a builder for CircuitBreaker implementations with multiple backends.
Package circuitbreaker provides a builder for CircuitBreaker implementations with multiple backends.
foundation/resilience/circuitbreaker/gobreaker
Package gobreaker provides a circuit breaker backed by sony/gobreaker/v2.
Package gobreaker provides a circuit breaker backed by sony/gobreaker/v2.
foundation/resilience/deadletter
Package deadletter provides the dead-letter-queue facade — the Go mirror of techai_webutils.foundation.resilience.dlq.
Package deadletter provides the dead-letter-queue facade — the Go mirror of techai_webutils.foundation.resilience.dlq.
foundation/resilience/dedup
Package dedup provides message deduplication for exactly-once processing under at-least-once delivery.
Package dedup provides message deduplication for exactly-once processing under at-least-once delivery.
foundation/resilience/hedge
Package hedge provides a builder for Hedger implementations that reduce tail latency by racing a backup attempt.
Package hedge provides a builder for Hedger implementations that reduce tail latency by racing a backup attempt.
foundation/resilience/leader
Package leader provides leader election for single-instance job execution.
Package leader provides leader election for single-instance job execution.
foundation/resilience/ratelimiter
Package ratelimiter provides a builder for RateLimiter implementations with multiple backends.
Package ratelimiter provides a builder for RateLimiter implementations with multiple backends.
foundation/resilience/ratelimiter/token
Package token provides a token-bucket rate limiter backed by golang.org/x/time/rate.
Package token provides a token-bucket rate limiter backed by golang.org/x/time/rate.
foundation/resilience/reswire
Package reswire builds resilience primitives (retrier, circuit breaker) from a ConfigLoader + the schema/resilience config surface.
Package reswire builds resilience primitives (retrier, circuit breaker) from a ConfigLoader + the schema/resilience config surface.
foundation/resilience/retry
Package retry provides a builder for Retrier implementations with multiple backends.
Package retry provides a builder for Retrier implementations with multiple backends.
foundation/resilience/retry/exponential
Package exponential provides an exponential backoff retrier using cenkalti/backoff/v5.
Package exponential provides an exponential backoff retrier using cenkalti/backoff/v5.
foundation/stream
Package stream is the engine's substrate for large, pull-based results over interfaces.Stream.
Package stream is the engine's substrate for large, pull-based results over interfaces.Stream.
foundation/system
Package system provides CommandRunner implementations for executing external commands.
Package system provides CommandRunner implementations for executing external commands.
foundation/tracer
Package tracer provides distributed tracing with swappable backends.
Package tracer provides distributed tracing with swappable backends.
foundation/tracer/nooptracer
Package nooptracer provides a no-op tracer that satisfies interfaces.Tracer.
Package nooptracer provides a no-op tracer that satisfies interfaces.Tracer.
foundation/tracer/oteltracer
Package oteltracer provides an OpenTelemetry-backed tracer implementation.
Package oteltracer provides an OpenTelemetry-backed tracer implementation.
foundation/validator
Package validator provides a small, generic business-rule validator for the service layer — the below-transport-boundary complement to the proto/request validation performed at the transport edge (connect ValidateInterceptor).
Package validator provides a small, generic business-rule validator for the service layer — the below-transport-boundary complement to the proto/request validation performed at the transport edge (connect ValidateInterceptor).
pipelines/pipeline
Package pipeline provides the base pipeline implementation.
Package pipeline provides the base pipeline implementation.
pipelines/pipeline/decorators
Package decorators provides fluent decorator composition for pipelines.
Package decorators provides fluent decorator composition for pipelines.
repos/adapters/gorm
Package gorm is the GORM ORM adapter (repos/adapters/gorm): a lifecycle-managed opener for a *gorm.DB selected by Kind (lazily, in Start), so a consumer can put its repositories on GORM, or switch another persistence adapter it owns for this one, as a composition-root wiring change rather than a rewrite.
Package gorm is the GORM ORM adapter (repos/adapters/gorm): a lifecycle-managed opener for a *gorm.DB selected by Kind (lazily, in Start), so a consumer can put its repositories on GORM, or switch another persistence adapter it owns for this one, as a composition-root wiring change rather than a rewrite.
repos/errors
Package errors provides database error mapping to domain errors.
Package errors provides database error mapping to domain errors.
repos/errors/postgres
Package postgres provides PostgreSQL-specific DB error mapping.
Package postgres provides PostgreSQL-specific DB error mapping.
repos/repository
Package repository provides the BaseRepository implementation with decorator support and keyset pagination for building data access layers.
Package repository provides the BaseRepository implementation with decorator support and keyset pagination for building data access layers.
repos/repository/compiler
Package compiler selects the query-compiler backend for a configured Kind.
Package compiler selects the query-compiler backend for a configured Kind.
repos/repository/compiler/ent
Package ent is the Ent/SQL backend of the multi-target query-compilation SDK: it interprets the list-query IR into Ent dialect/sql predicates and order options — the func(*sql.Selector) shape every Ent query accepts via query.Where(predicate.T(pred)) and query.Order(opt).
Package ent is the Ent/SQL backend of the multi-target query-compilation SDK: it interprets the list-query IR into Ent dialect/sql predicates and order options — the func(*sql.Selector) shape every Ent query accepts via query.Where(predicate.T(pred)) and query.Order(opt).
repos/repository/decorators
Package decorators provides fluent decorator composition for repositories.
Package decorators provides fluent decorator composition for repositories.
repos/repository/entlist
Package entlist is the Ent glue shared by every app's ListRunner adapters: it folds a resolved-column ListSpec's predicates and ORDER BY into Ent query-node functions through the entcompiler QueryBackend.
Package entlist is the Ent glue shared by every app's ListRunner adapters: it folds a resolved-column ListSpec's predicates and ORDER BY into Ent query-node functions through the entcompiler QueryBackend.
services
Package services provides the shared service base and a generic operation decorator/builder for CLI (operation) services.
Package services provides the shared service base and a generic operation decorator/builder for CLI (operation) services.
services/outbox
Package outbox is the transactional-outbox relay: it leases due rows from an interfaces.OutboxStore, delivers them through an interfaces.OutboxSink in bounded-concurrency chunks, and finalizes each row by its own outcome — sent, retried with capped exponential backoff and full jitter, or parked once its attempts are exhausted.
Package outbox is the transactional-outbox relay: it leases due rows from an interfaces.OutboxStore, delivers them through an interfaces.OutboxSink in bounded-concurrency chunks, and finalizes each row by its own outcome — sent, retried with capped exponential backoff and full jitter, or parked once its attempts are exhausted.
services/service
Package service provides BaseService with decorator support for building domain service layers with cross-cutting concerns.
Package service provides BaseService with decorator support for building domain service layers with cross-cutting concerns.
services/service/decorators
Package decorators provides fluent decorator composition for services.
Package decorators provides fluent decorator composition for services.
tests/fixtures
Package fixtures provides thin, hand-written factories over the GENERATED gomock mocks in the sibling mocks package.
Package fixtures provides thin, hand-written factories over the GENERATED gomock mocks in the sibling mocks package.
tests/fixtures/dbtest/cassandra
Package cassandra provides a testcontainers-based Apache Cassandra 5 instance for integration tests.
Package cassandra provides a testcontainers-based Apache Cassandra 5 instance for integration tests.
tests/fixtures/dbtest/elasticmq
Package elasticmq provides a testcontainers-based ElasticMQ (SQS-compatible) instance for integration tests.
Package elasticmq provides a testcontainers-based ElasticMQ (SQS-compatible) instance for integration tests.
tests/fixtures/dbtest/minio
Package minio provides a testcontainers-based MinIO instance for integration tests.
Package minio provides a testcontainers-based MinIO instance for integration tests.
tests/fixtures/dbtest/postgres
Package postgres provides a generic testcontainers-based PostgreSQL database for integration tests.
Package postgres provides a generic testcontainers-based PostgreSQL database for integration tests.
tests/fixtures/dbtest/redis
Package redis provides a testcontainers-based Redis instance for integration tests.
Package redis provides a testcontainers-based Redis instance for integration tests.
tests/fixtures/e2ekit
Package e2ekit is the gen-free shared test-kit for endpoint E2E + telemetry suites.
Package e2ekit is the gen-free shared test-kit for endpoint E2E + telemetry suites.
tests/fixtures/outboxtest
Package outboxtest is the reusable OutboxStore conformance suite plus a reference database/sql Postgres store it is proven against.
Package outboxtest is the reusable OutboxStore conformance suite plus a reference database/sql Postgres store it is proven against.
tests/fixtures/store
Package store (testutil) provides a interfaces.Store implementation that supports call counting and error injection for use in tests.
Package store (testutil) provides a interfaces.Store implementation that supports call counting and error injection for use in tests.
tests/fixtures/suite
Package suite provides test suite constructors for unit and integration tests.
Package suite provides test suite constructors for unit and integration tests.
tests/fixtures/suite/base
Package base provides the base test suite with shared utilities.
Package base provides the base test suite with shared utilities.
tests/integration
Package integration holds the Go integration tests: each file exercises a clients-tier backend against the real service it wraps, started in a throwaway testcontainers container by the fixtures under go/tests/fixtures/dbtest — Redis (cache, lock, messaging, replay buffer), MinIO (S3 storage and the S3 connector), ElasticMQ (SQS messaging), and PostgreSQL (River's runtime and migrations).
Package integration holds the Go integration tests: each file exercises a clients-tier backend against the real service it wraps, started in a throwaway testcontainers container by the fixtures under go/tests/fixtures/dbtest — Redis (cache, lock, messaging, replay buffer), MinIO (S3 storage and the S3 connector), ElasticMQ (SQS messaging), and PostgreSQL (River's runtime and migrations).
tests/mocks
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.
transport
Package transport provides transport-layer abstractions for HTTP and RPC handlers.
Package transport provides transport-layer abstractions for HTTP and RPC handlers.
transport/decorators
Package decorators provides fluent decorator composition for transport handlers.
Package decorators provides fluent decorator composition for transport handlers.
transport/docs
Package docs provides reusable HTTP handlers for serving OpenAPI specs and Redoc UI documentation pages.
Package docs provides reusable HTTP handlers for serving OpenAPI specs and Redoc UI documentation pages.
transport/jsonapi
Package jsonapi provides HTTP middleware that transforms Vanguard REST responses into [JSON:API](https://jsonapi.org/format/) envelope format.
Package jsonapi provides HTTP middleware that transforms Vanguard REST responses into [JSON:API](https://jsonapi.org/format/) envelope format.
transport/rest
Package rest provides HTTP response helpers for REST API handlers.
Package rest provides HTTP response helpers for REST API handlers.
transport/rpc
Package rpc provides Connect RPC utilities for bidirectional mapping between domain AppErrors and Connect/gRPC status codes.
Package rpc provides Connect RPC utilities for bidirectional mapping between domain AppErrors and Connect/gRPC status codes.
workflows/loop
Package loop runs background work as periodic workflow passes.
Package loop runs background work as periodic workflow passes.
workflows/workflow
Package workflow provides the base workflow implementation.
Package workflow provides the base workflow implementation.
workflows/workflow/decorators
Package decorators provides fluent decorator composition for workflows.
Package decorators provides fluent decorator composition for workflows.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL