@rse/ase 0.9.9 → 0.9.10

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/package.json CHANGED
@@ -6,7 +6,7 @@
6
6
  "homepage": "http://github.com/rse/ase",
7
7
  "repository": { "url": "git+https://github.com/rse/ase.git", "type": "git" },
8
8
  "bugs": { "url": "http://github.com/rse/ase/issues" },
9
- "version": "0.9.9",
9
+ "version": "0.9.10",
10
10
  "license": "GPL-3.0-only",
11
11
  "author": {
12
12
  "name": "Dr. Ralf S. Engelschall",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ase",
3
- "version": "0.9.9",
3
+ "version": "0.9.10",
4
4
  "description": "Agentic Software Engineering (ASE)",
5
5
  "keywords": [ "agentic", "software", "engineering" ],
6
6
  "homepage": "https://ase.tools",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ase",
3
- "version": "0.9.9",
3
+ "version": "0.9.10",
4
4
  "description": "Agentic Software Engineering (ASE)",
5
5
  "keywords": [ "agentic", "software", "engineering" ],
6
6
  "homepage": "https://ase.tools",
@@ -11,6 +11,7 @@ User Dialog
11
11
  </if>
12
12
 
13
13
  <define name="user-dialog">
14
+
14
15
  Let the *user interactively choose* an answer.
15
16
 
16
17
  1. Take the following question specification:
@@ -140,13 +141,17 @@ Let the *user interactively choose* an answer.
140
141
  </define>
141
142
 
142
143
  <define name="custom-dialog">
143
- Let the *user interactively choose* an answer.
144
+
145
+ In the following, you *MUST* *NOT* use the <user-dialog-tool/> tool!
146
+ Instead, you *MUST* just show a custom output, let the user enter input,
147
+ and then you set the result accordingly. For this, closely follow the
148
+ following procedure:
144
149
 
145
150
  1. Take the following question specification:
151
+ <spec><content/></spec>
146
152
 
147
- <spec>
148
- <content/>
149
- </spec>
153
+ Take the following options:
154
+ <opts><arg1/></opts>
150
155
 
151
156
  The first line of <spec/> (separated by newlines) is of the format:
152
157
  `<question-label/>: <question-description/>`
@@ -166,13 +171,17 @@ Let the *user interactively choose* an answer.
166
171
 
167
172
  Set <text></text> (set to empty).
168
173
  Set <keys></keys> (set to empty).
169
- Set <n>1</n> (set entry count to one).
170
- Set <width/> to the maximum length plus 3 of all <label/> strings in <spec/>.
174
+ Set <n>0</n> (set entry count to zero).
175
+ Set <width/> to the maximum length plus 3 of the <label/> strings in the
176
+ contiguous answer lines of <spec/> starting at line 2 (the answer labels only,
177
+ excluding the question label on line 1, and stopping at the first missing line --
178
+ the same lines the entry loop below renders).
171
179
 
172
180
  <for items="2 3 4 5 6 7 8 9">
173
181
  Take from <spec/> the line number <item/>.
174
182
  If this line does not exist, <break/>.
175
183
  If this line exists, parse it according to the format `<label/>: <description/>`.
184
+ Set <n/> to <n/> + 1 (increment entry count).
176
185
  Set <label-key/> to <ase-tpl-key digit="<n/>"/>.
177
186
  Set <label-text/> to `<ase-tpl-pad width="<width/>" text="<label/>:"/>`.
178
187
  Append an entry to <text/>:
@@ -182,7 +191,6 @@ Let the *user interactively choose* an answer.
182
191
  <ase-tpl-boxline><label-key/> ▶ **<label-text/>** <description/></ase-tpl-boxline>
183
192
  </text>
184
193
 
185
- Set <n/> to <n/> + 1 (increment entry count).
186
194
  <if condition="<keys/> is empty">
187
195
  Set <keys><label-key/></keys>
188
196
  </if>
@@ -191,47 +199,67 @@ Let the *user interactively choose* an answer.
191
199
  </else>
192
200
  </for>
193
201
 
202
+ <if condition="<opts/> contains `--other`">
203
+ Set <hint>Please choose *one* option by typing <keys/>/**CANCEL**, or other free-text instruction.</hint>.
204
+ </if>
205
+ <else>
206
+ Set <hint>Please choose *one* option by typing <keys/>/**CANCEL**.</hint>.
207
+ </else>
208
+
194
209
  Set:
195
210
 
196
211
  <text>
197
- <ase-tpl-boxed title="QUESTION" subtitle="<question-label/>">
212
+ <ase-tpl-boxed title="DIALOG" subtitle="<question-label/>">
198
213
 
199
214
  <ase-tpl-boxline>**<question-description/>**</ase-tpl-boxline>
200
215
 
201
216
  <text/>
202
217
 
203
- Please choose *one* option by typing <keys/>/**CANCEL** or free-text instruction.
218
+ <hint/>
204
219
 
205
220
  </ase-tpl-boxed>
206
221
  </text>
207
222
 
208
- If <n/> is less than 3:
209
- Set <result>ERROR: user-dialog requires 2-8 answer lines, got less</result>
210
- and *SKIP* the following step 2 and continue with step 3 dispatch.
223
+ If <n/> is less than 2:
224
+ Set <result>ERROR: custom-dialog requires 2-8 answer lines, got <n/></result>
225
+ and *SKIP* the following step 2.2 and continue with step 2.3 dispatch.
211
226
 
212
227
  2. Output the following <template/>, end the current turn, wait for the
213
- user input, store the user input in <result/> and then continue with step 3:
228
+ user input, store the user input in <result/> and then continue with
229
+ step 2.3 below:
214
230
 
215
231
  <template>
216
232
  <text/>
217
233
  </template>
218
234
 
219
- 3. Check the result and dispatch accordingly:
235
+ 3. Do not output anything in this step!
236
+ Check the <result/> and dispatch accordingly:
220
237
 
221
- - If <result/> indicates that the user doesn't want to proceed,
222
- or the user declined to answer the question, or that the dialog
223
- was cancelled, rejected or skipped, set <result>CANCEL</result>.
238
+ 1. If <result/> is `cancel`, `CANCEL`, `reject`, `REJECT`, or
239
+ otherwise indicates that the user doesn't want to proceed,
240
+ or the user declined to answer the question, or that
241
+ the dialog was cancelled, rejected or skipped, set
242
+ <result>CANCEL</result>.
224
243
 
225
- - Otherwise, determine the selected <label/>
244
+ 2. Otherwise, determine the selected <label/>
226
245
  by mapping the <result/> (usually containing one of the
227
- "key" or "label" strings) to one of the answer labels. Set
228
- <result><label/></result>.
246
+ "key" or "label" strings) to one of the answer labels in
247
+ <spec/>. Set <result><label/></result>.
229
248
 
230
- If <result/> is then *NOT* one of the "label" values from
231
- <spec/>, set <result>OTHER: <result/></result> (prefix
232
- result with "OTHER").
249
+ 3. If <result/> is then *NEITHER* one of the "key"
250
+ *NOR* "label" values from <spec/>:
251
+ <if condition="<opts/> contains `--other`">
252
+ Set <result>OTHER: <result/></result>
253
+ (prefix result with "OTHER").
254
+ </if>
255
+ <else>
256
+ Output the following <template/> and then *START OVER*
257
+ by *GOING* to step 2.2 above.
233
258
 
234
- Do not output anything in this step!
259
+ <template>
260
+ ⧉ **ASE**: ERROR: **Invalid option selected!**
261
+ </template>
262
+ </else>
235
263
 
236
264
  </define>
237
265
 
@@ -77,14 +77,14 @@ distinct **Artifact**s (listed under their <artifact-name/> and their
77
77
  The **Artifact**s have the following cross-references:
78
78
 
79
79
  ```text
80
- ARCH-02-FV Functionality View ──(depends on)─► ARCH-02-FV Functionality View
81
- ARCH-03-IV Information View ──(entity)─► SPEC-05-DM Data Model
80
+ ARCH-02-FV Functionality View ──(depends on)─► ARCH-01-CV Context View
81
+ ARCH-03-IV Information View ──(entity)─► SPEC-07-DM Data Model
82
82
  ARCH-03-IV Information View ──(owner)─► ARCH-02-FV Functionality View
83
83
  ARCH-04-CO Concurrency View ──(hosts)─► ARCH-02-FV Functionality View
84
84
  ARCH-06-DP Deployment View ──(hosts)─► ARCH-02-FV Functionality View
85
85
  ARCH-07-OV Operations View ──(element)─► ARCH-02-FV Functionality View
86
86
  ARCH-07-OV Operations View ──(element)─► ARCH-06-DP Deployment View
87
- ARCH-08-QP Quality Perspectives ──(addresses)─► SPEC-04-NR Non-Functional Requirements
87
+ ARCH-08-QP Quality Perspectives ──(addresses)─► SPEC-05-NR Non-Functional Requirements
88
88
  ARCH-08-QP Quality Perspectives ──(affects)─► ARCH-02-FV Functionality View
89
89
  ARCH-08-QP Quality Perspectives ──(affects)─► ARCH-06-DP Deployment View
90
90
  ARCH-09-DR Decision Record ──(affects)─► ARCH-02-FV Functionality View
@@ -563,7 +563,7 @@ manages, defining how information is organized and connected.
563
563
 
564
564
  ### RELATIONS
565
565
 
566
- - `<spec-dm-relation-id/>`: [`<spec-dm-relation-target/>`](#<spec-dm-relation-id/>)(`<spec-dm-relation-cardinality/>`):<br/>
566
+ - `<spec-dm-relation-id/>`: [`<spec-dm-relation-target/>`](#<spec-dm-relation-target-id/>)(`<spec-dm-relation-cardinality/>`):<br/>
567
567
  <spec-dm-relation-description/>,
568
568
  **BECAUSE** <spec-dm-relation-rationale/>.
569
569
 
@@ -615,7 +615,7 @@ manages, defining how information is organized and connected.
615
615
  - <spec-dm-relation-target/>: the <spec-dm-entity-name/> of the
616
616
  entity the directed relation targets.
617
617
 
618
- - <spec-dm-relation-id/>: the <spec-dm-entity-id/> of the
618
+ - <spec-dm-relation-target-id/>: the <spec-dm-entity-id/> of the
619
619
  entity the directed relation targets.
620
620
 
621
621
  - <spec-dm-relation-cardinality/>: the cardinality of the entity
@@ -724,8 +724,17 @@ making the forbidden moves as explicit as the allowed ones.
724
724
  is implicitly forbidden.
725
725
 
726
726
  - Every <spec-sm-state-name/> used in a transition *MUST* be
727
- declared in the `### STATES` block, and every non-final state
728
- *MUST* have at least one outgoing transition.
727
+ declared in the `### STATES` block, and every state with no
728
+ outgoing transition *MUST* be listed in <spec-sm-lifecycle-final/>
729
+ (a state with no outgoing transition that is not final would be a
730
+ stuck dead-end). The converse does *not* hold: a
731
+ <spec-sm-lifecycle-final/> state *MAY* still have outgoing
732
+ transitions, modeling a resting state that can later be left again
733
+ (e.g. a `Closed` state with a `reopen` transition back to
734
+ `Active`). Thus <spec-sm-lifecycle-final/> designates the states in
735
+ which the entity may legally come to rest, which is a superset of,
736
+ but not necessarily equal to, the set of declared states that have
737
+ no outgoing transition.
729
738
 
730
739
  - In case a transition has no side effect, the
731
740
  entire `<spec-sm-transition-effect/>,` clause is omitted.
@@ -26,8 +26,10 @@ set placeholders into the context as a side-effect.
26
26
  For each option token in <getopt-spec/> of the form
27
27
  `--<long/>[|-<short/>][=<default/>|=(<c1/>|<c2/>|...)[...]]`, set
28
28
  <getopt-option-<long/>/> to <default/> (for `=<default/>`
29
- form), or to <c1/> (the first choice, for `=(<c1/>|<c2>/|...)`
30
- form, or for the list form `=(<c1/>|<c2>/|...)...`),
29
+ form), or to the *single token* <c1/> (the first choice, both
30
+ for the choice form `=(<c1/>|<c2>/|...)` and for the list form
31
+ `=(<c1/>|<c2>/|...)...` -- an *unsupplied* list-option always
32
+ defaults to the single token <c1/>, *not* to a whole list),
31
33
  or to `false` (for value-less options). Then set
32
34
  <getopt-arguments><getopt-args/></getopt-arguments>.
33
35
 
@@ -52,11 +54,13 @@ set placeholders into the context as a side-effect.
52
54
  `=(<c1>|<c2>|...)` declares a value-taking option restricted to the
53
55
  listed fixed choices (the first choice acts as the default), and the
54
56
  trailing `...` (as in `=(<c1>|<c2>|...)...`) declares a value-taking
55
- option whose value is a *comma-separated list* of choice tokens
56
- (the first choice still acts as the default; only the *first*
57
- token of the list is validated by the parser against the choice
58
- set -- subsequent tokens are *not* validated, and skills validate
59
- each remaining token themselves as they consume it).
57
+ option whose *supplied* value is a *comma-separated list* of choice
58
+ tokens (when *unsupplied*, the option defaults to the *single
59
+ token* `<c1>`, identical to the non-list choice form -- the list
60
+ semantics apply only to an explicitly supplied value; only the
61
+ *first* token of a supplied list is validated by the parser against
62
+ the choice set -- subsequent tokens are *not* validated, and skills
63
+ validate each remaining token themselves as they consume it).
60
64
 
61
65
  4. **Short-Circuit for Error**:
62
66
  If <text/> starts with `ERROR:`:
@@ -215,6 +215,11 @@ Skill Identification
215
215
  @${CLAUDE_SKILL_DIR}/help.md
216
216
  </template>
217
217
 
218
+ - *IMPORTANT*:
219
+ You *MUST* *NOT* output any summaries, explanations, or next
220
+ steps at the end of a skill beside the explicit outputs via any
221
+ <template/>.
222
+
218
223
  Template Patterns
219
224
  -----------------
220
225
 
@@ -227,12 +232,13 @@ Template Patterns
227
232
  </template>
228
233
 
229
234
  - When `<ase-tpl-head title="<title/>"/>` should be expanded, use
230
- (where <bar/> = "─" x (67 - length("⧉ ASE: <title/>")), i.e., <bar/> is
231
- the "─" character repeated (67 - length("⧉ ASE: <title/>")) times):
235
+ (where <title-len/> is the number of characters in the string
236
+ `⧉ ASE: <title/>`, and <bar/> is the `─` character repeated exactly
237
+ (67 - <title-len/>) times):
232
238
 
233
239
  <template>
234
240
 
235
- ╭────━━━━**(** `⧉ ASE`: **`<title/>`** **)**━━━━────<bar/>┈┈┈┈┈┈┈┈┈┈
241
+ ╭────━━━━**(** ASE: **`<title/>`** **)**━━━━────<bar/>┈┈┈┈┈┈┈┈┈┈
236
242
 
237
243
  </template>
238
244
 
@@ -245,12 +251,13 @@ Template Patterns
245
251
  </template>
246
252
 
247
253
  - When `<ase-tpl-foot title="<title/>"/>` should be expanded, use
248
- (where <bar/> = "─" x (67 - length("⧉ ASE: <title/>")), i.e., <bar/> is
249
- the "─" character repeated (67 - length("⧉ ASE: <title/>")) times):
254
+ (where <title-len/> is the number of characters in the string
255
+ `⧉ ASE: <title/>`, and <bar/> is the `─` character repeated exactly
256
+ (67 - <title-len/>) times):
250
257
 
251
258
  <template>
252
259
 
253
- ╰────━━━━**(** `⧉ ASE`: **`<title/>`** **)**━━━━────<bar/>┈┈┈┈┈┈┈┈┈┈
260
+ ╰────━━━━**(** ASE: **`<title/>`** **)**━━━━────<bar/>┈┈┈┈┈┈┈┈┈┈
254
261
 
255
262
  </template>
256
263
 
@@ -272,14 +279,14 @@ Template Patterns
272
279
 
273
280
  - <if condition="<subtitle/> is not empty">
274
281
  Set <raw-title>⧉ ASE: <title/>: <subtitle/><raw-title>.
275
- Set <render-title>`⧉ ASE`: **`<title/>`**: `<subtitle/>`</render-title>.
282
+ Set <render-title>⧉ ASE: **`<title/>`**: `<subtitle/>`</render-title>.
276
283
  </if>
277
284
  <else>
278
285
  Set <raw-title>⧉ ASE: <title/><raw-title>.
279
- Set <render-title>`⧉ ASE`: **`<title/>`**</render-title>.
286
+ Set <render-title>⧉ ASE: **`<title/>`**</render-title>.
280
287
  </else>
281
- - Set <bar/> to ("─" x (67 - length("<raw-title/>"))),
282
- i.e., set <bar/> to the "─" character repeated (67 - length("<raw-title/>")) times.
288
+ - Set <raw-title-len/> to the number of characters in <raw-title/>.
289
+ - Set <bar/> to the `─` character repeated exactly (67 - <raw-title-len/>) times.
283
290
  - Set <body> to <content/> with all line-starts prefixed with `│ `.
284
291
 
285
292
  <template>
@@ -6,7 +6,7 @@
6
6
  "homepage": "http://github.com/rse/ase",
7
7
  "repository": { "url": "git+https://github.com/rse/ase.git", "type": "git" },
8
8
  "bugs": { "url": "http://github.com/rse/ase/issues" },
9
- "version": "0.9.9",
9
+ "version": "0.9.10",
10
10
  "license": "GPL-3.0-only",
11
11
  "author": {
12
12
  "name": "Dr. Ralf S. Engelschall",
@@ -42,10 +42,13 @@ for the technology stack to *provide* the *needed functionality*
42
42
 
43
43
  2. If <functionality/> is not clear, not precise, or not specific
44
44
  enough, let the *user interactively choose* the intended
45
- functionality. For this you *MUST* use the custom `custom-dialog`
46
- and *NOT* the `AskUserQuestion` based "user-dialog":
45
+ functionality.
47
46
 
48
- <expand name="custom-dialog">
47
+ In the following, you *MUST* *NOT* use the <user-dialog-tool/>
48
+ tool! Instead, you *MUST* just show a custom output, let the
49
+ user enter input, and then you set the result accordingly.
50
+
51
+ <expand name="custom-dialog" arg1="--no-other">
49
52
  Functionality: Which functionality should the components provide?
50
53
  <answer-1/>: (grounded candidate functionality 1)
51
54
  <answer-2/>: (grounded candidate functionality 2)
@@ -112,7 +115,7 @@ for the technology stack to *provide* the *needed functionality*
112
115
  <keyword-L/> (L=1-M), which allow you to search for suitable
113
116
  components.
114
117
 
115
- 3.. In the to be discovered result set of components <component-K/>
118
+ 3. In the to be discovered result set of components <component-K/>
116
119
  (K=1-N), remember the component name as <name-K/>, the
117
120
  official package name as <package-K/>, the latest version as
118
121
  <version-K/>, the stars as <stars-K/>, the created date as
@@ -220,10 +220,10 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
220
220
  anything else in this step:
221
221
 
222
222
  <template>
223
- ● **APPROACH A<n/>**<annotation/>: *<summary/>*
223
+ ● **APPROACH A<n/>**<annotation/>: **<summary/>**
224
224
  ○ [...]
225
- **PRO**: [...]
226
- **CON**: [...]
225
+ *PRO*: [...]
226
+ *CON*: [...]
227
227
  </template>
228
228
 
229
229
  Hints:
@@ -241,18 +241,19 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
241
241
 
242
242
  7. <if condition="<getopt-option-auto/> is not equal `true`">
243
243
 
244
- You *MUST* use the custom `custom-dialog` and *NOT* the
245
- `AskUserQuestion`-based `user-dialog` to let the *user
246
- interactively choose* the preferred approach A<n/>.
244
+ In the following, you *MUST* *NOT* use the <user-dialog-tool/>
245
+ tool! Instead, you *MUST* just show a custom output, let the
246
+ user enter input, and then you set the result accordingly.
247
247
 
248
- Per approach A<n/>, use the option `A<n/>: <short-summary/>`
249
- where <short-summary/> is an ultra brief summary of the approach
250
- A<n/>. For your recommended approach, use
251
- `A<n/>: **RECOMMENDATION** ⚝: <short-summary/>` instead.
248
+ Let the user choose the preferred approach A<n/> by raising
249
+ a question with the following custom dialog, where per
250
+ approach A<n/>, you determine an ultra brief summary
251
+ <short-summary/> and then use the answer option `A<n/>:
252
+ ⚝ **RECOMMENDATION** ⚝: <short-summary/>` for your
253
+ recommended approach plus zero or more answer options `A<n/>:
254
+ <short-summary/>` for all other approaches:
252
255
 
253
- Now raise the user dialog:
254
-
255
- <expand name="custom-dialog">
256
+ <expand name="custom-dialog" arg1="--no-other">
256
257
  Select Approach: Select your preferred crafting approach to follow?
257
258
  A<n/>: <short-summary/>
258
259
  [...]
@@ -353,6 +354,6 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
353
354
  Then call the tool `Skill(skill: "ase:ase-task-edit", args: "<args/>")`.
354
355
  </else>
355
356
 
356
- <step>
357
+ </step>
357
358
 
358
359
  </flow>
@@ -7,10 +7,11 @@ user-invocable: true
7
7
  disable-model-invocation: false
8
8
  effort: high
9
9
  allowed-tools:
10
- - "Bash(git)"
11
- - "Bash(sort)"
12
- - "Bash(uniq)"
13
- - "Bash(head)"
10
+ - "Bash(git *)"
11
+ - "Bash(grep *)"
12
+ - "Bash(sort *)"
13
+ - "Bash(uniq *)"
14
+ - "Bash(head *)"
14
15
  - "Skill"
15
16
  - "Agent"
16
17
  ---
@@ -152,7 +152,7 @@ related to a set of code quality aspects.
152
152
  3. Append the following <template/> to <diff-file/>:
153
153
 
154
154
  <template>
155
- @@ -<old-start/>,<n/> +<new-start/>,<m/> @@
155
+ @@ -<old-start/>,<old-count/> +<new-start/>,<new-count/> @@
156
156
  <context-before/>
157
157
  -<old-text/>
158
158
  +<new-text/>
@@ -164,10 +164,10 @@ related to a set of code quality aspects.
164
164
  the line of <context-before/> (one before <line/>).
165
165
  - The <new-start/> is the same as <old-start/> (the unchanged
166
166
  <context-before/> line shares the same start in both files).
167
- - The <n/> is the total number of old-side hunk lines, i.e.,
167
+ - The <old-count/> is the total number of old-side hunk lines, i.e.,
168
168
  the number of lines in <context-before/>, <old-text/>, and
169
169
  <context-after/> combined.
170
- - The <m/> is the total number of new-side hunk lines, i.e.,
170
+ - The <new-count/> is the total number of new-side hunk lines, i.e.,
171
171
  the number of lines in <context-before/>, <new-text/>, and
172
172
  <context-after/> combined.
173
173
 
@@ -215,11 +215,11 @@ related to a set of code quality aspects.
215
215
 
216
216
  6. <if condition="<getopt-option-auto/> is not 'true'">
217
217
 
218
- Let the *user interactively choose* what to do as the next
219
- step. For this you *MUST* use the custom `custom-dialog` and
220
- not the `AskUserQuestion` based `user-dialog`:
218
+ In the following, you *MUST* *NOT* use the <user-dialog-tool/>
219
+ tool! Instead, you *MUST* just show a custom output, let the
220
+ user enter input, and then you set the result accordingly.
221
221
 
222
- <expand name="custom-dialog">
222
+ <expand name="custom-dialog" arg1="--other">
223
223
  CORRECTION: How would you like to proceed with this proposed correction?
224
224
  ACCEPT: Apply the proposed correction.
225
225
  REJECT: Skip this proposed correction.
@@ -209,10 +209,10 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
209
209
  anything else in this step:
210
210
 
211
211
  <template>
212
- ● **APPROACH A<n/>**<annotation/>: *<summary/>*
212
+ ● **APPROACH A<n/>**<annotation/>: **<summary/>**
213
213
  ○ [...]
214
- **PRO**: [...]
215
- **CON**: [...]
214
+ *PRO*: [...]
215
+ *CON*: [...]
216
216
  </template>
217
217
 
218
218
  Hints:
@@ -230,18 +230,19 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
230
230
 
231
231
  7. <if condition="<getopt-option-auto/> is not `true`">
232
232
 
233
- You *MUST* use the custom `custom-dialog` and *NOT* the
234
- `AskUserQuestion`-based `user-dialog` to let the *user
235
- interactively choose* the preferred approach A<n/>.
233
+ In the following, you *MUST* *NOT* use the <user-dialog-tool/>
234
+ tool! Instead, you *MUST* just show a custom output, let the
235
+ user enter input, and then you set the result accordingly.
236
236
 
237
- Per approach A<n/>, use the option `A<n/>: <short-summary/>`
238
- where <short-summary/> is an ultra brief summary of the approach
239
- A<n/>. For your recommended approach, use
240
- `A<n/>: **RECOMMENDATION** ⚝: <short-summary/>` instead.
237
+ Let the user choose the preferred approach A<n/> by raising
238
+ a question with the following custom dialog, where per
239
+ approach A<n/>, you determine an ultra brief summary
240
+ <short-summary/> and then use the answer option `A<n/>:
241
+ ⚝ **RECOMMENDATION** ⚝: <short-summary/>` for your
242
+ recommended approach plus zero or more answer options `A<n/>:
243
+ <short-summary/>` for all other approaches:
241
244
 
242
- Now raise the user dialog:
243
-
244
- <expand name="custom-dialog">
245
+ <expand name="custom-dialog" arg1="--no-other">
245
246
  Select Approach: Select your preferred refactoring approach to follow?
246
247
  A<n/>: <short-summary/>
247
248
  [...]
@@ -342,7 +343,7 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
342
343
  Then call the tool `Skill(skill: "ase:ase-task-edit", args: "<args/>")`.
343
344
  </else>
344
345
 
345
- <step>
346
+ </step>
346
347
 
347
348
  </flow>
348
349
 
@@ -259,10 +259,10 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
259
259
  anything else in this step:
260
260
 
261
261
  <template>
262
- ● **APPROACH A<n/>**<annotation/>: *<summary/>*
262
+ ● **APPROACH A<n/>**<annotation/>: **<summary/>**
263
263
  ○ [...]
264
- **PRO**: [...]
265
- **CON**: [...]
264
+ *PRO*: [...]
265
+ *CON*: [...]
266
266
  </template>
267
267
 
268
268
  Hints:
@@ -280,18 +280,19 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
280
280
 
281
281
  7. <if condition="<getopt-option-auto/> is not `true`">
282
282
 
283
- You *MUST* use the custom `custom-dialog` and *NOT* the
284
- `AskUserQuestion`-based `user-dialog` to let the *user
285
- interactively choose* the preferred approach A<n/>.
283
+ In the following, you *MUST* *NOT* use the <user-dialog-tool/>
284
+ tool! Instead, you *MUST* just show a custom output, let the
285
+ user enter input, and then you set the result accordingly.
286
286
 
287
- Per approach A<n/>, use the option `A<n/>: <short-summary/>`
288
- where <short-summary/> is an ultra brief summary of the approach
289
- A<n/>. For your recommended approach, use
290
- `A<n/>: **RECOMMENDATION** ⚝: <short-summary/>` instead.
287
+ Let the user choose the preferred approach A<n/> by raising
288
+ a question with the following custom dialog, where per
289
+ approach A<n/>, you determine an ultra brief summary
290
+ <short-summary/> and then use the answer option `A<n/>:
291
+ ⚝ **RECOMMENDATION** ⚝: <short-summary/>` for your
292
+ recommended approach plus zero or more answer options `A<n/>:
293
+ <short-summary/>` for all other approaches:
291
294
 
292
- Now raise the user dialog:
293
-
294
- <expand name="custom-dialog">
295
+ <expand name="custom-dialog" arg1="--no-other">
295
296
  Select Approach: Select your preferred resolution approach to follow?
296
297
  A<n/>: <short-summary/>
297
298
  [...]
@@ -399,7 +400,7 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
399
400
  Then call the tool `Skill(skill: "ase:ase-task-edit", args: "<args/>")`.
400
401
  </else>
401
402
 
402
- <step>
403
+ </step>
403
404
 
404
405
  </flow>
405
406
 
@@ -129,7 +129,7 @@ Analyze documents for spelling, punctuation, or grammar errors
129
129
  ```diff
130
130
  --- <file/> (original)
131
131
  +++ <file/> (corrected)
132
- @@ -<old-start/>,<n/> +<new-start/>,<m/> @@
132
+ @@ -<old-start/>,<old-count/> +<new-start/>,<new-count/> @@
133
133
  <context-before/>
134
134
  -<old-text/>
135
135
  +<new-text/>
@@ -143,10 +143,10 @@ Analyze documents for spelling, punctuation, or grammar errors
143
143
  the line of <context-before/> (one before <line/>).
144
144
  - The <new-start/> is the same as <old-start/> (the unchanged
145
145
  <context-before/> line shares the same start in both files).
146
- - The <n/> is the total number of old-side hunk lines, i.e.,
146
+ - The <old-count/> is the total number of old-side hunk lines, i.e.,
147
147
  the number of lines in <context-before/>, <old-text/>, and
148
148
  <context-after/> combined.
149
- - The <m/> is the total number of new-side hunk lines, i.e.,
149
+ - The <new-count/> is the total number of new-side hunk lines, i.e.,
150
150
  the number of lines in <context-before/>, <new-text/>, and
151
151
  <context-after/> combined.
152
152
 
@@ -154,11 +154,11 @@ Analyze documents for spelling, punctuation, or grammar errors
154
154
 
155
155
  4. <if condition="<getopt-option-auto/> is not 'true'">
156
156
 
157
- Let the *user interactively choose* what to do as the next
158
- step. For this you *MUST* use the custom `custom-dialog` and
159
- not the `AskUserQuestion` based `user-dialog`:
157
+ In the following, you *MUST* *NOT* use the <user-dialog-tool/>
158
+ tool! Instead, you *MUST* just show a custom output, let the
159
+ user enter input, and then you set the result accordingly.
160
160
 
161
- <expand name="custom-dialog">
161
+ <expand name="custom-dialog" arg1="--other">
162
162
  CORRECTION: How would you like to proceed with this proposed correction?
163
163
  ACCEPT: Apply the proposed correction.
164
164
  REJECT: Skip this proposed correction.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: ase-meta-brainstorm
3
- argument-hint: "[--help|-h] [--max-clarify|-c=3] [--min-ideas|-i=12] [--min-rank|-r=7] [--max-shortlist|-s=4] <topic>"
3
+ argument-hint: "[--help|-h] [--max-clarify|-c <num>] [--min-ideas|-i <num>] [--min-rank|-r <num>] [--max-shortlist|-s <num>] <topic>"
4
4
  description: >
5
5
  Collaboratively brainstorm a topic by diverging on ideas, converging
6
6
  through clustering and scoring, and distilling a shortlist with
@@ -121,11 +121,13 @@ Honor the following tenets throughout the brainstorming:
121
121
  question <question-M/>, and let the user select the
122
122
  <answer-M/> out of the candidate answers <answer-M-K/> (leave
123
123
  out the answer lines of those candidate answers you have
124
- not determined). For this you *MUST* use the custom
125
- `custom-dialog` and *NOT* the `AskUserQuestion` based
126
- "user-dialog":
124
+ not determined).
127
125
 
128
- <expand name="custom-dialog">
126
+ In the following, you *MUST* *NOT* use the <user-dialog-tool/>
127
+ tool! Instead, you *MUST* just show a custom output, let the
128
+ user enter input, and then you set the result accordingly.
129
+
130
+ <expand name="custom-dialog" arg1="--other">
129
131
  <facet-M/>: <question-M/>
130
132
  <answer-M-1/>: (first grounded candidate answer)
131
133
  <answer-M-2/>: (second grounded candidate answer)
@@ -214,15 +216,30 @@ Honor the following tenets throughout the brainstorming:
214
216
 
215
217
  <template>
216
218
  <ase-tpl-bullet-secondary/> **IDEA CLUSTER <C/>/<c/>**: <cluster-C/> - <cluster-summary-C/>,
217
- **IDEAS**: <N/>, <M/>[, ...]
219
+ **IDEAS**: <idea-index-C/>
218
220
  </template>
219
221
 
222
+ Here, <idea-index-C/> is the comma-separated list of the indices
223
+ <N/> of those retained ideas <idea-N/> that belong to cluster
224
+ <cluster-C/> (e.g. `2, 5, 9`).
225
+
220
226
  2. *Score*: for each retained idea <idea-N/> in the clusters, rank its *fit* against the
221
227
  purpose and constraints on a Likert scale of 0 (poor) to 10
222
228
  (excellent), considering *value*, *uniqueness*, *risk*, and
223
229
  *alignment with the existing code base*. Keep only ideas in the
224
230
  clusters with a rank of at least <getopt-option-min-rank/>.
225
231
 
232
+ If *no* idea meets the <getopt-option-min-rank/> floor, the floor
233
+ filter would empty the set and leave the downstream steps without
234
+ any options. In this case, *disregard* the floor and instead keep
235
+ the up-to-<getopt-option-max-shortlist/> highest-ranked ideas, and
236
+ output the following <template/> to flag that even the strongest
237
+ ideas fall below the bar:
238
+
239
+ <template>
240
+ <ase-tpl-bullet-signal/> **NOTICE**: no idea reached the minimum rank of <getopt-option-min-rank/>/10 - shortlisting the highest-ranked ideas regardless.
241
+ </template>
242
+
226
243
  3. From the scored ideas <idea-N/>, distill a *shortlist* of the top
227
244
  <getopt-option-max-shortlist/> options, sorted by rank from highest to lowest.
228
245
 
@@ -2,7 +2,7 @@
2
2
  name: ase-meta-diaboli
3
3
  argument-hint: "[--help|-h] [--count|-c <count>] <thesis>"
4
4
  description: >
5
- Challenge a thesis by playing "Devil’s Advocate" (latin: "Advocatus
5
+ Challenge a thesis by playing "Devil’s Advocate" (Latin: "Advocatus
6
6
  Diaboli"). Use when the user wants a thesis or statement
7
7
  relentlessly challenged or criticised.
8
8
  user-invocable: true
@@ -25,7 +25,7 @@ effort: xhigh
25
25
  </expand>
26
26
 
27
27
  <objective>
28
- Play "Devil’s Advocate" (latin: "Advocatus Diaboli") by relentlessly
28
+ Play "Devil’s Advocate" (Latin: "Advocatus Diaboli") by relentlessly
29
29
  challenging or criticising the thesis: <thesis><getopt-arguments/></thesis>
30
30
  </objective>
31
31
 
@@ -48,7 +48,7 @@ to <getopt-option-count/>; if <getopt-option-count/> is *non-numeric* or
48
48
  2. <step id="STEP 2: Determine Anti-Theses">
49
49
 
50
50
  Reason on the thesis in <thesis/> by playing *Devil's Advocate*
51
- (latin: *Advocatus Diaboli*) by relentlessly challenging or
51
+ (Latin: *Advocatus Diaboli*) by relentlessly challenging or
52
52
  criticising it with the help of the following tenets:
53
53
 
54
54
  - **Steelmanning**:
@@ -88,7 +88,7 @@ to <getopt-option-count/>; if <getopt-option-count/> is *non-numeric* or
88
88
 
89
89
  - **Push the Logic to its Conclusion**:
90
90
  Ask "If we accept this, then what?" and apply "Reduction to
91
- Absurdity" (latin: "Reductio Ad Absurdum"), because this disproves
91
+ Absurdity" (Latin: "Reductio Ad Absurdum"), because this disproves
92
92
  the thesis by showing that accepting it leads to a logically
93
93
  absurd, contradictory, or impossible conclusion.
94
94
 
@@ -109,7 +109,7 @@ explicitly requested by this procedure via outputs based on a <template/>!
109
109
 
110
110
  3. For each discovered *intent group*, emit the following row
111
111
  <template/>, where <intent/> is the intent label, <changes/>
112
- is the total number of lines changes per feature in format
112
+ is the total number of lines changed per feature in format
113
113
  `+N/-M`, <files/> is the list of affected file references,
114
114
  and <description/> is a *brief* one-to-two-sentence
115
115
  narrative of what changed and why:
@@ -88,12 +88,20 @@ Your objective is to *search* the *Internet*/*Web* for the following query:
88
88
  from the MCP server `search-exa`.
89
89
  </expand>
90
90
 
91
- If the `websearch` backend is *selected*:
91
+ If the `websearch` backend is *selected* and the tool
92
+ `WebSearch` is available:
92
93
 
93
94
  <expand name="agent" arg1="websearch">
94
95
  Call the tool `WebSearch(query: "<query/>")`.
95
96
  </expand>
96
97
 
98
+ If the `websearch` backend is *selected* and the tool `web_search` is
99
+ available and the tool `WebSearch` is not available:
100
+
101
+ <expand name="agent" arg1="websearch">
102
+ Call the tool `web_search(query: "<query/>")`.
103
+ </expand>
104
+
97
105
  </step>
98
106
 
99
107
  2. <step id="STEP 2: Consolidate Search Answers">
@@ -123,10 +123,12 @@ addressing surface-level symptoms.
123
123
 
124
124
  Then choose, among the <answer-k/>, the *most causally-significant*
125
125
  candidate -- the one most likely to lead to the true root-cause --
126
- and *justify* the choice in one line (state explicitly *why* it
127
- beats the other candidates, e.g. it alone also explains the timing,
128
- scope, or magnitude of the level's fact). A bare "most significant"
129
- is *not* sufficient; if no candidate clearly dominates, say so.
126
+ set <chosen-k/> to its candidate index (the <k/> of the chosen
127
+ <answer-k/>), and *justify* the choice in one line (state explicitly
128
+ *why* it beats the other candidates, e.g. it alone also explains the
129
+ timing, scope, or magnitude of the level's fact). A bare "most
130
+ significant" is *not* sufficient; if no candidate clearly dominates,
131
+ say so.
130
132
 
131
133
  <template>
132
134
  <ase-tpl-bullet-secondary/> **WHY <n/> → chosen <n/>.<chosen-k/>**: <justification/>
@@ -203,11 +203,12 @@ explicitly requested by this procedure via outputs based on a <template/>!
203
203
  </template>
204
204
 
205
205
  - If <getopt-option-next/> is equal to `none`:
206
- Let the *user interactively choose* what to do as the next
207
- step. For this you *MUST* use the custom `custom-dialog` and
208
- *NOT* the `AskUserQuestion` based "user-dialog":
209
206
 
210
- <expand name="custom-dialog">
207
+ In the following, you *MUST* *NOT* use the <user-dialog-tool/>
208
+ tool! Instead, you *MUST* just show a custom output, let the
209
+ user enter input, and then you set the result accordingly.
210
+
211
+ <expand name="custom-dialog" arg1="--no-other">
211
212
  Next Step: How would you like to proceed with the plan?
212
213
  DONE: Stop processing.
213
214
  EDIT: Hand off plan to editing.
@@ -226,11 +226,12 @@ Set <content-dirty>true</content-dirty>.
226
226
  Set <result><getopt-option-plan/></result>.
227
227
 
228
228
  - If <getopt-option-plan/> is equal to `none`:
229
- Let the *user interactively choose* what to do as the next
230
- step. For this you *MUST* use the custom `custom-dialog` and
231
- *NOT* the `AskUserQuestion` based "user-dialog":
232
229
 
233
- <expand name="custom-dialog">
230
+ In the following, you *MUST* *NOT* use the <user-dialog-tool/>
231
+ tool! Instead, you *MUST* just show a custom output, let the
232
+ user enter input, and then you set the result accordingly.
233
+
234
+ <expand name="custom-dialog" arg1="--other">
234
235
  Previous Plan: Should the previous plan content be overwritten, refined, or preserved?
235
236
  OVERWRITE: Continue operation, overwrite previous plan.
236
237
  REFINE: Continue operation, refine previous plan.
@@ -376,11 +377,12 @@ Set <content-dirty>true</content-dirty>.
376
377
  </template>
377
378
 
378
379
  - If <getopt-option-next/> is equal to `none`:
379
- Let the *user interactively choose* what to do as the next
380
- step. For this you *MUST* use the custom `custom-dialog` and
381
- *NOT* the `AskUserQuestion` based "user-dialog":
382
380
 
383
- <expand name="custom-dialog">
381
+ In the following, you *MUST* *NOT* use the <user-dialog-tool/>
382
+ tool! Instead, you *MUST* just show a custom output, let the
383
+ user enter input, and then you set the result accordingly.
384
+
385
+ <expand name="custom-dialog" arg1="--other">
384
386
  Next Step: How would you like to proceed with the plan?
385
387
  DONE: Mark plan finalized, exit planning loop.
386
388
  GRILL: Hand off plan to grilling.
@@ -239,11 +239,12 @@ explicitly requested by this procedure via outputs based on a <template/>!
239
239
  </template>
240
240
 
241
241
  - If <getopt-option-next/> is equal to `none`:
242
- Let the *user interactively choose* what to do as the next
243
- step. For this you *MUST* use the custom `custom-dialog` and
244
- *NOT* the `AskUserQuestion` based "user-dialog":
245
242
 
246
- <expand name="custom-dialog">
243
+ In the following, you *MUST* *NOT* use the <user-dialog-tool/>
244
+ tool! Instead, you *MUST* just show a custom output, let the
245
+ user enter input, and then you set the result accordingly.
246
+
247
+ <expand name="custom-dialog" arg1="--no-other">
247
248
  Next Step: How would you like to proceed with the plan?
248
249
  DONE: Stop processing.
249
250
  EDIT: Hand off plan to editing.
@@ -184,11 +184,12 @@ explicitly requested by this procedure via outputs based on a <template/>!
184
184
  </template>
185
185
 
186
186
  - If <getopt-option-next/> is equal to `none`:
187
- Let the *user interactively choose* what to do as the next
188
- step. For this you *MUST* use the custom `custom-dialog` and
189
- *NOT* the `AskUserQuestion` based "user-dialog":
190
187
 
191
- <expand name="custom-dialog">
188
+ In the following, you *MUST* *NOT* use the <user-dialog-tool/>
189
+ tool! Instead, you *MUST* just show a custom output, let the
190
+ user enter input, and then you set the result accordingly.
191
+
192
+ <expand name="custom-dialog" arg1="--no-other">
192
193
  Next Step: How would you like to proceed with the plan?
193
194
  DONE: Stop processing and PRESERVE task plan.
194
195
  DELETE: Stop processing and DELETE the task plan.
@@ -196,11 +196,12 @@ explicitly requested by this procedure via outputs based on a <template/>!
196
196
  </template>
197
197
 
198
198
  - If <getopt-option-next/> is equal to `none`:
199
- Let the *user interactively choose* what to do as the next
200
- step. For this you *MUST* use the custom `custom-dialog` and
201
- *NOT* the `AskUserQuestion` based "user-dialog":
202
199
 
203
- <expand name="custom-dialog">
200
+ In the following, you *MUST* *NOT* use the <user-dialog-tool/>
201
+ tool! Instead, you *MUST* just show a custom output, let the
202
+ user enter input, and then you set the result accordingly.
203
+
204
+ <expand name="custom-dialog" arg1="--no-other">
204
205
  Next Step: How would you like to proceed with the plan?
205
206
  DONE: Stop processing.
206
207
  EDIT: Hand processing off to editing.
@@ -181,11 +181,12 @@ explicitly requested by this procedure via outputs based on a <template/>!
181
181
  </template>
182
182
 
183
183
  - If <getopt-option-next/> is equal to `none`:
184
- Let the *user interactively choose* what to do as the next
185
- step. For this you *MUST* use the custom `custom-dialog` and
186
- *NOT* the `AskUserQuestion` based "user-dialog":
187
184
 
188
- <expand name="custom-dialog">
185
+ In the following, you *MUST* *NOT* use the <user-dialog-tool/>
186
+ tool! Instead, you *MUST* just show a custom output, let the
187
+ user enter input, and then you set the result accordingly.
188
+
189
+ <expand name="custom-dialog" arg1="--no-other">
189
190
  Next Step: How would you like to proceed with the plan?
190
191
  DONE: Stop processing.
191
192
  EDIT: Hand off plan to editing.