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

@libai168/dsh-tool-airtable

v0.2.0

Published

Airtable base tools for DeepSeek Harness: token verification, base listing, capped record queries, and explicit record create/update/delete

Readme

dsh-tool-airtable

English | 中文

面向 DeepSeek Harness(dsh)的 Airtable Cordis 插件。Agent 可以验证令牌、列出 base、限长查询记录,并执行显式的单用途记录创建/更新/删除——同时令牌和大体积单元格值不会进入工具输出。

安装

npm install @libai168/dsh-tool-airtable

需要 peer dependency:@deepseek-ai/cordis(^4.0.1)和 @deepseek-ai/dsh-tools(^0.1.0-rc.6)。

配置

- name: 'github:LJH-snow/dsh-tool-airtable'
  config:
    # baseUrl: 'https://api.airtable.com/v0'
    tokenEnv: 'AIRTABLE_TOKEN'
    # timeoutMs: 15000

插件从 tokenEnv 指定的环境变量读取 Airtable 个人访问令牌(默认 AIRTABLE_TOKEN)。不要把可用令牌写入源码、示例、测试或提交的配置文件。在 Airtable 开发者中心创建令牌,只授予部署所需范围(读工具需 data.records:read,写工具需 data.records:write,列 base 需 schema.bases:read)。

baseUrl 覆盖必须是绝对的 http:// 或 https:// 根地址。只允许公网可达主机:localhost、环回、私有、链路本地、CGNAT、组播、保留/文档/基准测试网段以及全部 IANA 特殊用途地址段都会被拒绝;DNS 结果包含任一此类地址时会在发出请求前 fail closed。不允许 credentials、query、fragment 或非根路径。

工具

| 工具 | 说明 | 写操作 | |---|---|---| | airtable_verify_token | 通过 meta/whoami 验证令牌,不回显 | 否 | | airtable_list_bases | 列出可访问的 base(offset 分页) | 否 | | airtable_list_records | 查询记录,支持 pageSize/maxRecords/offset 和 filterByFormula | 否 | | airtable_get_record | 读取单条记录的字段预览 | 否 | | airtable_create_records | 从 JSON 数组创建最多 10 条记录 | 是 | | airtable_update_record | PATCH 更新单条记录 | 是 | | airtable_delete_record | 按 ID 删除单条记录 | 是 |

安全契约

  • 令牌在插件启动时从环境变量读取,不进入工具返回值或渲染文本。
  • base 与记录 ID 按官方 app…/rec… 17 字符格式校验,所有路径段 URL 编码;表名长度受限。
  • 记录分页单页上限 50(maxRecords 上限 200),响应总量 20000 字符预算并带 truncated 标记;单元格值展平为 300 字符预览(含数组、关联记录、附件),空字段不输出。
  • airtable_create_records 强制官方批量上限(单次 10 条),且不回显单元格值——结果只含数量与 ID;更新工具要求非空 fields 对象。
  • 三个写工具均为显式参数操作并标记 kind: 'edit';不提供表结构修改、base 创建或批量删除工具。
  • 调用方取消信号会传递给 fetch,默认请求超时 15 秒。
  • API 错误会规范化为 { ok: false, reason } 或 { found: false, reason }。

API 范围

当前版本使用 developers.airtable.com 文档记载的 Web API 端点:GET /v0/meta/whoami、GET /v0/meta/bases,以及记录集合端点(GET、带 records 数组的 POST、单记录 PATCH/DELETE)。表结构列举、评论、webhook、base/表创建有意未包含。

开发

npm install
npm run typecheck
npm test
npm run build
npm pack --dry-run

测试通过注入 fetch 完全离线运行,不需要 Airtable 账号。

许可证

MIT