@rse/ase 0.9.33 → 0.9.35
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-service.js +4 -0
- package/dst/ase-setup.js +77 -45
- package/package.json +7 -7
- 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/agents/ase-code-analyze.md +262 -0
- package/plugin/meta/ase-dialog.md +10 -171
- package/plugin/package.json +5 -5
- package/plugin/skills/ase-arch-analyze/SKILL.md +5 -4
- package/plugin/skills/ase-code-analyze/SKILL.md +58 -217
- package/plugin/skills/ase-code-explain/SKILL.md +5 -5
- package/plugin/skills/ase-code-insight/SKILL.md +5 -5
- package/plugin/skills/ase-code-lint/SKILL.md +30 -13
- package/plugin/skills/ase-code-resolve/SKILL.md +5 -5
- package/plugin/skills/ase-docs-proofread/SKILL.md +28 -14
- package/plugin/skills/ase-meta-chat/SKILL.md +4 -4
- package/plugin/skills/ase-meta-diff/SKILL.md +3 -3
- package/plugin/skills/ase-meta-quorum/SKILL.md +6 -5
- package/plugin/skills/ase-meta-review/SKILL.md +5 -6
- package/plugin/skills/ase-meta-search/SKILL.md +7 -4
- package/dst/ase-hello.js +0 -23
|
@@ -10,6 +10,7 @@ disable-model-invocation: false
|
|
|
10
10
|
effort: high
|
|
11
11
|
allowed-tools:
|
|
12
12
|
- "Agent"
|
|
13
|
+
- "Glob"
|
|
13
14
|
---
|
|
14
15
|
|
|
15
16
|
@${CLAUDE_SKILL_DIR}/../../meta/ase-control.md
|
|
@@ -53,180 +54,56 @@ problems in *performance* and *efficiency*, or problems in *security*.
|
|
|
53
54
|
|
|
54
55
|
2. <step id="STEP 2: Investigate Code Base">
|
|
55
56
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
- transferring uncompressed or overly verbose payloads
|
|
107
|
-
- missing short-circuit evaluation in expensive conditions
|
|
108
|
-
- recomputing invariants inside loops (loop-invariant code)
|
|
109
|
-
- suboptimal batch sizes (too small = overhead, too large = latency)
|
|
110
|
-
- inefficient algorithms for sorting/searching already-ordered data
|
|
111
|
-
- redundant validation/sanitization of trusted internal data
|
|
112
|
-
- missing connection/resource reuse (open-close per operation)
|
|
113
|
-
- [...]
|
|
114
|
-
|
|
115
|
-
</if>
|
|
116
|
-
|
|
117
|
-
<if condition="<getopt-option-security/> is equal `true`">
|
|
118
|
-
|
|
119
|
-
Focus on *security* only - and do *not* investigate logic,
|
|
120
|
-
semantics, performance, or efficiency problems.
|
|
121
|
-
|
|
122
|
-
Analysis Hints (not exhaustive, just indicators):
|
|
123
|
-
- unsafe data deserialization
|
|
124
|
-
- missing input data validation/sanitization
|
|
125
|
-
- broken authentication/authorization
|
|
126
|
-
- sensitive-data exposure
|
|
127
|
-
- path traversal
|
|
128
|
-
- unsafe cryptography
|
|
129
|
-
- hard-coded secrets
|
|
130
|
-
- vulnerable dependencies
|
|
131
|
-
- injection flaws
|
|
132
|
-
- cross-site scripting (XSS) and output-encoding gaps
|
|
133
|
-
- cross-site request forgery (CSRF) and missing anti-forgery tokens
|
|
134
|
-
- insecure direct object references (IDOR)
|
|
135
|
-
- server-side request forgery (SSRF)
|
|
136
|
-
- insecure or missing transport encryption (TLS)
|
|
137
|
-
- weak session management (fixation, predictable tokens)
|
|
138
|
-
- missing rate limiting/anti-automation controls
|
|
139
|
-
- overly permissive CORS or file permissions
|
|
140
|
-
- verbose error messages leaking internals
|
|
141
|
-
- unsafe randomness for security-sensitive values
|
|
142
|
-
- mass assignment / over-binding of request parameters
|
|
143
|
-
- security misconfiguration (default credentials, debug modes, exposed admin endpoints)
|
|
144
|
-
- missing or misconfigured security headers (CSP, HSTS, X-Frame-Options)
|
|
145
|
-
- improper certificate/hostname validation (TLS verification disabled)
|
|
146
|
-
- insufficient logging and monitoring of security events
|
|
147
|
-
- race conditions / TOCTOU (time-of-check to time-of-use) flaws
|
|
148
|
-
- integer overflow/underflow and buffer overflows
|
|
149
|
-
- use-after-free and memory-safety violations
|
|
150
|
-
- privilege escalation through improper privilege dropping
|
|
151
|
-
- insecure file upload handling (unrestricted type/size, executable storage)
|
|
152
|
-
- unsafe handling of untrusted regular expressions (ReDoS)
|
|
153
|
-
- caching of sensitive data in shared or client-side caches
|
|
154
|
-
- secrets or sensitive data leaking into logs, traces, or telemetry
|
|
155
|
-
- insecure default-deny failures (fail-open instead of fail-closed)
|
|
156
|
-
- missing integrity verification (unsigned updates, no subresource integrity)
|
|
157
|
-
- excessive data exposure in API responses (returning more fields than needed)
|
|
158
|
-
- improper resource cleanup leading to exhaustion (connection/file-descriptor leaks)
|
|
159
|
-
- business-logic flaws (bypassable workflows, negative quantities, replay)
|
|
160
|
-
- [...]
|
|
161
|
-
|
|
162
|
-
</if>
|
|
163
|
-
|
|
164
|
-
<if condition="<getopt-option-performance/> is NOT equal `true` and <getopt-option-security/> is NOT equal `true`">
|
|
165
|
-
|
|
166
|
-
Focus on problems in the *logic* and *semantics* and the related
|
|
167
|
-
*control flow* only - and do *not* investigate performance,
|
|
168
|
-
efficiency, or security problems.
|
|
169
|
-
|
|
170
|
-
Analysis Hints (not exhaustive, just indicators):
|
|
171
|
-
- incorrect conditionals and boolean logic
|
|
172
|
-
- off-by-one and boundary errors
|
|
173
|
-
- operator misuse
|
|
174
|
-
- mishandled edge cases
|
|
175
|
-
- broken or missing error handling
|
|
176
|
-
- incorrect async/await/promise handling
|
|
177
|
-
- control-flow defects (unreachable code, missing breaks, wrong early returns)
|
|
178
|
-
- state-mutation bugs
|
|
179
|
-
- incorrect default values
|
|
180
|
-
- null/undefined mishandling
|
|
181
|
-
- type-coercion bugs
|
|
182
|
-
- faulty parsing or merge/override semantics
|
|
183
|
-
- race conditions and unsynchronized shared state
|
|
184
|
-
- resource leaks (unclosed files, handles, connections)
|
|
185
|
-
- inverted or swapped function arguments
|
|
186
|
-
- incorrect loop termination or accumulator initialization
|
|
187
|
-
- shadowed or reassigned variables changing intent
|
|
188
|
-
- incomplete switch/case or enum coverage
|
|
189
|
-
- silent exception swallowing
|
|
190
|
-
- floating-point comparison and rounding errors
|
|
191
|
-
- integer overflow/underflow or truncating division
|
|
192
|
-
- sign and modulo errors with negative operands
|
|
193
|
-
- reference vs. value semantics (aliasing, shared mutable defaults)
|
|
194
|
-
- incorrect short-circuit evaluation or operator precedence
|
|
195
|
-
- logical vs. bitwise operator confusion
|
|
196
|
-
- negation mistakes in compound predicates
|
|
197
|
-
- wrong comparison operator (`==` instead of `===`, `<` vs. `<=`, etc)
|
|
198
|
-
- inverted condition or swapped if/else branches
|
|
199
|
-
- dead or duplicated conditional branches
|
|
200
|
-
- fall-through where a break or return was intended
|
|
201
|
-
- missing or misplaced base case in recursion (non-termination)
|
|
202
|
-
- mutation of a collection while iterating over it
|
|
203
|
-
- incorrect index, key, or bounds when accessing collections
|
|
204
|
-
- empty-collection or single-element edge cases unhandled
|
|
205
|
-
- wrong order of operations in initialization or teardown
|
|
206
|
-
- missing cleanup on early return, break, or exception path
|
|
207
|
-
- double-free, use-after-free, or double-close of resources
|
|
208
|
-
- incorrect time-zone, date arithmetic, or unit conversions
|
|
209
|
-
- stale cache or memoization not invalidated on change
|
|
210
|
-
- incorrect deep vs. shallow copy semantics
|
|
211
|
-
- partial or non-atomic updates leaving inconsistent state
|
|
212
|
-
- ignored or unchecked return values and status codes
|
|
213
|
-
- error code vs. exception path mismatch
|
|
214
|
-
- catching too broad an exception masking real failures
|
|
215
|
-
- re-throwing without preserving the original cause
|
|
216
|
-
- incorrect equality, hashing, or ordering for custom types
|
|
217
|
-
- regex anchoring, greediness, or escaping mistakes
|
|
218
|
-
- string encoding, normalization, or case-folding errors
|
|
219
|
-
- missing `await` causing unhandled or dropped promises
|
|
220
|
-
- incorrect promise concurrency (`all` vs. `allSettled`, races)
|
|
221
|
-
- callback invoked zero times, twice, or out of order
|
|
222
|
-
- unguarded re-entrancy or recursive lock acquisition
|
|
223
|
-
- incorrect guard ordering allowing invalid states through
|
|
224
|
-
- assumptions about iteration order of maps/sets/objects
|
|
225
|
-
- [...]
|
|
226
|
-
|
|
227
|
-
</if>
|
|
228
|
-
|
|
229
|
-
You *MUST* not output anything in this STEP 2.
|
|
57
|
+
First, use the following <template/> to give a hint on this step:
|
|
58
|
+
|
|
59
|
+
<template>
|
|
60
|
+
<ase-tpl-bullet-secondary/> **ANALYSIS INVESTIGATION**
|
|
61
|
+
</template>
|
|
62
|
+
|
|
63
|
+
Dispatch the investigation to *sub-agents* via the `Agent`
|
|
64
|
+
tool so that *no* investigation details leak into the user-visible
|
|
65
|
+
transcript. The sub-agents perform the silent reading and checking;
|
|
66
|
+
only their final structured return values are consumed here.
|
|
67
|
+
|
|
68
|
+
For this, first determine the *analysis lens* <lens/>: set
|
|
69
|
+
<lens>performance</lens> if <getopt-option-performance/> is equal
|
|
70
|
+
`true`, set <lens>security</lens> if <getopt-option-security/> is
|
|
71
|
+
equal `true`, and set <lens>logic</lens> otherwise.
|
|
72
|
+
|
|
73
|
+
Then *silently* resolve `<getopt-arguments/>` to the list
|
|
74
|
+
<sources/> of individual source code files, expanding any
|
|
75
|
+
directory or wildcard references with the `Glob` tool. Then
|
|
76
|
+
partition <sources/>, preserving order, into at most *eight*
|
|
77
|
+
batches of roughly equal size (a single file yields a single
|
|
78
|
+
batch), and invoke the following tool once per batch, emitting
|
|
79
|
+
*all* invocations *in one single message* so they run in
|
|
80
|
+
*parallel*:
|
|
81
|
+
|
|
82
|
+
```text
|
|
83
|
+
Agent(
|
|
84
|
+
description: "Analysis Investigation (<batch-index/>/<batch-count/>)",
|
|
85
|
+
subagent_type: "ase:ase-code-analyze",
|
|
86
|
+
prompt: "<lens/> <batch/>",
|
|
87
|
+
run_in_background: false
|
|
88
|
+
)
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
Here <batch/> is the space-separated list of the source code file
|
|
92
|
+
paths of the corresponding batch, <batch-index/> is the 1-based
|
|
93
|
+
index of that batch, and <batch-count/> is the total number of
|
|
94
|
+
batches, so that each parallel invocation is distinguishable in
|
|
95
|
+
the progress display.
|
|
96
|
+
|
|
97
|
+
Parse the result message of each `Agent` tool invocation as a JSON
|
|
98
|
+
array and concatenate all those arrays. Then *deduplicate* the
|
|
99
|
+
combined list: when two problems share the same `file` and `line`,
|
|
100
|
+
*silently drop* all but the first one (sub-agents may have read
|
|
101
|
+
overlapping *related* files for comprehension). Finally sort the
|
|
102
|
+
list by `file` and then numerically by `line`, and set <problems/>
|
|
103
|
+
to that list.
|
|
104
|
+
|
|
105
|
+
You *MUST* *NOT* output anything at all in this STEP 2 beyond the
|
|
106
|
+
`Glob` and `Agent` tool invocations.
|
|
230
107
|
|
|
231
108
|
</step>
|
|
232
109
|
|
|
@@ -235,7 +112,7 @@ problems in *performance* and *efficiency*, or problems in *security*.
|
|
|
235
112
|
Before reporting, *apply the severity floor* selected via
|
|
236
113
|
<getopt-option-severity/> (default `LOW`): define the ordinal rank
|
|
237
114
|
`LOW`=1, `MEDIUM`=2, `HIGH`=3. *Keep* a detected problem if and only
|
|
238
|
-
if its
|
|
115
|
+
if its `severity` field is `ACCEPTED` *or* `rank(severity)` is greater
|
|
239
116
|
than or equal to `rank(<getopt-option-severity/>)`; *silently drop*
|
|
240
117
|
all other problems (they are neither reported nor persisted). With
|
|
241
118
|
the default floor `LOW`, all problems are kept. `ACCEPTED` problems
|
|
@@ -250,9 +127,12 @@ problems in *performance* and *efficiency*, or problems in *security*.
|
|
|
250
127
|
"ase-issue-" }` entry,
|
|
251
128
|
and still emit the final hint <template/> below.
|
|
252
129
|
|
|
253
|
-
In this STEP 3, for *EVERY* surviving problem
|
|
254
|
-
|
|
255
|
-
|
|
130
|
+
In this STEP 3, for *EVERY* surviving problem in <problems/>, set
|
|
131
|
+
<severity/> to its `severity` field, <title/> to its `title` field,
|
|
132
|
+
<description/> to its `description` field, <evidence/> to its
|
|
133
|
+
`evidence` field, and <trade-off/> to its `trade-off` field, and
|
|
134
|
+
immediately report it with the following output <template/>, based
|
|
135
|
+
on concise bullet points.
|
|
256
136
|
|
|
257
137
|
<if condition="<getopt-option-performance/> is equal `true`">
|
|
258
138
|
|
|
@@ -288,45 +168,6 @@ problems in *performance* and *efficiency*, or problems in *security*.
|
|
|
288
168
|
|
|
289
169
|
- Uniquely identify the problems with `P<n/>` where <n/> is 1, 2, ...
|
|
290
170
|
|
|
291
|
-
- In <description/>, use *ultra brief* but still as *precise* as
|
|
292
|
-
possible problem descriptions.
|
|
293
|
-
|
|
294
|
-
- In <description/>, highlight *code* as <template>`<code/>`</template>
|
|
295
|
-
and *key aspects* as <template>*<aspect/>*</template>.
|
|
296
|
-
|
|
297
|
-
- In <description/>, add inline *references* to the related
|
|
298
|
-
code positions in the form of either
|
|
299
|
-
<template>(`<filename/>:<line-number/>`)</template>,
|
|
300
|
-
<template>(`<filename/>:<line-number/>-<line-number/>`)</template> or
|
|
301
|
-
<template>(`<filename/>#<function-or-method/>`)</template>.
|
|
302
|
-
|
|
303
|
-
- In <description/>, classify the problem with a <severity/>
|
|
304
|
-
of <template>LOW</template>, <template>MEDIUM</template>,
|
|
305
|
-
<template>HIGH</template>, or <template>ACCEPTED</template>,
|
|
306
|
-
ranked by the estimated *impact* of the problem. Use
|
|
307
|
-
<template>ACCEPTED</template> when the problem is a deliberate,
|
|
308
|
-
justified trade-off that should remain on record but is never
|
|
309
|
-
dropped by the severity floor (see STEP 3).
|
|
310
|
-
|
|
311
|
-
- For <title/> ultra-compress the <description/> to a concise,
|
|
312
|
-
short, single sentence. Keep one inline reference to the code
|
|
313
|
-
position which is most relevant to the problem.
|
|
314
|
-
|
|
315
|
-
- <if condition="<getopt-option-performance/> is equal `true`">
|
|
316
|
-
In <evidence/>, ground the finding by citing either the inferred
|
|
317
|
-
*Big-O* time/space complexity (e.g. `O(n²)` reducible to `O(n)`)
|
|
318
|
-
with the exact driving loop or recursion, or the matched
|
|
319
|
-
performance *anti-pattern* (e.g. N+1 query, sync-in-loop, repeated
|
|
320
|
-
recompute, string concat in loop), with an inline code reference.
|
|
321
|
-
</if>
|
|
322
|
-
|
|
323
|
-
- <if condition="<getopt-option-performance/> is equal `true`">
|
|
324
|
-
In <trade-off/>, state the *cost* of the optimization (e.g.
|
|
325
|
-
readability, additional memory for speed, added complexity), so
|
|
326
|
-
the user can make an informed decision; use *none* if there is no
|
|
327
|
-
meaningful trade-off.
|
|
328
|
-
</if>
|
|
329
|
-
|
|
330
171
|
- *Additionally*, persist all reported problems in a *single*
|
|
331
172
|
`ase_kv_batch` call to the `ase` MCP server with `transactional`
|
|
332
173
|
set to `true`. The `commands` parameter array of this call
|
|
@@ -74,11 +74,11 @@ code and *explain* it in a *brief*, *standardized*, and *concise* way.
|
|
|
74
74
|
diagram type per intent: `classDiagram` for class/method structure,
|
|
75
75
|
`sequenceDiagram` for actor/message flow, or `flowchart TB` for
|
|
76
76
|
boxes-and-lines component layouts. Then dispatch the rendering to
|
|
77
|
-
the `ase-meta-diagram` sub-agent by calling the tool
|
|
78
|
-
|
|
79
|
-
"ase:ase-meta-diagram", prompt: <mermaid-spec
|
|
80
|
-
|
|
81
|
-
hand-draw.
|
|
77
|
+
the `ase-meta-diagram` sub-agent by calling the tool
|
|
78
|
+
`Agent(description: "Diagram Rendering", subagent_type:
|
|
79
|
+
"ase:ase-meta-diagram", prompt: <mermaid-spec/>,
|
|
80
|
+
run_in_background: false)` and reproduce its returned fenced code
|
|
81
|
+
block verbatim in the response text. Do *not* hand-draw.
|
|
82
82
|
|
|
83
83
|
Keep your explanation *brief* and *concise*.
|
|
84
84
|
Output the result with the following <template/>:
|
|
@@ -95,11 +95,11 @@ Give *insights* into the project through the source code of <getopt-arguments/>.
|
|
|
95
95
|
<mermaid-spec/> for a `flowchart TB` diagram with all modules as
|
|
96
96
|
boxes and the imports between modules as the directed edges. Then
|
|
97
97
|
dispatch the rendering to the `ase-meta-diagram` sub-agent by
|
|
98
|
-
calling the tool `Agent(
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
verbatim in the response text. Do not
|
|
102
|
-
explanation except for this diagram.
|
|
98
|
+
calling the tool `Agent(description: "Diagram Rendering",
|
|
99
|
+
subagent_type: "ase:ase-meta-diagram", prompt: <mermaid-spec/>,
|
|
100
|
+
run_in_background: false)` and reproduce its
|
|
101
|
+
returned fenced code block verbatim in the response text. Do not
|
|
102
|
+
display any further explanation except for this diagram.
|
|
103
103
|
</step>
|
|
104
104
|
</flow>
|
|
105
105
|
|
|
@@ -39,25 +39,42 @@ related to a set of code quality aspects.
|
|
|
39
39
|
<ase-tpl-bullet-secondary/> **LINT INVESTIGATION**
|
|
40
40
|
</template>
|
|
41
41
|
|
|
42
|
-
Dispatch the investigation to
|
|
42
|
+
Dispatch the investigation to *sub-agents* via the `Agent`
|
|
43
43
|
tool so that *no* investigation details leak into the user-visible
|
|
44
|
-
transcript. The sub-
|
|
45
|
-
only
|
|
46
|
-
|
|
47
|
-
For this,
|
|
44
|
+
transcript. The sub-agents perform the silent reading and checking;
|
|
45
|
+
only their final structured return values are consumed here.
|
|
46
|
+
|
|
47
|
+
For this, first *silently* resolve `<getopt-arguments/>` to the
|
|
48
|
+
list <sources/> of individual source code files, expanding any
|
|
49
|
+
directory or wildcard references with the `Glob` tool. Then
|
|
50
|
+
partition <sources/>, preserving order, into at most *eight*
|
|
51
|
+
batches of roughly equal size (a single file yields a single
|
|
52
|
+
batch), and invoke the following tool once per batch, emitting
|
|
53
|
+
*all* invocations *in one single message* so they run in
|
|
54
|
+
*parallel*:
|
|
48
55
|
|
|
49
56
|
```text
|
|
50
57
|
Agent(
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
prompt: <getopt-arguments/>
|
|
58
|
+
description: "Lint Investigation (<batch-index/>/<batch-count/>)",
|
|
59
|
+
subagent_type: "ase:ase-code-lint",
|
|
60
|
+
prompt: <batch/>,
|
|
61
|
+
run_in_background: false
|
|
56
62
|
)
|
|
57
63
|
```
|
|
58
64
|
|
|
59
|
-
|
|
60
|
-
|
|
65
|
+
Here <batch/> is the space-separated list of the source code file
|
|
66
|
+
paths of the corresponding batch, <batch-index/> is the 1-based
|
|
67
|
+
index of that batch, and <batch-count/> is the total number of
|
|
68
|
+
batches, so that each parallel invocation is distinguishable in
|
|
69
|
+
the progress display.
|
|
70
|
+
|
|
71
|
+
Parse the result message of each `Agent` tool invocation as a JSON
|
|
72
|
+
array and concatenate all those arrays. Then *deduplicate* the
|
|
73
|
+
combined list: when two problems share the same `file`, `line`, and
|
|
74
|
+
`aspect`, *silently drop* all but the first one (sub-agents may
|
|
75
|
+
have read overlapping *related* files for comprehension). Finally
|
|
76
|
+
sort the list by `file` and then numerically by `line`, and set
|
|
77
|
+
<problems/> to that list.
|
|
61
78
|
|
|
62
79
|
Then *apply the severity floor* selected via <getopt-option-severity/>
|
|
63
80
|
(default `LOW`): define the ordinal rank `LOW`=1, `MEDIUM`=2,
|
|
@@ -260,7 +277,7 @@ related to a set of code quality aspects.
|
|
|
260
277
|
|
|
261
278
|
<expand name="custom-dialog" arg1="--other">
|
|
262
279
|
CORRECTION: How would you like to proceed with this proposed correction?
|
|
263
|
-
ACCEPT: Apply
|
|
280
|
+
ACCEPT: Apply this proposed correction.
|
|
264
281
|
REJECT: Skip this proposed correction.
|
|
265
282
|
</expand>
|
|
266
283
|
|
|
@@ -159,11 +159,11 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
|
|
|
159
159
|
TB`, `stateDiagram-v2`, `sequenceDiagram`, `classDiagram`, or
|
|
160
160
|
`erDiagram`, depending on intent) and dispatching the rendering
|
|
161
161
|
to the `ase-meta-diagram` sub-agent by calling the tool
|
|
162
|
-
`Agent(
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
verbatim. Omit <optional-diagram/>
|
|
166
|
-
purely local situations.
|
|
162
|
+
`Agent(description: "Diagram Rendering", subagent_type:
|
|
163
|
+
"ase:ase-meta-diagram", prompt: <mermaid-spec/>,
|
|
164
|
+
run_in_background: false)`, reproducing its
|
|
165
|
+
returned fenced code block verbatim. Omit <optional-diagram/>
|
|
166
|
+
entirely for simple or purely local situations.
|
|
167
167
|
|
|
168
168
|
</step>
|
|
169
169
|
|
|
@@ -39,28 +39,42 @@ Analyze documents for spelling, punctuation, or grammar errors
|
|
|
39
39
|
<ase-tpl-bullet-secondary/> **PROOFREADING INVESTIGATION**
|
|
40
40
|
</template>
|
|
41
41
|
|
|
42
|
-
Dispatch the investigation to
|
|
42
|
+
Dispatch the investigation to *sub-agents* via the `Agent`
|
|
43
43
|
tool so that *no* investigation details leak into the user-visible
|
|
44
|
-
transcript. The sub-
|
|
45
|
-
only
|
|
46
|
-
|
|
47
|
-
For this,
|
|
44
|
+
transcript. The sub-agents perform the silent reading and checking;
|
|
45
|
+
only their final structured return values are consumed here.
|
|
46
|
+
|
|
47
|
+
For this, first *silently* resolve `<getopt-arguments/>` to the
|
|
48
|
+
list <documents/> of individual document files, expanding any
|
|
49
|
+
directory or wildcard references with the `Glob` tool. Then
|
|
50
|
+
partition <documents/>, preserving order, into at most *eight*
|
|
51
|
+
batches of roughly equal size (a single document yields a single
|
|
52
|
+
batch), and invoke the following tool once per batch, emitting
|
|
53
|
+
*all* invocations *in one single message* so they run in
|
|
54
|
+
*parallel*:
|
|
48
55
|
|
|
49
56
|
```text
|
|
50
57
|
Agent(
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
prompt: <getopt-arguments/>
|
|
58
|
+
description: "Proofread Investigation (<batch-index/>/<batch-count/>)",
|
|
59
|
+
subagent_type: "ase:ase-docs-proofread",
|
|
60
|
+
prompt: <batch/>,
|
|
61
|
+
run_in_background: false
|
|
56
62
|
)
|
|
57
63
|
```
|
|
58
64
|
|
|
59
|
-
|
|
60
|
-
|
|
65
|
+
Here <batch/> is the space-separated list of the document file
|
|
66
|
+
paths of the corresponding batch, <batch-index/> is the 1-based
|
|
67
|
+
index of that batch, and <batch-count/> is the total number of
|
|
68
|
+
batches, so that each parallel invocation is distinguishable in
|
|
69
|
+
the progress display.
|
|
70
|
+
|
|
71
|
+
Parse the result message of each `Agent` tool invocation as a JSON
|
|
72
|
+
array, concatenate all those arrays, sort the combined list by
|
|
73
|
+
`file` and then numerically by `line`, and set <problems/> to that
|
|
74
|
+
list.
|
|
61
75
|
|
|
62
76
|
You *MUST* *NOT* output anything at all in this step 1 beyond the
|
|
63
|
-
|
|
77
|
+
`Glob` and `Agent` tool invocations.
|
|
64
78
|
</step>
|
|
65
79
|
|
|
66
80
|
2. <step id="STEP 2: Summary">
|
|
@@ -192,7 +206,7 @@ Analyze documents for spelling, punctuation, or grammar errors
|
|
|
192
206
|
|
|
193
207
|
<expand name="custom-dialog" arg1="--other">
|
|
194
208
|
CORRECTION: How would you like to proceed with this proposed correction?
|
|
195
|
-
ACCEPT: Apply
|
|
209
|
+
ACCEPT: Apply this proposed correction.
|
|
196
210
|
REJECT: Skip this proposed correction.
|
|
197
211
|
</expand>
|
|
198
212
|
|
|
@@ -33,10 +33,10 @@ Query foreign LLM for: <query><getopt-arguments/></query>
|
|
|
33
33
|
|
|
34
34
|
```text
|
|
35
35
|
Agent(
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
36
|
+
description: "Query Foreign LLM for Chat",
|
|
37
|
+
subagent_type: "ase:ase-meta-chat",
|
|
38
|
+
prompt: <query/>,
|
|
39
|
+
run_in_background: false
|
|
40
40
|
)
|
|
41
41
|
```
|
|
42
42
|
|
|
@@ -301,9 +301,9 @@ Procedure
|
|
|
301
301
|
labels ultra short (basenames or module names only).
|
|
302
302
|
|
|
303
303
|
2. Dispatch the rendering to the `ase-meta-diagram` sub-agent by
|
|
304
|
-
calling the tool `Agent(
|
|
305
|
-
|
|
306
|
-
"
|
|
304
|
+
calling the tool `Agent(description: "Diagram Rendering",
|
|
305
|
+
subagent_type: "ase:ase-meta-diagram", prompt:
|
|
306
|
+
"<mermaid-spec/>", run_in_background: false)` and capture
|
|
307
307
|
its returned `text` field as <diagram/>.
|
|
308
308
|
|
|
309
309
|
4. Then emit the following <template/>, showing <diagram/> and
|
|
@@ -83,10 +83,10 @@ by querying *multiple* AIs for an *optimal consensus*.
|
|
|
83
83
|
|
|
84
84
|
```text
|
|
85
85
|
Agent(
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
86
|
+
description: "Query Foreign LLM: <arg1/>",
|
|
87
|
+
subagent_type: "ase:ase-meta-chat",
|
|
88
|
+
prompt: "<arg2/> <query/>",
|
|
89
|
+
run_in_background: false
|
|
90
90
|
)
|
|
91
91
|
```
|
|
92
92
|
|
|
@@ -94,7 +94,8 @@ by querying *multiple* AIs for an *optimal consensus*.
|
|
|
94
94
|
|
|
95
95
|
Query only those foreign models whose token is contained in
|
|
96
96
|
<getopt-option-models/> (where `all` selects every model); silently
|
|
97
|
-
skip all others
|
|
97
|
+
skip all others. Emit *all* these `Agent` tool invocations *in one
|
|
98
|
+
single message* so they run in *parallel*:
|
|
98
99
|
|
|
99
100
|
<if condition="<getopt-option-models/> contains `all` OR <getopt-option-models/> contains `chatgpt`">
|
|
100
101
|
<expand name="agent" arg1="OpenAI ChatGPT" arg2="chatgpt"></expand>
|
|
@@ -83,11 +83,10 @@ Procedure
|
|
|
83
83
|
|
|
84
84
|
```text
|
|
85
85
|
Agent(
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
prompt: "Review the staged changes."
|
|
86
|
+
description: "Review Investigation",
|
|
87
|
+
subagent_type: "ase:ase-meta-review",
|
|
88
|
+
prompt: "Review the staged changes.",
|
|
89
|
+
run_in_background: false
|
|
91
90
|
)
|
|
92
91
|
```
|
|
93
92
|
|
|
@@ -149,7 +148,7 @@ Procedure
|
|
|
149
148
|
Then render a *three-column table* with one row per finding by
|
|
150
149
|
using the following output <template/>. For each finding, repeat
|
|
151
150
|
the third line, set <severity/> to its `severity` field, set
|
|
152
|
-
<dimension/> to its `dimension` field set <location/> to its
|
|
151
|
+
<dimension/> to its `dimension` field, set <location/> to its
|
|
153
152
|
`location` field, and set <finding/> to its `finding` field.
|
|
154
153
|
|
|
155
154
|
In the <location/> column, markup the `file:line` reference
|
|
@@ -41,10 +41,10 @@ Your objective is to *search* the *Internet*/*Web* for the following query:
|
|
|
41
41
|
<define name="agent">
|
|
42
42
|
```text
|
|
43
43
|
Agent(
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
44
|
+
description: "Query Web Search Service: <arg1/>",
|
|
45
|
+
subagent_type: "ase:ase-meta-search",
|
|
46
|
+
prompt: <content/>,
|
|
47
|
+
run_in_background: false
|
|
48
48
|
)
|
|
49
49
|
```
|
|
50
50
|
</define>
|
|
@@ -64,6 +64,9 @@ Your objective is to *search* the *Internet*/*Web* for the following query:
|
|
|
64
64
|
A backend is *selected* if `all` is in <getopt-option-services/> *OR*
|
|
65
65
|
that backend's own name is in <getopt-option-services/>.
|
|
66
66
|
|
|
67
|
+
Then invoke the following tool once per *selected* backend, emitting
|
|
68
|
+
*all* invocations *in one single message* so they run in *parallel*:
|
|
69
|
+
|
|
67
70
|
If the `perplexity` backend is *selected* and the MCP tool
|
|
68
71
|
`perplexity_search` from the MCP server `search-perplexity` is available:
|
|
69
72
|
|
package/dst/ase-hello.js
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
** Agentic Software Engineering (ASE)
|
|
3
|
-
** Copyright (c) 2025-2026 Dr. Ralf S. Engelschall <rse@engelschall.com>
|
|
4
|
-
** Licensed under GPL 3.0 <https://spdx.org/licenses/GPL-3.0-only>
|
|
5
|
-
*/
|
|
6
|
-
import { Chalk } from "chalk";
|
|
7
|
-
/* auto-detecting chalk instance: colors on a TTY and degrades cleanly
|
|
8
|
-
on pipes/redirects (unlike ase-statusline.ts, which forces level 1
|
|
9
|
-
because Claude Code pipes its stdout) */
|
|
10
|
-
const c = new Chalk();
|
|
11
|
-
/* CLI command "ase hello" */
|
|
12
|
-
export default class HelloCommand {
|
|
13
|
-
register(program) {
|
|
14
|
-
program
|
|
15
|
-
.command("hello")
|
|
16
|
-
.description("Print a nice greeting to the terminal")
|
|
17
|
-
.option("-s, --subject <subject>", "subject to greet", "World")
|
|
18
|
-
.action((opts) => {
|
|
19
|
-
process.stdout.write(c.blue(`Hello ${opts.subject}!`) + "\n");
|
|
20
|
-
process.exit(0);
|
|
21
|
-
});
|
|
22
|
-
}
|
|
23
|
-
}
|