@rse/ase 2.0.2 → 2.0.3
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/dst/ase-agent-definition-core.js +111 -87
- package/dst/ase-agent-fleet.js +1 -1
- package/dst/ase-agent-runtime-claim.js +5 -3
- package/dst/ase-agent-runtime-engine.js +1 -1
- package/dst/ase-agent-runtime-phase.js +1 -1
- package/dst/ase-agent-runtime-request.js +1 -1
- package/dst/ase-agent-runtime.js +3 -5
- package/dst/ase-artifact.js +3 -3
- package/dst/ase-config-core.js +2 -16
- package/dst/ase-config-schema.js +1 -3
- package/dst/ase-config.js +2 -0
- package/dst/ase-hook.js +12 -12
- package/dst/ase-lib-daemon-cli.js +117 -4
- package/dst/ase-lib-server-cli.js +4 -5
- package/dst/ase-mcp.js +4 -4
- package/dst/ase-service-getopt.js +2 -2
- package/dst/ase-service-otel.js +4 -4
- package/dst/ase-service-skills.js +5 -15
- package/dst/ase-service.js +87 -210
- package/dst/ase-setup-common.js +1 -2
- package/dst/ase-setup-settings.js +6 -9
- package/dst/ase-setup.js +2 -3
- package/dst/ase-statusline.js +170 -170
- package/dst/ase-task-board-flow.js +7 -6
- package/dst/ase-task-board-graph.js +5 -4
- package/dst/ase-task-board-tui-control.js +41 -35
- package/dst/ase-task-board-tui-model.js +185 -167
- package/dst/ase-task-board-tui-popup.js +2 -3
- package/dst/ase-task-board-tui-view.js +74 -70
- package/dst/ase-task-board-web-client.js +2 -2
- package/dst/ase-task-board-web-server.js +2 -2
- package/dst/ase-task-board.js +1 -1
- package/dst/ase-task-format.js +1 -1
- package/dst/ase-task-store-client.js +17 -5
- package/dst/ase-task-store-core.js +5 -7
- package/dst/ase-task-store-issues.js +16 -1
- package/dst/ase-task-store-plugin-ase.js +7 -3
- package/dst/ase-task-store-plugin-gitea.js +9 -32
- package/dst/ase-task-store-plugin-github.js +3 -12
- package/dst/ase-task-store-plugin-gitlab.js +2 -18
- package/dst/ase-task.js +51 -23
- package/dst/ase-util-compat.js +1 -1
- package/dst/ase-util-diagram.js +13 -37
- package/dst/ase.js +5 -5
- package/dst/man/ase-agent-adhoc.1 +1 -1
- package/dst/man/ase-agent-condenser.1 +1 -1
- package/dst/man/ase-agent-editor.1 +1 -1
- package/dst/man/ase-agent-estimator.1 +1 -1
- package/dst/man/ase-agent-fleet.1 +1 -1
- package/dst/man/ase-agent-implementer.1 +1 -1
- package/dst/man/ase-agent-integrator.1 +1 -1
- package/dst/man/ase-agent-qualifier.1 +1 -1
- package/dst/man/ase-agent-rebooter.1 +1 -1
- package/dst/man/ase-agent-relay.1 +1 -1
- package/dst/man/ase-agent-researcher.1 +1 -1
- package/dst/man/ase-agent.1 +1 -1
- package/dst/man/ase-artifact-list.1 +1 -1
- package/dst/man/ase-artifact-name.1 +1 -1
- package/dst/man/ase-artifact.1 +1 -1
- package/dst/man/ase-config-delete.1 +1 -1
- package/dst/man/ase-config-edit.1 +1 -1
- package/dst/man/ase-config-get.1 +1 -1
- package/dst/man/ase-config-init.1 +1 -1
- package/dst/man/ase-config-list.1 +1 -1
- package/dst/man/ase-config-set.1 +1 -1
- package/dst/man/ase-config.1 +1 -1
- package/dst/man/ase-hook-permission-request.1 +1 -1
- package/dst/man/ase-hook-pre-tool-use.1 +1 -1
- package/dst/man/ase-hook-session-end.1 +1 -1
- package/dst/man/ase-hook-session-persona.1 +1 -1
- package/dst/man/ase-hook-session-start.1 +1 -1
- package/dst/man/ase-hook-stop.1 +1 -1
- package/dst/man/ase-hook-user-prompt-submit.1 +1 -1
- package/dst/man/ase-hook.1 +1 -1
- package/dst/man/ase-man.1 +1 -1
- package/dst/man/ase-mcp.1 +1 -1
- package/dst/man/ase-service-log.1 +1 -1
- package/dst/man/ase-service-send.1 +1 -1
- package/dst/man/ase-service-start.1 +1 -1
- package/dst/man/ase-service-status.1 +1 -1
- package/dst/man/ase-service-stop.1 +1 -1
- package/dst/man/ase-service.1 +1 -1
- package/dst/man/ase-setup-disable.1 +1 -1
- package/dst/man/ase-setup-enable.1 +1 -1
- package/dst/man/ase-setup-install.1 +1 -1
- package/dst/man/ase-setup-mcp.1 +1 -1
- package/dst/man/ase-setup-status.1 +1 -1
- package/dst/man/ase-setup-statusline.1 +1 -1
- package/dst/man/ase-setup-telemetry.1 +1 -1
- package/dst/man/ase-setup-uninstall.1 +1 -1
- package/dst/man/ase-setup-update.1 +1 -1
- package/dst/man/ase-setup.1 +1 -1
- package/dst/man/ase-spec-export.1 +1 -1
- package/dst/man/ase-spec-lint.1 +1 -1
- package/dst/man/ase-spec-preview.1 +1 -1
- package/dst/man/ase-spec.1 +1 -1
- package/dst/man/ase-statusline.1 +1 -1
- package/dst/man/ase-task-assign.1 +1 -1
- package/dst/man/ase-task-board.1 +1 -1
- package/dst/man/ase-task-delete.1 +1 -1
- package/dst/man/ase-task-edit.1 +1 -1
- package/dst/man/ase-task-idscheme.1 +1 -1
- package/dst/man/ase-task-lifecycle.1 +1 -1
- package/dst/man/ase-task-list.1 +1 -1
- package/dst/man/ase-task-load.1 +1 -1
- package/dst/man/ase-task-newid.1 +1 -1
- package/dst/man/ase-task-purge.1 +1 -1
- package/dst/man/ase-task-rename.1 +1 -1
- package/dst/man/ase-task-request.1 +1 -1
- package/dst/man/ase-task-save.1 +1 -1
- package/dst/man/ase-task-status.1 +1 -1
- package/dst/man/ase-task-store.1 +1 -1
- package/dst/man/ase-task-view.1 +1 -1
- package/dst/man/ase-task.1 +1 -1
- package/dst/man/ase-util-compat.1 +1 -1
- package/dst/man/ase-util-diagram.1 +1 -1
- package/dst/man/ase-util-meta.1 +1 -1
- package/dst/man/ase-util-metric.1 +1 -1
- package/dst/man/ase-util-mint.1 +1 -1
- package/dst/man/ase-util-worktree.1 +1 -1
- package/dst/man/ase-util.1 +1 -1
- package/dst/man/ase.1 +1 -1
- package/package.json +1 -1
- package/plugin/.claude-plugin/plugin.json +1 -1
- package/plugin/.codex-plugin/plugin.json +1 -1
- package/plugin/.github/plugin/plugin.json +1 -1
- package/plugin/meta/ase-skill.md +7 -0
- package/plugin/mods/ase-mods.ts +10 -7
- package/plugin/skills/ase-code-analyze/SKILL.md +18 -10
- package/plugin/skills/ase-code-analyze/help.md +11 -6
- package/plugin/skills/ase-code-lint/SKILL.md +37 -23
- package/plugin/skills/ase-code-lint/help.md +10 -5
- package/plugin/skills/ase-help-intent/data.md +24 -12
- package/plugin/skills/ase-repo-review/SKILL.md +5 -3
- package/plugin/skills/ase-repo-review/help.md +3 -1
package/dst/man/ase-task-store.1
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
.TH "ASE-TASK-STORE" "1" "October 2026" "2.0.
|
|
1
|
+
.TH "ASE-TASK-STORE" "1" "October 2026" "2.0.3" "Agentic Software Engineering (ASE)"
|
|
2
2
|
.SH "NAME"
|
|
3
3
|
\fBase-task-store\fR - Manage the per-user task store REST API server
|
|
4
4
|
.SH "SYNOPSIS"
|
package/dst/man/ase-task-view.1
CHANGED
package/dst/man/ase-task.1
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
.TH "ASE-UTIL-COMPAT" "1" "October 2026" "2.0.
|
|
1
|
+
.TH "ASE-UTIL-COMPAT" "1" "October 2026" "2.0.3" "Agentic Software Engineering (ASE)"
|
|
2
2
|
.SH "NAME"
|
|
3
3
|
\fBase-util-compat\fR - Output Expected Probe Values of the Compatibility Self-Test
|
|
4
4
|
.SH "SYNOPSIS"
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
.TH "ASE-UTIL-DIAGRAM" "1" "October 2026" "2.0.
|
|
1
|
+
.TH "ASE-UTIL-DIAGRAM" "1" "October 2026" "2.0.3" "Agentic Software Engineering (ASE)"
|
|
2
2
|
.SH "NAME"
|
|
3
3
|
\fBase-util-diagram\fR - Render Mermaid or D2 Diagrams as Unicode/ASCII Art or SVG
|
|
4
4
|
.SH "SYNOPSIS"
|
package/dst/man/ase-util-meta.1
CHANGED
package/dst/man/ase-util-mint.1
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
.TH "ASE-UTIL-WORKTREE" "1" "October 2026" "2.0.
|
|
1
|
+
.TH "ASE-UTIL-WORKTREE" "1" "October 2026" "2.0.3" "Agentic Software Engineering (ASE)"
|
|
2
2
|
.SH "NAME"
|
|
3
3
|
\fBase-util-worktree\fR - Resolve the ASE Worktree Directories
|
|
4
4
|
.SH "SYNOPSIS"
|
package/dst/man/ase-util.1
CHANGED
package/dst/man/ase.1
CHANGED
package/package.json
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"homepage": "https://ase.tools",
|
|
7
7
|
"repository": { "url": "git+https://github.com/rse/ase.git", "type": "git" },
|
|
8
8
|
"bugs": { "url": "https://github.com/rse/ase/issues" },
|
|
9
|
-
"version": "2.0.
|
|
9
|
+
"version": "2.0.3",
|
|
10
10
|
"license": "Apache-2.0",
|
|
11
11
|
"author": {
|
|
12
12
|
"name": "Dr. Ralf S. Engelschall",
|
package/plugin/meta/ase-skill.md
CHANGED
|
@@ -306,6 +306,13 @@ Artifact Boxing Transparency
|
|
|
306
306
|
above. Where no such branches or instructions exist, the decisions
|
|
307
307
|
above apply.
|
|
308
308
|
|
|
309
|
+
- *IMPORTANT*: Severity rule: an *explicitly* given severity floor
|
|
310
|
+
(option `--severity`|`-S` other than `AUTO`) of a finding-producing
|
|
311
|
+
skill *overrules* the boxing for *which* findings are inspected and
|
|
312
|
+
acted on: it lifts the `black` skip and the `grey` floor `MEDIUM`,
|
|
313
|
+
so e.g. `-S LOW` acts on *all* findings of severity `LOW` and above.
|
|
314
|
+
The boxing still governs the *internals exposed* of each finding.
|
|
315
|
+
|
|
309
316
|
Guidance Hint Level
|
|
310
317
|
-------------------
|
|
311
318
|
|
package/plugin/mods/ase-mods.ts
CHANGED
|
@@ -236,7 +236,7 @@ export const register: Register = (on, options) => {
|
|
|
236
236
|
/* the last known width of the terminal, the already seen tables, the
|
|
237
237
|
latest (still unanswered) table, the picks and the selected question of the
|
|
238
238
|
still unsubmitted prompt, and the frozen picks of the already answered tables */
|
|
239
|
-
let columns
|
|
239
|
+
let columns = 80
|
|
240
240
|
const seen = new Set<string>()
|
|
241
241
|
let latest: string | undefined
|
|
242
242
|
let picks = new Map<number, string>()
|
|
@@ -326,22 +326,25 @@ export const register: Register = (on, options) => {
|
|
|
326
326
|
}
|
|
327
327
|
|
|
328
328
|
/* draw a line of a cell: its styled runs, padded to the column width */
|
|
329
|
-
const paint = (chars: Char[],
|
|
329
|
+
const paint = (chars: Char[], span: number): (string | RenderElement)[] => [
|
|
330
330
|
...split(chars).map(({ text, bold, color }) =>
|
|
331
331
|
bold || color !== undefined ? Text({ bold, color, children: text }) : text),
|
|
332
|
-
" ".repeat(Math.max(0,
|
|
332
|
+
" ".repeat(Math.max(0, span - width(chars)))
|
|
333
333
|
]
|
|
334
334
|
|
|
335
335
|
/* insert the number of a clicked question or the short response of a clicked
|
|
336
336
|
answer into the prompt and refresh the picks and the selection from it */
|
|
337
337
|
const press = (number: number, letter?: string) => () => {
|
|
338
|
-
|
|
338
|
+
$.prompt.read()
|
|
339
339
|
.then(({ text }) => $.prompt.fill({ text: insert(text, number, letter) }))
|
|
340
340
|
.then((box) => {
|
|
341
341
|
picks = pick(box.text)
|
|
342
342
|
selected = select(box.text)
|
|
343
343
|
$.ui.invalidate("ui.render")
|
|
344
344
|
})
|
|
345
|
+
.catch(() => {
|
|
346
|
+
/* ignore a prompt which is no longer accessible */
|
|
347
|
+
})
|
|
345
348
|
}
|
|
346
349
|
|
|
347
350
|
/* draw a line of a cell: in the latest table as the styled text inside a
|
|
@@ -351,11 +354,11 @@ export const register: Register = (on, options) => {
|
|
|
351
354
|
the run's bold style, but not its color, as its hover style, because the
|
|
352
355
|
engine leaves the space cells uncolored) on top of it; otherwise as
|
|
353
356
|
styled text only */
|
|
354
|
-
const draw = (chars: Char[],
|
|
357
|
+
const draw = (chars: Char[], span: number, group: string, line: number,
|
|
355
358
|
onPress: () => void): RenderElement[] => {
|
|
356
359
|
const w = width(chars)
|
|
357
360
|
if (e.requestId !== latest || w === 0)
|
|
358
|
-
return [ Text({ children: paint(chars,
|
|
361
|
+
return [ Text({ children: paint(chars, span) }) ]
|
|
359
362
|
const buttons = split(chars).map(({ text, bold }, r) =>
|
|
360
363
|
Button({ key: `${group}/${line}/${r}`, label: text, plain: true, onPress,
|
|
361
364
|
hover: { scope: group, inverse: true, bold } }))
|
|
@@ -365,7 +368,7 @@ export const register: Register = (on, options) => {
|
|
|
365
368
|
Box({ position: "absolute", top: 0, left: 0, display: "none",
|
|
366
369
|
hover: { scope: group, display: "flex" }, flexDirection: "row", children: buttons })
|
|
367
370
|
] }),
|
|
368
|
-
Text({ children: " ".repeat(Math.max(0,
|
|
371
|
+
Text({ children: " ".repeat(Math.max(0, span - w)) })
|
|
369
372
|
]
|
|
370
373
|
}
|
|
371
374
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ase-code-analyze
|
|
3
|
-
argument-hint: "[--help|-h] [--performance|-p] [--security|-s] [--severity|-S=(LOW|MEDIUM|HIGH)] [--prefix|-P=<prefix>] [--staged] [--unstaged] [<source-reference>]"
|
|
3
|
+
argument-hint: "[--help|-h] [--performance|-p] [--security|-s] [--severity|-S=(AUTO|LOW|MEDIUM|HIGH)] [--prefix|-P=<prefix>] [--staged] [--unstaged] [<source-reference>]"
|
|
4
4
|
description: >
|
|
5
5
|
Analyze the source code for problems in either the logic and
|
|
6
6
|
semantics and its related control flow, performance and efficiency,
|
|
@@ -25,7 +25,7 @@ Analyze Source Code
|
|
|
25
25
|
|
|
26
26
|
<expand name="getopt"
|
|
27
27
|
arg1="ase-code-analyze"
|
|
28
|
-
arg2="--performance|-p --security|-s --severity|-S=(LOW|MEDIUM|HIGH) --prefix|-P= --staged --unstaged">
|
|
28
|
+
arg2="--performance|-p --security|-s --severity|-S=(AUTO|LOW|MEDIUM|HIGH) --prefix|-P= --staged --unstaged">
|
|
29
29
|
$ARGUMENTS
|
|
30
30
|
</expand>
|
|
31
31
|
|
|
@@ -56,10 +56,11 @@ problems in *performance* and *efficiency*, or problems in *security*.
|
|
|
56
56
|
|
|
57
57
|
2. <step id="STEP 2: Investigate Code Base">
|
|
58
58
|
|
|
59
|
-
<if condition="<ase-project-boxing/> is equal `black`">
|
|
59
|
+
<if condition="<ase-project-boxing/> is equal `black` and <getopt-option-severity/> is equal `AUTO`">
|
|
60
60
|
|
|
61
61
|
The project source artifacts are classified as a *black box*, so
|
|
62
|
-
the user does *not* want them inspected or their problems surfaced
|
|
62
|
+
the user does *not* want them inspected or their problems surfaced
|
|
63
|
+
(an *explicitly* given severity floor lifts this skip).
|
|
63
64
|
*Skip* the entire investigation and analysis: do *not* invoke any
|
|
64
65
|
`Bash`, `Glob`, or `Agent` tool and do *not* read any source, only
|
|
65
66
|
output the following <template/> and then *SKIP* the remaining step
|
|
@@ -191,17 +192,24 @@ problems in *performance* and *efficiency*, or problems in *security*.
|
|
|
191
192
|
do not overwrite each other.
|
|
192
193
|
|
|
193
194
|
Before reporting, determine the *effective severity floor* <floor/>:
|
|
194
|
-
define the ordinal rank `LOW`=1, `MEDIUM`=2, `HIGH`=3
|
|
195
|
-
|
|
196
|
-
<
|
|
197
|
-
|
|
198
|
-
surfaces only *material* findings of severity `MEDIUM`
|
|
195
|
+
define the ordinal rank `LOW`=1, `MEDIUM`=2, `HIGH`=3.
|
|
196
|
+
|
|
197
|
+
<if condition="<getopt-option-severity/> is equal `AUTO`">
|
|
198
|
+
Set <floor>MEDIUM</floor> if <ase-project-boxing/> is equal `grey`
|
|
199
|
+
(grey boxing surfaces only *material* findings of severity `MEDIUM`
|
|
200
|
+
and above), and <floor>LOW</floor> otherwise.
|
|
201
|
+
</if>
|
|
202
|
+
<else>
|
|
203
|
+
Set <floor><getopt-option-severity/></floor>: an *explicitly* given
|
|
204
|
+
severity floor always *wins* over the boxing, both over the `grey`
|
|
205
|
+
floor and over the `black` skip.
|
|
206
|
+
</else>
|
|
199
207
|
|
|
200
208
|
Then *apply the effective severity floor* <floor/>: *Keep* a detected
|
|
201
209
|
problem if and only if its `severity` field is `ACCEPTED` *or*
|
|
202
210
|
`rank(severity)` is greater than or equal to `rank(<floor/>)`;
|
|
203
211
|
*silently drop* all other problems (they are neither reported nor
|
|
204
|
-
persisted). With the
|
|
212
|
+
persisted). With the floor `LOW`, all problems are kept.
|
|
205
213
|
`ACCEPTED` problems are *never* dropped.
|
|
206
214
|
|
|
207
215
|
Then sort the surviving problems in <problems/> by their `severity`
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
[`--help`|`-h`]
|
|
10
10
|
[`--performance`|`-p`]
|
|
11
11
|
[`--security`|`-s`]
|
|
12
|
-
[`--severity`|`-S`=(`LOW`|`MEDIUM`|`HIGH`)]
|
|
12
|
+
[`--severity`|`-S`=(`AUTO`|`LOW`|`MEDIUM`|`HIGH`)]
|
|
13
13
|
[`--prefix`|`-P` *prefix*]
|
|
14
14
|
[`--staged`]
|
|
15
15
|
[`--unstaged`]
|
|
@@ -32,11 +32,16 @@ The *analysis lens* depends on the selected options:
|
|
|
32
32
|
|
|
33
33
|
The `--performance` and `--security` options are *mutually exclusive*.
|
|
34
34
|
|
|
35
|
-
The `--severity`|`-S`=(`LOW`|`MEDIUM`|`HIGH`) option sets a
|
|
36
|
-
floor* (default `
|
|
37
|
-
suppressed (neither reported nor persisted), ordered `LOW`
|
|
38
|
-
`HIGH`. The default `
|
|
39
|
-
|
|
35
|
+
The `--severity`|`-S`=(`AUTO`|`LOW`|`MEDIUM`|`HIGH`) option sets a
|
|
36
|
+
*severity floor* (default `AUTO`): problems below the chosen threshold
|
|
37
|
+
are silently suppressed (neither reported nor persisted), ordered `LOW`
|
|
38
|
+
< `MEDIUM` < `HIGH`. The default `AUTO` means `MEDIUM` for a project
|
|
39
|
+
with `grey` boxing, no analysis at all for a project with `black`
|
|
40
|
+
boxing, and `LOW` (keep all problems) otherwise; an explicitly given
|
|
41
|
+
floor always wins over the boxing, i.e. it also analyzes a project with
|
|
42
|
+
`black` boxing and, e.g. with `LOW`, reports all problems of a project
|
|
43
|
+
with `grey` boxing. `ACCEPTED` problems are never suppressed. Surviving
|
|
44
|
+
problems are reported in *descending
|
|
40
45
|
severity* order `HIGH`, `MEDIUM`, `LOW`, `ACCEPTED` - keeping the
|
|
41
46
|
`file`/`line` order within the same severity - and are renumbered
|
|
42
47
|
contiguously as `P<n>`, so `P1` is the most severe problem.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ase-code-lint
|
|
3
|
-
argument-hint: "[--help|-h] [--auto|-a] [--severity|-S=(LOW|MEDIUM|HIGH)] [--include|-i=<aspect>[,...]] [--exclude|-e=<aspect>[,...]] [--staged] [--unstaged] [<source-reference>]"
|
|
3
|
+
argument-hint: "[--help|-h] [--auto|-a] [--severity|-S=(AUTO|LOW|MEDIUM|HIGH)] [--include|-i=<aspect>[,...]] [--exclude|-e=<aspect>[,...]] [--staged] [--unstaged] [<source-reference>]"
|
|
4
4
|
description: >
|
|
5
5
|
Lint source code for potential code quality problems.
|
|
6
6
|
Use when the user wants to "lint" or "check" source code.
|
|
@@ -23,7 +23,7 @@ Lint Source Code
|
|
|
23
23
|
|
|
24
24
|
<expand name="getopt"
|
|
25
25
|
arg1="ase-code-lint"
|
|
26
|
-
arg2="--auto|-a --severity|-S=(LOW|MEDIUM|HIGH) --include|-i=(none|A01|A02|A03|A04|A05|A06|A07|A08|A09|A10|A11|A12|A13|A14|A15|A16|A17|A18|A19|A20|A21)... --exclude|-e=(none|A01|A02|A03|A04|A05|A06|A07|A08|A09|A10|A11|A12|A13|A14|A15|A16|A17|A18|A19|A20|A21)... --staged --unstaged">
|
|
26
|
+
arg2="--auto|-a --severity|-S=(AUTO|LOW|MEDIUM|HIGH) --include|-i=(none|A01|A02|A03|A04|A05|A06|A07|A08|A09|A10|A11|A12|A13|A14|A15|A16|A17|A18|A19|A20|A21)... --exclude|-e=(none|A01|A02|A03|A04|A05|A06|A07|A08|A09|A10|A11|A12|A13|A14|A15|A16|A17|A18|A19|A20|A21)... --staged --unstaged">
|
|
27
27
|
$ARGUMENTS
|
|
28
28
|
</expand>
|
|
29
29
|
|
|
@@ -36,10 +36,11 @@ related to a set of code quality aspects.
|
|
|
36
36
|
|
|
37
37
|
1. <step id="STEP 1: Investigation">
|
|
38
38
|
|
|
39
|
-
<if condition="<ase-project-boxing/> is equal `black`">
|
|
39
|
+
<if condition="<ase-project-boxing/> is equal `black` and <getopt-option-severity/> is equal `AUTO`">
|
|
40
40
|
|
|
41
41
|
The project source artifacts are classified as a *black box*, so
|
|
42
|
-
the user does *not* want them inspected or their problems surfaced
|
|
42
|
+
the user does *not* want them inspected or their problems surfaced
|
|
43
|
+
(an *explicitly* given severity floor lifts this skip).
|
|
43
44
|
*Skip* the entire investigation and reporting: do *not* invoke any
|
|
44
45
|
`Bash`, `Glob`, or `Agent` tool and do *not* read any source, only
|
|
45
46
|
output the following <template/> and then *SKIP* the remaining steps
|
|
@@ -51,6 +52,11 @@ related to a set of code quality aspects.
|
|
|
51
52
|
|
|
52
53
|
</if>
|
|
53
54
|
|
|
55
|
+
Set <condensed>true</condensed> if <ase-project-boxing/> is equal
|
|
56
|
+
`grey` or `black` (the latter reached only under an explicitly given
|
|
57
|
+
severity floor), and <condensed>false</condensed> otherwise: a
|
|
58
|
+
*condensed* report suppresses the full unified diffs of STEP 3.
|
|
59
|
+
|
|
54
60
|
First, determine the *effective aspect set* <aspects/>, i.e., the
|
|
55
61
|
code quality aspects which are checked at all. For this, parse
|
|
56
62
|
<getopt-option-include/> and <getopt-option-exclude/> as
|
|
@@ -179,16 +185,23 @@ related to a set of code quality aspects.
|
|
|
179
185
|
`line`, and set <problems/> to that list.
|
|
180
186
|
|
|
181
187
|
Then determine the *effective severity floor* <floor/>: define the
|
|
182
|
-
ordinal rank `LOW`=1, `MEDIUM`=2, `HIGH`=3
|
|
183
|
-
|
|
184
|
-
<
|
|
185
|
-
|
|
186
|
-
surfaces only *material* findings of severity `MEDIUM`
|
|
188
|
+
ordinal rank `LOW`=1, `MEDIUM`=2, `HIGH`=3.
|
|
189
|
+
|
|
190
|
+
<if condition="<getopt-option-severity/> is equal `AUTO`">
|
|
191
|
+
Set <floor>MEDIUM</floor> if <ase-project-boxing/> is equal `grey`
|
|
192
|
+
(grey boxing surfaces only *material* findings of severity `MEDIUM`
|
|
193
|
+
and above), and <floor>LOW</floor> otherwise.
|
|
194
|
+
</if>
|
|
195
|
+
<else>
|
|
196
|
+
Set <floor><getopt-option-severity/></floor>: an *explicitly* given
|
|
197
|
+
severity floor always *wins* over the boxing, both over the `grey`
|
|
198
|
+
floor and over the `black` skip.
|
|
199
|
+
</else>
|
|
187
200
|
|
|
188
201
|
Then *apply the effective severity floor* <floor/>: *Keep* a problem
|
|
189
202
|
in <problems/> if and only if its `severity` field is `ACCEPTED` *or*
|
|
190
203
|
`rank(severity)` is greater than or equal to `rank(<floor/>)`;
|
|
191
|
-
*silently drop* all other problems. With the
|
|
204
|
+
*silently drop* all other problems. With the floor `LOW`, all
|
|
192
205
|
problems are kept. `ACCEPTED` problems are *never* dropped.
|
|
193
206
|
|
|
194
207
|
Finally, sort the surviving problems in <problems/> by their
|
|
@@ -270,7 +283,7 @@ related to a set of code quality aspects.
|
|
|
270
283
|
1. Set <file/> to the `file` field of <item/>.
|
|
271
284
|
Set <change-hunks/> to the `change-hunks` field of <item/>.
|
|
272
285
|
|
|
273
|
-
Unless <
|
|
286
|
+
Unless <condensed/> is equal `true` (where the
|
|
274
287
|
full unified diff is suppressed and no context lines are
|
|
275
288
|
rendered at all), *silently* read the current content of
|
|
276
289
|
<file/> with the `Read` tool - reusing the content read
|
|
@@ -284,7 +297,7 @@ related to a set of code quality aspects.
|
|
|
284
297
|
context lines of substep 2 below, so the rendered diff
|
|
285
298
|
shows real context even when a sub-agent supplied none.
|
|
286
299
|
|
|
287
|
-
Unless <
|
|
300
|
+
Unless <condensed/> is equal `true` (where the
|
|
288
301
|
full unified diff is suppressed and this per-file header is
|
|
289
302
|
unused), set <diff-file/> to the following <template/>:
|
|
290
303
|
|
|
@@ -328,8 +341,8 @@ related to a set of code quality aspects.
|
|
|
328
341
|
Keep the sub-agent supplied values only when
|
|
329
342
|
<file-lines/> is empty.
|
|
330
343
|
|
|
331
|
-
2. *Skip* this substep entirely when <
|
|
332
|
-
is equal `
|
|
344
|
+
2. *Skip* this substep entirely when <condensed/>
|
|
345
|
+
is equal `true` - the full unified diff is suppressed
|
|
333
346
|
there, so none of the <hunk-body/>, <old-count/>,
|
|
334
347
|
<new-count/>, <old-start/>, or <new-start/> values
|
|
335
348
|
below are consumed (substep 4 builds only the condensed
|
|
@@ -384,10 +397,10 @@ related to a set of code quality aspects.
|
|
|
384
397
|
|
|
385
398
|
<template>`<file/>`:<line/></template>
|
|
386
399
|
|
|
387
|
-
4. <if condition="<
|
|
400
|
+
4. <if condition="<condensed/> is equal `true`">
|
|
388
401
|
|
|
389
|
-
The full unified diff is *suppressed*
|
|
390
|
-
(see substep 5 below), so *skip* the full-diff append
|
|
402
|
+
The full unified diff is *suppressed* in a condensed
|
|
403
|
+
report (see substep 5 below), so *skip* the full-diff append
|
|
391
404
|
and instead build only a *condensed* one-line
|
|
392
405
|
representation of this hunk: determine <old-snippet/>
|
|
393
406
|
as the *single-line* collapse of <old-text/> (join its
|
|
@@ -417,7 +430,7 @@ related to a set of code quality aspects.
|
|
|
417
430
|
|
|
418
431
|
</for>
|
|
419
432
|
|
|
420
|
-
3. Unless <
|
|
433
|
+
3. Unless <condensed/> is equal `true` (where
|
|
421
434
|
<diff-file/> is unused), append <diff-file/> to <diff/>.
|
|
422
435
|
|
|
423
436
|
</for>
|
|
@@ -433,10 +446,11 @@ related to a set of code quality aspects.
|
|
|
433
446
|
|
|
434
447
|
5. <if condition="<getopt-option-auto/> is not equal `true`">
|
|
435
448
|
|
|
436
|
-
<if condition="<
|
|
449
|
+
<if condition="<condensed/> is equal `true`">
|
|
437
450
|
|
|
438
|
-
The project source artifacts are classified as a *grey box
|
|
439
|
-
the user does *not* want the full artifact
|
|
451
|
+
The project source artifacts are classified as a *grey box* (or
|
|
452
|
+
*black box*), so the user does *not* want the full artifact
|
|
453
|
+
internals surfaced:
|
|
440
454
|
*suppress* the full unified diff and instead show only the
|
|
441
455
|
*condensed* one-line-per-hunk representation. Report the
|
|
442
456
|
solution with the following <template/>:
|
|
@@ -505,8 +519,8 @@ related to a set of code quality aspects.
|
|
|
505
519
|
- <if condition="<result/> is 'ACCEPT'">
|
|
506
520
|
Invoke the `Edit` tool to apply the changes exactly
|
|
507
521
|
as given by the hunks of the current <change-set/>
|
|
508
|
-
(rendered as <diff/>, unless suppressed
|
|
509
|
-
|
|
522
|
+
(rendered as <diff/>, unless suppressed in a condensed
|
|
523
|
+
report). The operation will be auto-approved by the ASE
|
|
510
524
|
`pre-tool-use` hook (which tracks the active skill),
|
|
511
525
|
so *no* interactive permission prompt will appear.
|
|
512
526
|
After applying the changes, just continue with the next
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
`ase-code-lint`
|
|
9
9
|
[`--help`|`-h`]
|
|
10
10
|
[`--auto`|`-a`]
|
|
11
|
-
[`--severity`|`-S`=(`LOW`|`MEDIUM`|`HIGH`)]
|
|
11
|
+
[`--severity`|`-S`=(`AUTO`|`LOW`|`MEDIUM`|`HIGH`)]
|
|
12
12
|
[`--include`|`-i`=*aspect*[`,`...]]
|
|
13
13
|
[`--exclude`|`-e`=*aspect*[`,`...]]
|
|
14
14
|
[`--staged`]
|
|
@@ -60,11 +60,16 @@ the code, and comments contradicting the code.
|
|
|
60
60
|
Automatically apply every proposed correction without asking the
|
|
61
61
|
user via the interactive dialog.
|
|
62
62
|
|
|
63
|
-
- `--severity`|`-S`=(`LOW`|`MEDIUM`|`HIGH`):
|
|
64
|
-
Set the *severity floor* (default `
|
|
63
|
+
- `--severity`|`-S`=(`AUTO`|`LOW`|`MEDIUM`|`HIGH`):
|
|
64
|
+
Set the *severity floor* (default `AUTO`): findings below the chosen
|
|
65
65
|
threshold are silently suppressed, ordered `LOW` < `MEDIUM` <
|
|
66
|
-
`HIGH`. The default `
|
|
67
|
-
|
|
66
|
+
`HIGH`. The default `AUTO` means `MEDIUM` for a project with `grey`
|
|
67
|
+
boxing, no linting at all for a project with `black` boxing, and
|
|
68
|
+
`LOW` (keep all findings) otherwise; an explicitly given floor always
|
|
69
|
+
wins over the boxing, i.e. it also lints a project with `black`
|
|
70
|
+
boxing and, e.g. with `LOW`, acts on all findings of a project with
|
|
71
|
+
`grey` boxing. `ACCEPTED` findings are never suppressed. Surviving
|
|
72
|
+
findings are reported in *descending
|
|
68
73
|
severity* order `HIGH`, `MEDIUM`, `LOW`, `ACCEPTED`, keeping the
|
|
69
74
|
`file`/`line` order within the same severity.
|
|
70
75
|
|
|
@@ -175,7 +175,7 @@ Discover HTTP clients, flagging any without a release in the last 12 months:
|
|
|
175
175
|
[`--help`|`-h`]
|
|
176
176
|
[`--performance`|`-p`]
|
|
177
177
|
[`--security`|`-s`]
|
|
178
|
-
[`--severity`|`-S`=(`LOW`|`MEDIUM`|`HIGH`)]
|
|
178
|
+
[`--severity`|`-S`=(`AUTO`|`LOW`|`MEDIUM`|`HIGH`)]
|
|
179
179
|
[`--prefix`|`-P` *prefix*]
|
|
180
180
|
[`--staged`]
|
|
181
181
|
[`--unstaged`]
|
|
@@ -198,11 +198,16 @@ The *analysis lens* depends on the selected options:
|
|
|
198
198
|
|
|
199
199
|
The `--performance` and `--security` options are *mutually exclusive*.
|
|
200
200
|
|
|
201
|
-
The `--severity`|`-S`=(`LOW`|`MEDIUM`|`HIGH`) option sets a
|
|
202
|
-
floor* (default `
|
|
203
|
-
suppressed (neither reported nor persisted), ordered `LOW`
|
|
204
|
-
`HIGH`. The default `
|
|
205
|
-
|
|
201
|
+
The `--severity`|`-S`=(`AUTO`|`LOW`|`MEDIUM`|`HIGH`) option sets a
|
|
202
|
+
*severity floor* (default `AUTO`): problems below the chosen threshold
|
|
203
|
+
are silently suppressed (neither reported nor persisted), ordered `LOW`
|
|
204
|
+
< `MEDIUM` < `HIGH`. The default `AUTO` means `MEDIUM` for a project
|
|
205
|
+
with `grey` boxing, no analysis at all for a project with `black`
|
|
206
|
+
boxing, and `LOW` (keep all problems) otherwise; an explicitly given
|
|
207
|
+
floor always wins over the boxing, i.e. it also analyzes a project with
|
|
208
|
+
`black` boxing and, e.g. with `LOW`, reports all problems of a project
|
|
209
|
+
with `grey` boxing. `ACCEPTED` problems are never suppressed. Surviving
|
|
210
|
+
problems are reported in *descending
|
|
206
211
|
severity* order `HIGH`, `MEDIUM`, `LOW`, `ACCEPTED` - keeping the
|
|
207
212
|
`file`/`line` order within the same severity - and are renumbered
|
|
208
213
|
contiguously as `P<n>`, so `P1` is the most severe problem.
|
|
@@ -627,7 +632,7 @@ Get insights into a specific subsystem:
|
|
|
627
632
|
`ase-code-lint`
|
|
628
633
|
[`--help`|`-h`]
|
|
629
634
|
[`--auto`|`-a`]
|
|
630
|
-
[`--severity`|`-S`=(`LOW`|`MEDIUM`|`HIGH`)]
|
|
635
|
+
[`--severity`|`-S`=(`AUTO`|`LOW`|`MEDIUM`|`HIGH`)]
|
|
631
636
|
[`--include`|`-i`=*aspect*[`,`...]]
|
|
632
637
|
[`--exclude`|`-e`=*aspect*[`,`...]]
|
|
633
638
|
[`--staged`]
|
|
@@ -679,11 +684,16 @@ the code, and comments contradicting the code.
|
|
|
679
684
|
Automatically apply every proposed correction without asking the
|
|
680
685
|
user via the interactive dialog.
|
|
681
686
|
|
|
682
|
-
- `--severity`|`-S`=(`LOW`|`MEDIUM`|`HIGH`):
|
|
683
|
-
Set the *severity floor* (default `
|
|
687
|
+
- `--severity`|`-S`=(`AUTO`|`LOW`|`MEDIUM`|`HIGH`):
|
|
688
|
+
Set the *severity floor* (default `AUTO`): findings below the chosen
|
|
684
689
|
threshold are silently suppressed, ordered `LOW` < `MEDIUM` <
|
|
685
|
-
`HIGH`. The default `
|
|
686
|
-
|
|
690
|
+
`HIGH`. The default `AUTO` means `MEDIUM` for a project with `grey`
|
|
691
|
+
boxing, no linting at all for a project with `black` boxing, and
|
|
692
|
+
`LOW` (keep all findings) otherwise; an explicitly given floor always
|
|
693
|
+
wins over the boxing, i.e. it also lints a project with `black`
|
|
694
|
+
boxing and, e.g. with `LOW`, acts on all findings of a project with
|
|
695
|
+
`grey` boxing. `ACCEPTED` findings are never suppressed. Surviving
|
|
696
|
+
findings are reported in *descending
|
|
687
697
|
severity* order `HIGH`, `MEDIUM`, `LOW`, `ACCEPTED`, keeping the
|
|
688
698
|
`file`/`line` order within the same severity.
|
|
689
699
|
|
|
@@ -3170,7 +3180,9 @@ before it is committed or merged.
|
|
|
3170
3180
|
threshold are suppressed, ordered `LOW` < `MEDIUM` < `HIGH`. The
|
|
3171
3181
|
default `AUTO` means `MEDIUM` for a project with `grey` boxing and
|
|
3172
3182
|
`LOW` (keep all findings) otherwise; an explicitly given floor always
|
|
3173
|
-
wins over the boxing.
|
|
3183
|
+
wins over the boxing, i.e. it also reviews a project with `black`
|
|
3184
|
+
boxing and, e.g. with `LOW`, shows all findings of a project with
|
|
3185
|
+
`grey` boxing. `ACCEPTED` findings are never suppressed, and
|
|
3174
3186
|
the number of suppressed findings is always reported. Surviving
|
|
3175
3187
|
findings are rendered in *descending severity* order `HIGH`,
|
|
3176
3188
|
`MEDIUM`, `LOW`, `ACCEPTED`. The floor only affects the rendered
|
|
@@ -224,11 +224,12 @@ Procedure
|
|
|
224
224
|
|
|
225
225
|
2. <step id="STEP 2: Review Investigation">
|
|
226
226
|
|
|
227
|
-
<if condition="<ase-project-boxing/> is equal `black`">
|
|
227
|
+
<if condition="<ase-project-boxing/> is equal `black` and <getopt-option-severity/> is equal `AUTO`">
|
|
228
228
|
|
|
229
229
|
The project source artifacts are classified as a *black box*, so
|
|
230
230
|
the user does *not* want the changes scrutinized or their
|
|
231
|
-
findings surfaced
|
|
231
|
+
findings surfaced (an *explicitly* given severity floor lifts this
|
|
232
|
+
skip). *Skip* the entire review investigation: do
|
|
232
233
|
*not* invoke the `Agent` tool and do *not* read any change, set
|
|
233
234
|
<findings/> to the *empty* list, set <hidden/> to `0`, set
|
|
234
235
|
<verdict/> to `SKIPPED (boxing: black)`, set <summary/> to a
|
|
@@ -288,7 +289,8 @@ Procedure
|
|
|
288
289
|
<else>
|
|
289
290
|
Set <floor><getopt-option-severity/></floor> and
|
|
290
291
|
<floor-origin>--severity <getopt-option-severity/></floor-origin>:
|
|
291
|
-
an *explicitly* given severity floor always *wins* over the boxing
|
|
292
|
+
an *explicitly* given severity floor always *wins* over the boxing,
|
|
293
|
+
both over the `grey` floor and over the `black` skip.
|
|
292
294
|
</else>
|
|
293
295
|
|
|
294
296
|
Then *apply the effective severity floor* <floor/>: *Keep* a finding
|
|
@@ -75,7 +75,9 @@ before it is committed or merged.
|
|
|
75
75
|
threshold are suppressed, ordered `LOW` < `MEDIUM` < `HIGH`. The
|
|
76
76
|
default `AUTO` means `MEDIUM` for a project with `grey` boxing and
|
|
77
77
|
`LOW` (keep all findings) otherwise; an explicitly given floor always
|
|
78
|
-
wins over the boxing.
|
|
78
|
+
wins over the boxing, i.e. it also reviews a project with `black`
|
|
79
|
+
boxing and, e.g. with `LOW`, shows all findings of a project with
|
|
80
|
+
`grey` boxing. `ACCEPTED` findings are never suppressed, and
|
|
79
81
|
the number of suppressed findings is always reported. Surviving
|
|
80
82
|
findings are rendered in *descending severity* order `HIGH`,
|
|
81
83
|
`MEDIUM`, `LOW`, `ACCEPTED`. The floor only affects the rendered
|