@fantasticit/sumi 0.6.1 → 0.7.0

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 (57) hide show
  1. package/README.md +3 -1
  2. package/dist/agents.js +1 -1
  3. package/dist/agents.js.map +1 -1
  4. package/dist/cli.d.ts +10 -1
  5. package/dist/cli.js +26 -5
  6. package/dist/cli.js.map +1 -1
  7. package/dist/fix.js +1 -1
  8. package/dist/fix.js.map +1 -1
  9. package/dist/launcher.cjs +23 -3
  10. package/dist/launcher.d.ts +10 -1
  11. package/dist/launcher.js +24 -4
  12. package/dist/launcher.js.map +1 -1
  13. package/dist/scaffold-commands.js +2 -2
  14. package/dist/scaffold-commands.js.map +1 -1
  15. package/dist/vendor.js +1 -1
  16. package/dist/vendor.js.map +1 -1
  17. package/node_modules/@sumi/create/package.json +1 -1
  18. package/node_modules/@sumi/kernel/package.json +2 -2
  19. package/node_modules/@sumi/plugin-sdk/README.md +17 -16
  20. package/node_modules/@sumi/plugin-sdk/dist/command-args.d.ts +22 -0
  21. package/node_modules/@sumi/plugin-sdk/dist/command-args.js +44 -0
  22. package/node_modules/@sumi/plugin-sdk/dist/command-args.js.map +1 -0
  23. package/node_modules/@sumi/plugin-sdk/dist/index.d.ts +1 -0
  24. package/node_modules/@sumi/plugin-sdk/dist/index.js +1 -0
  25. package/node_modules/@sumi/plugin-sdk/dist/index.js.map +1 -1
  26. package/node_modules/@sumi/plugin-sdk/package.json +1 -1
  27. package/node_modules/@sumi/plugins-core/README.md +1 -1
  28. package/node_modules/@sumi/plugins-core/dist/commands/adopt.js +3 -1
  29. package/node_modules/@sumi/plugins-core/dist/commands/adopt.js.map +1 -1
  30. package/node_modules/@sumi/plugins-core/dist/commands/baseline.js +4 -2
  31. package/node_modules/@sumi/plugins-core/dist/commands/baseline.js.map +1 -1
  32. package/node_modules/@sumi/plugins-core/dist/plugins/coverage.js +57 -5
  33. package/node_modules/@sumi/plugins-core/dist/plugins/coverage.js.map +1 -1
  34. package/node_modules/@sumi/plugins-core/package.json +2 -2
  35. package/node_modules/@sumi/plugins-governance/README.md +18 -8
  36. package/node_modules/@sumi/plugins-governance/dist/commands/approve.js +2 -0
  37. package/node_modules/@sumi/plugins-governance/dist/commands/approve.js.map +1 -1
  38. package/node_modules/@sumi/plugins-governance/dist/commands/pr-report.js +24 -20
  39. package/node_modules/@sumi/plugins-governance/dist/commands/pr-report.js.map +1 -1
  40. package/node_modules/@sumi/plugins-governance/dist/commands/unlock.js +2 -0
  41. package/node_modules/@sumi/plugins-governance/dist/commands/unlock.js.map +1 -1
  42. package/node_modules/@sumi/plugins-governance/dist/pr-report-publish.d.ts +48 -0
  43. package/node_modules/@sumi/plugins-governance/dist/pr-report-publish.js +181 -0
  44. package/node_modules/@sumi/plugins-governance/dist/pr-report-publish.js.map +1 -0
  45. package/node_modules/@sumi/plugins-governance/dist/pr-report-status.js +4 -1
  46. package/node_modules/@sumi/plugins-governance/dist/pr-report-status.js.map +1 -1
  47. package/node_modules/@sumi/plugins-governance/instructions/push.md +1 -0
  48. package/node_modules/@sumi/plugins-governance/package.json +2 -2
  49. package/node_modules/@sumi/plugins-governance/sumi-plugins.yaml +5 -1
  50. package/node_modules/@sumi/plugins-openspec/package.json +2 -2
  51. package/node_modules/@sumi/plugins-precedent/dist/commands/promote.js +5 -0
  52. package/node_modules/@sumi/plugins-precedent/dist/commands/promote.js.map +1 -1
  53. package/node_modules/@sumi/plugins-precedent/package.json +3 -3
  54. package/node_modules/@sumi/plugins-review/dist/commands/submit.js +2 -0
  55. package/node_modules/@sumi/plugins-review/dist/commands/submit.js.map +1 -1
  56. package/node_modules/@sumi/plugins-review/package.json +3 -3
  57. package/package.json +10 -10
@@ -0,0 +1,48 @@
1
+ import type { CommandResult } from './pr-report-status.js';
2
+ /** gh pr comment 单次最多接受的附件数。 */
3
+ export declare const MAX_ATTACHMENTS = 50;
4
+ export declare const PR_REPORT_USAGE = "\u7528\u6CD5\uFF1Asumi pr-report <PR \u53F7> [--attach <\u6587\u4EF6>[#\u8BF4\u660E]]...";
5
+ export interface PrReportArgs {
6
+ pr: string;
7
+ attach: string[];
8
+ }
9
+ /** 解析 pr-report 的参数:一个 PR 号,任意个 --attach <值> / --attach=<值>,位置不限。出错时返回错误说明。 */
10
+ export declare function parsePrReportArgs(argv: string[]): PrReportArgs | {
11
+ error: string;
12
+ };
13
+ /**
14
+ * 调用者所在目录。插件命令由 CLI 在项目根目录下启动,调用者的目录只能从 shell 维护的 PWD 得知;
15
+ * PWD 缺失、不是目录或不在项目根目录之内(调用者目录一定在根目录之内,否则 CLI 找不到项目)时退回根目录。
16
+ */
17
+ export declare function callerDir(root: string, env?: NodeJS.ProcessEnv): string;
18
+ /**
19
+ * 校验附件并转为 gh 可用的参数值:路径按 cwd 解析为绝对路径,保留 `#说明`。
20
+ * 与 gh 的解析一致:整串本身是存在的文件时以整串为路径,否则以最后一个 `#` 之前的部分为路径。
21
+ */
22
+ export declare function resolveAttachments(specs: string[], cwd: string): {
23
+ attach: string[];
24
+ } | {
25
+ error: string;
26
+ };
27
+ export type GhRunner = (args: string[]) => CommandResult;
28
+ export declare function ghRunner(cwd: string): GhRunner;
29
+ export type PublishResult = {
30
+ ok: true;
31
+ action: 'created' | 'updated' | 'replaced';
32
+ attachments: number;
33
+ warning?: string;
34
+ } | {
35
+ ok: false;
36
+ message: string;
37
+ };
38
+ /**
39
+ * 发布报告评论。无附件时:已有报告评论则原地更新,否则新建。
40
+ * 有附件时:编辑评论无法上传附件,因此总是用 gh pr comment --attach 新建;已有报告评论时新建成功后再删除全部旧报告评论,
41
+ * 新建失败则旧报告保留;删除失败不影响已发布的新报告,返回警告。
42
+ */
43
+ export declare function publishReport(options: {
44
+ pr: string;
45
+ bodyFile: string;
46
+ attach: string[];
47
+ gh: GhRunner;
48
+ }): PublishResult;
@@ -0,0 +1,181 @@
1
+ import { realpathSync, statSync } from 'node:fs';
2
+ import { isAbsolute, relative, resolve } from 'node:path';
3
+ import { spawnCommandSync } from '@sumi/plugin-sdk';
4
+ import { PR_REPORT_MARKER } from './pr-report-markers.js';
5
+ /** gh pr comment 单次最多接受的附件数。 */
6
+ export const MAX_ATTACHMENTS = 50;
7
+ export const PR_REPORT_USAGE = '用法:sumi pr-report <PR 号> [--attach <文件>[#说明]]...';
8
+ /** 解析 pr-report 的参数:一个 PR 号,任意个 --attach <值> / --attach=<值>,位置不限。出错时返回错误说明。 */
9
+ export function parsePrReportArgs(argv) {
10
+ const attach = [];
11
+ let pr;
12
+ for (let i = 0; i < argv.length; i++) {
13
+ const arg = argv[i];
14
+ if (arg === '--attach') {
15
+ const value = argv[i + 1];
16
+ if (value === undefined || value === '' || value.startsWith('--'))
17
+ return { error: `--attach 缺少文件\n${PR_REPORT_USAGE}` };
18
+ attach.push(value);
19
+ i++;
20
+ }
21
+ else if (arg.startsWith('--attach=')) {
22
+ const value = arg.slice('--attach='.length);
23
+ if (!value)
24
+ return { error: `--attach 缺少文件\n${PR_REPORT_USAGE}` };
25
+ attach.push(value);
26
+ }
27
+ else if (arg.startsWith('-')) {
28
+ return { error: `未知参数:${arg}\n${PR_REPORT_USAGE}` };
29
+ }
30
+ else if (pr === undefined && /^\d+$/.test(arg)) {
31
+ pr = arg;
32
+ }
33
+ else {
34
+ return { error: `${pr === undefined ? '无效的 PR 号' : '多余的参数'}:${arg}\n${PR_REPORT_USAGE}` };
35
+ }
36
+ }
37
+ if (pr === undefined)
38
+ return { error: PR_REPORT_USAGE };
39
+ return { pr, attach };
40
+ }
41
+ /**
42
+ * 调用者所在目录。插件命令由 CLI 在项目根目录下启动,调用者的目录只能从 shell 维护的 PWD 得知;
43
+ * PWD 缺失、不是目录或不在项目根目录之内(调用者目录一定在根目录之内,否则 CLI 找不到项目)时退回根目录。
44
+ */
45
+ export function callerDir(root, env = process.env) {
46
+ const pwd = env.PWD;
47
+ if (!pwd || !isAbsolute(pwd))
48
+ return root;
49
+ try {
50
+ if (!statSync(pwd).isDirectory())
51
+ return root;
52
+ const rel = relative(realpathSync(root), realpathSync(pwd));
53
+ return rel === '' || (!rel.startsWith('..') && !isAbsolute(rel)) ? pwd : root;
54
+ }
55
+ catch {
56
+ return root;
57
+ }
58
+ }
59
+ function fileKind(path) {
60
+ try {
61
+ const stat = statSync(path);
62
+ if (!stat.isFile())
63
+ return 'other';
64
+ return stat.size === 0 ? 'empty' : 'file';
65
+ }
66
+ catch {
67
+ return 'missing';
68
+ }
69
+ }
70
+ /**
71
+ * 校验附件并转为 gh 可用的参数值:路径按 cwd 解析为绝对路径,保留 `#说明`。
72
+ * 与 gh 的解析一致:整串本身是存在的文件时以整串为路径,否则以最后一个 `#` 之前的部分为路径。
73
+ */
74
+ export function resolveAttachments(specs, cwd) {
75
+ if (specs.length > MAX_ATTACHMENTS)
76
+ return { error: `附件最多 ${MAX_ATTACHMENTS} 个,当前 ${specs.length} 个` };
77
+ const attach = [];
78
+ for (const spec of specs) {
79
+ const whole = resolve(cwd, spec);
80
+ let path = whole;
81
+ let alt = '';
82
+ const hash = spec.lastIndexOf('#');
83
+ if (fileKind(whole) === 'missing' && hash > 0) {
84
+ path = resolve(cwd, spec.slice(0, hash));
85
+ alt = spec.slice(hash);
86
+ }
87
+ const kind = fileKind(path);
88
+ if (kind === 'missing')
89
+ return { error: `附件不存在:${spec}(解析为 ${path})` };
90
+ if (kind === 'other')
91
+ return { error: `附件不是普通文件:${spec}(解析为 ${path})` };
92
+ if (kind === 'empty')
93
+ return { error: `附件是空文件:${spec}(解析为 ${path})` };
94
+ attach.push(`${path}${alt}`);
95
+ }
96
+ return { attach };
97
+ }
98
+ export function ghRunner(cwd) {
99
+ return (args) => {
100
+ const r = spawnCommandSync('gh', args, { cwd, encoding: 'utf8', windowsHide: true });
101
+ return { status: r.status, stdout: r.stdout ?? '', stderr: r.stderr ?? '', error: r.error };
102
+ };
103
+ }
104
+ const GH_MISSING = '未找到 gh:PR 报告通过 GitHub CLI 读写 PR,请安装并登录 gh(gh auth login)';
105
+ function failure(args, r) {
106
+ if (r.error)
107
+ return GH_MISSING;
108
+ return `gh ${args.slice(0, 2).join(' ')} 失败:${r.stderr.trim()}`;
109
+ }
110
+ /**
111
+ * 已有的报告评论 id,按创建先后(id 递增)排序。正常只有一条;带附件重新发布时删除失败会残留多条,
112
+ * 此时最新一条是更新目标(与 pr-report-check 在没有绑定当前 head 的报告时取最新一条一致)。
113
+ */
114
+ function existingReports(gh, pr) {
115
+ const args = [
116
+ 'api',
117
+ `repos/{owner}/{repo}/issues/${pr}/comments`,
118
+ '--paginate',
119
+ '--jq',
120
+ `.[] | select(.body | startswith("${PR_REPORT_MARKER}")) | .id`,
121
+ ];
122
+ const r = gh(args);
123
+ if (r.error || r.status !== 0)
124
+ return { error: failure(args, r) };
125
+ const ids = r.stdout
126
+ .trim()
127
+ .split('\n')
128
+ .map((id) => id.trim())
129
+ .filter((id) => /^\d+$/.test(id));
130
+ ids.sort((a, b) => (BigInt(a) < BigInt(b) ? -1 : BigInt(a) > BigInt(b) ? 1 : 0));
131
+ return { ids };
132
+ }
133
+ /**
134
+ * 发布报告评论。无附件时:已有报告评论则原地更新,否则新建。
135
+ * 有附件时:编辑评论无法上传附件,因此总是用 gh pr comment --attach 新建;已有报告评论时新建成功后再删除全部旧报告评论,
136
+ * 新建失败则旧报告保留;删除失败不影响已发布的新报告,返回警告。
137
+ */
138
+ export function publishReport(options) {
139
+ const { pr, bodyFile, attach, gh } = options;
140
+ const found = existingReports(gh, pr);
141
+ if ('error' in found)
142
+ return { ok: false, message: found.error };
143
+ const existing = found.ids.at(-1);
144
+ if (!attach.length && existing) {
145
+ const args = ['api', '-X', 'PATCH', `repos/{owner}/{repo}/issues/comments/${existing}`, '-F', `body=@${bodyFile}`];
146
+ const r = gh(args);
147
+ if (r.error || r.status !== 0)
148
+ return { ok: false, message: failure(args, r) };
149
+ return { ok: true, action: 'updated', attachments: 0 };
150
+ }
151
+ const args = ['pr', 'comment', pr, '--body-file', bodyFile, ...attach.flatMap((a) => ['--attach', a])];
152
+ const created = gh(args);
153
+ if (created.error || created.status !== 0) {
154
+ if (attach.length && !created.error && /unknown flag/i.test(created.stderr)) {
155
+ return {
156
+ ok: false,
157
+ message: `当前 gh 不支持 --attach:需要 gh ≥ 2.100 才能附加文件,请升级 gh(${created.stderr.trim()})${existing ? ';已有报告评论未改动' : ''}`,
158
+ };
159
+ }
160
+ return { ok: false, message: `${failure(args, created)}${existing ? ';已有报告评论未改动' : ''}` };
161
+ }
162
+ if (!existing)
163
+ return { ok: true, action: 'created', attachments: attach.length };
164
+ // 新报告已发布:删除全部旧报告评论(含此前删除失败的残留),失败的列出供手动删除
165
+ const failed = [];
166
+ for (const id of found.ids) {
167
+ const removed = gh(['api', '-X', 'DELETE', `repos/{owner}/{repo}/issues/comments/${id}`]);
168
+ if (removed.error || removed.status !== 0)
169
+ failed.push(`${id}(${removed.error ? GH_MISSING : removed.stderr.trim()})`);
170
+ }
171
+ if (failed.length) {
172
+ return {
173
+ ok: true,
174
+ action: 'replaced',
175
+ attachments: attach.length,
176
+ warning: `新报告已发布,但删除旧报告评论失败:${failed.join(';')}。请在 PR 页面手动删除这些评论`,
177
+ };
178
+ }
179
+ return { ok: true, action: 'replaced', attachments: attach.length };
180
+ }
181
+ //# sourceMappingURL=pr-report-publish.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pr-report-publish.js","sourceRoot":"","sources":["../src/pr-report-publish.ts"],"names":[],"mappings":"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"}
@@ -83,7 +83,10 @@ export function checkPrReportStatus(root, run = defaultRunner) {
83
83
  if (head !== prHead) {
84
84
  return block(`PR #${pr.number} 的头提交是 ${prHead.slice(0, 8)},本地 HEAD 是 ${head.slice(0, 8)}。请先推送当前提交或切回 PR 头提交`, pr.number);
85
85
  }
86
- const report = (pr.comments ?? []).map((comment) => comment.body ?? '').find(isPrReport);
86
+ // 通常只有一条报告;带附件重新发布时若删除旧评论失败会残留多条,此时以绑定当前 head 的那条为准,
87
+ // 都不绑定时取最新一条(评论按时间升序返回;与 pr-report 更新最新一条的口径一致)
88
+ const reports = (pr.comments ?? []).map((comment) => comment.body ?? '').filter(isPrReport);
89
+ const report = reports.find((body) => prReportHead(body) === prHead) ?? reports.at(-1);
87
90
  if (!report)
88
91
  return block(`PR #${pr.number} 缺少 Sumi 审查报告。请运行:${PROJECT_SUMI} pr-report ${pr.number}`, pr.number);
89
92
  const reportHead = prReportHead(report);
@@ -1 +1 @@
1
- {"version":3,"file":"pr-report-status.js","sourceRoot":"","sources":["../src/pr-report-status.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pr-report-status.js","sourceRoot":"","sources":["../src/pr-report-status.ts"],"names":[],"mappings":"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"}
@@ -16,5 +16,6 @@ description: 推送前使用:按推送门禁的档位在工作区运行检查
16
16
  - 命令提示有待处理项时,按提示在工作区运行给出的命令(带 `--base <合并基础>`)完成评审,再重新运行;
17
17
  - 只有报告成功发布并绑定当前 PR head 后才可宣告 PR 工作流完成;报告缺失、过期或发布失败时不得结束;
18
18
  - PR 头提交变化后,旧报告立即过期,必须对新 head 重新运行 `sumi pr-report`;
19
+ - 只在用户要求或确有必要(例如需要展示 UI 改动效果)时用 `--attach <文件>[#说明]` 附加截图或录屏,需要 gh ≥ 2.100;
19
20
  - Claude Code、Codex 与 Cursor 的停止阶段 hook 会只读复查当前 PR head 的报告;它不会代替代理发布,但会在缺失或过期时强制继续处理。
20
21
  6. 不要替用户运行 `sumi approve` 或 `sumi unlock`,不要用 `--no-verify`、`HUSKY=0` 等方式绕过 hook。
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sumi/plugins-governance",
3
- "version": "0.6.1",
3
+ "version": "0.7.0",
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.6.1",
16
+ "@sumi/plugin-sdk": "0.7.0",
17
17
  "yaml": "2.9.1",
18
18
  "picomatch": "4.0.7"
19
19
  },
@@ -15,7 +15,11 @@ plugins:
15
15
  - { name: approve, argv: [node, ./dist/commands/approve.js], description: 人工确认待确认请求(需要交互式终端) }
16
16
  - { name: unlock, argv: [node, ./dist/commands/unlock.js], description: 由人开启 control 编辑窗口(需要交互式终端) }
17
17
  - { name: guard, argv: [node, ./dist/commands/guard.js], description: AI 工具前置 hook 的拦截命令 }
18
- - { name: pr-report, argv: [node, ./dist/commands/pr-report.js], description: 把 PR 范围的检查与评审结论发布为 PR 评论(需要 gh) }
18
+ - {
19
+ name: pr-report,
20
+ argv: [node, ./dist/commands/pr-report.js],
21
+ description: 把 PR 范围的检查与评审结论发布为 PR 评论,可用 --attach 附加图片或视频(需要 gh),
22
+ }
19
23
  - {
20
24
  name: pr-report-check,
21
25
  argv: [node, ./dist/commands/pr-report-check.js],
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sumi/plugins-openspec",
3
- "version": "0.6.1",
3
+ "version": "0.7.0",
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.6.1"
16
+ "@sumi/plugin-sdk": "0.7.0"
17
17
  },
18
18
  "files": [
19
19
  "dist",
@@ -1,5 +1,6 @@
1
1
  import { existsSync, mkdirSync, writeFileSync } from 'node:fs';
2
2
  import { join } from 'node:path';
3
+ import { guardCommandArgs } from '@sumi/plugin-sdk';
3
4
  import { stringify } from 'yaml';
4
5
  import { readCandidates, writeCandidates } from '../candidates.js';
5
6
  import { readRegistry, REGISTRY_FILE } from '../model.js';
@@ -10,6 +11,10 @@ import { readRegistry, REGISTRY_FILE } from '../model.js';
10
11
  */
11
12
  const root = process.env.SUMI_ROOT ?? process.cwd();
12
13
  const args = process.argv.slice(2);
14
+ guardCommandArgs(args, {
15
+ usage: '用法:sumi promote <kebab-case id> --type <checker|test|lint-rule|rubric-item> [--candidate <候选 id> --change <名称>] [--spec <cap#需求>] [--adr <路径>] [--from <运行#步骤/finding>]',
16
+ options: ['type', 'candidate', 'change', 'spec', 'adr', 'from'],
17
+ });
13
18
  const flag = (name) => {
14
19
  const i = args.indexOf(`--${name}`);
15
20
  return i >= 0 ? args[i + 1] : undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"promote.js","sourceRoot":"","sources":["../../src/commands/promote.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"promote.js","sourceRoot":"","sources":["../../src/commands/promote.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sumi/plugins-precedent",
3
- "version": "0.6.1",
3
+ "version": "0.7.0",
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.6.1",
16
+ "@sumi/plugin-sdk": "0.7.0",
17
17
  "yaml": "2.9.1",
18
18
  "picomatch": "4.0.7",
19
- "@sumi/plugins-governance": "0.6.1"
19
+ "@sumi/plugins-governance": "0.7.0"
20
20
  },
21
21
  "files": [
22
22
  "dist",
@@ -1,5 +1,6 @@
1
1
  import { existsSync, readFileSync, writeFileSync } from 'node:fs';
2
2
  import { join } from 'node:path';
3
+ import { guardCommandArgs } from '@sumi/plugin-sdk';
3
4
  import { filesDigest, ticketsDir, validateReviewResult, writeAccepted } from '../review.js';
4
5
  /**
5
6
  * sumi submit <run-id> <step-id> --ticket <t>:校验并接受评审结果。
@@ -7,6 +8,7 @@ import { filesDigest, ticketsDir, validateReviewResult, writeAccepted } from '..
7
8
  */
8
9
  const root = process.env.SUMI_ROOT ?? process.cwd();
9
10
  const args = process.argv.slice(2);
11
+ guardCommandArgs(args, { usage: '用法:sumi submit <run-id> <step-id> --ticket <ticket>', options: ['ticket'] });
10
12
  const ti = args.indexOf('--ticket');
11
13
  const ticketId = ti >= 0 ? args[ti + 1] : undefined;
12
14
  const [runId, stepId] = args.filter((_, i) => i !== ti && i !== ti + 1);
@@ -1 +1 @@
1
- {"version":3,"file":"submit.js","sourceRoot":"","sources":["../../src/commands/submit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"submit.js","sourceRoot":"","sources":["../../src/commands/submit.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sumi/plugins-review",
3
- "version": "0.6.1",
3
+ "version": "0.7.0",
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.6.1",
16
+ "@sumi/plugin-sdk": "0.7.0",
17
17
  "yaml": "2.9.1",
18
18
  "picomatch": "4.0.7",
19
- "@sumi/plugins-governance": "0.6.1"
19
+ "@sumi/plugins-governance": "0.7.0"
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.6.1",
3
+ "version": "0.7.0",
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.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",
16
+ "@sumi/create": "0.7.0",
17
+ "@sumi/kernel": "0.7.0",
18
+ "@sumi/plugin-sdk": "0.7.0",
19
+ "@sumi/plugins-core": "0.7.0",
20
+ "@sumi/plugins-governance": "0.7.0",
21
+ "@sumi/plugins-openspec": "0.7.0",
22
+ "@sumi/plugins-precedent": "0.7.0",
23
+ "@sumi/plugins-review": "0.7.0",
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:bbd8fadbd8110c8a121129d43ad40f1e026b188df9505d9688d5f82392704b87"
45
+ "sumiBuild": "sha256:b3dfc5b5f3ac0150d81ff939de2192165f5e03879e398869c4574d31e591a665"
46
46
  }