@optima-chat/dev-skills 0.16.8 → 0.16.9
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/.claude/skills/yzsgo-e2e/SKILL.md +6 -1
- package/.claude/skills/yzsgo-e2e/SYNC.md +39 -1
- package/.claude/skills/yzsgo-e2e/chat_driver.py +862 -64
- package/.claude/skills/yzsgo-e2e/run_e2e.py +7 -1
- package/.codex/skills/yzsgo-e2e/SKILL.md +6 -1
- package/.codex/skills/yzsgo-e2e/SYNC.md +39 -1
- package/.codex/skills/yzsgo-e2e/chat_driver.py +862 -64
- package/.codex/skills/yzsgo-e2e/run_e2e.py +7 -1
- package/bin/helpers/cn-deploy.ts +2 -1
- package/dist/bin/helpers/cn-deploy.js +2 -1
- package/package.json +1 -1
|
@@ -90,7 +90,13 @@ def main():
|
|
|
90
90
|
# ② 拿到确定的 sessionId,后面按它**确定性**定位 wire 对话,不靠 (时间,首句) 猜。
|
|
91
91
|
# 该环境 multi-tab 没开(flag 默认关,cn-stage 未验)时 auto 档自己会降级复用已有 tab
|
|
92
92
|
# 并打 warn —— 单 driver 复用是安全的,功能不减,只是 wire 定位退回启发式。
|
|
93
|
-
|
|
93
|
+
# ziniao 是 attach() 的必填关键字参数(上游 store-skills #611,漏传即 TypeError):
|
|
94
|
+
# 本 skill 测的是鸭嘴兽对话链路,这个 tab 不绑定任何紫鸟 profile,所以显式声明 None + 理由。
|
|
95
|
+
# 若 --message 正文里写了 `--ziniao-profile <id>`,send() 会抛 ZiniaoDeclarationConflict
|
|
96
|
+
# 拒发 —— 那是上游有意的闸,不是本脚本的 bug。装到 ~/.claude 后已知 profile 表为空
|
|
97
|
+
# (它读 store-skills 仓库里的 e2e/registry*.yaml),所以只认 `--ziniao-profile` 这种显式写法。
|
|
98
|
+
d = chat_driver.ChatDriver().attach(
|
|
99
|
+
ziniao=None, reason="yzsgo-e2e 驱动鸭嘴兽网页对话做端到端测试,本脚本不绑定任何紫鸟 profile")
|
|
94
100
|
session_id = d.session_id # attach 后立刻取:放在 try 里的话,中途抛异常会留下未绑定名
|
|
95
101
|
if not d.tab_isolated:
|
|
96
102
|
print("[warn] 未能独占 tab(该环境 multi-tab 未开)—— wire 定位退回 (时间,首句) 启发式")
|
package/bin/helpers/cn-deploy.ts
CHANGED
|
@@ -142,7 +142,8 @@ async function main() {
|
|
|
142
142
|
|
|
143
143
|
// 2. 触发(凭证由云效变量组供给,无需注入)。stage/prod 流水线 id 均按名 `${svc}-cn-${env}`
|
|
144
144
|
// 从云效实时解析、不硬编码,根除与 optima-terraform cn-run.py 手工 PIPELINES 表漂移(#84)。
|
|
145
|
-
|
|
145
|
+
// nextToken 自 2026-09 起被 aliyun CLI 标成必填,不传则 API 直接返参数错误 → devops() 吞成 {} → 误报「云效无流水线」。
|
|
146
|
+
const lp = devops('ListPipelines', { maxResults: '100', nextToken: '0' });
|
|
146
147
|
const hit = (lp.pipelines || []).find((p: any) => p.pipelineName === `${svcName}-cn-${envName}`);
|
|
147
148
|
if (!hit) { console.error(`✗ 云效无 ${svcName}-cn-${envName} 流水线`); process.exit(1); }
|
|
148
149
|
const pipelineId = hit.pipelineId;
|
|
@@ -163,7 +163,8 @@ async function main() {
|
|
|
163
163
|
console.log(`✓ mirror 已追平 ${svc.repo}@${ref} = ${ghSha.slice(0, 10)}`);
|
|
164
164
|
// 2. 触发(凭证由云效变量组供给,无需注入)。stage/prod 流水线 id 均按名 `${svc}-cn-${env}`
|
|
165
165
|
// 从云效实时解析、不硬编码,根除与 optima-terraform cn-run.py 手工 PIPELINES 表漂移(#84)。
|
|
166
|
-
|
|
166
|
+
// nextToken 自 2026-09 起被 aliyun CLI 标成必填,不传则 API 直接返参数错误 → devops() 吞成 {} → 误报「云效无流水线」。
|
|
167
|
+
const lp = devops('ListPipelines', { maxResults: '100', nextToken: '0' });
|
|
167
168
|
const hit = (lp.pipelines || []).find((p) => p.pipelineName === `${svcName}-cn-${envName}`);
|
|
168
169
|
if (!hit) {
|
|
169
170
|
console.error(`✗ 云效无 ${svcName}-cn-${envName} 流水线`);
|