@fantasticit/sumi 0.7.4 → 0.7.6

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.
Files changed (115) hide show
  1. package/README.md +27 -25
  2. package/dist/adapters.d.ts +24 -3
  3. package/dist/adapters.js +101 -15
  4. package/dist/adapters.js.map +1 -1
  5. package/dist/agent-hooks.d.ts +18 -0
  6. package/dist/agent-hooks.js +144 -5
  7. package/dist/agent-hooks.js.map +1 -1
  8. package/dist/agents.js +36 -3
  9. package/dist/agents.js.map +1 -1
  10. package/dist/cli.d.ts +3 -1
  11. package/dist/cli.js +4 -4
  12. package/dist/cli.js.map +1 -1
  13. package/dist/context.d.ts +27 -0
  14. package/dist/context.js +28 -10
  15. package/dist/context.js.map +1 -1
  16. package/dist/index.d.ts +1 -0
  17. package/dist/index.js +1 -0
  18. package/dist/index.js.map +1 -1
  19. package/dist/instructions.js +4 -4
  20. package/dist/instructions.js.map +1 -1
  21. package/dist/task.d.ts +1 -0
  22. package/dist/task.js +170 -0
  23. package/dist/task.js.map +1 -0
  24. package/node_modules/@sumi/create/dist/bin.d.ts +2 -0
  25. package/node_modules/@sumi/create/dist/bin.js +52 -0
  26. package/node_modules/@sumi/create/dist/bin.js.map +1 -0
  27. package/node_modules/@sumi/create/package.json +1 -1
  28. package/node_modules/@sumi/kernel/dist/config.d.ts +5 -0
  29. package/node_modules/@sumi/kernel/dist/config.js +16 -0
  30. package/node_modules/@sumi/kernel/dist/config.js.map +1 -1
  31. package/node_modules/@sumi/kernel/dist/engine.js +1 -0
  32. package/node_modules/@sumi/kernel/dist/engine.js.map +1 -1
  33. package/node_modules/@sumi/kernel/dist/registry.d.ts +2 -0
  34. package/node_modules/@sumi/kernel/dist/registry.js +15 -1
  35. package/node_modules/@sumi/kernel/dist/registry.js.map +1 -1
  36. package/node_modules/@sumi/kernel/package.json +2 -2
  37. package/node_modules/@sumi/plugin-sdk/README.md +62 -36
  38. package/node_modules/@sumi/plugin-sdk/dist/index.d.ts +1 -0
  39. package/node_modules/@sumi/plugin-sdk/dist/index.js +1 -0
  40. package/node_modules/@sumi/plugin-sdk/dist/index.js.map +1 -1
  41. package/node_modules/@sumi/plugin-sdk/dist/protocol.d.ts +64 -1
  42. package/node_modules/@sumi/plugin-sdk/dist/protocol.js +17 -0
  43. package/node_modules/@sumi/plugin-sdk/dist/protocol.js.map +1 -1
  44. package/node_modules/@sumi/plugin-sdk/dist/rules.d.ts +1 -4
  45. package/node_modules/@sumi/plugin-sdk/dist/rules.js.map +1 -1
  46. package/node_modules/@sumi/plugin-sdk/dist/session-context.d.ts +7 -0
  47. package/node_modules/@sumi/plugin-sdk/dist/session-context.js +62 -0
  48. package/node_modules/@sumi/plugin-sdk/dist/session-context.js.map +1 -0
  49. package/node_modules/@sumi/plugin-sdk/dist/validate.js +51 -2
  50. package/node_modules/@sumi/plugin-sdk/dist/validate.js.map +1 -1
  51. package/node_modules/@sumi/plugin-sdk/package.json +1 -1
  52. package/node_modules/@sumi/plugins-core/README.md +14 -12
  53. package/node_modules/@sumi/plugins-core/dist/plugins/exec.js +7 -2
  54. package/node_modules/@sumi/plugins-core/dist/plugins/exec.js.map +1 -1
  55. package/node_modules/@sumi/plugins-core/dist/plugins/test-affected.js +12 -3
  56. package/node_modules/@sumi/plugins-core/dist/plugins/test-affected.js.map +1 -1
  57. package/node_modules/@sumi/plugins-core/dist/test-scope.d.ts +1 -1
  58. package/node_modules/@sumi/plugins-core/dist/test-scope.js +12 -6
  59. package/node_modules/@sumi/plugins-core/dist/test-scope.js.map +1 -1
  60. package/node_modules/@sumi/plugins-core/dist/tool-batches.d.ts +11 -0
  61. package/node_modules/@sumi/plugins-core/dist/tool-batches.js +41 -0
  62. package/node_modules/@sumi/plugins-core/dist/tool-batches.js.map +1 -0
  63. package/node_modules/@sumi/plugins-core/dist/vitest-runner.js +129 -5
  64. package/node_modules/@sumi/plugins-core/dist/vitest-runner.js.map +1 -1
  65. package/node_modules/@sumi/plugins-core/instructions/bugfix.md +9 -0
  66. package/node_modules/@sumi/plugins-core/instructions/feature.md +9 -0
  67. package/node_modules/@sumi/plugins-core/package.json +4 -4
  68. package/node_modules/@sumi/plugins-core/sumi-plugins.yaml +2 -1
  69. package/node_modules/@sumi/plugins-governance/README.md +10 -9
  70. package/node_modules/@sumi/plugins-governance/dist/checkout.d.ts +12 -2
  71. package/node_modules/@sumi/plugins-governance/dist/checkout.js +40 -3
  72. package/node_modules/@sumi/plugins-governance/dist/checkout.js.map +1 -1
  73. package/node_modules/@sumi/plugins-governance/dist/commands/gate.js +6 -2
  74. package/node_modules/@sumi/plugins-governance/dist/commands/gate.js.map +1 -1
  75. package/node_modules/@sumi/plugins-governance/dist/commands/pr-report.js +1 -1
  76. package/node_modules/@sumi/plugins-governance/dist/commands/pr-report.js.map +1 -1
  77. package/node_modules/@sumi/plugins-governance/dist/gate-cache.d.ts +25 -0
  78. package/node_modules/@sumi/plugins-governance/dist/gate-cache.js +83 -0
  79. package/node_modules/@sumi/plugins-governance/dist/gate-cache.js.map +1 -0
  80. package/node_modules/@sumi/plugins-governance/dist/hooks.d.ts +2 -0
  81. package/node_modules/@sumi/plugins-governance/dist/hooks.js +4 -0
  82. package/node_modules/@sumi/plugins-governance/dist/hooks.js.map +1 -0
  83. package/node_modules/@sumi/plugins-governance/dist/protected.d.ts +1 -0
  84. package/node_modules/@sumi/plugins-governance/instructions/push.md +1 -1
  85. package/node_modules/@sumi/plugins-governance/package.json +2 -2
  86. package/node_modules/@sumi/plugins-openspec/package.json +2 -2
  87. package/node_modules/@sumi/plugins-openspec/sumi-plugins.yaml +2 -0
  88. package/node_modules/@sumi/plugins-precedent/README.md +8 -0
  89. package/node_modules/@sumi/plugins-precedent/dist/after-edit-context.d.ts +28 -0
  90. package/node_modules/@sumi/plugins-precedent/dist/after-edit-context.js +204 -0
  91. package/node_modules/@sumi/plugins-precedent/dist/after-edit-context.js.map +1 -0
  92. package/node_modules/@sumi/plugins-precedent/dist/commands/after-edit-context.d.ts +1 -0
  93. package/node_modules/@sumi/plugins-precedent/dist/commands/after-edit-context.js +13 -0
  94. package/node_modules/@sumi/plugins-precedent/dist/commands/after-edit-context.js.map +1 -0
  95. package/node_modules/@sumi/plugins-precedent/dist/commands/before-edit-context.d.ts +1 -0
  96. package/node_modules/@sumi/plugins-precedent/dist/commands/before-edit-context.js +10 -0
  97. package/node_modules/@sumi/plugins-precedent/dist/commands/before-edit-context.js.map +1 -0
  98. package/node_modules/@sumi/plugins-precedent/dist/commands/context.js +15 -5
  99. package/node_modules/@sumi/plugins-precedent/dist/commands/context.js.map +1 -1
  100. package/node_modules/@sumi/plugins-precedent/dist/commands/on-prompt-context.d.ts +1 -0
  101. package/node_modules/@sumi/plugins-precedent/dist/commands/on-prompt-context.js +55 -0
  102. package/node_modules/@sumi/plugins-precedent/dist/commands/on-prompt-context.js.map +1 -0
  103. package/node_modules/@sumi/plugins-precedent/dist/model.d.ts +2 -0
  104. package/node_modules/@sumi/plugins-precedent/dist/model.js.map +1 -1
  105. package/node_modules/@sumi/plugins-precedent/package.json +3 -3
  106. package/node_modules/@sumi/plugins-precedent/sumi-plugins.yaml +29 -0
  107. package/node_modules/@sumi/plugins-review/dist/commands/context.js +18 -3
  108. package/node_modules/@sumi/plugins-review/dist/commands/context.js.map +1 -1
  109. package/node_modules/@sumi/plugins-review/dist/review.d.ts +1 -0
  110. package/node_modules/@sumi/plugins-review/dist/review.js.map +1 -1
  111. package/node_modules/@sumi/plugins-review/package.json +3 -3
  112. package/package.json +10 -10
  113. package/node_modules/@sumi/kernel/test/fixtures/fake-plugin.mjs +0 -44
  114. package/node_modules/@sumi/kernel/test/fixtures/py-plugin.py +0 -3
  115. package/node_modules/@sumi/plugin-sdk/test/isolate-tmpdir.ts +0 -27
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fantasticit/sumi",
3
- "version": "0.7.4",
3
+ "version": "0.7.6",
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.7.4",
17
- "@sumi/kernel": "0.7.4",
18
- "@sumi/plugin-sdk": "0.7.4",
19
- "@sumi/plugins-core": "0.7.4",
20
- "@sumi/plugins-governance": "0.7.4",
21
- "@sumi/plugins-openspec": "0.7.4",
22
- "@sumi/plugins-precedent": "0.7.4",
23
- "@sumi/plugins-review": "0.7.4",
16
+ "@sumi/create": "0.7.6",
17
+ "@sumi/kernel": "0.7.6",
18
+ "@sumi/plugin-sdk": "0.7.6",
19
+ "@sumi/plugins-core": "0.7.6",
20
+ "@sumi/plugins-governance": "0.7.6",
21
+ "@sumi/plugins-openspec": "0.7.6",
22
+ "@sumi/plugins-precedent": "0.7.6",
23
+ "@sumi/plugins-review": "0.7.6",
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:01d06e4e207af63305b2f17d9a3ac49e01e99107e27d93b392941ebcd8c90ae5"
45
+ "sumiBuild": "sha256:830ed000d447608463cbea2555b5ba350c9dc3e1daee309288bbb1b64c409b01"
46
46
  }
@@ -1,44 +0,0 @@
1
- // 测试用插件:行为由步骤配置 with 决定。
2
- import { spawn } from 'node:child_process';
3
- import { writeFileSync } from 'node:fs';
4
-
5
- let input = '';
6
- for await (const chunk of process.stdin) input += chunk;
7
- const ctx = JSON.parse(input);
8
- const c = ctx.config;
9
- if (c.touch) writeFileSync(`${ctx.repoRoot}/${c.touch}`, String(Date.now()));
10
- if (c.assertNoGitEnv) {
11
- // hook 中 git 导出的变量指向当前仓库,插件看到它们就可能把操作写进错误的仓库。
12
- const leaked = ['GIT_DIR', 'GIT_INDEX_FILE', 'GIT_WORK_TREE'].filter((v) => process.env[v] !== undefined);
13
- if (leaked.length) {
14
- c.status = 'fail';
15
- c.summary = `泄漏:${leaked.join(',')}`;
16
- }
17
- }
18
- if (c.orphan) {
19
- const child = spawn(process.execPath, ['-e', 'setTimeout(() => {}, 30000)'], { stdio: 'ignore' });
20
- writeFileSync(`${ctx.evidenceDir}/orphan.pid`, String(child.pid));
21
- child.unref();
22
- }
23
- if (c.sleep) await new Promise((r) => setTimeout(r, c.sleep * 1000));
24
- if (c.raw !== undefined) {
25
- process.stdout.write(c.raw);
26
- process.exit(c.exit ?? 0);
27
- }
28
- const status = c.status ?? 'pass';
29
- const result = {
30
- status,
31
- summary: c.summary ?? `${ctx.stepId} ${status}`,
32
- findings: c.findings ?? [],
33
- checked: ctx.files,
34
- evidence: [],
35
- next: c.next,
36
- metrics: c.metrics,
37
- plan: c.plan,
38
- report: c.report,
39
- obligations: ctx.obligations.map((o) => ({ id: o.id, outcome: (c.receipts ?? {})[o.id] ?? 'passed' })),
40
- };
41
- if (c.echoFiles) result.summary = ctx.files.join(',');
42
- process.stdout.write(JSON.stringify(result));
43
- process.exitCode = c.exit ?? (status === 'pass' ? 0 : status === 'fail' ? 1 : 2);
44
- if (c.signal) process.kill(process.pid, c.signal);
@@ -1,3 +0,0 @@
1
- import json, sys
2
- ctx = json.load(sys.stdin)
3
- print(json.dumps({"status": "pass", "summary": "python " + ctx["stepId"], "findings": [], "checked": ctx["files"], "evidence": []}), end="")
@@ -1,27 +0,0 @@
1
- /**
2
- * 各包 vitest 配置共用的 setupFiles:每个测试文件运行前把系统临时目录(TMPDIR,Windows 为 TEMP/TMP)指向
3
- * 一个专用目录,测试文件结束后整体删除。
4
- *
5
- * 测试创建的仓库、门禁检出(失败时会保留)、自检与命令的临时文件都经 os.tmpdir() 落在这里;
6
- * 测试启动的子进程(sumi、git hook、门禁)继承该环境,同样写入这里。直接用 vitest CLI、`pnpm test`,
7
- * 或由 core/test-affected(vitest Node API)与 core/coverage 经根配置的 projects 运行时都会加载本文件。
8
- */
9
- import { mkdtempSync, realpathSync, rmSync } from 'node:fs';
10
- import { tmpdir } from 'node:os';
11
- import { join } from 'node:path';
12
- import { afterAll } from 'vitest';
13
-
14
- const NAMES = ['TMPDIR', 'TMP', 'TEMP'] as const;
15
- const saved = Object.fromEntries(NAMES.map((name) => [name, process.env[name]]));
16
- // 取真实路径:macOS 的 /var 是 /private/var 的符号链接,git 与子进程报告的路径是后者
17
- const dir = realpathSync(mkdtempSync(join(tmpdir(), 'sumi-test-')));
18
- for (const name of NAMES) process.env[name] = dir;
19
-
20
- // 本文件的 afterAll 先于测试文件注册,按 vitest 默认的 stack 顺序最后运行,测试文件自己的清理先完成
21
- afterAll(() => {
22
- for (const name of NAMES) {
23
- if (saved[name] === undefined) delete process.env[name];
24
- else process.env[name] = saved[name];
25
- }
26
- rmSync(dir, { recursive: true, force: true, maxRetries: 5, retryDelay: 200 });
27
- });