Skip to content

fix(taptap-maker): 升级官方 Runtime 并注入插件分发环境 - #94

Open
liangdong-ttm wants to merge 3 commits into
makecindy:mainfrom
liangdong-ttm:fix/taptap-maker-runtime-0.0.31
Open

fix(taptap-maker): 升级官方 Runtime 并注入插件分发环境#94
liangdong-ttm wants to merge 3 commits into
makecindy:mainfrom
liangdong-ttm:fix/taptap-maker-runtime-0.0.31

Conversation

@liangdong-ttm

@liangdong-ttm liangdong-ttm commented Aug 20, 2026

Copy link
Copy Markdown
Contributor

改动内容

  • 将随 Cindy 插件分发的官方 @taptap/maker Runtime 从 0.0.28 整体升级到正式版 0.0.31
  • 在 Maker MCP 主入口和 CLI/Proxy 子进程入口注入 TAPTAP_MAKER_DISTRIBUTION=cindy_plugin
  • 同步 maker_statusdetail / skip_remote_sync 契约、四语言描述、README、Runtime 文档和第三方许可证。
  • 补充真实 Runtime 工具列表和 managed_by_plugin 行为回归测试。
  • confirm_character_voice 加入最小的随附 Runtime 安全补丁:该操作会创建永久 ElevenLabs voice 并消耗 Voice Slot,断线后不再自动重放。

P1 修复

  • Proxy 正在重连时,此操作明确返回“未执行”,不进入待重放队列。
  • 请求已发出但连接/响应中断时,明确返回“执行状态未知”;必须先人工核验角色音色映射和 Voice Slot,禁止自动重试。
  • Runtime 外层的最多 5 次连接重试也对该操作禁用;其它 Proxy tools 的既有重试不变。
  • 在 Runtime 的动态 tool description 中写明上述未知态恢复契约。
  • 增加源码行为测试与插件内 artifact 回归断言,覆盖两层重试保护。

影响面

  • Maker 动态 Proxy tools 使用官方 0.0.31 Runtime;插件托管模式不会触发独立 npm Runtime 更新检查。
  • 主 MCP、账号 CLI 和 Proxy 子进程继续使用现有固定入口与 childSpawn 安全边界。
  • 未新增 Cindy 网络目标、凭证存储路径或外部命令能力。
  • 官方 0.0.31 新增 yaml 依赖,已补充 ISC 许可证。
  • vendor 以官方 npm tarball 为基线;本 PR 仅额外修改 dist/maker.js 中上述不可逆操作的重试保护。

验证

  • 官方 npm tarball 与升级基线的 vendor 文件逐文件对齐;本次仅保留上述 dist/maker.js 定点安全补丁。
  • Maker 源码行为回归:mcpProxyLifecyclemakerBuildLocalChanges184 passed
  • 仓库门禁及 Maker 测试:42 passed, 0 failed
  • JS / JSON 校验、git diff --check 和提交后 .cindy 打包检查通过。

这是敏感的 vendor 升级与定点安全补丁,请维护者进行人工 review。

## 改动内容
- 将随插件分发的官方 @taptap/maker Runtime 从 0.0.28 整体升级到 0.0.31,并同步 README、运行时文档与第三方许可证。
- 在 Maker MCP 主入口和 CLI/Proxy 子进程入口注入 TAPTAP_MAKER_DISTRIBUTION=cindy_plugin。
- 同步 maker_status 的 detail/skip_remote_sync 契约与四语言描述,补充真实 Runtime 工具列表和插件托管状态回归测试。
- 将插件版本从 2.1.10 提升到 2.1.11。

## 影响面
- Maker 动态 Proxy tools 使用官方 0.0.31 版本,插件托管环境不会触发独立 npm Runtime 更新检查。
- 主进程、账号 CLI 和 Proxy 子进程继续使用现有固定入口与 childSpawn 安全边界;未新增 Cindy 网络目标或凭证存储路径。
- 官方包新增 yaml 依赖,已补充 ISC 许可证;npm tarball 与 vendor 内容逐文件一致。
- 已验证 40 项仓库门禁与 Maker 测试、JS/JSON 校验、diff 检查及当前工作树 .cindy 打包约束。

Generated-By: Claude Code <https://claude.ai/code>

Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: liangdong <liangdong@xd.com>
@greptile-apps

greptile-apps Bot commented Aug 20, 2026

Copy link
Copy Markdown

Greptile Summary

敏感变更,需要维护者人工 review。本 PR 将随插件分发的官方 TapTap Maker Runtime 从 0.0.28 升级到 0.0.31,并为 MCP、CLI 与 Proxy 入口设置 Cindy 插件分发标记。

  • 同步 maker_statusdetailskip_remote_sync 参数契约及四语言文案
  • 调整认证恢复提示,使用户通过插件设置页或 maker_login 操作
  • 更新 Runtime 文档、测试和插件版本,并补充不可重放远端操作的回归断言

Confidence Score: 5/5

在本次 follow-up 可发布范围内没有仍需阻止合并的具体失败,但该 vendor 升级属于敏感变更,仍需维护者人工核验。

未发现符合 follow-up 发布条件的阻断性失败。

Important Files Changed

Filename Overview
taptap-maker/vendor/taptap-maker/dist/maker.js 将大型上游 Runtime bundle 升级到 0.0.31,并加入不可重放远端操作处理;属于需要维护者核对来源和生成物的敏感 vendor 变更。
taptap-maker/node/maker-mcp.cjs 在加载 Runtime 前设置 Cindy 插件分发标记,原有虚拟 stdio、spawn adapter 和 root router 接线保持不变。
taptap-maker/node/maker-child.cjs 子进程入口在导入 Runtime 前设置相同分发标记,使账号 CLI 和 Runtime 自派生进程无需依赖父进程环境继承。
taptap-maker/main.js 对 Runtime 状态中的裸 CLI 登录提示进行插件原生化替换,并继续执行路径及敏感信息清理。
taptap-maker/ghost.json 插件版本递增到 2.1.11,并声明 maker_status 的完整诊断与本地摘要参数语义。
.tests/taptap-maker.test.mjs 增加 Runtime 版本、分发标记、真实工具列表、托管状态、认证提示及不可重放操作的回归覆盖。

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart LR
  Cindy[Cindy tool call] --> Main[taptap-maker/main.js]
  Main --> MCP[node/maker-mcp.cjs]
  Main --> Account[node/account.cjs]
  Account --> Child[node/maker-child.cjs]
  MCP --> Runtime["@taptap/maker 0.0.31"]
  Child --> Runtime
  MCP -->|TAPTAP_MAKER_DISTRIBUTION=cindy_plugin| Runtime
  Child -->|TAPTAP_MAKER_DISTRIBUTION=cindy_plugin| Runtime
Loading

Reviews (4): Last reviewed commit: "fix(taptap-maker): prevent voice confirm..." | Re-trigger Greptile

@chatgpt-codex-connector

Copy link
Copy Markdown

💡 Codex Review

https://github.com/makecindy/cindy-official-plugins/blob/2407dd5125a4d107fb8f3d3b4ea68e8a03625146/taptap-maker/vendor/taptap-maker/dist/maker.js#L44914-L44916
P1 Badge 恢复按当前工作区发现动态工具

当当前项目或账号未获服务端开放某个 Proxy tool,或服务端工具集滚动变化时,这里仍无条件返回内置快照;检查 main.js 的调用路径可见,maker_list_tools 将其作为“当前工作区实时可用”的列表返回,maker_call_tool 也复用同一列表校验工具是否存在。结果是未开放或已下线的工具仍会被 Agent 调用并在远端失败,服务端 schema 更新也无法实时反映;应恢复基于当前 context 的远端 tools/list,并仅以缓存兜底。

AGENTS.md reference: AGENTS.md:L19-L23


https://github.com/makecindy/cindy-official-plugins/blob/2407dd5125a4d107fb8f3d3b4ea68e8a03625146/taptap-maker/vendor/taptap-maker/dist/maker.js#L45602
P1 Badge 将缺失认证的恢复动作改为 maker_login

当设置页已有 PAT、但本地 TapTap auth 尚未生成或已丢失时,这个新增分支会把 maker_status 的下一步直接指向 CLI;然而 ghost.json.whenToUse 和插件 Skill 都禁止通过 CLI 绕行,并明确要求未连接时调用 maker_login。状态文本经 main.js 仅做路径脱敏后会直接返回给 Agent,因此该场景会收到互相矛盾的恢复指令并可能绕过插件;请改为提示调用 maker_login

AGENTS.md reference: AGENTS.md:L19-L23

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@zqchris

zqchris commented Aug 20, 2026

Copy link
Copy Markdown
Contributor

🤖 Cindy 自动审查 / Cindy Automated Review(head 2407dd5

安全:✅ taptap-maker/ghost.json:7,20-37 未新增 slot、secret、网络白名单或子进程入口;maker-mcp.cjs:3maker-child.cjs:3 只在既有固定入口前注入 TAPTAP_MAKER_DISTRIBUTION=cindy_plugin。vendor 产物已逐文件、逐 SHA-256 与官方 @taptap/maker@0.0.31 npm tarball 对齐(仓库额外保留 LICENSE);0.0.28→0.0.31 的固定 Maker endpoint 集合未扩大,动态 MCP 暴露工具名单未扩大。新增 mcp report 仅是 Runtime CLI 路径,需显式 --consent 才会调用 gh issue create;不在插件 MCP tools 可达面,未发现 eval/弱随机/凭证落盘或新可达外发边界。

设计:✅ ghost.json:63-70detail / skip_remote_sync 契约与四语言 locale、README 同步;main.js 仍保持短请求 30 秒、长请求 60 秒/15 分钟总上限,状态与动态工具由随包 Runtime 实现。tests/taptap-maker.test.mjs:216-224,1076-1099 覆盖 Runtime 版本、分发标识、18 个动态工具、managed_by_plugin 与完整诊断参数。新增 CLI 报告失败会返回 manual_required,不把报告失败伪装成原任务失败。

查重:✅ 既有 taptap-maker 插件的 Runtime 升级,不是新 ghost.json,不触发新插件查重。

流程:✅ ghost.json 2.1.10→2.1.11;README/README.zh-CN、四语言 locale、THIRD-PARTY-LICENSES.txt(新增 yaml ISC 许可)已同步;当前 head 的 Repository-wide gates、changed-plugin packaging、DCO、Greptile Review 全部 SUCCESS;commit 2407dd5 已真实存在且含 Signed-off-by。vendor/dist 变更有逐项来源、文件清单、许可证与哈希证据。

历史:✅ 未命中反复摇摆。taptap-maker 的 Runtime 升级路线在 #28(0.0.27)与 #53(0.0.28)均已合并;本次仍是同一路线,未查到被 revert、关闭否决或后续推翻的相反方案。

问题清单:无阻塞问题。

结论:✅ 建议合并。

完整契约见 .greptile/rules.md;合并决策由维护者做出。

@chatgpt-codex-connector

Copy link
Copy Markdown

💡 Codex Review

https://github.com/makecindy/cindy-official-plugins/blob/4c70f9858b6cc117242f8ac9b3435978423f2846/taptap-maker/vendor/taptap-maker/dist/maker.js#L45103
P1 Badge 同步工具清单的固定注册语义

这里改为无条件返回静态 listMakerTools(),新增测试也明确验证了未绑定工作区仍会列出 generate_imageget_debug_feedbacks;但 ghost.json 与插件 Skill 仍把 maker_list_tools 定义为“当前工作区实时可用”的工具清单,而 main.js 又把是否出现在该清单中当作可调用性校验。因此在项目未绑定、未登录或远端代理不可用时,Agent 会误以为这些工具当前可用并继续调用,随后才收到失败。请将 description/Skill 同步为固定能力与 schema 目录并说明调用前置条件,或恢复按当前工作区可用性过滤的行为。

AGENTS.md reference: AGENTS.md:L19-L23

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

- Replace Runtime CLI login instructions in maker_status with plugin-native recovery paths.
- Match the combined missing-PAT-and-TapTap-auth state before the narrower auth-only state.
- Prefer re-saving PAT in the plugin settings when PAT exists, while retaining maker_login for browser authorization.
- Add exact regression coverage for all three authentication states.
- Keep the official 0.0.31 vendor bundle unchanged and retain plugin version 2.1.11.

Validation:
- node --test .tests/plugin-contract.test.mjs .tests/localization.test.mjs .tests/provisioning.test.mjs .tests/publish-workflows.test.mjs .tests/taptap-maker.test.mjs
- git diff --check

Signed-off-by: liangdong <liangdong@xd.com>
@liangdong-ttm
liangdong-ttm force-pushed the fix/taptap-maker-runtime-0.0.31 branch from 4c70f98 to 0a05682 Compare August 20, 2026 15:44
@chatgpt-codex-connector

Copy link
Copy Markdown

💡 Codex Review

https://github.com/makecindy/cindy-official-plugins/blob/0a0568223449100d0c5086b698cf4f96f1d256d5/taptap-maker/vendor/taptap-maker/dist/maker.js#L43452-L43455
P1 Badge 禁止自动重放永久语音确认请求

0.0.31 将 confirm_character_voice 改为创建永久 ElevenLabs voice 并消耗 Voice Slot,但远程代理在网络错误时仍会把同一请求重新入队并在重连后再次调用(maker.js:54904-54920)。如果服务端已创建 voice、仅响应在传输中丢失,插件会重复创建并消耗额外 slot;即使最终超时,返回结果也没有区分“已执行”和“状态未知”。请为该操作提供幂等键,或在发送后的连接中断/超时路径返回未知态而不要自动重放。

AGENTS.md reference: AGENTS.md:L38-L40

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@zqchris

zqchris commented Aug 21, 2026

Copy link
Copy Markdown
Contributor

🤖 Cindy 自动审查 / Cindy Automated Review(head 0a05682

安全⚠️ taptap-maker/ghost.json 未新增 slot、secret、网络白名单或子进程入口;现有固定入口与分发环境注入边界仍保持。但随包 Runtime 的动态工具代理存在不可逆副作用重放风险。

设计⚠️ taptap-maker/vendor/taptap-maker/dist/maker.js:43451-43456 明确 confirm_character_voice 会创建永久 ElevenLabs voice 并消耗一个 Voice Slot;同文件 :54904-54920 在网络错误后把当前请求重新入队,:54735-54766 在重连后再次调用。若远端已成功创建、响应才丢失,插件会重复创建并额外消耗 slot;当前 main.js:477-497 直接转发结果,没有“确定未执行 / 确定已执行 / 未知”状态,也没有幂等键或禁止自动重放的保护。这违反不可逆外发/写操作的三态失败契约。

查重:✅ 既有 taptap-maker Runtime 升级,不是新 ghost.json,无新增插件查重项。

流程:✅ ghost.json 2.1.10→2.1.11;四语言 locale、双 README、THIRD-PARTY-LICENSES.txt、DCO 及 Repository-wide gates / changed-plugin packaging / Greptile Review 均已通过。vendor 变更有版本与来源说明。

历史:✅ 未命中方向反复摇摆。#28(0.0.27)与 #53(0.0.28)均沿同一路线合并;本次对比旧 0.0.28 与新 0.0.31,网络失败重放逻辑已存在于旧 Runtime,未查到被 revert 或相反方案。因此这不是历史争议,但当前发布包仍需满足本仓三态契约。

问题清单

  • P1 taptap-maker/vendor/taptap-maker/dist/maker.js:43451-43456,54735-54766,54904-54920:不可逆 confirm_character_voice 在响应未知时自动重放,可能重复创建永久 voice 并消耗多个 Voice Slot;请对不可逆工具禁用自动重放并返回未知态/人工核验,或引入端到端幂等键,同时补回归测试。
  • 旧 Codex 关于静态工具清单(4c70f98)与 CLI 登录提示(2407dd5)的意见已由当前 head 修复,归类为已修复/过期;本次未发现 DCO 幻觉噪音。

结论:⚠️ 建议打回。 请先修复上述 P1,再重新请求审查;合并决策由维护者做出。

完整契约见 .greptile/rules.md;合并决策由维护者做出。

- Treat confirm_character_voice as non-replayable because it can create a permanent ElevenLabs voice and consume a Voice Slot.
- Return an execution-unknown result after a post-dispatch connection failure and require manual verification before retry.
- Reject the same tool as not executed while the proxy reconnects or when it is found in a pending replay queue.
- Disable the outer Maker proxy retry for this tool while keeping retry behavior for other proxy tools unchanged.
- Document the unknown-state recovery contract in the bundled tool description and assert the generated Runtime safeguards.

Validation:
- npm test -- --runInBand src/__tests__/mcpProxyLifecycle.test.ts src/__tests__/makerBuildLocalChanges.test.ts
- node --test .tests/plugin-contract.test.mjs .tests/localization.test.mjs .tests/provisioning.test.mjs .tests/publish-workflows.test.mjs .tests/taptap-maker.test.mjs
- node --check taptap-maker/vendor/taptap-maker/dist/maker.js
- git diff --check

Signed-off-by: liangdong <liangdong@xd.com>
@liangdong-ttm

Copy link
Copy Markdown
Contributor Author

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@chatgpt-codex-connector

Copy link
Copy Markdown

💡 Codex Review

https://github.com/makecindy/cindy-official-plugins/blob/e4e5f63c9fd89e7aef033b4e34682aa2b7790d6f/taptap-maker/vendor/taptap-maker/dist/maker.js#L45052
P1 Badge 区分连接失败与请求中断

当本地 Proxy 子进程启动或 MCP initialize 失败时,前面的 client.connect(transport) 会在 client.callTool 尚未执行前抛错,但这里把 confirm_character_voice 的所有异常都报告为“可能已完成”的未知状态。这会让一次确定未执行的调用也要求用户核对 Voice Slot 并禁止直接重试;应将连接/派发前错误标为 not_executed,仅将请求发出后的中断标为 unknown

AGENTS.md reference: AGENTS.md:L38-L41

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@zqchris

zqchris commented Aug 21, 2026

Copy link
Copy Markdown
Contributor

🤖 Cindy 自动审查 / Cindy Automated Review(head e4e5f63

安全⚠️ 不可逆的 confirm_character_voice 会创建永久 ElevenLabs voice 并消耗 Voice Slot。Runtime 已关闭该工具的外层自动重试,并在重连队列/网络中断后分别返回“未执行”或“执行状态未知”;未新增 Cindy slot、secret、网络白名单、动态执行或子进程入口。vendor Runtime 0.0.31 的来源、许可证、版本与定点补丁均在 PR 描述和测试中逐项列明。

设计⚠️ taptap-maker/vendor/taptap-maker/dist/maker.js:44972-45053callRemoteProxyToolclient.connect()(含 MCP initialize,尚未派发工具)与 client.callTool() 放在同一 try/catch。因此连接/初始化在派发前失败时,confirm_character_voice 仍返回“执行状态未知”,要求人工核验并禁止直接重试;该调用实际上确定未执行,未满足不可逆操作失败路径的三态契约。请拆分连接与派发阶段:前置连接失败返回 not_executed,仅请求已发出后的中断返回 unknown,并补真实行为测试;.tests/taptap-maker.test.mjs:229-254 当前主要是 bundle 正则断言,未覆盖这两个运行时分支。

查重:✅ 这是既有 taptap-maker 的 Runtime 升级与安全修补,不是新增 ghost.json,无新插件查重项。

流程:✅ ghost.json 2.1.10→2.1.11;四语言 locale、双语 README、THIRD-PARTY-LICENSES.txt、DCO 及当前 head 的 Repository-wide gates / changed-plugin packaging / Greptile Review 全部通过。PR 实际 3 个 commit 均带 Signed-off-by。vendor/dist 变更有版本、来源、许可证、测试与定点差异证据。

历史:✅ 未命中反复摇摆。Runtime 升级路线在 #28(0.0.27)与 #53(0.0.28)均已合并;本次延续同一路线,未查到被否决、revert 或后续推翻的相反方案。旧 Codex 关于静态工具清单与 CLI 登录提示的意见已由当前 head 修复;当前 head 的“连接前失败误报 unknown”意见为真问题。未发现 Codex 的虚构 DCO commit 噪音。

问题清单

  • P1 taptap-maker/vendor/taptap-maker/dist/maker.js:44972-45053:连接/初始化失败被错误报告为 unknown,请拆分 not_executedunknown 路径并增加实际行为测试。

结论:⚠️ 建议打回。 请先修复上述 P1,再重新请求审查;合并决策由维护者做出。

完整契约见 .greptile/rules.md;合并决策由维护者做出。

@nanaco666

Copy link
Copy Markdown
Collaborator

当前合并门禁未通过(head e4e5f63c

新 PR 已进入巡检,当前状态:

  • Greptile 已对当前 head 复审为 5/5,Repository-wide gates、changed-plugin packaging、DCO 均 success;无未解决 review thread。
  • Cindy Plugin Review 为 failure,结论为 ⚠️ 建议打回,含 1 个 P1:
    taptap-maker/vendor/taptap-maker/dist/maker.js:44972-45053callRemoteProxyToolclient.connect()(含 MCP initialize,尚未派发工具)与 client.callTool() 放在同一 try/catch;连接/初始化在派发前失败时,confirm_character_voice 仍返回“执行状态未知”。该调用实际确定未执行,未满足不可逆操作失败路径的三态契约;需拆分连接与派发阶段:前置连接失败返回 not_executed,仅请求已发出后的中断返回 unknown,并补真实行为测试。
  • 无 approving review(含维护者人工 Approve)。

请先修复上述 P1 并重新请求审查;完成前请勿合并。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants