open-index/open-npm huggingface dataset:
npm package: @sstack/cookies
Description: Cookie parsing utility for sstack.
Author: estrattonbailey
Latest version: 1.0.0-y.1

# @sstack/cookies
Parse and attach cookies to the function `event` object.
```bash
npm i @sstack/cookies --save
```

## Usage
```javascript
const { sstack, main } = require('sstack')
const cookies = require('@sstack/cookies')

exports.handler = sstack([
  cookies(),
  main(event => {
    console.log(event.cookies) // { ... }
  })
])
```

## License
MIT License © [Eric Bailey](https://estrattonbailey.com)
npm package: @sstack/errors
Description: Error handling for sstack.
Author: estrattonbailey
Latest version: 1.0.0-alpha.1

# @sstack/errors
Parse and create a valid JSON API spec error response from `Error` instances.
```bash
npm i @sstack/errors --save
```

## Usage
Because this middleware produces a JSON response, you must stringify it after
the error has been handled.
```javascript
const { sstack, main } = require('sstack')
const { stringify } = require('@sstac/json')
const errors = require('@sstack/errors')

exports.handler = sstack([
  main(event => {
    throw new Error('Something went wrong')
  })
], [
  errors(),
  stringify()
])
```

The above will return the following response:
```json
{
  "errors": [
    {
      "status": 500,
      "details": "Something went wrong"
    }
  ]
}
```

To attach more data, do so on the event, following the [JSON API
spec](https://jsonapi.org/format/#errors).

```javascript
exports.handler = sstack([
  main(event => {
    const error = new Error(`Sorry, we couldn't process that.`)
    error.statusCode = 422
    error.title = 'UnprocessableEntity'
    error.code = 'code_for_error'
    throw error
  })
], [
  errors(),
  stringify()
])
```

This will produce the following response:
```json
{
  "errors": [
    {
      "status": 422,
      "title": "UnprocessableEntity",
      "details": "Sorry, we couldn't process that.",
      "code": "code_for_error"
    }
  ]
}
```

To ease this, consider using [http-errors](https://www.npmjs.com/package/http-errors) when throwing errors in your application.

## License
MIT License © [Eric Bailey](https://estrattonbailey.com)
npm package: @sstack/helmet
Description: Security header utility for sstack.
Author: estrattonbailey
Latest version: 1.0.0-y.2

# @sstack/helmet
Apply basic security headers according to [helmet](https://helmetjs.github.io/).
```bash
npm i @sstack/helmet --save
```

## Usage
```javascript
const { sstack, main } = require('sstack')
const helmet = require('@sstack/helmet')

exports.handler = sstack([
  main(event => { ... }),
  helmet()
])
```

## License
MIT License © [Eric Bailey](https://estrattonbailey.com)
npm package: @sstack/json
Description: JSON utilities for sstack.
Author: estrattonbailey
Latest version: 1.0.0-alpha.1

# @sstack/json
Easy JSON body parsing and request stringifying.
```bash
npm i @sstack/json --save
```

## Usage
```javascript
const { sstack, main } = require('sstack')
const { parse, stringify } = require('@sstack/json')

exports.handler = sstack([
  parse(),
  main(event => {
    console.log(typeof event.body) // 'object'
  }),
  stringify()
])
```

You may also want to implement this for errors as well, if you plan to return
JSON responses when throwing them.
```javascript
const { sstack, main } = require('sstack')
const { parse, stringify } = require('@sstack/json')
const errors = require('./my-custom-errors.js')

exports.handler = sstack([
  parse(),
  main(event => {
    console.log(typeof event.body) // 'object'
  }),
  stringify()
], [
  errors(),
  stringify()
])
```

## License
MIT License © [Eric Bailey](https://estrattonbailey.com)
npm package: @sstack/validate
Description: Validation utilities for sstack.
Author: estrattonbailey
Latest version: 1.0.0-alpha.0

# @sstack/validate
Request & response schema validation using [ajv](https://github.com/epoberezkin/ajv).
```bash
npm i @sstack/validate --save
```

## Usage
You'll want to use this library in conjunction with `@sstack/json`, since
`@sstack/validate` assumes the body will be parsed and stringified.

```javascript
const { sstack, main } = require('sstack')
const { parse, stringify } = require('@sstack/json')
const validate = require('@sstack/validate')

exports.handler = sstack([
  parse(),
  validate.request({
    type: 'object',
    properties: {
      email: {
        type: 'string'
      },
      password: {
        type: 'string'
      }
    },
    required: [
      'email',
      'password'
    ]
  }),
  main(event => {
    const { email, password } = event.body
    const user = logIn(email, password)

    return {
      body: {
        name: user.name
      }
    }
  }),
  validate.response({
    type: 'object',
    properties: {
      user: {
        type: 'object',
        properties: {
          name: {
            type: 'string'
          }
        }
      }
    }
  }),
  stringify()
])
```

## License
MIT License © [Eric Bailey](https://estrattonbailey.com)
npm package: @sstalumniassociation/renovate
Description: Default renovatebot config for sstalumniassociation
Latest version: 1.0.0

# `@sstalumniassociation/renovate`

Renovate configuration for sstalumniassociation projects.

Based on work from [`nuxt/renovate-config-nuxt`](https://github.com/nuxt/renovate-config-nuxt).
npm package: @sstar/boardlinker_agent
Description: BoardLinker Agent - Board hardware access service for embedded development
Author: SStar
Latest version: 0.3.0

# @sstar/boardlinker_agent

BoardLinker Agent - 为嵌入式开发提供板卡硬件访问服务的 gRPC 服务器。

## 功能特性

- **板卡 UART 通信**: 支持多会话串口管理和数据传输
- **文件传输**: 支持 Host 与 Agent 之间的双向文件传输
- **固件烧录**: 支持 ISP 方式的固件恢复和升级
- **SSH 隧道**: 支持 SSH 远程访问和端口转发
- **TFTP 服务**: 内置 TFTP 服务器用于镜像传输
- **NFS 同步**: 支持 NFS 文件系统同步
- **Web 管理界面**: 内置 Web UI 用于配置和监控
- **插件系统**: 支持通过插件扩展功能

## 安装

```bash
# 全局安装
npm install -g @sstar/boardlinker_agent

# 或使用 pnpm
pnpm add -g @sstar/boardlinker_agent
```

## 使用

### 启动 Agent

```bash
# 直接启动
boardlinker

# 带调试信息启动
boardlinker -d

# 启动但不自动打开浏览器
boardlinker --no-open
```

### 环境变量配置

Agent 支持通过环境变量进行配置：

| 变量名 | 说明 | 默认值 |
|--------|------|--------|
| `BOARDLINKER_GRPC_PORT` | gRPC 服务器端口 | `10000` |
| `BOARDLINKER_WEB_HOST` | Web 服务器主机地址 | `0.0.0.0` |
| `BOARDLINKER_WEB_PORT` | Web 服务器端口 | `8080` |
| `BOARDLINKER_TFTP_DIR` | TFTP 文件服务目录 | `~/.local/board_linker/agent_files` |
| `BOARDLINKER_TFTP_TTL_HOURS` | TFTP 文件保存时间（小时） | `24` |
| `BOARDLINKER_BOARD_UART_PORT` | 板卡串口设备路径 | 自动检测 |
| `BOARDLINKER_BOARD_UART_BAUD` | 板卡串口波特率 | `115200` |
| `BOARDLINKER_LOG_LEVEL` | 日志级别 | `DEBUG` |

### 配置文件

Agent 启动后会创建配置文件：`~/.config/board_linker/agent.json`

```json
{
  "agent": {
    "id": "agent",
    "version": "0.1.0",
    "pairCode": "xxx-xxx-xxx",
    "startupTime": "2024-01-01T00:00:00.000Z"
  },
  "endpoint": {
    "grpc": {
      "host": "127.0.0.1",
      "port": 10000,
      "scheme": "grpc"
    },
    "web": {
      "host": "127.0.0.1",
      "port": 8080
    }
  }
}
```

## Web 管理界面

Agent 启动后会自动打开浏览器访问 Web 管理界面（可通过 `--no-open` 禁用）。

默认地址：`http://127.0.0.1:8080`

## 与 Host 配合使用

Agent 需要与 [@sstar/boardlinker_host](../host/) 配合使用才能完整发挥功能：

```bash
# 终端 1: 启动 Agent
boardlinker

# 终端 2: 启动 Host
npx @sstar/boardlinker_host
```

## 系统要求

- Node.js >= 18.0.0
- 支持 macOS、Linux、Windows

## 许可证

MIT
npm package: @sstar/boardlinker_host
Description: BoardLinker Host - MCP server for AI-driven hardware interaction
Author: SStar
Latest version: 0.3.0

# @sstar/boardlinker_host

BoardLinker Host - MCP (Model Context Protocol) 服务器，让 AI 工具能够直接与嵌入式硬件交互。

## 功能特性

通过标准的 MCP 协议，为 AI 工具（如 Claude Code）提供以下硬件交互能力：

- **板卡 UART 操作**: 多会话串口管理、命令发送、信号控制
- **文件传输**: Host 与 Agent 之间的双向文件传输
- **固件烧录**: 镜像准备和 ISP 恢复烧录
- **Agent 状态查询**: 获取 Agent 运行状态和网络信息
- **文档系统**: 内置硬件操作文档和指南

## 使用

### npx 直接运行

```bash
npx @sstar/boardlinker_host
```

### 全局安装

```bash
npm install -g @sstar/boardlinker_host

# 安装后运行
boardlinker-host
```

## 前置条件

在使用 Host 之前，需要先在同一台机器上启动 Agent：

```bash
# 终端 1: 启动 Agent
boardlinker

# 终端 2: 启动 Host
npx @sstar/boardlinker_host
```

## 环境变量

| 变量名 | 说明 | 默认值 |
|--------|------|--------|
| `BOARDLINKER_AGENT_ADDR` | Agent 连接地址 | `127.0.0.1:10000` |
| `BOARDLINKER_HOST_DEBUG` | Host 调试模式 | `false` |
| `BOARDLINKER_DEBUG` | 全局调试模式 | `false` |

## MCP 工具列表

Host 向 AI 工具暴露以下 MCP 工具：

### 板卡 UART 操作
- `board_uart-sessions` - 列出所有 UART 会话
- `board_uart-run_command` - 发送命令到 UART
- `board_uart-send_signal` - 发送控制信号（ENTER, Ctrl+C 等）
- `board_uart-read` - 从 UART 读取数据
- `board_uart-status` - 获取 UART 硬件状态

### 文件操作
- `files-put` - 上传文件到 Agent
- `files-get` - 从 Agent 下载文件
- `files-list` - 列出 Agent 文件
- `files-stat` - 获取文件状态
- `files-mkdir` - 创建目录
- `files-rm` - 删除文件/目录

### 固件操作
- `firmware-prepare_images` - 准备固件镜像
- `firmware-burn_recover` - 执行固件烧录/恢复

### 其他
- `agent-status` - 获取 Agent 状态
- `docs-list` - 列出可用文档
- `docs-read` - 读取文档内容

## 在 Claude Code 中使用

在 Claude Code 的 MCP 配置中添加：

```json
{
  "mcpServers": {
    "boardlinker": {
      "command": "npx",
      "args": ["-y", "@sstar/boardlinker_host"]
    }
  }
}
```

## 系统要求

- Node.js >= 18.0.0
- 需要先启动 [@sstar/boardlinker_agent](../agent/)
- 支持 macOS、Linux、Windows

## 许可证

MIT
npm package: @sstar/wiki
Description: Confluence Wiki CLI，支持搜索、抓取、附件下载和 Markdown 发布
Author: ekko.bao
Latest version: 3.0.2

# SStar Wiki CLI

`@sstar/wiki` 是一个面向 Confluence 的纯 CLI 工具，支持搜索、抓取、附件下载和 Markdown 发布。

## 安装

```bash
npm install -g @sstar/wiki
```

或直接临时执行：

```bash
npx -y @sstar/wiki --help
```

安装后可使用以下命令：

- `wiki`
- `sstar-wiki`
- `confluence-wiki`

## 配置

配置文件路径固定为 `~/.config/sstar_wiki/config.json`，权限必须是 `600`。

```bash
mkdir -p ~/.config/sstar_wiki
cp ./config.example.json ~/.config/sstar_wiki/config.json
chmod 600 ~/.config/sstar_wiki/config.json
```

配置文件只保存密码：

```json
{
  "password": "your-password"
}
```

运行时规则：

- CLI 会自动使用当前机器的登录用户名作为 Confluence 用户名。
- 站点地址不写入配置文件，登录、搜索、发布等命令通过 `--url` 提供。
- `scrape`、`scrape-content`、`scrape-editable`、`download` 直接传完整页面 URL 或附件 URL 时，会自动推导站点地址。
- CLI 默认输出 Markdown，不再提供额外的格式切换参数。
- 自签名证书支持默认开启，CLI 不再要求额外参数。

## 常用命令

```bash
# 登录验证
npx -y @sstar/wiki login --url <站点URL>

# 搜索
npx -y @sstar/wiki search "关键词" --url <站点URL> --space SPACEKEY

# 抓取完整页面
npx -y @sstar/wiki scrape "<页面URL>"

# 抓取正文
npx -y @sstar/wiki scrape-content "<页面URL>"

# 抓取可回写内容
npx -y @sstar/wiki scrape-editable "<页面URL>" > /tmp/page.md

# 下载附件
npx -y @sstar/wiki download "<附件URL>" ./example.bin

# 发布或更新页面
npx -y @sstar/wiki --modify=true publish --url <站点URL> --file /tmp/page.md --page-id <页面ID> --operation update
```

## 编辑现有页面

建议顺序：

1. 先执行 `scrape-editable`
2. 编辑导出的 Markdown
3. 不要改动 `@@CONFLUENCE_MACRO_...@@` token
4. 使用 `publish` 回写

如果只是做摘要或只读分析，直接使用 `scrape-content` 即可。

## 故障排除

缺少配置文件：

- 创建 `~/.config/sstar_wiki/config.json`
- 写入正确的 `password`
- 执行 `chmod 600 ~/.config/sstar_wiki/config.json`

登录失败：

- 确认当前机器登录用户名就是目标 Confluence 的用户名
- 确认配置文件中的 `password` 正确
- 确认命令里的 `--url` 或页面 URL 属于正确站点
- 如果仍然失败，继续把错误返回给人类，不要跳过登录验证

代理干扰访问：

```bash
env -u HTTP_PROXY -u HTTPS_PROXY -u http_proxy -u https_proxy -u ALL_PROXY -u all_proxy \
  npx -y @sstar/wiki search "关键词" --url <站点URL>
```
npm package: @sstephant/has
Description: Shortcut for hasOwnProperty
Author: Sylvain STEPHANT
Latest version: 1.0.1

# has

Simple wrapper for Object.hasOwnProperty function

Installation:
-------------
```
npm install @sstephant/has --save
```

Usage:
------
```
const has = require('has');

const obj = { prop: 'MyProp' };

const hasProp = has(obj, 'prop')) // true
const hasOtherProp = has(obj, 'otherProp')) // false
```