ci: run type check, lint and builds on push and PR - #20
Open
245678000000 wants to merge 1 commit into
Open
Conversation
The repo has no automation, but it does take outside PRs, so every
contributor has to assert by hand that they ran the gate.
Two jobs, both on ubuntu-latest / Node 22:
extension pnpm install --frozen-lockfile, check-types, lint,
production esbuild
installer npm ci, npm run build
The steps are split rather than folded into `pnpm run package` so a
failure names itself in the job list. pnpm is set up before setup-node
because setup-node's `cache: pnpm` needs pnpm on PATH to locate the
store.
test:server is deliberately not wired up yet. 5 of the 38 test files
read the developer's machine and cannot pass on a clean runner:
agentOrchestrator.integration, autoSummarize, chatSummary and
providerRuntime go through loadSqlite3(), which createRequire's
@vscode/sqlite3 out of an installed Cursor; protocol.test.ts:232 asserts
a <user_rules> block that only exists when the real
~/.ccursor/knowledge-base.json has entries. The workflow carries a
comment with the details and the one-step diff to add once those are
decoupled.
This was referenced Aug 27, 2026
Rogers-F
added a commit
to Rogers-F/CCursor
that referenced
this pull request
Aug 29, 2026
- §4 步 0-8 全量实现: leading 提取 / 预算反推 (targetFloor−leading−reserve,
clamp[min(8K,5%w), 60K]) / 可行性检查 (B 模式降级 → disabled 拒动) /
原子组划分 (v2 谓词: [user]|[纯文本 assistant]|[assistant(tool_use)+连续 results]) /
o200k 计价 (前沿豁免 + 图片原子 1.6K + 渲染后实测 + 输入侧字段级省略) /
尾向组边界扫描 (×1.15 安全边际) / 单组超预算兜底 / 违约就地升级链
(占位线减半→预算减半→B 模式) / 占位替换 (骨架+locator+blobId+头尾预览
175/75 tok 封顶) / 锚点保底 (真 user 回溯, 计入预算重扫, 不入 archive) /
切分后孤儿断言 (O(n) 配对闭包, 违规回退最近安全组边界)
- CompactionPlan 增 elidedOriginals / mode / anchorBlobId / diagnostics;
createCompactionArtifacts: 占位 blob 进 nextRootBlobIds, 原文 blobId 并入
archive.summarizedMessages, 锚点 blobId 排除
- 两路接入: inline 与 summarizeAction 均传 {contextTokenLimit},
compactedTokenDetails 改 o200k 实测重置; 会话级 in-process 互斥锁
(inline tryAcquire 跳过计数 / summarizeAction 等待后重评估)
- constants.ts: 旧四常数标 @deprecated, 新参数集中定义; usage.ts 增共享
computeAutoCompactTriggerReserveTokens (窗口−min(40K,15%×窗口))
- 测试: §8 CometixSpace#1-CometixSpace#10/CometixSpace#12/CometixSpace#13/CometixSpace#20-#29/#32 共 33 例 (compactionBudget.test.ts);
autoSummarize 3 个条数断言改预算断言; compactionRepair 集成测试改预算语义
+ providerOptions 端到端存续断言
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
There is no automation in the repo today, but it does take outside PRs, so every contributor has to assert by hand that they ran the gate.
Two jobs, both
ubuntu-latest/ Node 22:Cursor++pnpm install --frozen-lockfile→check-types→lint→ productionesbuildinstallernpm ci→npm run buildSteps are split rather than folded into
pnpm run packageso a failure names itself in the job list. pnpm is set up beforesetup-nodebecausesetup-node'scache: pnpmneeds pnpm on PATH to locate the store.test:serveris deliberately left out — and here is whyI tried to wire it in first, and it fails on a clean runner. 5 of the 38 test files read the developer's machine:
agentOrchestrator.integration,autoSummarize,chatSummary,providerRuntime— these reachloadSqlite3()inCursor++/src/server/database/sqlite.ts, which doescreateRequire(...)('@vscode/sqlite3')against an installed Cursor app. No Cursor on the runner, so:Failed to load @vscode/sqlite3. Tried 6 paths.CURSOR_APP_ROOTre-points the lookup but cannot conjure a Cursor install.protocol.test.ts:232— asserts the preamble contains<user_rules, but that block only appears when the real~/.ccursor/knowledge-base.jsonhas entries. On a clean$HOMEit is absent.Failing run for the record: 33118230263 —
5 failed | 32 passed | 1 skipped (38).That is worth knowing on its own: the suite passing locally is partly a property of a dev box that has Cursor installed and a populated
~/.ccursor. I did not try to fix it here — whether those five should be mocked, gated behind an env flag, or kept as local-only integration tests is your call. The workflow carries a comment with the diagnosis and the one-step diff to add once they are decoupled. Happy to take that on as a follow-up if you tell me which direction you want.Test plan
Ran on a real runner via a throwaway PR on my fork — both jobs green: 33118498445.
Action majors verified against their current releases before pinning (
checkout@v7,setup-node@v7,pnpm/action-setup@v6);pnpm/action-setuptolerates this repo having no rootpackage.jsonbecauseversion:is given explicitly.