opencode-agentrouter-auth 0.0.0-stage → 0.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +38 -0
- package/LICENSE +21 -0
- package/LOCAL-CHECKIN.md +70 -0
- package/README.md +585 -2
- package/body-inspection.mjs +32 -0
- package/content-filter.example.json +4 -0
- package/content-filter.mjs +219 -0
- package/docs/OPTIMIZATION.md +261 -0
- package/github-cookie.mjs +73 -0
- package/index.mjs +1122 -0
- package/local-checkin.mjs +270 -0
- package/package.json +40 -3
- package/request.mjs +94 -0
- package/response.mjs +308 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# 版本记录
|
|
2
|
+
|
|
3
|
+
[使用说明](<README.md>) · [优化设计与兼容边界](<docs/OPTIMIZATION.md>)
|
|
4
|
+
|
|
5
|
+
本页记录源码行为,当前版本为 **0.1.6**。npm 可用版本以官方 registry 查询为准;文档和源码更新不代表远程网关升级或模型验证成功。
|
|
6
|
+
|
|
7
|
+
## 0.1.6 — 2026-11-06
|
|
8
|
+
|
|
9
|
+
- 登录顺序保持 API Key 在前、GitHub 在后。API Key 无插件问题,只用宿主原生单输入;保存不代表验证。当前宿主 API `authorize` 不接收原生 key,因此不添加保存前验证、第二个 key 字段、verified 标记或状态徽章。
|
|
10
|
+
- GitHub 仅预先询问系统访问令牌(遮蔽输入),随后由用户浏览器授权、回填完整回调 URL,再查找已有模型 key。管理令牌不是模型 key;不是免令牌或全自动 OAuth。
|
|
11
|
+
- 首次登录移除端点、站点、请求头、用户 ID、用户名密码及 Cookie 问题。新账号默认 `agentrouter.org`;升级保留旧账号 key、site 和其他既有设置,不做自动迁移。
|
|
12
|
+
- 已有 key 查找兼容已知 `data.items` / `data` 数组形状;候选须启用(`status=1`)、非空、未掩码、未过期,按 key 去重后必须唯一。多个候选、无候选、未知响应或分页截断不确定时要求手动 API Key 恢复,不自动创建、轮换、重试,也不以空 key 完成 OAuth。
|
|
13
|
+
- loader 对缺失 key 或保留占位 key 在网络前返回本地 `400 agentrouter_missing_api_key`。
|
|
14
|
+
- 文档移除旧首次登录问题清单,区分保存、模型测试、账号余额与签到;宿主“已登录”不代表模型已验证。高级 metadata 仍可通过既有手动配置维护;插件选项仅支持布尔开关,没有新增 Cookie 设置页。
|
|
15
|
+
- npm 安装说明固定到 0.1.6,要求先查询官方 registry 并核对宿主实际加载版本;继续原本地目录注册的用户不要重复添加 npm 插件。本地原生回归 278 项 Node.js、2 项 Python 通过;离线验证不代表真实授权或模型已验证。
|
|
16
|
+
- 不改变限流、Responses 兼容、过滤或签到运行逻辑;独立 [本地签到工具](<LOCAL-CHECKIN.md>) 保持不变,不自动启用。
|
|
17
|
+
|
|
18
|
+
## 0.1.5 — 已发布
|
|
19
|
+
|
|
20
|
+
- 新增内部共享有界读取器:请求保持 **4 MiB / 2 秒**,JSON 响应诊断限制为 **64 KiB / 2 秒**。检查副本,不消费原正文;无法可靠读取或解析时放弃改写。
|
|
21
|
+
- 在明确错误封套内新增有限的数字状态、错误码与繁忙短语分类;每层验证错误叶子,只继承合法数字状态,深度预算耗尽时透传。认证、权限、余额、配额及内容策略等业务原因优先,不误包装成暂时性故障。
|
|
22
|
+
- 保留既有 token 限流、内容拒绝、跨资源历史和空完成专用类型;保留上游错误代码/消息、等待头和请求标识。新增分类不自行设置通用等待时间,也不添加重试。
|
|
23
|
+
- SSE 保持 **64 KiB / 15 秒** 前导边界,改为增量分行;兼容混合换行、跨块 UTF-8、多行 data 和重复 event 最后值。遇有效内容或未知事件/形状即停止诊断,保留原始字节、取消、背压及在途读取。
|
|
24
|
+
- 独立文本过滤支持普通 `output_text.logprobs: []`,无论历史内联是否开启;关闭内联时只替换文本,不删 ID、类型或元数据。非空/未知概率数据、真实注释、工具及不透明状态继续保留。
|
|
25
|
+
- 修复重复过滤时可能跨越已有过滤标记或吞掉代码结构分隔符的问题,保留下一非空行缩进;加强 Markdown 边界与幂等性回归。
|
|
26
|
+
- 选项、默认值、公开根入口、登录配置与依赖不变。本地原生验证为 **255 项 Node.js + 2 项 Python** 通过,并获独立范围复核接受;不构成线上恢复保证。
|
|
27
|
+
|
|
28
|
+
参考 MIT 项目 [AgentRouter-Codex-Filter](<https://github.com/alexcarterio/AgentRouter-Codex-Filter>) 的离线 V12.2 源码 ZIP 所体现的保守诊断思路,**独立实现插件行为**;未核验远端提交,不移植其独立代理、仪表盘、遥测、多层自动重试或有损历史清理。详细取舍见 [优化说明](<docs/OPTIMIZATION.md>)。
|
|
29
|
+
|
|
30
|
+
## 0.1.4
|
|
31
|
+
|
|
32
|
+
以下登录问答为历史行为,已由 0.1.6 的简化流程替代;不是当前版本的操作步骤。
|
|
33
|
+
|
|
34
|
+
- GitHub 登录先选择站点,系统访问令牌使用遮蔽输入;签到续期默认跳过,仅主动配置时显示 GitHub Cookie 获取说明与本地格式校验。格式通过不代表线上有效,普通登录无需配置签到续期。
|
|
35
|
+
- 修复完整普通历史消息带空 `logprobs: []` 时未能参与内联重放的问题;保留工具关联、非空或未知概率数据、引用注释、推理/加密及其他不透明状态。
|
|
36
|
+
- 明确历史兼容边界:仅对已有完整内联内容的适用条目去除资源本地 ID,不恢复仅存在于其他上游资源的历史或加密状态,不把这一补充描述为跨资源问题的通用解法。
|
|
37
|
+
|
|
38
|
+
0.1.4 的空概率数组修复针对**历史内联**;0.1.5 进一步补齐**独立文字过滤**路径,两者不是同一项改动。
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 ZhaoJun233
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/LOCAL-CHECKIN.md
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# AgentRouter 本地纯 HTTP 签到
|
|
2
|
+
|
|
3
|
+
这是与网关插件分开的本机工具。**不控制浏览器、不读取浏览器配置或 Cookie 数据库、不向网关上传登录态。** 只在你自行配置后向所选 AgentRouter 站点及 GitHub 发起 OAuth HTTP 请求。HTTP 自动登录也可能触发风控;遇到验证、授权确认、异常或结果不明确就暂停,没有绕过验证的实现。
|
|
4
|
+
|
|
5
|
+
## 初始化与数据目录
|
|
6
|
+
|
|
7
|
+
程序:[local-checkin.mjs](<local-checkin.mjs>),不需要安装额外依赖。请先在本机安装 Node.js;以下命令在插件仓库根目录执行,使用 PATH 中的 `node`,不依赖特定用户或其他应用附带的运行时。
|
|
8
|
+
|
|
9
|
+
```powershell
|
|
10
|
+
# 创建空配置并检查或设置专用目录权限;不联网
|
|
11
|
+
node ./local-checkin.mjs init
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
默认数据目录位于仓库外:Windows 为 `%LOCALAPPDATA%/AgentRouterCheckin`,Linux/macOS 为 `~/.local/share/agentrouter-checkin`。其中 `config.json` 保存站点与用户 ID,`github-cookie.txt` 保存仅本机使用的会话。初始化不会覆盖已有配置,也不会取得或填写真实 Cookie。**不要把这些文件发到聊天、截图、日志或 Git。**
|
|
15
|
+
|
|
16
|
+
填写会话前必须检查目录权限。Unix 工具要求目录对其他用户无权限;Windows 初始化通过系统原生 icacls 收紧专用目录 ACL,运行前再次检查目录及配置/会话/状态文件的 ACL;检查失败会拒绝运行,不能仅靠 Node 的文件 mode 断言安全。文件为明文,不是加密保险箱;管理员和本机恶意软件仍可能读取。不要放在代码仓库、共享目录、同步盘、网盘或公共临时目录。初始化拒绝任意带 .git 祖先的目录(包括通过父目录 junction 到达的仓库),也拒绝工具所在目录。
|
|
17
|
+
|
|
18
|
+
## 你需要自行填写的两项
|
|
19
|
+
|
|
20
|
+
1. 用普通浏览器手动确认你要签到的 **AgentRouter 站点用户 ID**,以及对应的 GitHub 账号。编辑配置:
|
|
21
|
+
|
|
22
|
+
```json
|
|
23
|
+
{"version":1,"site":"org","userId":"填写真实的站点数字用户ID"}
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
只允许 site 为 org(agentrouter.org)或 air(ps.air-outer.com),不是 GitHub 的数字 ID。先只配置一个账号;不要猜 ID。配置只接受这三个字段。
|
|
27
|
+
|
|
28
|
+
2. 如果你接受持有会话的风险,通过浏览器自带开发者工具**自行**取得你本人当前 GitHub 会话 Cookie,粘贴到本机的会话文件并保存。可以是完整 Cookie 请求头的值(不要包含 `Cookie:` 字段名),也支持带 domain/name/value 的 JSON Cookie 数组。必须是 GitHub 的会话,不是 AgentRouter 的站点 Cookie。脚本不会替你抓取,也不需要 GitHub 密码、PAT、API key 或网关密钥。不要用来源不明的导出插件。
|
|
29
|
+
|
|
30
|
+
**错账号的边界:** 只有 OAuth 兑换后才能检查本站返回的用户 ID。配置错 GitHub 会话时工具会暂停,不会把目标账号记为成功,但此前服务端可能已经对另一个账号登录、注册或发奖,不能撤销。因此首次操作前请你本人核对账号对应关系。
|
|
31
|
+
|
|
32
|
+
## 命令(本机 PowerShell)
|
|
33
|
+
|
|
34
|
+
```powershell
|
|
35
|
+
# 只看是否配置和暂停状态;不输出 Cookie、不发起网络请求
|
|
36
|
+
node ./local-checkin.mjs status
|
|
37
|
+
|
|
38
|
+
# 手动请求一次;凭据齐全、未暂停且已到期时才会联网
|
|
39
|
+
node ./local-checkin.mjs run
|
|
40
|
+
|
|
41
|
+
# 保持当前窗口运行,按持久化的 24 小时间隔签到
|
|
42
|
+
node ./local-checkin.mjs watch
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
首次真实运行前,请自行核对账号、配置与文件权限;不要向他人发送会话文件内容。初始化不会启动 watch、后台作业、自启动或计划任务,只有明确执行相应命令才会运行。
|
|
46
|
+
|
|
47
|
+
## 定时、安全与恢复规则
|
|
48
|
+
|
|
49
|
+
- 同一个数据目录只有一个进程可以执行签到。一次尝试之前先落盘暂停状态和下一次允许时间,避免崩溃后自动重复登录。
|
|
50
|
+
- 正常 claimed/done 后至少间隔 24 小时;watch 每分钟只检查本地是否到期,不是每分钟请求 GitHub。电脑关机、睡眠、窗口关闭时不会执行;重新启动 watch 会沿用状态,不补跑一连串错过的任务。
|
|
51
|
+
- 网络错误、验证页、拒绝、账号不匹配、无法确认签到等都会暂停。watch 遇到这些结果退出,不进行网络重试。
|
|
52
|
+
- 人工确认账号、Cookie 和风控问题已解决后,可以执行 resume 解除暂停;该命令本身不联网,且不清除已有的 24 小时冷却时间。
|
|
53
|
+
- 如果程序异常终止遗留锁,先确认所有该工具进程已停止,再处理专用目录内的 run.lock。不能在另一个签到进程仍运行时删除锁。state.json 不含 Cookie,但保存节流和暂停记录;不要为反复尝试而删除它。
|
|
54
|
+
- 状态文件损坏会拒绝执行,不会静默恢复成可签到状态。错误输出只含固定错误代码,不含请求 URL、OAuth code、响应正文或异常原文。
|
|
55
|
+
|
|
56
|
+
## 怎样判定成功
|
|
57
|
+
|
|
58
|
+
| 输出 outcome | 含义 |
|
|
59
|
+
|---|---|
|
|
60
|
+
| claimed | 本次返回的服务端 checked_in 严格为 true,且站点用户 ID 匹配;不是余额推算 |
|
|
61
|
+
| done | 服务端 checked_in 严格为 false;**不代表本次发奖,也不据此声称先前发过奖** |
|
|
62
|
+
| failed / ineligible | 暂停,需要人工处理;不能据此说签到成功 |
|
|
63
|
+
| skipped | 24 小时间隔未到,没有再次联网 |
|
|
64
|
+
| paused / busy | 已暂停或有并发锁,没有再次联网 |
|
|
65
|
+
|
|
66
|
+
这只是直接重定向 OAuth 快速路径。GitHub 若需要交互确认,将不能全自动。跨日自动运行是否成功,必须等真实账号在后续到期时再次执行并取得结果,不能用模拟时钟测试代替。
|
|
67
|
+
|
|
68
|
+
## 离线验证
|
|
69
|
+
|
|
70
|
+
[本地规则测试](<local-checkin.test.mjs>)验证节流、落盘、恢复、并发、脱敏和错误状态;[整合测试](<local-checkin.integration.test.mjs>)通过模拟 HTTP 连接本地入口与真实插件 hook;[OAuth 原有测试](<checkin.test.mjs>)覆盖重定向/state/账号与奖励判定。测试不使用真实 Cookie,不连接真实账号。
|