中继
面向自有,代理执行开发的会话操作系统. 闭会门故障, a 只有附件的纸迹, 和一个协议贯穿许多项目.
npm install --save-dev @atlanticus-ai/relay
npx relay init # scaffold: slash commands, config, session docs (never overwrites)
npx relay verify-open # every open — the first one detects itself, no flag
npx relay selftest # did the install work? one line per check, exit 0/1
然后每场会议: npx relay verify-open 工作 • 工作 • 工作 npx relay verify-close。 。 。 .
为什么
能够犯罪、推倒和释放的特工需要失败的门 关闭 和无法追踪的纸 悄悄跳过。 中继是:会话会按机器检查的交接方式打开,会按秒关闭 门,以及记录实际发生的情况——逐字记录门输出,得分目标,象征性费用——在文件中 住在你的回购, 不是在聊天记录.
所有者大门是绝对的. 代理人可以执行、承诺和 提议· ; git push, (中文(简体) ), git tag编辑
撞出一张罚单 每次都是人类的.
图标
relay verify-open session-start gate (fail-closed) relay site build the static site
relay verify-close session-close gate relay compile compile paper-trail fragments
relay tokens token accounting for the handoff relay doctor --container container probe
relay session-log append a session lifecycle record relay docs-check documentation debt
relay log append a dispatch/footer record relay init scaffold into a repo
relay cp copy the handoff block to the clipboard
万事俱备 relay.config.json 在目标重播. relay --help 列出其余部分.
版式
RELAY-CORE.md——协议(15-min读;新收养人从这里开始). 船舶 软件包,所以消费者总是有 版本的协议,它的工具工具.kit/- 工具学 零项目特定字符串; 每个项目事实来自relay.config.json。 。 。 . 18号节点,一次性依赖micromatch) (中文(简体) ).db/• 妇女query/• 妇女ui/——可选的中继指数:纸轨的后置投影和a 本地只读仪表板. 未包装 —— 说npm install帮你拿大门 不是数据库.attic/sync-relay.sh <target>- 遗留的文件复制销售路径, 移动到attic/在RL-D014飞机上 并保持为INERT RackUP(如果迁移失败则为回转),直到现有消费者使用 迁移到软件包中。 它翻译npx relay …回到出道时销售的脚本路径.
运行测试
npm test the full suite — relay-site fixtures, gate smoke, kit fixtures, d13
npm run test:fast the per-commit subset (never writes or clears the pass stamp)
npm run test:e2e the browser suite — Playwright, Chromium, two viewports
⛔ test:fast 财务报告和审定财务报表 npm test 不可互换,差额是印花. 只有满
运行写入 test/LAST-PASS.json,哪个 verify-close是因为 tests_fresh 声明全文如下:
fast 单是说一个没有运行的套房 运行 fast 在每一次派遣之后
npm test 一次,在组织交接之前.
浏览器套件
npm run test:e2e 正在建设 ui/,服务它,并驱动真正的铬. 没有打开数据库 ——每个
/api/* 响应从固定到 test/e2e/mock-api.ts,严格地比
仅仅避免 relay_live。 。 。 .
每个光谱都运行一次从 test/e2e/viewports.ts数字 :
| 项目 | 大小 | 排程抽屉 |
|---|---|---|
1280x800 | 1280×800 (中文(简体) ) | yields ——表收缩 ( lg(中文(简体) ) |
768x800 | 768×800 (中文(简体) ) | covers 抽屉坐在桌子上( < lg(中文(简体) ) |
⚠️ 这些不是"桌面和移动". 他们就是店主核实的景点 F1 财务报告和审定财务报表 F2
红色就是他们屏幕上的红色. 八百块是故意的
简称 有更高的窗户会藏起 F2 完全没有 添加宽度在此添加 ROW 而不是测试文件· ;
光谱从不命名一个数字, 它问 viewportOf()。 。 。 .
运行一个工程或一个规格 :
npx playwright test --project=1280x800
npx playwright test test/e2e/f3-raw-body-never-rendered.spec.ts
定型——两个目录,区别是负载
| 目录 | 它所持有的 |
|---|---|
test/fixtures/api/ | 实际能力 - 从现场数据库取出的尸体 |
test/e2e/fixtures/ | 手脚 载荷,每个携带一个 _note 在自己的网站上这样说 |
⛔ 不要将发明的有效载荷放入 test/fixtures/api/。 。 。 . 它的名字是关于来源的说法:
其他依赖: test/no-mjs-references.test.ts 准确排除该目录 因为 捕获
合法引用已退休的路径,一个被发明的文件将继承它没有获得的豁免.
人工建造的生活 有两个原因之一 都记录在档案中:
- 无法抓取终点 —— 说
/api/sessions返回时500 column "track" does not exist时 034号迁移没有应用(所有者大门)/api/session-prompts从未被俘虏; - 有效载荷是一个探测器 —— 说
test/e2e/fixtures/portfolio.json。 。 。 .
⚠️ 三个快速固定装置 故意携带 raw_body 下一个 text两人是故意的
不一样. 这就是我们的前提 f3-raw-body-never-rendered.spec.ts: 与无有效载荷对接
raw_body"尸体不在页面上" 无论是表面拒绝制造还是
有没有什么可以解释的 raw_body 源中的标识符—— a {...row} 分布, a
调试 <pre> 静态警卫看不见 test/ui-guardrails.test.ts 财务报告和审定财务报表 被这个抓住了
光谱这种差距是它存在的原因.
⛔ 一个未映射 /api/* 路径是一个 501 命名路由, 绝不为空 200。 。 。 . 一个空白的成功将
变成"没有数据", 表面看起来健康而空荡荡的 就是绳子的失败
来抓他.
中情局
.github/workflows/ci.yml 运行两个工作:
test suite (relay-site + verify-open + d13)—— 说npm test反对邮局服务db/fixtures/d13.ts,然后覆盖鼠标,然后verify-open作为取笑的一步 (见 ADR 0014 (英语)) (中文(简体) ). CI的索赔 无法满足在relay.config.json下级verifyOpen.ciSkipAsserts打印为– skipped in CI: <reason>,并且已经na—— 说 永远pass。 。 。 .e2e (chromium, 1280x800 + 768x800)- 浏览器套房,在自己的工作,和它 门: 无|| true。 。 。 .
发布检查( 部署门)
在建立脚本之前,每个存档的发送和返回都会被扫描以获取秘密,并击中
拒绝部署 它命名了文件 和规则和 从不匹配它探测并
拒绝;它从来不编辑文件。 门就在里面 query/build-corpus.ts,这是上半期
联 合 国 vercel.json是因为 buildCommand,因此一个非零出入口在UI建成前就停止了建设.
配置为 relay.config.json → publishCheck自己运行它 node query/build-corpus.ts --census。 。 。 .
⛔ 如果 Publish Check 拒绝部署, 则指令是 docs/PUBLISH-CHECK.md —— 说
拒绝输出结束于该路径, 因为一个控制器没有人记得如何操作
绕行( e)DN9-D104) (中文(简体) ).
此重播是中继管理
它带着自己的 relay.config.json, (中文(简体) ), ROADMAP.md, (中文(简体) ), WAYS-OF-WORKING.md 财务报告和审定财务报表 docs/sessions/ 纸张
自己开着货箱的门:
npx relay verify-open # the same command a consumer runs — the bin resolves locally either way
npx relay verify-close
npm test
这里的会话编号是 RL-D<n>-P<seq>。 。 。 . 遗产 RELAY-D* 编号 : CF-D* 编号在 CHANGELOG.md 不一样,
历史系列 看到了吗 WAYS-OF-WORKING.md § 2.1. 从
WAYS-OF-WORKING.md 财务报告和审定财务报表 docs/sessions/SESSION-HANDOFF.md。 。 。 .
⚠️ 永远不要跑
attic/sync-relay.sh对抗这回贷. 供应商kit/改为 a 消费者; 此还原 这是 来源。指在这里它会覆盖kit/给消费者盖上印章relayVersion。 。 。 . 脚本 REFUSES 代码中的自目标 (单位:千美元)TD-RELAY-SYNC-SELF-GUARD,运出RL-D008——此 先前曾说没有警卫,RL-D008号已停止真实,后经更正 RL-D014 (英语). 拒绝请求的理由是:attic/路径在test/distribution.test.mjs。 。 。 . 长期义务 (原始内容存档于2012-10-12). SO-KIT-IS-SOURCE 曾经 于RL-D015停用 一次两个消费者 日记 (HZ + CF,当时存在的唯一两个) npm - 时间 上面的禁令没有改变 密码内警卫会留下;结束的是 重新确认 每一个接近的仪式 一个机制 没有人再使用。 剧本本身已存档, 未删除.
项目供应商
./attic/sync-relay.sh --dry-run ~/path/to/project # preview
./attic/sync-relay.sh ~/path/to/project # apply (target must be clean)
那就确保目标 relay.config.json 有所需的密钥( 参见 kit/CLAUDE.md.skeleton
财务报告和审定财务报表 RELAY-CORE.md § Config: projectPrefix, (中文(简体) ), ownerName (必须), docsCheck等 (中文(简体) ).
中继站(静态站台发电机)
打开项目 ROADMAP.md + 键 docs/relay/ 会话文物进入静态站点. opt- in: 添加一个
site 块到目标 relay.config.json。 。 。 . 没有 site 块 – 脚本退出 0 与
"没有配置",没有写,因此在每一个没有要求的项目中都是惰性的.
npx relay site # or: make site
npx serve docs/site # generator does NOT serve — preview separately
设计简况、配置图和 ROADMAP.md 解析器期望的公约 :
docs/relay-site.md。测试: ./test/run-tests.sh (合成固定;无)
真实的项目被触动).
依赖关系
该套装由 文件副本,而不是由软件包管理器安装——所以目标回波收到
脚本 无 得到他们进口的东西. kit-dependencies.json 声明空白 :
| 依赖性 | 需要满足 | 如果缺少 |
|---|---|---|
节点 >=18 | 所有套件脚本 | 无害环境管理+高层等待; fetch编号 :AbortController 内 verify-close.mjs |
micromatch ^4.0.8 (单位:千美元)运行时间(中文(简体) ) | kit/docs-check.mjs | docs:check 完全无法运行——在检查执行前导入抛出 |
sync-relay.sh 读取此文件并检查目标 :
命令任何未实现的。 这个 只报告 ——它从不安装,也从不编辑目标
package.json。在目标repo中添加依赖是repo所有者的决定,而不是同步
剧本.
进口的装备是 node: 内建.
两个频道分类 micromatch 不同,两者都是正确的. A 类 供应商 消费者
收到可读文件 kit/docs-check.mjs输入 micromatch 在模块载荷时—— 用于该通道
这是真的 运行时间 要求,这是什么 kit-dependencies.json 声明 这个 已出版
npm 软件包 搭载的船 micromatch 内含,因此在
全部; 这里 micromatch 是一个构建时的工具,并坐在那里 devDependencies。所公布的柏油球
第三方依赖人数 零。 。 。 .
分发和许可证
中继器在 a 下分配 版权——所有保留的权利。见 LICENSE。 。 。 .
没错 没有 打开源和 ISC 显示在 package.json 在v1.6.11之前
(a) 从未与许可证文本相匹配的占位符.
当前
LICENSE文本为 a 草案 有待律师对商标和许可证进行审查 (RL-D010) (英语). 一定要在第一次公测前清理npm publish。 。 。 .
已发布的软件包是 捆绑和精密结构 生产 npm run build 从 kit/ 输入
dist/未分配来源 源地图从未被发布 —— 说 build.mjs 套装
sourcemap: false 和测试套房失败,如果 .map 文件或一个 sourceMappingURL
字符串到达输出 。 源图可以传送整个可读源, 并默默地撤销它 .
一些文件飞船 可设计读取,每个原因(见 VERBATIM 内 build.mjs:
RELAY-CORE.md (议定书的用意是阅读) commands/*.md, (中文(简体) ), CLAUDE.md.skeleton, (中文(简体) ),
Makefile.template 财务报告和审定财务报表 settings.presets.json ——全部内容 relay init 写入
储存库,可读之处是产品而不是泄漏.
软件包在安装时间——永远没有在您的机器上运行代码. 没有 postinstall,没有
preinstall, (中文(简体) ), install, (中文(简体) ), prepare 或者说 prepublish 也一样. relay init 写入 .claude/,则
代理商接受其指示,所以必须保持 输入命令: 软件包
作为副作用编辑代理指令 npm install 能够改变特工在
无关的依赖突起。 测试套房声称每个安装时间钩都不存在.
prepublishOnly 这是有意的例外,它不是同一类. 它运行
node build.mjs && npm test 编辑 出版社 机器期间 npm publish 从来没有
消费者的,甚至没有在公布的焦油丸的行刑路径中出现. 它的存在是因为
"记得在出版前运行建筑"是手动步骤 保护不同
运输当前代码和 stale dist/,这种形状的人工步骤已经
在此失败( 版本文件同步事件) 。 机械化,不能忘记 见
docs/npm-deprecation-policy.md § 完整的生命周期钩
安装时间/publisher- side 拆分.
如果一个坏版本的船
惩罚吧 转发,从不落后——看 docs/npm-deprecation-policy.md。 。 。 .
npm 限制72小时后未出版, 未出版的每个已解决的安装中断
到那个版本。 不好的出版是用 补丁释放 加号 npm deprecate 坏事发生
版本,不是通过撤回.