@cefense-npm/cefense-cli 1.0.0 → 1.2.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.
- package/README.md +74 -5
- package/dist/commands/fixactions.d.ts.map +1 -1
- package/dist/commands/fixactions.js +46 -0
- package/dist/commands/fixactions.js.map +1 -1
- package/dist/commands/fixcmds.d.ts +4 -0
- package/dist/commands/fixcmds.d.ts.map +1 -1
- package/dist/commands/fixcmds.js +120 -2
- package/dist/commands/fixcmds.js.map +1 -1
- package/dist/commands/scan.d.ts +1 -0
- package/dist/commands/scan.d.ts.map +1 -1
- package/dist/commands/scan.js +30 -4
- package/dist/commands/scan.js.map +1 -1
- package/dist/commands/skill.d.ts +24 -0
- package/dist/commands/skill.d.ts.map +1 -0
- package/dist/commands/skill.js +424 -0
- package/dist/commands/skill.js.map +1 -0
- package/dist/core/client.d.ts +5 -1
- package/dist/core/client.d.ts.map +1 -1
- package/dist/core/client.js +8 -0
- package/dist/core/client.js.map +1 -1
- package/dist/core/types.d.ts +7 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/index.js +44 -2
- package/dist/index.js.map +1 -1
- package/package.json +2 -1
- package/skills/cefense/POINTER.md +20 -0
- package/skills/cefense/SKILL.md +180 -0
package/README.md
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
[](https://www.typescriptlang.org)
|
|
10
10
|
[](./LICENSE)
|
|
11
11
|
|
|
12
|
-
[Install](#install) · [Quickstart](#quickstart) · [Commands](#commands) · [Agent mode](#agent-mode) · [CI](#continuous-integration) · [Security](#where-your-credentials-live)
|
|
12
|
+
[Install](#install) · [Quickstart](#quickstart) · [Commands](#commands) · [Agent mode](#agent-mode) · [Coding agents](#teaching-your-coding-agent) · [CI](#continuous-integration) · [Security](#where-your-credentials-live)
|
|
13
13
|
|
|
14
14
|
</div>
|
|
15
15
|
|
|
@@ -71,9 +71,10 @@ npx -p @cefense-npm/cefense-cli cf status
|
|
|
71
71
|
cf auth login # sign in through your browser
|
|
72
72
|
cf repo connect # pick a repository and watch its first scan
|
|
73
73
|
cf observed # browse what the scan found
|
|
74
|
+
cf skill install # teach your coding agent to do all of the above
|
|
74
75
|
```
|
|
75
76
|
|
|
76
|
-
From the findings view, press `g` to generate a patch
|
|
77
|
+
From the findings view, press `g` to generate a patch, `p` to open a pull request, and `m` to merge it. You never leave the finding you are reading.
|
|
77
78
|
|
|
78
79
|
## Commands
|
|
79
80
|
|
|
@@ -104,7 +105,7 @@ From the findings view, press `g` to generate a patch and `p` to open a pull req
|
|
|
104
105
|
| Command | What it does |
|
|
105
106
|
| --- | --- |
|
|
106
107
|
| `cf status` | the dashboard: repositories, live scan progress, finding counts |
|
|
107
|
-
| `cf scan` | rescan a repository
|
|
108
|
+
| `cf scan` | rescan a repository, `--wait` to block until it settles |
|
|
108
109
|
| `cf observed` | browse every finding in your code |
|
|
109
110
|
| `cf observed show <finding-id>` | one finding in full, with research, data flow and references |
|
|
110
111
|
| `cf matched` | only the findings joined to the research that explains them |
|
|
@@ -112,8 +113,22 @@ From the findings view, press `g` to generate a patch and `p` to open a pull req
|
|
|
112
113
|
| `cf fix show <finding-id>` | the patch generated for one finding |
|
|
113
114
|
| `cf fix generate <finding-id>` | generate a patch, `--wait` to block until it is ready |
|
|
114
115
|
| `cf fix publish <finding-id>` | open a pull request with a generated patch |
|
|
116
|
+
| `cf fix merge [finding-id]` | merge that pull request and delete its branch, prompts when omitted |
|
|
115
117
|
|
|
116
|
-
Findings and fixes are the same data from two angles. `cf observed` carries the same `g` and `
|
|
118
|
+
Findings and fixes are the same data from two angles. `cf observed` carries the same `g`, `p`, and `m` keys as `cf fix`, so you can take a vulnerability from patch to merged pull request without leaving the finding you are reading.
|
|
119
|
+
|
|
120
|
+
Run `cf fix merge` with no argument and it offers the open pull requests to choose from, or merges straight away when there is only one.
|
|
121
|
+
|
|
122
|
+
### Coding agents
|
|
123
|
+
|
|
124
|
+
| Command | What it does |
|
|
125
|
+
| --- | --- |
|
|
126
|
+
| `cf skill install [agents...]` | write the Cefense skill into every coding agent detected here |
|
|
127
|
+
| `cf skill list` | every supported agent, where it writes, what is installed |
|
|
128
|
+
| `cf skill show [agent]` | print the skill without writing it anywhere |
|
|
129
|
+
| `cf skill uninstall [agents...]` | remove it again, including the section it added |
|
|
130
|
+
|
|
131
|
+
`cf skill` on its own installs. See [Teaching your coding agent](#teaching-your-coding-agent).
|
|
117
132
|
|
|
118
133
|
## Interactive by default
|
|
119
134
|
|
|
@@ -134,6 +149,7 @@ Single keys act on whatever is selected. Labels are context aware, so a finding
|
|
|
134
149
|
| --- | --- | --- |
|
|
135
150
|
| `g` | `observed`, `matched`, `fix` | generate a patch, or regenerate, or retry |
|
|
136
151
|
| `p` | `observed`, `matched`, `fix` | open the pull request, or view it |
|
|
152
|
+
| `m` | `observed`, `matched`, `fix` | merge that pull request and delete its branch |
|
|
137
153
|
| `o` | `observed`, `matched` | open the file on GitHub |
|
|
138
154
|
| `a` | `observed`, `matched` | read the research behind the finding |
|
|
139
155
|
| `u` | `fix` | refresh |
|
|
@@ -191,8 +207,12 @@ cf observed --repo acme/api --agent # ids, severities, counts
|
|
|
191
207
|
cf observed show <finding-id> --agent # one finding, in full
|
|
192
208
|
cf fix generate <finding-id> --wait --agent # blocks until ready or failed
|
|
193
209
|
cf fix publish <finding-id> --yes --agent # opens the pull request
|
|
210
|
+
cf fix merge <finding-id> --yes --agent # merges it, deletes the branch
|
|
211
|
+
cf scan --repo acme/api --wait --agent # confirms the finding is gone
|
|
194
212
|
```
|
|
195
213
|
|
|
214
|
+
The last scan is the point: it is what proves the path no longer resolves.
|
|
215
|
+
|
|
196
216
|
### Error codes
|
|
197
217
|
|
|
198
218
|
Stable across releases. Match on `error.code`, never on `error.message`.
|
|
@@ -211,15 +231,64 @@ Stable across releases. Match on `error.code`, never on `error.message`.
|
|
|
211
231
|
| `feature_required` | 4 | the account lacks the required feature pack |
|
|
212
232
|
| `api_error` | 4 | the Cefense API returned an error |
|
|
213
233
|
| `cancelled` | 130 | interrupted |
|
|
234
|
+
| `unknown_target` | 2 | `cf skill install` was given an agent it does not know |
|
|
235
|
+
| `global_unsupported` | 2 | `--global` used with an agent that has no user-wide location |
|
|
236
|
+
| `skill_missing` | 4 | the bundled skill is absent, reinstall the package |
|
|
237
|
+
| `fix_not_published` | 2 | no pull request has been opened yet |
|
|
238
|
+
| `invalid_merge_method` | 2 | `--method` was not merge, squash, or rebase |
|
|
239
|
+
| `pull_request_blocked` | 4 | a required review or status check is pending |
|
|
240
|
+
| `pull_request_conflicted` | 4 | the branch conflicts with its base |
|
|
241
|
+
| `pull_request_draft` | 4 | the pull request is still a draft |
|
|
242
|
+
| `pull_request_closed` | 4 | it was closed without merging |
|
|
214
243
|
| `internal_error` | 4 | unexpected failure |
|
|
215
244
|
|
|
216
245
|
### Notes for agents
|
|
217
246
|
|
|
218
247
|
- **Signing in blocks.** `cf auth login` opens a browser and waits for the loopback callback, which is inherent to OAuth2 with PKCE. Run it in the background, read the sign-in URL from **stderr**, surface it to the user, then poll `cf auth status --agent`.
|
|
219
|
-
- **Publishing
|
|
248
|
+
- **Publishing and merging are gated.** Both refuse with `confirmation_required` unless `--yes` is passed. Treat each as a separate decision for the user, not a flag to add automatically: agreeing to open a pull request is not agreeing to merge it.
|
|
249
|
+
- **Merging never forces its way past a rule.** A required review, a failing check, a conflict, or a draft each stop `cf fix merge` with a code to report. Branch protection is respected, not bypassed.
|
|
220
250
|
- **Pass `--repo owner/name`** to skip the directory-linking prompt entirely.
|
|
221
251
|
- **Payloads are compact.** Null and internal fields are stripped, and heavy fields are summarised. The same 32 findings are 45 KB under `--json` and 18 KB under `--agent`.
|
|
222
252
|
|
|
253
|
+
## Teaching your coding agent
|
|
254
|
+
|
|
255
|
+
Cefense ships the instructions an agent needs to drive it, and `cf skill install` writes them where each tool actually looks.
|
|
256
|
+
|
|
257
|
+
```sh
|
|
258
|
+
cf skill install
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
With no arguments it detects the agents configured in the repository and writes to all of them. If it detects none, it writes `AGENTS.md`.
|
|
262
|
+
|
|
263
|
+
| Agent | Where it writes |
|
|
264
|
+
| --- | --- |
|
|
265
|
+
| Claude Code | `.claude/skills/cefense/SKILL.md` |
|
|
266
|
+
| Cursor | `.cursor/rules/cefense.mdc` |
|
|
267
|
+
| GitHub Copilot | `.github/instructions/cefense.instructions.md` |
|
|
268
|
+
| Google Antigravity | `.agents/rules/cefense.md` |
|
|
269
|
+
| Windsurf | `.windsurf/rules/cefense.md` |
|
|
270
|
+
| Devin Desktop | `.devin/rules/cefense.md` |
|
|
271
|
+
| Cline, Roo Code | `.clinerules/cefense.md` |
|
|
272
|
+
| Gemini CLI | `GEMINI.md` |
|
|
273
|
+
| Codex, Amp, OpenCode, Jules | `AGENTS.md` |
|
|
274
|
+
|
|
275
|
+
Each file is written in the format that tool expects: Agent Skills frontmatter for Claude Code, MDC with `alwaysApply: false` for Cursor, `applyTo` for Copilot, a `model_decision` trigger for Windsurf and Devin.
|
|
276
|
+
|
|
277
|
+
`AGENTS.md` and `GEMINI.md` are shared files, so they get a short delimited section rather than the whole document, and the full guide lands at `.cefense/SKILL.md` alongside it. Reinstalling replaces that section in place, and `cf skill uninstall` removes it and leaves the rest of the file untouched.
|
|
278
|
+
|
|
279
|
+
```sh
|
|
280
|
+
cf skill list # what is supported, what is detected, what is installed
|
|
281
|
+
cf skill install claude cursor # name them instead of detecting
|
|
282
|
+
cf skill install --all # every supported agent
|
|
283
|
+
cf skill install --global # for your user: claude, gemini, agents
|
|
284
|
+
cf skill show cursor # print it, write nothing
|
|
285
|
+
cf skill uninstall # remove all of it
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
The files it writes are part of the repository and belong in a commit. They are managed, so hand edits are replaced on the next install.
|
|
289
|
+
|
|
290
|
+
For onboarding an agent that has never seen Cefense at all, point it at <https://cefense.com/skill.md>. That document installs the CLI, signs the user in, connects the repository, and finishes by running `cf skill install`.
|
|
291
|
+
|
|
223
292
|
## Scripting
|
|
224
293
|
|
|
225
294
|
Three output modes, in order of precedence:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fixactions.d.ts","sourceRoot":"","sources":["../../src/commands/fixactions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"fixactions.d.ts","sourceRoot":"","sources":["../../src/commands/fixactions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAkB,MAAM,kBAAkB,CAAC;AAMtE,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,GAAG,GAAG,IAAI,CAAC;CACjB;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,GAAG,MAAM,CAgBhD;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAQjD;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAgDzE;AAuBD,wBAAgB,UAAU,CAAC,CAAC,EAC1B,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,KAAK,SAAS,GAAG,IAAI,GAC3C,aAAa,CAAC,CAAC,CAAC,EAAE,CA0HpB"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import open from "open";
|
|
2
|
+
import { messageOf } from "../core/errors.js";
|
|
2
3
|
import { confirmByTyping } from "../ui/prompts.js";
|
|
3
4
|
import { wrapText } from "../ui/format.js";
|
|
4
5
|
import * as out from "../ui/output.js";
|
|
@@ -171,6 +172,51 @@ export function fixActions(session, project, target) {
|
|
|
171
172
|
context.setStatus(result.fix.prUrl ? `Opened ${result.fix.prUrl}` : "Published, but no URL was returned.");
|
|
172
173
|
},
|
|
173
174
|
},
|
|
175
|
+
{
|
|
176
|
+
key: "m",
|
|
177
|
+
label: (item) => {
|
|
178
|
+
const fix = target(item)?.fix;
|
|
179
|
+
if (fix?.status !== "opened" || !fix.prNumber)
|
|
180
|
+
return null;
|
|
181
|
+
return "merge pull request";
|
|
182
|
+
},
|
|
183
|
+
run: async (item, context) => {
|
|
184
|
+
const found = target(item);
|
|
185
|
+
const fix = found?.fix;
|
|
186
|
+
if (!found || fix?.status !== "opened" || !fix.prNumber)
|
|
187
|
+
return;
|
|
188
|
+
const confirmed = await context.suspend(async () => {
|
|
189
|
+
out.line();
|
|
190
|
+
out.warn(`This merges pull request #${fix.prNumber} into ${c.bold(project.defaultBranch ?? "the default branch")} of ${c.bold(project.fullName)}.`);
|
|
191
|
+
out.hint(`Squash merge of ${fix.filePath}, then delete the branch.`);
|
|
192
|
+
if (fix.prUrl)
|
|
193
|
+
out.hint(fix.prUrl);
|
|
194
|
+
out.line();
|
|
195
|
+
return confirmByTyping({
|
|
196
|
+
message: `Type ${project.name} to confirm`,
|
|
197
|
+
expected: project.name,
|
|
198
|
+
});
|
|
199
|
+
});
|
|
200
|
+
if (!confirmed) {
|
|
201
|
+
context.setStatus("Nothing was merged.");
|
|
202
|
+
return;
|
|
203
|
+
}
|
|
204
|
+
context.setStatus(`Merging #${fix.prNumber}.`);
|
|
205
|
+
try {
|
|
206
|
+
const result = await session.client.mergeFix(found.findingId, {
|
|
207
|
+
method: "squash",
|
|
208
|
+
deleteBranch: true,
|
|
209
|
+
});
|
|
210
|
+
await context.refresh();
|
|
211
|
+
context.setStatus(result.alreadyMerged
|
|
212
|
+
? `#${fix.prNumber} was already merged.`
|
|
213
|
+
: `Merged #${fix.prNumber}${result.branchDeleted ? " and deleted the branch" : ""}. Rescan with r to confirm.`);
|
|
214
|
+
}
|
|
215
|
+
catch (error) {
|
|
216
|
+
context.setStatus(messageOf(error));
|
|
217
|
+
}
|
|
218
|
+
},
|
|
219
|
+
},
|
|
174
220
|
];
|
|
175
221
|
}
|
|
176
222
|
//# sourceMappingURL=fixactions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fixactions.js","sourceRoot":"","sources":["../../src/commands/fixactions.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"fixactions.js","sourceRoot":"","sources":["../../src/commands/fixactions.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,4 +4,8 @@ export declare function fixGenerate(globals: GlobalOptions, findingId: string, o
|
|
|
4
4
|
wait?: boolean;
|
|
5
5
|
}): Promise<number>;
|
|
6
6
|
export declare function fixPublish(globals: GlobalOptions, findingId: string): Promise<number>;
|
|
7
|
+
export declare function fixMerge(globals: GlobalOptions, findingId: string | undefined, options?: {
|
|
8
|
+
method?: string;
|
|
9
|
+
deleteBranch?: boolean;
|
|
10
|
+
}): Promise<number>;
|
|
7
11
|
//# sourceMappingURL=fixcmds.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fixcmds.d.ts","sourceRoot":"","sources":["../../src/commands/fixcmds.ts"],"names":[],"mappings":"AAEA,OAAO,EAAe,KAAK,aAAa,EAAgB,MAAM,oBAAoB,CAAC;AAoDnF,wBAAsB,OAAO,CAAC,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA+BxF;AAED,wBAAsB,WAAW,CAC/B,OAAO,EAAE,aAAa,EACtB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAO,GAC/B,OAAO,CAAC,MAAM,CAAC,CA0DjB;AAED,wBAAsB,UAAU,CAAC,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAkF3F"}
|
|
1
|
+
{"version":3,"file":"fixcmds.d.ts","sourceRoot":"","sources":["../../src/commands/fixcmds.ts"],"names":[],"mappings":"AAEA,OAAO,EAAe,KAAK,aAAa,EAAgB,MAAM,oBAAoB,CAAC;AAoDnF,wBAAsB,OAAO,CAAC,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA+BxF;AAED,wBAAsB,WAAW,CAC/B,OAAO,EAAE,aAAa,EACtB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAO,GAC/B,OAAO,CAAC,MAAM,CAAC,CA0DjB;AAED,wBAAsB,UAAU,CAAC,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAkF3F;AAqCD,wBAAsB,QAAQ,CAC5B,OAAO,EAAE,aAAa,EACtB,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,OAAO,CAAA;CAAO,GACxD,OAAO,CAAC,MAAM,CAAC,CA4HjB"}
|
package/dist/commands/fixcmds.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { compactFix } from "../core/compact.js";
|
|
1
|
+
import { compactFix, prune } from "../core/compact.js";
|
|
2
2
|
import { UsageError } from "../core/errors.js";
|
|
3
3
|
import { openSession } from "../core/session.js";
|
|
4
4
|
import { isAgentMode } from "../ui/mode.js";
|
|
5
5
|
import * as out from "../ui/output.js";
|
|
6
|
-
import { confirmByTyping, spinner } from "../ui/prompts.js";
|
|
6
|
+
import { confirmByTyping, select, spinner } from "../ui/prompts.js";
|
|
7
7
|
import { isInteractive } from "../ui/screen.js";
|
|
8
8
|
import { c, glyph } from "../ui/theme.js";
|
|
9
9
|
import { renderDiff } from "./fixactions.js";
|
|
@@ -180,4 +180,122 @@ export async function fixPublish(globals, findingId) {
|
|
|
180
180
|
out.line();
|
|
181
181
|
return 0;
|
|
182
182
|
}
|
|
183
|
+
async function pickOpenPullRequest(session, globals) {
|
|
184
|
+
const { project } = await resolveLinkedProject(session, globals);
|
|
185
|
+
const response = await session.client.findings(project.githubRepoId);
|
|
186
|
+
if (!response.scanId)
|
|
187
|
+
return null;
|
|
188
|
+
const { fixes } = await session.client
|
|
189
|
+
.fixesForScan(response.scanId)
|
|
190
|
+
.catch(() => ({ fixes: [] }));
|
|
191
|
+
const open = fixes.filter((fix) => fix.status === "opened" && fix.prNumber);
|
|
192
|
+
if (open.length === 0) {
|
|
193
|
+
throw new UsageError(`No pull request is open for ${project.fullName}.`, "Run cf fix to generate and publish one.", "fix_not_published");
|
|
194
|
+
}
|
|
195
|
+
const titles = new Map(response.findings.map((finding) => [finding.id, finding]));
|
|
196
|
+
if (open.length === 1)
|
|
197
|
+
return open[0].findingId;
|
|
198
|
+
return await select({
|
|
199
|
+
message: `Merge a pull request on ${project.fullName}`,
|
|
200
|
+
choices: open.map((fix) => ({
|
|
201
|
+
value: fix.findingId,
|
|
202
|
+
label: `#${fix.prNumber} ${titles.get(fix.findingId)?.title ?? fix.filePath}`,
|
|
203
|
+
hint: fix.filePath,
|
|
204
|
+
})),
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
export async function fixMerge(globals, findingId, options = {}) {
|
|
208
|
+
const session = await openSession(globals, { auth: true });
|
|
209
|
+
if (!findingId) {
|
|
210
|
+
if (!isInteractive()) {
|
|
211
|
+
throw new UsageError("cf fix merge needs a finding id when it cannot prompt.", "Pass one: cf fix merge <finding-id> --yes", "usage_error");
|
|
212
|
+
}
|
|
213
|
+
const picked = await pickOpenPullRequest(session, globals);
|
|
214
|
+
if (!picked) {
|
|
215
|
+
out.line();
|
|
216
|
+
out.info("Nothing to merge.");
|
|
217
|
+
out.line();
|
|
218
|
+
return 0;
|
|
219
|
+
}
|
|
220
|
+
findingId = picked;
|
|
221
|
+
}
|
|
222
|
+
const method = (options.method ?? "squash").toLowerCase();
|
|
223
|
+
if (method !== "merge" && method !== "squash" && method !== "rebase") {
|
|
224
|
+
throw new UsageError(`${options.method} is not a merge method.`, "Use merge, squash, or rebase.", "invalid_merge_method");
|
|
225
|
+
}
|
|
226
|
+
const { fix } = await session.client.fixForFinding(findingId);
|
|
227
|
+
if (!fix) {
|
|
228
|
+
throw new UsageError(`No patch has been generated for ${findingId}.`, `Run cf fix generate ${findingId} --wait first.`, "fix_not_found");
|
|
229
|
+
}
|
|
230
|
+
if (!fix.prNumber) {
|
|
231
|
+
throw new UsageError(`No pull request has been opened for ${findingId}.`, `Run cf fix publish ${findingId} --yes first.`, "fix_not_published");
|
|
232
|
+
}
|
|
233
|
+
if (!globals.yes) {
|
|
234
|
+
if (!isInteractive()) {
|
|
235
|
+
throw new UsageError("Merging lands code on the repository's default branch.", `Pass --yes to confirm: cf fix merge ${findingId} --yes`, "confirmation_required");
|
|
236
|
+
}
|
|
237
|
+
const { project } = await resolveLinkedProject(session, globals);
|
|
238
|
+
out.line();
|
|
239
|
+
out.warn(`This merges pull request #${fix.prNumber} into ${c.bold(project.defaultBranch ?? "the default branch")} of ${c.bold(project.fullName)}.`);
|
|
240
|
+
out.hint(`${method} merge of ${fix.filePath}${options.deleteBranch === false ? ", keeping the branch" : ", then delete the branch"}.`);
|
|
241
|
+
if (fix.prUrl)
|
|
242
|
+
out.hint(fix.prUrl);
|
|
243
|
+
out.line();
|
|
244
|
+
const confirmed = await confirmByTyping({
|
|
245
|
+
message: `Type ${project.name} to confirm`,
|
|
246
|
+
expected: project.name,
|
|
247
|
+
});
|
|
248
|
+
if (!confirmed) {
|
|
249
|
+
out.line();
|
|
250
|
+
out.info("Left open.");
|
|
251
|
+
out.line();
|
|
252
|
+
return 0;
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
const progress = spinner();
|
|
256
|
+
progress.start(`Merging pull request #${fix.prNumber}`);
|
|
257
|
+
let result;
|
|
258
|
+
try {
|
|
259
|
+
result = await session.client.mergeFix(findingId, {
|
|
260
|
+
method: method,
|
|
261
|
+
deleteBranch: options.deleteBranch !== false,
|
|
262
|
+
});
|
|
263
|
+
}
|
|
264
|
+
catch (error) {
|
|
265
|
+
progress.stop("Could not merge the pull request", "fail");
|
|
266
|
+
throw error;
|
|
267
|
+
}
|
|
268
|
+
progress.stop(result.alreadyMerged ? "Already merged" : "Pull request merged");
|
|
269
|
+
if (isAgentMode()) {
|
|
270
|
+
out.agentEmit(prune({
|
|
271
|
+
findingId,
|
|
272
|
+
merged: result.merged,
|
|
273
|
+
alreadyMerged: result.alreadyMerged,
|
|
274
|
+
prNumber: fix.prNumber,
|
|
275
|
+
prUrl: fix.prUrl,
|
|
276
|
+
commitSha: result.commitSha,
|
|
277
|
+
branch: fix.branch,
|
|
278
|
+
branchDeleted: result.branchDeleted,
|
|
279
|
+
fix: result.fix ? compactFix(result.fix) : null,
|
|
280
|
+
}), [`cf scan --wait --agent`]);
|
|
281
|
+
return 0;
|
|
282
|
+
}
|
|
283
|
+
if (out.isJsonMode()) {
|
|
284
|
+
out.json(result);
|
|
285
|
+
return 0;
|
|
286
|
+
}
|
|
287
|
+
out.line();
|
|
288
|
+
out.success(result.alreadyMerged
|
|
289
|
+
? `Pull request #${fix.prNumber} was already merged`
|
|
290
|
+
: `Merged pull request #${fix.prNumber}`);
|
|
291
|
+
if (result.branchDeleted && fix.branch)
|
|
292
|
+
out.hint(`Deleted ${fix.branch}`);
|
|
293
|
+
if (fix.prUrl)
|
|
294
|
+
out.hint(fix.prUrl);
|
|
295
|
+
out.line();
|
|
296
|
+
out.info("Next: confirm the finding is gone");
|
|
297
|
+
out.line(` ${c.dim("cf scan --wait")}`);
|
|
298
|
+
out.line();
|
|
299
|
+
return 0;
|
|
300
|
+
}
|
|
183
301
|
//# sourceMappingURL=fixcmds.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fixcmds.js","sourceRoot":"","sources":["../../src/commands/fixcmds.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAoC,MAAM,oBAAoB,CAAC;AAEnF,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,KAAK,GAAG,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAEjD,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;AAElE,KAAK,UAAU,UAAU,CACvB,OAAgB,EAChB,SAAiB,EACjB,QAAQ,GAAG,EAAE;IAEb,IAAI,MAAM,GAAe,IAAI,CAAC;IAC9B,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,QAAQ,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC;QACvD,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;QAC1D,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,OAAO,CAAC,MAAM;aACjC,aAAa,CAAC,SAAS,CAAC;aACxB,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,IAAkB,EAAE,CAAC,CAAC,CAAC;QAC9C,MAAM,GAAG,GAAG,CAAC;QACb,IAAI,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC;YAAE,OAAO,GAAG,CAAC;IACjD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,SAAS,CAAC,GAAQ;IACzB,GAAG,CAAC,IAAI,EAAE,CAAC;IACX,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,QAAQ,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACpF,GAAG,CAAC,IAAI,EAAE,CAAC;IACX,IAAI,GAAG,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC5B,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,oBAAoB,CAAC,EAAE,CAAC,CAAC;QAC1D,GAAG,CAAC,IAAI,EAAE,CAAC;QACX,OAAO;IACT,CAAC;IACD,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;QACb,KAAK,MAAM,QAAQ,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,KAAK,QAAQ,EAAE,CAAC,CAAC;QACrF,GAAG,CAAC,IAAI,EAAE,CAAC;IACb,CAAC;IACD,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;QACpB,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QACxC,GAAG,CAAC,IAAI,EAAE,CAAC;IACb,CAAC;IACD,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;QACd,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC7D,GAAG,CAAC,IAAI,EAAE,CAAC;IACb,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,OAAsB,EAAE,SAAiB;IACrE,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3D,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IAE9D,IAAI,WAAW,EAAE,EAAE,CAAC;QAClB,GAAG,CAAC,SAAS,CACX,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAChE,GAAG,EAAE,MAAM,KAAK,OAAO;YACrB,CAAC,CAAC,CAAC,kBAAkB,SAAS,gBAAgB,CAAC;YAC/C,CAAC,CAAC,GAAG;gBACH,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,CAAC,mBAAmB,SAAS,iBAAiB,CAAC,CACtD,CAAC;QACF,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,GAAG,CAAC,UAAU,EAAE,EAAE,CAAC;QACrB,GAAG,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;QAC7B,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,GAAG,CAAC,IAAI,EAAE,CAAC;QACX,GAAG,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;QACxD,GAAG,CAAC,IAAI,CAAC,mBAAmB,SAAS,EAAE,CAAC,CAAC;QACzC,GAAG,CAAC,IAAI,EAAE,CAAC;QACX,OAAO,CAAC,CAAC;IACX,CAAC;IAED,SAAS,CAAC,GAAG,CAAC,CAAC;IACf,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,OAAsB,EACtB,SAAiB,EACjB,UAA8B,EAAE;IAEhC,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAE3D,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,MAAM;SAClC,aAAa,CAAC,SAAS,CAAC;SACxB,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,IAAkB,EAAE,CAAC,CAAC,CAAC;IAC9C,IAAI,QAAQ,CAAC,GAAG,EAAE,MAAM,KAAK,YAAY,IAAI,QAAQ,CAAC,GAAG,EAAE,MAAM,KAAK,YAAY,EAAE,CAAC;QACnF,MAAM,IAAI,UAAU,CAClB,aAAa,SAAS,eAAe,QAAQ,CAAC,GAAG,CAAC,MAAM,GAAG,EAC3D,mBAAmB,SAAS,kBAAkB,EAC9C,iBAAiB,CAClB,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,OAAO,EAAE,CAAC;IAC3B,QAAQ,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;IACrC,IAAI,GAAQ,CAAC;IACb,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAC3D,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;IACnB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,QAAQ,CAAC,IAAI,CAAC,4BAA4B,EAAE,MAAM,CAAC,CAAC;QACpD,MAAM,KAAK,CAAC;IACd,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,QAAQ,CAAC,OAAO,CAAC,4CAA4C,CAAC,CAAC;QAC/D,GAAG,GAAG,CAAC,MAAM,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,IAAI,GAAG,CAAC;IACtD,CAAC;IACD,QAAQ,CAAC,IAAI,CACX,GAAG,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,iBAAiB,EACjE,GAAG,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CACxC,CAAC;IAEF,IAAI,WAAW,EAAE,EAAE,CAAC;QAClB,GAAG,CAAC,SAAS,CACX,EAAE,SAAS,EAAE,GAAG,EAAE,UAAU,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,EACnD,GAAG,CAAC,MAAM,KAAK,OAAO;YACpB,CAAC,CAAC,CAAC,kBAAkB,SAAS,gBAAgB,CAAC;YAC/C,CAAC,CAAC,GAAG,CAAC,MAAM,KAAK,YAAY;gBAC3B,CAAC,CAAC,CAAC,eAAe,SAAS,UAAU,CAAC;gBACtC,CAAC,CAAC,EAAE,CACT,CAAC;QACF,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,GAAG,CAAC,UAAU,EAAE,EAAE,CAAC;QACrB,GAAG,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;QAC7B,OAAO,CAAC,CAAC;IACX,CAAC;IAED,SAAS,CAAC,GAAG,CAAC,CAAC;IACf,IAAI,GAAG,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;QAC3B,GAAG,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QACtC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,kBAAkB,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC;QACxD,GAAG,CAAC,IAAI,EAAE,CAAC;IACb,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,OAAsB,EAAE,SAAiB;IACxE,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3D,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IAE9D,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,UAAU,CAClB,mCAAmC,SAAS,GAAG,EAC/C,uBAAuB,SAAS,gBAAgB,EAChD,eAAe,CAChB,CAAC;IACJ,CAAC;IACD,IAAI,GAAG,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC5B,IAAI,WAAW,EAAE,EAAE,CAAC;YAClB,GAAG,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACtE,OAAO,CAAC,CAAC;QACX,CAAC;QACD,GAAG,CAAC,IAAI,EAAE,CAAC;QACX,GAAG,CAAC,IAAI,CAAC,iBAAiB,GAAG,CAAC,KAAK,IAAI,cAAc,EAAE,CAAC,CAAC;QACzD,GAAG,CAAC,IAAI,EAAE,CAAC;QACX,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,GAAG,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;QAC3B,MAAM,IAAI,UAAU,CAClB,iBAAiB,SAAS,OAAO,GAAG,CAAC,MAAM,8BAA8B,EACzE,GAAG,CAAC,MAAM,KAAK,QAAQ;YACrB,CAAC,CAAC,uBAAuB,SAAS,uBAAuB;YACzD,CAAC,CAAC,mBAAmB,SAAS,kBAAkB,EAClD,eAAe,CAChB,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;YACrB,MAAM,IAAI,UAAU,CAClB,iDAAiD,EACjD,yCAAyC,SAAS,QAAQ,EAC1D,uBAAuB,CACxB,CAAC;QACJ,CAAC;QACD,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,oBAAoB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACjE,GAAG,CAAC,IAAI,EAAE,CAAC;QACX,GAAG,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC3E,GAAG,CAAC,IAAI,CAAC,eAAe,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,cAAc,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC;QAC9E,GAAG,CAAC,IAAI,EAAE,CAAC;QACX,MAAM,SAAS,GAAG,MAAM,eAAe,CAAC;YACtC,OAAO,EAAE,QAAQ,OAAO,CAAC,IAAI,aAAa;YAC1C,QAAQ,EAAE,OAAO,CAAC,IAAI;SACvB,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,GAAG,CAAC,IAAI,EAAE,CAAC;YACX,GAAG,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;YACnC,GAAG,CAAC,IAAI,EAAE,CAAC;YACX,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IAED,MAAM,QAAQ,GAAG,OAAO,EAAE,CAAC;IAC3B,QAAQ,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;IACzC,IAAI,SAAc,CAAC;IACnB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAC1D,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC;IACzB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,QAAQ,CAAC,IAAI,CAAC,+BAA+B,EAAE,MAAM,CAAC,CAAC;QACvD,MAAM,KAAK,CAAC;IACd,CAAC;IACD,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IAE3E,IAAI,WAAW,EAAE,EAAE,CAAC;QAClB,GAAG,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACzD,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,GAAG,CAAC,UAAU,EAAE,EAAE,CAAC;QACrB,GAAG,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;QACxC,OAAO,CAAC,CAAC;IACX,CAAC;IAED,GAAG,CAAC,IAAI,EAAE,CAAC;IACX,GAAG,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,KAAK,IAAI,SAAS,CAAC,KAAK,IAAI,qBAAqB,EAAE,CAAC,CAAC;IAC1E,GAAG,CAAC,IAAI,EAAE,CAAC;IACX,OAAO,CAAC,CAAC;AACX,CAAC"}
|
|
1
|
+
{"version":3,"file":"fixcmds.js","sourceRoot":"","sources":["../../src/commands/fixcmds.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/scan.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ import { type GlobalOptions } from "../core/session.js";
|
|
|
4
4
|
export declare function watchScan(client: CefenseClient, githubRepoId: string, label: string): Promise<ScanSummary | null>;
|
|
5
5
|
export declare function scanCommand(globals: GlobalOptions, options?: {
|
|
6
6
|
watch?: boolean;
|
|
7
|
+
wait?: boolean;
|
|
7
8
|
}): Promise<number>;
|
|
8
9
|
export declare function projectScanSummary(project: Project): string;
|
|
9
10
|
//# sourceMappingURL=scan.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scan.d.ts","sourceRoot":"","sources":["../../src/commands/scan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAe,KAAK,aAAa,
|
|
1
|
+
{"version":3,"file":"scan.d.ts","sourceRoot":"","sources":["../../src/commands/scan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAe,KAAK,aAAa,EAAgB,MAAM,oBAAoB,CAAC;AAwBnF,wBAAsB,SAAS,CAC7B,MAAM,EAAE,aAAa,EACrB,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAuC7B;AAoBD,wBAAsB,WAAW,CAC/B,OAAO,EAAE,aAAa,EACtB,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAO,GAChD,OAAO,CAAC,MAAM,CAAC,CAsDjB;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAU3D"}
|
package/dist/commands/scan.js
CHANGED
|
@@ -55,16 +55,42 @@ export async function watchScan(client, githubRepoId, label) {
|
|
|
55
55
|
progress.stop(`Scanned ${label} in ${elapsed(latest.createdAt, latest.finishedAt)} · ${latest.findingCount} ${latest.findingCount === 1 ? "finding" : "findings"}`);
|
|
56
56
|
return latest;
|
|
57
57
|
}
|
|
58
|
+
async function awaitScan(session, githubRepoId, attempts = 300) {
|
|
59
|
+
let latest = null;
|
|
60
|
+
for (let attempt = 0; attempt < attempts; attempt += 1) {
|
|
61
|
+
await new Promise((resolve) => setTimeout(resolve, POLL_MS));
|
|
62
|
+
const { projects } = await session.client
|
|
63
|
+
.projects()
|
|
64
|
+
.catch(() => ({ projects: [] }));
|
|
65
|
+
const project = projects.find((entry) => entry.githubRepoId === githubRepoId);
|
|
66
|
+
latest = project?.scan ?? latest;
|
|
67
|
+
if (latest && terminal(latest))
|
|
68
|
+
return latest;
|
|
69
|
+
}
|
|
70
|
+
return latest;
|
|
71
|
+
}
|
|
58
72
|
export async function scanCommand(globals, options = {}) {
|
|
59
73
|
const session = await openSession(globals, { auth: true });
|
|
60
74
|
const { project } = await resolveLinkedProject(session, globals);
|
|
61
75
|
const running = project.scan && !terminal(project.scan);
|
|
62
76
|
const { scanId } = await session.client.startScan(project.githubRepoId);
|
|
63
77
|
if (isAgentMode()) {
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
78
|
+
if (!options.wait) {
|
|
79
|
+
out.agentEmit({ repository: project.fullName, scanId }, [
|
|
80
|
+
`cf scan --repo ${project.fullName} --wait --agent`,
|
|
81
|
+
`cf observed --repo ${project.fullName} --agent`,
|
|
82
|
+
]);
|
|
83
|
+
return 0;
|
|
84
|
+
}
|
|
85
|
+
const settled = await awaitScan(session, project.githubRepoId);
|
|
86
|
+
out.agentEmit({
|
|
87
|
+
repository: project.fullName,
|
|
88
|
+
scanId,
|
|
89
|
+
status: settled?.status ?? "running",
|
|
90
|
+
findings: settled?.findingCount ?? null,
|
|
91
|
+
error: settled?.error ?? null,
|
|
92
|
+
}, [`cf observed --repo ${project.fullName} --severity critical,high --agent`]);
|
|
93
|
+
return settled?.status === "failed" ? 4 : 0;
|
|
68
94
|
}
|
|
69
95
|
if (out.isJsonMode()) {
|
|
70
96
|
out.json({ repository: project.fullName, scanId });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scan.js","sourceRoot":"","sources":["../../src/commands/scan.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"scan.js","sourceRoot":"","sources":["../../src/commands/scan.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAoC,MAAM,oBAAoB,CAAC;AACnF,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,KAAK,GAAG,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,CAAC,EAAE,MAAM,gBAAgB,CAAC;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,MAAM,OAAO,GAAG,IAAI,CAAC;AAErB,SAAS,QAAQ,CAAC,IAAwB;IACxC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,WAAW,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC;AAC1E,CAAC;AAED,SAAS,QAAQ,CAAC,IAAiB;IACjC,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACrD,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,IAAI,CAAC,CAAC;IACpC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC;IAClC,MAAM,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,IAAI,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC;IAC7F,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,YAAY,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/E,OAAO,GAAG,KAAK,IAAI,GAAG,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;AACjD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,MAAqB,EACrB,YAAoB,EACpB,KAAa;IAEb,MAAM,QAAQ,GAAG,OAAO,EAAE,CAAC;IAC3B,QAAQ,CAAC,KAAK,CAAC,YAAY,KAAK,EAAE,CAAC,CAAC;IAEpC,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,MAAM,WAAW,GAAG,GAAG,EAAE;QACvB,WAAW,GAAG,IAAI,CAAC;IACrB,CAAC,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IAEpC,IAAI,MAAM,GAAuB,IAAI,CAAC;IACtC,IAAI,CAAC;QACH,SAAS,CAAC;YACR,IAAI,WAAW,EAAE,CAAC;gBAChB,QAAQ,CAAC,IAAI,CAAC,kBAAkB,KAAK,qBAAqB,EAAE,MAAM,CAAC,CAAC;gBACpE,OAAO,MAAM,CAAC;YAChB,CAAC;YACD,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;YAC7C,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,YAAY,KAAK,YAAY,CAAC,EAAE,IAAI,IAAI,IAAI,CAAC;YACzF,IAAI,QAAQ,CAAC,MAAM,CAAC;gBAAE,MAAM;YAC5B,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAO,CAAC,CAAC,CAAC;YACpC,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;YAAS,CAAC;QACT,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IAChD,CAAC;IAED,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,QAAQ,CAAC,IAAI,CAAC,2BAA2B,KAAK,GAAG,EAAE,MAAM,CAAC,CAAC;QAC3D,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,QAAQ,CAAC,IAAI,CAAC,gBAAgB,MAAM,CAAC,KAAK,IAAI,oBAAoB,EAAE,EAAE,MAAM,CAAC,CAAC;QAC9E,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,QAAQ,CAAC,IAAI,CACX,WAAW,KAAK,OAAO,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,UAAU,CAAC,MAAM,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE,CACrJ,CAAC;IACF,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,SAAS,CACtB,OAAgB,EAChB,YAAoB,EACpB,QAAQ,GAAG,GAAG;IAEd,IAAI,MAAM,GAAuB,IAAI,CAAC;IACtC,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,QAAQ,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC;QACvD,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;QAC7D,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,OAAO,CAAC,MAAM;aACtC,QAAQ,EAAE;aACV,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAe,EAAE,CAAC,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,YAAY,KAAK,YAAY,CAAC,CAAC;QAC9E,MAAM,GAAG,OAAO,EAAE,IAAI,IAAI,MAAM,CAAC;QACjC,IAAI,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,MAAM,CAAC;IAChD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,OAAsB,EACtB,UAA+C,EAAE;IAEjD,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3D,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,oBAAoB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAEjE,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAExE,IAAI,WAAW,EAAE,EAAE,CAAC;QAClB,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAClB,GAAG,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE;gBACtD,kBAAkB,OAAO,CAAC,QAAQ,iBAAiB;gBACnD,sBAAsB,OAAO,CAAC,QAAQ,UAAU;aACjD,CAAC,CAAC;YACH,OAAO,CAAC,CAAC;QACX,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;QAC/D,GAAG,CAAC,SAAS,CACX;YACE,UAAU,EAAE,OAAO,CAAC,QAAQ;YAC5B,MAAM;YACN,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,SAAS;YACpC,QAAQ,EAAE,OAAO,EAAE,YAAY,IAAI,IAAI;YACvC,KAAK,EAAE,OAAO,EAAE,KAAK,IAAI,IAAI;SAC9B,EACD,CAAC,sBAAsB,OAAO,CAAC,QAAQ,mCAAmC,CAAC,CAC5E,CAAC;QACF,OAAO,OAAO,EAAE,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,CAAC;IAED,IAAI,GAAG,CAAC,UAAU,EAAE,EAAE,CAAC;QACrB,GAAG,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;QACnD,OAAO,CAAC,CAAC;IACX,CAAC;IAED,GAAG,CAAC,IAAI,EAAE,CAAC;IACX,IAAI,OAAO,EAAE,CAAC;QACZ,GAAG,CAAC,IAAI,CAAC,+DAA+D,CAAC,CAAC;IAC5E,CAAC;IAED,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;QAC5B,GAAG,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC3D,GAAG,CAAC,IAAI,CAAC,QAAQ,MAAM,EAAE,CAAC,CAAC;QAC3B,GAAG,CAAC,IAAI,EAAE,CAAC;QACX,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IACrF,GAAG,CAAC,IAAI,EAAE,CAAC;IACX,IAAI,IAAI,EAAE,MAAM,KAAK,WAAW,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,EAAE,CAAC;QAC1D,GAAG,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QACtC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,sBAAsB,OAAO,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;QACnE,GAAG,CAAC,IAAI,EAAE,CAAC;IACb,CAAC;IACD,OAAO,IAAI,EAAE,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,OAAgB;IACjD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC1B,IAAI,CAAC,IAAI;QAAE,OAAO,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IACzC,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC1D,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,IAAI,CAAC,CAAC;QACpC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC;QAClC,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,IAAI,SAAS,IAAI,IAAI,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,QAAQ,CAAC,CAAC;IAC9F,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ;QAAE,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,QAAQ,CAAC,CAAC;IACnE,OAAO,EAAE,CAAC;AACZ,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { GlobalOptions } from "../core/session.js";
|
|
2
|
+
export interface SkillDoc {
|
|
3
|
+
name: string;
|
|
4
|
+
description: string;
|
|
5
|
+
body: string;
|
|
6
|
+
}
|
|
7
|
+
export type Action = "created" | "updated" | "unchanged" | "removed" | "absent";
|
|
8
|
+
export interface Change {
|
|
9
|
+
target: string;
|
|
10
|
+
path: string;
|
|
11
|
+
action: Action;
|
|
12
|
+
}
|
|
13
|
+
export declare function parseSkill(raw: string): SkillDoc;
|
|
14
|
+
export declare function skillInstall(globals: GlobalOptions, names: string[], options?: {
|
|
15
|
+
all?: boolean;
|
|
16
|
+
global?: boolean;
|
|
17
|
+
}): Promise<number>;
|
|
18
|
+
export declare function skillUninstall(globals: GlobalOptions, names: string[], options?: {
|
|
19
|
+
all?: boolean;
|
|
20
|
+
global?: boolean;
|
|
21
|
+
}): Promise<number>;
|
|
22
|
+
export declare function skillList(globals: GlobalOptions): Promise<number>;
|
|
23
|
+
export declare function skillShow(globals: GlobalOptions, name?: string): Promise<number>;
|
|
24
|
+
//# sourceMappingURL=skill.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill.d.ts","sourceRoot":"","sources":["../../src/commands/skill.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAYxD,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACd;AAYD,MAAM,MAAM,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,QAAQ,CAAC;AAEhF,MAAM,WAAW,MAAM;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAkHD,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CAahD;AA0HD,wBAAsB,YAAY,CAChC,OAAO,EAAE,aAAa,EACtB,KAAK,EAAE,MAAM,EAAE,EACf,OAAO,GAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GAChD,OAAO,CAAC,MAAM,CAAC,CA+EjB;AAED,wBAAsB,cAAc,CAClC,OAAO,EAAE,aAAa,EACtB,KAAK,EAAE,MAAM,EAAE,EACf,OAAO,GAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GAChD,OAAO,CAAC,MAAM,CAAC,CA2DjB;AAED,wBAAsB,SAAS,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAgEvE;AAED,wBAAsB,SAAS,CAAC,OAAO,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAYtF"}
|