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

ultrastiching-cli

v0.3.0

Published

UltraStiching data API command line client

Readme

ultrastiching-cli

UltraStiching 数据 API 的 Node.js 命令行入口。要求 Node.js 22.12 或更高版本。实现 update、doctor、list、info、docs api、call、arrow、ws newsflash、datasets 和 db。本地数据库与 Python SDK 共用 DuckDB 文件,同步与校验行为见下文。14 个预设的数据完整同步仍待服务端验证,现阶段不把单次成功响应当作完整历史。

发行包名为 ultrastiching-cli,安装后的命令为 ultrastiching。统一 Key 变量为 ULTRASTICHING_API_KEY,CLI、Python SDK 和 Claude Code 请求头助手其次读取 ~/.ultrastiching/credentials.env。安装时先下载官网凭据,再比较并设置私有文件与用户环境,供 CLI 和 Codex 原生 HTTP MCP 使用;WorkBuddy 单独在本机 MCP 配置保存直接鉴权头。数据库路径与地址变量保持既有约定。

更新 CLI 与 Skill

ultrastiching update
ultrastiching update --check
ultrastiching update --quiet --skill-dir "已安装 Skill 的完整目录"

update 通过 npm 的 latest 版本检查全局 ultrastiching-cli,有新版时安装检查到的精确版本并读回确认;相同或更高版本不重装、不降级。Skill 从官网 https://www.ultrastiching.com/sdk/skill-latest.json 读取版本、ZIP 地址与 SHA256,校验下载包后完整替换目录。默认检查已存在的 ~/.agents/skills/ultrastiching-skills、~/.codex/skills/ultrastiching-skills 和 ~/.claude/skills/ultrastiching-skills;项目级或其他客户端安装用 --skill-dir 指定实际目录,不创建未安装的 Skill。更新会移除旧 Skill 目录中的本地改动及额外文件。

--check 只检查,输出各组件的已安装版本、目标版本和状态;旧 Skill 没有版本信息时下载校验包并比较内容。发布器为新版 ZIP 的入口注入 metadata.version,以后直接比较版本。--quiet 抑制标准输出和错误输出,结果与原始失败仍记录在现有安装日志中,失败返回退出码 1。CLI 与 Skill 分别报告结果,一个失败仍尝试另一个;安装失败保留准确的暂存/恢复位置。Skill 的每会话首次加载指令使用这条静默命令;重新读取更新后的指令不会再次更新。本命令不需要 API Key。

凭据与统一安装

通过 统一安装指导 安装时,已有 CLI 只检查更新,覆盖前确认。以下新增命令不发起业务请求:

ultrastiching --version
ultrastiching auth status
ultrastiching auth diagnose
ultrastiching auth sync
ultrastiching auth download --ticket-file "私有临时票据文件的完整路径"
ultrastiching auth import --file "下载文件的完整路径"
ultrastiching auth configure
ultrastiching mcp configure-workbuddy --ticket-file "私有临时票据文件的完整路径"
# 主动替换 Key,需确认:ultrastiching auth configure --replace

所有客户端的统一安装流程每次都使用临时安装凭据下载官网文件,已有 ULTRASTICHING_API_KEY 或私有文件也不跳过下载。auth download --ticket-file 使用固定官网入口和 Authorization 请求头,不依赖浏览器 Cookie;票据一小时有效,必须先保存到本机私有文件,不放入命令参数、URL 或日志。auth import --file 也可以导入用户从凭据页面新下载的文件。

下载/导入先比较私有凭据、当前进程和用户持久环境;Windows 直接比较当前用户注册表的原值,macOS 另比较登录会话环境,POSIX 检查已识别的 Shell/environment.d 字面配置。相同位置跳过写入,缺失位置设置,任一位置不同都先停止,不修改现有 Key。命令返回 credential_replacement_required、差异位置和私有恢复路径,不返回 Key。用户确认后运行 auth import --file "保留的下载文件路径" --replace,不重新下载;成功才清理下载副本。成功结果 JSON 的 comparison 报告各位置的 same/missing/different,并报告实际文件和环境写入结果,提示及日志路径写到标准错误输出。

WorkBuddy 使用 mcp configure-workbuddy --ticket-file "私有票据文件路径",下载后在任何 Key 写入前同时比较用户级 ~/.workbuddy/mcp.json。MCP 以 streamableHttp 直接连接 https://api.ultrastiching.com/mcp,保存实际鉴权头,不依赖环境占位符;同一 Key 的用户环境仍供 CLI 使用。不同 Key 或已有连接变更先确认,确认后用 mcp configure-workbuddy --file "保留的下载文件路径" --replace 继续。保留其他 MCP 和无关选项,相同内容不重写,使用私有权限并读回校验;MCP 与环境同步结果分别记录。--from-file 仅用于用户明确要求的本机 MCP 单独修复,不替代安装的下载比较。

auth status 只报告本地有值及来源,不证明在线鉴权。安装器提供 CLI、MCP 和 Skill 资源后报告凭据步骤待下载比较,不再自动复用本地 Key。独立的 auth sync --from-file 用于已确认来源的环境恢复,也执行比较;不同 Key 需经确认加 --replace。auth configure 是独立的手动隐藏输入入口,统一安装流程不使用它。不要在 Agent 对话中填写 Key;mcp headers 仅供客户端请求头助手消费,其输出不能展示给 Agent。

macOS 确认 zsh 后只写 .zshrc(遵循既有 ZDOTDIR),确认 bash 后只写 .bashrc,并同步当前登录会话;Linux 使用相同的 Shell 默认规则及用户 environment.d,有会话总线时同步服务环境。保留无关 Shell 内容,无法确定位置时报告原始原因,不猜测。POSIX 含 Key 的新文件使用 0600,Windows 使用私有 ACL。更新后重载 MCP,在新终端/新客户端会话验收。

本版为 0.3.0,不再检查或修改 Windows 目录 ACL,保留用户和宿主设置的目录权限,含 Key 的文件单独处理私有权限;沿用 WorkBuddy 直接鉴权、下载后 Key 比较及 Windows 环境同步。输入 API Key 时回显星号,退格同步擦除,实际 Key 不回显。

UltraStiching 自有文件统一使用 ~/.ultrastiching/:正式凭据为 credentials.env,日志为 logs/install-<timestamp>.jsonl,安装私有暂存为 private/,默认数据库为 data/marketdb.duckdb。CLI 每次下载使用独立 private/credential-<随机编号>/,成功清理,失败保留准确恢复路径;Agent 的票据、Skill 下载和解压暂存使用独立 private/install-<run_id>/。新产品不迁移旧目录。

auth 和 mcp configure-workbuddy 命令每次新建独立安装日志,本次诊断追加到同一文件。文件名按机器本地开始时间及其时区生成,例如 ~/.ultrastiching/logs/install-20261008T173000123+0800.jsonl;日志事件时间也使用本地时间并带时区。同毫秒启动追加序号,独占创建,不覆盖已有日志。每次运行开始按文件名中的时间自动清理超过 7 × 24 小时的普通安装日志,不以修改时间判断;清理结果和原始失败记录到本次日志。

安装日志记录运行环境、文件身份、凭据来源/保存与环境同步结果、MCP 保存与读回、下载错误及原始异常链,过滤 API Key、票据和鉴权值。日志路径及 run_id 写入标准错误输出,状态 JSON 的标准输出不变;不自动上传。日志失败不遮盖实际安装结果。常规数据查询不写安装日志。完整安装还包括 Agent 自行执行的步骤,Agent 日志关联各子命令的独立日志,见统一安装指导。

Windows 环境同步通过已有的 ULTRASTICHING_API_KEY 子进程环境传值,不使用标准输入管道,不把 Key 写入命令参数。用户环境写入及读回一致性先完成,再单独广播环境变更,分别记录结果。auth status 仅证明本地凭据存在;用户环境读回成功也不证明已运行的桌面客户端继承了新值,需要在新会话验收。

auth diagnose 在 Windows 对照六种 PowerShell 标准流/传值组合,使用固定假值,不读取真实凭据、不改用户环境、不发起网络请求。遇到 EBUSY 时保留各项原始错误、耗时及标准流配置,诊断某项失败时退出码为 1;其他系统报告不适用。它用于定位进程启动问题,不自动重试或重新下载 Key。

安装与离线发现

从 npm 安装指定版本:

npm install -g [email protected]
ultrastiching --help
ultrastiching list --search 交易日历
ultrastiching info trade_cal
ultrastiching docs api

docs api 只输出随包分发的 离线端点索引 的绝对路径,格式为一行普通文本,不读取凭据或发送请求。通常先用 list/info 查接口,需要浏览总表时才按标题、端点名或分类检索该文件。索引与注册表由同一份目录生成;Skill 按需从 CLI 获取文档路径。

list 和 info 使用随包携带的目录,不需要 API Key,不发送业务请求。也可安装维护者提供的包:npm install -g ./ultrastiching-cli-0.3.0.tgz。源码环境使用下面的安装方式:

cd meridian-cli
npm install
npm link
ultrastiching list --search 交易日历
ultrastiching info trade_cal
ultrastiching call trade_cal --start-date 20260901 --end-date 20260918 --out calendar.json
ultrastiching arrow get_s_stockname --args '{"params":{"code":["600745.SH"]},"fields":["code"]}' --out stockname.arrow
ultrastiching ws newsflash --limit 10 --count 10
ultrastiching datasets
ultrastiching db init
ultrastiching db sync --dataset concept_index_daily --concept-code '<实际概念指数代码>' --limit 100 --start 20260901 --end 20260918
ultrastiching db status
ultrastiching db validate
ultrastiching db repair --dataset concept_index_daily
ultrastiching db sql --query 'SELECT * FROM concept_index_daily LIMIT 5'
ultrastiching db export --table concept_index_daily --path concept.csv

call 按仓库根目录 registry/endpoints.json 中的真实路径和 payload 模板发起请求。参数名称与 Python SDK 方法一致:--start-date 和 --start_date 均映射到 start_date。--args 接收参数名到值的 JSON 对象;同名命令行参数覆盖 --args 中的值。对于请求模板中的 symbols,单个字符串会成为单元素数组,逗号分隔的字符串会拆为数组。其他参数依注册表中的类型解析;复杂值可直接在 --args 中使用 JSON 数组或对象。info 输出完整的字段、来源与验证标记,使用前请核对该端点的实际请求形状。

API Key 优先级为 --key、ULTRASTICHING_API_KEY、~/.ultrastiching/credentials.env。文件回退要求用户所有、权限为 0600 或更严,且 ~/.ultrastiching 不可由其他用户写入。HTTP 地址优先级为 --base-url、MERIDIAN_BASE_URL、https://api.ultrastiching.com。WebSocket 默认使用注册表中的 wss://ws.ultrastiching.com,可用 --ws-base-url 覆盖。doctor 默认只查本地 Key、注册表及 DuckDB 依赖/版本;doctor --probe 在有 Key 时调用一个已登记的示例端点,因而会产生真实 API 请求。

HTTP 结果按服务端 Content-Type 处理:JSON 输出到终端,已知数组超过 500 行时自动写入 meridian-out/;Arrow IPC 原始字节写入 --out 指定文件,未指定时写入 meridian-out/。call 和 arrow 保留原始 IPC,不解码。db sync 使用 apache-arrow 解码表格,并使用 @duckdb/node-api 写入与 Python 相同的数据库结构;WebSocket 使用 ws 在握手时发送 Bearer 头;Node 内建 fetch 负责 HTTP。三者是包的直接依赖。npm pack 时 prepack 从仓库根复制端点及数据集注册表快照到包内;发布前必须先运行生成链并核对快照。

数据库路径优先级为 --db、MERIDIAN_DB、~/.ultrastiching/data/marketdb.duckdb。db sync 保留每次请求的 run/chunk 日志;只有服务端给出的分页元数据与请求和行数逐页吻合,才将该请求范围内的数据写入类型化业务表。Arrow 流没有分页证明时返回 incomplete、写入 0 行,CLI 退出码为 2。Arrow int64 超出 JavaScript 精确整数范围时显式报错并记录 failed,避免改变数值类型或精度。当前同步在提交前把已验证的所有页保存在进程内存中;单个 run 超过 100,000 行或 64 MiB 规范 JSON 时显式失败,单次响应仍可能在检查前占用更多内存。db validate 有问题或 db repair 后仍未完整时也返回退出码 2。repair 仅重试每个数据集最新的失败或未完整请求,复用日志中的原参数。14 个预设的真实服务端分页、限行和键唯一性尚未逐项验证,真实完整历史能力仍需后续核实。

默认不自动重试。HTTP 非 2xx 错误保留状态、服务端 error、X-Meridian-Request-ID 和原始响应体;终端输出仅替换当前 API Key 的字面值。不要把含敏感信息的完整原始错误对象转存到公开日志。离线测试运行 npm test;设置 MERIDIAN_TEST_PYTHON 和可选的 MERIDIAN_TEST_PYTHON39 为装有本仓库 Python SDK 及 DuckDB 的解释器路径,可额外执行跨语言同文件测试。未配置时只跳过跨语言用例。尚未用测试或正式环境 Key 验收真实端点、WebSocket 和服务限制。

环境变量与私有凭据文件任选一种;CLI 不会自动加载项目 .env,.env.example 只是模板。用户在 CLI 执行环境配置现有 ULTRASTICHING_API_KEY,或使用前文说明的私有凭据文件。直接调用业务接口前需要配置有效 Key:

export ULTRASTICHING_API_KEY='<your-api-key>'
ultrastiching call list_tracer_newsflash --limit 20

许可证:Apache-2.0,见本目录 LICENSE。

2026-10-11-r1 目录

本版携带 2026-10-11-r1 批次的 2055 个 HTTP 与 1 个 WebSocket 端点(目录日期按实际 UTC 导出时间为 2026-10-10)。CLI 0.3.0 起使用新名称。升级自 0.2.9 时,214 个名称发生变化且不保留旧别名,例如 plasma_trade_cal 改为 trade_cal,tracer_feed 改为 get_tracer_feed;请同步修改 call/info 的端点名。Data API 名称取公开路径末段,重名补父路径;Tracer 使用 OpenAPI operationId 转 snake_case,例如 ultrastiching call list_tracer_newsflash --limit 20 --important-only false、ultrastiching call get_tracer_report --id 123。--from 对应 GET 时间下界(Python 使用 from_);请求按公开契约编码路径/查询参数,不发送 GET 请求体。两个 SSE 可用 info 查契约,call 不支持持续流。金融 POST 使用平铺字段,Arrow 包装使用 handler/params/fields。

管理关注主题

ultrastiching call create_tracer_topic --query '跟踪国产芯片的技术与产业进展'
ultrastiching call list_tracer_topics
ultrastiching call follow_tracer_topic --id 'catalog:example'
ultrastiching call unfollow_tracer_topic --id '<关注列表返回的主题 UUID>'

创建并关注主题使用自然语言 query,可选 title、UUIDv4 request_id;202 表示已提交初始化任务。关注主题与取消关注主题使用关注列表返回的字符串 id:本人主题为 UUIDv4,公共主题为 catalog:<slug>。客户端负责路径编码,POST/DELETE 关注操作不带 JSON 请求体。主题管理使用同一个 API Key,不扣内容行数或数据积分,体验用户仍不能创建主题。