@rse/ase 0.0.57 → 0.0.58

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.0.57",
9
+ "version": "0.0.58",
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.0.57",
3
+ "version": "0.0.58",
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.0.57",
3
+ "version": "0.0.58",
4
4
  "description": "Agentic Software Engineering (ASE)",
5
5
  "keywords": [ "agentic", "software", "engineering" ],
6
6
  "homepage": "https://ase.tools",
@@ -10,14 +10,27 @@ set placeholders into the context as a side-effect.
10
10
  1. **Determine Parameters**:
11
11
  Set <getopt-skill><arg1/></getopt-skill>.
12
12
  Set <getopt-spec>--help|-h <arg2/></getopt-spec>.
13
- Set <getopt-opts><arg3/></getopt-opts>.
14
13
  Set <getopt-args><content/></getopt-args>.
15
14
 
16
- 2. **Short-Circuit for Quick Processing**:
17
- If <getopt-opts/> contains `quick` *AND*
18
- <getopt-args/> does *NOT* match the regexp `^\s*-`:
19
- Set <getopt-arguments><getopt-args/></getopt-arguments> and
20
- then just silently *SKIP* the following steps 3-7!
15
+ 2. **Short-Circuit Processing**:
16
+ If <getopt-args/> does *NOT* match the regexp `(^|\s)-` (i.e.
17
+ contains no options at all):
18
+
19
+ For each option token in <getopt-spec/> of the form
20
+ `--<long/>[|-<short/>][=<default/>|=(<c1/>|<c2/>|...)]`, set
21
+ <getopt-option-<long/>/> to <default/> (for `=<default/>`
22
+ form), or to <c1/> (the first choice, for `=(<c1/>|<c2>/|...)`
23
+ form), or to `false` (for value-less options). Then set
24
+ <getopt-arguments><getopt-args/></getopt-arguments>.
25
+
26
+ Additionally, simulate <getopt-info/> as a comma-separated
27
+ markdown rendering of the parsed options in the form `<longN/>:
28
+ **<valueN/>**, [...]` (joined with `, `, with each value
29
+ shell-quoted if value contains spaces or special characters, and
30
+ excluding the `help` option).
31
+
32
+ Then silently *SKIP* only the following steps 3-6
33
+ and proceed directly to step 7 to display the results.
21
34
 
22
35
  3. **MCP Call**:
23
36
  Call the `ase_getopt(name: "<getopt-skill/>", spec:
@@ -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.0.57",
9
+ "version": "0.0.58",
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-code-craft
3
- argument-hint: "[--help|-h] [--auto|-a] [--next|-n <option>] [<task-id>:] <feature>"
3
+ argument-hint: "[--help|-h] [--auto|-a] [--dry|-d] [--next|-n <option>] [<task-id>:] <feature>"
4
4
  description: >
5
5
  Craft Source Code:
6
6
  Use when user wants to create or craft a new feature from scratch.
@@ -23,7 +23,7 @@ Craft Source Code
23
23
 
24
24
  <expand name="getopt"
25
25
  arg1="ase-code-craft"
26
- arg2="--auto|-a --next|-n=(none|DONE|EDIT|PREFLIGHT|IMPLEMENT)">
26
+ arg2="--auto|-a --dry|-d --next|-n=(none|DONE|EDIT|PREFLIGHT|IMPLEMENT)">
27
27
  $ARGUMENTS
28
28
  </expand>
29
29
 
@@ -261,6 +261,18 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
261
261
  the information from feature A<n/> and all derived realization
262
262
  decisions into it. Store the resulting task plan in <content/>.
263
263
 
264
+ If a `CHANGELOG.md` file exists in the project (or in any
265
+ affected sub-package), the plan *MUST* include, as part of its
266
+ `## ※ CHANGES` section, an explicit bullet point describing
267
+ the addition of a corresponding new entry to that `CHANGELOG.md`
268
+ file, aligned with its existing style and conventions.
269
+
270
+ <if condition="<getopt-option-dry/> is equal `true`">
271
+ You *MUST* completely omit the `## ※ VERIFICATION` section
272
+ (including its heading and all of its bullet points) from
273
+ <content/>.
274
+ </if>
275
+
264
276
  You *MUST* *NOT* call `Edit`, `Write`, `NotebookEdit`, or any
265
277
  filesystem-modifying tool during this step.
266
278
 
@@ -8,6 +8,7 @@
8
8
  `ase-code-craft`
9
9
  [`--help`|`-h`]
10
10
  [`--auto`|`-a`]
11
+ [`--dry`|`-d`]
11
12
  [`--next`|`-n` *option*]
12
13
  [*task-id*:] *feature*
13
14
 
@@ -31,6 +32,13 @@ plan via `ase_task_save` and then hands off to `ase-task-edit`,
31
32
  Automatically pick the recommended feature approach without
32
33
  asking the user via the interactive dialog.
33
34
 
35
+ `--dry`|`-d`:
36
+ Compose the plan *without* the `※ VERIFICATION` section. When
37
+ `ase-task-implement` later applies such a plan, it strictly skips
38
+ the entire verification phase (no build, tests, linter,
39
+ type-checker, or program execution) once the source files have
40
+ been modified.
41
+
34
42
  `--next`|`-n` *option*:
35
43
  Automatically choose the next step after composing the plan,
36
44
  where *option* is either `none` (default, hand-off to
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: ase-code-refactor
3
- argument-hint: "[--help|-h] [--auto|-a] [--next|-n <option>] [<task-id>:] <request>"
3
+ argument-hint: "[--help|-h] [--auto|-a] [--dry|-d] [--next|-n <option>] [<task-id>:] <request>"
4
4
  description: >
5
5
  Refactor Code Base:
6
6
  Use when user wants to refactor the code base.
@@ -23,7 +23,7 @@ Refactor Artifacts
23
23
 
24
24
  <expand name="getopt"
25
25
  arg1="ase-code-refactor"
26
- arg2="--auto|-a --next|-n=(none|DONE|EDIT|PREFLIGHT|IMPLEMENT)">
26
+ arg2="--auto|-a --dry|-d --next|-n=(none|DONE|EDIT|PREFLIGHT|IMPLEMENT)">
27
27
  $ARGUMENTS
28
28
  </expand>
29
29
 
@@ -252,6 +252,18 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
252
252
  the information from refactoring A<n/> and all derived realization
253
253
  decisions into it. Store the resulting task plan in <content/>.
254
254
 
255
+ If a `CHANGELOG.md` file exists in the project (or in any
256
+ affected sub-package), the plan *MUST* include, as part of its
257
+ `## ※ CHANGES` section, an explicit bullet point describing
258
+ the addition of a corresponding new entry to that `CHANGELOG.md`
259
+ file, aligned with its existing style and conventions.
260
+
261
+ <if condition="<getopt-option-dry/> is equal `true`">
262
+ You *MUST* completely omit the `## ※ VERIFICATION` section
263
+ (including its heading and all of its bullet points) from
264
+ <content/>.
265
+ </if>
266
+
255
267
  You *MUST* *NOT* call `Edit`, `Write`, `NotebookEdit`, or any
256
268
  filesystem-modifying tool during this step.
257
269
 
@@ -8,6 +8,7 @@
8
8
  `ase-code-refactor`
9
9
  [`--help`|`-h`]
10
10
  [`--auto`|`-a`]
11
+ [`--dry`|`-d`]
11
12
  [`--next`|`-n` *option*]
12
13
  [*task-id*:] *request*
13
14
 
@@ -31,6 +32,13 @@ plan via `ase_task_save` and then hands off to `ase-task-edit`,
31
32
  Automatically pick the recommended refactoring approach without
32
33
  asking the user via the interactive dialog.
33
34
 
35
+ `--dry`|`-d`:
36
+ Compose the plan *without* the `※ VERIFICATION` section. When
37
+ `ase-task-implement` later applies such a plan, it strictly skips
38
+ the entire verification phase (no build, tests, linter,
39
+ type-checker, or program execution) once the source files have
40
+ been modified.
41
+
34
42
  `--next`|`-n` *option*:
35
43
  Automatically choose the next step after composing the plan,
36
44
  where *option* is either `none` (default, hand-off to
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: ase-code-resolve
3
- argument-hint: "[--help|-h] [--auto|-a] [--next|-n <option>] [<task-id>:] <problem>"
3
+ argument-hint: "[--help|-h] [--auto|-a] [--dry|-d] [--next|-n <option>] [<task-id>:] <problem>"
4
4
  description: >
5
5
  Resolve Problem:
6
6
  Use when user wants a bug fixed or problem resolved.
@@ -23,7 +23,7 @@ Resolve Problem
23
23
 
24
24
  <expand name="getopt"
25
25
  arg1="ase-code-resolve"
26
- arg2="--auto|-a --next|-n=(none|DONE|EDIT|PREFLIGHT|IMPLEMENT)">
26
+ arg2="--auto|-a --dry|-d --next|-n=(none|DONE|EDIT|PREFLIGHT|IMPLEMENT)">
27
27
  $ARGUMENTS
28
28
  </expand>
29
29
 
@@ -300,6 +300,18 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
300
300
  the success of the resolution, by using the <format/> defined for a
301
301
  task plan. Store the resulting task plan in <content/>.
302
302
 
303
+ If a `CHANGELOG.md` file exists in the project (or in any
304
+ affected sub-package), the plan *MUST* include, as part of its
305
+ `## ※ CHANGES` section, an explicit bullet point describing
306
+ the addition of a corresponding new entry to that `CHANGELOG.md`
307
+ file, aligned with its existing style and conventions.
308
+
309
+ <if condition="<getopt-option-dry/> is equal `true`">
310
+ You *MUST* completely omit the `## ※ VERIFICATION` section
311
+ (including its heading and all of its bullet points) from
312
+ <content/>.
313
+ </if>
314
+
303
315
  You *MUST* *NOT* call `Edit`, `Write`, `NotebookEdit`, or any
304
316
  filesystem-modifying tool during this step.
305
317
 
@@ -8,6 +8,7 @@
8
8
  `ase-code-resolve`
9
9
  [`--help`|`-h`]
10
10
  [`--auto`|`-a`]
11
+ [`--dry`|`-d`]
11
12
  [`--next`|`-n` *option*]
12
13
  [*task-id*:] *problem*
13
14
 
@@ -36,6 +37,13 @@ plan via `ase_task_save` and then hands off to `ase-task-edit`,
36
37
  Automatically pick the recommended resolution approach without
37
38
  asking the user via the interactive dialog.
38
39
 
40
+ `--dry`|`-d`:
41
+ Compose the plan *without* the `※ VERIFICATION` section. When
42
+ `ase-task-implement` later applies such a plan, it strictly skips
43
+ the entire verification phase (no build, tests, linter,
44
+ type-checker, or program execution) once the source files have
45
+ been modified.
46
+
39
47
  `--next`|`-n` *option*:
40
48
  Automatically choose the next step after composing the plan,
41
49
  where *option* is either `none` (default, hand-off to
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: ase-task-edit
3
- argument-hint: "[--help|-h] [--plan|-p <option>] [--next|-n <option>] [<id> | <id>: <instruction> | <instruction>]"
3
+ argument-hint: "[--help|-h] [--plan|-p <option>] [--dry|-d] [--next|-n <option>] [<id> | <id>: <instruction> | <instruction>]"
4
4
  description: >
5
5
  Iteratively edit and refine a named plan for a task through a
6
6
  conversational loop. Each round, the current plan is shown and the
@@ -23,7 +23,7 @@ Iteratively Edit a Task Plan
23
23
 
24
24
  <expand name="getopt"
25
25
  arg1="ase-task-edit"
26
- arg2="--plan|-p=(none|OVERWRITE|REFINE|PRESERVE) --next|-n=(none|DONE|IMPLEMENT|PREFLIGHT|REFINE)">
26
+ arg2="--plan|-p=(none|OVERWRITE|REFINE|PRESERVE) --dry|-d --next|-n=(none|DONE|IMPLEMENT|PREFLIGHT|REFINE)">
27
27
  $ARGUMENTS
28
28
  </expand>
29
29
 
@@ -45,6 +45,47 @@ You *MUST* not skip any numbered item during processing!
45
45
  You *MUST* *NOT* output anything in this entire procedure, *except* when
46
46
  explicitly requested by this procedure via outputs based on a <template/>!
47
47
 
48
+ <define name="apply-refinement">
49
+ Treat the <instruction/> as a *refinement instruction* for
50
+ the plan, and update <content/> in-place by *applying* the
51
+ requested <instruction/> to the *plan*. When refining the
52
+ plan this way, preserve the overall structure of the plan
53
+ and only modify what the user actually requested. Do *not*
54
+ rewrite unrelated sections of the plan.
55
+
56
+ Calculate the number of words <words/> of <content/>.
57
+ Set <content-dirty>true</content-dirty>.
58
+ </define>
59
+
60
+ <define name="generate-plan">
61
+ Create a new plan from scratch and store the result as
62
+ <content/> by closely following the defined plan format
63
+ <format/> and injecting into it all the information from
64
+ the <instruction/> and all decisions you derived from the
65
+ <instruction/>.
66
+
67
+ If a `CHANGELOG.md` file exists in the project (or in any
68
+ affected sub-package), the plan *MUST* include, as part of
69
+ its `## ※ CHANGES` section, an explicit bullet point
70
+ describing the addition of a corresponding new entry to
71
+ that `CHANGELOG.md` file, aligned with its existing style
72
+ and conventions.
73
+
74
+ <if condition="<getopt-option-dry/> is equal `true`">
75
+ You *MUST* completely omit the `## ※ VERIFICATION` section
76
+ (including its heading and all of its bullet points) from
77
+ <content/>.
78
+ </if>
79
+
80
+ Call the `ase_timestamp(format: "yyyy-LL-dd HH:mm")` tool of the
81
+ `ase` MCP server and use the `text` field of its response
82
+ for fresh <timestamp-created/> and <timestamp-modified/>
83
+ information. Then insert the current <ase-task-id/>,
84
+ <timestamp-created/>, and <timestamp-modified/> information
85
+ and calculate the number of words <words/> of <content/>.
86
+ Set <content-dirty>true</content-dirty>.
87
+ </define>
88
+
48
89
  1. **Determine Task and Instruction:**
49
90
 
50
91
  1. Set <instruction><getopt-arguments/></instruction> initially.
@@ -194,19 +235,7 @@ explicitly requested by this procedure via outputs based on a <template/>!
194
235
 
195
236
  - If <result/> is `OVERWRITE`:
196
237
 
197
- Create a new plan from scratch and store the result as
198
- <content/> by closely following the defined plan format
199
- <format/> and injecting into it all the information from
200
- the <instruction/> and all decisions you derived from the
201
- <instruction/>.
202
-
203
- Call the `ase_timestamp(format: "yyyy-LL-dd HH:mm")` tool of the
204
- `ase` MCP server and use the `text` field of its response
205
- for fresh <timestamp-created/> and <timestamp-modified/>
206
- information. Then insert the current <ase-task-id/>,
207
- <timestamp-created/>, and <timestamp-modified/> information
208
- and calculate the number of words <words/> of <content/>.
209
- Set <content-dirty>true</content-dirty>.
238
+ <expand name="generate-plan"/>
210
239
 
211
240
  Only output the following <template/> and continue processing:
212
241
 
@@ -217,15 +246,7 @@ explicitly requested by this procedure via outputs based on a <template/>!
217
246
 
218
247
  - If <result/> is `REFINE`:
219
248
 
220
- Treat the <instruction/> as a *refinement instruction* for
221
- the plan, and update <content/> in-place by *applying* the
222
- requested <instruction/> to the *plan*. When refining the
223
- plan this way, preserve the overall structure of the plan
224
- and only modify what the user actually requested. Do *not*
225
- rewrite unrelated sections of the plan.
226
-
227
- Calculate the number of words <words/> of <content/>.
228
- Set <content-dirty>true</content-dirty>.
249
+ <expand name="apply-refinement"/>
229
250
 
230
251
  Only output the following <template/> and continue processing:
231
252
 
@@ -239,15 +260,7 @@ explicitly requested by this procedure via outputs based on a <template/>!
239
260
  Set <instruction><instruction/> <text/></instruction> (append
240
261
  the user's free-text hint to the existing instruction).
241
262
 
242
- Treat the <instruction/> as a *refinement instruction* for
243
- the plan, and update <content/> in-place by *applying* the
244
- requested <instruction/> to the *plan*. When refining the
245
- plan this way, preserve the overall structure of the plan
246
- and only modify what the user actually requested. Do *not*
247
- rewrite unrelated sections of the plan.
248
-
249
- Calculate the number of words <words/> of <content/>.
250
- Set <content-dirty>true</content-dirty>.
263
+ <expand name="apply-refinement"/>
251
264
 
252
265
  Only output the following <template/> and continue processing:
253
266
 
@@ -265,19 +278,7 @@ explicitly requested by this procedure via outputs based on a <template/>!
265
278
  </if>
266
279
 
267
280
  5. <if condition="<content/> is empty AND <instruction/> is not empty">
268
- Create a new plan from scratch and store the result as
269
- <content/> by closely following the defined plan format
270
- <format/> and injecting into it all the information from
271
- the <instruction/> and all decisions you derived from the
272
- <instruction/>.
273
-
274
- Call the `ase_timestamp(format: "yyyy-LL-dd HH:mm")` tool of the
275
- `ase` MCP server and use the `text` field of its response
276
- for fresh <timestamp-created/> and <timestamp-modified/>
277
- information. Then insert the current <ase-task-id/>,
278
- <timestamp-created/>, and <timestamp-modified/> information
279
- and calculate the number of words <words/> of <content/>.
280
- Set <content-dirty>true</content-dirty>.
281
+ <expand name="generate-plan"/>
281
282
 
282
283
  Only output the following <template/> and continue processing:
283
284
 
@@ -398,13 +399,7 @@ explicitly requested by this procedure via outputs based on a <template/>!
398
399
  your instruction for further refining the plan?**`. Then set
399
400
  <instruction/> to the response of the user.
400
401
 
401
- Treat the <instruction/> as a *refinement instruction* for
402
- the plan, and update <content/> in-place by *applying* the
403
- requested <instruction/> to the *plan*. When refining the
404
- plan this way, preserve the overall structure of the plan
405
- and only modify what the user actually requested. Do *not*
406
- rewrite unrelated sections of the plan.
407
- Set <content-dirty>true</content-dirty>.
402
+ <expand name="apply-refinement"/>
408
403
 
409
404
  Finally, only output the following <template/> and then
410
405
  *continue* the *loop* at step **3.1**!
@@ -417,13 +412,7 @@ explicitly requested by this procedure via outputs based on a <template/>!
417
412
 
418
413
  Set <instruction><text/></instruction> (replace existing instruction).
419
414
 
420
- Treat the <instruction/> as a *refinement instruction* for
421
- the plan, and update <content/> in-place by *applying* the
422
- requested <instruction/> to the *plan*. When refining the
423
- plan this way, preserve the overall structure of the plan
424
- and only modify what the user actually requested. Do *not*
425
- rewrite unrelated sections of the plan.
426
- Set <content-dirty>true</content-dirty>.
415
+ <expand name="apply-refinement"/>
427
416
 
428
417
  Finally, only output the following <template/> and then
429
418
  *continue* the *loop* at step **3.1**!
@@ -8,6 +8,7 @@
8
8
  `ase-task-edit`
9
9
  [`--help`|`-h`]
10
10
  [`--plan`|`-p` *option*]
11
+ [`--dry`|`-d`]
11
12
  [`--next`|`-n` *option*]
12
13
  [*id* | *id*: *instruction* | *instruction*]
13
14
 
@@ -32,6 +33,14 @@ command from outside the agent tool.
32
33
  *instruction*), or `PRESERVE` (preserve the existing plan by
33
34
  ignoring *instruction* and stopping skill processing).
34
35
 
36
+ `--dry`|`-d`:
37
+ Generate any *new* plan *without* the `※ VERIFICATION` section.
38
+ Applies only to freshly generated plans, not to existing plans
39
+ loaded from disk. When `ase-task-implement` later applies such
40
+ a plan, it strictly skips the entire verification phase (no
41
+ build, tests, linter, type-checker, or program execution) once
42
+ the source files have been modified.
43
+
35
44
  `--next`|`-n` *option*:
36
45
  Automatically answer the user dialog for the next step (at the end
37
46
  of this skill) with *option*, which can be either `none` (default,
@@ -129,6 +129,16 @@ explicitly requested by this procedure via outputs based on a <template/>!
129
129
  overrules the implementation draft in the `IMPLEMENTATION DRAFT`
130
130
  section of <content/>.
131
131
 
132
+ <if condition="<content/> does NOT contain a `## ※ VERIFICATION` section heading">
133
+ The task plan deliberately *omits* the `## ※ VERIFICATION`
134
+ section. You *MUST* therefore *strictly skip* the entire
135
+ verification phase after modifying the source files: do *NOT*
136
+ run any build, do *NOT* run any tests, do *NOT* run any linter,
137
+ do *NOT* run any type-checker, do *NOT* execute the modified
138
+ program, and do *NOT* otherwise verify the change set in any
139
+ way.
140
+ </if>
141
+
132
142
  2. Only output the following <template/>:
133
143
 
134
144
  <template>
@@ -19,6 +19,13 @@ complete *change set*. The plan is loaded from
19
19
  section produced by `ase-task-preflight` is used as a hint — the
20
20
  plain plan content always overrules the draft.
21
21
 
22
+ If the task plan deliberately *omits* the `※ VERIFICATION` section
23
+ (as produced by `ase-code-craft`, `ase-code-refactor`,
24
+ `ase-code-resolve`, or `ase-task-edit` when invoked with `--dry`),
25
+ the entire verification phase is strictly skipped: no build, tests,
26
+ linter, type-checker, or program execution is performed once the
27
+ source files have been modified.
28
+
22
29
  After implementation, the user is asked whether to preserve or
23
30
  delete the task plan, unless `--next` pre-selects this choice.
24
31