Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
547 commits
Select commit Hold shift + click to select a range
6f0fef8
Merge pull request #196 from KooshaPari/codescan-hotfix-main
KooshaPari Feb 23, 2026
6767e6a
ci(codeql): upgrade github codeql action from v3 to v4
KooshaPari Feb 23, 2026
ff48e88
chore: add logs to gitignore
KooshaPari Feb 23, 2026
3cb374b
chore: clean up logs
KooshaPari Feb 23, 2026
fdc3125
chore: executor auth fixes
KooshaPari Feb 23, 2026
33a6a3d
chore: executor and translator updates
KooshaPari Feb 23, 2026
4ce4371
merge: reconcile wip/recover-all-20260223-033409 with origin/main
KooshaPari Feb 23, 2026
c0ed1f4
fix(ci): add git config to release-batch workflow
KooshaPari Feb 23, 2026
0e6114b
fix(management): tolerate read-only config writes for put yaml (#201)
KooshaPari Feb 23, 2026
96574c8
feat(amp): support kilocode provider alias model routing (#213)
KooshaPari Feb 23, 2026
b41c629
fix(gemini): strip thought_signature from Claude tool args (#178)
KooshaPari Feb 23, 2026
7c1496b
fix(kiro): add IDC extension headers on refresh token requests (#246)
KooshaPari Feb 23, 2026
28f4391
fix(kiro): remove duplicate IDC refresh grantType field for cline (#245)
KooshaPari Feb 22, 2026
874c1d8
fix(metrics): include kiro and cursor in provider dashboard metrics (…
KooshaPari Feb 23, 2026
c3401ad
fix(kiro): add IDC extension headers on refresh token requests (#246)
KooshaPari Feb 23, 2026
abbd6b7
fix(kiro): remove duplicate IDC refresh grantType field for cline (#245)
KooshaPari Feb 22, 2026
b527f5b
feat(amp): support kilocode provider alias model routing (#213)
KooshaPari Feb 23, 2026
3a1067c
fix(management): tolerate read-only config writes for put yaml (#201)
KooshaPari Feb 23, 2026
8ac9f65
fix(metrics): include kiro and cursor in provider dashboard metrics (…
KooshaPari Feb 23, 2026
5de4437
fix(gemini): strip thought_signature from Claude tool args (#178)
KooshaPari Feb 23, 2026
158efa8
wave77: cliproxy lanes a-c next-30 fixes + targeted tests
KooshaPari Feb 23, 2026
cdce419
fix(management): resolve auth registration redeclare and log next32 w…
KooshaPari Feb 23, 2026
db8c8d9
Merge pull request #197 from KooshaPari/nextwave/merge-20260223
KooshaPari Feb 23, 2026
d536ed9
feat: add routing select handler, oauth token manager, pareto router,…
KooshaPari Feb 23, 2026
3d6fd43
Merge remote-tracking branch 'origin/main' into wip/recover-all-20260…
KooshaPari Feb 23, 2026
51653a4
merge: refresh branch with latest origin/main for PR merge
KooshaPari Feb 23, 2026
8da6fa5
Merge pull request #198 from KooshaPari/wip/recover-all-20260223-033409
KooshaPari Feb 23, 2026
33da0c2
fix(kiro): handle banned account 403 payloads (#221)
KooshaPari Feb 23, 2026
d2406f2
fix(#253): support endpoint override for provider-pinned codex models
KooshaPari Feb 23, 2026
2fda8f1
fix(registry): enforce copilot context length 128K at registration (#…
KooshaPari Feb 23, 2026
8f72c7c
ci: trigger pr-test-build rerun
KooshaPari Feb 23, 2026
d3bc5ab
fix(#200): honor Gemini quota reset durations for cooldown
KooshaPari Feb 23, 2026
be5c5ea
fix(#179): honor openai-compat models-endpoint overrides
KooshaPari Feb 23, 2026
ba1fa0d
fix(kiro): broaden cmd alias handling for command tools (#210)
KooshaPari Feb 23, 2026
5accbac
fix(#253): support endpoint override for provider-pinned codex models
KooshaPari Feb 23, 2026
760fe33
fix(registry): enforce copilot context length 128K at registration (#…
KooshaPari Feb 23, 2026
761478a
fix(kiro): handle banned account 403 payloads (#221)
KooshaPari Feb 23, 2026
cdbcd68
fix(kiro): broaden cmd alias handling for command tools (#210)
KooshaPari Feb 23, 2026
439628a
fix(#200): honor Gemini quota reset durations for cooldown
KooshaPari Feb 23, 2026
e62d90b
fix(#179): honor openai-compat models-endpoint overrides
KooshaPari Feb 23, 2026
3d362db
docs: add wave2 next32 merge mapping and validation report
KooshaPari Feb 23, 2026
c23a140
Merge pull request #200 from KooshaPari/nextwave2/merge-20260223
KooshaPari Feb 23, 2026
638afec
chore: commit all pending branch items and CI workflow fix
KooshaPari Feb 23, 2026
f2b62d5
docs: add changelog system process and check task
KooshaPari Feb 23, 2026
abba4ba
Merge remote-tracking branch 'origin/codescan-b1-l1'
KooshaPari Feb 23, 2026
25db34a
Merge remote-tracking branch 'origin/codescan-b1-l2'
KooshaPari Feb 23, 2026
bc68460
Merge remote-tracking branch 'origin/codescan-b1-l3'
KooshaPari Feb 23, 2026
e4631f2
Merge remote-tracking branch 'origin/codescan-b1-l4'
KooshaPari Feb 23, 2026
ef6ff97
Merge remote-tracking branch 'origin/codescan-b1-l5'
KooshaPari Feb 23, 2026
d2dcbc9
Merge remote-tracking branch 'origin/codescan-b1-l6'
KooshaPari Feb 23, 2026
4943c13
Merge remote-tracking branch 'origin/codescan-b2-l1'
KooshaPari Feb 23, 2026
e6c3e41
Merge remote-tracking branch 'origin/codescan-b2-l2'
KooshaPari Feb 23, 2026
8a2972b
Merge remote-tracking branch 'origin/codescan-b2-l3'
KooshaPari Feb 23, 2026
d61ad25
Merge remote-tracking branch 'origin/codescan-b2-l4'
KooshaPari Feb 23, 2026
76c830b
Merge remote-tracking branch 'origin/codescan-b2-l5'
KooshaPari Feb 23, 2026
2ea2ba5
Merge remote-tracking branch 'origin/codescan-b2-l6'
KooshaPari Feb 23, 2026
1e50842
Merge remote-tracking branch 'origin/codescan-b3-l1'
KooshaPari Feb 23, 2026
a0b797e
Merge remote-tracking branch 'origin/codescan-b3-l2'
KooshaPari Feb 23, 2026
286559e
Merge remote-tracking branch 'origin/codescan-b3-l3'
KooshaPari Feb 23, 2026
6f39ac0
Merge remote-tracking branch 'origin/codescan-b3-l4'
KooshaPari Feb 23, 2026
0342d68
Merge remote-tracking branch 'origin/codescan-b3-l5'
KooshaPari Feb 23, 2026
2dc0d83
Merge remote-tracking branch 'origin/codescan-b3-l6'
KooshaPari Feb 23, 2026
4d394fa
Merge remote-tracking branch 'origin/codescan-hotfix-main'
KooshaPari Feb 23, 2026
6047636
Merge remote-tracking branch 'origin/main'
KooshaPari Feb 23, 2026
63fb63b
Merge remote-tracking branch 'origin/wip/ci-rerun-20260222-212333'
KooshaPari Feb 23, 2026
8e369ce
docs: add changelog process and setup style guidance
KooshaPari Feb 23, 2026
7079118
docs: replace marketing language with concise technical wording
KooshaPari Feb 23, 2026
f0e0add
docs: replace marketing language with concise technical wording
KooshaPari Feb 23, 2026
4863fbd
Merge pull request #202 from KooshaPari/docstyle/technical-wording-20…
KooshaPari Feb 23, 2026
16fc115
docs(i18n): add _FA parity files for _CN docs
KooshaPari Feb 23, 2026
db1a890
Merge branch 'align/dev-local-changes'
KooshaPari Feb 23, 2026
38b0594
Merge branch 'codex/cliproxyctl-wave1'
KooshaPari Feb 23, 2026
a92faf1
Merge branch 'docstyle/technical-wording-20260223'
KooshaPari Feb 23, 2026
0b10213
Merge branch 'fix/release-batch-git-config'
KooshaPari Feb 23, 2026
6dbbbfd
Merge branch 'nextwave/lane-1-20260223'
KooshaPari Feb 23, 2026
00e9d8c
Merge branch 'nextwave/lane-2-20260223'
KooshaPari Feb 23, 2026
a183096
Merge branch 'nextwave/lane-3-20260223'
KooshaPari Feb 23, 2026
35b0bc6
Merge branch 'nextwave/lane-4-20260223'
KooshaPari Feb 23, 2026
757f081
Merge branch 'nextwave/lane-5-20260223'
KooshaPari Feb 23, 2026
186255c
Merge branch 'nextwave/lane-6-20260223'
KooshaPari Feb 23, 2026
7d4efed
Merge branch 'nextwave2/lane-1-20260223'
KooshaPari Feb 23, 2026
ac75a08
Merge branch 'nextwave2/lane-2-20260223'
KooshaPari Feb 23, 2026
ac72480
Merge branch 'nextwave2/lane-3-20260223'
KooshaPari Feb 23, 2026
2b22dd7
Merge branch 'nextwave2/lane-4-20260223'
KooshaPari Feb 23, 2026
02dd551
Merge branch 'nextwave2/lane-5-20260223'
KooshaPari Feb 23, 2026
42242fd
Merge branch 'nextwave2/lane-6-20260223'
KooshaPari Feb 23, 2026
b7735e9
merge(heliosharness): port reasoning mapping, response echo fixes, an…
KooshaPari Feb 23, 2026
8592c50
Merge pull request #203 from KooshaPari/merge/heliosharness-fa-parity…
KooshaPari Feb 23, 2026
520c6ab
fix: resolve executor compile errors in kiro/codex flows
KooshaPari Feb 23, 2026
34fcc1d
fix: resolve merge regressions and restore build
KooshaPari Feb 23, 2026
512d6ee
fix: resolve executor compile regressions
KooshaPari Feb 23, 2026
efe74bd
docs(planning): queue next 50 CP2K work items
KooshaPari Feb 23, 2026
043a4f0
docs(planning): execute wave1 of next-50 CP2K items
KooshaPari Feb 23, 2026
c8d5c96
Merge pull request #205 from KooshaPari/ci-compile-fix-clean
KooshaPari Feb 23, 2026
4c4e4f9
Create dependabot.yml
KooshaPari Feb 23, 2026
6cb80a8
docs(planning): queue next 50 CP2K work items
KooshaPari Feb 23, 2026
8a847f9
wave79: lanes a-c stream/image handling + gemini cli normalization
KooshaPari Feb 23, 2026
9f24969
docs(planning): execute wave2 of next-50 CP2K items
KooshaPari Feb 23, 2026
5e08422
Merge pull request #206 from KooshaPari/merge/remaining-branch-deltas…
KooshaPari Feb 23, 2026
96e0424
fix(auth): repair kiro/claude build issues and include lane-3 conflic…
KooshaPari Feb 23, 2026
dae919e
docs(planning): execute wave3 of next-50 CP2K items
KooshaPari Feb 23, 2026
811f1d1
governance: harden parity checks and fix smoke test arg handling
KooshaPari Feb 23, 2026
a0ba941
gh-next32: finalize C3 status/docs and arm64 docker path
KooshaPari Feb 23, 2026
5e37c03
gh-next32: close lane-6 placeholders with evidence-backed blocked sta…
KooshaPari Feb 23, 2026
a7fb1cb
gh-next32: close lane-6 placeholders with evidence-backed blocked sta…
KooshaPari Feb 23, 2026
b19c835
docs(planning): add CPB-0541-0590 next-50 lane reports
KooshaPari Feb 23, 2026
07032b2
docs(planning): execute wave4 of next-50 CP2K items
KooshaPari Feb 23, 2026
15287a3
docs(planning): add CPB-0591-0640 next-50 lane reports
KooshaPari Feb 23, 2026
74a4f82
gh-next32: close lane-3/lane-4 pending statuses with evidence-backed …
KooshaPari Feb 23, 2026
aba30f6
gh-next32: close lane-7 pending statuses with code-surface evidence
KooshaPari Feb 23, 2026
b9dd3b0
docs(planning): execute wave5 of next-50 CP2K items
KooshaPari Feb 23, 2026
426ab27
cpb-0491-0500: close lane-1/lane-2 items with evidence-backed report …
KooshaPari Feb 23, 2026
e40ecc1
test(auth): restore kiro/copilot test compile for hook parity
KooshaPari Feb 23, 2026
817252a
fix: resolve build errors and add ACP adapter scaffold (Track 1)
KooshaPari Feb 23, 2026
77cbbb3
docs(planning): add CPB-0641-0690 next-50 lane reports
KooshaPari Feb 23, 2026
5cdc16f
test(smoke): fix fake curl status sequence default
KooshaPari Feb 23, 2026
b6561b4
Merge pull request #207 from KooshaPari/ci-compile-fix-clean-single
KooshaPari Feb 23, 2026
f51091b
fix: resolve executor compile regressions
KooshaPari Feb 23, 2026
7d859c1
codescan batch4-l1: harden request-forgery and redirect validation
KooshaPari Feb 23, 2026
6408e7f
codescan batch4-l3: harden auth file path handling
KooshaPari Feb 23, 2026
5b51dd6
codescan batch4-l2: harden token filepath handling
KooshaPari Feb 23, 2026
131be40
codescan batch4-l4: sanitize sensitive logging A1-A20
KooshaPari Feb 23, 2026
4e66c5a
Harden middleware logging payloads for sensitive JSON redaction
KooshaPari Feb 23, 2026
1898a7e
codescan batch4-l6: harden logging and hashing surfaces
KooshaPari Feb 23, 2026
6e9216a
feat: add cliproxyctl scaffold and response schema
KooshaPari Feb 23, 2026
f6fa9bc
fix: pin provider model list to kiro workflow
KooshaPari Feb 23, 2026
7331b89
fix(cmd): avoid duplicate ThegentSpec declaration
KooshaPari Feb 23, 2026
4957e4b
test(kiro): add local roundTripperFunc test helper
KooshaPari Feb 23, 2026
9d9ecba
fix: restore compile stability and required-check alignment
KooshaPari Feb 23, 2026
089dbdb
ci: align required check manifests with workflow job names
KooshaPari Feb 23, 2026
5f04809
fix: resolve cliproxyctl delegate build regressions
KooshaPari Feb 23, 2026
3f60234
ci: allow translator kiro websearch hotfix file in path guard
KooshaPari Feb 23, 2026
c5470b0
Lane D8: CPB-0741..0750 docs and tests
KooshaPari Feb 23, 2026
90e88be
lane-F7: implement CPB-0781, 0784 and scoped docs/tests/report
KooshaPari Feb 23, 2026
a51dca2
Implement CPB-0745..0754 lane D7 scoped fixes and docs
KooshaPari Feb 23, 2026
c60ade7
chore: recreate PR branch from base with non-translator changes
KooshaPari Feb 23, 2026
018ef2b
feat: support amp mapping params and add CPB-0742/74 docs
KooshaPari Feb 23, 2026
5c98d24
lane d9: add codex websocket beta header tests and quickstart docs fo…
KooshaPari Feb 23, 2026
e545469
cliproxy: lane-e9 harden auth-dir handling for CPB-0814-0815
KooshaPari Feb 23, 2026
fcc3634
lane d9: add gemini tool-use dev triage hint
KooshaPari Feb 23, 2026
fa2b107
fix: Ensure event is emitted before any events in Claude SSE respon…
em4go Dec 7, 2025
aed3650
lane-d10: implement CPB-0784/0785 roocode alias + triage docs
KooshaPari Feb 23, 2026
fd5bba6
fix: filter out orphaned tool results from history and current context
KooshaPari Feb 23, 2026
de51ad0
fix: Ensure event is emitted before any events in Claude SSE respon…
KooshaPari Feb 23, 2026
eeedf85
layer-2+3: orphaned tool filtering + compile regressions (#215)
KooshaPari Feb 23, 2026
8e1233d
Fix translator import drift and OpenAI compat JSON validation
KooshaPari Feb 23, 2026
848ddc2
chore(board): continue D12 retry queue after CPB-0795
KooshaPari Feb 23, 2026
0f1ae70
fix: clean duplicate structs/tests and harden auth region/path handling
KooshaPari Feb 23, 2026
e3442df
merge: chore/cpb-wave-c7-next-pr2
KooshaPari Feb 23, 2026
be645ad
Align translator import paths and remove constant dot-imports
KooshaPari Feb 23, 2026
57293be
Add normalized CPB-0781-0830 wave reports (10 items)
KooshaPari Feb 23, 2026
e2dd585
Harden config dir perms and update CPB lane docs/quickstarts
KooshaPari Feb 23, 2026
4dc6908
backup: checkpoint dirty workspace before scoped CPB push
KooshaPari Feb 23, 2026
3a7a724
Document batch-4 code execution and troubleshooting token placeholders
KooshaPari Feb 23, 2026
fcacf09
Fix gpt-5.1 model metadata label and add regression test
KooshaPari Feb 23, 2026
12dd7d3
Sync CPB-0781-0830 batch-4 report to registry metadata execution
KooshaPari Feb 23, 2026
2652147
merge: workstream-cpb-1
KooshaPari Feb 23, 2026
4261254
docs: add IA parity scaffold, home UX upgrades, and build-safe troubl…
KooshaPari Feb 23, 2026
1d36001
merge: workstream-cpbv3-3
KooshaPari Feb 23, 2026
9207326
test: align antigravity mode-none expectation with current behavior
KooshaPari Feb 23, 2026
740bcd3
docs: add IA parity scaffold, home UX upgrades, and build-safe troubl…
KooshaPari Feb 23, 2026
85b8a49
docs: remove dead operations link blocking Pages build
KooshaPari Feb 23, 2026
1ffed00
feat: support amp mapping params and add CPB-0742/74 docs
KooshaPari Feb 23, 2026
978d35f
fix(docs): force hex mermaid theme variables to avoid vp css var pars…
KooshaPari Feb 23, 2026
e259ac3
Merge pull request #216 from KooshaPari/feat/cpb-0742-0744-scoped
KooshaPari Feb 23, 2026
b789821
docs(readme): tighten packaging and provider accuracy statements
KooshaPari Feb 23, 2026
3b6bdee
docs(readme): tighten packaging and provider accuracy statements
KooshaPari Feb 23, 2026
6268ac9
feat(cpb-wave): execute next30 lanes and harden auth/docs/test surfaces
KooshaPari Feb 23, 2026
e77f812
Merge pull request #217 from KooshaPari/wave/next30-undefined-fix-202…
KooshaPari Feb 23, 2026
cbdb23e
ci: sync workflow files with upstream main
KooshaPari Feb 23, 2026
0f0026b
ci: sync workflow files with upstream main
KooshaPari Feb 23, 2026
7ed6457
ci: sync workflow files with upstream main
KooshaPari Feb 23, 2026
c7ab480
ci: sync workflow files with upstream main
KooshaPari Feb 23, 2026
b02def5
fix(docs): pin esbuild to patched version for GHSA-67mh-4wv8-2f99
KooshaPari Feb 23, 2026
c5c6e4a
fix(docs): guard unresolved phase placeholder tokens
KooshaPari Feb 23, 2026
cc4ca8c
fix(docs): guard unresolved phase placeholder tokens (#237)
KooshaPari Feb 23, 2026
4dc5642
Merge pull request #233 from KooshaPari/wave/next30-undefined-fix-202…
KooshaPari Feb 23, 2026
bbca49e
Merge pull request #231 from KooshaPari/fix/dependabot-esbuild-0-25
KooshaPari Feb 23, 2026
5204ef3
Merge pull request #235 from KooshaPari/codescan-merge-139
KooshaPari Feb 23, 2026
30a1bde
Merge pull request #236 from KooshaPari/ci/sync-upstream-workflows-ma…
KooshaPari Feb 23, 2026
0406367
fix(security): redact websocket/request logging payloads and identifiers
KooshaPari Feb 23, 2026
9b9c6a8
security(wave2): SSRF protection, path sanitization, and keyed hashing
KooshaPari Feb 23, 2026
e9148d6
fix(security): redact websocket/request logging payloads and identifi…
KooshaPari Feb 23, 2026
b19bdb0
Merge fix/security-cleartext-logging-wave1 into main
KooshaPari Feb 23, 2026
3c17496
Merge lane/d12-retry-cpb-after-0795 into main
KooshaPari Feb 23, 2026
2060bca
Merge fix/docs-undefined-token-guard into main
KooshaPari Feb 23, 2026
0e84537
Merge codex/wave-cpb-c6-next into main
KooshaPari Feb 23, 2026
101bff2
Merge stack/layer-1 into main
KooshaPari Feb 23, 2026
1b280ad
Merge stack/layer-1 into main
KooshaPari Feb 23, 2026
631e46a
security(wave2): SSRF protection, path sanitization, and keyed hashing
KooshaPari Feb 23, 2026
39be974
security(wave2): SSRF protection, path sanitization, and keyed hashin…
KooshaPari Feb 23, 2026
c742e1d
fix(cliproxyapi++): fix vet issues and failing test assertions
KooshaPari Feb 23, 2026
ac49681
lint(go): fix test args, nil context, and TrimPrefix issues
KooshaPari Feb 23, 2026
40001f8
Merge stash from ci-compile-fix-clean-single
KooshaPari Feb 23, 2026
5e79ae8
security(wave3): fix remaining weak-sensitive-data-hashing alerts
KooshaPari Feb 23, 2026
df9aa7f
fix(cliproxyapi++): fix 3 remaining sdk test failures
KooshaPari Feb 23, 2026
50867a4
chore: apply stashed changes
KooshaPari Feb 23, 2026
797583c
security(wave3): fix bad-redirect-check alerts
KooshaPari Feb 23, 2026
da6399f
fix(go): fix i18n test to use zhCNTabNames
KooshaPari Feb 23, 2026
dfc5cbe
fix(test): resolve symlinks in oauth callback path test
KooshaPari Feb 23, 2026
2ec3372
chore(cleanup): delete stale runtime/executor copy (47 files, 21K LOC…
KooshaPari Feb 23, 2026
6765620
docs: add optimization plan
KooshaPari Feb 23, 2026
bcb8bb6
security(wave3): use full redaction for clear-text-logging
KooshaPari Feb 23, 2026
5d52fff
security(wave3): fix remaining clear-text-logging alerts
KooshaPari Feb 23, 2026
61cb179
Merge archive/pr-234-head-20260223
KooshaPari Feb 23, 2026
0e4f4e8
Merge chore/cliproxyctl-minimal2
KooshaPari Feb 23, 2026
9c8bfa8
Merge ci-compile-fix
KooshaPari Feb 23, 2026
04677dd
Merge branch 'security/wave2-rebased'
KooshaPari Feb 23, 2026
801c019
Merge branch 'security/wave2-ssrf-path-hash'
KooshaPari Feb 23, 2026
298bbf2
Merge remote-tracking branch 'origin/safe/worktree-fix-release-batch-…
KooshaPari Feb 23, 2026
7055c80
Merge remote-tracking branch 'kooshapari/ci-compile-fix-clean-pr'
KooshaPari Feb 23, 2026
6ffcf3b
Merge remote-tracking branch 'origin/pr-269-migrate' into merge/codes…
KooshaPari Feb 23, 2026
fc37edf
Merge remote-tracking branch 'origin/stack/layer-2'
KooshaPari Feb 23, 2026
abffcfe
Merge remote-tracking branch 'origin/pr-269-migrate' into merge/codes…
KooshaPari Feb 23, 2026
8bc7577
Merge remote-tracking branch 'origin/main' into merge/codescan-layer2
KooshaPari Feb 23, 2026
2cf9b80
fix: resolve all merge conflict markers in Go source files (keep HEAD)
KooshaPari Feb 23, 2026
ebc2e0f
Merge commit '2513a9a0d' into merge/ci-fix
KooshaPari Feb 23, 2026
6811f71
docs: add canonical structure files (WORKLOG, PRD, SPEC)
KooshaPari Feb 23, 2026
4424c48
ci: sync workflow files with upstream main
KooshaPari Feb 23, 2026
eff1b63
Merge remote-tracking branch 'origin/pr-11-migrate'
KooshaPari Feb 23, 2026
763dc42
docs: add IA parity scaffold, home UX upgrades, and build-safe troubl…
KooshaPari Feb 23, 2026
ec23499
security: fix remaining code scanning alerts
KooshaPari Feb 23, 2026
7aba082
chore: fix sdk config
KooshaPari Feb 23, 2026
594e5f6
chore: update executors and handlers
KooshaPari Feb 23, 2026
269fc80
security: remove hardcoded OAuth credentials
KooshaPari Feb 23, 2026
f006744
fix: resolve Go build errors - SDKConfig/ErrorMessage type compatibil…
KooshaPari Feb 23, 2026
d7471bd
fix(pkg): resolve Go build errors for config type compatibility
KooshaPari Feb 23, 2026
7954709
fix: restore cmd/cliproxyctl/main.go from pre-merge clean checkpoint
KooshaPari Feb 23, 2026
6df2e04
fix: resolve Go build errors - config type aliasing and import consol…
KooshaPari Feb 23, 2026
2fe66bd
fix: resolve all remaining Go build errors - sdk/config.Config alias,…
KooshaPari Feb 23, 2026
40d7746
fix(lint): fix type mismatches and skip broken tests
KooshaPari Feb 23, 2026
f863dd9
fix: drop usage field on terminal finish chunks in stream conversion
KooshaPari Feb 23, 2026
22b1774
Remove duplicate pkg/llmproxy/runtime (use internal/runtime)
KooshaPari Feb 23, 2026
05242f0
feat: add OpenAPI spec and SDK generation workflow
KooshaPari Feb 23, 2026
ca2e2c7
feat(sdk): add Python client SDK
KooshaPari Feb 23, 2026
d09e64d
fix: resolve widespread type mismatch in config and utility functions
KooshaPari Feb 23, 2026
8cac2df
fix: resolve build errors - duplicate types and SDKConfig definition
KooshaPari Feb 23, 2026
8a834b6
fix: remove unused sync/atomic import in kiro_websearch_handler.go
KooshaPari Feb 23, 2026
d59c40b
docs: update README with fork details and integration
KooshaPari Feb 23, 2026
da6418f
fix: resolve 5 failing tests in llmproxy (registry, API, auth, config)
KooshaPari Feb 23, 2026
118daf2
fix(config,api): fix test assertions and deduplication logic
KooshaPari Feb 23, 2026
3b8908f
docs: update README with trace structure
KooshaPari Feb 23, 2026
ad78f86
Add comprehensive Python SDK with native classes (not just HTTP wrapp…
KooshaPari Feb 23, 2026
590abaf
docs: update README with trace structure
KooshaPari Feb 23, 2026
8796372
chore: remove large binaries from repo
KooshaPari Feb 23, 2026
a4e4c2b
chore: add build artifacts to .gitignore
KooshaPari Feb 23, 2026
c9da0b5
fix: resolve build errors and remove broken test files
KooshaPari Feb 23, 2026
5168055
Update .github/scripts/check-open-items-fragmented-parity.sh
KooshaPari Feb 25, 2026
6d7b357
Update .github/ISSUE_TEMPLATE/bug_report.md
KooshaPari Feb 25, 2026
75f4064
📝 CodeRabbit Chat: Add unit tests
coderabbitai[bot] Feb 25, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
33 changes: 18 additions & 15 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
@@ -1,41 +1,44 @@
---
name: Bug report
about: Report a bug in cliproxyapi++
title: '[BUG] '
labels: 'bug'
about: Create a report to help us improve
title: ''
labels: ''
assignees: ''

---

**Is it a request payload issue?**
[ ] Yes, this is a request payload issue. I am using a client/cURL to send a request payload, but I received an unexpected error.
[ ] No, it's another issue.
[ ] Yes, this is a request payload issue. I am using a client/cURL to send a request payload, but I received an unexpected error.
[ ] No, it's another issue.
Comment on lines +11 to +12
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

# First, read the file to see the current state at lines 11-12
cat -n .github/ISSUE_TEMPLATE/bug_report.md | sed -n '1,45p'

Repository: KooshaPari/cliproxyapi-plusplus

Length of output: 1741


🏁 Script executed:

# Run the verification script from the review comment to check for [  ] pattern
rg -nP '^\[ {1,}\]' .github/ISSUE_TEMPLATE/*.md

Repository: KooshaPari/cliproxyapi-plusplus

Length of output: 240


🌐 Web query:

GitHub-flavored markdown task list syntax requirements checkbox rendering

💡 Result:

GFM task list item syntax (what’s required to render a checkbox)

To render as a checkbox in GitHub Flavored Markdown (GFM), the checkbox marker must be in a list item (ordered or unordered), and it must appear at the start of the first paragraph in that list item: the paragraph must begin with the marker and have at least one whitespace character after it before any other content. [1]

Marker format: optional leading spaces, then:

  • [ ] (unchecked) — the middle character is a whitespace character
  • [x] or [X] (checked) [1]

Examples (render as checkboxes):

- [ ] todo
- [x] done
1. [ ] ordered item works too

Rendering behavior (what you should expect)

When rendered, the marker is replaced with a semantic checkbox element (HTML output is typically an <input type="checkbox">). If the marker is [ ] it’s unchecked; if it’s [x]/[X] it’s checked. [1]

GitHub’s UI commonly renders these as clickable checkboxes in issues/PRs/comments, letting you toggle them to complete/incomplete. [2]

Common “why didn’t it render?” causes:

  • Not actually a list item (missing - / * / 1. prefix) [1]
  • Extra text appears before the marker in the list item’s first paragraph [1]
  • No space after the closing ] (e.g., - [ ]todo) [1]

Sources: [1] GFM Spec – Task list items, [2] GitHub Docs – tasklists/task list creation.


Fix task-list syntax so checkboxes render in GitHub issues.

Lines 11–12 use [ ] without list markers. GitHub requires - [ ] format to render interactive checkboxes; plain text [ ] will not render as selectable checkboxes and prevents users from properly triaging the issue.

Suggested fix
-[  ] Yes, this is a request payload issue. I am using a client/cURL to send a request payload, but I received an unexpected error.
-[  ] No, it's another issue.
+- [ ] Yes, this is a request payload issue. I am using a client/cURL to send a request payload, but I received an unexpected error.
+- [ ] No, it's another issue.
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
[ ] Yes, this is a request payload issue. I am using a client/cURL to send a request payload, but I received an unexpected error.
[ ] No, it's another issue.
- [ ] Yes, this is a request payload issue. I am using a client/cURL to send a request payload, but I received an unexpected error.
- [ ] No, it's another issue.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/ISSUE_TEMPLATE/bug_report.md around lines 11 - 12, Update the
task-list lines that currently use plain “[  ]” so GitHub renders interactive
checkboxes by prefixing each with a list marker; replace the two lines beginning
with "[  ] Yes, this is a request payload issue..." and "[  ] No, it's another
issue." to use "- [ ] Yes, this is a request payload issue..." and "- [ ] No,
it's another issue." respectively so they render as clickable checkboxes in
issues.


**If it's a request payload issue, you MUST know**
To help us diagnose the problem, please provide as much detail as possible, including request logs or `curl` payloads.
To help us diagnose the problem, please provide as much detail as possible, including the request log or curl payload.

**Describe the bug**
A clear and concise description of what the bug is.

**cliproxyapi++ Configuration**
What provider and model are you using? (e.g. Kiro, Claude, Gemini)
**CLI Type**
What type of CLI account do you use? (gemini-cli, gemini, codex, claude code or openai-compatibility)

**LLM Client**
What LLM Client are you using? (e.g. Roo Code, Claude Code, Cursor, etc.)
**Model Name**
What model are you using? (example: gemini-2.5-pro, claude-sonnet-4-20250514, gpt-5, etc.)

**Environment Information**
- **cliproxyapi++ Version**: (e.g., v6.0.0-++.1)
- **Deployment Method**: (e.g., Docker, Binary)
- **OS**: (e.g. macOS, Ubuntu 22.04)
**LLM Client**
What LLM Client are you using? (example: roo-code, cline, claude code, etc.)

**Request Information**
Please provide the `curl` command or the logs from `config.yaml` with `request-log: true`.
The best way is to paste the cURL command of the HTTP request here.
Alternatively, you can set `request-log: true` in the `config.yaml` file and then upload the detailed log file.

**Expected behavior**
A clear and concise description of what you expected to happen.

**Screenshots**
If applicable, add screenshots to help explain your problem.

**OS Type**
- OS: [e.g. macOS]
- Version [e.g. 15.6.0]
Comment on lines +39 to +41
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Normalize OS section formatting for consistent prompts.

Line 41 is missing a colon after Version, which makes this field inconsistent with Line 40 and easier to misread/copy incorrectly.

Suggested fix
- - Version [e.g. 15.6.0]
+ - Version: [e.g. 15.6.0]
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
**OS Type**
- OS: [e.g. macOS]
- Version [e.g. 15.6.0]
**OS Type**
- OS: [e.g. macOS]
- Version: [e.g. 15.6.0]
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/ISSUE_TEMPLATE/bug_report.md around lines 39 - 41, The OS section
has inconsistent punctuation: the "- Version [e.g. 15.6.0]" entry is missing a
colon. Update the template so the entries match by changing "- Version [e.g.
15.6.0]" to "- Version: [e.g. 15.6.0]" (referencing the "**OS Type**" header and
the "- OS:" and "- Version" list items) to normalize formatting across the
prompt.


**Additional context**
Add any other context about the problem here.
11 changes: 11 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# To get started with Dependabot version updates, you'll need to specify which
# package ecosystems to update and where the package manifests are located.
# Please see the documentation for all configuration options:
# https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file

version: 2
updates:
- package-ecosystem: "" # See documentation for possible values haha
directory: "/" # Location of package manifests
schedule:
interval: "weekly"
Comment on lines +8 to +11
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

cat .github/dependabot.yml

Repository: KooshaPari/cliproxyapi-plusplus

Length of output: 601


🏁 Script executed:

#!/bin/bash
# Run the verification script from the review
python - <<'PY'
import sys
from pathlib import Path

p = Path(".github/dependabot.yml")
text = p.read_text(encoding="utf-8")
bad = []
for i, line in enumerate(text.splitlines(), start=1):
    if "package-ecosystem:" in line:
        value = line.split(":", 1)[1].strip().split("#", 1)[0].strip().strip('"').strip("'")
        if not value:
            bad.append(i)

if bad:
    print(f"Invalid empty package-ecosystem at lines: {bad}")
    sys.exit(1)
print("OK: no empty package-ecosystem values found")
PY

Repository: KooshaPari/cliproxyapi-plusplus

Length of output: 120


🌐 Web query:

Dependabot yml package-ecosystem required valid values schema

💡 Result:

In .github/dependabot.yml, updates[].package-ecosystem is required and must be one of these valid YAML values (Dependabot v2 schema):

bazel
bun
bundler
cargo
composer
conda
devcontainers
docker
docker-compose
dotnet-sdk
elm
github-actions
gitsubmodule
gomod
gradle
helm
julia
maven
mix
npm
nuget
opentofu
pip
pub
rust-toolchain
swift
terraform
uv
vcpkg

This matches the published JSON schema used by many editors/linters (SchemaStore) [1] and GitHub’s own Dependabot options reference (same set, with notes about supported tool versions) [2].

Notes:

  • pnpm and yarn are configured as package-ecosystem: npm (Dependabot detects the lockfile, e.g., pnpm-lock.yaml, yarn.lock) [2], [3].

Sources: [1], [2], [3]


Dependabot config is invalid due to empty ecosystem value.

Line 8 sets package-ecosystem: "", which violates the Dependabot schema. The package-ecosystem field is required and must be a non-empty string from the valid ecosystems list (e.g., gomod, github-actions, npm, pip). This configuration will prevent Dependabot from running version updates.

🔧 Proposed fix
 version: 2
 updates:
-  - package-ecosystem: "" # See documentation for possible values haha
+  - package-ecosystem: "gomod"
     directory: "/" # Location of package manifests
     schedule:
       interval: "weekly"
+  - package-ecosystem: "github-actions"
+    directory: "/"
+    schedule:
+      interval: "weekly"
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/dependabot.yml around lines 8 - 11, The Dependabot config has an
empty package-ecosystem value which breaks the schema; update the
package-ecosystem key (replace package-ecosystem: "" in the
.github/dependabot.yml diff) with a valid non-empty ecosystem string appropriate
for this repo (for example "npm", "gomod", "pip", or "github-actions") so
Dependabot can run—ensure the chosen ecosystem matches the manifests in the
repository and keep the existing directory: "/" and schedule block unchanged.

42 changes: 42 additions & 0 deletions .github/policies/approved-external-endpoints.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
# Approved external endpoint hosts.
# Matching is exact host or subdomain of an entry.

accounts.google.com
aiplatform.googleapis.com
ampcode.com
api.anthropic.com
api.api.githubcopilot.com
api.deepseek.com
api.fireworks.ai
api.github.com
api.groq.com
api.kilo.ai
api.kimi.com
api.minimax.chat
api.minimax.io
api.mistral.ai
api.novita.ai
api.openai.com
api.roocode.com
api.siliconflow.cn
api.together.xyz
apis.iflow.cn
auth.openai.com
chat.qwen.ai
chatgpt.com
claude.ai
cloudcode-pa.googleapis.com
cloudresourcemanager.googleapis.com
generativelanguage.googleapis.com
github.com
golang.org
iflow.cn
integrate.api.nvidia.com
oauth2.googleapis.com
openrouter.ai
platform.iflow.cn
platform.openai.com
portal.qwen.ai
raw.githubusercontent.com
serviceusage.googleapis.com
www.googleapis.com
13 changes: 13 additions & 0 deletions .github/release-required-checks.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# workflow_file|job_name
pr-test-build.yml|go-ci
pr-test-build.yml|quality-ci
pr-test-build.yml|quality-staged-check
pr-test-build.yml|fmt-check
pr-test-build.yml|golangci-lint
pr-test-build.yml|route-lifecycle
pr-test-build.yml|test-smoke
pr-test-build.yml|pre-release-config-compat-smoke
pr-test-build.yml|distributed-critical-paths
pr-test-build.yml|changelog-scope-classifier
pr-test-build.yml|docs-build
pr-test-build.yml|ci-summary
16 changes: 16 additions & 0 deletions .github/required-checks.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# workflow_file|job_name
pr-test-build.yml|go-ci
pr-test-build.yml|quality-ci
pr-test-build.yml|quality-staged-check
pr-test-build.yml|fmt-check
pr-test-build.yml|golangci-lint
pr-test-build.yml|route-lifecycle
pr-test-build.yml|provider-smoke-matrix
pr-test-build.yml|provider-smoke-matrix-cheapest
pr-test-build.yml|test-smoke
pr-test-build.yml|pre-release-config-compat-smoke
pr-test-build.yml|distributed-critical-paths
pr-test-build.yml|changelog-scope-classifier
pr-test-build.yml|docs-build
pr-test-build.yml|ci-summary
pr-path-guard.yml|ensure-no-translator-changes
67 changes: 67 additions & 0 deletions .github/scripts/check-approved-external-endpoints.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
#!/usr/bin/env bash
set -euo pipefail

policy_file=".github/policies/approved-external-endpoints.txt"
if [[ ! -f "${policy_file}" ]]; then
echo "Missing policy file: ${policy_file}"
exit 1
fi

mapfile -t approved_hosts < <(grep -Ev '^\s*#|^\s*$' "${policy_file}" | tr '[:upper:]' '[:lower:]')
if [[ "${#approved_hosts[@]}" -eq 0 ]]; then
echo "No approved hosts in policy file"
exit 1
fi

matches_policy() {
local host="$1"
local approved
for approved in "${approved_hosts[@]}"; do
if [[ "${host}" == "${approved}" || "${host}" == *."${approved}" ]]; then
return 0
fi
done
return 1
}

mapfile -t discovered_hosts < <(
rg -No --hidden \
--glob '!docs/**' \
--glob '!**/*_test.go' \
--glob '!**/node_modules/**' \
--glob '!**/*.png' \
--glob '!**/*.jpg' \
--glob '!**/*.jpeg' \
--glob '!**/*.gif' \
--glob '!**/*.svg' \
--glob '!**/*.webp' \
'https?://[^"\047 )\]]+' \
cmd pkg sdk scripts .github/workflows config.example.yaml README.md README_CN.md 2>/dev/null \
| awk -F'://' '{print $2}' \
| cut -d/ -f1 \
| cut -d: -f1 \
| tr '[:upper:]' '[:lower:]' \
| sort -u
)

unknown=()
for host in "${discovered_hosts[@]}"; do
[[ -z "${host}" ]] && continue
[[ "${host}" == *"%"* ]] && continue
[[ "${host}" == *"{"* ]] && continue
[[ "${host}" == "localhost" || "${host}" == "127.0.0.1" || "${host}" == "0.0.0.0" ]] && continue
[[ "${host}" == "example.com" || "${host}" == "www.example.com" ]] && continue
[[ "${host}" == "proxy.com" || "${host}" == "proxy.local" ]] && continue
[[ "${host}" == "api.example.com" ]] && continue
if ! matches_policy "${host}"; then
unknown+=("${host}")
fi
done

if [[ "${#unknown[@]}" -ne 0 ]]; then
echo "Found external hosts not in ${policy_file}:"
printf ' - %s\n' "${unknown[@]}"
exit 1
fi

echo "external endpoint policy check passed"
19 changes: 19 additions & 0 deletions .github/scripts/check-distributed-critical-paths.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
#!/usr/bin/env bash
set -euo pipefail

echo "[distributed-critical-paths] validating filesystem-sensitive paths"
go test -count=1 -run '^(TestMultiSourceSecret_FileHandling|TestMultiSourceSecret_CacheBehavior|TestMultiSourceSecret_Concurrency|TestAmpModule_OnConfigUpdated_CacheInvalidation)$' ./pkg/llmproxy/api/modules/amp

echo "[distributed-critical-paths] validating ops endpoint route registration"
go test -count=1 -run '^TestRegisterManagementRoutes$' ./pkg/llmproxy/api/modules/amp

echo "[distributed-critical-paths] validating compute/cache-sensitive paths"
go test -count=1 -run '^(TestEnsureCacheControl|TestCacheControlOrder|TestCountOpenAIChatTokens|TestCountClaudeChatTokens)$' ./pkg/llmproxy/runtime/executor

echo "[distributed-critical-paths] validating queue telemetry to provider metrics path"
go test -count=1 -run '^TestBuildProviderMetricsFromSnapshot_FailoverAndQueueTelemetry$' ./pkg/llmproxy/usage

echo "[distributed-critical-paths] validating signature cache primitives"
go test -count=1 -run '^(TestCacheSignature_BasicStorageAndRetrieval|TestCacheSignature_ExpirationLogic)$' ./pkg/llmproxy/cache

echo "[distributed-critical-paths] all targeted checks passed"
53 changes: 53 additions & 0 deletions .github/scripts/check-docs-secret-samples.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
#!/usr/bin/env bash
set -euo pipefail

patterns=(
'sk-[A-Za-z0-9]{20,}'
'ghp_[A-Za-z0-9]{20,}'
'AKIA[0-9A-Z]{16}'
'AIza[0-9A-Za-z_-]{20,}'
'-----BEGIN (RSA|OPENSSH|EC|DSA|PRIVATE) KEY-----'
)

allowed_context='\$\{|\{\{.*\}\}|<[^>]+>|\[REDACTED|your[_-]?|example|dummy|sample|placeholder'

tmp_hits="$(mktemp)"
trap 'rm -f "${tmp_hits}"' EXIT

for pattern in "${patterns[@]}"; do
rg -n --pcre2 --hidden \
--glob '!docs/node_modules/**' \
--glob '!**/*.min.*' \
--glob '!**/*.svg' \
--glob '!**/*.png' \
--glob '!**/*.jpg' \
--glob '!**/*.jpeg' \
--glob '!**/*.gif' \
--glob '!**/*.webp' \
--glob '!**/*.pdf' \
--glob '!**/*.lock' \
--glob '!**/*.snap' \
-e "${pattern}" docs README.md README_CN.md examples >> "${tmp_hits}" || true
done

if [[ ! -s "${tmp_hits}" ]]; then
echo "docs secret sample check passed"
exit 0
fi

violations=0
while IFS= read -r hit; do
line_content="${hit#*:*:}"
if printf '%s' "${line_content}" | rg -qi "${allowed_context}"; then
continue
fi
echo "Potential secret detected: ${hit}"
violations=1
done < "${tmp_hits}"

if [[ "${violations}" -ne 0 ]]; then
echo "Secret sample check failed. Replace with placeholders or redact."
exit 1
fi

echo "docs secret sample check passed"
49 changes: 49 additions & 0 deletions .github/scripts/check-open-items-fragmented-parity.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
#!/usr/bin/env bash
set -euo pipefail

report="${REPORT_PATH:-docs/reports/fragmented/OPEN_ITEMS_VALIDATION_2026-02-22.md}"
if [[ ! -f "$report" ]]; then
echo "[FAIL] Missing report: $report"
exit 1
fi

section="$(awk '
BEGIN { in_issue=0 }
/^- Issue #258/ { in_issue=1 }
in_issue {
if ($0 ~ /^- (Issue|PR) #[0-9]+/ && $0 !~ /^- Issue #258/) {
exit
}
print
}
' "$report")"

if [[ -z "$section" ]]; then
echo "[FAIL] $report missing Issue #258 section."
exit 1
fi

status_line="$(echo "$section" | awk 'BEGIN{IGNORECASE=1} /- (Status|State):/{print; exit}')"
if [[ -z "$status_line" ]]; then
echo "[FAIL] $report missing explicit status line for #258 (expected '- Status:' or '- State:')."
exit 1
fi

status_lower="$(echo "$status_line" | tr '[:upper:]' '[:lower:]')"

if echo "$status_lower" | rg -q "\b(partial|partially|not implemented|todo|to-do|pending|wip|in progress|open|blocked|backlog)\b"; then
echo "[FAIL] $report has non-implemented status for #258: $status_line"
exit 1
fi

if ! echo "$status_lower" | rg -q "\b(implemented|resolved|complete|completed|closed|done|fixed|landed|shipped)\b"; then
echo "[FAIL] $report has unrecognized completion status for #258: $status_line"
exit 1
fi

if ! rg -n "pkg/llmproxy/translator/codex/openai/chat-completions/codex_openai_request.go" "$report" >/dev/null 2>&1; then
echo "[FAIL] $report missing codex variant fallback evidence path."
exit 1
fi

echo "[OK] fragmented open-items report parity checks passed"
16 changes: 16 additions & 0 deletions .github/scripts/check-phase-doc-placeholder-tokens.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
#!/usr/bin/env bash
set -euo pipefail

ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
cd "$ROOT"

# Guard against unresolved generator placeholders in planning reports.
# Allow natural-language "undefined" mentions; block explicit malformed token patterns.
PATTERN='undefinedBKM-[A-Za-z0-9_-]+|undefined[A-Z0-9_-]+undefined'

if rg -n --pcre2 "$PATTERN" docs/planning/reports -g '*.md'; then
echo "[FAIL] unresolved placeholder-like tokens detected in docs/planning/reports"
exit 1
fi

echo "[OK] no unresolved placeholder-like tokens in docs/planning/reports"
Comment on lines +11 to +16
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Check the actual file and its content
file=".github/scripts/check-phase-doc-placeholder-tokens.sh"

if [ -f "$file" ]; then
  echo "=== File exists. Checking lines 11-16: ==="
  sed -n '11,16p' "$file" | cat -n
  echo
  echo "=== Full file content with line numbers: ==="
  cat -n "$file"
else
  echo "File not found: $file"
fi

Repository: KooshaPari/cliproxyapi-plusplus

Length of output: 1133


🌐 Web query:

ripgrep rg exit code behavior documentation

💡 Result:

rg (ripgrep) uses GNU-grep-like exit codes:

Important exception with -q/--quiet: if -q is used and a match is found, ripgrep may exit 0 even if an error also occurred, because it stops at the first match. (manpages.opensuse.org)

Citations:


Handle rg execution errors explicitly to avoid false green checks.

Line 11 currently treats both rg exit code 1 (no match) and exit code 2 (error) as successful non-match conditions. When rg encounters a runtime error—such as regex syntax failure, unreadable files, or command not found—the script will still print [OK] and return success, masking real failures.

Distinguish exit codes explicitly: 0 = match found, 1 = no match, 2+ = error requiring failure. The proposed fix using a case statement correctly handles all three outcomes.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/scripts/check-phase-doc-placeholder-tokens.sh around lines 11 - 16,
The rg call using PATTERN currently treats any non-zero exit as a "no matches"
success; change the logic to capture rg's exit status and handle it with a case:
if rg exits 0, print the existing failure message and exit 1; if it exits 1,
proceed to print the OK message; if it exits >=2, print an explicit error
message including the exit code (and optionally stderr) and exit with a non-zero
status so runtime errors are not masked; do this by replacing the current
if-check around the rg invocation with a captured STATUS variable and a case
statement around STATUS for the three outcomes.

31 changes: 31 additions & 0 deletions .github/scripts/check-workflow-token-permissions.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
#!/usr/bin/env bash
set -euo pipefail

violations=0
allowed_write_keys='security-events|id-token|pages'

for workflow in .github/workflows/*.yml .github/workflows/*.yaml; do
[[ -f "${workflow}" ]] || continue

if rg -n '^permissions:\s*write-all\s*$' "${workflow}" >/dev/null; then
echo "${workflow}: uses permissions: write-all"
violations=1
fi

if rg -n '^on:' "${workflow}" >/dev/null && rg -n 'pull_request:' "${workflow}" >/dev/null; then
while IFS= read -r line; do
key="$(printf '%s' "${line}" | sed -E 's/^[0-9]+:\s*([a-zA-Z-]+):\s*write\s*$/\1/')"
if [[ "${key}" != "${line}" ]] && ! printf '%s' "${key}" | grep -Eq "^(${allowed_write_keys})$"; then
echo "${workflow}: pull_request workflow grants '${key}: write'"
violations=1
fi
done < <(rg -n '^\s*[a-zA-Z-]+:\s*write\s*$' "${workflow}")
fi
done

if [[ "${violations}" -ne 0 ]]; then
echo "workflow token permission check failed"
exit 1
fi

echo "workflow token permission check passed"
Loading