@hagicode/hagitask 0.1.0 → 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 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
- HagiTask is the canonical repository for preset-task contribution assets inside the
4
- HagiCode monorepo. It is the maintained source of truth for shipped preset-task
5
- schemas and preset packages.
3
+ [![npm version](https://img.shields.io/npm/v/%40hagicode%2Fhagitask?logo=npm&color=cb3837)](https://www.npmjs.com/package/@hagicode/hagitask)
4
+ [![npm downloads](https://img.shields.io/npm/dm/%40hagicode%2Fhagitask?logo=npm&color=2d8cf0)](https://www.npmjs.com/package/@hagicode/hagitask)
5
+ [![license](https://img.shields.io/npm/l/%40hagicode%2Fhagitask?color=ffd43b)](https://www.npmjs.com/package/@hagicode/hagitask)
6
+ [![Node.js](https://img.shields.io/badge/node-%3E%3D24.0.0-339933?logo=node.js&logoColor=white)](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 repository is also published as `@hagicode/hagitask` (Node.js 20 or newer).
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). The CLI is the new reusable validator; Contrib and Community
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, and are owned by different producers.
53
+ points in the pipeline.
68
54
 
69
- | Layer | Schemas | Validates | Produced by |
70
- | --- | --- | --- | --- |
71
- | Package schemas | `schemas/task-preset-plugin/*.schema.json` | the JSON files inside a preset or community package (`manifest.json`, `frontend/*`, `backend/*`, `locales/*`) | contributors, by hand |
72
- | Community discovery schema | `schemas/community-index-v1.schema.json` | the published `/index.json` catalog | `hagitask-site` build |
73
- | Community detail schema | `schemas/community-task-detail-v1.schema.json` | each published `/tasks/<taskId>.json` document | `hagitask-site` build |
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, so contributors never need files from
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,110 +106,126 @@ 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
- ## Publication Data Flow
136
-
137
- ```mermaid
138
- flowchart LR
139
- SRC["Community package source<br/>data/&lt;taskId&gt;/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/&lt;taskId&gt;.json"]
145
- ZIP["/packages/&lt;taskId&gt;.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
- How source edits reach the published documents:
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
- | Source change | Affected published fields |
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
- ## Generated Output Is Not Editable
127
+ ```handlebars
128
+ {{#unless omitNonInteractiveHints}}
129
+ ## Run mode
130
+ This prompt is running in a non-interactive environment.
131
+ {{/unless}}
132
+ ```
170
133
 
171
- `/index.json`, `/tasks/<taskId>.json`, and `/packages/<taskId>.zip` are produced from
172
- scratch on every site build. They are not stored in any repository as editable source and
173
- hand edits are discarded on the next publish. The only way to change a published field is
174
- to change the package file it is derived from.
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
- When schema validation fails:
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
- 1. Read which document failed. A `task-preset-plugin` failure points at a package file you
179
- authored; a `community-index-v1` or `community-task-detail-v1` failure means the site
180
- build normalized your source into something that violates the publication contract.
181
- 2. Fix the source package file. Do not relax `$schema`, delete the `$schema` reference,
182
- skip validation, or patch the generated output.
183
- 3. Re-run the site build to confirm the fix.
184
- 4. If the package data is genuinely correct and the schema is wrong, change the schema
185
- **here**, in this repository, as a deliberate contract change.
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/`). This means the backend can load migrated packages without a
193
- HagiTask-specific adapter.
196
+ `store-page/`).
194
197
 
195
198
  Currently shipped packages:
196
199
 
197
200
  - `normal-session`
198
201
  - `research-investigation`
199
202
 
200
- `claude-md-update`, `goal`, `last30days`, `openspec-spec-compress`, `ponytail`, and
203
+ `agents-md-update`, `goal`, `last30days`, `openspec-spec-compress`, `ponytail`, and
201
204
  `ui-master` are published as community tasks and live in
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
- HagiTask owns the Schema and shipped preset source. Preset packages use the loader-compatible
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
- npm run validate
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. It is
232
- intentionally package-local so the same command can run in a clean checkout without
233
- depending on Core or site-generated output.
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. This README remains the technical reference for Schema ownership,
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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"}
package/dist/index.d.ts CHANGED
@@ -1,10 +1,10 @@
1
1
  export type { DiscoveredPackage, DiscoveryResult } from './validation/package-discovery.js';
2
2
  export type { ValidationError, ValidationResult } from './validation/diagnostics.js';
3
3
  export declare const PACKAGE_NAME = "@hagicode/hagitask";
4
- export declare const PACKAGE_VERSION = "0.1.0";
4
+ export declare const PACKAGE_VERSION: string;
5
5
  export declare const packageMetadata: {
6
6
  readonly name: "@hagicode/hagitask";
7
- readonly version: "0.1.0";
7
+ readonly version: string;
8
8
  };
9
9
  export interface ValidateOptions {
10
10
  /** Override the directory containing the published schemas. */
package/dist/index.js CHANGED
@@ -1,9 +1,20 @@
1
+ import { readFileSync } from 'node:fs';
1
2
  import { dirname, resolve } from 'node:path';
2
3
  import { fileURLToPath } from 'node:url';
3
4
  import { discoverPackages } from './validation/package-discovery.js';
4
5
  import { validateDiscoveredPackages } from './validation/package-validator.js';
6
+ function readPackageVersion() {
7
+ try {
8
+ const packagePath = resolve(dirname(fileURLToPath(import.meta.url)), '..', 'package.json');
9
+ const version = JSON.parse(readFileSync(packagePath, 'utf8')).version;
10
+ return typeof version === 'string' ? version : '0.1.0';
11
+ }
12
+ catch {
13
+ return '0.1.0';
14
+ }
15
+ }
5
16
  export const PACKAGE_NAME = '@hagicode/hagitask';
6
- export const PACKAGE_VERSION = '0.1.0';
17
+ export const PACKAGE_VERSION = readPackageVersion();
7
18
  export const packageMetadata = {
8
19
  name: PACKAGE_NAME,
9
20
  version: PACKAGE_VERSION,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AAI/E,MAAM,CAAC,MAAM,YAAY,GAAG,oBAAoB,CAAC;AACjD,MAAM,CAAC,MAAM,eAAe,GAAG,OAAO,CAAC;AACvC,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,IAAI,EAAE,YAAY;IAClB,OAAO,EAAE,eAAe;CAChB,CAAC;AAOX,MAAM,UAAU,gBAAgB,CAC9B,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,EAC1B,UAA2B,EAAE;IAE7B,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACjC,MAAM,SAAS,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACzC,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAClG,IAAI,SAAS,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,OAAO;YACL,QAAQ,EAAE,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;YACzD,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;gBACzC,SAAS,EAAE,EAAE;gBACb,IAAI,EAAE,IAAI;gBACV,KAAK,EAAE,MAAM;gBACb,OAAO;aACR,CAAC,CAAC;YACH,KAAK,EAAE,KAAK;SACb,CAAC;IACJ,CAAC;IACD,OAAO,0BAA0B,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;AAC3E,CAAC;AAED,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,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,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AAI/E,SAAS,kBAAkB;IACzB,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,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;QACtE,OAAO,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IACzD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,oBAAoB,CAAC;AACjD,MAAM,CAAC,MAAM,eAAe,GAAG,kBAAkB,EAAE,CAAC;AACpD,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,IAAI,EAAE,YAAY;IAClB,OAAO,EAAE,eAAe;CAChB,CAAC;AAOX,MAAM,UAAU,gBAAgB,CAC9B,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,EAC1B,UAA2B,EAAE;IAE7B,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACjC,MAAM,SAAS,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACzC,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAClG,IAAI,SAAS,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,OAAO;YACL,QAAQ,EAAE,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;YACzD,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;gBACzC,SAAS,EAAE,EAAE;gBACb,IAAI,EAAE,IAAI;gBACV,KAAK,EAAE,MAAM;gBACb,OAAO;aACR,CAAC,CAAC;YACH,KAAK,EAAE,KAAK;SACb,CAAC;IACJ,CAAC;IACD,OAAO,0BAA0B,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;AAC3E,CAAC;AAED,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC"}
@@ -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.1.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,16 +22,43 @@
22
22
  "README.md"
23
23
  ],
24
24
  "engines": {
25
- "node": ">=20"
25
+ "node": ">=24.0.0"
26
+ },
27
+ "repository": {
28
+ "type": "git",
29
+ "url": "git+https://github.com/HagiCode-org/hagitask.git"
30
+ },
31
+ "homepage": "https://github.com/HagiCode-org/hagitask#readme",
32
+ "bugs": {
33
+ "url": "https://github.com/HagiCode-org/hagitask/issues"
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"
26
49
  },
27
50
  "publishConfig": {
28
- "access": "public"
51
+ "access": "public",
52
+ "provenance": true,
53
+ "registry": "https://registry.npmjs.org/"
29
54
  },
30
55
  "scripts": {
31
- "build": "tsc -p tsconfig.json",
32
- "test": "npm run build && node --test test/*.test.mjs",
33
- "validate": "npm run build && node dist/cli.js validate .",
34
- "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"
35
62
  },
36
63
  "dependencies": {
37
64
  "ajv": "^8.17.1",
@@ -39,6 +66,7 @@
39
66
  },
40
67
  "devDependencies": {
41
68
  "@types/node": "^24.5.2",
42
- "typescript": "^5.9.3"
43
- }
69
+ "typescript": "^6.0.3"
70
+ },
71
+ "packageManager": "pnpm@12.16.1"
44
72
  }