Skip to content

Commit e135185

Browse files
committed
Merge remote-tracking branch 'origin/main' into fix/openrouter-usage-accounting-fidelity
2 parents baf68eb + e2bb043 commit e135185

1,087 files changed

Lines changed: 83011 additions & 22973 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.agents/skills/openclaw-debugging/SKILL.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ debug signal rather than a guess.
1313

1414
- `docs/logging.md` for log files, `openclaw logs`, and targeted debug flags.
1515
- `docs/reference/test.md` for local test commands.
16-
- `docs/reference/code-mode.md` for code-mode exec/wait and tool catalog rules.
16+
- `docs/tools/code-mode.md` for code-mode exec/wait and tool catalog rules.
1717
- Use `$openclaw-testing` for choosing test lanes.
1818
- Use `$crabbox` for broad, Docker, package, Linux, live-key, or CI-parity proof.
1919

@@ -84,9 +84,9 @@ openclaw logs --follow
8484
- Guarded fetch/timing:
8585
`src/agents/provider-transport-fetch.ts`
8686
- OpenAI/Codex provider wrappers:
87-
`src/agents/pi-embedded-runner/openai-stream-wrappers.ts`
87+
`src/llm/providers/stream-wrappers/openai.ts`
8888
- Tool construction, Tool Search, code-mode activation:
89-
`src/agents/pi-embedded-runner/run/attempt.ts`
89+
`src/agents/embedded-agent-runner/run/attempt.ts`
9090
- Code-mode runtime and worker:
9191
`src/agents/code-mode.ts`
9292
`src/agents/code-mode.worker.ts`

.github/workflows/ci.yml

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ jobs:
104104
strict_control_ui_i18n: ${{ steps.changed_scope.outputs.strict_control_ui_i18n }}
105105
run_ui_tests: ${{ steps.manifest.outputs.run_ui_tests }}
106106
run_native_i18n: ${{ steps.manifest.outputs.run_native_i18n }}
107+
strict_native_i18n: ${{ github.event_name == 'workflow_dispatch' && 'true' || steps.changed_scope.outputs.strict_native_i18n }}
107108
run_checks_windows: ${{ steps.manifest.outputs.run_checks_windows }}
108109
checks_windows_matrix: ${{ steps.manifest.outputs.checks_windows_matrix }}
109110
run_macos_node: ${{ steps.manifest.outputs.run_macos_node }}
@@ -1275,14 +1276,25 @@ jobs:
12751276
sticky-disk: ${{ github.event_name != 'workflow_dispatch' && github.repository == 'openclaw/openclaw' && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'openclaw/openclaw') && 'true' || 'false' }}
12761277
use-actions-cache: ${{ github.event_name != 'workflow_dispatch' && github.repository == 'openclaw/openclaw' && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'openclaw/openclaw') && 'false' || 'true' }}
12771278

1278-
- name: Check native app i18n inventory
1279-
run: pnpm native:i18n:check
1280-
1281-
- name: Check Android app i18n resources
1282-
run: pnpm android:i18n:check
1279+
- name: Verify native app i18n source
1280+
run: |
1281+
if node -e 'const scripts = require("./package.json").scripts ?? {}; process.exit(scripts["native:i18n:verify"] ? 0 : 1)'; then
1282+
pnpm native:i18n:verify
1283+
else
1284+
# Historical release targets predate the source/generated split.
1285+
pnpm native:i18n:check
1286+
pnpm android:i18n:check
1287+
pnpm apple:i18n:check
1288+
fi
12831289
1284-
- name: Check Apple app i18n catalogs
1285-
run: pnpm apple:i18n:check
1290+
- name: Check native app generated locale parity
1291+
if: ${{ needs.preflight.outputs.strict_native_i18n == 'true' }}
1292+
run: |
1293+
if node -e 'const scripts = require("./package.json").scripts ?? {}; process.exit(scripts["native:i18n:verify"] ? 0 : 1)'; then
1294+
pnpm native:i18n:check
1295+
else
1296+
echo "Historical target was validated by the legacy native checks."
1297+
fi
12861298
12871299
checks-ui:
12881300
permissions:
@@ -1329,7 +1341,9 @@ jobs:
13291341
# Do not retry whole files: several rely on one-shot mocked browser globals.
13301342
pnpm --dir ui test --testTimeout=30000 --isolate
13311343
else
1332-
pnpm --dir ui test
1344+
# Three workers deliberately exercise stable non-default file packing so
1345+
# isolate:false mock-registry leaks fail close to the introducing change.
1346+
pnpm --dir ui test --maxWorkers 3
13331347
fi
13341348
13351349
control-ui-i18n:

.github/workflows/native-app-locale-refresh.yml

Lines changed: 27 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -72,12 +72,33 @@ jobs:
7272
submodules: false
7373

7474
- name: Create generated PR tokens
75+
id: tokens
7576
uses: ./.github/actions/create-generated-pr-tokens
7677
with:
7778
contents-client-id: Iv23liOECG0slfuhz093
7879
contents-private-key: ${{ secrets.CLAWSWEEPER_APP_PRIVATE_KEY }}
7980
pull-request-client-id: Iv23liPJCozR0uHm6P7G
8081
pull-request-private-key: ${{ secrets.MANTIS_GITHUB_APP_PRIVATE_KEY }}
82+
pull-request-contents-permission: write
83+
84+
- name: Verify repository auto-merge setting
85+
env:
86+
GH_TOKEN: ${{ steps.tokens.outputs.pull-request-token }}
87+
REPOSITORY_NAME: ${{ github.event.repository.name }}
88+
REPOSITORY_OWNER: ${{ github.repository_owner }}
89+
run: |
90+
set -euo pipefail
91+
auto_merge_allowed="$(
92+
gh api graphql \
93+
-f query='query($owner: String!, $name: String!) { repository(owner: $owner, name: $name) { autoMergeAllowed } }' \
94+
-f owner="${REPOSITORY_OWNER}" \
95+
-f name="${REPOSITORY_NAME}" \
96+
--jq '.data.repository.autoMergeAllowed'
97+
)"
98+
if [[ "${auto_merge_allowed}" != "true" ]]; then
99+
echo "Repository auto-merge must be enabled before generated locale publication." >&2
100+
exit 1
101+
fi
81102
82103
refresh:
83104
needs: [resolve-base, publisher-preflight]
@@ -261,22 +282,13 @@ jobs:
261282
with:
262283
install-bun: "false"
263284

264-
# Every worker observes the same source inventory. Generate it once here
265-
# so locale patches remain independent and can be applied sequentially.
266-
- name: Refresh shared native inventory
285+
# Source PRs own the stable-ID inventory. Locale workers only contribute
286+
# translations; derive every platform artifact once after combining them.
287+
- name: Refresh native generated artifacts
267288
run: node --import tsx scripts/native-app-i18n.ts sync --write
268289

269-
- name: Refresh Android native resources
270-
run: node --import tsx scripts/android-app-i18n.ts sync
271-
272-
- name: Refresh Apple native resources
273-
run: node --import tsx scripts/apple-app-i18n.ts sync-ios --write
274-
275290
- name: Validate native locale refresh
276-
run: |
277-
node --import tsx scripts/native-app-i18n.ts check
278-
node --import tsx scripts/android-app-i18n.ts check
279-
node --import tsx scripts/apple-app-i18n.ts check
291+
run: node --import tsx scripts/native-app-i18n.ts check
280292

281293
- name: Open or update generated locale PR
282294
uses: ./.github/actions/publish-generated-pr
@@ -289,9 +301,9 @@ jobs:
289301
head-branch: automation/native-app-locale-refresh
290302
commit-message: "chore(i18n): refresh native locales"
291303
pr-title: "chore(i18n): refresh native locales"
304+
auto-merge: "true"
292305
generated-paths: |
293306
apps/.i18n/native
294-
apps/.i18n/native-source.json
295307
apps/.i18n/apple-translation-contradictions.json
296308
apps/android/app/src/main/java/ai/openclaw/app/i18n/NativeStringResources.kt
297309
apps/android/app/src/main/res/values*/assistant.xml
@@ -302,6 +314,7 @@ jobs:
302314
apps/ios/ShareExtension/*.lproj/InfoPlist.strings
303315
apps/ios/ActivityWidget/*.lproj/InfoPlist.strings
304316
invalidation-paths: |
317+
apps/.i18n/native-source.json
305318
apps/android/app/src/main
306319
apps/ios
307320
apps/macos/Sources
@@ -332,5 +345,3 @@ jobs:
332345
333346
- [Locale refresh run](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }})
334347
- `node --import tsx scripts/native-app-i18n.ts check`
335-
- `node --import tsx scripts/android-app-i18n.ts check`
336-
- `node --import tsx scripts/apple-app-i18n.ts check`

0 commit comments

Comments
 (0)