@rse/ase 2.0.3 → 2.0.5
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-hook.js +13 -4
- package/dst/ase-lib-version.js +14 -5
- package/dst/ase-man-catalog.js +229 -0
- package/dst/ase-man-render.js +278 -0
- package/dst/ase-man-tui.js +636 -0
- package/dst/ase-man.js +33 -27
- package/dst/ase-setup.js +2 -2
- package/dst/ase-spec.js +103 -20
- package/dst/ase-task-board-filter.js +5 -4
- package/dst/ase-task-board-web-client.js +26 -26
- package/dst/man/ase-agent-adhoc.md +1165 -0
- package/dst/man/ase-agent-condenser.md +383 -0
- package/dst/man/ase-agent-editor.md +441 -0
- package/dst/man/ase-agent-estimator.md +477 -0
- package/dst/man/ase-agent-fleet.md +358 -0
- package/dst/man/ase-agent-implementer.md +521 -0
- package/dst/man/ase-agent-integrator.md +449 -0
- package/dst/man/ase-agent-qualifier.md +426 -0
- package/dst/man/ase-agent-rebooter.md +384 -0
- package/dst/man/ase-agent-relay.md +262 -0
- package/dst/man/ase-agent-researcher.md +478 -0
- package/dst/man/ase-agent.md +628 -0
- package/dst/man/ase-artifact-list.md +57 -0
- package/dst/man/ase-artifact-name.md +56 -0
- package/dst/man/ase-artifact.md +92 -0
- package/dst/man/ase-config-delete.md +74 -0
- package/dst/man/ase-config-edit.md +83 -0
- package/dst/man/ase-config-get.md +70 -0
- package/dst/man/ase-config-init.md +110 -0
- package/dst/man/ase-config-list.md +68 -0
- package/dst/man/ase-config-set.md +92 -0
- package/dst/man/ase-config.md +426 -0
- package/dst/man/ase-hook-permission-request.md +61 -0
- package/dst/man/ase-hook-pre-tool-use.md +96 -0
- package/dst/man/ase-hook-session-end.md +71 -0
- package/dst/man/ase-hook-session-persona.md +65 -0
- package/dst/man/ase-hook-session-start.md +184 -0
- package/dst/man/ase-hook-stop.md +52 -0
- package/dst/man/ase-hook-user-prompt-submit.md +54 -0
- package/dst/man/ase-hook.md +93 -0
- package/dst/man/ase-man.md +195 -0
- package/dst/man/ase-mcp.md +102 -0
- package/dst/man/ase-service-log.md +59 -0
- package/dst/man/ase-service-send.md +60 -0
- package/dst/man/ase-service-start.md +93 -0
- package/dst/man/ase-service-status.md +58 -0
- package/dst/man/ase-service-stop.md +52 -0
- package/dst/man/ase-service.md +124 -0
- package/dst/man/ase-setup-disable.md +67 -0
- package/dst/man/ase-setup-enable.md +66 -0
- package/dst/man/ase-setup-install.md +116 -0
- package/dst/man/ase-setup-mcp.md +213 -0
- package/dst/man/ase-setup-status.md +101 -0
- package/dst/man/ase-setup-statusline.md +162 -0
- package/dst/man/ase-setup-telemetry.md +166 -0
- package/dst/man/ase-setup-uninstall.md +85 -0
- package/dst/man/ase-setup-update.md +117 -0
- package/dst/man/ase-setup.md +156 -0
- package/dst/man/ase-spec-export.md +99 -0
- package/dst/man/ase-spec-init.md +57 -0
- package/dst/man/ase-spec-lint.md +74 -0
- package/dst/man/ase-spec-preview.md +57 -0
- package/dst/man/ase-spec.md +85 -0
- package/dst/man/ase-statusline.md +330 -0
- package/dst/man/ase-task-assign.md +138 -0
- package/dst/man/ase-task-board.md +651 -0
- package/dst/man/ase-task-delete.md +46 -0
- package/dst/man/ase-task-edit.md +73 -0
- package/dst/man/ase-task-idscheme.md +92 -0
- package/dst/man/ase-task-lifecycle.md +92 -0
- package/dst/man/ase-task-list.md +86 -0
- package/dst/man/ase-task-load.md +48 -0
- package/dst/man/ase-task-newid.md +100 -0
- package/dst/man/ase-task-purge.md +49 -0
- package/dst/man/ase-task-rename.md +69 -0
- package/dst/man/ase-task-request.md +108 -0
- package/dst/man/ase-task-save.md +78 -0
- package/dst/man/ase-task-status.md +79 -0
- package/dst/man/ase-task-store.md +377 -0
- package/dst/man/ase-task-view.md +50 -0
- package/dst/man/ase-task.md +335 -0
- package/dst/man/ase-util-compat.md +38 -0
- package/dst/man/ase-util-diagram.md +140 -0
- package/dst/man/ase-util-meta.md +68 -0
- package/dst/man/ase-util-metric.md +74 -0
- package/dst/man/ase-util-mint.md +85 -0
- package/dst/man/ase-util-worktree.md +109 -0
- package/dst/man/ase-util.md +81 -0
- package/dst/man/ase.md +228 -0
- package/package.json +16 -21
- 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-lint.md +3 -3
- package/plugin/agents/ase-docs-proofread.md +3 -3
- package/plugin/agents/ase-docs-refine.md +3 -3
- package/plugin/agents/ase-spec-lint.md +338 -0
- package/plugin/mods/ase-mods-common.ts +444 -0
- package/plugin/mods/ase-mods-grill.ts +312 -0
- package/plugin/mods/ase-mods-help-browse.ts +405 -0
- package/plugin/mods/ase-mods-help-compose.ts +561 -0
- package/plugin/mods/ase-mods-help-find.ts +426 -0
- package/plugin/mods/ase-mods-help-hint.ts +134 -0
- package/plugin/mods/ase-mods-help-show.ts +142 -0
- package/plugin/mods/ase-mods.ts +214 -381
- package/plugin/mods/claude-code.d.ts +26 -3
- package/plugin/skills/ase-code-lint/SKILL.md +15 -15
- package/plugin/skills/ase-code-lint/help.md +21 -8
- package/plugin/skills/ase-help-intent/SKILL.md +2 -1
- package/plugin/skills/ase-help-intent/data.md +214 -9
- package/plugin/skills/ase-help-skill/catalog.md +1 -0
- package/plugin/skills/ase-meta-workflow/workflow.txt +2 -0
- package/plugin/skills/ase-repo-commit/SKILL.md +1 -0
- package/plugin/skills/ase-repo-merge/SKILL.md +1 -0
- package/plugin/skills/ase-spec-edit/SKILL.md +3 -3
- package/plugin/skills/ase-spec-edit/help.md +1 -1
- package/plugin/skills/ase-spec-lint/SKILL.md +695 -0
- package/plugin/skills/ase-spec-lint/help.md +184 -0
- package/plugin/skills/ase-task-implement/SKILL.md +24 -6
- package/plugin/skills/ase-task-implement/help.md +11 -1
- package/dst/man/ase-agent-adhoc.1 +0 -515
- package/dst/man/ase-agent-condenser.1 +0 -193
- package/dst/man/ase-agent-editor.1 +0 -212
- package/dst/man/ase-agent-estimator.1 +0 -214
- package/dst/man/ase-agent-fleet.1 +0 -185
- package/dst/man/ase-agent-implementer.1 +0 -233
- package/dst/man/ase-agent-integrator.1 +0 -213
- package/dst/man/ase-agent-qualifier.1 +0 -214
- package/dst/man/ase-agent-rebooter.1 +0 -193
- package/dst/man/ase-agent-relay.1 +0 -128
- package/dst/man/ase-agent-researcher.1 +0 -217
- package/dst/man/ase-agent.1 +0 -264
- package/dst/man/ase-artifact-list.1 +0 -38
- package/dst/man/ase-artifact-name.1 +0 -39
- package/dst/man/ase-artifact.1 +0 -56
- package/dst/man/ase-config-delete.1 +0 -45
- package/dst/man/ase-config-edit.1 +0 -48
- package/dst/man/ase-config-get.1 +0 -46
- package/dst/man/ase-config-init.1 +0 -60
- package/dst/man/ase-config-list.1 +0 -42
- package/dst/man/ase-config-set.1 +0 -52
- package/dst/man/ase-config.1 +0 -231
- package/dst/man/ase-hook-permission-request.1 +0 -36
- package/dst/man/ase-hook-pre-tool-use.1 +0 -59
- package/dst/man/ase-hook-session-end.1 +0 -47
- package/dst/man/ase-hook-session-persona.1 +0 -37
- package/dst/man/ase-hook-session-start.1 +0 -81
- package/dst/man/ase-hook-stop.1 +0 -34
- package/dst/man/ase-hook-user-prompt-submit.1 +0 -34
- package/dst/man/ase-hook.1 +0 -51
- package/dst/man/ase-man.1 +0 -67
- package/dst/man/ase-mcp.1 +0 -61
- package/dst/man/ase-service-log.1 +0 -43
- package/dst/man/ase-service-send.1 +0 -47
- package/dst/man/ase-service-start.1 +0 -54
- package/dst/man/ase-service-status.1 +0 -46
- package/dst/man/ase-service-stop.1 +0 -37
- package/dst/man/ase-service.1 +0 -85
- package/dst/man/ase-setup-disable.1 +0 -44
- package/dst/man/ase-setup-enable.1 +0 -45
- package/dst/man/ase-setup-install.1 +0 -73
- package/dst/man/ase-setup-mcp.1 +0 -124
- package/dst/man/ase-setup-status.1 +0 -60
- package/dst/man/ase-setup-statusline.1 +0 -92
- package/dst/man/ase-setup-telemetry.1 +0 -92
- package/dst/man/ase-setup-uninstall.1 +0 -59
- package/dst/man/ase-setup-update.1 +0 -64
- package/dst/man/ase-setup.1 +0 -93
- package/dst/man/ase-spec-export.1 +0 -62
- package/dst/man/ase-spec-lint.1 +0 -40
- package/dst/man/ase-spec-preview.1 +0 -40
- package/dst/man/ase-spec.1 +0 -46
- package/dst/man/ase-statusline.1 +0 -189
- package/dst/man/ase-task-assign.1 +0 -71
- package/dst/man/ase-task-board.1 +0 -384
- package/dst/man/ase-task-delete.1 +0 -35
- package/dst/man/ase-task-edit.1 +0 -46
- package/dst/man/ase-task-idscheme.1 +0 -65
- package/dst/man/ase-task-lifecycle.1 +0 -57
- package/dst/man/ase-task-list.1 +0 -47
- package/dst/man/ase-task-load.1 +0 -36
- package/dst/man/ase-task-newid.1 +0 -61
- package/dst/man/ase-task-purge.1 +0 -37
- package/dst/man/ase-task-rename.1 +0 -44
- package/dst/man/ase-task-request.1 +0 -61
- package/dst/man/ase-task-save.1 +0 -48
- package/dst/man/ase-task-status.1 +0 -55
- package/dst/man/ase-task-store.1 +0 -194
- package/dst/man/ase-task-view.1 +0 -40
- package/dst/man/ase-task.1 +0 -160
- package/dst/man/ase-util-compat.1 +0 -25
- package/dst/man/ase-util-diagram.1 +0 -76
- package/dst/man/ase-util-meta.1 +0 -45
- package/dst/man/ase-util-metric.1 +0 -54
- package/dst/man/ase-util-mint.1 +0 -59
- package/dst/man/ase-util-worktree.1 +0 -72
- package/dst/man/ase-util.1 +0 -50
- package/dst/man/ase.1 +0 -124
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# ase-artifact-name(1) -- Resolve a Filename within an Artifact Kind
|
|
2
|
+
|
|
3
|
+
## SYNOPSIS
|
|
4
|
+
|
|
5
|
+
`ase artifact name`
|
|
6
|
+
\[`-h`|`--help`\]
|
|
7
|
+
\[`--kind` *kind*\]
|
|
8
|
+
*filename*
|
|
9
|
+
|
|
10
|
+
## DESCRIPTION
|
|
11
|
+
|
|
12
|
+
**ase artifact name** resolves a *filename*, given relative to the base
|
|
13
|
+
directory of an artifact *kind*, to a project-relative (POSIX-style)
|
|
14
|
+
path by prefixing it with the configured base directory
|
|
15
|
+
`project.artifact.`*kind*`.basedir` (see `ase-artifact`(1)), and prints
|
|
16
|
+
it. The file does not have to exist. The skills use it to name a new
|
|
17
|
+
file of a kind, e.g., a new specification or source code file.
|
|
18
|
+
|
|
19
|
+
## OPTIONS
|
|
20
|
+
|
|
21
|
+
- \[`-h`|`--help`\]:
|
|
22
|
+
Show usage information and exit.
|
|
23
|
+
|
|
24
|
+
- \[`--kind` *kind*\]:
|
|
25
|
+
The artifact kind whose base directory is used: `spec`, `code`,
|
|
26
|
+
`docs`, or `infr` (default: `code`). The implicit catch-all kind
|
|
27
|
+
`othr` has no base directory and is rejected.
|
|
28
|
+
|
|
29
|
+
## ARGUMENTS
|
|
30
|
+
|
|
31
|
+
- *filename*:
|
|
32
|
+
The filename, relative to the base directory of the kind. Backslashes
|
|
33
|
+
are converted to slashes and leading slashes are stripped. It must
|
|
34
|
+
not be empty and must not contain any `..` segment.
|
|
35
|
+
|
|
36
|
+
## EXIT STATUS
|
|
37
|
+
|
|
38
|
+
Exits with status `0` on success, and with status `1` on an unknown
|
|
39
|
+
or unsupported kind, an empty filename, or a filename with a `..`
|
|
40
|
+
segment.
|
|
41
|
+
|
|
42
|
+
## EXAMPLES
|
|
43
|
+
|
|
44
|
+
```sh
|
|
45
|
+
# resolve a source file name (with the default "project.artifact.code.basedir" of "src")
|
|
46
|
+
$ ase artifact name --kind code lib/util.ts
|
|
47
|
+
src/lib/util.ts
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## SEE ALSO
|
|
51
|
+
|
|
52
|
+
`ase`(1), `ase-artifact`(1), `ase-artifact-list`(1), `ase-config`(1).
|
|
53
|
+
|
|
54
|
+
## AUTHOR
|
|
55
|
+
|
|
56
|
+
Dr. Ralf S. Engelschall <rse@engelschall.com>
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
# ase-artifact(1) -- Resolve Project Artifact Kinds to File Lists
|
|
2
|
+
|
|
3
|
+
## SYNOPSIS
|
|
4
|
+
|
|
5
|
+
`ase artifact`
|
|
6
|
+
\[`-h`|`--help`\]
|
|
7
|
+
|
|
8
|
+
`ase artifact list`
|
|
9
|
+
\[`--kind` *kinds*\]
|
|
10
|
+
|
|
11
|
+
`ase artifact name`
|
|
12
|
+
\[`--kind` *kind*\]
|
|
13
|
+
*filename*
|
|
14
|
+
|
|
15
|
+
## DESCRIPTION
|
|
16
|
+
|
|
17
|
+
**ase artifact** is the entry point group for resolving the *artifact
|
|
18
|
+
kinds* of a project to project-relative file lists. The *ASE* skills
|
|
19
|
+
use it (and the MCP tools `ase_artifact_list` and `ase_artifact_name`,
|
|
20
|
+
which provide the same) to locate the files of a kind. The recognized
|
|
21
|
+
kinds are:
|
|
22
|
+
|
|
23
|
+
- `spec`: the specification (by default below `docs/specbook`,
|
|
24
|
+
the files `*.{md,txt,svg,png,jpg}`).
|
|
25
|
+
- `code`: the source code (by default below `src`, all files
|
|
26
|
+
except `**/etc/**` and `**/{.gitignore,.npmignore,package.json}`).
|
|
27
|
+
- `docs`: the documentation (by default below `doc`, all files plus
|
|
28
|
+
`**/{README,LICENSE,CHANGELOG}.{md,txt}`, except `{spec,arch}/**`).
|
|
29
|
+
- `infr`: the infrastructure (by default below the project root, the
|
|
30
|
+
files `**/{.github,.claude*,etc}/**` and
|
|
31
|
+
`**/{AGENTS.md,{package,tsconfig*}.json,.{git,npm}ignore}`).
|
|
32
|
+
- `othr`: the implicit catch-all of all other files.
|
|
33
|
+
|
|
34
|
+
The first four kinds are configured by the configuration keys
|
|
35
|
+
`project.artifact.`*kind*`.basedir` (the base directory, relative to
|
|
36
|
+
the project root, where an empty value denotes the project root itself,
|
|
37
|
+
and which must not escape the project root via `..`) and
|
|
38
|
+
`project.artifact.`*kind*`.files` (a *miniglob* specification, resolved
|
|
39
|
+
relative to the base directory), with the defaults given above (see
|
|
40
|
+
`ase-config`(1)).
|
|
41
|
+
|
|
42
|
+
A *miniglob* specification is a whitespace-separated list of glob
|
|
43
|
+
patterns (in the syntax of *picomatch*, with dot files matched), each
|
|
44
|
+
optionally negated by a `!` prefix. The tokens are applied in order:
|
|
45
|
+
the resulting set starts empty (or with all files, if the first token
|
|
46
|
+
is negated), a plain pattern adds all files matching it, and a negated
|
|
47
|
+
pattern removes all files matching it.
|
|
48
|
+
|
|
49
|
+
The file universe is the set of all files below the project root (the
|
|
50
|
+
Git top-level directory, else the current working directory), except
|
|
51
|
+
the `.git` directories and all files excluded by the Git exclude rules:
|
|
52
|
+
the global excludes file (`core.excludesFile`, else
|
|
53
|
+
`$XDG_CONFIG_HOME/git/ignore`, falling back to
|
|
54
|
+
`~/.config/git/ignore`), the repository-local `info/exclude`, and the
|
|
55
|
+
`.gitignore` files from the project root downwards, with the last
|
|
56
|
+
matching rule winning.
|
|
57
|
+
|
|
58
|
+
The universe is partitioned among the kinds by descending precedence
|
|
59
|
+
`spec`, `code`, `docs`, and `infr`: a file matched by multiple kinds
|
|
60
|
+
belongs to the first one only, and every file matched by none of them
|
|
61
|
+
belongs to `othr`.
|
|
62
|
+
|
|
63
|
+
Without a sub-command, the usage information is shown and the command
|
|
64
|
+
exits with status `1`.
|
|
65
|
+
|
|
66
|
+
## OPTIONS
|
|
67
|
+
|
|
68
|
+
- \[`-h`|`--help`\]:
|
|
69
|
+
Show usage information and exit.
|
|
70
|
+
|
|
71
|
+
## COMMANDS
|
|
72
|
+
|
|
73
|
+
- `ase artifact list` \[`--kind` *kinds*\]:
|
|
74
|
+
Resolve one or more artifact kinds to project-relative file paths.
|
|
75
|
+
See `ase-artifact-list`(1).
|
|
76
|
+
|
|
77
|
+
- `ase artifact name` \[`--kind` *kind*\] *filename*:
|
|
78
|
+
Resolve a base-relative filename within an artifact kind to a
|
|
79
|
+
project-relative path. See `ase-artifact-name`(1).
|
|
80
|
+
|
|
81
|
+
## EXIT STATUS
|
|
82
|
+
|
|
83
|
+
The group command without a sub-command exits with status `1`.
|
|
84
|
+
|
|
85
|
+
## SEE ALSO
|
|
86
|
+
|
|
87
|
+
`ase`(1), `ase-artifact-list`(1), `ase-artifact-name`(1),
|
|
88
|
+
`ase-config`(1), `ase-spec`(1), `gitignore`(5).
|
|
89
|
+
|
|
90
|
+
## AUTHOR
|
|
91
|
+
|
|
92
|
+
Dr. Ralf S. Engelschall <rse@engelschall.com>
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# ase-config-delete(1) -- Delete a Configuration Value
|
|
2
|
+
|
|
3
|
+
## SYNOPSIS
|
|
4
|
+
|
|
5
|
+
`ase config`
|
|
6
|
+
\[`--scope` *scope*\]
|
|
7
|
+
`delete`
|
|
8
|
+
\[`-h`|`--help`\]
|
|
9
|
+
*key*
|
|
10
|
+
|
|
11
|
+
## DESCRIPTION
|
|
12
|
+
|
|
13
|
+
**ase config delete** deletes the configuration *key* from the
|
|
14
|
+
configuration file of the target scope (the strongest scope of the
|
|
15
|
+
scope chain, by default `project` inside a project, else `user`) and
|
|
16
|
+
writes the file back. Weaker scopes are never modified, so a value of
|
|
17
|
+
the same key on a weaker scope (or the built-in default) becomes
|
|
18
|
+
effective again.
|
|
19
|
+
|
|
20
|
+
Deleting a key which is not set on the target scope is no error. As
|
|
21
|
+
for `ase config set`, a key which is not writable on the target scope
|
|
22
|
+
cannot be deleted there either, and a target file which carries invalid
|
|
23
|
+
content is not overwritten.
|
|
24
|
+
|
|
25
|
+
## OPTIONS
|
|
26
|
+
|
|
27
|
+
- \[`-h`|`--help`\]:
|
|
28
|
+
Show usage information and exit.
|
|
29
|
+
|
|
30
|
+
- \[`--scope` *scope*\]:
|
|
31
|
+
Select the scope chain, whose strongest scope is the target scope
|
|
32
|
+
written by this command. As an option of `ase config`, it has to be
|
|
33
|
+
given *before* `delete`. The *scope* value is a comma-separated list
|
|
34
|
+
of the terms `user`, `project`, `task:`*id*, and `session:`*id* (with
|
|
35
|
+
*id* matching `[A-Za-z0-9._-]+`), at most one per kind and in any
|
|
36
|
+
order, canonicalized into the order `user` < `project` < `task` <
|
|
37
|
+
`session`.
|
|
38
|
+
|
|
39
|
+
`user` is always added implicitly, and `project` is added implicitly
|
|
40
|
+
whenever a project context (a Git working tree or a `.ase` directory
|
|
41
|
+
at or above the current directory) exists, but never above the
|
|
42
|
+
strongest explicitly requested term. An explicit `project` without a
|
|
43
|
+
project context is an error. Default: `project` inside a project
|
|
44
|
+
context, else `user`. See `ase-config`(1) for details.
|
|
45
|
+
|
|
46
|
+
## ARGUMENTS
|
|
47
|
+
|
|
48
|
+
- *key*:
|
|
49
|
+
The dotted configuration key, e.g., `agent.persona`, or any
|
|
50
|
+
unambiguous trailing part of a known key, e.g., `persona`.
|
|
51
|
+
|
|
52
|
+
## EXIT STATUS
|
|
53
|
+
|
|
54
|
+
`0` on success, `1` on a *key* not writable on the target scope, an
|
|
55
|
+
ambiguous *key*, an invalid *scope*, or a target file carrying invalid
|
|
56
|
+
content.
|
|
57
|
+
|
|
58
|
+
## EXAMPLES
|
|
59
|
+
|
|
60
|
+
```sh
|
|
61
|
+
# fall back to the default persona again
|
|
62
|
+
$ ase config delete agent.persona
|
|
63
|
+
|
|
64
|
+
# remove the task store token of the user
|
|
65
|
+
$ ase config --scope user delete project.task.store.token
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## SEE ALSO
|
|
69
|
+
|
|
70
|
+
`ase`(1), `ase-config`(1), `ase-config-set`(1).
|
|
71
|
+
|
|
72
|
+
## AUTHOR
|
|
73
|
+
|
|
74
|
+
Dr. Ralf S. Engelschall <rse@engelschall.com>
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
# ase-config-edit(1) -- Edit the Configuration File with an Editor
|
|
2
|
+
|
|
3
|
+
## SYNOPSIS
|
|
4
|
+
|
|
5
|
+
`ase config`
|
|
6
|
+
\[`--scope` *scope*\]
|
|
7
|
+
`edit`
|
|
8
|
+
\[`-h`|`--help`\]
|
|
9
|
+
|
|
10
|
+
## DESCRIPTION
|
|
11
|
+
|
|
12
|
+
**ase config edit** opens the configuration file of the target scope
|
|
13
|
+
(the strongest scope of the scope chain, by default `project` inside a
|
|
14
|
+
project, else `user`) in a text editor. The file and its parent
|
|
15
|
+
directories are created if missing (a new `user` scope file with file
|
|
16
|
+
mode `0600`).
|
|
17
|
+
|
|
18
|
+
After the editor exits, the file is re-read and strictly validated
|
|
19
|
+
against the configuration schema. If it carries invalid YAML or
|
|
20
|
+
invalid entries, the error is reported and the question `re-edit? [Y/n]`
|
|
21
|
+
is asked on standard error: any answer other than `n` or `no` opens the
|
|
22
|
+
editor again, while `n` or `no` lets the command fail (leaving the
|
|
23
|
+
invalid file as is).
|
|
24
|
+
|
|
25
|
+
## OPTIONS
|
|
26
|
+
|
|
27
|
+
- \[`-h`|`--help`\]:
|
|
28
|
+
Show usage information and exit.
|
|
29
|
+
|
|
30
|
+
- \[`--scope` *scope*\]:
|
|
31
|
+
Select the scope chain, whose strongest scope is the target scope
|
|
32
|
+
whose file is edited. As an option of `ase config`, it has to be
|
|
33
|
+
given *before* `edit`. The *scope* value is a comma-separated list
|
|
34
|
+
of the terms `user`, `project`, `task:`*id*, and `session:`*id*
|
|
35
|
+
(with *id* matching `[A-Za-z0-9._-]+`), at most one per kind and in
|
|
36
|
+
any order, canonicalized into the order `user` < `project` < `task`
|
|
37
|
+
< `session`.
|
|
38
|
+
|
|
39
|
+
`user` is always added implicitly, and `project` is added implicitly
|
|
40
|
+
whenever a project context (a Git working tree or a `.ase` directory
|
|
41
|
+
at or above the current directory) exists, but never above the
|
|
42
|
+
strongest explicitly requested term. An explicit `project` without a
|
|
43
|
+
project context is an error. Default: `project` inside a project
|
|
44
|
+
context, else `user`. See `ase-config`(1) for details.
|
|
45
|
+
|
|
46
|
+
## ENVIRONMENT
|
|
47
|
+
|
|
48
|
+
- `VISUAL`, `EDITOR`:
|
|
49
|
+
The editor command, taken from the first non-empty one of `VISUAL`
|
|
50
|
+
and `EDITOR`, falling back to `vi`. The value is split on whitespace
|
|
51
|
+
into the command and its arguments (it is not run through a shell),
|
|
52
|
+
and the file name is appended as the last argument.
|
|
53
|
+
|
|
54
|
+
## FILES
|
|
55
|
+
|
|
56
|
+
The configuration file of the target scope: *per-user configuration
|
|
57
|
+
directory*`/config.yaml` (`user`), `.ase/config.yaml` (`project`),
|
|
58
|
+
`.ase/task/`*id*`/config.yaml` (`task:`*id*), or *per-user state
|
|
59
|
+
directory*`/session/`*id*`/config.yaml` (`session:`*id*). See
|
|
60
|
+
`ase-config`(1).
|
|
61
|
+
|
|
62
|
+
## EXIT STATUS
|
|
63
|
+
|
|
64
|
+
`0` once the edited file is valid, `1` if the editor could not be run,
|
|
65
|
+
or if the file stayed invalid and re-editing was declined.
|
|
66
|
+
|
|
67
|
+
## EXAMPLES
|
|
68
|
+
|
|
69
|
+
```sh
|
|
70
|
+
# edit the project configuration with Vim
|
|
71
|
+
$ EDITOR=vim ase config edit
|
|
72
|
+
|
|
73
|
+
# edit the user configuration
|
|
74
|
+
$ ase config --scope user edit
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## SEE ALSO
|
|
78
|
+
|
|
79
|
+
`ase`(1), `ase-config`(1), `ase-config-set`(1).
|
|
80
|
+
|
|
81
|
+
## AUTHOR
|
|
82
|
+
|
|
83
|
+
Dr. Ralf S. Engelschall <rse@engelschall.com>
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# ase-config-get(1) -- Print a Configuration Value
|
|
2
|
+
|
|
3
|
+
## SYNOPSIS
|
|
4
|
+
|
|
5
|
+
`ase config`
|
|
6
|
+
\[`--scope` *scope*\]
|
|
7
|
+
`get`
|
|
8
|
+
\[`-h`|`--help`\]
|
|
9
|
+
*key*
|
|
10
|
+
|
|
11
|
+
## DESCRIPTION
|
|
12
|
+
|
|
13
|
+
**ase config get** prints the effective value of the configuration
|
|
14
|
+
*key*, followed by a newline, on standard output. The value is looked
|
|
15
|
+
up from the strongest scope of the scope chain down to the built-in
|
|
16
|
+
`default` scope, and the first defined value wins. In contrast to `ase
|
|
17
|
+
config list`, secret values are printed unmasked.
|
|
18
|
+
|
|
19
|
+
## OPTIONS
|
|
20
|
+
|
|
21
|
+
- \[`-h`|`--help`\]:
|
|
22
|
+
Show usage information and exit.
|
|
23
|
+
|
|
24
|
+
- \[`--scope` *scope*\]:
|
|
25
|
+
Select the scope chain whose values are cascaded. As an option of
|
|
26
|
+
`ase config`, it has to be given *before* `get`. The *scope* value is
|
|
27
|
+
a comma-separated list of the terms `user`, `project`, `task:`*id*,
|
|
28
|
+
and `session:`*id* (with *id* matching `[A-Za-z0-9._-]+`), at most one
|
|
29
|
+
per kind and in any order, canonicalized into the order `user` <
|
|
30
|
+
`project` < `task` < `session`.
|
|
31
|
+
|
|
32
|
+
`user` is always added implicitly, and `project` is added implicitly
|
|
33
|
+
whenever a project context (a Git working tree or a `.ase` directory
|
|
34
|
+
at or above the current directory) exists, but never above the
|
|
35
|
+
strongest explicitly requested term. An explicit `project` without a
|
|
36
|
+
project context is an error. Default: `project` inside a project
|
|
37
|
+
context, else `user`. See `ase-config`(1) for details.
|
|
38
|
+
|
|
39
|
+
## ARGUMENTS
|
|
40
|
+
|
|
41
|
+
- *key*:
|
|
42
|
+
The dotted configuration key, e.g., `agent.persona`, or any
|
|
43
|
+
unambiguous trailing part of a known key, e.g., `persona`. See
|
|
44
|
+
`ase-config`(1) for all keys.
|
|
45
|
+
|
|
46
|
+
## EXIT STATUS
|
|
47
|
+
|
|
48
|
+
`0` on success, `1` if *key* is not set on any scope, if *key* does not
|
|
49
|
+
address a leaf value (e.g., `project.task`), if *key* is ambiguous, or
|
|
50
|
+
on an invalid *scope*.
|
|
51
|
+
|
|
52
|
+
## EXAMPLES
|
|
53
|
+
|
|
54
|
+
```sh
|
|
55
|
+
# print the effective task lifecycle model
|
|
56
|
+
$ ase config get project.task.lifecycle
|
|
57
|
+
solo
|
|
58
|
+
|
|
59
|
+
# print the user-level persona via its abbreviated key
|
|
60
|
+
$ ase config --scope user get persona
|
|
61
|
+
engineer
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## SEE ALSO
|
|
65
|
+
|
|
66
|
+
`ase`(1), `ase-config`(1), `ase-config-list`(1), `ase-config-set`(1).
|
|
67
|
+
|
|
68
|
+
## AUTHOR
|
|
69
|
+
|
|
70
|
+
Dr. Ralf S. Engelschall <rse@engelschall.com>
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
# ase-config-init(1) -- Initialize Configuration with Preset Values
|
|
2
|
+
|
|
3
|
+
## SYNOPSIS
|
|
4
|
+
|
|
5
|
+
`ase config`
|
|
6
|
+
\[`--scope` *scope*\]
|
|
7
|
+
`init`
|
|
8
|
+
\[`-h`|`--help`\]
|
|
9
|
+
*type*
|
|
10
|
+
|
|
11
|
+
## DESCRIPTION
|
|
12
|
+
|
|
13
|
+
**ase config init** initializes the configuration file of the target
|
|
14
|
+
scope (the strongest scope of the scope chain, by default `project`
|
|
15
|
+
inside a project, else `user`) with the preset values of *type*. The
|
|
16
|
+
file (and its parent directories) are created if missing. Already
|
|
17
|
+
existing keys of the file which the preset does not cover are kept,
|
|
18
|
+
while those covered by the preset are overwritten.
|
|
19
|
+
|
|
20
|
+
Keys of the preset which are not writable on the target scope (e.g.,
|
|
21
|
+
all `project.task.*`, `project.artifact.*`, and `board.*` keys on a
|
|
22
|
+
`task` or `session` scope, or `telemetry.prices.ai` on the `project`
|
|
23
|
+
scope) are silently skipped. The file is written under an advisory
|
|
24
|
+
file lock and atomically.
|
|
25
|
+
|
|
26
|
+
## OPTIONS
|
|
27
|
+
|
|
28
|
+
- \[`-h`|`--help`\]:
|
|
29
|
+
Show usage information and exit.
|
|
30
|
+
|
|
31
|
+
- \[`--scope` *scope*\]:
|
|
32
|
+
Select the scope chain, whose strongest scope is the target scope
|
|
33
|
+
written by this command. As an option of `ase config`, it has to be
|
|
34
|
+
given *before* `init`. The *scope* value is a comma-separated list
|
|
35
|
+
of the terms `user`, `project`, `task:`*id*, and `session:`*id*
|
|
36
|
+
(with *id* matching `[A-Za-z0-9._-]+`), at most one per kind and in
|
|
37
|
+
any order, canonicalized into the order `user` < `project` < `task`
|
|
38
|
+
< `session`.
|
|
39
|
+
|
|
40
|
+
`user` is always added implicitly, and `project` is added implicitly
|
|
41
|
+
whenever a project context (a Git working tree or a `.ase` directory
|
|
42
|
+
at or above the current directory) exists, but never above the
|
|
43
|
+
strongest explicitly requested term. An explicit `project` without a
|
|
44
|
+
project context is an error. Default: `project` inside a project
|
|
45
|
+
context, else `user`. See `ase-config`(1) for details.
|
|
46
|
+
|
|
47
|
+
## ARGUMENTS
|
|
48
|
+
|
|
49
|
+
- *type*:
|
|
50
|
+
The preset to apply, one of:
|
|
51
|
+
|
|
52
|
+
- `default`:
|
|
53
|
+
The complete baseline of the built-in `default` scope:
|
|
54
|
+
`agent.persona` `engineer`, `agent.guidance` `normal`,
|
|
55
|
+
`project.name` `Example Project`, `project.boxing` `white`,
|
|
56
|
+
`project.task.lifecycle` `solo`, `project.task.idscheme` `slug`,
|
|
57
|
+
`project.task.store.url` `ase:./.ase/task`,
|
|
58
|
+
`project.task.default.source` `worktree`,
|
|
59
|
+
`project.task.default.changeset` `worktree`,
|
|
60
|
+
`project.task.default.target` `source`,
|
|
61
|
+
`project.task.effort.scale` `15,60,240,960`,
|
|
62
|
+
`project.task.effort.factor` `1`, `project.task.effort.file` `1`,
|
|
63
|
+
`project.task.effort.line` `0.025`,
|
|
64
|
+
`project.task.effort.iteration` `2.5`, the full set of
|
|
65
|
+
`project.artifact.*` globs, the `board.tui.color.*`,
|
|
66
|
+
`board.web.color.*`, and `board.web.editor.keymap` defaults, and
|
|
67
|
+
`telemetry.enabled` `false`, `telemetry.prices.ai`
|
|
68
|
+
`*=4.00/20.00/0.20/5.00`, and `telemetry.prices.hr` `*=110`.
|
|
69
|
+
- `vibe`:
|
|
70
|
+
`agent.persona` `writer`, `project.name` `Example Project`, and
|
|
71
|
+
`project.boxing` `black`.
|
|
72
|
+
- `pro`:
|
|
73
|
+
`agent.persona` `engineer`, `project.name` `Example Project`, and
|
|
74
|
+
`project.boxing` `white`.
|
|
75
|
+
- `industry`:
|
|
76
|
+
`agent.persona` `engineer`, `project.name` `Example Project`, and
|
|
77
|
+
`project.boxing` `grey`.
|
|
78
|
+
|
|
79
|
+
Any other *type* is an error.
|
|
80
|
+
|
|
81
|
+
## FILES
|
|
82
|
+
|
|
83
|
+
The configuration file of the target scope: *per-user configuration
|
|
84
|
+
directory*`/config.yaml` (`user`), `.ase/config.yaml` (`project`),
|
|
85
|
+
`.ase/task/`*id*`/config.yaml` (`task:`*id*), or *per-user state
|
|
86
|
+
directory*`/session/`*id*`/config.yaml` (`session:`*id*). See
|
|
87
|
+
`ase-config`(1).
|
|
88
|
+
|
|
89
|
+
## EXIT STATUS
|
|
90
|
+
|
|
91
|
+
`0` on success, `1` on an unknown *type*, an invalid *scope*, or a
|
|
92
|
+
target file carrying invalid content.
|
|
93
|
+
|
|
94
|
+
## EXAMPLES
|
|
95
|
+
|
|
96
|
+
```sh
|
|
97
|
+
# initialize the project configuration for an industrial project
|
|
98
|
+
$ ase config init industry
|
|
99
|
+
|
|
100
|
+
# write the entire baseline into the user configuration
|
|
101
|
+
$ ase config --scope user init default
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
## SEE ALSO
|
|
105
|
+
|
|
106
|
+
`ase`(1), `ase-config`(1), `ase-config-list`(1), `ase-config-set`(1).
|
|
107
|
+
|
|
108
|
+
## AUTHOR
|
|
109
|
+
|
|
110
|
+
Dr. Ralf S. Engelschall <rse@engelschall.com>
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# ase-config-list(1) -- List the Effective Configuration
|
|
2
|
+
|
|
3
|
+
## SYNOPSIS
|
|
4
|
+
|
|
5
|
+
`ase config`
|
|
6
|
+
\[`--scope` *scope*\]
|
|
7
|
+
`list`
|
|
8
|
+
\[`-h`|`--help`\]
|
|
9
|
+
|
|
10
|
+
## DESCRIPTION
|
|
11
|
+
|
|
12
|
+
**ase config list** lists all configuration keys known to the
|
|
13
|
+
configuration schema, plus all further leaf keys found in the files of
|
|
14
|
+
the scope chain, with their effective values, rendered as a table with
|
|
15
|
+
the three columns `KEY`, `VALUE`, and `SCOPE`, sorted by key.
|
|
16
|
+
|
|
17
|
+
The `SCOPE` column names the scope which supplied the value: `default`
|
|
18
|
+
(the built-in defaults), `user`, `project`, `task:`*id*, or
|
|
19
|
+
`session:`*id*. For a key set on multiple scopes, only the value of the
|
|
20
|
+
strongest scope is shown. A key which is not set on any scope is shown
|
|
21
|
+
with an empty `VALUE` and the `SCOPE` `-`. The values of the secret keys
|
|
22
|
+
`project.task.store.token`, `project.relay.token`, and
|
|
23
|
+
`telemetry.service.token` are masked as `***`.
|
|
24
|
+
|
|
25
|
+
Invalid entries of the configuration files are warned about and
|
|
26
|
+
skipped.
|
|
27
|
+
|
|
28
|
+
## OPTIONS
|
|
29
|
+
|
|
30
|
+
- \[`-h`|`--help`\]:
|
|
31
|
+
Show usage information and exit.
|
|
32
|
+
|
|
33
|
+
- \[`--scope` *scope*\]:
|
|
34
|
+
Select the scope chain whose values are cascaded. As an option of
|
|
35
|
+
`ase config`, it has to be given *before* `list`. The *scope* value
|
|
36
|
+
is a comma-separated list of the terms `user`, `project`, `task:`*id*,
|
|
37
|
+
and `session:`*id* (with *id* matching `[A-Za-z0-9._-]+`), at most
|
|
38
|
+
one per kind and in any order, canonicalized into the order `user` <
|
|
39
|
+
`project` < `task` < `session`.
|
|
40
|
+
|
|
41
|
+
`user` is always added implicitly, and `project` is added implicitly
|
|
42
|
+
whenever a project context (a Git working tree or a `.ase` directory
|
|
43
|
+
at or above the current directory) exists, but never above the
|
|
44
|
+
strongest explicitly requested term. An explicit `project` without a
|
|
45
|
+
project context is an error. Default: `project` inside a project
|
|
46
|
+
context, else `user`. See `ase-config`(1) for details.
|
|
47
|
+
|
|
48
|
+
## EXIT STATUS
|
|
49
|
+
|
|
50
|
+
`0` on success, `1` on an invalid *scope*.
|
|
51
|
+
|
|
52
|
+
## EXAMPLES
|
|
53
|
+
|
|
54
|
+
```sh
|
|
55
|
+
# list the effective project configuration
|
|
56
|
+
$ ase config list
|
|
57
|
+
|
|
58
|
+
# list the configuration as seen by a particular task
|
|
59
|
+
$ ase config --scope task:json-export list
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## SEE ALSO
|
|
63
|
+
|
|
64
|
+
`ase`(1), `ase-config`(1), `ase-config-get`(1).
|
|
65
|
+
|
|
66
|
+
## AUTHOR
|
|
67
|
+
|
|
68
|
+
Dr. Ralf S. Engelschall <rse@engelschall.com>
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
# ase-config-set(1) -- Set a Configuration Value
|
|
2
|
+
|
|
3
|
+
## SYNOPSIS
|
|
4
|
+
|
|
5
|
+
`ase config`
|
|
6
|
+
\[`--scope` *scope*\]
|
|
7
|
+
`set`
|
|
8
|
+
\[`-h`|`--help`\]
|
|
9
|
+
*key*
|
|
10
|
+
*value*
|
|
11
|
+
|
|
12
|
+
## DESCRIPTION
|
|
13
|
+
|
|
14
|
+
**ase config set** sets the configuration *key* to *value* in the
|
|
15
|
+
configuration file of the target scope (the strongest scope of the
|
|
16
|
+
scope chain, by default `project` inside a project, else `user`),
|
|
17
|
+
creating the file, its parent directories, and the intermediate maps
|
|
18
|
+
of the dotted key as needed. Weaker and intermediate scopes are never
|
|
19
|
+
modified.
|
|
20
|
+
|
|
21
|
+
The *value* is validated against the configuration schema before the
|
|
22
|
+
file is written, and an invalid value is an error. Some keys are
|
|
23
|
+
writable on particular scopes only (e.g., `project.task.*` on `user`
|
|
24
|
+
and `project`, the token keys on `user`): setting such a key on any
|
|
25
|
+
other scope is an error naming the permitted scopes. See
|
|
26
|
+
`ase-config`(1) for all keys, their values, and their scopes. A target
|
|
27
|
+
file which already carries invalid content is not overwritten, as this
|
|
28
|
+
content would be lost.
|
|
29
|
+
|
|
30
|
+
The file is written under an advisory file lock and atomically, with
|
|
31
|
+
file mode `0600` for the `user` scope and for any file carrying a
|
|
32
|
+
secret key.
|
|
33
|
+
|
|
34
|
+
## OPTIONS
|
|
35
|
+
|
|
36
|
+
- \[`-h`|`--help`\]:
|
|
37
|
+
Show usage information and exit.
|
|
38
|
+
|
|
39
|
+
- \[`--scope` *scope*\]:
|
|
40
|
+
Select the scope chain, whose strongest scope is the target scope
|
|
41
|
+
written by this command. As an option of `ase config`, it has to be
|
|
42
|
+
given *before* `set`. The *scope* value is a comma-separated list
|
|
43
|
+
of the terms `user`, `project`, `task:`*id*, and `session:`*id*
|
|
44
|
+
(with *id* matching `[A-Za-z0-9._-]+`), at most one per kind and in
|
|
45
|
+
any order, canonicalized into the order `user` < `project` < `task`
|
|
46
|
+
< `session`.
|
|
47
|
+
|
|
48
|
+
`user` is always added implicitly, and `project` is added implicitly
|
|
49
|
+
whenever a project context (a Git working tree or a `.ase` directory
|
|
50
|
+
at or above the current directory) exists, but never above the
|
|
51
|
+
strongest explicitly requested term, so an explicit `--scope user`
|
|
52
|
+
is never silently retargeted to `project`. An explicit `project`
|
|
53
|
+
without a project context is an error. Default: `project` inside a
|
|
54
|
+
project context, else `user`. See `ase-config`(1) for details.
|
|
55
|
+
|
|
56
|
+
## ARGUMENTS
|
|
57
|
+
|
|
58
|
+
- *key*:
|
|
59
|
+
The dotted configuration key, e.g., `agent.persona`, or any
|
|
60
|
+
unambiguous trailing part of a known key, e.g., `persona`.
|
|
61
|
+
|
|
62
|
+
- *value*:
|
|
63
|
+
The value to set, stored as a string (e.g., `true` for
|
|
64
|
+
`telemetry.enabled` or `44318` for `telemetry.service.port`).
|
|
65
|
+
|
|
66
|
+
## EXIT STATUS
|
|
67
|
+
|
|
68
|
+
`0` on success, `1` on an invalid *value*, a *key* not writable on the
|
|
69
|
+
target scope, an ambiguous *key*, an intermediate path of *key* which is
|
|
70
|
+
not a map, an invalid *scope*, or a target file carrying invalid
|
|
71
|
+
content.
|
|
72
|
+
|
|
73
|
+
## EXAMPLES
|
|
74
|
+
|
|
75
|
+
```sh
|
|
76
|
+
# switch the project to the enterprise task lifecycle model
|
|
77
|
+
$ ase config set project.task.lifecycle enterprise
|
|
78
|
+
|
|
79
|
+
# enable the AI usage accounting for the current user
|
|
80
|
+
$ ase config --scope user set telemetry.enabled true
|
|
81
|
+
|
|
82
|
+
# set the persona for a single session only
|
|
83
|
+
$ ase config --scope session:4711 set agent.persona caveman
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
## SEE ALSO
|
|
87
|
+
|
|
88
|
+
`ase`(1), `ase-config`(1), `ase-config-get`(1), `ase-config-delete`(1).
|
|
89
|
+
|
|
90
|
+
## AUTHOR
|
|
91
|
+
|
|
92
|
+
Dr. Ralf S. Engelschall <rse@engelschall.com>
|