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/workspace-external-core

v0.0.26

Published

Contracts and host-agnostic helpers for the workspace app external bridge.

Readme

@tutti-os/workspace-external-core

Contracts and host-agnostic helpers for the workspace app external bridge.

Workspace apps are trusted installed app packages. The external bridge is a privileged host integration surface, not a web-style permission sandbox. User activation gates disruptive host UI such as dialogs and navigation, while trusted app APIs may read or update host workspace state directly.

window.tuttiExternal currently exposes:

  • app.getContext() and app.subscribe() for host workspace/app context.
  • at.query() for host-provided mention candidates.
  • files.select() for user-activated workspace file picking.
  • files.open() for user-activated host opening/revealing of a known workspace file path.
  • files.upload() for trusted app upload of a browser File/Blob into the app's managed durable data path, with optional progress and AbortSignal cancellation. It returns file metadata only; app-specific asset records remain owned by the calling app.
  • permissions.request() for user-activated host permission grants such as managed AI model access.
  • pdf.printHtmlToPdf() for user-activated host PDF generation from print-ready HTML.
  • settings.open() for user-activated host settings navigation, including the managed models tab.
  • userProjects.* for trusted app access to local user project paths, default project selection, project directory creation, and recently used project state.
  • workspace.openFeature() for user-activated host workspace navigation, such as opening the message center.
  • logs.write() for fire-and-forget frontend diagnostics that append to the workspace app web.log.

Rich Text At Providers

Workspace apps that use @tutti-os/ui-rich-text can adapt host mention candidates from window.tuttiExternal.at.query() directly into rich-text trigger providers:

import { createTuttiExternalAtRichTextTriggerProviders } from "@tutti-os/workspace-external-core/rich-text";

const triggerProviders = createTuttiExternalAtRichTextTriggerProviders({
  bridge: window.tuttiExternal,
  providerIds: ["workspace-app", "agent-session", "agent-generated-file"]
});

Each external at provider becomes one RichTextTriggerProvider with the same provider id. This keeps rich-text categories and sections aligned with the host contract, while the app still owns local-only mention sources, caching policy, i18n labels, palette categories, row rendering, and insertion side effects.

See @tutti-os/ui-rich-text for the generic trigger-provider and at-panel contracts.