agentweaver 0.1.17 → 0.1.19
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/README.md +112 -23
- package/dist/artifacts.js +41 -0
- package/dist/index.js +258 -29
- package/dist/interactive/controller.js +323 -13
- package/dist/interactive/ink/index.js +2 -2
- package/dist/interactive/state.js +10 -0
- package/dist/interactive/web/index.js +326 -0
- package/dist/interactive/web/protocol.js +160 -0
- package/dist/interactive/web/server.js +1011 -0
- package/dist/interactive/web/static/app.js +1580 -0
- package/dist/interactive/web/static/index.html +114 -0
- package/dist/interactive/web/static/styles.css +2 -0
- package/dist/interactive/web/static/styles.input.css +849 -0
- package/dist/pipeline/flow-catalog.js +4 -0
- package/dist/pipeline/flow-specs/auto-common-guided.json +313 -0
- package/dist/pipeline/flow-specs/auto-common.json +3 -1
- package/dist/pipeline/flow-specs/design-review/design-review-loop.json +2 -0
- package/dist/pipeline/flow-specs/design-review.json +2 -0
- package/dist/pipeline/flow-specs/implement.json +3 -1
- package/dist/pipeline/flow-specs/plan.json +4 -0
- package/dist/pipeline/flow-specs/playbook-init.json +199 -0
- package/dist/pipeline/flow-specs/review/review-fix.json +3 -1
- package/dist/pipeline/flow-specs/review/review-loop.json +4 -0
- package/dist/pipeline/flow-specs/review/review.json +2 -0
- package/dist/pipeline/node-registry.js +45 -0
- package/dist/pipeline/nodes/flow-run-node.js +13 -1
- package/dist/pipeline/nodes/playbook-ensure-node.js +115 -0
- package/dist/pipeline/nodes/playbook-inventory-node.js +51 -0
- package/dist/pipeline/nodes/playbook-questions-form-node.js +166 -0
- package/dist/pipeline/nodes/playbook-write-node.js +243 -0
- package/dist/pipeline/nodes/project-guidance-node.js +69 -0
- package/dist/pipeline/prompt-registry.js +4 -1
- package/dist/pipeline/prompt-runtime.js +6 -2
- package/dist/pipeline/spec-types.js +19 -0
- package/dist/pipeline/value-resolver.js +39 -1
- package/dist/playbook/practice-candidates.js +12 -0
- package/dist/playbook/repo-inventory.js +208 -0
- package/dist/prompts.js +31 -0
- package/dist/runtime/artifact-catalog.js +379 -0
- package/dist/runtime/playbook.js +485 -0
- package/dist/runtime/project-guidance.js +339 -0
- package/dist/structured-artifact-schema-registry.js +8 -0
- package/dist/structured-artifact-schemas.json +235 -0
- package/dist/structured-artifacts.js +7 -1
- package/docs/declarative-workflows.md +565 -0
- package/docs/features.md +77 -0
- package/docs/playbook.md +327 -0
- package/package.json +8 -3
package/docs/playbook.md
ADDED
|
@@ -0,0 +1,327 @@
|
|
|
1
|
+
# Project playbook
|
|
2
|
+
|
|
3
|
+
The project playbook lives inside the repository and describes stable practices, examples, and templates that AgentWeaver validates and uses when building compact project guidance.
|
|
4
|
+
|
|
5
|
+
If the repository ignores runtime AgentWeaver state, keep `.agentweaver/playbook/` explicitly tracked. A typical `.gitignore` setup ignores other project-local AgentWeaver files while allowing the playbook:
|
|
6
|
+
|
|
7
|
+
```gitignore
|
|
8
|
+
.agentweaver/*
|
|
9
|
+
!.agentweaver/playbook/
|
|
10
|
+
!.agentweaver/playbook/**
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Structure
|
|
14
|
+
|
|
15
|
+
Minimal structure:
|
|
16
|
+
|
|
17
|
+
```text
|
|
18
|
+
.agentweaver/playbook/
|
|
19
|
+
manifest.yaml
|
|
20
|
+
project.md
|
|
21
|
+
practices/
|
|
22
|
+
typescript-runtime.md
|
|
23
|
+
examples/
|
|
24
|
+
validation-boundary.md
|
|
25
|
+
templates/
|
|
26
|
+
implementation-note.md
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
`manifest.yaml` is the root file for playbook format version 1. All paths in the manifest are relative to `.agentweaver/playbook/` and must not escape that directory.
|
|
30
|
+
|
|
31
|
+
## manifest.yaml
|
|
32
|
+
|
|
33
|
+
Minimal example:
|
|
34
|
+
|
|
35
|
+
```yaml
|
|
36
|
+
version: 1
|
|
37
|
+
project:
|
|
38
|
+
name: AgentWeaver
|
|
39
|
+
stack: [node]
|
|
40
|
+
languages: [typescript]
|
|
41
|
+
frameworks: [node]
|
|
42
|
+
context_budgets:
|
|
43
|
+
plan: 1200
|
|
44
|
+
design_review: 1200
|
|
45
|
+
implement: 2400
|
|
46
|
+
review: 1200
|
|
47
|
+
repair: 1200
|
|
48
|
+
practices:
|
|
49
|
+
globs: ["practices/*.md"]
|
|
50
|
+
examples:
|
|
51
|
+
globs: ["examples/*.md"]
|
|
52
|
+
templates:
|
|
53
|
+
paths: ["templates/implementation-note.md"]
|
|
54
|
+
always_include: ["project.md"]
|
|
55
|
+
selection:
|
|
56
|
+
include_examples: true
|
|
57
|
+
max_examples: 3
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
Supported phases for `context_budgets` and markdown frontmatter:
|
|
61
|
+
|
|
62
|
+
- `plan`
|
|
63
|
+
- `design_review`
|
|
64
|
+
- `implement`
|
|
65
|
+
- `review`
|
|
66
|
+
- `repair`
|
|
67
|
+
|
|
68
|
+
`practices`, `examples`, and `templates` support `paths` and `globs` sections. `always_include` contains files that must exist and are usually used as baseline project context.
|
|
69
|
+
|
|
70
|
+
`selection.include_examples` is a boolean. `selection.max_examples` is a non-negative integer.
|
|
71
|
+
|
|
72
|
+
## project.md
|
|
73
|
+
|
|
74
|
+
`project.md` contains concise human-readable project context: purpose, key constraints, architecture agreements, and important commands. The file is validated as existing markdown and can be included in guidance through `always_include`.
|
|
75
|
+
|
|
76
|
+
## Practices
|
|
77
|
+
|
|
78
|
+
Files under `practices/*.md` must start with YAML frontmatter:
|
|
79
|
+
|
|
80
|
+
```markdown
|
|
81
|
+
---
|
|
82
|
+
id: practice.runtime-validation
|
|
83
|
+
title: Runtime boundary validation
|
|
84
|
+
phases: [implement, review]
|
|
85
|
+
applies_to:
|
|
86
|
+
languages: [typescript]
|
|
87
|
+
frameworks: [node]
|
|
88
|
+
globs: ["src/runtime/**/*.ts"]
|
|
89
|
+
keywords: [validation, parsing]
|
|
90
|
+
priority: 10
|
|
91
|
+
severity: must
|
|
92
|
+
related_examples: [example.playbook-validation]
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
Validate user-authored structured files at the runtime boundary. Error messages should name the file, the field path, and the fix.
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
Required fields:
|
|
99
|
+
|
|
100
|
+
- `id`: unique identifier for a practice or example
|
|
101
|
+
- `title`: human-readable title
|
|
102
|
+
|
|
103
|
+
Optional fields:
|
|
104
|
+
|
|
105
|
+
- `phases`: array of supported phases
|
|
106
|
+
- `applies_to.languages`: array of languages
|
|
107
|
+
- `applies_to.frameworks`: array of frameworks
|
|
108
|
+
- `applies_to.globs`: array of glob patterns
|
|
109
|
+
- `applies_to.keywords`: array of keywords
|
|
110
|
+
- `priority`: non-negative integer
|
|
111
|
+
- `severity`: one of `must`, `should`, or `info`
|
|
112
|
+
- `related_practices`: array of existing ids
|
|
113
|
+
- `related_examples`: array of existing ids
|
|
114
|
+
|
|
115
|
+
Identifiers must be unique across practices and examples. References in `related_practices` and `related_examples` must point to existing ids.
|
|
116
|
+
|
|
117
|
+
## Examples
|
|
118
|
+
|
|
119
|
+
Files under `examples/*.md` use the same frontmatter contract as practices:
|
|
120
|
+
|
|
121
|
+
```markdown
|
|
122
|
+
---
|
|
123
|
+
id: example.playbook-validation
|
|
124
|
+
title: Playbook validation example
|
|
125
|
+
phases: [implement]
|
|
126
|
+
severity: should
|
|
127
|
+
related_practices: [practice.runtime-validation]
|
|
128
|
+
---
|
|
129
|
+
|
|
130
|
+
Keep long examples in separate files and reference them by path instead of copying them into every prompt.
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
Long examples should live in separate files under `examples/` or `templates/`. This keeps the playbook portable and prevents prompts from receiving unnecessary text unless the example is directly relevant.
|
|
134
|
+
|
|
135
|
+
## Rule maintenance and versioning
|
|
136
|
+
|
|
137
|
+
The playbook is maintained as repository content. Treat every practice, example, and template as reviewed source material: changes should be made through normal Git history, reviewed in pull requests, and validated before they are used by guided workflows.
|
|
138
|
+
|
|
139
|
+
### Adding a new rule
|
|
140
|
+
|
|
141
|
+
Add a new rule when the project has a stable practice that should influence future planning, implementation, review, or repair work. A rule should describe a repeatable engineering expectation, not a one-off task decision.
|
|
142
|
+
|
|
143
|
+
Recommended process:
|
|
144
|
+
|
|
145
|
+
1. Create a new markdown file under `.agentweaver/playbook/practices/`.
|
|
146
|
+
2. Give the rule a stable, unique `id` using the `practice.<domain-or-topic>` pattern.
|
|
147
|
+
3. Add a concise `title`, relevant `phases`, `applies_to` selectors, `priority`, and `severity`.
|
|
148
|
+
4. Write the body as direct guidance. Prefer concrete expectations, constraints, and examples of what good output should do.
|
|
149
|
+
5. Add `related_examples` when there is a concrete example file that demonstrates the rule.
|
|
150
|
+
6. Ensure the file is included by `manifest.yaml`, either through `practices.globs` or an explicit `practices.paths` entry.
|
|
151
|
+
7. Run validation or a guided smoke check before merging.
|
|
152
|
+
|
|
153
|
+
Example:
|
|
154
|
+
|
|
155
|
+
```markdown
|
|
156
|
+
---
|
|
157
|
+
id: practice.api-error-contracts
|
|
158
|
+
title: API error contracts
|
|
159
|
+
phases: [implement, review]
|
|
160
|
+
applies_to:
|
|
161
|
+
languages: [typescript]
|
|
162
|
+
globs: ["src/**/*.ts"]
|
|
163
|
+
keywords: [api, error, validation]
|
|
164
|
+
priority: 10
|
|
165
|
+
severity: must
|
|
166
|
+
related_examples: [example.api-error-contracts]
|
|
167
|
+
---
|
|
168
|
+
|
|
169
|
+
Return typed API errors at runtime boundaries. Error responses should preserve a stable machine-readable code and include enough context for the caller to recover.
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
Use `severity` deliberately:
|
|
173
|
+
|
|
174
|
+
- `must`: required project rule; violations should be treated as defects.
|
|
175
|
+
- `should`: preferred practice; deviations are allowed when the task gives a clear reason.
|
|
176
|
+
- `info`: contextual guidance; useful for planning or orientation but not a strict requirement.
|
|
177
|
+
|
|
178
|
+
Use `priority` to resolve attention when many rules match the same task. Higher-priority rules are stronger candidates for compact guidance, but priority should not be used to compensate for vague selectors.
|
|
179
|
+
|
|
180
|
+
### Updating an existing rule
|
|
181
|
+
|
|
182
|
+
Update an existing rule when the underlying practice is still the same but the wording, scope, examples, or applicability need to become clearer.
|
|
183
|
+
|
|
184
|
+
Keep the existing `id` when:
|
|
185
|
+
|
|
186
|
+
- the rule describes the same engineering expectation;
|
|
187
|
+
- existing `related_practices` or `related_examples` links should continue to mean the same thing;
|
|
188
|
+
- previous references in reviews, pull requests, or generated guidance should remain understandable.
|
|
189
|
+
|
|
190
|
+
Safe updates include:
|
|
191
|
+
|
|
192
|
+
- clarifying the body text;
|
|
193
|
+
- adding or removing `keywords`;
|
|
194
|
+
- narrowing or broadening `applies_to.globs`;
|
|
195
|
+
- adding a related example;
|
|
196
|
+
- changing `severity` after team agreement;
|
|
197
|
+
- adjusting `priority` when guidance selection is too noisy or too weak.
|
|
198
|
+
|
|
199
|
+
Do not silently change a rule into a different rule while keeping the old `id`. If the new guidance would surprise someone who followed the previous rule, treat it as a breaking change.
|
|
200
|
+
|
|
201
|
+
### Breaking changes
|
|
202
|
+
|
|
203
|
+
A playbook rule change is breaking when it changes the expected behavior of future agent work in a way that can invalidate earlier assumptions.
|
|
204
|
+
|
|
205
|
+
Examples of breaking changes:
|
|
206
|
+
|
|
207
|
+
- changing a recommendation from `should` to `must`;
|
|
208
|
+
- replacing the meaning of a `practice.*` id;
|
|
209
|
+
- broadening `applies_to.globs` so the rule affects a new major part of the codebase;
|
|
210
|
+
- removing an exception that existing modules relied on;
|
|
211
|
+
- deleting a rule that other rules or examples reference.
|
|
212
|
+
|
|
213
|
+
For breaking changes:
|
|
214
|
+
|
|
215
|
+
1. Prefer creating a new `id` when the meaning changes substantially.
|
|
216
|
+
2. Update or remove all `related_practices` and `related_examples` references.
|
|
217
|
+
3. Mention the migration path in the pull request.
|
|
218
|
+
4. Keep the change scoped to the affected rule files and examples.
|
|
219
|
+
5. Run a guided smoke check for at least one affected phase.
|
|
220
|
+
|
|
221
|
+
If a rule is replaced, keep the old rule temporarily only when it is still useful for compatibility. Lower its `severity` or narrow its `applies_to` selectors instead of leaving conflicting guidance active.
|
|
222
|
+
|
|
223
|
+
### Removing a rule
|
|
224
|
+
|
|
225
|
+
Remove a rule only when it is obsolete, misleading, duplicated by a better rule, or no longer matches the project architecture.
|
|
226
|
+
|
|
227
|
+
Removal process:
|
|
228
|
+
|
|
229
|
+
1. Search for the rule `id` across `.agentweaver/playbook/`.
|
|
230
|
+
2. Remove or update all `related_practices` and `related_examples` references.
|
|
231
|
+
3. Remove the file from `practices.paths` if the manifest lists files explicitly.
|
|
232
|
+
4. If the manifest uses `practices.globs`, deleting the file is enough, but the remaining glob must still match at least one file.
|
|
233
|
+
5. Run validation or a guided smoke check.
|
|
234
|
+
6. Explain in the pull request why the rule is obsolete and what replaces it, if anything.
|
|
235
|
+
|
|
236
|
+
### Examples and templates
|
|
237
|
+
|
|
238
|
+
Examples should stay path-addressable and focused. Add a new example when a rule benefits from a concrete implementation pattern, review finding, prompt fragment, or expected artifact shape.
|
|
239
|
+
|
|
240
|
+
Keep examples separate from rule bodies when they are long. The guidance builder can inline compact entries, but long examples should remain referenced by file path so prompts do not receive unnecessary text.
|
|
241
|
+
|
|
242
|
+
Templates should describe reusable artifact shapes or prompt fragments. Update templates with the same compatibility discipline as rules: preserve the path when the template has the same purpose, and create a new file when the template represents a different contract.
|
|
243
|
+
|
|
244
|
+
### Versioning policy
|
|
245
|
+
|
|
246
|
+
`manifest.yaml` contains `version: 1`, but this is the playbook format version, not the version of the project rules. Do not increment it when adding, editing, or removing practices, examples, or templates. The runtime currently accepts only format version `1`; changing it to another value makes the playbook invalid.
|
|
247
|
+
|
|
248
|
+
Rule content is versioned through Git:
|
|
249
|
+
|
|
250
|
+
- each playbook change should be committed like normal source code;
|
|
251
|
+
- pull requests should describe the user-visible workflow impact;
|
|
252
|
+
- breaking rule changes should be called out explicitly;
|
|
253
|
+
- related code, tests, examples, and templates should be updated in the same change when they depend on the rule;
|
|
254
|
+
- generated or external evidence should be referenced, not copied into machine-readable artifacts unless it is intentionally stored as source text.
|
|
255
|
+
|
|
256
|
+
Use commit subjects that describe the playbook behavior change, for example:
|
|
257
|
+
|
|
258
|
+
```text
|
|
259
|
+
Add API error contract playbook rule
|
|
260
|
+
Clarify runtime validation guidance
|
|
261
|
+
Retire obsolete Docker workflow rule
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
If the project needs a human-readable playbook release history, add a normal markdown changelog such as `.agentweaver/playbook/CHANGELOG.md`. This changelog is optional repository documentation; it is not part of the runtime playbook contract unless it is also referenced from `manifest.yaml`.
|
|
265
|
+
|
|
266
|
+
### Review checklist
|
|
267
|
+
|
|
268
|
+
Before merging a playbook change, check:
|
|
269
|
+
|
|
270
|
+
- every practice and example has a unique `id`;
|
|
271
|
+
- every `related_practices` and `related_examples` entry points to an existing id;
|
|
272
|
+
- all paths are relative to `.agentweaver/playbook/`;
|
|
273
|
+
- `manifest.yaml` still uses `version: 1`;
|
|
274
|
+
- all `phases` and `severity` values are supported;
|
|
275
|
+
- selectors are specific enough to avoid unrelated guidance;
|
|
276
|
+
- long examples are stored as files instead of copied into multiple rule bodies;
|
|
277
|
+
- the change has been validated with `npm run check` and at least one relevant CLI smoke test when possible.
|
|
278
|
+
|
|
279
|
+
## Generation and execution
|
|
280
|
+
|
|
281
|
+
Create or update the playbook with:
|
|
282
|
+
|
|
283
|
+
```bash
|
|
284
|
+
agentweaver playbook-init
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
Use this command to accept the generated layout non-interactively:
|
|
288
|
+
|
|
289
|
+
```bash
|
|
290
|
+
agentweaver playbook-init --accept-playbook-draft
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
The guided workflow uses the playbook through:
|
|
294
|
+
|
|
295
|
+
```bash
|
|
296
|
+
agentweaver auto-common-guided --help-phases
|
|
297
|
+
agentweaver auto-common-guided DEMO-1234
|
|
298
|
+
agentweaver auto-common-guided --accept-playbook-draft DEMO-1234
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
`--accept-playbook-draft` in `auto-common-guided` is used for the missing-manifest scenario: the workflow explicitly accepts generated manifest-based playbook content before planning. Without this flag, a missing manifest stops the non-interactive guided run before the LLM prompt.
|
|
302
|
+
|
|
303
|
+
## Validation errors
|
|
304
|
+
|
|
305
|
+
The validator must fail clearly in these cases:
|
|
306
|
+
|
|
307
|
+
- `.agentweaver/playbook/manifest.yaml` is missing
|
|
308
|
+
- YAML in the manifest or frontmatter is syntactically invalid
|
|
309
|
+
- `version` is not `1`
|
|
310
|
+
- a required file from `paths`, `globs`, `always_include`, or `project.md` is missing
|
|
311
|
+
- a path is absolute or escapes `.agentweaver/playbook/`
|
|
312
|
+
- a phase is not in the supported phase list
|
|
313
|
+
- `severity` is not `must`, `should`, or `info`
|
|
314
|
+
- ids are duplicated
|
|
315
|
+
- a relationship reference points to an unknown id
|
|
316
|
+
|
|
317
|
+
## Compact project guidance
|
|
318
|
+
|
|
319
|
+
`auto-common-guided` uses only `.agentweaver/playbook/manifest.yaml` as the canonical source of project rules. Old `.agentweaver/playbook/playbook.json` and `.agentweaver/playbook/playbook.md` files are not used as semantic fallbacks.
|
|
320
|
+
|
|
321
|
+
Before the `plan`, `design-review`, `implement`, `review`, and `repair/review-fix` phases, the workflow writes structured `project-guidance/v1` JSON and derived markdown. Canonical artifact names are `project-guidance-plan`, `project-guidance-design-review`, `project-guidance-implement`, `project-guidance-review`, and `project-guidance-repair-review-fix`.
|
|
322
|
+
|
|
323
|
+
Guidance selection considers the phase, `always_include`, `priority`, `severity`, keywords, glob paths, languages, and frameworks from task context. Budgets are approximate: `plan` 1200, `design-review` 1000, `implement` 1400, `review` 1000, and `repair/review-fix` 1000 tokens. The default inline-entry threshold is 300 approximate tokens. Long examples remain file references instead of being copied into prompts.
|
|
324
|
+
|
|
325
|
+
If `manifest.yaml` is missing, the runtime can create an explicit `missing_playbook` artifact where that mode is allowed. In `auto-common-guided`, a missing manifest stops the non-interactive workflow before planning by default unless the user passes `--accept-playbook-draft`. If the manifest is invalid, the standard `fail_before_prompt` policy stops execution before the LLM prompt; `invalid_playbook` is intended only for explicit diagnostic mode.
|
|
326
|
+
|
|
327
|
+
Project guidance is additional context. It does not replace task context, design, plan, QA, design-review, or review JSON, which remain the sources of truth. There is no skills integration yet; the playbook generator must remain evidence-backed. Guided prompts receive compact context, and full examples are opened only when they are directly relevant to the current phase.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agentweaver",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.19",
|
|
4
4
|
"description": "CLI orchestrator for Jira/Codex engineering workflows",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"agent",
|
|
@@ -43,7 +43,9 @@
|
|
|
43
43
|
"packageManager": "npm@9.2.0",
|
|
44
44
|
"preferGlobal": true,
|
|
45
45
|
"scripts": {
|
|
46
|
-
"build": "tsc -p tsconfig.json && node scripts/copy-flow-specs.mjs",
|
|
46
|
+
"build": "npm run build:web-css && tsc -p tsconfig.json && node scripts/copy-flow-specs.mjs",
|
|
47
|
+
"build:web-css": "tailwindcss -i ./src/interactive/web/static/styles.input.css -o ./src/interactive/web/static/styles.css --minify",
|
|
48
|
+
"dev:web-css": "tailwindcss -i ./src/interactive/web/static/styles.input.css -o ./src/interactive/web/static/styles.css --watch",
|
|
47
49
|
"check": "tsc -p tsconfig.json --noEmit",
|
|
48
50
|
"prepublishOnly": "npm run check && npm run build",
|
|
49
51
|
"pack:check": "npm pack --dry-run",
|
|
@@ -54,9 +56,11 @@
|
|
|
54
56
|
"node": ">=18.19.0"
|
|
55
57
|
},
|
|
56
58
|
"devDependencies": {
|
|
59
|
+
"@tailwindcss/cli": "^4.2.4",
|
|
57
60
|
"@types/node": "^20.17.30",
|
|
58
61
|
"@types/react": "^18.3.12",
|
|
59
62
|
"@types/semver": "^7.7.1",
|
|
63
|
+
"tailwindcss": "^4.2.4",
|
|
60
64
|
"ts-node": "^10.9.2",
|
|
61
65
|
"typescript": "^5.8.3",
|
|
62
66
|
"vitest": "^4.1.4"
|
|
@@ -65,6 +69,7 @@
|
|
|
65
69
|
"ink": "^5.2.1",
|
|
66
70
|
"markdown-it": "^14.1.1",
|
|
67
71
|
"react": "^18.3.1",
|
|
68
|
-
"semver": "^7.7.4"
|
|
72
|
+
"semver": "^7.7.4",
|
|
73
|
+
"yaml": "^2.8.1"
|
|
69
74
|
}
|
|
70
75
|
}
|