@fantasticit/sumi 0.5.1 → 0.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export {};
@@ -0,0 +1,52 @@
1
+ #!/usr/bin/env node
2
+ import { execFileSync, spawnSync } from 'node:child_process';
3
+ import { existsSync, symlinkSync } from 'node:fs';
4
+ import { join, resolve } from 'node:path';
5
+ import { scaffold } from './scaffold.js';
6
+ /**
7
+ * create-ai-coding <目录> [--agents claude,codex,cursor] [--link <node_modules 路径>] [--no-install]
8
+ * 创建遵循三层结构的新项目:复制模板、初始化 git、安装依赖、生成 AI 工具适配与 git hook。
9
+ */
10
+ const args = process.argv.slice(2);
11
+ const flag = (name) => {
12
+ const i = args.indexOf(`--${name}`);
13
+ return i >= 0 ? args[i + 1] : undefined;
14
+ };
15
+ const target = args.find((a, i) => !a.startsWith('--') && !['--agents', '--link'].includes(args[i - 1] ?? ''));
16
+ if (!target) {
17
+ process.stderr.write('用法:create-ai-coding <目录> [--agents claude,codex,cursor] [--link <node_modules>] [--no-install]\n');
18
+ process.exit(3);
19
+ }
20
+ const dir = resolve(target);
21
+ try {
22
+ scaffold(dir, {
23
+ agents: flag('agents')
24
+ ?.split(',')
25
+ .map((a) => a.trim())
26
+ .filter(Boolean),
27
+ });
28
+ }
29
+ catch (error) {
30
+ process.stderr.write(`${error.message}\n`);
31
+ process.exit(1);
32
+ }
33
+ execFileSync('git', ['init', '-q', '-b', 'main'], { cwd: dir });
34
+ const link = flag('link');
35
+ if (link)
36
+ symlinkSync(resolve(link), join(dir, 'node_modules'));
37
+ else if (!args.includes('--no-install')) {
38
+ const r = spawnSync('pnpm', ['install'], { cwd: dir, stdio: 'inherit' });
39
+ if (r.status !== 0)
40
+ process.stderr.write('依赖安装失败,请稍后在项目中手动运行 pnpm install\n');
41
+ }
42
+ const ctl = join(dir, 'node_modules', '.bin', 'ctl');
43
+ if (existsSync(ctl))
44
+ spawnSync(ctl, ['sync-agents'], { cwd: dir, stdio: 'inherit' });
45
+ process.stdout.write([
46
+ `已创建 ${dir}`,
47
+ '下一步:',
48
+ ' npx ctl run check --all # 新项目应直接通过',
49
+ ' 首次推送时,门禁会要求确认全部 control 内容:由人在自己的终端运行它给出的 npx ctl approve <请求 id>',
50
+ '',
51
+ ].join('\n'));
52
+ //# sourceMappingURL=bin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sumi/create",
3
- "version": "0.5.1",
3
+ "version": "0.6.1",
4
4
  "description": "Sumi 脚手架与项目模板(由 sumi init 调用)",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sumi/kernel",
3
- "version": "0.5.1",
3
+ "version": "0.6.1",
4
4
  "description": "策略中立的编排内核",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -13,7 +13,7 @@
13
13
  "./package.json": "./package.json"
14
14
  },
15
15
  "dependencies": {
16
- "@sumi/plugin-sdk": "0.5.1",
16
+ "@sumi/plugin-sdk": "0.6.1",
17
17
  "yaml": "2.9.1",
18
18
  "picomatch": "4.0.7"
19
19
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sumi/plugin-sdk",
3
- "version": "0.5.1",
3
+ "version": "0.6.1",
4
4
  "description": "插件协议类型与 SDK",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -8,18 +8,18 @@
8
8
 
9
9
  所有插件的 kind 都是 `check`,清单(`sumi-plugins.yaml`)中都没有声明 `triggers`。除 `core/coverage` 外也都没有声明 `minTier`。
10
10
 
11
- | id | 作用 | kind | 档位 | `with` 配置项 | 指标 | needs | fix |
12
- | --------------------- | -------------------------------------------------------------------------------------------------------------------- | ----- | ------------------ | ------------------------------------------------------- | ---------------------------------------- | ------------------------------ | ------------------ |
13
- | `core/format` | `prettier --list-different` 只读检查 | check | — | `binDir` | — | bin: prettier | `prettier --write` |
14
- | `core/lint` | ESLint(项目配置);error 为 finding,warning 计入指标 | check | — | `binDir` | `warnings`(lower-is-better) | bin: eslint | `eslint --fix` |
15
- | `core/typecheck` | 对各工程运行 `tsc --noEmit`,始终全量 | check | — | `binDir`、`projects`(默认 `[tsconfig.json]`) | — | bin: tsc;files: tsconfig.json | — |
16
- | `core/test-affected` | 经 vitest Node API 只运行与改动相关的测试,追不到的改动全部运行;可按 workspace 包逐包选择;为注入的测试义务逐项回执 | check | — | `ignore`、`workspaces`、`wholePackages`、`sourceGuards` | — | bin: vitest | — |
17
- | `core/coverage` | 全量运行测试,上报行覆盖率 | check | `minTier: runtime` | `binDir`、`include`、`exclude`、`tool`、`subprocess` | `coverage`(higher-is-better,容差 0.1) | bin: vitest | — |
18
- | `core/layer-boundary` | 每个文件归属某个区域或中立区;business 不得导入 control/precedent | check | — | — | — | — | — |
19
- | `core/control-docs` | 入口文档限长;规范性语句必须引用存在的执行者 | check | — | `maxLines`、`keywords`、`paths`、`exclude` | `exemptions`(lower-is-better) | — | — |
20
- | `core/exec` | 运行已有命令,按退出码与输出给出结果 | check | — | `argv`、`passFiles`、`pattern` | — | — | — |
21
- | `core/agent-drift` | 调用 `sumi update --check --json`,报告 AI 工具适配与 hook 的漂移 | check | — | — | — | — | — |
22
- | `core/ratchet` | 本次运行的指标与基线比较,不得变差 | check | — | `budgets` | — | — | — |
11
+ | id | 作用 | kind | 档位 | `with` 配置项 | 指标 | needs | fix |
12
+ | --------------------- | -------------------------------------------------------------------------------------------------------------------- | ----- | ------------------ | ----------------------------------------------------------------------------------------------- | ---------------------------------------- | ------------------------------ | ------------------ |
13
+ | `core/format` | `prettier --list-different` 只读检查 | check | — | `binDir` | — | bin: prettier | `prettier --write` |
14
+ | `core/lint` | ESLint(项目配置);error 为 finding,warning 计入指标 | check | — | `binDir` | `warnings`(lower-is-better) | bin: eslint | `eslint --fix` |
15
+ | `core/typecheck` | 对各工程运行 `tsc --noEmit`,始终全量 | check | — | `binDir`、`projects`(默认 `[tsconfig.json]`) | — | bin: tsc;files: tsconfig.json | — |
16
+ | `core/test-affected` | 经 vitest Node API 只运行与改动相关的测试,追不到的改动全部运行;可按 workspace 包逐包选择;为注入的测试义务逐项回执 | check | — | `ignore`、`workspaces`、`wholePackages`、`sourceGuards`、`rootTest`、`attribute`、`noPropagate` | — | bin: vitest | — |
17
+ | `core/coverage` | 全量运行测试,上报行覆盖率 | check | `minTier: runtime` | `binDir`、`include`、`exclude`、`tool`、`subprocess` | `coverage`(higher-is-better,容差 0.1) | bin: vitest | — |
18
+ | `core/layer-boundary` | 每个文件归属某个区域或中立区;business 不得导入 control/precedent | check | — | — | — | — | — |
19
+ | `core/control-docs` | 入口文档限长;规范性语句必须引用存在的执行者 | check | — | `maxLines`、`keywords`、`paths`、`exclude` | `exemptions`(lower-is-better) | — | — |
20
+ | `core/exec` | 运行已有命令,按退出码与输出给出结果 | check | — | `argv`、`passFiles`、`pattern` | — | — | — |
21
+ | `core/agent-drift` | 调用 `sumi update --check --json`,报告 AI 工具适配与 hook 的漂移 | check | — | — | — | — | — |
22
+ | `core/ratchet` | 本次运行的指标与基线比较,不得变差 | check | — | `budgets` | — | — | — |
23
23
 
24
24
  修复命令由 `sumi fix <step-id>` 执行,参数是该步骤检查过的文件;没有文件时处理整个仓库(`.`)。
25
25
 
@@ -37,33 +37,54 @@
37
37
 
38
38
  插件以子进程(当前 Node)在项目目录启动包内的运行器 `dist/vitest-runner.js`,运行器从项目解析 `vitest/node`,用 Node API 求出相关测试后运行,等同 `vitest related --run`(全部运行时等同 `vitest run`),并与 vitest CLI 一样设置 `NODE_ENV`(未设置时为 `test`)、`TEST=true`、`VITEST=true`。改动文件、报告与选中数都经证据目录中的文件传递(第一次运行为 `vitest.input.json`、`vitest.json`、`vitest.result.json`,之后的运行加序号 `vitest-<n>.*`,日志为 `vitest.log`),不经命令行,不受 Windows 命令行长度限制,也不会把同一个测试运行多次。
39
39
 
40
+ 改动范围不受项目配置 `exclude` 影响。`exclude` 只表示不作为项目源码检查(格式、lint 等),vendored 产物、Sumi launcher 这类路径仍可能被测试 import 或读取,而内核给插件的文件列表已去掉它们。因此非全量且有基准时,插件按内核同一口径自行从 git 求改动,再与内核的文件列表取并集:工作区模式为相对基准的 diff(含已暂存与未暂存)加未跟踪且未被 `.gitignore` 忽略的文件;推送门禁等固定提交模式为基准到被检提交的 diff,不计检出中环境准备产生的未跟踪文件;两者都排除运行目录 `.sumi/` 与已不存在的路径。全量运行或没有基准时以内核的文件列表为准。结果的 `checked` 是插件实际考虑的改动文件,可能含 `exclude` 路径。不希望某些路径触发测试时用 `with.ignore`,不要用 `exclude`。
41
+
40
42
  运行器要求项目的 vitest 不低于 3.0(`getRelevantTestSpecifications` 自 3.0 起提供);缺少 `createVitest` 或 `getRelevantTestSpecifications` 时结论为 `blocked`,summary 提示所需版本。单仓模式下从仓库根解析不到 vitest 时结论为 `skipped`;workspace 模式不会因此 `skipped`,解析不到 vitest 的包改为以包管理器运行 `test` 脚本。运行器异常退出(退出码不是 0、1 或回退用的 3)或没有产出报告时结论为 `blocked`。
41
43
 
42
44
  vitest related 只沿 import 图追踪。以下改动它追不到或不会整体重跑,插件改为全部运行,并在 summary 中写明原因:
43
45
 
44
46
  - 配置文件:`package.json`、`tsconfig*.json`、`vite.config.*`、`vitest.config.*`(含带后缀的变体)、`vitest.workspace.*`、`vitest.projects.*`;运行器还会读出 vitest(及各 project)实际使用的配置文件及其导入的文件(vite 的 `configFileDependencies`)、`setupFiles` 与 `globalSetup` 及它们导入的本地文件,改动命中时同样全部运行。Windows 上这些路径按大小写不敏感比较。
45
- - 删除的文件:内核的文件列表只含存在的文件,插件用 `git diff --diff-filter=D` 相对基准自行计算。
47
+ - 删除的文件:内核的文件列表只含存在的文件,插件用 `git diff --diff-filter=D --no-renames` 相对基准(固定提交模式为基准到被检提交)自行计算。
46
48
  - 非 JS/TS 文件(`?raw`、fs 读取的数据文件等)。被 `with.ignore` 匹配的文件不计入,默认 `['**/*.md']`:测试以 fs 或 `?raw` 读取 `.md` fixture 时,这些 fixture 的改动不会触发任何测试,应配置 `ignore` 只忽略文档(如 `['*.md', 'docs/**']`),不匹配 fixture。
47
49
 
48
50
  运行器无法求出相关测试(例如某个测试文件无法解析)时回退为全部运行。测试失败生成 `test-failed` finding;测试文件本身加载失败时按文件报告。
49
51
 
50
- | 配置项 | 作用 |
51
- | --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
52
- | `ignore` | 不影响测试的文件 glob(相对仓库根),默认 `['**/*.md']`;给出时替换默认值 |
53
- | `workspaces` | 为 `true` 时按 workspace 包逐包选择(见下);默认关闭,不自动检测 |
54
- | `wholePackages` | workspace 模式:只要成为候选就整包运行的包,包名列表,或 `{ 包名: 原因 }`(原因写入 summary) |
55
- | `sourceGuards` | workspace 模式:`{ 包名: [相对包目录的测试路径] }`,本包有源码改动时追加到 related 输入,用于以 fs 或 `?raw` 读取源码做断言、import 图追不到的守卫测试 |
52
+ | 配置项 | 作用 |
53
+ | --------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
54
+ | `ignore` | 不影响测试的文件 glob(相对仓库根),默认 `['**/*.md']`;给出时替换默认值。workspace 模式可写成 `{ default: [...], packages: { 包名: [...] } }` 按包覆盖(见下) |
55
+ | `workspaces` | 为 `true` 时按 workspace 包逐包选择(见下);默认关闭,不自动检测 |
56
+ | `wholePackages` | workspace 模式:只要成为候选就整包运行的包,包名列表,或 `{ 包名: 原因 }`(原因写入 summary) |
57
+ | `sourceGuards` | workspace 模式:`{ 包名: [相对包目录的测试路径] }`,本包有源码改动时追加到 related 输入,用于以 fs 或 `?raw` 读取源码做断言、import 图追不到的守卫测试 |
58
+ | `rootTest` | workspace 模式:为 `false` 时根 `test` 脚本不参与(根 test 只是 `pnpm -r run test` 之类的汇总时);默认 `true` |
59
+ | `attribute` | workspace 模式:把包外改动归属到包的项目命令 argv(数组,工作目录为仓库根),协议见下 |
60
+ | `noPropagate` | workspace 模式:包名列表,这些包的改动不带出下游候选(只用于不被下游运行时引用的包,如只被 lint 使用的 eslint 插件包),自身仍按规则判定 |
56
61
 
57
62
  ### workspace 模式
58
63
 
59
64
  包从 `pnpm-workspace.yaml` 的 `packages` 读出,没有该文件时读 `package.json` 的 `workspaces`(数组或 `packages` 字段)。只支持 `dir` 与 `dir/*` 两种写法;含 `**`、`!` 等其他写法,或一个包也没有匹配到(如 `pnpm-workspace.yaml` 没有 `packages`)时,回退为在仓库根整体运行根 `test` 脚本(根 `package.json` 不存在或没有 `test` 脚本时为 `blocked`)。包之间的依赖取各包 `package.json` 中 `dependencies`、`devDependencies`、`peerDependencies`、`optionalDependencies` 里的 workspace 包名。
60
65
 
61
- 1. 改动按路径归属到包(嵌套时取最深的包)。有相关改动不属于任何包(如根配置、锁文件、根目录下的源码与测试)时,每个有 `test` 脚本的包整包运行,根 `package.json` 有 `test` 脚本时也整体运行一次根 `test` 脚本(全量运行时同样如此);根没有 `test` 脚本时 summary 注明包外改动未运行根测试。框架不分析锁文件,需要更细的归属由项目插件完成。
66
+ 1. 改动按路径归属到包(嵌套时取最深的包)。有相关改动不属于任何包(如根配置、锁文件、根目录下的源码与测试)且未经 `attribute` 归属时,每个有 `test` 脚本的包整包运行,根 `package.json` 有 `test` 脚本时也整体运行一次根 `test` 脚本(全量运行时同样如此);根没有 `test` 脚本时 summary 注明包外改动未运行根测试。框架不分析锁文件,需要更细的归属由项目经 `attribute` 提供(见下文扩展点)。
62
67
  2. 候选包为有改动的包及其传递下游(广度遍历,环依赖安全)。
63
68
  3. 每个候选包依次判定:没有 `test` 脚本 → 跳过;`test` 脚本不是 `vitest run` → 整包;在 `wholePackages` 中 → 整包;本包有配置、删除或非 JS/TS 改动 → 整包;上游有此类改动 → 整包;否则在包目录运行 related,输入为本包与上游改动文件的绝对路径,本包有源码改动时追加 `sourceGuards`。仅作为下游且 related 没有选中测试时记为跳过。
64
69
  4. 整包运行:`test` 脚本是 `vitest run` 时由运行器在包目录全部运行(保留逐条测试结果);否则以项目包管理器(`packageManager` 字段,其次按锁文件判断,默认 npm)在包目录运行 `<包管理器> run test`,失败时生成一条定位到该包 `package.json` 的 finding。
65
70
  5. 仓库根的测试(根 `package.json` 有 `test` 脚本、只有包内改动时):根 `test` 脚本是 `vitest run` 时,在仓库根以全部包内改动文件运行一次 related,覆盖“根 vitest 配置用 `projects`/`include` 扫描子包、子包不写 `test` 脚本”的写法与引用包源码的根级测试(如 `tests/*.test.ts`);包内改动含配置、删除或非 JS/TS 文件时改为整体运行根 `test` 脚本;根 related 没有选中测试不算失败。根 `test` 脚本不是 `vitest run`(带参数、多份配置、`pnpm -r test` 等)时无法按文件选择,整体运行根 `test` 脚本。根测试按其本身语义运行:它若也覆盖子包(如 `pnpm -r test`,或根 vitest 配置扫描子包测试),这些测试会与子包的运行重复,宁可多跑。
66
71
 
72
+ ### workspace 模式的扩展点
73
+
74
+ 以下配置让项目注入自己的事实与归属规则,未配置时行为与上文一致。
75
+
76
+ - **`rootTest: false`**:根 `test` 脚本任何情况下都不运行。包外改动由 `attribute` 归属,未配置 `attribute` 时全部包整包运行。读不出包(不支持的写法、没有匹配到任何包)时结论为 `blocked`,不回退根测试。只改了没有 `test` 脚本的包时,这些改动不再由根测试兜底。
77
+ - **`attribute`**:存在不属于任何包的相关改动(被 `ignore` 匹配的除外)且不是全量运行时,在仓库根运行该命令。命令的输入与输出记入证据 `attribute.log`。返回的包按配置改动对待:整包运行,并带动其下游整包;没有返回的包不因包外改动运行。根 `test` 仍按 `rootTest` 整体运行一次(包外改动可能影响根自己的测试)。
78
+ - stdin:`{ "repoRoot": "/abs/repo", "base": "<基准提交或 null>", "files": [{ "path": "pnpm-lock.yaml", "deleted": false }, { "path": "patches/old.patch", "deleted": true }], "packages": [{ "name": "@app/ui", "dir": "packages/ui", "manifest": "packages/ui/package.json" }] }`。`files` 为包外改动,`path` 相对仓库根,删除的文件 `deleted` 为 `true`(此时工作区中已没有该文件,需要内容时用 `git show <base>:<path>`);`dir`、`manifest` 相对仓库根。
79
+ - stdout:`{ "packages": ["@app/ui"], "reasons": ["patches/foo.patch 修补 foo,被 @app/ui 依赖"] }`,`reasons` 写入 summary。无法归属时返回 `{ "packages": [], "reasons": ["锁文件结构变化"], "all": true }`,全部运行。返回空的 `packages` 表示这些改动不影响任何包,summary 写为“包外改动不影响任何包(reasons)”。
80
+ - fail-closed:命令无法启动、超时(120 秒)、非零退出、输出不是 JSON 或格式不符、返回未知包名,或配置不是非空命令数组时,全部运行并在 summary 说明原因。
81
+ - argv 应直接运行脚本,如 `[node, control/scripts/attribute-outside.mjs]`;不要经 `pnpm exec`、`npx`、`sh -c` 等间接启动:超时只能终止直接启动的进程,间接启动时孙进程可能继续运行并拖住步骤。
82
+ - **`noPropagate`**:这些包的改动(含被归属的包外改动)不带出下游候选,也不计入其他候选包的上游改动。只用于不被下游运行时引用的包(如只被 lint 使用的 eslint 插件):它的 `package.json` 改动(依赖、导出变化)同样不会带出下游,被下游 import 的包不应列入。
83
+ - **`ignore` 按包覆盖**:`{ default: ['**/*.md'], packages: { '@app/docs': [] } }`。`default` 相对仓库根,省略时为 `['**/*.md']`;`packages` 中的包对其包内文件以该列表替换 `default`,glob 相对包目录。上例中 `@app/docs` 的 `.md` 改动按非 JS/TS 改动整包运行,其他包的 `.md` 仍被忽略。单仓模式只使用 `default`,配置了 `packages` 时 summary 提示其被忽略。
84
+ - **配置校验**:`ignore` 写错(不是字符串数组或 `{ default, packages }` 对象、`default` 或 `packages` 的值不是字符串数组、含其他键、`packages` 的包名不存在于 workspace),或 `sourceGuards` 的值不是字符串数组时,结论为 `blocked` 并在 summary 指明非法项,不会丢弃非法项或退回默认忽略(那样可能漏测)。`wholePackages`、`sourceGuards`、`noPropagate` 写了不存在的包名,或 `sourceGuards` 的路径不存在时,只在 summary 中以“配置提示”给出(只会多跑或无影响,不阻塞)。
85
+
86
+ 不提供整包运行的并发配置:各包按顺序运行,vitest 自身已并行执行测试文件;需要控制并发时在包的 `test` 脚本内设置。
87
+
67
88
  各包的模式与原因写入 summary 与证据 `modes.json`,所有包的结果汇总为一个步骤结果,具名测试义务按全部报告回执。
68
89
 
69
90
  related 只沿源码的 import 图追踪。下游经 `main`、`exports` 指向的构建产物(如 `dist/`)消费上游时,上游源码改动追不到下游的测试,应把这类下游列入 `wholePackages`。
@@ -76,6 +97,36 @@ related 只沿源码的 import 图追踪。下游经 `main`、`exports` 指向
76
97
  sourceGuards: { '@app/sdk': [test/source-guards.test.ts] }
77
98
  ```
78
99
 
100
+ 大型 monorepo 的写法示例(根 `test` 为 `pnpm -r run test`):
101
+
102
+ ```yaml
103
+ - use: core/test-affected
104
+ with:
105
+ workspaces: true
106
+ rootTest: false
107
+ attribute: [node, control/scripts/attribute-outside.mjs]
108
+ noPropagate: ['@app/eslint-plugin']
109
+ ignore: { packages: { '@app/docs': [] } }
110
+ ```
111
+
112
+ 归属命令示例(按根 `package.json` 的改动粗略归属,其余改动无法归属):
113
+
114
+ ```js
115
+ // control/scripts/attribute-outside.mjs
116
+ let input = '';
117
+ process.stdin
118
+ .on('data', (d) => (input += d))
119
+ .on('end', () => {
120
+ const { files, packages } = JSON.parse(input);
121
+ if (files.every((f) => f.path === 'package.json' && !f.deleted)) {
122
+ const ui = packages.find((p) => p.name === '@app/ui');
123
+ process.stdout.write(JSON.stringify({ packages: ui ? [ui.name] : [], reasons: ['根 package.json 只影响 @app/ui'] }));
124
+ } else {
125
+ process.stdout.write(JSON.stringify({ packages: [], reasons: [`无法归属 ${files.map((f) => f.path).join('、')}`], all: true }));
126
+ }
127
+ });
128
+ ```
129
+
79
130
  ## core/exec:包装已有脚本
80
131
 
81
132
  `core/exec` 运行 `with.argv` 给出的命令,工作目录为仓库根。退出码为 0 时结论为 `pass`,非 0 为 `fail`,命令无法启动时为 `blocked`。完整输出写入证据 `output.log`。
@@ -5,10 +5,20 @@ import { dirname, join } from 'node:path';
5
5
  import { fileURLToPath } from 'node:url';
6
6
  import { definePlugin, gitPaths, result, spawnCommandSync, writeEvidence, } from '@sumi/plugin-sdk';
7
7
  import { toRepoPath } from '../lib.js';
8
- import { classifyChanges, DEFAULT_IGNORE, decideTestModes, owningPackage, packageManager, readWorkspace, rootTestScript, wholeRunReason, } from '../test-scope.js';
8
+ import { classifyChanges, decideTestModes, ignoreMatcher, owningPackage, packageManager, parseIgnore, readWorkspace, rootTestScript, stringList, wholeRunReason, } from '../test-scope.js';
9
9
  const RUNNER = fileURLToPath(new URL('../vitest-runner.js', import.meta.url));
10
10
  const FALLBACK_EXIT = 3;
11
11
  const INCOMPATIBLE_EXIT = 4;
12
+ /** Sumi 的运行目录(证据等),与内核一致不计入改动。 */
13
+ const RUN_DIR = '.sumi';
14
+ /**
15
+ * with.attribute 归属命令的超时(毫秒),默认 120 秒。
16
+ * SUMI_ATTRIBUTE_TIMEOUT_MS 只供测试注入短超时,不是用户配置。
17
+ */
18
+ function attributeTimeout() {
19
+ const injected = Number(process.env.SUMI_ATTRIBUTE_TIMEOUT_MS);
20
+ return Number.isFinite(injected) && injected > 0 ? injected : 120_000;
21
+ }
12
22
  /**
13
23
  * 从目录向上查找项目安装的 vitest(vitest/node 入口);找不到时返回 null。
14
24
  * 只认项目的 node_modules:Node 解析会读取 NODE_PATH(包管理器的命令垫片会设置它),可能解析到 Sumi 自己依赖里的 vitest。
@@ -30,19 +40,27 @@ function resolveVitest(dir) {
30
40
  }
31
41
  /**
32
42
  * 受影响测试:用 vitest Node API 运行与改动相关的测试(含规划器注入的测试文件),vitest related 追不到的改动改为全部运行;
33
- * with.workspaces 为 true 时按 workspace 包逐包判定 related、整包或跳过。
43
+ * with.workspaces 为 true 时按 workspace 包逐包判定 related、整包或跳过;包外改动可由项目命令(with.attribute)归属到包。
34
44
  * 被注入的具名测试义务逐项回执:跳过、待办、未执行都不算 passed。
35
45
  */
36
46
  await definePlugin((ctx) => {
37
- const ignore = Array.isArray(ctx.config.ignore) ? ctx.config.ignore : DEFAULT_IGNORE;
38
- const deleted = !ctx.all && ctx.base ? gitPaths(ctx.repoRoot, ['diff', '--name-only', '--diff-filter=D', '--no-renames', ctx.base]) : [];
39
- const changes = classifyChanges([...ctx.files.map((path) => ({ path, deleted: false })), ...deleted.map((path) => ({ path, deleted: true }))], ignore);
47
+ const ignore = parseIgnore(ctx.config.ignore);
48
+ // 配置写错时阻塞:丢弃非法项会退回默认忽略,可能漏测
49
+ if ('error' in ignore)
50
+ return result({ status: 'blocked', summary: `配置非法:${ignore.error}` });
51
+ const { files, deleted } = changedPaths(ctx);
52
+ const raw = [...files.map((path) => ({ path, deleted: false })), ...deleted.map((path) => ({ path, deleted: true }))];
53
+ const changes = classifyChanges(raw, ignore.default);
40
54
  const workspace = ctx.config.workspaces === true;
55
+ const lines = [];
56
+ if (!workspace && Object.keys(ignore.packages).length > 0)
57
+ lines.push('配置提示:单仓模式忽略 with.ignore.packages,只使用 default');
58
+ const note = (summary) => [...lines, summary].join(';');
41
59
  const vitest = resolveVitest(ctx.repoRoot);
42
60
  if (!workspace && !vitest)
43
- return result({ status: 'skipped', summary: '未找到 vitest,请在项目中安装' });
61
+ return result({ status: 'skipped', summary: note('未找到 vitest,请在项目中安装') });
44
62
  if (!ctx.all && changes.length === 0)
45
- return result({ status: 'pass', summary: '没有受影响的测试', checked: [] });
63
+ return result({ status: 'pass', summary: note('没有受影响的测试'), checked: [] });
46
64
  const logs = [];
47
65
  const evidence = [];
48
66
  let seq = 0;
@@ -97,29 +115,53 @@ await definePlugin((ctx) => {
97
115
  return { label, note: `${pm} run test`, scriptFailure: r.status === 0 ? undefined : { file: manifest, status: r.status } };
98
116
  };
99
117
  const outcomes = [];
100
- const lines = [];
101
118
  if (!workspace) {
102
119
  const reason = ctx.all ? '全量运行' : wholeRunReason(changes);
103
120
  const realRoot = realpathSync(ctx.repoRoot);
104
121
  const related = changes.filter((c) => c.kind === 'code').map((c) => join(realRoot, c.path));
105
122
  if (!reason && related.length === 0)
106
- return result({ status: 'pass', summary: '没有受影响的测试', checked: ctx.files });
123
+ return result({ status: 'pass', summary: note('没有受影响的测试'), checked: files });
107
124
  const run = runVitest('项目', realRoot, vitest, reason ? null : related);
108
125
  outcomes.push(run);
109
126
  lines.push(reason ? `全部运行(${reason},${run.note})` : `related(输入 ${related.length} 个文件,${run.note})`);
110
127
  }
111
128
  else {
112
- runWorkspace(ctx, changes, { runVitest, runScript, outcomes, lines });
129
+ runWorkspace(ctx, raw, ignore, { runVitest, runScript, outcomes, lines, evidence });
113
130
  }
114
131
  evidence.unshift(writeEvidence(ctx, 'vitest.log', logs.join('\n')));
115
- return summarize(ctx, outcomes, lines, evidence);
132
+ return summarize(ctx, files, outcomes, lines, evidence);
116
133
  });
117
- /** workspace 模式:改动归属到包,按依赖求下游,逐包判定并运行;最后按 runRoot 运行仓库根自己的测试。 */
118
- function runWorkspace(ctx, changes, runners) {
134
+ /**
135
+ * 测试影响的改动范围:项目 exclude 只表示不作为项目源码检查(vendored 产物、launcher 等),测试仍可能 import 或读取这些文件,
136
+ * 而内核给的 ctx.files 已去掉 exclude 路径。非全量且有基准时按内核同一口径自行从 git 求改动、不应用 exclude,再与 ctx.files 取并集:
137
+ * 工作区模式为相对基准的 diff(含已暂存与未暂存)加未跟踪且未被忽略的文件;固定提交模式(门禁检出)为基准到 HEAD 的 diff,
138
+ * 不看检出中环境准备产生的未跟踪文件。均排除运行目录与已不存在的路径。删除文件(--no-renames)单独返回。
139
+ * 全量或没有基准时(内核已把全部文件视为改动)沿用 ctx.files,不求删除。
140
+ */
141
+ function changedPaths(ctx) {
142
+ if (ctx.all || !ctx.base)
143
+ return { files: ctx.files, deleted: [] };
144
+ const range = ctx.mode === 'commit' ? [ctx.base, 'HEAD'] : [ctx.base];
145
+ const diff = gitPaths(ctx.repoRoot, ['diff', '--name-only', ...range]);
146
+ const untracked = ctx.mode === 'commit' ? [] : gitPaths(ctx.repoRoot, ['ls-files', '--others', '--exclude-standard']);
147
+ const own = [...diff, ...untracked].filter((f) => !f.startsWith(`${RUN_DIR}/`) && existsSync(join(ctx.repoRoot, f)));
148
+ const deleted = gitPaths(ctx.repoRoot, ['diff', '--name-only', '--diff-filter=D', '--no-renames', ...range]);
149
+ return { files: [...new Set([...ctx.files, ...own])].sort(), deleted };
150
+ }
151
+ /**
152
+ * workspace 模式:改动归属到包,按依赖求下游,逐包判定并运行;最后按 runRoot 运行仓库根自己的测试。
153
+ * with.rootTest 为 false 时根 test 不参与(读不出包时阻塞,不回退根测试);包外改动有 with.attribute 时交给项目命令归属。
154
+ */
155
+ function runWorkspace(ctx, raw, ignore, runners) {
119
156
  const { outcomes, lines } = runners;
157
+ const useRoot = ctx.config.rootTest !== false;
120
158
  const rootTest = rootTestScript(ctx.repoRoot);
121
159
  const ws = readWorkspace(ctx.repoRoot);
122
160
  if ('error' in ws) {
161
+ if (!useRoot) {
162
+ outcomes.push({ label: 'workspace', note: '', blocked: `${ws.error},rootTest 为 false,不能回退为运行根 test 脚本` });
163
+ return;
164
+ }
123
165
  lines.push(`全部运行(${ws.error})`);
124
166
  outcomes.push(rootTest
125
167
  ? runWhole(ctx.repoRoot, '仓库根', rootTest, 'package.json', runners)
@@ -127,33 +169,149 @@ function runWorkspace(ctx, changes, runners) {
127
169
  return;
128
170
  }
129
171
  const { packages } = ws;
172
+ const config = checkWorkspaceConfig(ctx, ignore, packages);
173
+ if (config.error) {
174
+ outcomes.push({ label: '配置非法', note: '', blocked: config.error });
175
+ return;
176
+ }
177
+ lines.push(...config.notes.map((n) => `配置提示:${n}`));
130
178
  const byPackage = new Map();
131
- let outside;
132
- for (const change of changes) {
179
+ const outside = [];
180
+ for (const change of classifyChanges(raw, ignoreMatcher(ignore, packages))) {
133
181
  if (change.kind === 'ignored')
134
182
  continue;
135
183
  const pkg = owningPackage(packages, change.path);
136
184
  if (!pkg) {
137
- outside ??= change.path;
185
+ outside.push({ path: change.path, deleted: change.deleted });
138
186
  continue;
139
187
  }
140
188
  const rel = change.path.slice(pkg.rel.length + 1);
141
189
  byPackage.set(pkg.name, [...(byPackage.get(pkg.name) ?? []), { ...change, rel, abs: join(pkg.dir, rel) }]);
142
190
  }
143
- const wholeAll = ctx.all ? '全量运行' : outside ? `改动 ${outside} 不属于任何包` : undefined;
191
+ let wholeAll = ctx.all ? '全量运行' : undefined;
192
+ let attributed;
193
+ if (!wholeAll && outside.length > 0) {
194
+ const a = ctx.config.attribute === undefined ? undefined : attributeOutside(ctx, outside, packages, runners.evidence);
195
+ if (a && 'attributed' in a) {
196
+ attributed = a.attributed;
197
+ lines.push(a.note);
198
+ }
199
+ else {
200
+ if (a)
201
+ lines.push(`全部运行(${a.all})`);
202
+ wholeAll = `改动 ${outside[0].path} 不属于任何包${a ? ',未能归属' : ''}`;
203
+ }
204
+ }
144
205
  const decisions = decideTestModes(packages, byPackage, {
145
206
  wholePackages: wholePackages(ctx.config.wholePackages),
146
- sourceGuards: ctx.config.sourceGuards ?? {},
207
+ sourceGuards: sourceGuards(ctx.config.sourceGuards),
147
208
  wholeAll,
209
+ attributed,
210
+ noPropagate: new Set(stringList(ctx.config.noPropagate) ?? []),
148
211
  });
149
212
  writeEvidence(ctx, 'modes.json', JSON.stringify(decisions, null, 2));
150
213
  const byName = new Map(packages.map((p) => [p.name, p]));
151
214
  for (const d of decisions)
152
215
  lines.push(runPackage(byName.get(d.name), d, runners));
153
- const line = runRoot(ctx.repoRoot, rootTest, wholeAll, outside, byPackage, runners);
216
+ if (!useRoot)
217
+ return;
218
+ const line = runRoot(ctx.repoRoot, rootTest, wholeAll, outside[0]?.path, byPackage, runners);
154
219
  if (line)
155
220
  lines.push(line);
156
221
  }
222
+ /**
223
+ * 检查 workspace 扩展配置。sourceGuards 的值不是字符串数组、with.ignore.packages 的包不存在时返回 error(覆盖落空会退回默认忽略,可能漏测);
224
+ * wholePackages、sourceGuards、noPropagate 的包不存在、sourceGuards 的路径不存在时只给出提示(只会多跑或无影响)。
225
+ */
226
+ function checkWorkspaceConfig(ctx, ignore, packages) {
227
+ const byName = new Map(packages.map((p) => [p.name, p]));
228
+ const missing = (names) => [...names].filter((name) => !byName.has(name));
229
+ const unknownIgnore = missing(Object.keys(ignore.packages));
230
+ if (unknownIgnore.length)
231
+ return { error: `with.ignore.packages 中的包 ${unknownIgnore.join('、')} 不存在于 workspace`, notes: [] };
232
+ const guards = sourceGuards(ctx.config.sourceGuards);
233
+ const badGuard = Object.entries(guards).find(([, paths]) => !stringList(paths));
234
+ if (badGuard)
235
+ return { error: `with.sourceGuards.${badGuard[0]} 应为字符串数组`, notes: [] };
236
+ const notes = [];
237
+ const lists = [
238
+ ['wholePackages', wholePackages(ctx.config.wholePackages).keys()],
239
+ ['sourceGuards', Object.keys(guards)],
240
+ ['noPropagate', stringList(ctx.config.noPropagate) ?? []],
241
+ ];
242
+ for (const [key, names] of lists) {
243
+ const unknown = missing(names);
244
+ if (unknown.length)
245
+ notes.push(`with.${key} 中的包 ${unknown.join('、')} 不存在于 workspace`);
246
+ }
247
+ for (const [name, paths] of Object.entries(guards)) {
248
+ const pkg = byName.get(name);
249
+ const absent = pkg ? paths.filter((rel) => !existsSync(join(pkg.dir, rel))) : [];
250
+ if (absent.length)
251
+ notes.push(`with.sourceGuards 中 ${name} 的守卫测试 ${absent.join('、')} 不存在`);
252
+ }
253
+ return { notes };
254
+ }
255
+ /**
256
+ * with.attribute:以项目命令把包外改动归属到包。命令在仓库根运行,stdin 为
257
+ * { repoRoot, base, files: [{ path, deleted }], packages: [{ name, dir, manifest }] },stdout 为 { packages: [包名], reasons?: [说明], all?: boolean }。
258
+ * 命令无法启动、超时、非零退出、输出非法或返回未知包名时返回 all(全部运行,宁可多跑)。
259
+ */
260
+ function attributeOutside(ctx, files, packages, evidence) {
261
+ const argv = stringList(ctx.config.attribute);
262
+ if (!argv?.length)
263
+ return { all: 'with.attribute 不是非空的命令数组' };
264
+ const input = JSON.stringify({
265
+ repoRoot: ctx.repoRoot,
266
+ base: ctx.base,
267
+ files,
268
+ packages: packages.map((p) => ({ name: p.name, dir: p.rel, manifest: `${p.rel}/package.json` })),
269
+ });
270
+ const [cmd, ...args] = argv;
271
+ const timeout = attributeTimeout();
272
+ const r = spawnCommandSync(cmd, args, {
273
+ cwd: ctx.repoRoot,
274
+ encoding: 'utf8',
275
+ input,
276
+ maxBuffer: 64 * 1024 * 1024,
277
+ timeout,
278
+ windowsHide: true,
279
+ });
280
+ evidence.push(writeEvidence(ctx, 'attribute.log', `$ ${argv.join(' ')}\n## stdin\n${input}\n## stdout\n${r.stdout ?? ''}\n## stderr\n${r.stderr ?? ''}${r.error ? `\n## error\n${r.error.message}` : ''}`));
281
+ const fail = (why) => ({ all: `归属命令 ${argv.join(' ')} ${why},见 attribute.log` });
282
+ if (r.error?.code === 'ETIMEDOUT')
283
+ return fail(`超时(${timeout / 1000} 秒)`);
284
+ if (r.error)
285
+ return fail(`无法启动:${r.error.message}`);
286
+ if (r.status !== 0)
287
+ return fail(r.status === null ? `被信号 ${r.signal} 终止` : `退出码 ${r.status}`);
288
+ let out;
289
+ try {
290
+ out = JSON.parse(r.stdout ?? '');
291
+ }
292
+ catch {
293
+ return fail('的输出不是 JSON');
294
+ }
295
+ const { packages: names, reasons = [], all } = (out && typeof out === 'object' ? out : {});
296
+ const why = stringList(reasons);
297
+ if (!out || typeof out !== 'object' || Array.isArray(out) || (all !== undefined && typeof all !== 'boolean') || !why)
298
+ return fail('的输出格式不对(应为 { packages, reasons?, all? })');
299
+ const detail = why.length ? `:${why.join(';')}` : '';
300
+ if (all === true)
301
+ return { all: `包外改动无法归属${detail}` };
302
+ const list = stringList(names);
303
+ if (!list)
304
+ return fail('的输出缺少 packages 包名数组');
305
+ const known = new Set(packages.map((p) => p.name));
306
+ const unknown = list.filter((name) => !known.has(name));
307
+ if (unknown.length)
308
+ return fail(`返回了未知的包 ${unknown.join('、')}`);
309
+ const because = why.length ? `(${why.join(';')})` : '';
310
+ return {
311
+ attributed: new Set(list),
312
+ note: list.length ? `包外改动归属到 ${list.join('、')}${because}` : `包外改动不影响任何包${because}`,
313
+ };
314
+ }
157
315
  /**
158
316
  * 仓库根自己的测试(宁可多跑:根配置若也扫描子包测试,这些测试会再运行一次)。
159
317
  * 包外改动或全量运行:整体运行根 test 脚本。只有包内改动时:根 test 是 vitest run 则在根上以全部包内改动运行一次 related
@@ -169,6 +327,9 @@ function runRoot(root, rootTest, wholeAll, outside, byPackage, runners) {
169
327
  };
170
328
  if (wholeAll)
171
329
  return whole(wholeAll);
330
+ // 包外改动已归属到包时,根自己的测试仍可能受这些改动影响,整体运行
331
+ if (outside)
332
+ return whole(`改动 ${outside} 不属于任何包`);
172
333
  if (changes.length === 0)
173
334
  return undefined;
174
335
  const entry = resolveVitest(root);
@@ -202,6 +363,10 @@ function runPackage(pkg, d, runners) {
202
363
  runners.outcomes.push(runWhole(pkg.dir, d.name, pkg.test, `${pkg.rel}/package.json`, runners));
203
364
  return `${d.name}:整包(${d.mode === 'related' ? '未找到 vitest' : d.reason})`;
204
365
  }
366
+ /** with.sourceGuards:包名 → 相对包目录的守卫测试路径。 */
367
+ function sourceGuards(value) {
368
+ return (value && typeof value === 'object' && !Array.isArray(value) ? value : {});
369
+ }
205
370
  /** with.wholePackages:包名列表,或包名 → 原因。 */
206
371
  function wholePackages(value) {
207
372
  if (Array.isArray(value))
@@ -210,7 +375,7 @@ function wholePackages(value) {
210
375
  return new Map(Object.entries(value).map(([k, v]) => [k, String(v ?? '')]));
211
376
  return new Map();
212
377
  }
213
- function summarize(ctx, outcomes, lines, evidence) {
378
+ function summarize(ctx, files, outcomes, lines, evidence) {
214
379
  const findings = [];
215
380
  const executed = new Map();
216
381
  let total = 0;
@@ -275,7 +440,7 @@ function summarize(ctx, outcomes, lines, evidence) {
275
440
  status: findings.length > 0 ? 'fail' : blocked.length > 0 ? 'blocked' : 'pass',
276
441
  summary: [...lines, verdict].join(';'),
277
442
  findings,
278
- checked: ctx.all ? 'all' : ctx.files,
443
+ checked: ctx.all ? 'all' : files,
279
444
  evidence,
280
445
  obligations: receipts,
281
446
  });
@@ -1 +1 @@
1
- {"version":3,"file":"test-affected.js","sourceRoot":"","sources":["../../src/plugins/test-affected.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"test-affected.js","sourceRoot":"","sources":["../../src/plugins/test-affected.ts"],"names":[],"mappings":"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"}
@@ -15,8 +15,23 @@ export interface ClassifiedChange extends Change {
15
15
  kind: FileKind;
16
16
  }
17
17
  export declare const DEFAULT_IGNORE: string[];
18
- /** 按类别归类改动;删除的文件归为 config(同样需要全部运行)。 */
19
- export declare function classifyChanges(changes: Change[], ignore?: string[]): ClassifiedChange[];
18
+ /** 按类别归类改动;删除的文件归为 config(同样需要全部运行)。ignore 为 glob 列表(相对仓库根)或判定函数。 */
19
+ export declare function classifyChanges(changes: Change[], ignore?: string[] | ((path: string) => boolean)): ClassifiedChange[];
20
+ /** with.ignore:default 为相对仓库根的 glob;packages 按包覆盖(glob 相对包目录),覆盖时替换 default。 */
21
+ export interface IgnoreConfig {
22
+ default: string[];
23
+ packages: Record<string, string[]>;
24
+ }
25
+ export declare const stringList: (value: unknown) => string[] | undefined;
26
+ /**
27
+ * 解析 with.ignore:数组为全局列表(原语义);对象为 { default?, packages? };未给出时为默认值。
28
+ * 写错时返回 error(调用方阻塞):丢弃非法项会退回默认忽略,可能漏测。
29
+ */
30
+ export declare function parseIgnore(value: unknown): IgnoreConfig | {
31
+ error: string;
32
+ };
33
+ /** 按包解析 ignore 的判定函数:文件所属包有覆盖时用覆盖(相对包目录匹配),否则用 default(相对仓库根匹配)。 */
34
+ export declare function ignoreMatcher(config: IgnoreConfig, packages?: WorkspacePackage[]): (path: string) => boolean;
20
35
  /** 需要全部运行的原因(第一个不是 JS/TS 源码的相关改动);没有时返回 null。 */
21
36
  export declare function wholeRunReason(changes: ClassifiedChange[]): string | null;
22
37
  export interface WorkspacePackage {
@@ -36,7 +51,7 @@ export type WorkspaceRead = {
36
51
  };
37
52
  /**
38
53
  * 读出 workspace 包。只支持 `dir` 与 `dir/*` 两种写法;遇到 `**`、`!` 等其他写法,或一个包也没有匹配到时返回 error,
39
- * 由调用方回退为运行仓库根的 test 脚本(不能因为包列表为空而通过)。
54
+ * 由调用方回退为运行仓库根的 test 脚本(关闭根测试时阻塞;不能因为包列表为空而通过)。
40
55
  */
41
56
  export declare function readWorkspace(root: string): WorkspaceRead;
42
57
  /** 文件所属的包(包目录嵌套时取最深的一个)。 */
@@ -63,9 +78,13 @@ export interface DecideOptions {
63
78
  sourceGuards?: Record<string, string[]>;
64
79
  /** 全部运行的原因:给出时每个有 test 脚本的包都整包。 */
65
80
  wholeAll?: string;
81
+ /** 包外改动归属到的包(with.attribute 的结果):按配置改动对待,整包运行并带动下游整包。 */
82
+ attributed?: Set<string>;
83
+ /** 改动不带出下游候选的包(with.noPropagate);自身仍按规则判定。 */
84
+ noPropagate?: Set<string>;
66
85
  }
67
86
  /**
68
- * 逐包判定模式:候选包为有改动的包及其下游。
87
+ * 逐包判定模式:候选包为有改动(或被归属包外改动)的包及其下游;noPropagate 中的包不带出下游。
69
88
  * changes:包名 → 该包的改动(不含 ignored)。
70
89
  */
71
90
  export declare function decideTestModes(packages: WorkspacePackage[], changes: Map<string, PackageChange[]>, opts?: DecideOptions): Decision[];
@@ -5,14 +5,58 @@ import { parse } from 'yaml';
5
5
  const CONFIG = /(?:^|\/)(?:package\.json|tsconfig[^/]*\.json|vite(?:st)?[^/]*\.config\.[cm]?[jt]s|vitest\.(?:workspace|projects)(?:\.[^/]*)?)$/;
6
6
  const CODE = /\.[cm]?[jt]sx?$/;
7
7
  export const DEFAULT_IGNORE = ['**/*.md'];
8
- /** 按类别归类改动;删除的文件归为 config(同样需要全部运行)。 */
8
+ /** 按类别归类改动;删除的文件归为 config(同样需要全部运行)。ignore 为 glob 列表(相对仓库根)或判定函数。 */
9
9
  export function classifyChanges(changes, ignore = DEFAULT_IGNORE) {
10
- const ignored = ignore.length ? picomatch(ignore, { dot: true }) : () => false;
10
+ const ignored = typeof ignore === 'function' ? ignore : globMatcher(ignore);
11
11
  return changes.map((c) => {
12
12
  const kind = ignored(c.path) ? 'ignored' : c.deleted || CONFIG.test(c.path) ? 'config' : CODE.test(c.path) ? 'code' : 'data';
13
13
  return { ...c, kind };
14
14
  });
15
15
  }
16
+ const globMatcher = (globs) => (globs.length ? picomatch(globs, { dot: true }) : () => false);
17
+ export const stringList = (value) => Array.isArray(value) && value.every((v) => typeof v === 'string') ? value : undefined;
18
+ const isRecord = (value) => !!value && typeof value === 'object' && !Array.isArray(value);
19
+ /**
20
+ * 解析 with.ignore:数组为全局列表(原语义);对象为 { default?, packages? };未给出时为默认值。
21
+ * 写错时返回 error(调用方阻塞):丢弃非法项会退回默认忽略,可能漏测。
22
+ */
23
+ export function parseIgnore(value) {
24
+ if (value === undefined || value === null)
25
+ return { default: DEFAULT_IGNORE, packages: {} };
26
+ if (Array.isArray(value)) {
27
+ const list = stringList(value);
28
+ return list ? { default: list, packages: {} } : { error: 'with.ignore 数组中有非字符串项' };
29
+ }
30
+ if (!isRecord(value))
31
+ return { error: 'with.ignore 应为 glob 数组或 { default, packages } 对象' };
32
+ const { default: base, packages, ...rest } = value;
33
+ const extra = Object.keys(rest);
34
+ if (extra.length)
35
+ return { error: `with.ignore 有未知的键 ${extra.join('、')}(只支持 default、packages)` };
36
+ const defaults = base === undefined ? DEFAULT_IGNORE : stringList(base);
37
+ if (!defaults)
38
+ return { error: 'with.ignore.default 应为字符串数组' };
39
+ if (packages !== undefined && !isRecord(packages))
40
+ return { error: 'with.ignore.packages 应为 { 包名: [glob] } 对象' };
41
+ const overrides = {};
42
+ for (const [name, globs] of Object.entries(packages ?? {})) {
43
+ const list = stringList(globs);
44
+ if (!list)
45
+ return { error: `with.ignore.packages.${name} 应为字符串数组` };
46
+ overrides[name] = list;
47
+ }
48
+ return { default: defaults, packages: overrides };
49
+ }
50
+ /** 按包解析 ignore 的判定函数:文件所属包有覆盖时用覆盖(相对包目录匹配),否则用 default(相对仓库根匹配)。 */
51
+ export function ignoreMatcher(config, packages = []) {
52
+ const base = globMatcher(config.default);
53
+ const overrides = new Map(Object.entries(config.packages).map(([name, globs]) => [name, globMatcher(globs)]));
54
+ return (path) => {
55
+ const pkg = owningPackage(packages, path);
56
+ const own = pkg && overrides.get(pkg.name);
57
+ return own ? own(path.slice(pkg.rel.length + 1)) : base(path);
58
+ };
59
+ }
16
60
  /** 需要全部运行的原因(第一个不是 JS/TS 源码的相关改动);没有时返回 null。 */
17
61
  export function wholeRunReason(changes) {
18
62
  const hit = changes.find((c) => c.kind === 'config' || c.kind === 'data');
@@ -41,7 +85,7 @@ function workspacePatterns(root) {
41
85
  }
42
86
  /**
43
87
  * 读出 workspace 包。只支持 `dir` 与 `dir/*` 两种写法;遇到 `**`、`!` 等其他写法,或一个包也没有匹配到时返回 error,
44
- * 由调用方回退为运行仓库根的 test 脚本(不能因为包列表为空而通过)。
88
+ * 由调用方回退为运行仓库根的 test 脚本(关闭根测试时阻塞;不能因为包列表为空而通过)。
45
89
  */
46
90
  export function readWorkspace(root) {
47
91
  const patterns = workspacePatterns(root);
@@ -105,15 +149,18 @@ function upstreamClosure(packages) {
105
149
  return new Map(packages.map((p) => [p.name, visit(p.name)]));
106
150
  }
107
151
  /**
108
- * 逐包判定模式:候选包为有改动的包及其下游。
152
+ * 逐包判定模式:候选包为有改动(或被归属包外改动)的包及其下游;noPropagate 中的包不带出下游。
109
153
  * changes:包名 → 该包的改动(不含 ignored)。
110
154
  */
111
155
  export function decideTestModes(packages, changes, opts = {}) {
112
156
  const ups = upstreamClosure(packages);
157
+ const attributed = opts.attributed ?? new Set();
113
158
  const relevant = (name) => (changes.get(name) ?? []).filter((c) => c.kind !== 'ignored');
114
- const seeds = packages.filter((p) => relevant(p.name).length > 0).map((p) => p.name);
159
+ const seeds = packages.filter((p) => relevant(p.name).length > 0 || attributed.has(p.name)).map((p) => p.name);
160
+ const propagating = seeds.filter((name) => !opts.noPropagate?.has(name));
161
+ const dirty = (name) => attributed.has(name) || relevant(name).some((c) => c.kind !== 'code');
115
162
  return packages
116
- .filter((p) => opts.wholeAll || seeds.includes(p.name) || ups.get(p.name).some((up) => seeds.includes(up)))
163
+ .filter((p) => opts.wholeAll || seeds.includes(p.name) || ups.get(p.name).some((up) => propagating.includes(up)))
117
164
  .map((pkg) => {
118
165
  const { name } = pkg;
119
166
  if (!pkg.test)
@@ -121,20 +168,26 @@ export function decideTestModes(packages, changes, opts = {}) {
121
168
  if (opts.wholeAll)
122
169
  return { name, mode: 'whole', reason: opts.wholeAll };
123
170
  const own = relevant(name);
124
- const changedUps = ups.get(name).filter((up) => relevant(up).length > 0);
171
+ const changedUps = ups.get(name).filter((up) => propagating.includes(up));
125
172
  if (pkg.test.trim() !== 'vitest run')
126
173
  return { name, mode: 'whole', reason: 'test 脚本不是 vitest run' };
127
174
  const listed = opts.wholePackages?.get(name);
128
175
  if (listed !== undefined)
129
176
  return { name, mode: 'whole', reason: listed || '配置为整包运行' };
177
+ if (attributed.has(name))
178
+ return { name, mode: 'whole', reason: '包外改动归属到本包' };
130
179
  const nonCode = own.find((c) => c.kind !== 'code');
131
180
  if (nonCode) {
132
181
  const why = nonCode.deleted ? '删除文件' : nonCode.kind === 'config' ? '配置改动' : '非 JS/TS 改动';
133
182
  return { name, mode: 'whole', reason: `${why} ${nonCode.rel}` };
134
183
  }
135
- const upNonCode = changedUps.find((up) => relevant(up).some((c) => c.kind !== 'code'));
184
+ const upNonCode = changedUps.find(dirty);
136
185
  if (upNonCode)
137
- return { name, mode: 'whole', reason: `上游 ${upNonCode} 有配置、删除或非 JS/TS 改动` };
186
+ return {
187
+ name,
188
+ mode: 'whole',
189
+ reason: attributed.has(upNonCode) ? `上游 ${upNonCode} 被归属包外改动` : `上游 ${upNonCode} 有配置、删除或非 JS/TS 改动`,
190
+ };
138
191
  const inputs = own.map((c) => c.abs);
139
192
  if (own.length > 0)
140
193
  inputs.push(...(opts.sourceGuards?.[name] ?? []).map((rel) => join(pkg.dir, rel)));
@@ -1 +1 @@
1
- {"version":3,"file":"test-scope.js","sourceRoot":"","sources":["../src/test-scope.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"test-scope.js","sourceRoot":"","sources":["../src/test-scope.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sumi/plugins-core",
3
- "version": "0.5.1",
3
+ "version": "0.6.1",
4
4
  "description": "通用检查插件",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -13,7 +13,7 @@
13
13
  "./package.json": "./package.json"
14
14
  },
15
15
  "dependencies": {
16
- "@sumi/plugin-sdk": "0.5.1",
16
+ "@sumi/plugin-sdk": "0.6.1",
17
17
  "yaml": "2.9.1",
18
18
  "picomatch": "4.0.7"
19
19
  },
@@ -24,6 +24,7 @@ plugins:
24
24
  kind: check
25
25
  command: [node, ./dist/plugins/typecheck.js]
26
26
  timeout: 300
27
+ # 不得声明 triggers:内核先按 exclude 过滤再匹配 triggers,只改 exclude 路径时本步骤将不运行,插件自行求改动的逻辑执行不到
27
28
  - id: core/test-affected
28
29
  version: 0.1.0
29
30
  description: 运行受影响的测试
@@ -0,0 +1,2 @@
1
+ /** 本插件声明的推送前 hook(pre-push: gate)按统一格式生成,guard 据此校验完整性。 */
2
+ export declare const PRE_PUSH_HOOK: string;
@@ -0,0 +1,4 @@
1
+ import { gitHookScript } from '@ctl/plugin-sdk';
2
+ /** 本插件声明的推送前 hook(pre-push: gate)按统一格式生成,guard 据此校验完整性。 */
3
+ export const PRE_PUSH_HOOK = gitHookScript(['gate']);
4
+ //# sourceMappingURL=hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,2DAA2D;AAC3D,MAAM,CAAC,MAAM,aAAa,GAAG,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sumi/plugins-governance",
3
- "version": "0.5.1",
3
+ "version": "0.6.1",
4
4
  "description": "治理插件",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -13,7 +13,7 @@
13
13
  "./package.json": "./package.json"
14
14
  },
15
15
  "dependencies": {
16
- "@sumi/plugin-sdk": "0.5.1",
16
+ "@sumi/plugin-sdk": "0.6.1",
17
17
  "yaml": "2.9.1",
18
18
  "picomatch": "4.0.7"
19
19
  },
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sumi/plugins-openspec",
3
- "version": "0.5.1",
3
+ "version": "0.6.1",
4
4
  "description": "OpenSpec 插件",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -13,7 +13,7 @@
13
13
  "./package.json": "./package.json"
14
14
  },
15
15
  "dependencies": {
16
- "@sumi/plugin-sdk": "0.5.1"
16
+ "@sumi/plugin-sdk": "0.6.1"
17
17
  },
18
18
  "files": [
19
19
  "dist",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sumi/plugins-precedent",
3
- "version": "0.5.1",
3
+ "version": "0.6.1",
4
4
  "description": "判例插件",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -13,10 +13,10 @@
13
13
  "./package.json": "./package.json"
14
14
  },
15
15
  "dependencies": {
16
- "@sumi/plugin-sdk": "0.5.1",
16
+ "@sumi/plugin-sdk": "0.6.1",
17
17
  "yaml": "2.9.1",
18
18
  "picomatch": "4.0.7",
19
- "@sumi/plugins-governance": "0.5.1"
19
+ "@sumi/plugins-governance": "0.6.1"
20
20
  },
21
21
  "files": [
22
22
  "dist",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sumi/plugins-review",
3
- "version": "0.5.1",
3
+ "version": "0.6.1",
4
4
  "description": "评审插件",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -13,10 +13,10 @@
13
13
  "./package.json": "./package.json"
14
14
  },
15
15
  "dependencies": {
16
- "@sumi/plugin-sdk": "0.5.1",
16
+ "@sumi/plugin-sdk": "0.6.1",
17
17
  "yaml": "2.9.1",
18
18
  "picomatch": "4.0.7",
19
- "@sumi/plugins-governance": "0.5.1"
19
+ "@sumi/plugins-governance": "0.6.1"
20
20
  },
21
21
  "files": [
22
22
  "dist",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fantasticit/sumi",
3
- "version": "0.5.1",
3
+ "version": "0.6.1",
4
4
  "description": "sumi 命令行",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -13,14 +13,14 @@
13
13
  "./package.json": "./package.json"
14
14
  },
15
15
  "dependencies": {
16
- "@sumi/create": "0.5.1",
17
- "@sumi/kernel": "0.5.1",
18
- "@sumi/plugin-sdk": "0.5.1",
19
- "@sumi/plugins-core": "0.5.1",
20
- "@sumi/plugins-governance": "0.5.1",
21
- "@sumi/plugins-openspec": "0.5.1",
22
- "@sumi/plugins-precedent": "0.5.1",
23
- "@sumi/plugins-review": "0.5.1",
16
+ "@sumi/create": "0.6.1",
17
+ "@sumi/kernel": "0.6.1",
18
+ "@sumi/plugin-sdk": "0.6.1",
19
+ "@sumi/plugins-core": "0.6.1",
20
+ "@sumi/plugins-governance": "0.6.1",
21
+ "@sumi/plugins-openspec": "0.6.1",
22
+ "@sumi/plugins-precedent": "0.6.1",
23
+ "@sumi/plugins-review": "0.6.1",
24
24
  "tar": "7.5.22",
25
25
  "yaml": "2.9.1"
26
26
  },
@@ -42,5 +42,5 @@
42
42
  "tar",
43
43
  "yaml"
44
44
  ],
45
- "sumiBuild": "sha256:41604b38ed0dcbc266d974d96f268b55a6f6f6cc55b8f50928be120668fcc42b"
45
+ "sumiBuild": "sha256:bbd8fadbd8110c8a121129d43ad40f1e026b188df9505d9688d5f82392704b87"
46
46
  }