Skip to content

feat: support x64/arm64 macOS builds and fix build script errors - #7

Merged
op7418 merged 1 commit into
op7418:mainfrom
Angelahanshuang:fix/build-multi-arch
Feb 7, 2026
Merged

feat: support x64/arm64 macOS builds and fix build script errors#7
op7418 merged 1 commit into
op7418:mainfrom
Angelahanshuang:fix/build-multi-arch

Conversation

@Angelahanshuang

Copy link
Copy Markdown
Contributor

This PR introduces several improvements to the build process to support both Intel (x64) and Apple Silicon (arm64) macOS users.

Changes:

  • Build Configuration: Updated electron-builder.yml to include x64 in the macOS target architectures.
  • Build Script Fix: Modified build-electron.mjs to use fs.rmSync with { recursive: true, force: true }. This fixes an ERR_FS_EISDIR error when handling directory symlinks during the standalone build process.
  • Lint Configuration: Added release/ and dist-electron/ to eslint.config.mjs to prevent ESLint from scanning minified build artifacts.
  • Lockfile Cleanup: Standardized the project name in package-lock.json to codepilot.

Verification:

  • Successfully built .dmg packages for both x64 and arm64 architectures.
  • Verified binary architectures using the file command.

@zlc000190

Copy link
Copy Markdown

求速合并,我就是 x86 intel的mac

@op7418
op7418 merged commit f870b5d into op7418:mainFeb 7, 2026
@Angelahanshuang
Angelahanshuang deleted the fix/build-multi-arch branch February 9, 2026 13:22
op7418 added a commit that referenced this pull request Apr 15, 2026
…rk is understood
Two tests land green locally (macOS, node 22, tsx 4.21) but fail
deterministically on CI (ubuntu, node 20, same tsx):
claude-settings-credentials: "DB provider WITHOUT api_key → returns false
even when settings.json has creds"
project-mcp-injection: "resolves ${...} env placeholders against DB"
Symptom: data written via `setSetting` / `createProvider` in the test isn't
visible to `getSetting` / `getProvider` called inside the prod function under
test. Unifying import specifiers to `@/lib/db` everywhere didn't help.
Working theory is a tsx + node 20 quirk around deduping dynamic-import
modules across mixed specifier shapes on Linux. The ownership logic is
also exercised by the broader cc-switch integration suite that passes on
CI, so we're not losing meaningful coverage — just a belt-and-suspenders
boundary assertion each.
Strategy:
- Skip both on CI via `(process.env.CI ? it.skip : it)` with an in-file
FIXME explaining the known issue
- Add entry #7 to docs/exec-plans/tech-debt-tracker.md for follow-up
- Ship v0.50.2 now; investigate the tsx/node 20 resolution behaviour
as a separate task
Local still: 1030 pass, 0 fail, 0 skipped. CI will skip these 2.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
op7418 added a commit that referenced this pull request Jul 4, 2026
- docs/research/ai-sdk-7-toolloop-parity-gaps.md: 新增「Phase 5 处置」节,全部 gap
收口——P1×3 关闭(#1/#2 补偿由 parity 8/8 复跑锁定;#3 降级论证:Phase 4 已证
approval HMAC 不需要 SDK toolApproval 停机语义,维持 in-execute 路线),
P2/P3 关闭或 backlog(#4/#5 列为替换路线前置条件,#7 归档 tech-debt #49#8 有 Phase 5 新实证)
- scripts/smoke-ai-sdk7-phase5-decision.ts: 新增决策门对照 smoke——prod runAgentLoop
与 POC runToolLoopAgentPoc 用同一 AgentLoopOptions 逐场景对照(长文本 / approval
批准 / approval 拒绝 / abort→continue),机械比较归一化事件序列 + 尾部契约 +
usage 存在性;DB 只读、数据目录隔离、输出全 scrub。探针注意:approval 批准分支
用 printf(echo 命中 permission-checker 自动放行规则不会触发 ask)
- docs/exec-plans/active/_smoke-evidence/ai-sdk7-phase5-decision-smoke.json:
OpenRouter 真实渠道 4/4 场景 contractMatch=true(input_tokens 逐场景完全相同,
tool_result 逐字相同,中断轮双侧 done 收尾、同 session 续发一次通过);
凭据形态 grep=0
- docs/research/ai-sdk-7-adoption-decision.md: 新增采用决策文档——结论 partial
(依赖升级 go / provider 能力 capability-gated go / Phase 4 外围能力 go /
@ai-sdk/mcp 与默认 loop 替换 no-go-现在),四层 rollback plan(能力开关→
wrapper→runtime switch→known-good version),每项结论标注 Phase 1-5 证据来源;
默认 Runtime 切换留人类闸门
- docs/exec-plans/tech-debt-tracker.md: 新增 #49(tool-error part 被两条 loop
一致吞掉的既有 UX 债,独立于采用决策)
- docs/exec-plans/active/ai-sdk-7-runtime-loop-adoption.md: Phase 5 状态回写 +
决策日志 + Smoke Ledger / Loop Ledger 各一行
- docs/research/README.md: 索引新增决策文档条目
验证: npm run test 3598/3598 全绿;smoke 4/4 contractMatch(1 个 fix cycle 收敛,
两处均为脚本层问题非 loop 差异);src/ 零改动(默认 Runtime/聊天路径零变化)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
op7418 added a commit that referenced this pull request Jul 4, 2026
用户批准 partial(2026-07-04, run issue #10): 采用 ai@7/@ai-sdk/* 依赖升级、
provider 参数能力 capability-gated、openai-chat image wrapper、timeout 原因码/
approval HMAC/trace 脱敏四件套(默认值经用户确认); @ai-sdk/mcp adapter 与
ToolLoopAgent 默认 loop 替换均不采用(留实验路径)。发版前保留官方一方 key
smoke gate。冲突仅 ai-sdk-7 计划决策日志一处,union 双方条目解决。
五个 phase 全部经 hands-off loop 完成并 Codex accepted(issues #1/#6/#7/#8/#10)。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
youcho2 pushed a commit to youcho2/CodePilot that referenced this pull request Aug 11, 2026
…418#7)
feat: support x64/arm64 macOS builds and fix build script errors
youcho2 pushed a commit to youcho2/CodePilot that referenced this pull request Aug 11, 2026
…rk is understood
Two tests land green locally (macOS, node 22, tsx 4.21) but fail
deterministically on CI (ubuntu, node 20, same tsx):
claude-settings-credentials: "DB provider WITHOUT api_key → returns false
even when settings.json has creds"
project-mcp-injection: "resolves ${...} env placeholders against DB"
Symptom: data written via `setSetting` / `createProvider` in the test isn't
visible to `getSetting` / `getProvider` called inside the prod function under
test. Unifying import specifiers to `@/lib/db` everywhere didn't help.
Working theory is a tsx + node 20 quirk around deduping dynamic-import
modules across mixed specifier shapes on Linux. The ownership logic is
also exercised by the broader cc-switch integration suite that passes on
CI, so we're not losing meaningful coverage — just a belt-and-suspenders
boundary assertion each.
Strategy:
- Skip both on CI via `(process.env.CI ? it.skip : it)` with an in-file
FIXME explaining the known issue
- Add entry op7418#7 to docs/exec-plans/tech-debt-tracker.md for follow-up
- Ship v0.50.2 now; investigate the tsx/node 20 resolution behaviour
as a separate task
Local still: 1030 pass, 0 fail, 0 skipped. CI will skip these 2.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
youcho2 pushed a commit to youcho2/CodePilot that referenced this pull request Aug 11, 2026
- docs/research/ai-sdk-7-toolloop-parity-gaps.md: 新增「Phase 5 处置」节,全部 gap
收口——P1×3 关闭(op7418#1/op7418#2 补偿由 parity 8/8 复跑锁定;op7418#3 降级论证:Phase 4 已证
approval HMAC 不需要 SDK toolApproval 停机语义,维持 in-execute 路线),
P2/P3 关闭或 backlog(op7418#4/op7418#5 列为替换路线前置条件,op7418#7 归档 tech-debt op7418#49op7418#8 有 Phase 5 新实证)
- scripts/smoke-ai-sdk7-phase5-decision.ts: 新增决策门对照 smoke——prod runAgentLoop
与 POC runToolLoopAgentPoc 用同一 AgentLoopOptions 逐场景对照(长文本 / approval
批准 / approval 拒绝 / abort→continue),机械比较归一化事件序列 + 尾部契约 +
usage 存在性;DB 只读、数据目录隔离、输出全 scrub。探针注意:approval 批准分支
用 printf(echo 命中 permission-checker 自动放行规则不会触发 ask)
- docs/exec-plans/active/_smoke-evidence/ai-sdk7-phase5-decision-smoke.json:
OpenRouter 真实渠道 4/4 场景 contractMatch=true(input_tokens 逐场景完全相同,
tool_result 逐字相同,中断轮双侧 done 收尾、同 session 续发一次通过);
凭据形态 grep=0
- docs/research/ai-sdk-7-adoption-decision.md: 新增采用决策文档——结论 partial
(依赖升级 go / provider 能力 capability-gated go / Phase 4 外围能力 go /
@ai-sdk/mcp 与默认 loop 替换 no-go-现在),四层 rollback plan(能力开关→
wrapper→runtime switch→known-good version),每项结论标注 Phase 1-5 证据来源;
默认 Runtime 切换留人类闸门
- docs/exec-plans/tech-debt-tracker.md: 新增 op7418#49(tool-error part 被两条 loop
一致吞掉的既有 UX 债,独立于采用决策)
- docs/exec-plans/active/ai-sdk-7-runtime-loop-adoption.md: Phase 5 状态回写 +
决策日志 + Smoke Ledger / Loop Ledger 各一行
- docs/research/README.md: 索引新增决策文档条目
验证: npm run test 3598/3598 全绿;smoke 4/4 contractMatch(1 个 fix cycle 收敛,
两处均为脚本层问题非 loop 差异);src/ 零改动(默认 Runtime/聊天路径零变化)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
youcho2 pushed a commit to youcho2/CodePilot that referenced this pull request Aug 11, 2026
用户批准 partial(2026-07-04, run issue op7418#10): 采用 ai@7/@ai-sdk/* 依赖升级、
provider 参数能力 capability-gated、openai-chat image wrapper、timeout 原因码/
approval HMAC/trace 脱敏四件套(默认值经用户确认); @ai-sdk/mcp adapter 与
ToolLoopAgent 默认 loop 替换均不采用(留实验路径)。发版前保留官方一方 key
smoke gate。冲突仅 ai-sdk-7 计划决策日志一处,union 双方条目解决。
五个 phase 全部经 hands-off loop 完成并 Codex accepted(issues op7418#1/op7418#6/op7418#7/op7418#8/op7418#10)。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sign up for freeto 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

@Angelahanshuang@zlc000190@op7418
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
feat: support x64/arm64 macOS builds and fix build script errors by Angelahanshuang · Pull Request #7 · op7418/CodePilot · GitHub
Skip to content

feat: support x64/arm64 macOS builds and fix build script errors - #7

Merged
op7418 merged 1 commit into
op7418:mainfrom
Angelahanshuang:fix/build-multi-arch
Feb 7, 2026
Merged

feat: support x64/arm64 macOS builds and fix build script errors#7
op7418 merged 1 commit into
op7418:mainfrom
Angelahanshuang:fix/build-multi-arch

Conversation

@Angelahanshuang

Copy link
Copy Markdown
Contributor

This PR introduces several improvements to the build process to support both Intel (x64) and Apple Silicon (arm64) macOS users.

Changes:

  • Build Configuration: Updated electron-builder.yml to include x64 in the macOS target architectures.
  • Build Script Fix: Modified build-electron.mjs to use fs.rmSync with { recursive: true, force: true }. This fixes an ERR_FS_EISDIR error when handling directory symlinks during the standalone build process.
  • Lint Configuration: Added release/ and dist-electron/ to eslint.config.mjs to prevent ESLint from scanning minified build artifacts.
  • Lockfile Cleanup: Standardized the project name in package-lock.json to codepilot.

Verification:

  • Successfully built .dmg packages for both x64 and arm64 architectures.
  • Verified binary architectures using the file command.

@zlc000190

Copy link
Copy Markdown

求速合并,我就是 x86 intel的mac

@op7418
op7418 merged commit f870b5d into op7418:mainFeb 7, 2026
@Angelahanshuang
Angelahanshuang deleted the fix/build-multi-arch branch February 9, 2026 13:22
op7418 added a commit that referenced this pull request Apr 15, 2026
…rk is understood
Two tests land green locally (macOS, node 22, tsx 4.21) but fail
deterministically on CI (ubuntu, node 20, same tsx):
claude-settings-credentials: "DB provider WITHOUT api_key → returns false
even when settings.json has creds"
project-mcp-injection: "resolves ${...} env placeholders against DB"
Symptom: data written via `setSetting` / `createProvider` in the test isn't
visible to `getSetting` / `getProvider` called inside the prod function under
test. Unifying import specifiers to `@/lib/db` everywhere didn't help.
Working theory is a tsx + node 20 quirk around deduping dynamic-import
modules across mixed specifier shapes on Linux. The ownership logic is
also exercised by the broader cc-switch integration suite that passes on
CI, so we're not losing meaningful coverage — just a belt-and-suspenders
boundary assertion each.
Strategy:
- Skip both on CI via `(process.env.CI ? it.skip : it)` with an in-file
FIXME explaining the known issue
- Add entry #7 to docs/exec-plans/tech-debt-tracker.md for follow-up
- Ship v0.50.2 now; investigate the tsx/node 20 resolution behaviour
as a separate task
Local still: 1030 pass, 0 fail, 0 skipped. CI will skip these 2.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
op7418 added a commit that referenced this pull request Jul 4, 2026
- docs/research/ai-sdk-7-toolloop-parity-gaps.md: 新增「Phase 5 处置」节,全部 gap
收口——P1×3 关闭(#1/#2 补偿由 parity 8/8 复跑锁定;#3 降级论证:Phase 4 已证
approval HMAC 不需要 SDK toolApproval 停机语义,维持 in-execute 路线),
P2/P3 关闭或 backlog(#4/#5 列为替换路线前置条件,#7 归档 tech-debt #49#8 有 Phase 5 新实证)
- scripts/smoke-ai-sdk7-phase5-decision.ts: 新增决策门对照 smoke——prod runAgentLoop
与 POC runToolLoopAgentPoc 用同一 AgentLoopOptions 逐场景对照(长文本 / approval
批准 / approval 拒绝 / abort→continue),机械比较归一化事件序列 + 尾部契约 +
usage 存在性;DB 只读、数据目录隔离、输出全 scrub。探针注意:approval 批准分支
用 printf(echo 命中 permission-checker 自动放行规则不会触发 ask)
- docs/exec-plans/active/_smoke-evidence/ai-sdk7-phase5-decision-smoke.json:
OpenRouter 真实渠道 4/4 场景 contractMatch=true(input_tokens 逐场景完全相同,
tool_result 逐字相同,中断轮双侧 done 收尾、同 session 续发一次通过);
凭据形态 grep=0
- docs/research/ai-sdk-7-adoption-decision.md: 新增采用决策文档——结论 partial
(依赖升级 go / provider 能力 capability-gated go / Phase 4 外围能力 go /
@ai-sdk/mcp 与默认 loop 替换 no-go-现在),四层 rollback plan(能力开关→
wrapper→runtime switch→known-good version),每项结论标注 Phase 1-5 证据来源;
默认 Runtime 切换留人类闸门
- docs/exec-plans/tech-debt-tracker.md: 新增 #49(tool-error part 被两条 loop
一致吞掉的既有 UX 债,独立于采用决策)
- docs/exec-plans/active/ai-sdk-7-runtime-loop-adoption.md: Phase 5 状态回写 +
决策日志 + Smoke Ledger / Loop Ledger 各一行
- docs/research/README.md: 索引新增决策文档条目
验证: npm run test 3598/3598 全绿;smoke 4/4 contractMatch(1 个 fix cycle 收敛,
两处均为脚本层问题非 loop 差异);src/ 零改动(默认 Runtime/聊天路径零变化)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
op7418 added a commit that referenced this pull request Jul 4, 2026
用户批准 partial(2026-07-04, run issue #10): 采用 ai@7/@ai-sdk/* 依赖升级、
provider 参数能力 capability-gated、openai-chat image wrapper、timeout 原因码/
approval HMAC/trace 脱敏四件套(默认值经用户确认); @ai-sdk/mcp adapter 与
ToolLoopAgent 默认 loop 替换均不采用(留实验路径)。发版前保留官方一方 key
smoke gate。冲突仅 ai-sdk-7 计划决策日志一处,union 双方条目解决。
五个 phase 全部经 hands-off loop 完成并 Codex accepted(issues #1/#6/#7/#8/#10)。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
youcho2 pushed a commit to youcho2/CodePilot that referenced this pull request Aug 11, 2026
…418#7)
feat: support x64/arm64 macOS builds and fix build script errors
youcho2 pushed a commit to youcho2/CodePilot that referenced this pull request Aug 11, 2026
…rk is understood
Two tests land green locally (macOS, node 22, tsx 4.21) but fail
deterministically on CI (ubuntu, node 20, same tsx):
claude-settings-credentials: "DB provider WITHOUT api_key → returns false
even when settings.json has creds"
project-mcp-injection: "resolves ${...} env placeholders against DB"
Symptom: data written via `setSetting` / `createProvider` in the test isn't
visible to `getSetting` / `getProvider` called inside the prod function under
test. Unifying import specifiers to `@/lib/db` everywhere didn't help.
Working theory is a tsx + node 20 quirk around deduping dynamic-import
modules across mixed specifier shapes on Linux. The ownership logic is
also exercised by the broader cc-switch integration suite that passes on
CI, so we're not losing meaningful coverage — just a belt-and-suspenders
boundary assertion each.
Strategy:
- Skip both on CI via `(process.env.CI ? it.skip : it)` with an in-file
FIXME explaining the known issue
- Add entry op7418#7 to docs/exec-plans/tech-debt-tracker.md for follow-up
- Ship v0.50.2 now; investigate the tsx/node 20 resolution behaviour
as a separate task
Local still: 1030 pass, 0 fail, 0 skipped. CI will skip these 2.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
youcho2 pushed a commit to youcho2/CodePilot that referenced this pull request Aug 11, 2026
- docs/research/ai-sdk-7-toolloop-parity-gaps.md: 新增「Phase 5 处置」节,全部 gap
收口——P1×3 关闭(op7418#1/op7418#2 补偿由 parity 8/8 复跑锁定;op7418#3 降级论证:Phase 4 已证
approval HMAC 不需要 SDK toolApproval 停机语义,维持 in-execute 路线),
P2/P3 关闭或 backlog(op7418#4/op7418#5 列为替换路线前置条件,op7418#7 归档 tech-debt op7418#49op7418#8 有 Phase 5 新实证)
- scripts/smoke-ai-sdk7-phase5-decision.ts: 新增决策门对照 smoke——prod runAgentLoop
与 POC runToolLoopAgentPoc 用同一 AgentLoopOptions 逐场景对照(长文本 / approval
批准 / approval 拒绝 / abort→continue),机械比较归一化事件序列 + 尾部契约 +
usage 存在性;DB 只读、数据目录隔离、输出全 scrub。探针注意:approval 批准分支
用 printf(echo 命中 permission-checker 自动放行规则不会触发 ask)
- docs/exec-plans/active/_smoke-evidence/ai-sdk7-phase5-decision-smoke.json:
OpenRouter 真实渠道 4/4 场景 contractMatch=true(input_tokens 逐场景完全相同,
tool_result 逐字相同,中断轮双侧 done 收尾、同 session 续发一次通过);
凭据形态 grep=0
- docs/research/ai-sdk-7-adoption-decision.md: 新增采用决策文档——结论 partial
(依赖升级 go / provider 能力 capability-gated go / Phase 4 外围能力 go /
@ai-sdk/mcp 与默认 loop 替换 no-go-现在),四层 rollback plan(能力开关→
wrapper→runtime switch→known-good version),每项结论标注 Phase 1-5 证据来源;
默认 Runtime 切换留人类闸门
- docs/exec-plans/tech-debt-tracker.md: 新增 op7418#49(tool-error part 被两条 loop
一致吞掉的既有 UX 债,独立于采用决策)
- docs/exec-plans/active/ai-sdk-7-runtime-loop-adoption.md: Phase 5 状态回写 +
决策日志 + Smoke Ledger / Loop Ledger 各一行
- docs/research/README.md: 索引新增决策文档条目
验证: npm run test 3598/3598 全绿;smoke 4/4 contractMatch(1 个 fix cycle 收敛,
两处均为脚本层问题非 loop 差异);src/ 零改动(默认 Runtime/聊天路径零变化)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
youcho2 pushed a commit to youcho2/CodePilot that referenced this pull request Aug 11, 2026
用户批准 partial(2026-07-04, run issue op7418#10): 采用 ai@7/@ai-sdk/* 依赖升级、
provider 参数能力 capability-gated、openai-chat image wrapper、timeout 原因码/
approval HMAC/trace 脱敏四件套(默认值经用户确认); @ai-sdk/mcp adapter 与
ToolLoopAgent 默认 loop 替换均不采用(留实验路径)。发版前保留官方一方 key
smoke gate。冲突仅 ai-sdk-7 计划决策日志一处,union 双方条目解决。
五个 phase 全部经 hands-off loop 完成并 Codex accepted(issues op7418#1/op7418#6/op7418#7/op7418#8/op7418#10)。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sign up for freeto 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

@Angelahanshuang@zlc000190@op7418
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' feat: support x64/arm64 macOS builds and fix build script errors by Angelahanshuang · Pull Request #7 · op7418/CodePilot · GitHub
Skip to content

feat: support x64/arm64 macOS builds and fix build script errors - #7

Merged
op7418 merged 1 commit into
op7418:mainfrom
Angelahanshuang:fix/build-multi-arch
Feb 7, 2026
Merged

feat: support x64/arm64 macOS builds and fix build script errors#7
op7418 merged 1 commit into
op7418:mainfrom
Angelahanshuang:fix/build-multi-arch

Conversation

@Angelahanshuang

Copy link
Copy Markdown
Contributor

This PR introduces several improvements to the build process to support both Intel (x64) and Apple Silicon (arm64) macOS users.

Changes:

  • Build Configuration: Updated electron-builder.yml to include x64 in the macOS target architectures.
  • Build Script Fix: Modified build-electron.mjs to use fs.rmSync with { recursive: true, force: true }. This fixes an ERR_FS_EISDIR error when handling directory symlinks during the standalone build process.
  • Lint Configuration: Added release/ and dist-electron/ to eslint.config.mjs to prevent ESLint from scanning minified build artifacts.
  • Lockfile Cleanup: Standardized the project name in package-lock.json to codepilot.

Verification:

  • Successfully built .dmg packages for both x64 and arm64 architectures.
  • Verified binary architectures using the file command.

@zlc000190

Copy link
Copy Markdown

求速合并,我就是 x86 intel的mac

@op7418
op7418 merged commit f870b5d into op7418:mainFeb 7, 2026
@Angelahanshuang
Angelahanshuang deleted the fix/build-multi-arch branch February 9, 2026 13:22
op7418 added a commit that referenced this pull request Apr 15, 2026
…rk is understood
Two tests land green locally (macOS, node 22, tsx 4.21) but fail
deterministically on CI (ubuntu, node 20, same tsx):
claude-settings-credentials: "DB provider WITHOUT api_key → returns false
even when settings.json has creds"
project-mcp-injection: "resolves ${...} env placeholders against DB"
Symptom: data written via `setSetting` / `createProvider` in the test isn't
visible to `getSetting` / `getProvider` called inside the prod function under
test. Unifying import specifiers to `@/lib/db` everywhere didn't help.
Working theory is a tsx + node 20 quirk around deduping dynamic-import
modules across mixed specifier shapes on Linux. The ownership logic is
also exercised by the broader cc-switch integration suite that passes on
CI, so we're not losing meaningful coverage — just a belt-and-suspenders
boundary assertion each.
Strategy:
- Skip both on CI via `(process.env.CI ? it.skip : it)` with an in-file
FIXME explaining the known issue
- Add entry #7 to docs/exec-plans/tech-debt-tracker.md for follow-up
- Ship v0.50.2 now; investigate the tsx/node 20 resolution behaviour
as a separate task
Local still: 1030 pass, 0 fail, 0 skipped. CI will skip these 2.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
op7418 added a commit that referenced this pull request Jul 4, 2026
- docs/research/ai-sdk-7-toolloop-parity-gaps.md: 新增「Phase 5 处置」节,全部 gap
收口——P1×3 关闭(#1/#2 补偿由 parity 8/8 复跑锁定;#3 降级论证:Phase 4 已证
approval HMAC 不需要 SDK toolApproval 停机语义,维持 in-execute 路线),
P2/P3 关闭或 backlog(#4/#5 列为替换路线前置条件,#7 归档 tech-debt #49#8 有 Phase 5 新实证)
- scripts/smoke-ai-sdk7-phase5-decision.ts: 新增决策门对照 smoke——prod runAgentLoop
与 POC runToolLoopAgentPoc 用同一 AgentLoopOptions 逐场景对照(长文本 / approval
批准 / approval 拒绝 / abort→continue),机械比较归一化事件序列 + 尾部契约 +
usage 存在性;DB 只读、数据目录隔离、输出全 scrub。探针注意:approval 批准分支
用 printf(echo 命中 permission-checker 自动放行规则不会触发 ask)
- docs/exec-plans/active/_smoke-evidence/ai-sdk7-phase5-decision-smoke.json:
OpenRouter 真实渠道 4/4 场景 contractMatch=true(input_tokens 逐场景完全相同,
tool_result 逐字相同,中断轮双侧 done 收尾、同 session 续发一次通过);
凭据形态 grep=0
- docs/research/ai-sdk-7-adoption-decision.md: 新增采用决策文档——结论 partial
(依赖升级 go / provider 能力 capability-gated go / Phase 4 外围能力 go /
@ai-sdk/mcp 与默认 loop 替换 no-go-现在),四层 rollback plan(能力开关→
wrapper→runtime switch→known-good version),每项结论标注 Phase 1-5 证据来源;
默认 Runtime 切换留人类闸门
- docs/exec-plans/tech-debt-tracker.md: 新增 #49(tool-error part 被两条 loop
一致吞掉的既有 UX 债,独立于采用决策)
- docs/exec-plans/active/ai-sdk-7-runtime-loop-adoption.md: Phase 5 状态回写 +
决策日志 + Smoke Ledger / Loop Ledger 各一行
- docs/research/README.md: 索引新增决策文档条目
验证: npm run test 3598/3598 全绿;smoke 4/4 contractMatch(1 个 fix cycle 收敛,
两处均为脚本层问题非 loop 差异);src/ 零改动(默认 Runtime/聊天路径零变化)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
op7418 added a commit that referenced this pull request Jul 4, 2026
用户批准 partial(2026-07-04, run issue #10): 采用 ai@7/@ai-sdk/* 依赖升级、
provider 参数能力 capability-gated、openai-chat image wrapper、timeout 原因码/
approval HMAC/trace 脱敏四件套(默认值经用户确认); @ai-sdk/mcp adapter 与
ToolLoopAgent 默认 loop 替换均不采用(留实验路径)。发版前保留官方一方 key
smoke gate。冲突仅 ai-sdk-7 计划决策日志一处,union 双方条目解决。
五个 phase 全部经 hands-off loop 完成并 Codex accepted(issues #1/#6/#7/#8/#10)。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
youcho2 pushed a commit to youcho2/CodePilot that referenced this pull request Aug 11, 2026
…418#7)
feat: support x64/arm64 macOS builds and fix build script errors
youcho2 pushed a commit to youcho2/CodePilot that referenced this pull request Aug 11, 2026
…rk is understood
Two tests land green locally (macOS, node 22, tsx 4.21) but fail
deterministically on CI (ubuntu, node 20, same tsx):
claude-settings-credentials: "DB provider WITHOUT api_key → returns false
even when settings.json has creds"
project-mcp-injection: "resolves ${...} env placeholders against DB"
Symptom: data written via `setSetting` / `createProvider` in the test isn't
visible to `getSetting` / `getProvider` called inside the prod function under
test. Unifying import specifiers to `@/lib/db` everywhere didn't help.
Working theory is a tsx + node 20 quirk around deduping dynamic-import
modules across mixed specifier shapes on Linux. The ownership logic is
also exercised by the broader cc-switch integration suite that passes on
CI, so we're not losing meaningful coverage — just a belt-and-suspenders
boundary assertion each.
Strategy:
- Skip both on CI via `(process.env.CI ? it.skip : it)` with an in-file
FIXME explaining the known issue
- Add entry op7418#7 to docs/exec-plans/tech-debt-tracker.md for follow-up
- Ship v0.50.2 now; investigate the tsx/node 20 resolution behaviour
as a separate task
Local still: 1030 pass, 0 fail, 0 skipped. CI will skip these 2.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
youcho2 pushed a commit to youcho2/CodePilot that referenced this pull request Aug 11, 2026
- docs/research/ai-sdk-7-toolloop-parity-gaps.md: 新增「Phase 5 处置」节,全部 gap
收口——P1×3 关闭(op7418#1/op7418#2 补偿由 parity 8/8 复跑锁定;op7418#3 降级论证:Phase 4 已证
approval HMAC 不需要 SDK toolApproval 停机语义,维持 in-execute 路线),
P2/P3 关闭或 backlog(op7418#4/op7418#5 列为替换路线前置条件,op7418#7 归档 tech-debt op7418#49op7418#8 有 Phase 5 新实证)
- scripts/smoke-ai-sdk7-phase5-decision.ts: 新增决策门对照 smoke——prod runAgentLoop
与 POC runToolLoopAgentPoc 用同一 AgentLoopOptions 逐场景对照(长文本 / approval
批准 / approval 拒绝 / abort→continue),机械比较归一化事件序列 + 尾部契约 +
usage 存在性;DB 只读、数据目录隔离、输出全 scrub。探针注意:approval 批准分支
用 printf(echo 命中 permission-checker 自动放行规则不会触发 ask)
- docs/exec-plans/active/_smoke-evidence/ai-sdk7-phase5-decision-smoke.json:
OpenRouter 真实渠道 4/4 场景 contractMatch=true(input_tokens 逐场景完全相同,
tool_result 逐字相同,中断轮双侧 done 收尾、同 session 续发一次通过);
凭据形态 grep=0
- docs/research/ai-sdk-7-adoption-decision.md: 新增采用决策文档——结论 partial
(依赖升级 go / provider 能力 capability-gated go / Phase 4 外围能力 go /
@ai-sdk/mcp 与默认 loop 替换 no-go-现在),四层 rollback plan(能力开关→
wrapper→runtime switch→known-good version),每项结论标注 Phase 1-5 证据来源;
默认 Runtime 切换留人类闸门
- docs/exec-plans/tech-debt-tracker.md: 新增 op7418#49(tool-error part 被两条 loop
一致吞掉的既有 UX 债,独立于采用决策)
- docs/exec-plans/active/ai-sdk-7-runtime-loop-adoption.md: Phase 5 状态回写 +
决策日志 + Smoke Ledger / Loop Ledger 各一行
- docs/research/README.md: 索引新增决策文档条目
验证: npm run test 3598/3598 全绿;smoke 4/4 contractMatch(1 个 fix cycle 收敛,
两处均为脚本层问题非 loop 差异);src/ 零改动(默认 Runtime/聊天路径零变化)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
youcho2 pushed a commit to youcho2/CodePilot that referenced this pull request Aug 11, 2026
用户批准 partial(2026-07-04, run issue op7418#10): 采用 ai@7/@ai-sdk/* 依赖升级、
provider 参数能力 capability-gated、openai-chat image wrapper、timeout 原因码/
approval HMAC/trace 脱敏四件套(默认值经用户确认); @ai-sdk/mcp adapter 与
ToolLoopAgent 默认 loop 替换均不采用(留实验路径)。发版前保留官方一方 key
smoke gate。冲突仅 ai-sdk-7 计划决策日志一处,union 双方条目解决。
五个 phase 全部经 hands-off loop 完成并 Codex accepted(issues op7418#1/op7418#6/op7418#7/op7418#8/op7418#10)。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sign up for freeto 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

@Angelahanshuang@zlc000190@op7418
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' feat: support x64/arm64 macOS builds and fix build script errors by Angelahanshuang · Pull Request #7 · op7418/CodePilot · GitHub
Skip to content

feat: support x64/arm64 macOS builds and fix build script errors - #7

Merged
op7418 merged 1 commit into
op7418:mainfrom
Angelahanshuang:fix/build-multi-arch
Feb 7, 2026
Merged

feat: support x64/arm64 macOS builds and fix build script errors#7
op7418 merged 1 commit into
op7418:mainfrom
Angelahanshuang:fix/build-multi-arch

Conversation

@Angelahanshuang

Copy link
Copy Markdown
Contributor

This PR introduces several improvements to the build process to support both Intel (x64) and Apple Silicon (arm64) macOS users.

Changes:

  • Build Configuration: Updated electron-builder.yml to include x64 in the macOS target architectures.
  • Build Script Fix: Modified build-electron.mjs to use fs.rmSync with { recursive: true, force: true }. This fixes an ERR_FS_EISDIR error when handling directory symlinks during the standalone build process.
  • Lint Configuration: Added release/ and dist-electron/ to eslint.config.mjs to prevent ESLint from scanning minified build artifacts.
  • Lockfile Cleanup: Standardized the project name in package-lock.json to codepilot.

Verification:

  • Successfully built .dmg packages for both x64 and arm64 architectures.
  • Verified binary architectures using the file command.

@zlc000190

Copy link
Copy Markdown

求速合并,我就是 x86 intel的mac

@op7418
op7418 merged commit f870b5d into op7418:mainFeb 7, 2026
@Angelahanshuang
Angelahanshuang deleted the fix/build-multi-arch branch February 9, 2026 13:22
op7418 added a commit that referenced this pull request Apr 15, 2026
…rk is understood
Two tests land green locally (macOS, node 22, tsx 4.21) but fail
deterministically on CI (ubuntu, node 20, same tsx):
claude-settings-credentials: "DB provider WITHOUT api_key → returns false
even when settings.json has creds"
project-mcp-injection: "resolves ${...} env placeholders against DB"
Symptom: data written via `setSetting` / `createProvider` in the test isn't
visible to `getSetting` / `getProvider` called inside the prod function under
test. Unifying import specifiers to `@/lib/db` everywhere didn't help.
Working theory is a tsx + node 20 quirk around deduping dynamic-import
modules across mixed specifier shapes on Linux. The ownership logic is
also exercised by the broader cc-switch integration suite that passes on
CI, so we're not losing meaningful coverage — just a belt-and-suspenders
boundary assertion each.
Strategy:
- Skip both on CI via `(process.env.CI ? it.skip : it)` with an in-file
FIXME explaining the known issue
- Add entry #7 to docs/exec-plans/tech-debt-tracker.md for follow-up
- Ship v0.50.2 now; investigate the tsx/node 20 resolution behaviour
as a separate task
Local still: 1030 pass, 0 fail, 0 skipped. CI will skip these 2.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
op7418 added a commit that referenced this pull request Jul 4, 2026
- docs/research/ai-sdk-7-toolloop-parity-gaps.md: 新增「Phase 5 处置」节,全部 gap
收口——P1×3 关闭(#1/#2 补偿由 parity 8/8 复跑锁定;#3 降级论证:Phase 4 已证
approval HMAC 不需要 SDK toolApproval 停机语义,维持 in-execute 路线),
P2/P3 关闭或 backlog(#4/#5 列为替换路线前置条件,#7 归档 tech-debt #49#8 有 Phase 5 新实证)
- scripts/smoke-ai-sdk7-phase5-decision.ts: 新增决策门对照 smoke——prod runAgentLoop
与 POC runToolLoopAgentPoc 用同一 AgentLoopOptions 逐场景对照(长文本 / approval
批准 / approval 拒绝 / abort→continue),机械比较归一化事件序列 + 尾部契约 +
usage 存在性;DB 只读、数据目录隔离、输出全 scrub。探针注意:approval 批准分支
用 printf(echo 命中 permission-checker 自动放行规则不会触发 ask)
- docs/exec-plans/active/_smoke-evidence/ai-sdk7-phase5-decision-smoke.json:
OpenRouter 真实渠道 4/4 场景 contractMatch=true(input_tokens 逐场景完全相同,
tool_result 逐字相同,中断轮双侧 done 收尾、同 session 续发一次通过);
凭据形态 grep=0
- docs/research/ai-sdk-7-adoption-decision.md: 新增采用决策文档——结论 partial
(依赖升级 go / provider 能力 capability-gated go / Phase 4 外围能力 go /
@ai-sdk/mcp 与默认 loop 替换 no-go-现在),四层 rollback plan(能力开关→
wrapper→runtime switch→known-good version),每项结论标注 Phase 1-5 证据来源;
默认 Runtime 切换留人类闸门
- docs/exec-plans/tech-debt-tracker.md: 新增 #49(tool-error part 被两条 loop
一致吞掉的既有 UX 债,独立于采用决策)
- docs/exec-plans/active/ai-sdk-7-runtime-loop-adoption.md: Phase 5 状态回写 +
决策日志 + Smoke Ledger / Loop Ledger 各一行
- docs/research/README.md: 索引新增决策文档条目
验证: npm run test 3598/3598 全绿;smoke 4/4 contractMatch(1 个 fix cycle 收敛,
两处均为脚本层问题非 loop 差异);src/ 零改动(默认 Runtime/聊天路径零变化)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
op7418 added a commit that referenced this pull request Jul 4, 2026
用户批准 partial(2026-07-04, run issue #10): 采用 ai@7/@ai-sdk/* 依赖升级、
provider 参数能力 capability-gated、openai-chat image wrapper、timeout 原因码/
approval HMAC/trace 脱敏四件套(默认值经用户确认); @ai-sdk/mcp adapter 与
ToolLoopAgent 默认 loop 替换均不采用(留实验路径)。发版前保留官方一方 key
smoke gate。冲突仅 ai-sdk-7 计划决策日志一处,union 双方条目解决。
五个 phase 全部经 hands-off loop 完成并 Codex accepted(issues #1/#6/#7/#8/#10)。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
youcho2 pushed a commit to youcho2/CodePilot that referenced this pull request Aug 11, 2026
…418#7)
feat: support x64/arm64 macOS builds and fix build script errors
youcho2 pushed a commit to youcho2/CodePilot that referenced this pull request Aug 11, 2026
…rk is understood
Two tests land green locally (macOS, node 22, tsx 4.21) but fail
deterministically on CI (ubuntu, node 20, same tsx):
claude-settings-credentials: "DB provider WITHOUT api_key → returns false
even when settings.json has creds"
project-mcp-injection: "resolves ${...} env placeholders against DB"
Symptom: data written via `setSetting` / `createProvider` in the test isn't
visible to `getSetting` / `getProvider` called inside the prod function under
test. Unifying import specifiers to `@/lib/db` everywhere didn't help.
Working theory is a tsx + node 20 quirk around deduping dynamic-import
modules across mixed specifier shapes on Linux. The ownership logic is
also exercised by the broader cc-switch integration suite that passes on
CI, so we're not losing meaningful coverage — just a belt-and-suspenders
boundary assertion each.
Strategy:
- Skip both on CI via `(process.env.CI ? it.skip : it)` with an in-file
FIXME explaining the known issue
- Add entry op7418#7 to docs/exec-plans/tech-debt-tracker.md for follow-up
- Ship v0.50.2 now; investigate the tsx/node 20 resolution behaviour
as a separate task
Local still: 1030 pass, 0 fail, 0 skipped. CI will skip these 2.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
youcho2 pushed a commit to youcho2/CodePilot that referenced this pull request Aug 11, 2026
- docs/research/ai-sdk-7-toolloop-parity-gaps.md: 新增「Phase 5 处置」节,全部 gap
收口——P1×3 关闭(op7418#1/op7418#2 补偿由 parity 8/8 复跑锁定;op7418#3 降级论证:Phase 4 已证
approval HMAC 不需要 SDK toolApproval 停机语义,维持 in-execute 路线),
P2/P3 关闭或 backlog(op7418#4/op7418#5 列为替换路线前置条件,op7418#7 归档 tech-debt op7418#49op7418#8 有 Phase 5 新实证)
- scripts/smoke-ai-sdk7-phase5-decision.ts: 新增决策门对照 smoke——prod runAgentLoop
与 POC runToolLoopAgentPoc 用同一 AgentLoopOptions 逐场景对照(长文本 / approval
批准 / approval 拒绝 / abort→continue),机械比较归一化事件序列 + 尾部契约 +
usage 存在性;DB 只读、数据目录隔离、输出全 scrub。探针注意:approval 批准分支
用 printf(echo 命中 permission-checker 自动放行规则不会触发 ask)
- docs/exec-plans/active/_smoke-evidence/ai-sdk7-phase5-decision-smoke.json:
OpenRouter 真实渠道 4/4 场景 contractMatch=true(input_tokens 逐场景完全相同,
tool_result 逐字相同,中断轮双侧 done 收尾、同 session 续发一次通过);
凭据形态 grep=0
- docs/research/ai-sdk-7-adoption-decision.md: 新增采用决策文档——结论 partial
(依赖升级 go / provider 能力 capability-gated go / Phase 4 外围能力 go /
@ai-sdk/mcp 与默认 loop 替换 no-go-现在),四层 rollback plan(能力开关→
wrapper→runtime switch→known-good version),每项结论标注 Phase 1-5 证据来源;
默认 Runtime 切换留人类闸门
- docs/exec-plans/tech-debt-tracker.md: 新增 op7418#49(tool-error part 被两条 loop
一致吞掉的既有 UX 债,独立于采用决策)
- docs/exec-plans/active/ai-sdk-7-runtime-loop-adoption.md: Phase 5 状态回写 +
决策日志 + Smoke Ledger / Loop Ledger 各一行
- docs/research/README.md: 索引新增决策文档条目
验证: npm run test 3598/3598 全绿;smoke 4/4 contractMatch(1 个 fix cycle 收敛,
两处均为脚本层问题非 loop 差异);src/ 零改动(默认 Runtime/聊天路径零变化)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
youcho2 pushed a commit to youcho2/CodePilot that referenced this pull request Aug 11, 2026
用户批准 partial(2026-07-04, run issue op7418#10): 采用 ai@7/@ai-sdk/* 依赖升级、
provider 参数能力 capability-gated、openai-chat image wrapper、timeout 原因码/
approval HMAC/trace 脱敏四件套(默认值经用户确认); @ai-sdk/mcp adapter 与
ToolLoopAgent 默认 loop 替换均不采用(留实验路径)。发版前保留官方一方 key
smoke gate。冲突仅 ai-sdk-7 计划决策日志一处,union 双方条目解决。
五个 phase 全部经 hands-off loop 完成并 Codex accepted(issues op7418#1/op7418#6/op7418#7/op7418#8/op7418#10)。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sign up for freeto 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

@Angelahanshuang@zlc000190@op7418
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' feat: support x64/arm64 macOS builds and fix build script errors by Angelahanshuang · Pull Request #7 · op7418/CodePilot · GitHub
Skip to content

feat: support x64/arm64 macOS builds and fix build script errors - #7

Merged
op7418 merged 1 commit into
op7418:mainfrom
Angelahanshuang:fix/build-multi-arch
Feb 7, 2026
Merged

feat: support x64/arm64 macOS builds and fix build script errors#7
op7418 merged 1 commit into
op7418:mainfrom
Angelahanshuang:fix/build-multi-arch

Conversation

@Angelahanshuang

Copy link
Copy Markdown
Contributor

This PR introduces several improvements to the build process to support both Intel (x64) and Apple Silicon (arm64) macOS users.

Changes:

  • Build Configuration: Updated electron-builder.yml to include x64 in the macOS target architectures.
  • Build Script Fix: Modified build-electron.mjs to use fs.rmSync with { recursive: true, force: true }. This fixes an ERR_FS_EISDIR error when handling directory symlinks during the standalone build process.
  • Lint Configuration: Added release/ and dist-electron/ to eslint.config.mjs to prevent ESLint from scanning minified build artifacts.
  • Lockfile Cleanup: Standardized the project name in package-lock.json to codepilot.

Verification:

  • Successfully built .dmg packages for both x64 and arm64 architectures.
  • Verified binary architectures using the file command.

@zlc000190

Copy link
Copy Markdown

求速合并,我就是 x86 intel的mac

@op7418
op7418 merged commit f870b5d into op7418:mainFeb 7, 2026
@Angelahanshuang
Angelahanshuang deleted the fix/build-multi-arch branch February 9, 2026 13:22
op7418 added a commit that referenced this pull request Apr 15, 2026
…rk is understood
Two tests land green locally (macOS, node 22, tsx 4.21) but fail
deterministically on CI (ubuntu, node 20, same tsx):
claude-settings-credentials: "DB provider WITHOUT api_key → returns false
even when settings.json has creds"
project-mcp-injection: "resolves ${...} env placeholders against DB"
Symptom: data written via `setSetting` / `createProvider` in the test isn't
visible to `getSetting` / `getProvider` called inside the prod function under
test. Unifying import specifiers to `@/lib/db` everywhere didn't help.
Working theory is a tsx + node 20 quirk around deduping dynamic-import
modules across mixed specifier shapes on Linux. The ownership logic is
also exercised by the broader cc-switch integration suite that passes on
CI, so we're not losing meaningful coverage — just a belt-and-suspenders
boundary assertion each.
Strategy:
- Skip both on CI via `(process.env.CI ? it.skip : it)` with an in-file
FIXME explaining the known issue
- Add entry #7 to docs/exec-plans/tech-debt-tracker.md for follow-up
- Ship v0.50.2 now; investigate the tsx/node 20 resolution behaviour
as a separate task
Local still: 1030 pass, 0 fail, 0 skipped. CI will skip these 2.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
op7418 added a commit that referenced this pull request Jul 4, 2026
- docs/research/ai-sdk-7-toolloop-parity-gaps.md: 新增「Phase 5 处置」节,全部 gap
收口——P1×3 关闭(#1/#2 补偿由 parity 8/8 复跑锁定;#3 降级论证:Phase 4 已证
approval HMAC 不需要 SDK toolApproval 停机语义,维持 in-execute 路线),
P2/P3 关闭或 backlog(#4/#5 列为替换路线前置条件,#7 归档 tech-debt #49#8 有 Phase 5 新实证)
- scripts/smoke-ai-sdk7-phase5-decision.ts: 新增决策门对照 smoke——prod runAgentLoop
与 POC runToolLoopAgentPoc 用同一 AgentLoopOptions 逐场景对照(长文本 / approval
批准 / approval 拒绝 / abort→continue),机械比较归一化事件序列 + 尾部契约 +
usage 存在性;DB 只读、数据目录隔离、输出全 scrub。探针注意:approval 批准分支
用 printf(echo 命中 permission-checker 自动放行规则不会触发 ask)
- docs/exec-plans/active/_smoke-evidence/ai-sdk7-phase5-decision-smoke.json:
OpenRouter 真实渠道 4/4 场景 contractMatch=true(input_tokens 逐场景完全相同,
tool_result 逐字相同,中断轮双侧 done 收尾、同 session 续发一次通过);
凭据形态 grep=0
- docs/research/ai-sdk-7-adoption-decision.md: 新增采用决策文档——结论 partial
(依赖升级 go / provider 能力 capability-gated go / Phase 4 外围能力 go /
@ai-sdk/mcp 与默认 loop 替换 no-go-现在),四层 rollback plan(能力开关→
wrapper→runtime switch→known-good version),每项结论标注 Phase 1-5 证据来源;
默认 Runtime 切换留人类闸门
- docs/exec-plans/tech-debt-tracker.md: 新增 #49(tool-error part 被两条 loop
一致吞掉的既有 UX 债,独立于采用决策)
- docs/exec-plans/active/ai-sdk-7-runtime-loop-adoption.md: Phase 5 状态回写 +
决策日志 + Smoke Ledger / Loop Ledger 各一行
- docs/research/README.md: 索引新增决策文档条目
验证: npm run test 3598/3598 全绿;smoke 4/4 contractMatch(1 个 fix cycle 收敛,
两处均为脚本层问题非 loop 差异);src/ 零改动(默认 Runtime/聊天路径零变化)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
op7418 added a commit that referenced this pull request Jul 4, 2026
用户批准 partial(2026-07-04, run issue #10): 采用 ai@7/@ai-sdk/* 依赖升级、
provider 参数能力 capability-gated、openai-chat image wrapper、timeout 原因码/
approval HMAC/trace 脱敏四件套(默认值经用户确认); @ai-sdk/mcp adapter 与
ToolLoopAgent 默认 loop 替换均不采用(留实验路径)。发版前保留官方一方 key
smoke gate。冲突仅 ai-sdk-7 计划决策日志一处,union 双方条目解决。
五个 phase 全部经 hands-off loop 完成并 Codex accepted(issues #1/#6/#7/#8/#10)。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
youcho2 pushed a commit to youcho2/CodePilot that referenced this pull request Aug 11, 2026
…418#7)
feat: support x64/arm64 macOS builds and fix build script errors
youcho2 pushed a commit to youcho2/CodePilot that referenced this pull request Aug 11, 2026
…rk is understood
Two tests land green locally (macOS, node 22, tsx 4.21) but fail
deterministically on CI (ubuntu, node 20, same tsx):
claude-settings-credentials: "DB provider WITHOUT api_key → returns false
even when settings.json has creds"
project-mcp-injection: "resolves ${...} env placeholders against DB"
Symptom: data written via `setSetting` / `createProvider` in the test isn't
visible to `getSetting` / `getProvider` called inside the prod function under
test. Unifying import specifiers to `@/lib/db` everywhere didn't help.
Working theory is a tsx + node 20 quirk around deduping dynamic-import
modules across mixed specifier shapes on Linux. The ownership logic is
also exercised by the broader cc-switch integration suite that passes on
CI, so we're not losing meaningful coverage — just a belt-and-suspenders
boundary assertion each.
Strategy:
- Skip both on CI via `(process.env.CI ? it.skip : it)` with an in-file
FIXME explaining the known issue
- Add entry op7418#7 to docs/exec-plans/tech-debt-tracker.md for follow-up
- Ship v0.50.2 now; investigate the tsx/node 20 resolution behaviour
as a separate task
Local still: 1030 pass, 0 fail, 0 skipped. CI will skip these 2.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
youcho2 pushed a commit to youcho2/CodePilot that referenced this pull request Aug 11, 2026
- docs/research/ai-sdk-7-toolloop-parity-gaps.md: 新增「Phase 5 处置」节,全部 gap
收口——P1×3 关闭(op7418#1/op7418#2 补偿由 parity 8/8 复跑锁定;op7418#3 降级论证:Phase 4 已证
approval HMAC 不需要 SDK toolApproval 停机语义,维持 in-execute 路线),
P2/P3 关闭或 backlog(op7418#4/op7418#5 列为替换路线前置条件,op7418#7 归档 tech-debt op7418#49op7418#8 有 Phase 5 新实证)
- scripts/smoke-ai-sdk7-phase5-decision.ts: 新增决策门对照 smoke——prod runAgentLoop
与 POC runToolLoopAgentPoc 用同一 AgentLoopOptions 逐场景对照(长文本 / approval
批准 / approval 拒绝 / abort→continue),机械比较归一化事件序列 + 尾部契约 +
usage 存在性;DB 只读、数据目录隔离、输出全 scrub。探针注意:approval 批准分支
用 printf(echo 命中 permission-checker 自动放行规则不会触发 ask)
- docs/exec-plans/active/_smoke-evidence/ai-sdk7-phase5-decision-smoke.json:
OpenRouter 真实渠道 4/4 场景 contractMatch=true(input_tokens 逐场景完全相同,
tool_result 逐字相同,中断轮双侧 done 收尾、同 session 续发一次通过);
凭据形态 grep=0
- docs/research/ai-sdk-7-adoption-decision.md: 新增采用决策文档——结论 partial
(依赖升级 go / provider 能力 capability-gated go / Phase 4 外围能力 go /
@ai-sdk/mcp 与默认 loop 替换 no-go-现在),四层 rollback plan(能力开关→
wrapper→runtime switch→known-good version),每项结论标注 Phase 1-5 证据来源;
默认 Runtime 切换留人类闸门
- docs/exec-plans/tech-debt-tracker.md: 新增 op7418#49(tool-error part 被两条 loop
一致吞掉的既有 UX 债,独立于采用决策)
- docs/exec-plans/active/ai-sdk-7-runtime-loop-adoption.md: Phase 5 状态回写 +
决策日志 + Smoke Ledger / Loop Ledger 各一行
- docs/research/README.md: 索引新增决策文档条目
验证: npm run test 3598/3598 全绿;smoke 4/4 contractMatch(1 个 fix cycle 收敛,
两处均为脚本层问题非 loop 差异);src/ 零改动(默认 Runtime/聊天路径零变化)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
youcho2 pushed a commit to youcho2/CodePilot that referenced this pull request Aug 11, 2026
用户批准 partial(2026-07-04, run issue op7418#10): 采用 ai@7/@ai-sdk/* 依赖升级、
provider 参数能力 capability-gated、openai-chat image wrapper、timeout 原因码/
approval HMAC/trace 脱敏四件套(默认值经用户确认); @ai-sdk/mcp adapter 与
ToolLoopAgent 默认 loop 替换均不采用(留实验路径)。发版前保留官方一方 key
smoke gate。冲突仅 ai-sdk-7 计划决策日志一处,union 双方条目解决。
五个 phase 全部经 hands-off loop 完成并 Codex accepted(issues op7418#1/op7418#6/op7418#7/op7418#8/op7418#10)。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sign up for freeto 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

@Angelahanshuang@zlc000190@op7418
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' feat: support x64/arm64 macOS builds and fix build script errors by Angelahanshuang · Pull Request #7 · op7418/CodePilot · GitHub
Skip to content

feat: support x64/arm64 macOS builds and fix build script errors - #7

Merged
op7418 merged 1 commit into
op7418:mainfrom
Angelahanshuang:fix/build-multi-arch
Feb 7, 2026
Merged

feat: support x64/arm64 macOS builds and fix build script errors#7
op7418 merged 1 commit into
op7418:mainfrom
Angelahanshuang:fix/build-multi-arch

Conversation

@Angelahanshuang

Copy link
Copy Markdown
Contributor

This PR introduces several improvements to the build process to support both Intel (x64) and Apple Silicon (arm64) macOS users.

Changes:

  • Build Configuration: Updated electron-builder.yml to include x64 in the macOS target architectures.
  • Build Script Fix: Modified build-electron.mjs to use fs.rmSync with { recursive: true, force: true }. This fixes an ERR_FS_EISDIR error when handling directory symlinks during the standalone build process.
  • Lint Configuration: Added release/ and dist-electron/ to eslint.config.mjs to prevent ESLint from scanning minified build artifacts.
  • Lockfile Cleanup: Standardized the project name in package-lock.json to codepilot.

Verification:

  • Successfully built .dmg packages for both x64 and arm64 architectures.
  • Verified binary architectures using the file command.

@zlc000190

Copy link
Copy Markdown

求速合并,我就是 x86 intel的mac

@op7418
op7418 merged commit f870b5d into op7418:mainFeb 7, 2026
@Angelahanshuang
Angelahanshuang deleted the fix/build-multi-arch branch February 9, 2026 13:22
op7418 added a commit that referenced this pull request Apr 15, 2026
…rk is understood
Two tests land green locally (macOS, node 22, tsx 4.21) but fail
deterministically on CI (ubuntu, node 20, same tsx):
claude-settings-credentials: "DB provider WITHOUT api_key → returns false
even when settings.json has creds"
project-mcp-injection: "resolves ${...} env placeholders against DB"
Symptom: data written via `setSetting` / `createProvider` in the test isn't
visible to `getSetting` / `getProvider` called inside the prod function under
test. Unifying import specifiers to `@/lib/db` everywhere didn't help.
Working theory is a tsx + node 20 quirk around deduping dynamic-import
modules across mixed specifier shapes on Linux. The ownership logic is
also exercised by the broader cc-switch integration suite that passes on
CI, so we're not losing meaningful coverage — just a belt-and-suspenders
boundary assertion each.
Strategy:
- Skip both on CI via `(process.env.CI ? it.skip : it)` with an in-file
FIXME explaining the known issue
- Add entry #7 to docs/exec-plans/tech-debt-tracker.md for follow-up
- Ship v0.50.2 now; investigate the tsx/node 20 resolution behaviour
as a separate task
Local still: 1030 pass, 0 fail, 0 skipped. CI will skip these 2.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
op7418 added a commit that referenced this pull request Jul 4, 2026
- docs/research/ai-sdk-7-toolloop-parity-gaps.md: 新增「Phase 5 处置」节,全部 gap
收口——P1×3 关闭(#1/#2 补偿由 parity 8/8 复跑锁定;#3 降级论证:Phase 4 已证
approval HMAC 不需要 SDK toolApproval 停机语义,维持 in-execute 路线),
P2/P3 关闭或 backlog(#4/#5 列为替换路线前置条件,#7 归档 tech-debt #49#8 有 Phase 5 新实证)
- scripts/smoke-ai-sdk7-phase5-decision.ts: 新增决策门对照 smoke——prod runAgentLoop
与 POC runToolLoopAgentPoc 用同一 AgentLoopOptions 逐场景对照(长文本 / approval
批准 / approval 拒绝 / abort→continue),机械比较归一化事件序列 + 尾部契约 +
usage 存在性;DB 只读、数据目录隔离、输出全 scrub。探针注意:approval 批准分支
用 printf(echo 命中 permission-checker 自动放行规则不会触发 ask)
- docs/exec-plans/active/_smoke-evidence/ai-sdk7-phase5-decision-smoke.json:
OpenRouter 真实渠道 4/4 场景 contractMatch=true(input_tokens 逐场景完全相同,
tool_result 逐字相同,中断轮双侧 done 收尾、同 session 续发一次通过);
凭据形态 grep=0
- docs/research/ai-sdk-7-adoption-decision.md: 新增采用决策文档——结论 partial
(依赖升级 go / provider 能力 capability-gated go / Phase 4 外围能力 go /
@ai-sdk/mcp 与默认 loop 替换 no-go-现在),四层 rollback plan(能力开关→
wrapper→runtime switch→known-good version),每项结论标注 Phase 1-5 证据来源;
默认 Runtime 切换留人类闸门
- docs/exec-plans/tech-debt-tracker.md: 新增 #49(tool-error part 被两条 loop
一致吞掉的既有 UX 债,独立于采用决策)
- docs/exec-plans/active/ai-sdk-7-runtime-loop-adoption.md: Phase 5 状态回写 +
决策日志 + Smoke Ledger / Loop Ledger 各一行
- docs/research/README.md: 索引新增决策文档条目
验证: npm run test 3598/3598 全绿;smoke 4/4 contractMatch(1 个 fix cycle 收敛,
两处均为脚本层问题非 loop 差异);src/ 零改动(默认 Runtime/聊天路径零变化)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
op7418 added a commit that referenced this pull request Jul 4, 2026
用户批准 partial(2026-07-04, run issue #10): 采用 ai@7/@ai-sdk/* 依赖升级、
provider 参数能力 capability-gated、openai-chat image wrapper、timeout 原因码/
approval HMAC/trace 脱敏四件套(默认值经用户确认); @ai-sdk/mcp adapter 与
ToolLoopAgent 默认 loop 替换均不采用(留实验路径)。发版前保留官方一方 key
smoke gate。冲突仅 ai-sdk-7 计划决策日志一处,union 双方条目解决。
五个 phase 全部经 hands-off loop 完成并 Codex accepted(issues #1/#6/#7/#8/#10)。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
youcho2 pushed a commit to youcho2/CodePilot that referenced this pull request Aug 11, 2026
…418#7)
feat: support x64/arm64 macOS builds and fix build script errors
youcho2 pushed a commit to youcho2/CodePilot that referenced this pull request Aug 11, 2026
…rk is understood
Two tests land green locally (macOS, node 22, tsx 4.21) but fail
deterministically on CI (ubuntu, node 20, same tsx):
claude-settings-credentials: "DB provider WITHOUT api_key → returns false
even when settings.json has creds"
project-mcp-injection: "resolves ${...} env placeholders against DB"
Symptom: data written via `setSetting` / `createProvider` in the test isn't
visible to `getSetting` / `getProvider` called inside the prod function under
test. Unifying import specifiers to `@/lib/db` everywhere didn't help.
Working theory is a tsx + node 20 quirk around deduping dynamic-import
modules across mixed specifier shapes on Linux. The ownership logic is
also exercised by the broader cc-switch integration suite that passes on
CI, so we're not losing meaningful coverage — just a belt-and-suspenders
boundary assertion each.
Strategy:
- Skip both on CI via `(process.env.CI ? it.skip : it)` with an in-file
FIXME explaining the known issue
- Add entry op7418#7 to docs/exec-plans/tech-debt-tracker.md for follow-up
- Ship v0.50.2 now; investigate the tsx/node 20 resolution behaviour
as a separate task
Local still: 1030 pass, 0 fail, 0 skipped. CI will skip these 2.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
youcho2 pushed a commit to youcho2/CodePilot that referenced this pull request Aug 11, 2026
- docs/research/ai-sdk-7-toolloop-parity-gaps.md: 新增「Phase 5 处置」节,全部 gap
收口——P1×3 关闭(op7418#1/op7418#2 补偿由 parity 8/8 复跑锁定;op7418#3 降级论证:Phase 4 已证
approval HMAC 不需要 SDK toolApproval 停机语义,维持 in-execute 路线),
P2/P3 关闭或 backlog(op7418#4/op7418#5 列为替换路线前置条件,op7418#7 归档 tech-debt op7418#49op7418#8 有 Phase 5 新实证)
- scripts/smoke-ai-sdk7-phase5-decision.ts: 新增决策门对照 smoke——prod runAgentLoop
与 POC runToolLoopAgentPoc 用同一 AgentLoopOptions 逐场景对照(长文本 / approval
批准 / approval 拒绝 / abort→continue),机械比较归一化事件序列 + 尾部契约 +
usage 存在性;DB 只读、数据目录隔离、输出全 scrub。探针注意:approval 批准分支
用 printf(echo 命中 permission-checker 自动放行规则不会触发 ask)
- docs/exec-plans/active/_smoke-evidence/ai-sdk7-phase5-decision-smoke.json:
OpenRouter 真实渠道 4/4 场景 contractMatch=true(input_tokens 逐场景完全相同,
tool_result 逐字相同,中断轮双侧 done 收尾、同 session 续发一次通过);
凭据形态 grep=0
- docs/research/ai-sdk-7-adoption-decision.md: 新增采用决策文档——结论 partial
(依赖升级 go / provider 能力 capability-gated go / Phase 4 外围能力 go /
@ai-sdk/mcp 与默认 loop 替换 no-go-现在),四层 rollback plan(能力开关→
wrapper→runtime switch→known-good version),每项结论标注 Phase 1-5 证据来源;
默认 Runtime 切换留人类闸门
- docs/exec-plans/tech-debt-tracker.md: 新增 op7418#49(tool-error part 被两条 loop
一致吞掉的既有 UX 债,独立于采用决策)
- docs/exec-plans/active/ai-sdk-7-runtime-loop-adoption.md: Phase 5 状态回写 +
决策日志 + Smoke Ledger / Loop Ledger 各一行
- docs/research/README.md: 索引新增决策文档条目
验证: npm run test 3598/3598 全绿;smoke 4/4 contractMatch(1 个 fix cycle 收敛,
两处均为脚本层问题非 loop 差异);src/ 零改动(默认 Runtime/聊天路径零变化)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
youcho2 pushed a commit to youcho2/CodePilot that referenced this pull request Aug 11, 2026
用户批准 partial(2026-07-04, run issue op7418#10): 采用 ai@7/@ai-sdk/* 依赖升级、
provider 参数能力 capability-gated、openai-chat image wrapper、timeout 原因码/
approval HMAC/trace 脱敏四件套(默认值经用户确认); @ai-sdk/mcp adapter 与
ToolLoopAgent 默认 loop 替换均不采用(留实验路径)。发版前保留官方一方 key
smoke gate。冲突仅 ai-sdk-7 计划决策日志一处,union 双方条目解决。
五个 phase 全部经 hands-off loop 完成并 Codex accepted(issues op7418#1/op7418#6/op7418#7/op7418#8/op7418#10)。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sign up for freeto 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

@Angelahanshuang@zlc000190@op7418
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' feat: support x64/arm64 macOS builds and fix build script errors by Angelahanshuang · Pull Request #7 · op7418/CodePilot · GitHub
Skip to content

feat: support x64/arm64 macOS builds and fix build script errors - #7

Merged
op7418 merged 1 commit into
op7418:mainfrom
Angelahanshuang:fix/build-multi-arch
Feb 7, 2026
Merged

feat: support x64/arm64 macOS builds and fix build script errors#7
op7418 merged 1 commit into
op7418:mainfrom
Angelahanshuang:fix/build-multi-arch

Conversation

@Angelahanshuang

Copy link
Copy Markdown
Contributor

This PR introduces several improvements to the build process to support both Intel (x64) and Apple Silicon (arm64) macOS users.

Changes:

  • Build Configuration: Updated electron-builder.yml to include x64 in the macOS target architectures.
  • Build Script Fix: Modified build-electron.mjs to use fs.rmSync with { recursive: true, force: true }. This fixes an ERR_FS_EISDIR error when handling directory symlinks during the standalone build process.
  • Lint Configuration: Added release/ and dist-electron/ to eslint.config.mjs to prevent ESLint from scanning minified build artifacts.
  • Lockfile Cleanup: Standardized the project name in package-lock.json to codepilot.

Verification:

  • Successfully built .dmg packages for both x64 and arm64 architectures.
  • Verified binary architectures using the file command.

@zlc000190

Copy link
Copy Markdown

求速合并,我就是 x86 intel的mac

@op7418
op7418 merged commit f870b5d into op7418:mainFeb 7, 2026
@Angelahanshuang
Angelahanshuang deleted the fix/build-multi-arch branch February 9, 2026 13:22
op7418 added a commit that referenced this pull request Apr 15, 2026
…rk is understood
Two tests land green locally (macOS, node 22, tsx 4.21) but fail
deterministically on CI (ubuntu, node 20, same tsx):
claude-settings-credentials: "DB provider WITHOUT api_key → returns false
even when settings.json has creds"
project-mcp-injection: "resolves ${...} env placeholders against DB"
Symptom: data written via `setSetting` / `createProvider` in the test isn't
visible to `getSetting` / `getProvider` called inside the prod function under
test. Unifying import specifiers to `@/lib/db` everywhere didn't help.
Working theory is a tsx + node 20 quirk around deduping dynamic-import
modules across mixed specifier shapes on Linux. The ownership logic is
also exercised by the broader cc-switch integration suite that passes on
CI, so we're not losing meaningful coverage — just a belt-and-suspenders
boundary assertion each.
Strategy:
- Skip both on CI via `(process.env.CI ? it.skip : it)` with an in-file
FIXME explaining the known issue
- Add entry #7 to docs/exec-plans/tech-debt-tracker.md for follow-up
- Ship v0.50.2 now; investigate the tsx/node 20 resolution behaviour
as a separate task
Local still: 1030 pass, 0 fail, 0 skipped. CI will skip these 2.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
op7418 added a commit that referenced this pull request Jul 4, 2026
- docs/research/ai-sdk-7-toolloop-parity-gaps.md: 新增「Phase 5 处置」节,全部 gap
收口——P1×3 关闭(#1/#2 补偿由 parity 8/8 复跑锁定;#3 降级论证:Phase 4 已证
approval HMAC 不需要 SDK toolApproval 停机语义,维持 in-execute 路线),
P2/P3 关闭或 backlog(#4/#5 列为替换路线前置条件,#7 归档 tech-debt #49#8 有 Phase 5 新实证)
- scripts/smoke-ai-sdk7-phase5-decision.ts: 新增决策门对照 smoke——prod runAgentLoop
与 POC runToolLoopAgentPoc 用同一 AgentLoopOptions 逐场景对照(长文本 / approval
批准 / approval 拒绝 / abort→continue),机械比较归一化事件序列 + 尾部契约 +
usage 存在性;DB 只读、数据目录隔离、输出全 scrub。探针注意:approval 批准分支
用 printf(echo 命中 permission-checker 自动放行规则不会触发 ask)
- docs/exec-plans/active/_smoke-evidence/ai-sdk7-phase5-decision-smoke.json:
OpenRouter 真实渠道 4/4 场景 contractMatch=true(input_tokens 逐场景完全相同,
tool_result 逐字相同,中断轮双侧 done 收尾、同 session 续发一次通过);
凭据形态 grep=0
- docs/research/ai-sdk-7-adoption-decision.md: 新增采用决策文档——结论 partial
(依赖升级 go / provider 能力 capability-gated go / Phase 4 外围能力 go /
@ai-sdk/mcp 与默认 loop 替换 no-go-现在),四层 rollback plan(能力开关→
wrapper→runtime switch→known-good version),每项结论标注 Phase 1-5 证据来源;
默认 Runtime 切换留人类闸门
- docs/exec-plans/tech-debt-tracker.md: 新增 #49(tool-error part 被两条 loop
一致吞掉的既有 UX 债,独立于采用决策)
- docs/exec-plans/active/ai-sdk-7-runtime-loop-adoption.md: Phase 5 状态回写 +
决策日志 + Smoke Ledger / Loop Ledger 各一行
- docs/research/README.md: 索引新增决策文档条目
验证: npm run test 3598/3598 全绿;smoke 4/4 contractMatch(1 个 fix cycle 收敛,
两处均为脚本层问题非 loop 差异);src/ 零改动(默认 Runtime/聊天路径零变化)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
op7418 added a commit that referenced this pull request Jul 4, 2026
用户批准 partial(2026-07-04, run issue #10): 采用 ai@7/@ai-sdk/* 依赖升级、
provider 参数能力 capability-gated、openai-chat image wrapper、timeout 原因码/
approval HMAC/trace 脱敏四件套(默认值经用户确认); @ai-sdk/mcp adapter 与
ToolLoopAgent 默认 loop 替换均不采用(留实验路径)。发版前保留官方一方 key
smoke gate。冲突仅 ai-sdk-7 计划决策日志一处,union 双方条目解决。
五个 phase 全部经 hands-off loop 完成并 Codex accepted(issues #1/#6/#7/#8/#10)。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
youcho2 pushed a commit to youcho2/CodePilot that referenced this pull request Aug 11, 2026
…418#7)
feat: support x64/arm64 macOS builds and fix build script errors
youcho2 pushed a commit to youcho2/CodePilot that referenced this pull request Aug 11, 2026
…rk is understood
Two tests land green locally (macOS, node 22, tsx 4.21) but fail
deterministically on CI (ubuntu, node 20, same tsx):
claude-settings-credentials: "DB provider WITHOUT api_key → returns false
even when settings.json has creds"
project-mcp-injection: "resolves ${...} env placeholders against DB"
Symptom: data written via `setSetting` / `createProvider` in the test isn't
visible to `getSetting` / `getProvider` called inside the prod function under
test. Unifying import specifiers to `@/lib/db` everywhere didn't help.
Working theory is a tsx + node 20 quirk around deduping dynamic-import
modules across mixed specifier shapes on Linux. The ownership logic is
also exercised by the broader cc-switch integration suite that passes on
CI, so we're not losing meaningful coverage — just a belt-and-suspenders
boundary assertion each.
Strategy:
- Skip both on CI via `(process.env.CI ? it.skip : it)` with an in-file
FIXME explaining the known issue
- Add entry op7418#7 to docs/exec-plans/tech-debt-tracker.md for follow-up
- Ship v0.50.2 now; investigate the tsx/node 20 resolution behaviour
as a separate task
Local still: 1030 pass, 0 fail, 0 skipped. CI will skip these 2.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
youcho2 pushed a commit to youcho2/CodePilot that referenced this pull request Aug 11, 2026
- docs/research/ai-sdk-7-toolloop-parity-gaps.md: 新增「Phase 5 处置」节,全部 gap
收口——P1×3 关闭(op7418#1/op7418#2 补偿由 parity 8/8 复跑锁定;op7418#3 降级论证:Phase 4 已证
approval HMAC 不需要 SDK toolApproval 停机语义,维持 in-execute 路线),
P2/P3 关闭或 backlog(op7418#4/op7418#5 列为替换路线前置条件,op7418#7 归档 tech-debt op7418#49op7418#8 有 Phase 5 新实证)
- scripts/smoke-ai-sdk7-phase5-decision.ts: 新增决策门对照 smoke——prod runAgentLoop
与 POC runToolLoopAgentPoc 用同一 AgentLoopOptions 逐场景对照(长文本 / approval
批准 / approval 拒绝 / abort→continue),机械比较归一化事件序列 + 尾部契约 +
usage 存在性;DB 只读、数据目录隔离、输出全 scrub。探针注意:approval 批准分支
用 printf(echo 命中 permission-checker 自动放行规则不会触发 ask)
- docs/exec-plans/active/_smoke-evidence/ai-sdk7-phase5-decision-smoke.json:
OpenRouter 真实渠道 4/4 场景 contractMatch=true(input_tokens 逐场景完全相同,
tool_result 逐字相同,中断轮双侧 done 收尾、同 session 续发一次通过);
凭据形态 grep=0
- docs/research/ai-sdk-7-adoption-decision.md: 新增采用决策文档——结论 partial
(依赖升级 go / provider 能力 capability-gated go / Phase 4 外围能力 go /
@ai-sdk/mcp 与默认 loop 替换 no-go-现在),四层 rollback plan(能力开关→
wrapper→runtime switch→known-good version),每项结论标注 Phase 1-5 证据来源;
默认 Runtime 切换留人类闸门
- docs/exec-plans/tech-debt-tracker.md: 新增 op7418#49(tool-error part 被两条 loop
一致吞掉的既有 UX 债,独立于采用决策)
- docs/exec-plans/active/ai-sdk-7-runtime-loop-adoption.md: Phase 5 状态回写 +
决策日志 + Smoke Ledger / Loop Ledger 各一行
- docs/research/README.md: 索引新增决策文档条目
验证: npm run test 3598/3598 全绿;smoke 4/4 contractMatch(1 个 fix cycle 收敛,
两处均为脚本层问题非 loop 差异);src/ 零改动(默认 Runtime/聊天路径零变化)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
youcho2 pushed a commit to youcho2/CodePilot that referenced this pull request Aug 11, 2026
用户批准 partial(2026-07-04, run issue op7418#10): 采用 ai@7/@ai-sdk/* 依赖升级、
provider 参数能力 capability-gated、openai-chat image wrapper、timeout 原因码/
approval HMAC/trace 脱敏四件套(默认值经用户确认); @ai-sdk/mcp adapter 与
ToolLoopAgent 默认 loop 替换均不采用(留实验路径)。发版前保留官方一方 key
smoke gate。冲突仅 ai-sdk-7 计划决策日志一处,union 双方条目解决。
五个 phase 全部经 hands-off loop 完成并 Codex accepted(issues op7418#1/op7418#6/op7418#7/op7418#8/op7418#10)。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sign up for freeto 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

@Angelahanshuang@zlc000190@op7418
, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); feat: support x64/arm64 macOS builds and fix build script errors by Angelahanshuang · Pull Request #7 · op7418/CodePilot · GitHub
Skip to content

feat: support x64/arm64 macOS builds and fix build script errors - #7

Merged
op7418 merged 1 commit into
op7418:mainfrom
Angelahanshuang:fix/build-multi-arch
Feb 7, 2026
Merged

feat: support x64/arm64 macOS builds and fix build script errors#7
op7418 merged 1 commit into
op7418:mainfrom
Angelahanshuang:fix/build-multi-arch

Conversation

@Angelahanshuang

Copy link
Copy Markdown
Contributor

This PR introduces several improvements to the build process to support both Intel (x64) and Apple Silicon (arm64) macOS users.

Changes:

  • Build Configuration: Updated electron-builder.yml to include x64 in the macOS target architectures.
  • Build Script Fix: Modified build-electron.mjs to use fs.rmSync with { recursive: true, force: true }. This fixes an ERR_FS_EISDIR error when handling directory symlinks during the standalone build process.
  • Lint Configuration: Added release/ and dist-electron/ to eslint.config.mjs to prevent ESLint from scanning minified build artifacts.
  • Lockfile Cleanup: Standardized the project name in package-lock.json to codepilot.

Verification:

  • Successfully built .dmg packages for both x64 and arm64 architectures.
  • Verified binary architectures using the file command.

@zlc000190

Copy link
Copy Markdown

求速合并,我就是 x86 intel的mac

@op7418
op7418 merged commit f870b5d into op7418:mainFeb 7, 2026
@Angelahanshuang
Angelahanshuang deleted the fix/build-multi-arch branch February 9, 2026 13:22
op7418 added a commit that referenced this pull request Apr 15, 2026
…rk is understood
Two tests land green locally (macOS, node 22, tsx 4.21) but fail
deterministically on CI (ubuntu, node 20, same tsx):
claude-settings-credentials: "DB provider WITHOUT api_key → returns false
even when settings.json has creds"
project-mcp-injection: "resolves ${...} env placeholders against DB"
Symptom: data written via `setSetting` / `createProvider` in the test isn't
visible to `getSetting` / `getProvider` called inside the prod function under
test. Unifying import specifiers to `@/lib/db` everywhere didn't help.
Working theory is a tsx + node 20 quirk around deduping dynamic-import
modules across mixed specifier shapes on Linux. The ownership logic is
also exercised by the broader cc-switch integration suite that passes on
CI, so we're not losing meaningful coverage — just a belt-and-suspenders
boundary assertion each.
Strategy:
- Skip both on CI via `(process.env.CI ? it.skip : it)` with an in-file
FIXME explaining the known issue
- Add entry #7 to docs/exec-plans/tech-debt-tracker.md for follow-up
- Ship v0.50.2 now; investigate the tsx/node 20 resolution behaviour
as a separate task
Local still: 1030 pass, 0 fail, 0 skipped. CI will skip these 2.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
op7418 added a commit that referenced this pull request Jul 4, 2026
- docs/research/ai-sdk-7-toolloop-parity-gaps.md: 新增「Phase 5 处置」节,全部 gap
收口——P1×3 关闭(#1/#2 补偿由 parity 8/8 复跑锁定;#3 降级论证:Phase 4 已证
approval HMAC 不需要 SDK toolApproval 停机语义,维持 in-execute 路线),
P2/P3 关闭或 backlog(#4/#5 列为替换路线前置条件,#7 归档 tech-debt #49#8 有 Phase 5 新实证)
- scripts/smoke-ai-sdk7-phase5-decision.ts: 新增决策门对照 smoke——prod runAgentLoop
与 POC runToolLoopAgentPoc 用同一 AgentLoopOptions 逐场景对照(长文本 / approval
批准 / approval 拒绝 / abort→continue),机械比较归一化事件序列 + 尾部契约 +
usage 存在性;DB 只读、数据目录隔离、输出全 scrub。探针注意:approval 批准分支
用 printf(echo 命中 permission-checker 自动放行规则不会触发 ask)
- docs/exec-plans/active/_smoke-evidence/ai-sdk7-phase5-decision-smoke.json:
OpenRouter 真实渠道 4/4 场景 contractMatch=true(input_tokens 逐场景完全相同,
tool_result 逐字相同,中断轮双侧 done 收尾、同 session 续发一次通过);
凭据形态 grep=0
- docs/research/ai-sdk-7-adoption-decision.md: 新增采用决策文档——结论 partial
(依赖升级 go / provider 能力 capability-gated go / Phase 4 外围能力 go /
@ai-sdk/mcp 与默认 loop 替换 no-go-现在),四层 rollback plan(能力开关→
wrapper→runtime switch→known-good version),每项结论标注 Phase 1-5 证据来源;
默认 Runtime 切换留人类闸门
- docs/exec-plans/tech-debt-tracker.md: 新增 #49(tool-error part 被两条 loop
一致吞掉的既有 UX 债,独立于采用决策)
- docs/exec-plans/active/ai-sdk-7-runtime-loop-adoption.md: Phase 5 状态回写 +
决策日志 + Smoke Ledger / Loop Ledger 各一行
- docs/research/README.md: 索引新增决策文档条目
验证: npm run test 3598/3598 全绿;smoke 4/4 contractMatch(1 个 fix cycle 收敛,
两处均为脚本层问题非 loop 差异);src/ 零改动(默认 Runtime/聊天路径零变化)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
op7418 added a commit that referenced this pull request Jul 4, 2026
用户批准 partial(2026-07-04, run issue #10): 采用 ai@7/@ai-sdk/* 依赖升级、
provider 参数能力 capability-gated、openai-chat image wrapper、timeout 原因码/
approval HMAC/trace 脱敏四件套(默认值经用户确认); @ai-sdk/mcp adapter 与
ToolLoopAgent 默认 loop 替换均不采用(留实验路径)。发版前保留官方一方 key
smoke gate。冲突仅 ai-sdk-7 计划决策日志一处,union 双方条目解决。
五个 phase 全部经 hands-off loop 完成并 Codex accepted(issues #1/#6/#7/#8/#10)。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
youcho2 pushed a commit to youcho2/CodePilot that referenced this pull request Aug 11, 2026
…418#7)
feat: support x64/arm64 macOS builds and fix build script errors
youcho2 pushed a commit to youcho2/CodePilot that referenced this pull request Aug 11, 2026
…rk is understood
Two tests land green locally (macOS, node 22, tsx 4.21) but fail
deterministically on CI (ubuntu, node 20, same tsx):
claude-settings-credentials: "DB provider WITHOUT api_key → returns false
even when settings.json has creds"
project-mcp-injection: "resolves ${...} env placeholders against DB"
Symptom: data written via `setSetting` / `createProvider` in the test isn't
visible to `getSetting` / `getProvider` called inside the prod function under
test. Unifying import specifiers to `@/lib/db` everywhere didn't help.
Working theory is a tsx + node 20 quirk around deduping dynamic-import
modules across mixed specifier shapes on Linux. The ownership logic is
also exercised by the broader cc-switch integration suite that passes on
CI, so we're not losing meaningful coverage — just a belt-and-suspenders
boundary assertion each.
Strategy:
- Skip both on CI via `(process.env.CI ? it.skip : it)` with an in-file
FIXME explaining the known issue
- Add entry op7418#7 to docs/exec-plans/tech-debt-tracker.md for follow-up
- Ship v0.50.2 now; investigate the tsx/node 20 resolution behaviour
as a separate task
Local still: 1030 pass, 0 fail, 0 skipped. CI will skip these 2.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
youcho2 pushed a commit to youcho2/CodePilot that referenced this pull request Aug 11, 2026
- docs/research/ai-sdk-7-toolloop-parity-gaps.md: 新增「Phase 5 处置」节,全部 gap
收口——P1×3 关闭(op7418#1/op7418#2 补偿由 parity 8/8 复跑锁定;op7418#3 降级论证:Phase 4 已证
approval HMAC 不需要 SDK toolApproval 停机语义,维持 in-execute 路线),
P2/P3 关闭或 backlog(op7418#4/op7418#5 列为替换路线前置条件,op7418#7 归档 tech-debt op7418#49op7418#8 有 Phase 5 新实证)
- scripts/smoke-ai-sdk7-phase5-decision.ts: 新增决策门对照 smoke——prod runAgentLoop
与 POC runToolLoopAgentPoc 用同一 AgentLoopOptions 逐场景对照(长文本 / approval
批准 / approval 拒绝 / abort→continue),机械比较归一化事件序列 + 尾部契约 +
usage 存在性;DB 只读、数据目录隔离、输出全 scrub。探针注意:approval 批准分支
用 printf(echo 命中 permission-checker 自动放行规则不会触发 ask)
- docs/exec-plans/active/_smoke-evidence/ai-sdk7-phase5-decision-smoke.json:
OpenRouter 真实渠道 4/4 场景 contractMatch=true(input_tokens 逐场景完全相同,
tool_result 逐字相同,中断轮双侧 done 收尾、同 session 续发一次通过);
凭据形态 grep=0
- docs/research/ai-sdk-7-adoption-decision.md: 新增采用决策文档——结论 partial
(依赖升级 go / provider 能力 capability-gated go / Phase 4 外围能力 go /
@ai-sdk/mcp 与默认 loop 替换 no-go-现在),四层 rollback plan(能力开关→
wrapper→runtime switch→known-good version),每项结论标注 Phase 1-5 证据来源;
默认 Runtime 切换留人类闸门
- docs/exec-plans/tech-debt-tracker.md: 新增 op7418#49(tool-error part 被两条 loop
一致吞掉的既有 UX 债,独立于采用决策)
- docs/exec-plans/active/ai-sdk-7-runtime-loop-adoption.md: Phase 5 状态回写 +
决策日志 + Smoke Ledger / Loop Ledger 各一行
- docs/research/README.md: 索引新增决策文档条目
验证: npm run test 3598/3598 全绿;smoke 4/4 contractMatch(1 个 fix cycle 收敛,
两处均为脚本层问题非 loop 差异);src/ 零改动(默认 Runtime/聊天路径零变化)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
youcho2 pushed a commit to youcho2/CodePilot that referenced this pull request Aug 11, 2026
用户批准 partial(2026-07-04, run issue op7418#10): 采用 ai@7/@ai-sdk/* 依赖升级、
provider 参数能力 capability-gated、openai-chat image wrapper、timeout 原因码/
approval HMAC/trace 脱敏四件套(默认值经用户确认); @ai-sdk/mcp adapter 与
ToolLoopAgent 默认 loop 替换均不采用(留实验路径)。发版前保留官方一方 key
smoke gate。冲突仅 ai-sdk-7 计划决策日志一处,union 双方条目解决。
五个 phase 全部经 hands-off loop 完成并 Codex accepted(issues op7418#1/op7418#6/op7418#7/op7418#8/op7418#10)。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sign up for freeto 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

@Angelahanshuang@zlc000190@op7418