@hagicode/hagitask 0.1.2 → 0.2.0
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/LICENSE +21 -0
- package/README.md +122 -132
- package/dist/cli.js +14 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/new-command.d.ts +14 -0
- package/dist/commands/new-command.js +78 -0
- package/dist/commands/new-command.js.map +1 -0
- package/dist/templates/new-package.d.ts +9 -0
- package/dist/templates/new-package.js +304 -0
- package/dist/templates/new-package.js.map +1 -0
- package/dist/validation/package-validator.js +12 -0
- package/dist/validation/package-validator.js.map +1 -1
- package/package.json +30 -10
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 HagiCode
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,12 +1,18 @@
|
|
|
1
1
|
# hagitask
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
[](https://www.npmjs.com/package/@hagicode/hagitask)
|
|
4
|
+
[](https://www.npmjs.com/package/@hagicode/hagitask)
|
|
5
|
+
[](https://www.npmjs.com/package/@hagicode/hagitask)
|
|
6
|
+
[](https://nodejs.org/)
|
|
7
|
+
|
|
8
|
+
HagiTask is the offline toolkit for authoring HagiTask preset-task packages. It ships a
|
|
9
|
+
`hagitask validate` command that checks packages against the shipped schemas, a
|
|
10
|
+
`hagitask new` command that scaffolds a package, a validation API, and the preset
|
|
11
|
+
packages `normal-session` and `research-investigation`.
|
|
6
12
|
|
|
7
13
|
## npm CLI
|
|
8
14
|
|
|
9
|
-
The
|
|
15
|
+
The toolkit is published as `@hagicode/hagitask` (Node.js 24 or newer).
|
|
10
16
|
Install it with `npm install --save-dev @hagicode/hagitask`, then validate a
|
|
11
17
|
repository or one package:
|
|
12
18
|
|
|
@@ -15,62 +21,42 @@ npx hagitask validate .
|
|
|
15
21
|
npx hagitask validate ./data/my-task --json
|
|
16
22
|
```
|
|
17
23
|
|
|
24
|
+
Create a new package scaffold without network access:
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
npx hagitask new my-task
|
|
28
|
+
npx hagitask new my-task --target ./data/my-task --repository repos/web repos/hagicode-core
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
The target directory must be empty (or absent), and package names use lowercase
|
|
32
|
+
letters, numbers, and hyphens. `--target` selects the exact package directory (its final directory name must match the package name);
|
|
33
|
+
`--destination` and `--output` are aliases. `--repository` may be repeated or
|
|
34
|
+
followed by multiple identifiers and only populates the repository selector
|
|
35
|
+
options; commands still require an explicit `targetRepositories` selection.
|
|
36
|
+
|
|
37
|
+
Generated packages contain `manifest.json`, `frontend/`, `backend/`, bilingual
|
|
38
|
+
`locales/`, `store-page/`, and `commands/README.md`. The baseline commands
|
|
39
|
+
`what is this` explain a selected repository, while `what is next` recommends
|
|
40
|
+
improvements. Add command definitions in `frontend/commands.json` and matching
|
|
41
|
+
localized prompt files in `backend/templates/<locale>/commands/`.
|
|
42
|
+
|
|
18
43
|
`validate` discovers packages directly under `presets/` and `data/`, or validates
|
|
19
44
|
a directory containing `manifest.json`. It returns exit code `0` only when all
|
|
20
45
|
discovered packages pass. Human-readable diagnostics are printed by default;
|
|
21
46
|
`--json` prints the stable `{ packages, errors, valid }` result on stdout for CI.
|
|
22
47
|
Validation reads `schemas/` shipped inside the npm package (and never requires a
|
|
23
|
-
network connection).
|
|
24
|
-
Packages retain their existing workflows until a separate migration.
|
|
25
|
-
|
|
26
|
-
> Authoring location: contributors add and update preset-task packages **here**, in
|
|
27
|
-
> `repos/hagitask`, not in `repos/hagicode-core/src/PCode.Web/plugins/task-presets/`.
|
|
28
|
-
> The `hagicode-core` copy is a transitional asset that is kept only until the backend
|
|
29
|
-
> loading cutover lands.
|
|
30
|
-
|
|
31
|
-
## Repository Layout
|
|
32
|
-
|
|
33
|
-
```text
|
|
34
|
-
repos/hagitask/
|
|
35
|
-
schemas/
|
|
36
|
-
task-preset-plugin/
|
|
37
|
-
manifest.schema.json # Preset package manifest contract
|
|
38
|
-
panel.schema.json # Frontend panel definition contract
|
|
39
|
-
commands.schema.json # Frontend command catalog contract
|
|
40
|
-
locales.schema.json # Locale bundle contract
|
|
41
|
-
task-preset.schema.json # Backend task-preset contract
|
|
42
|
-
prompt-package.schema.json # Backend prompt package contract
|
|
43
|
-
store-page-frontmatter.schema.json # Store-page frontmatter contract
|
|
44
|
-
community-index-v1.schema.json # Published /index.json contract
|
|
45
|
-
community-task-detail-v1.schema.json # Published /tasks/<taskId>.json contract
|
|
46
|
-
presets/
|
|
47
|
-
<presetTaskId>/
|
|
48
|
-
manifest.json
|
|
49
|
-
frontend/
|
|
50
|
-
panel.json
|
|
51
|
-
commands.json # Optional, only when the preset ships commands
|
|
52
|
-
backend/
|
|
53
|
-
task-preset.json
|
|
54
|
-
prompts.json
|
|
55
|
-
templates/<locale>/...
|
|
56
|
-
locales/
|
|
57
|
-
en-US.json
|
|
58
|
-
zh-CN.json
|
|
59
|
-
store-page/
|
|
60
|
-
index.en-US.md
|
|
61
|
-
index.zh-CN.md
|
|
62
|
-
```
|
|
48
|
+
network connection).
|
|
63
49
|
|
|
64
50
|
## Schema Layers
|
|
65
51
|
|
|
66
52
|
`schemas/` holds three schema layers. They validate different documents, at different
|
|
67
|
-
points in the pipeline
|
|
53
|
+
points in the pipeline.
|
|
68
54
|
|
|
69
|
-
| Layer | Schemas | Validates |
|
|
70
|
-
| --- | --- | --- |
|
|
71
|
-
| Package schemas | `schemas/task-preset-plugin/*.schema.json` | the JSON files inside a preset or community package (`manifest.json`, `frontend/*`, `backend/*`, `locales/*`) |
|
|
72
|
-
| Community discovery schema | `schemas/community-index-v1.schema.json` | the published `/index.json` catalog |
|
|
73
|
-
| Community detail schema | `schemas/community-task-detail-v1.schema.json` | each published `/tasks/<taskId>.json` document |
|
|
55
|
+
| Layer | Schemas | Validates |
|
|
56
|
+
| --- | --- | --- |
|
|
57
|
+
| Package schemas | `schemas/task-preset-plugin/*.schema.json` | the JSON files inside a preset or community package (`manifest.json`, `frontend/*`, `backend/*`, `locales/*`) |
|
|
58
|
+
| Community discovery schema | `schemas/community-index-v1.schema.json` | the published `/index.json` catalog |
|
|
59
|
+
| Community detail schema | `schemas/community-task-detail-v1.schema.json` | each published `/tasks/<taskId>.json` document |
|
|
74
60
|
|
|
75
61
|
Package schemas describe **authored source**. The community schemas describe
|
|
76
62
|
**generated publication output** and carry fields that do not exist in any package file
|
|
@@ -78,23 +64,11 @@ Package schemas describe **authored source**. The community schemas describe
|
|
|
78
64
|
wrong layer is the most common source of confusion: if you are editing a file inside a
|
|
79
65
|
package directory, the matching contract is always under `schemas/task-preset-plugin/`.
|
|
80
66
|
|
|
81
|
-
Community packages live in
|
|
82
|
-
[`hagitask-community-packages`](https://github.com/HagiCode-org/hagitask-community-packages).
|
|
83
|
-
That repository mounts HagiTask as a **nested submodule** and consumes these schemas
|
|
84
|
-
directly from `hagitask/schemas/task-preset-plugin/` — it no longer vendors its own copy.
|
|
85
|
-
[`hagitask-site`](https://github.com/HagiCode-org/hagitask-site) in turn mounts the
|
|
86
|
-
community repository as its `community-packages/` submodule, reads task packages from
|
|
87
|
-
`community-packages/data/`, and loads the publication schemas from
|
|
88
|
-
`community-packages/hagitask/schemas`. Shipped presets live in `presets/` in this
|
|
89
|
-
repository. All three — HagiTask presets, community packages, and the site build — use the
|
|
90
|
-
same package schemas from this directory.
|
|
91
|
-
|
|
92
67
|
## Package `$schema` Reference
|
|
93
68
|
|
|
94
69
|
`schemas/task-preset-plugin/` is the authoritative home for the JSON schemas that
|
|
95
70
|
validate preset packages. Every shipped and community preset package resolves its
|
|
96
|
-
`$schema` references against this directory
|
|
97
|
-
`repos/hagicode-core` to validate a package.
|
|
71
|
+
`$schema` references against this directory.
|
|
98
72
|
|
|
99
73
|
The shipped preset packages use these relative `$schema` paths from inside
|
|
100
74
|
`presets/<presetTaskId>/`:
|
|
@@ -132,65 +106,94 @@ command preludes remain supported.
|
|
|
132
106
|
Community packages use the identical values, so a package can move between
|
|
133
107
|
`presets/<presetTaskId>/` and the community repository without rewriting references.
|
|
134
108
|
|
|
135
|
-
##
|
|
136
|
-
|
|
137
|
-
```mermaid
|
|
138
|
-
flowchart LR
|
|
139
|
-
SRC["Community package source<br/>data/<taskId>/manifest.json, frontend/, backend/, locales/, store-page/"]
|
|
140
|
-
PKG["Package schemas<br/>hagitask/schemas/task-preset-plugin/*.schema.json"]
|
|
141
|
-
SUB["hagitask-site community-packages/ submodule (nested hagitask)"]
|
|
142
|
-
NORM["Site build: normalize + digest"]
|
|
143
|
-
IDX["/index.json"]
|
|
144
|
-
DET["/tasks/<taskId>.json"]
|
|
145
|
-
ZIP["/packages/<taskId>.zip"]
|
|
146
|
-
CIDX["community-index-v1.schema.json"]
|
|
147
|
-
CDET["community-task-detail-v1.schema.json"]
|
|
148
|
-
|
|
149
|
-
PKG -.validates.-> SRC
|
|
150
|
-
SRC --> SUB --> NORM
|
|
151
|
-
NORM --> IDX
|
|
152
|
-
NORM --> DET
|
|
153
|
-
NORM --> ZIP
|
|
154
|
-
CIDX -.validates.-> IDX
|
|
155
|
-
CDET -.validates.-> DET
|
|
156
|
-
```
|
|
109
|
+
## Well-Known Input: `omitNonInteractiveHints`
|
|
157
110
|
|
|
158
|
-
|
|
111
|
+
`omitNonInteractiveHints` is a reserved, optional, boolean system input for prompt
|
|
112
|
+
packages. It tells the template whether interactive control is enabled for the agent CLI
|
|
113
|
+
that runs the task. A package that wants to follow the switch declares the input in
|
|
114
|
+
`backend/prompts.json`:
|
|
115
|
+
|
|
116
|
+
```json
|
|
117
|
+
{
|
|
118
|
+
"name": "omitNonInteractiveHints",
|
|
119
|
+
"source": "system",
|
|
120
|
+
"required": false,
|
|
121
|
+
"description": "Optional. True when interactive control is enabled for the agent CLI running this prompt."
|
|
122
|
+
}
|
|
123
|
+
```
|
|
159
124
|
|
|
160
|
-
|
|
161
|
-
| --- | --- |
|
|
162
|
-
| `manifest.json` → `version` | `version` in index and detail |
|
|
163
|
-
| `manifest.json` → `owner` | `publisher` in index and detail |
|
|
164
|
-
| `backend/task-preset.json` → `requirements` | `requirements` in detail, and the derived `compatibility.agent` / `.skills` / `.cli` in both documents |
|
|
165
|
-
| `store-page/index.<locale>.md` → `title` / `summary` | `name`, `summary`, `description`, and `localization.supportedLocales` |
|
|
166
|
-
| `store-page/index.en-US.md` → `catalog` / `tags` | `category` and `tags` |
|
|
167
|
-
| any file in the package directory | the zip contents, plus `integrity.sha256` in the index and `installation.size` / `installation.sha256` in the detail |
|
|
125
|
+
and gates its run-mode declaration in each template that carries one:
|
|
168
126
|
|
|
169
|
-
|
|
127
|
+
```handlebars
|
|
128
|
+
{{#unless omitNonInteractiveHints}}
|
|
129
|
+
## Run mode
|
|
130
|
+
This prompt is running in a non-interactive environment.
|
|
131
|
+
{{/unless}}
|
|
132
|
+
```
|
|
170
133
|
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
134
|
+
- **What to gate.** The whole run-mode section: the "non-interactive" declaration, its
|
|
135
|
+
prohibitions of interactive tools or follow-up questions, and the default-choice rules
|
|
136
|
+
written inside it. Keep everything outside that section, including scope boundaries,
|
|
137
|
+
output format, and inline body requirements such as "if details are missing, make a
|
|
138
|
+
reasonable assumption". A statement that the package's own requirements demand (for
|
|
139
|
+
example "do not claim extra skills configuration is required") may stay under an
|
|
140
|
+
`{{else}}` branch with a neutral heading.
|
|
141
|
+
- **Absent means today's prompt.** A value that is absent, or `false`, renders exactly the
|
|
142
|
+
prompt that existed before the gate. A package that never references the input renders
|
|
143
|
+
the same way with any value.
|
|
144
|
+
- **The backend supplies the value.** The host reads the stored interactive-control entry
|
|
145
|
+
of the agent CLI that runs the task and passes it at render time. It is not a creation
|
|
146
|
+
parameter: package panels, `inputBindings` and create requests must not declare or send it.
|
|
147
|
+
Packages that adopt the input should keep it out of their panel and binding definitions.
|
|
148
|
+
- **Wording only.** The switch never changes which runs may ask the user a question. It
|
|
149
|
+
only decides whether the gated run-mode text is rendered.
|
|
150
|
+
|
|
151
|
+
## Well-Known Computed Inputs: `targetRepositoriesSelectAll` and `targetRepositoriesScopeAccess`
|
|
152
|
+
|
|
153
|
+
When a session's repository scope is the select-all state ("every repository of the
|
|
154
|
+
project", editable or read-only), the backend resolves it against the project's current
|
|
155
|
+
repositories at render time and passes two computed-context values to the template:
|
|
156
|
+
|
|
157
|
+
| Input | Value |
|
|
158
|
+
|----------------------------------|------------------------------------------------------------------------------------------------|
|
|
159
|
+
| `targetRepositoriesSelectAll` | `true` only when a select-all state was resolved for the session. `false` for an explicit list. |
|
|
160
|
+
| `targetRepositoriesScopeAccess` | `write` (editable) or `read` (read-only) for the resolved scope. Present only when the flag is `true`. |
|
|
161
|
+
|
|
162
|
+
A package that wants to state the scope declares both in `backend/prompts.json`:
|
|
175
163
|
|
|
176
|
-
|
|
164
|
+
```json
|
|
165
|
+
{
|
|
166
|
+
"name": "targetRepositoriesSelectAll",
|
|
167
|
+
"source": "computed-context",
|
|
168
|
+
"required": false,
|
|
169
|
+
"description": "Optional. True when the repository scope is the resolved select-all state; absent or false means an explicit list."
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
"name": "targetRepositoriesScopeAccess",
|
|
173
|
+
"source": "computed-context",
|
|
174
|
+
"required": false,
|
|
175
|
+
"description": "Optional. Access of the resolved select-all scope: write or read. Present only when targetRepositoriesSelectAll is true."
|
|
176
|
+
}
|
|
177
|
+
```
|
|
177
178
|
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
179
|
+
- **What the values mean.** When the flag is `true`, `targetRepositories` already holds the
|
|
180
|
+
full resolved set and `targetScopeMarkdown` is recomputed from it, so a template only
|
|
181
|
+
needs the flag to say that the scope is all repositories. The list is not a snapshot.
|
|
182
|
+
- **What to gate.** Wrap any all-repositories wording in `{{#if targetRepositoriesSelectAll}}`
|
|
183
|
+
and read the access value only inside that gate. An explicit-list session renders the
|
|
184
|
+
same prompt it rendered before.
|
|
185
|
+
- **Packages with `strictVariables: true`.** The backend supplies `false` for an explicit
|
|
186
|
+
list, so the flag is always present for those packages. Packages with
|
|
187
|
+
`strictVariables: false` may ignore the flag entirely.
|
|
188
|
+
- **The backend supplies the values.** They are not creation parameters: package panels,
|
|
189
|
+
`inputBindings` and create requests must not declare or send them.
|
|
186
190
|
|
|
187
191
|
## Preset Package Directory
|
|
188
192
|
|
|
189
193
|
`presets/` is the root for preset-task packages. Each package lives in its own
|
|
190
194
|
`presets/<presetTaskId>/` directory and preserves the loader-compatible plugin
|
|
191
195
|
package shape (`manifest.json`, `frontend/`, `backend/`, `locales/`, and
|
|
192
|
-
`store-page/`).
|
|
193
|
-
HagiTask-specific adapter.
|
|
196
|
+
`store-page/`).
|
|
194
197
|
|
|
195
198
|
Currently shipped packages:
|
|
196
199
|
|
|
@@ -202,40 +205,27 @@ Currently shipped packages:
|
|
|
202
205
|
[`hagitask-community-packages`](https://github.com/HagiCode-org/hagitask-community-packages),
|
|
203
206
|
not in `presets/`.
|
|
204
207
|
|
|
205
|
-
## Source-of-Truth Ownership
|
|
206
|
-
|
|
207
|
-
HagiTask owns preset-task schemas and shipped preset packages. When you add a new
|
|
208
|
-
preset, update an existing one, or change a schema, do it here.
|
|
209
|
-
|
|
210
|
-
The legacy copies under `repos/hagicode-core/src/PCode.Web/plugins/task-presets/`
|
|
211
|
-
are kept unchanged during the copy-first transition phase. After the later backend
|
|
212
|
-
loading cutover (see `openspec/changes/migrate-preset-task-to-hagitask-repo`),
|
|
213
|
-
`hagicode-core` will load shipped presets from `repos/hagitask/presets` through the
|
|
214
|
-
`TaskPresetPlugins.PresetGroups` configuration and the backend-owned copy will no
|
|
215
|
-
longer be the shipped source of truth.
|
|
216
|
-
|
|
217
|
-
Until that cutover lands, every shipped preset update — including `openspec-spec-compress` —
|
|
218
|
-
must keep the `hagicode-core` runtime copy synchronized with the canonical HagiTask package.
|
|
219
|
-
|
|
220
208
|
## Contributing a Preset Package
|
|
221
209
|
|
|
222
|
-
|
|
210
|
+
Preset packages use the loader-compatible
|
|
223
211
|
layout described above and must keep their JSON resources aligned with
|
|
224
212
|
`schemas/task-preset-plugin/`. Validate authored files against those schemas before submitting:
|
|
225
213
|
|
|
226
214
|
```bash
|
|
227
|
-
|
|
215
|
+
pnpm run validate
|
|
228
216
|
```
|
|
229
217
|
|
|
230
218
|
The validator checks every shipped preset, all manifest resource references, package
|
|
231
|
-
JSON schemas, prompt template references, and compatibility binding aliases.
|
|
232
|
-
|
|
233
|
-
|
|
219
|
+
JSON schemas, prompt template references, and compatibility binding aliases.
|
|
220
|
+
|
|
221
|
+
Every preset panel must declare a project selector: a field with `renderer: "project-picker"`
|
|
222
|
+
(conventionally `id: "projectId"`, `required: true`, `output: "projectId"`) in one of its sections.
|
|
223
|
+
The selector is UI-only: it needs no `inputBindings` entry, prompt parameter or template
|
|
224
|
+
change. `validate` reports a panel with no selector; `hagitask new` scaffolds one.
|
|
234
225
|
|
|
235
226
|
For the user-facing walkthrough covering package creation, locale and store-page resources,
|
|
236
227
|
validation, semantic versioning, and Pull Requests, see the
|
|
237
228
|
[HagiTask community guide](https://docs.hagicode.com/guides/hagitask/community/). A community
|
|
238
229
|
task belongs in
|
|
239
230
|
[`hagitask-community-packages`](https://github.com/HagiCode-org/hagitask-community-packages),
|
|
240
|
-
not in this repository.
|
|
241
|
-
preset source data, and the transitional runtime copy.
|
|
231
|
+
not in this repository.
|
package/dist/cli.js
CHANGED
|
@@ -3,6 +3,7 @@ import { Command } from 'commander';
|
|
|
3
3
|
import { readFileSync } from 'node:fs';
|
|
4
4
|
import { dirname, resolve } from 'node:path';
|
|
5
5
|
import { fileURLToPath } from 'node:url';
|
|
6
|
+
import { runNewCommand } from './commands/new-command.js';
|
|
6
7
|
import { runValidateCommand } from './commands/validate-command.js';
|
|
7
8
|
function packageVersion() {
|
|
8
9
|
try {
|
|
@@ -19,6 +20,19 @@ export function createCli() {
|
|
|
19
20
|
.name('hagitask')
|
|
20
21
|
.description('Validate HagiTask preset and community packages offline.')
|
|
21
22
|
.version(packageVersion());
|
|
23
|
+
program
|
|
24
|
+
.command('new <packageName>')
|
|
25
|
+
.description('create a new HagiTask package scaffold')
|
|
26
|
+
.option('-d, --target <path>', 'target package directory')
|
|
27
|
+
.option('--destination <path>', 'alias for --target')
|
|
28
|
+
.option('--output <path>', 'alias for --target')
|
|
29
|
+
.option('-r, --repository <repositories...>', 'repository identifier(s) to offer in the selector')
|
|
30
|
+
.action((packageName, options) => {
|
|
31
|
+
const result = runNewCommand(packageName, options);
|
|
32
|
+
if (result.error)
|
|
33
|
+
console.error(result.error);
|
|
34
|
+
process.exitCode = result.code;
|
|
35
|
+
});
|
|
22
36
|
program
|
|
23
37
|
.command('validate [path]')
|
|
24
38
|
.description('validate packages under presets/, data/, or a single package directory')
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEpE,SAAS,cAAc;IACrB,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;QAC3F,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;IAC/D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAC9B,OAAO;SACJ,IAAI,CAAC,UAAU,CAAC;SAChB,WAAW,CAAC,0DAA0D,CAAC;SACvE,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;IAC7B,OAAO;SACJ,OAAO,CAAC,iBAAiB,CAAC;SAC1B,WAAW,CAAC,wEAAwE,CAAC;SACrF,MAAM,CAAC,QAAQ,EAAE,yCAAyC,CAAC;SAC3D,MAAM,CAAC,CAAC,IAAwB,EAAE,OAA2B,EAAE,EAAE;QAChE,OAAO,CAAC,QAAQ,GAAG,kBAAkB,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;IACL,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI;IACtC,SAAS,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,UAAU,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;IAAE,IAAI,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,aAAa,EAA0B,MAAM,2BAA2B,CAAC;AAClF,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEpE,SAAS,cAAc;IACrB,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;QAC3F,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;IAC/D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAC9B,OAAO;SACJ,IAAI,CAAC,UAAU,CAAC;SAChB,WAAW,CAAC,0DAA0D,CAAC;SACvE,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;IAC7B,OAAO;SACJ,OAAO,CAAC,mBAAmB,CAAC;SAC5B,WAAW,CAAC,wCAAwC,CAAC;SACrD,MAAM,CAAC,qBAAqB,EAAE,0BAA0B,CAAC;SACzD,MAAM,CAAC,sBAAsB,EAAE,oBAAoB,CAAC;SACpD,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC;SAC/C,MAAM,CAAC,oCAAoC,EAAE,mDAAmD,CAAC;SACjG,MAAM,CAAC,CAAC,WAAmB,EAAE,OAA0B,EAAE,EAAE;QAC1D,MAAM,MAAM,GAAG,aAAa,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QACnD,IAAI,MAAM,CAAC,KAAK;YAAE,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC9C,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC;IACjC,CAAC,CAAC,CAAC;IACL,OAAO;SACJ,OAAO,CAAC,iBAAiB,CAAC;SAC1B,WAAW,CAAC,wEAAwE,CAAC;SACrF,MAAM,CAAC,QAAQ,EAAE,yCAAyC,CAAC;SAC3D,MAAM,CAAC,CAAC,IAAwB,EAAE,OAA2B,EAAE,EAAE;QAChE,OAAO,CAAC,QAAQ,GAAG,kBAAkB,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;IACL,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI;IACtC,SAAS,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,UAAU,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;IAAE,IAAI,EAAE,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export interface NewCommandOptions {
|
|
2
|
+
target?: string;
|
|
3
|
+
destination?: string;
|
|
4
|
+
output?: string;
|
|
5
|
+
repositories?: string[];
|
|
6
|
+
repository?: string[];
|
|
7
|
+
}
|
|
8
|
+
export interface NewCommandResult {
|
|
9
|
+
code: number;
|
|
10
|
+
packagePath?: string;
|
|
11
|
+
files?: string[];
|
|
12
|
+
error?: string;
|
|
13
|
+
}
|
|
14
|
+
export declare function runNewCommand(packageName: string | undefined, options?: NewCommandOptions, cwd?: string): NewCommandResult;
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { existsSync, mkdirSync, readdirSync, rmSync, statSync, writeFileSync, } from 'node:fs';
|
|
2
|
+
import { basename, dirname, join, resolve } from 'node:path';
|
|
3
|
+
import { createNewPackageFiles } from '../templates/new-package.js';
|
|
4
|
+
const PACKAGE_NAME = /^[a-z0-9][a-z0-9-]*$/;
|
|
5
|
+
const REPOSITORY_ID = /^[A-Za-z0-9][A-Za-z0-9._/-]*$/;
|
|
6
|
+
function optionTarget(options) {
|
|
7
|
+
return options.target ?? options.destination ?? options.output;
|
|
8
|
+
}
|
|
9
|
+
function repositoriesFromOptions(options) {
|
|
10
|
+
const values = options.repositories ?? options.repository ?? [];
|
|
11
|
+
return values.flatMap((value) => value.split(',').map((item) => item.trim())).filter(Boolean);
|
|
12
|
+
}
|
|
13
|
+
function validateInput(packageName, options) {
|
|
14
|
+
if (!packageName || !PACKAGE_NAME.test(packageName)) {
|
|
15
|
+
return 'package name must match ^[a-z0-9][a-z0-9-]*$';
|
|
16
|
+
}
|
|
17
|
+
const repositories = repositoriesFromOptions(options);
|
|
18
|
+
if (repositories.some((repository) => !REPOSITORY_ID.test(repository) || repository.includes('..'))) {
|
|
19
|
+
return 'repository identifiers must be non-empty and contain only letters, numbers, ".", "_", "-", or "/"';
|
|
20
|
+
}
|
|
21
|
+
const target = optionTarget(options);
|
|
22
|
+
if (target !== undefined && (!target.trim() || target.includes('\0'))) {
|
|
23
|
+
return 'target path must be a non-empty valid path';
|
|
24
|
+
}
|
|
25
|
+
return undefined;
|
|
26
|
+
}
|
|
27
|
+
export function runNewCommand(packageName, options = {}, cwd = process.cwd()) {
|
|
28
|
+
const inputError = validateInput(packageName, options);
|
|
29
|
+
if (inputError)
|
|
30
|
+
return { code: 1, error: inputError };
|
|
31
|
+
const name = packageName;
|
|
32
|
+
const target = resolve(cwd, optionTarget(options) ?? name);
|
|
33
|
+
if (optionTarget(options) !== undefined && basename(target) !== name) {
|
|
34
|
+
return { code: 1, error: `target directory name must equal package name '${name}'` };
|
|
35
|
+
}
|
|
36
|
+
if (existsSync(target)) {
|
|
37
|
+
if (!statSync(target).isDirectory())
|
|
38
|
+
return { code: 1, error: `target path is not a directory: ${target}` };
|
|
39
|
+
if (readdirSync(target).length > 0)
|
|
40
|
+
return { code: 1, error: `target directory is not empty: ${target}` };
|
|
41
|
+
}
|
|
42
|
+
const files = createNewPackageFiles({
|
|
43
|
+
packageName: name,
|
|
44
|
+
repositories: repositoriesFromOptions(options),
|
|
45
|
+
});
|
|
46
|
+
const createdPaths = [];
|
|
47
|
+
const targetWasCreated = !existsSync(target);
|
|
48
|
+
try {
|
|
49
|
+
mkdirSync(target, { recursive: true });
|
|
50
|
+
for (const file of files) {
|
|
51
|
+
const filePath = join(target, file.path);
|
|
52
|
+
const parent = dirname(filePath);
|
|
53
|
+
const missingDirectories = [];
|
|
54
|
+
let current = parent;
|
|
55
|
+
while (current !== target && !existsSync(current)) {
|
|
56
|
+
missingDirectories.push(current);
|
|
57
|
+
current = dirname(current);
|
|
58
|
+
}
|
|
59
|
+
mkdirSync(parent, { recursive: true });
|
|
60
|
+
createdPaths.push(...missingDirectories);
|
|
61
|
+
writeFileSync(filePath, file.contents, { encoding: 'utf8', flag: 'wx' });
|
|
62
|
+
createdPaths.push(filePath);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
for (const filePath of createdPaths.reverse())
|
|
67
|
+
rmSync(filePath, { force: true, recursive: true });
|
|
68
|
+
if (targetWasCreated)
|
|
69
|
+
rmSync(target, { recursive: true, force: true });
|
|
70
|
+
return { code: 1, error: `unable to create package: ${error instanceof Error ? error.message : String(error)}` };
|
|
71
|
+
}
|
|
72
|
+
const relativeFiles = files.map((file) => file.path);
|
|
73
|
+
console.log(`Created HagiTask package at ${target}`);
|
|
74
|
+
console.log(relativeFiles.map((file) => `- ${file}`).join('\n'));
|
|
75
|
+
console.log('Next: run `hagitask validate <path>` and add commands under commands/.');
|
|
76
|
+
return { code: 0, packagePath: target, files: relativeFiles };
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=new-command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"new-command.js","sourceRoot":"","sources":["../../src/commands/new-command.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export interface NewPackageTemplateContext {
|
|
2
|
+
packageName: string;
|
|
3
|
+
repositories: string[];
|
|
4
|
+
}
|
|
5
|
+
export interface NewPackageFile {
|
|
6
|
+
path: string;
|
|
7
|
+
contents: string;
|
|
8
|
+
}
|
|
9
|
+
export declare function createNewPackageFiles(context: NewPackageTemplateContext): NewPackageFile[];
|
|
@@ -0,0 +1,304 @@
|
|
|
1
|
+
function json(value) {
|
|
2
|
+
return `${JSON.stringify(value, null, 2)}\n`;
|
|
3
|
+
}
|
|
4
|
+
export function createNewPackageFiles(context) {
|
|
5
|
+
const { packageName, repositories } = context;
|
|
6
|
+
const localized = (key) => ({ key });
|
|
7
|
+
const repositoryOptions = repositories.map((value) => ({
|
|
8
|
+
value,
|
|
9
|
+
label: localized(`repositories.${value}`),
|
|
10
|
+
}));
|
|
11
|
+
return [
|
|
12
|
+
{
|
|
13
|
+
path: 'manifest.json',
|
|
14
|
+
contents: json({
|
|
15
|
+
$schema: '../../schemas/task-preset-plugin/manifest.schema.json',
|
|
16
|
+
schemaVersion: '1.0',
|
|
17
|
+
taskPresetId: packageName,
|
|
18
|
+
version: '1.0.0',
|
|
19
|
+
icon: 'sparkles',
|
|
20
|
+
displayName: localized('taskPreset.displayName'),
|
|
21
|
+
description: localized('taskPreset.description'),
|
|
22
|
+
kind: 'custom-executor',
|
|
23
|
+
status: 'experimental',
|
|
24
|
+
owner: 'HagiTask',
|
|
25
|
+
activation: { defaultState: 'passive' },
|
|
26
|
+
localization: {
|
|
27
|
+
strategy: 'plugin-bundles',
|
|
28
|
+
namespace: packageName,
|
|
29
|
+
defaultLocale: 'en-US',
|
|
30
|
+
supportedLocales: ['en-US', 'zh-CN'],
|
|
31
|
+
bundles: {
|
|
32
|
+
'en-US': './locales/en-US.json',
|
|
33
|
+
'zh-CN': './locales/zh-CN.json',
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
capabilities: { supportsCommandCatalog: true },
|
|
37
|
+
ui: {
|
|
38
|
+
panel: './frontend/panel.json',
|
|
39
|
+
commands: './frontend/commands.json',
|
|
40
|
+
},
|
|
41
|
+
site: { storePage: './store-page/' },
|
|
42
|
+
backend: {
|
|
43
|
+
taskPreset: './backend/task-preset.json',
|
|
44
|
+
prompts: './backend/prompts.json',
|
|
45
|
+
},
|
|
46
|
+
}),
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
path: 'frontend/panel.json',
|
|
50
|
+
contents: json({
|
|
51
|
+
$schema: '../../../schemas/task-preset-plugin/panel.schema.json',
|
|
52
|
+
surface: 'drawer',
|
|
53
|
+
title: localized('taskPreset.title'),
|
|
54
|
+
description: localized('taskPreset.description'),
|
|
55
|
+
defaultTitle: localized('taskPreset.defaultTitle'),
|
|
56
|
+
submitLabel: localized('taskPreset.submit'),
|
|
57
|
+
submittingLabel: localized('taskPreset.submitting'),
|
|
58
|
+
sections: [{
|
|
59
|
+
id: 'context',
|
|
60
|
+
layout: 'stack',
|
|
61
|
+
fields: [{
|
|
62
|
+
id: 'projectId',
|
|
63
|
+
renderer: 'project-picker',
|
|
64
|
+
label: localized('panel.projectLabel'),
|
|
65
|
+
hint: localized('panel.projectHint'),
|
|
66
|
+
required: true,
|
|
67
|
+
output: 'projectId',
|
|
68
|
+
}, {
|
|
69
|
+
id: 'targetRepositories',
|
|
70
|
+
renderer: 'repository-access-selector',
|
|
71
|
+
label: localized('panel.repositoryLabel'),
|
|
72
|
+
hint: localized('panel.repositoryHint'),
|
|
73
|
+
required: true,
|
|
74
|
+
output: 'targetRepositories',
|
|
75
|
+
selectionMode: 'multiple',
|
|
76
|
+
componentProps: {
|
|
77
|
+
targetSelectionId: 'targetRepositories',
|
|
78
|
+
emptyTextKey: 'panel.repositoryEmpty',
|
|
79
|
+
options: repositoryOptions,
|
|
80
|
+
},
|
|
81
|
+
}],
|
|
82
|
+
}],
|
|
83
|
+
}),
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
path: 'frontend/commands.json',
|
|
87
|
+
contents: json({
|
|
88
|
+
$schema: '../../../schemas/task-preset-plugin/commands.schema.json',
|
|
89
|
+
schemaVersion: '1.1',
|
|
90
|
+
selectionMode: 'multiple',
|
|
91
|
+
groups: [{
|
|
92
|
+
id: 'repository-analysis',
|
|
93
|
+
title: localized('commands.groupTitle'),
|
|
94
|
+
description: localized('commands.groupDescription'),
|
|
95
|
+
}],
|
|
96
|
+
commands: [
|
|
97
|
+
{
|
|
98
|
+
id: 'what-is-this',
|
|
99
|
+
groupId: 'repository-analysis',
|
|
100
|
+
label: 'what is this',
|
|
101
|
+
description: localized('commands.whatIsThisDescription'),
|
|
102
|
+
docsSlug: 'what-is-this',
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
id: 'what-is-next',
|
|
106
|
+
groupId: 'repository-analysis',
|
|
107
|
+
label: 'what is next',
|
|
108
|
+
description: localized('commands.whatIsNextDescription'),
|
|
109
|
+
docsSlug: 'what-is-next',
|
|
110
|
+
},
|
|
111
|
+
],
|
|
112
|
+
}),
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
path: 'backend/task-preset.json',
|
|
116
|
+
contents: json({
|
|
117
|
+
$schema: '../../../schemas/task-preset-plugin/task-preset.schema.json',
|
|
118
|
+
taskKey: `${packageName}.repositoryAnalysis`,
|
|
119
|
+
scriptKey: `hagitask.${packageName}`,
|
|
120
|
+
defaultTargetType: 'repository',
|
|
121
|
+
execution: { schemaVersion: '1.0', strategy: 'extension', extensionPoint: 'hagitask.command-analysis' },
|
|
122
|
+
requirements: [{ type: 'agent', name: 'any' }],
|
|
123
|
+
targets: {
|
|
124
|
+
repositories: {
|
|
125
|
+
enabled: true,
|
|
126
|
+
selections: [{
|
|
127
|
+
id: 'targetRepositories',
|
|
128
|
+
selectionMode: 'multiple',
|
|
129
|
+
allowedAccessTypes: ['read'],
|
|
130
|
+
output: 'targetRepositories',
|
|
131
|
+
required: true,
|
|
132
|
+
scope: { source: 'owner-project-repositories' },
|
|
133
|
+
}],
|
|
134
|
+
},
|
|
135
|
+
vaults: { enabled: false },
|
|
136
|
+
projects: { enabled: false },
|
|
137
|
+
},
|
|
138
|
+
inputBindings: [
|
|
139
|
+
{
|
|
140
|
+
input: 'targetRepositories',
|
|
141
|
+
promptParameter: 'targetRepositories',
|
|
142
|
+
metadataKey: 'targetRepositories',
|
|
143
|
+
valueType: 'multiple',
|
|
144
|
+
transform: 'string-list',
|
|
145
|
+
required: true,
|
|
146
|
+
producer: 'field-output',
|
|
147
|
+
},
|
|
148
|
+
],
|
|
149
|
+
}),
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
path: 'backend/prompts.json',
|
|
153
|
+
contents: json({
|
|
154
|
+
$schema: '../../../schemas/task-preset-plugin/prompt-package.schema.json',
|
|
155
|
+
version: '1.0.0',
|
|
156
|
+
templateEngine: 'handlebars',
|
|
157
|
+
defaultLocale: 'en-US',
|
|
158
|
+
supportedLocales: ['en-US', 'zh-CN'],
|
|
159
|
+
inputs: [
|
|
160
|
+
{
|
|
161
|
+
name: 'targetRepositories',
|
|
162
|
+
source: 'task-preset-input',
|
|
163
|
+
required: true,
|
|
164
|
+
description: 'One or more explicitly selected repository identifiers.',
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
name: 'targetRepositoriesSelectAll',
|
|
168
|
+
source: 'computed-context',
|
|
169
|
+
required: false,
|
|
170
|
+
description: 'Optional. True when the repository scope is the resolved select-all state; absent or false means an explicit list.',
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
name: 'targetRepositoriesScopeAccess',
|
|
174
|
+
source: 'computed-context',
|
|
175
|
+
required: false,
|
|
176
|
+
description: 'Optional. Access of the resolved select-all scope: write or read. Present only when targetRepositoriesSelectAll is true.',
|
|
177
|
+
},
|
|
178
|
+
],
|
|
179
|
+
rendering: { strictVariables: true, trimBlocks: true },
|
|
180
|
+
locales: {
|
|
181
|
+
'en-US': {
|
|
182
|
+
systemTemplate: './templates/en-US/system.md',
|
|
183
|
+
userTemplate: './templates/en-US/user.hbs',
|
|
184
|
+
},
|
|
185
|
+
'zh-CN': {
|
|
186
|
+
systemTemplate: './templates/zh-CN/system.md',
|
|
187
|
+
userTemplate: './templates/zh-CN/user.hbs',
|
|
188
|
+
},
|
|
189
|
+
},
|
|
190
|
+
commandSystemPrompts: {
|
|
191
|
+
'what-is-this': {
|
|
192
|
+
'en-US': './templates/en-US/commands/what-is-this.md',
|
|
193
|
+
'zh-CN': './templates/zh-CN/commands/what-is-this.md',
|
|
194
|
+
},
|
|
195
|
+
'what-is-next': {
|
|
196
|
+
'en-US': './templates/en-US/commands/what-is-next.md',
|
|
197
|
+
'zh-CN': './templates/zh-CN/commands/what-is-next.md',
|
|
198
|
+
},
|
|
199
|
+
},
|
|
200
|
+
}),
|
|
201
|
+
},
|
|
202
|
+
{
|
|
203
|
+
path: 'locales/en-US.json',
|
|
204
|
+
contents: json({
|
|
205
|
+
$schema: '../../../schemas/task-preset-plugin/locales.schema.json',
|
|
206
|
+
taskPreset: {
|
|
207
|
+
displayName: packageName,
|
|
208
|
+
title: `Create ${packageName}`,
|
|
209
|
+
description: 'Analyze explicitly selected repositories.',
|
|
210
|
+
defaultTitle: packageName,
|
|
211
|
+
submit: 'Run analysis',
|
|
212
|
+
submitting: 'Running analysis...',
|
|
213
|
+
},
|
|
214
|
+
panel: {
|
|
215
|
+
projectLabel: 'Project *',
|
|
216
|
+
projectHint: 'The task will be created in the selected project.',
|
|
217
|
+
repositoryLabel: 'Repositories',
|
|
218
|
+
repositoryHint: 'Select one or more repositories. Analysis never chooses an implicit target.',
|
|
219
|
+
repositoryEmpty: 'Select a repository before running an analysis.',
|
|
220
|
+
},
|
|
221
|
+
commands: {
|
|
222
|
+
groupTitle: 'Repository analysis',
|
|
223
|
+
groupDescription: 'Understand the selected repository and plan improvements.',
|
|
224
|
+
whatIsThisDescription: 'Explain the purpose and structure of the selected repository.',
|
|
225
|
+
whatIsNextDescription: 'Recommend actionable next improvements for the selected repository.',
|
|
226
|
+
},
|
|
227
|
+
repositories: Object.fromEntries(repositories.map((value) => [value, value])),
|
|
228
|
+
}),
|
|
229
|
+
},
|
|
230
|
+
{
|
|
231
|
+
path: 'locales/zh-CN.json',
|
|
232
|
+
contents: json({
|
|
233
|
+
$schema: '../../../schemas/task-preset-plugin/locales.schema.json',
|
|
234
|
+
taskPreset: {
|
|
235
|
+
displayName: packageName,
|
|
236
|
+
title: `创建 ${packageName}`,
|
|
237
|
+
description: '分析明确选择的仓库。',
|
|
238
|
+
defaultTitle: packageName,
|
|
239
|
+
submit: '运行分析',
|
|
240
|
+
submitting: '正在运行分析……',
|
|
241
|
+
},
|
|
242
|
+
panel: {
|
|
243
|
+
projectLabel: '项目 *',
|
|
244
|
+
projectHint: '任务会在所选项目中创建。',
|
|
245
|
+
repositoryLabel: '仓库',
|
|
246
|
+
repositoryHint: '选择一个或多个仓库。分析不会隐式选择目标。',
|
|
247
|
+
repositoryEmpty: '运行分析前请先选择仓库。',
|
|
248
|
+
},
|
|
249
|
+
commands: {
|
|
250
|
+
groupTitle: '仓库分析',
|
|
251
|
+
groupDescription: '了解选定仓库并规划改进。',
|
|
252
|
+
whatIsThisDescription: '说明选定仓库的用途和结构。',
|
|
253
|
+
whatIsNextDescription: '为选定仓库推荐可执行的后续改进。',
|
|
254
|
+
},
|
|
255
|
+
repositories: Object.fromEntries(repositories.map((value) => [value, value])),
|
|
256
|
+
}),
|
|
257
|
+
},
|
|
258
|
+
{
|
|
259
|
+
path: 'backend/templates/en-US/system.md',
|
|
260
|
+
contents: 'You analyze only the repositories listed in {{targetRepositories}}.\n',
|
|
261
|
+
},
|
|
262
|
+
{
|
|
263
|
+
path: 'backend/templates/en-US/user.hbs',
|
|
264
|
+
contents: 'Use the selected repository context to answer the requested analysis.\n',
|
|
265
|
+
},
|
|
266
|
+
{
|
|
267
|
+
path: 'backend/templates/en-US/commands/what-is-this.md',
|
|
268
|
+
contents: 'Describe what the selected repository does, its main structure, and key entry points.\n',
|
|
269
|
+
},
|
|
270
|
+
{
|
|
271
|
+
path: 'backend/templates/en-US/commands/what-is-next.md',
|
|
272
|
+
contents: 'Recommend prioritized, actionable improvements for the selected repository.\n',
|
|
273
|
+
},
|
|
274
|
+
{
|
|
275
|
+
path: 'backend/templates/zh-CN/system.md',
|
|
276
|
+
contents: '你只能分析 {{targetRepositories}} 中明确选择的仓库。\n',
|
|
277
|
+
},
|
|
278
|
+
{
|
|
279
|
+
path: 'backend/templates/zh-CN/user.hbs',
|
|
280
|
+
contents: '使用选定仓库上下文回答请求的分析问题。\n',
|
|
281
|
+
},
|
|
282
|
+
{
|
|
283
|
+
path: 'backend/templates/zh-CN/commands/what-is-this.md',
|
|
284
|
+
contents: '说明选定仓库的用途、主要结构和关键入口。\n',
|
|
285
|
+
},
|
|
286
|
+
{
|
|
287
|
+
path: 'backend/templates/zh-CN/commands/what-is-next.md',
|
|
288
|
+
contents: '为选定仓库推荐有优先级且可执行的改进方向。\n',
|
|
289
|
+
},
|
|
290
|
+
{
|
|
291
|
+
path: 'store-page/index.en-US.md',
|
|
292
|
+
contents: `# ${packageName}\n\nA scaffold for repository analysis.\n`,
|
|
293
|
+
},
|
|
294
|
+
{
|
|
295
|
+
path: 'store-page/index.zh-CN.md',
|
|
296
|
+
contents: `# ${packageName}\n\n用于仓库分析的脚手架包。\n`,
|
|
297
|
+
},
|
|
298
|
+
{
|
|
299
|
+
path: 'commands/README.md',
|
|
300
|
+
contents: '# Command extensions\n\n`what is this` explains a selected repository. `what is next` recommends improvements. Add new command IDs to `frontend/commands.json` and matching prompt files under `backend/templates/<locale>/commands/`.\n',
|
|
301
|
+
},
|
|
302
|
+
];
|
|
303
|
+
}
|
|
304
|
+
//# sourceMappingURL=new-package.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"new-package.js","sourceRoot":"","sources":["../../src/templates/new-package.ts"],"names":[],"mappings":"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"}
|
|
@@ -267,6 +267,18 @@ function validateContract(pkg, manifest, loader) {
|
|
|
267
267
|
for (const [locale, reference] of Object.entries(manifest.localization?.bundles ?? {})) {
|
|
268
268
|
errors.push(...validatePath(pkg, 'manifest.json', `localization.bundles.${locale}`, reference).errors);
|
|
269
269
|
}
|
|
270
|
+
const panelRef = manifest.ui?.panel;
|
|
271
|
+
if (typeof panelRef === 'string' && panelRef.length > 0) {
|
|
272
|
+
const panelPath = resolve(pkg.dir, panelRef);
|
|
273
|
+
const panel = panelPath.startsWith(pkg.dir + sep) ? readJson(panelPath) : {};
|
|
274
|
+
if (!panel.error && panel.value && typeof panel.value === 'object') {
|
|
275
|
+
const sections = Array.isArray(panel.value.sections) ? panel.value.sections : [];
|
|
276
|
+
const hasSelector = sections.some((section) => Array.isArray(section?.fields) && section.fields.some((field) => field?.renderer === 'project-picker'));
|
|
277
|
+
if (!hasSelector) {
|
|
278
|
+
add('frontend/panel.json', 'sections', 'a project selector (renderer "project-picker") is required');
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
}
|
|
270
282
|
const taskPresetRef = manifest.backend?.taskPreset;
|
|
271
283
|
if (typeof taskPresetRef !== 'string')
|
|
272
284
|
return errors;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package-validator.js","sourceRoot":"","sources":["../../src/validation/package-validator.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"package-validator.js","sourceRoot":"","sources":["../../src/validation/package-validator.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hagicode/hagitask",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Offline HagiTask package schemas, validation API, and CLI.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -22,24 +22,43 @@
|
|
|
22
22
|
"README.md"
|
|
23
23
|
],
|
|
24
24
|
"engines": {
|
|
25
|
-
"node": ">=
|
|
25
|
+
"node": ">=24.0.0"
|
|
26
26
|
},
|
|
27
27
|
"repository": {
|
|
28
28
|
"type": "git",
|
|
29
29
|
"url": "git+https://github.com/HagiCode-org/hagitask.git"
|
|
30
30
|
},
|
|
31
|
-
"homepage": "https://github.com/HagiCode-org/hagitask",
|
|
31
|
+
"homepage": "https://github.com/HagiCode-org/hagitask#readme",
|
|
32
32
|
"bugs": {
|
|
33
33
|
"url": "https://github.com/HagiCode-org/hagitask/issues"
|
|
34
34
|
},
|
|
35
|
+
"keywords": [
|
|
36
|
+
"hagicode",
|
|
37
|
+
"hagicode-org",
|
|
38
|
+
"hagitask",
|
|
39
|
+
"preset-task",
|
|
40
|
+
"schema",
|
|
41
|
+
"validation",
|
|
42
|
+
"json-schema",
|
|
43
|
+
"cli",
|
|
44
|
+
"openspec"
|
|
45
|
+
],
|
|
46
|
+
"author": {
|
|
47
|
+
"name": "HagiCode",
|
|
48
|
+
"url": "https://github.com/HagiCode-org"
|
|
49
|
+
},
|
|
35
50
|
"publishConfig": {
|
|
36
|
-
"access": "public"
|
|
51
|
+
"access": "public",
|
|
52
|
+
"provenance": true,
|
|
53
|
+
"registry": "https://registry.npmjs.org/"
|
|
37
54
|
},
|
|
38
55
|
"scripts": {
|
|
39
|
-
"build": "tsc -p tsconfig.json",
|
|
40
|
-
"test": "
|
|
41
|
-
"validate": "
|
|
42
|
-
"clean": "rm -rf dist"
|
|
56
|
+
"build": "export NODE_OPTIONS=\"${NODE_OPTIONS:-} --max-old-space-size=4096\"; tsc -p tsconfig.json",
|
|
57
|
+
"test": "pnpm run build && node --test test/*.test.mjs",
|
|
58
|
+
"validate": "pnpm run build && node dist/cli.js validate .",
|
|
59
|
+
"clean": "rm -rf dist",
|
|
60
|
+
"check:registry": "node scripts/check-registry-neutrality.mjs",
|
|
61
|
+
"test:registry": "node --test scripts/check-registry-neutrality.node-test.mjs"
|
|
43
62
|
},
|
|
44
63
|
"dependencies": {
|
|
45
64
|
"ajv": "^8.17.1",
|
|
@@ -47,6 +66,7 @@
|
|
|
47
66
|
},
|
|
48
67
|
"devDependencies": {
|
|
49
68
|
"@types/node": "^24.5.2",
|
|
50
|
-
"typescript": "^
|
|
51
|
-
}
|
|
69
|
+
"typescript": "^6.0.3"
|
|
70
|
+
},
|
|
71
|
+
"packageManager": "pnpm@12.16.1"
|
|
52
72
|
}
|