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

@inquir/compute

v0.1.1

Published

Workspace-first SDK for Inquir Compute assets.

Downloads

97

Readme

@inquir/compute

Workspace-first SDK for defining, discovering, generating, and running Inquir Compute assets.

Install

npm install @inquir/compute zod

What It Includes

  • defineFunction() and definePipeline() for code-first assets.
  • loadConfig() for inquir.config.json.
  • discoverAssets() for workspace asset scanning.
  • generateCodegenArtifacts() / generateAndWriteCodegenArtifacts() for typed client + registry.json.
  • runLocally() for local function execution/debug harness.
  • HTTP transport helpers (createClient, invokeRemote, deploy/list helpers).

Concepts

  • Function: a single compute unit with typed input/output (Zod schemas). Created with defineFunction(). Discovered by file pattern, run locally via runLocally(), deployed and invoked remotely via the transport helpers.
  • Pipeline: a declarative DAG of functions created with definePipeline(). Included in the codegen registry; orchestration is handled server-side.
  • Client: the generated client.ts (from generateAndWriteCodegenArtifacts()). Provides a type-safe createClient() factory that wraps invokeRemote() with your asset's I/O types.
  • Source of truth: local files on disk. registry.json is derived — rebuild it with generateAndWriteCodegenArtifacts() whenever sources change.
  • Local ↔ remote link: remote functions store linkedLocalName (local asset name) and sourceHash. Compare hashes to detect drift.

Quick Example

import { defineFunction } from '@inquir/compute';
import { z } from 'zod';

export const hello = defineFunction(
  {
    name: 'hello',
    input: z.object({ name: z.string().optional() }),
    output: z.object({ message: z.string() }),
  },
  async (input) => ({ message: `Hello, ${input.name ?? 'world'}` })
);

Minimal Workspace Config

Create inquir.config.json:

{
  "functionsDir": "inquir/functions",
  "pipelinesDir": "inquir/pipelines",
  "generatedDir": ".inquir/generated"
}

Discovery + Codegen

import { discoverAssets, generateAndWriteCodegenArtifacts, loadConfig } from '@inquir/compute';

const config = loadConfig(process.cwd());
const registry = await discoverAssets(config);
await generateAndWriteCodegenArtifacts(config.absoluteGeneratedDir, registry);

This generates:

  • .inquir/generated/client.ts
  • .inquir/generated/registry.json

registry.json includes stable metadata such as name, kind, sourceHash, and assetRoot.

Local Run

import { runLocally } from '@inquir/compute';

const result = await runLocally(
  {
    kind: 'function',
    name: 'hello',
    filePath: '/abs/path/inquir/functions/hello/index.ts',
    exportName: 'hello',
  },
  { name: 'World' }
);

Remote Invoke (Transport)

import { createClient, invokeRemote } from '@inquir/compute';

const client = createClient({ baseUrl: 'http://localhost:3000', apiKey: process.env.INQUIR_API_KEY });
const response = await invokeRemote(client, 'hello', { name: 'World' });