@rse/ase 2.0.7 → 2.0.8

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.
Files changed (33) hide show
  1. package/dst/ase-agent-relay-client.js +3 -4
  2. package/dst/ase-config-schema.js +4 -1
  3. package/dst/ase-lib-fetch.js +12 -0
  4. package/dst/ase-lib-server-cli.js +8 -5
  5. package/dst/ase-task-board-diff.js +120 -0
  6. package/dst/ase-task-board-tui-control.js +8 -5
  7. package/dst/ase-task-board-tui-model.js +54 -14
  8. package/dst/ase-task-board-tui-popup.js +41 -8
  9. package/dst/ase-task-board-tui.js +42 -27
  10. package/dst/ase-task-board-web-client.css +1 -1
  11. package/dst/ase-task-board-web-client.html +16 -0
  12. package/dst/ase-task-board-web-client.js +33 -33
  13. package/dst/ase-task-board-web-server.js +44 -9
  14. package/dst/ase-task-board.js +12 -4
  15. package/dst/ase-task-store-client.js +4 -5
  16. package/dst/man/ase-config-init.md +2 -1
  17. package/dst/man/ase-config.md +5 -0
  18. package/dst/man/ase-task-board.md +44 -2
  19. package/package.json +7 -6
  20. package/plugin/.claude-plugin/plugin.json +1 -1
  21. package/plugin/.codex-plugin/plugin.json +1 -1
  22. package/plugin/.github/plugin/plugin.json +1 -1
  23. package/plugin/meta/ase-common-task.md +24 -0
  24. package/plugin/mods/ase-mods-common.ts +73 -42
  25. package/plugin/mods/ase-mods-task-edit.ts +427 -0
  26. package/plugin/mods/ase-mods.ts +45 -14
  27. package/plugin/skills/ase-help-intent/data.md +78 -8
  28. package/plugin/skills/ase-task-edit/SKILL.md +114 -9
  29. package/plugin/skills/ase-task-edit/help.md +60 -0
  30. package/plugin/skills/ase-task-grill/SKILL.md +35 -20
  31. package/plugin/skills/ase-task-grill/help.md +18 -8
  32. /package/plugin/mods/{ase-mods-evaluate.ts → ase-mods-meta-evaluate.ts} +0 -0
  33. /package/plugin/mods/{ase-mods-grill.ts → ase-mods-task-grill.ts} +0 -0
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: ase-task-grill
3
- argument-hint: "[--help|-h] [--rounds|-r <n>] [--until|-u MUST|SHOULD|MAY] [--perspective|-p <perspective>] [--ground|-G] [--focus|-f <section>[,...]] [--force|-F] [--next|-n <option>[,...]] [<id>]"
3
+ argument-hint: "[--help|-h] [--rounds|-r <n>] [--until|-u MUST|SHOULD|MAY] [--perspective|-p <perspective>] [--ground|-G] [--focus|-f <section>[,...]] [--force|-F] [--quiet|-q] [--next|-n <option>[,...]] [<id>]"
4
4
  description: >
5
5
  Interview the user relentlessly about the task plan until reaching a
6
6
  shared understanding, resolving each branch of the question decision
@@ -22,7 +22,7 @@ Iteratively Grill a Task Plan
22
22
 
23
23
  <expand name="getopt"
24
24
  arg1="ase-task-grill"
25
- arg2="--rounds|-r=1 --until|-u=(MUST|SHOULD|MAY) --perspective|-p= --ground|-G --focus|-f=(all|SPECIFICATION|SPEC|DESIGN|DES|VERIFICATION|VER)... --force|-F --next|-n=(none|DONE|GRILL|EDIT|IMPLEMENT|DRAFT)... --int-reuse-task">
25
+ arg2="--rounds|-r=1 --until|-u=(MUST|SHOULD|MAY) --perspective|-p= --ground|-G --focus|-f=(all|SPECIFICATION|SPEC|WHAT|DESIGN|DES|HOW|VERIFICATION|VERIFY|VER|WHEN)... --force|-F --quiet|-q --next|-n=(none|DONE|GRILL|EDIT|IMPLEMENT|DRAFT)... --int-reuse-task --int-interactive">
26
26
  $ARGUMENTS
27
27
  </expand>
28
28
 
@@ -61,23 +61,9 @@ Set <args>--int-reuse-task</args>.
61
61
  ⧉ **ASE**: ☻ skill: **ase-task-grill**, ▶ ERROR: invalid `--rounds` value: **<getopt-option-rounds/>**
62
62
  </template>
63
63
 
64
- 3. Treat <getopt-option-focus/> as a comma-separated list of
65
- *section tokens*. Trim and upper-case every token, then expand
66
- the abbreviations `SPEC`, `DES`, and `VER` to `SPECIFICATION`,
67
- `DESIGN`, and `VERIFICATION`, and expand the sentinel `ALL`
68
- (the default) to `SPECIFICATION,DESIGN,VERIFICATION`. Set
69
- <sections/> to the resulting list, *keeping the given order*.
70
- The getopt parser validates only the *first* token, so you
71
- *MUST* validate each token yourself: if any token is *empty*,
72
- *not* one of the recognized sections or abbreviations, or
73
- results in a section already present in <sections/>, bind
74
- <token/> to that offending token, then only output the
75
- following <template/> and immediately *STOP* processing the
76
- entire current skill:
64
+ 3. Resolve the plan sections under focus:
77
65
 
78
- <template>
79
- ⧉ **ASE**: ☻ skill: **ase-task-grill**, ▶ ERROR: invalid `--focus` token: **<token/>**
80
- </template>
66
+ <expand name="task-focus" arg1="ase-task-grill"></expand>
81
67
 
82
68
  Each section in <sections/> selects its *focus areas* of the
83
69
  grilling: `SPECIFICATION` selects `DOMAIN` and `INTERFACE`,
@@ -277,7 +263,19 @@ Set <args>--int-reuse-task</args>.
277
263
  can re-ask it.
278
264
 
279
265
  Set <changes/> to all bullet-points of <task-content/> which
280
- were changed or added in this round. Do not output anything.
266
+ were changed or added in this round. Do not output anything,
267
+ except for the following warning:
268
+
269
+ <if condition="<getopt-option-focus/> is not equal `all` and <changes/> contains a bullet-point of a section *not* in <sections/>">
270
+ An answer required a *foreign change* outside of the focus,
271
+ which is applied nevertheless. Set <foreign/> to the
272
+ comma-separated names of these sections and only output the
273
+ following <template/>:
274
+
275
+ <template>
276
+ ⧉ **ASE**: ◉ task: **<ase-task-id/>**, ▶ WARNING: changed sections outside of focus: **<foreign/>**
277
+ </template>
278
+ </if>
281
279
 
282
280
  5. SAVE PLAN:
283
281
 
@@ -298,6 +296,7 @@ Set <args>--int-reuse-task</args>.
298
296
 
299
297
  6. SHOW PLAN CHANGES:
300
298
 
299
+ <if condition="<getopt-option-quiet/> is not equal `true`">
301
300
  Set <round-suffix/> to
302
301
  ` round <m/>/<getopt-option-rounds/>` if
303
302
  <getopt-option-rounds/> is greater than 1, or to empty
@@ -316,6 +315,7 @@ Set <args>--int-reuse-task</args>.
316
315
 
317
316
  <ase-tpl-foot title="PLAN CHANGES" subtitle="after grilling<round-suffix/>"/>
318
317
  </template>
318
+ </if>
319
319
 
320
320
  4. **Decide Next Step:**
321
321
 
@@ -326,7 +326,7 @@ Set <args>--int-reuse-task</args>.
326
326
  arg2="DONE|GRILL|EDIT|IMPLEMENT|DRAFT">
327
327
  Next Step: How would you like to proceed with the plan?
328
328
  DONE: Stop processing.
329
- GRILL: Re-grill the entire plan again.
329
+ GRILL: Re-grill the plan again.
330
330
  EDIT: Hand off plan to editing.
331
331
  DRAFT: Hand off plan to implementation drafting.
332
332
  IMPLEMENT: Hand off plan to implementation.
@@ -352,6 +352,12 @@ Set <args>--int-reuse-task</args>.
352
352
  <if condition="<getopt-option-ground/> is `true`">
353
353
  Set <args><args/> --ground</args>.
354
354
  </if>
355
+ <if condition="<getopt-option-quiet/> is `true`">
356
+ Set <args><args/> --quiet</args>.
357
+ </if>
358
+ <if condition="<getopt-option-int-interactive/> is `true`">
359
+ Set <args><args/> --int-interactive</args>.
360
+ </if>
355
361
  Only output the following <template/> and then call the
356
362
  tool `Skill(skill: "ase:ase-task-grill", args: "<args/>")`
357
363
  to invoke the `ase:ase-task-grill` skill again in order to
@@ -365,6 +371,15 @@ Set <args>--int-reuse-task</args>.
365
371
 
366
372
  - If <result/> is `EDIT`:
367
373
  <expand name="handoff-args"/>
374
+ <if condition="<getopt-option-quiet/> is `true`">
375
+ Set <args><args/> --quiet</args>.
376
+ </if>
377
+ <if condition="<getopt-option-int-interactive/> is `true`">
378
+ Set <args><args/> --interactive</args>.
379
+ </if>
380
+ <if condition="<getopt-option-focus/> is not equal `all`">
381
+ Set <args><args/> --focus <getopt-option-focus/></args>.
382
+ </if>
368
383
  Only output the following <template/> and then call the
369
384
  tool `Skill(skill: "ase:ase-task-edit", args: "<args/>")`
370
385
  to invoke the `ase:ase-task-edit` skill in order to *edit*
@@ -13,6 +13,7 @@
13
13
  [`--ground`|`-G`]
14
14
  [`--focus`|`-f` *section*[,...]]
15
15
  [`--force`|`-F`]
16
+ [`--quiet`|`-q`]
16
17
  [`--next`|`-n` *option*[,...]]
17
18
  [*id*]
18
19
 
@@ -61,7 +62,7 @@ persisted, its `Tags:` frontmatter key records each grilled section as
61
62
  its own tag `grilled:`*section* (lower-case, kept alongside the tags of
62
63
  previously grilled sections, e.g. `grilled:specification,
63
64
  grilled:design`), and a `PLAN CHANGES` box shows the bullet-points
64
- changed by the round. Finally, the user is offered a complete
65
+ changed by the round (unless `--quiet` is given). Finally, the user is offered a complete
65
66
  re-grilling (with the same grilling options), or a hand-off to editing,
66
67
  implementation, or draft.
67
68
 
@@ -123,19 +124,28 @@ in state `[-]` (cancelled) or `[>]` (deferred) are never questioned.
123
124
 
124
125
  - `--focus`|`-f` *section*[,...]:
125
126
  Grill only the given plan *section*(s), in the given order. Each
126
- *section* is one of `SPECIFICATION` (abbreviated `SPEC`), `DESIGN`
127
- (abbreviated `DES`), or `VERIFICATION` (abbreviated `VER`), matched
128
- case-insensitively, or the sentinel `all` (default), which expands
129
- to `SPECIFICATION,DESIGN,VERIFICATION`. The questions are derived
130
- from the themes of the focused sections only, while the entire plan
131
- stays the context, and the answers may still update any section.
132
- An unknown, empty, or duplicate *section* token aborts the skill.
127
+ *section* is one of `SPECIFICATION` (also `SPEC` or `WHAT`), `DESIGN`
128
+ (also `DES` or `HOW`), or `VERIFICATION` (also `VERIFY`, `VER`, or
129
+ `WHEN`), matched case-sensitively, or the sentinel `all` (default),
130
+ which expands to `SPECIFICATION,DESIGN,VERIFICATION`. The questions
131
+ are derived from the themes of the focused sections only, while the
132
+ entire plan stays the context, and an answer requiring a change
133
+ outside of the focus is applied nevertheless and reported by a
134
+ warning. An unknown, empty, or duplicate *section* token aborts the
135
+ skill. It is forwarded on a re-grilling and on a hand-off to
136
+ `ase-task-edit`, but not on a hand-off to another skill.
133
137
 
134
138
  - `--force`|`-F`:
135
139
  Re-grill already grilled sections completely, i.e., ignore their
136
140
  `grilled:`*section* tags instead of skipping them resp. re-asking
137
141
  only their `[?]` bullet-points.
138
142
 
143
+ - `--quiet`|`-q`:
144
+ Do not print the `PLAN CHANGES` box of the bullet-points changed by
145
+ a round. The status lines and the dialogs stay. It is forwarded on a
146
+ re-grilling and on a hand-off to `ase-task-edit`, but not on a
147
+ hand-off to another skill.
148
+
139
149
  - `--next`|`-n` *option*[,...]:
140
150
  Automatically answer the user dialog for the next step (at the end
141
151
  of this skill). *option* is a single token or a *comma-separated