npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@tutti-os/connector-market

v0.0.323

Published

`@tutti-os/connector-market` is the host-neutral connector-market boundary shared by Tutti and other approved desktop daemon hosts such as TSH.

Readme

@tutti-os/connector-market

@tutti-os/connector-market is the host-neutral connector-market boundary shared by Tutti and other approved desktop daemon hosts such as TSH.

The package owns the TypeScript and renderer side of the shared boundary:

  • openapi/connector-market.v1.yaml: the HTTP fragment composed by each host daemon's aggregate OpenAPI document
  • contracts: host-neutral backend, event, domain, and error contracts
  • core: the renderer module lifecycle and stable Root boundary
  • services: a module-scoped Root, Runtime, lifecycle, StartupJobs, Valtio domain services, and host adapter contracts
  • ui: the reusable catalog, authorization dialog, and connected-state management dialog built only from @tutti-os/ui-system
  • renderer: a compatibility alias for ui
  • i18n: the connector-market resource bundle and scoped runtime factory

The package does not construct an HTTP client, read Electron globals, choose a catalog endpoint, persist credentials, select install directories, or own a host database. Those responsibilities remain in the consuming daemon and renderer adapters.

Renderer usage

import {
  ConnectorMarketModule,
  IConnectorMarketModule
} from "@tutti-os/connector-market/services";

const connectorMarketModule = new ConnectorMarketModule({
  market: {
    backend: hostConnectorMarketBackend,
    canRequest: () => hostAccountState.authenticated,
    events: hostConnectorMarketEvents
  },
  scope: {}
});

serviceRegistry.registerInstance(
  IConnectorMarketModule,
  connectorMarketModule,
  "owned"
);

const workspaceServices = new InstantiationService(
  serviceRegistry.makeCollection()
);
await connectorMarketModule.activate(workspaceServices);

The backend adapter wraps the host's generated daemon client and maps transport DTOs into package domain types. Daemon events are invalidation hints; the service re-reads the authoritative daemon snapshot before publishing new state. Hosts whose market requires authentication must provide canRequest. A false result keeps startup, reconnect, resume, and command paths transport-silent while still allowing the module lifecycle to reach ready; after the host observes an authenticated transition it calls root.market.reload(). Starting an event subscription and every observed connected state trigger an authoritative reconciliation, including the first connection. Snapshot reads are coalesced per service generation and a connection/event arriving during an in-flight read schedules a serialized follow-up. Mutation responses are revision-fenced so an older response cannot overwrite a newer daemon snapshot; host generated-client adapters must preserve connector-market error code, retryability, and structured details when rejecting a command. Catalog placement is server-owned mutable metadata. The renderer first reads the daemon's category list, then reads each section with an opaque cursor and keeps independent Valtio loading and next-page state per section. featured is an overlapping collection; primary category membership is never inferred from the immutable connector release manifest. A browsed page is cached by the daemon so a newly observed connector is immediately installable, while the scheduled authoritative refresh still traverses every primary category for runtime reconciliation. Activation creates a child service container and executes the complete startup flow before the host renders the module:

created -> starting -> synchronizing -> materializing -> ready
             |              |                 |
             |              |                 +-- ViewServiceStartupJob
             |              +-- MarketServiceStartupJob initial-load barrier
             +-- MarketServiceStartupJob + UiStateServiceStartupJob

ConnectorMarketRoot is the only surface passed to React. The renderer reads the render-ready View store at leaf components and sends intent to UiState or Market services. React never constructs services, starts transports, loads data, or owns disposal. Disposing the module disposes the child container and all services in dependency-safe order.

OpenAPI composition

Inside this repository, the aggregate document may use a repository path:

x-tutti-openapi-fragments:
  - packages/connector/market/openapi/connector-market.v1.yaml

External hosts install an exact released package version and resolve the exported fragment through package exports:

x-tutti-openapi-fragments:
  - package: "@tutti-os/connector-market"
    path: "openapi/connector-market.v1.yaml"

Do not copy the fragment into another repository or reference a Tutti worktree.

Go boundaries

Go is published through responsibility-specific sibling modules rather than from this npm package directory:

  • github.com/tutti-os/tutti/packages/connector/host
  • github.com/tutti-os/tutti/packages/connector/daemon
  • github.com/tutti-os/tutti/packages/connector/store-sqlite
  • github.com/tutti-os/tutti/packages/connector/runtime

All connector npm and Go modules ship in the same exact package cohort. See the sibling module READMEs and docs/architecture/connector-market.md for the ownership and host-adapter boundaries.