agentic-forge 0.0.0 → 0.7.1
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 -21
- package/README.md +64 -24
- package/{src/claude → dist/authoring}/.claude/skills/workflow-builder/SKILL.md +2 -2
- package/{src/claude → dist/authoring}/.claude/skills/workflow-builder/references/REFERENCE.md +9 -3
- package/{src/claude → dist/authoring}/.claude/skills/workflow-builder/references/workflow-example.yaml +15 -8
- package/dist/checkpoints/manager.d.ts +5 -0
- package/dist/checkpoints/manager.js +87 -0
- package/dist/checkpoints/manager.js.map +1 -0
- package/{src → dist}/claude/.claude/skills/analyze/SKILL.md +1 -1
- package/{src → dist}/claude/.claude/skills/create-checkpoint/SKILL.md +1 -1
- package/{src → dist}/claude/.claude/skills/create-log/SKILL.md +1 -1
- package/{src → dist}/claude/.claude/skills/fix-analyze/SKILL.md +1 -1
- package/{src → dist}/claude/.claude/skills/git-branch/SKILL.md +1 -1
- package/{src → dist}/claude/.claude/skills/git-commit/SKILL.md +1 -1
- package/{src → dist}/claude/.claude/skills/git-pr/SKILL.md +1 -1
- package/{src → dist}/claude/.claude/skills/sdlc-plan/SKILL.md +1 -1
- package/{src → dist}/claude/.claude/skills/sdlc-review/SKILL.md +1 -1
- package/dist/cli.d.ts +3 -0
- package/dist/cli.js +173 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/authoring-dir.d.ts +2 -0
- package/dist/commands/authoring-dir.js +9 -0
- package/dist/commands/authoring-dir.js.map +1 -0
- package/dist/commands/config-cmd.d.ts +2 -0
- package/dist/commands/config-cmd.js +30 -0
- package/dist/commands/config-cmd.js.map +1 -0
- package/{src/commands/index.ts → dist/commands/index.d.ts} +2 -10
- package/dist/commands/index.js +14 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/init.d.ts +6 -0
- package/dist/commands/init.js +83 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/release-notes.d.ts +5 -0
- package/dist/commands/release-notes.js +68 -0
- package/dist/commands/release-notes.js.map +1 -0
- package/dist/commands/resume.d.ts +5 -0
- package/dist/commands/resume.js +79 -0
- package/dist/commands/resume.js.map +1 -0
- package/dist/commands/run.d.ts +27 -0
- package/dist/commands/run.js +243 -0
- package/dist/commands/run.js.map +1 -0
- package/dist/commands/shortcuts.d.ts +2 -0
- package/dist/commands/shortcuts.js +11 -0
- package/dist/commands/shortcuts.js.map +1 -0
- package/dist/commands/skills-dir.d.ts +2 -0
- package/dist/commands/skills-dir.js +9 -0
- package/dist/commands/skills-dir.js.map +1 -0
- package/dist/commands/status.d.ts +4 -0
- package/dist/commands/status.js +99 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/update.d.ts +4 -0
- package/dist/commands/update.js +65 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/commands/version.d.ts +3 -0
- package/dist/commands/version.js +26 -0
- package/dist/commands/version.js.map +1 -0
- package/dist/commands/workflows.d.ts +4 -0
- package/dist/commands/workflows.js +111 -0
- package/dist/commands/workflows.js.map +1 -0
- package/dist/config.d.ts +8 -0
- package/dist/config.js +110 -0
- package/dist/config.js.map +1 -0
- package/dist/console.d.ts +103 -0
- package/dist/console.js +670 -0
- package/dist/console.js.map +1 -0
- package/dist/executor.d.ts +27 -0
- package/dist/executor.js +236 -0
- package/dist/executor.js.map +1 -0
- package/dist/git/worktree.d.ts +23 -0
- package/dist/git/worktree.js +170 -0
- package/dist/git/worktree.js.map +1 -0
- package/dist/logging/logger.d.ts +27 -0
- package/dist/logging/logger.js +69 -0
- package/dist/logging/logger.js.map +1 -0
- package/dist/orchestrator.d.ts +44 -0
- package/dist/orchestrator.js +587 -0
- package/dist/orchestrator.js.map +1 -0
- package/dist/parser.d.ts +17 -0
- package/dist/parser.js +184 -0
- package/dist/parser.js.map +1 -0
- package/dist/progress.d.ts +29 -0
- package/dist/progress.js +275 -0
- package/dist/progress.js.map +1 -0
- package/dist/ralph-loop.d.ts +26 -0
- package/dist/ralph-loop.js +194 -0
- package/dist/ralph-loop.js.map +1 -0
- package/dist/renderer.d.ts +15 -0
- package/dist/renderer.js +123 -0
- package/dist/renderer.js.map +1 -0
- package/dist/runner.d.ts +84 -0
- package/dist/runner.js +529 -0
- package/dist/runner.js.map +1 -0
- package/dist/signal-manager.d.ts +16 -0
- package/dist/signal-manager.js +50 -0
- package/dist/signal-manager.js.map +1 -0
- package/dist/steps/base.d.ts +28 -0
- package/dist/steps/base.js +23 -0
- package/dist/steps/base.js.map +1 -0
- package/dist/steps/conditional-step.d.ts +12 -0
- package/dist/steps/conditional-step.js +106 -0
- package/dist/steps/conditional-step.js.map +1 -0
- package/{src/steps/index.ts → dist/steps/index.d.ts} +1 -9
- package/dist/steps/index.js +8 -0
- package/dist/steps/index.js.map +1 -0
- package/dist/steps/parallel-step.d.ts +11 -0
- package/dist/steps/parallel-step.js +166 -0
- package/dist/steps/parallel-step.js.map +1 -0
- package/dist/steps/prompt-step.d.ts +8 -0
- package/dist/steps/prompt-step.js +94 -0
- package/dist/steps/prompt-step.js.map +1 -0
- package/dist/steps/ralph-loop-step.d.ts +8 -0
- package/dist/steps/ralph-loop-step.js +132 -0
- package/dist/steps/ralph-loop-step.js.map +1 -0
- package/dist/steps/serial-step.d.ts +10 -0
- package/dist/steps/serial-step.js +57 -0
- package/dist/steps/serial-step.js.map +1 -0
- package/dist/types.d.ts +118 -0
- package/dist/types.js +10 -0
- package/dist/types.js.map +1 -0
- package/package.json +59 -2
- package/.gitattributes +0 -24
- package/.github/workflows/ci.yml +0 -70
- package/.markdownlint-cli2.jsonc +0 -16
- package/.prettierignore +0 -3
- package/.prettierrc +0 -6
- package/.vscode/agentic-forge.code-workspace +0 -26
- package/CHANGELOG.md +0 -100
- package/CLAUDE.md +0 -158
- package/CONTRIBUTING.md +0 -152
- package/biome.json +0 -21
- package/scripts/copy-assets.js +0 -21
- package/src/checkpoints/manager.ts +0 -119
- package/src/cli.ts +0 -182
- package/src/commands/config-cmd.ts +0 -28
- package/src/commands/init.ts +0 -96
- package/src/commands/release-notes.ts +0 -85
- package/src/commands/resume.ts +0 -103
- package/src/commands/run.ts +0 -234
- package/src/commands/shortcuts.ts +0 -11
- package/src/commands/skills-dir.ts +0 -11
- package/src/commands/status.ts +0 -112
- package/src/commands/update.ts +0 -64
- package/src/commands/version.ts +0 -27
- package/src/commands/workflows.ts +0 -129
- package/src/config.ts +0 -129
- package/src/console.ts +0 -790
- package/src/executor.ts +0 -354
- package/src/git/worktree.ts +0 -236
- package/src/logging/logger.ts +0 -95
- package/src/orchestrator.ts +0 -815
- package/src/parser.ts +0 -225
- package/src/progress.ts +0 -306
- package/src/ralph-loop.ts +0 -260
- package/src/renderer.ts +0 -164
- package/src/runner.ts +0 -634
- package/src/signal-manager.ts +0 -55
- package/src/steps/base.ts +0 -71
- package/src/steps/conditional-step.ts +0 -144
- package/src/steps/parallel-step.ts +0 -213
- package/src/steps/prompt-step.ts +0 -121
- package/src/steps/ralph-loop-step.ts +0 -186
- package/src/steps/serial-step.ts +0 -84
- package/src/types.ts +0 -141
- package/tests/config.test.ts +0 -219
- package/tests/console.test.ts +0 -506
- package/tests/executor.test.ts +0 -339
- package/tests/init.test.ts +0 -86
- package/tests/logger.test.ts +0 -110
- package/tests/parser.test.ts +0 -290
- package/tests/progress.test.ts +0 -345
- package/tests/ralph-loop.test.ts +0 -418
- package/tests/renderer.test.ts +0 -350
- package/tests/runner.test.ts +0 -497
- package/tests/setup.test.ts +0 -7
- package/tests/signal-manager.test.ts +0 -26
- package/tests/steps.test.ts +0 -412
- package/tests/worktree.test.ts +0 -411
- package/tsconfig.json +0 -18
- package/vitest.config.ts +0 -8
- /package/{src → dist}/agents/explorer.md +0 -0
- /package/{src → dist}/agents/reviewer.md +0 -0
- /package/{src → dist}/claude/.claude/skills/analyze/references/bug.md +0 -0
- /package/{src → dist}/claude/.claude/skills/analyze/references/debt.md +0 -0
- /package/{src → dist}/claude/.claude/skills/analyze/references/doc.md +0 -0
- /package/{src → dist}/claude/.claude/skills/analyze/references/security.md +0 -0
- /package/{src → dist}/claude/.claude/skills/analyze/references/style.md +0 -0
- /package/{src → dist}/claude/.claude/skills/orchestrate/SKILL.md +0 -0
- /package/{src → dist}/claude/.claude/skills/sdlc-plan/references/bug.md +0 -0
- /package/{src → dist}/claude/.claude/skills/sdlc-plan/references/chore.md +0 -0
- /package/{src → dist}/claude/.claude/skills/sdlc-plan/references/feature.md +0 -0
- /package/{src → dist}/prompts/agentic-system.md +0 -0
- /package/{src → dist}/templates/analysis/bug.md.j2 +0 -0
- /package/{src → dist}/templates/analysis/debt.md.j2 +0 -0
- /package/{src → dist}/templates/analysis/doc.md.j2 +0 -0
- /package/{src → dist}/templates/analysis/security.md.j2 +0 -0
- /package/{src → dist}/templates/analysis/style.md.j2 +0 -0
- /package/{src → dist}/templates/analysis-summary.md.j2 +0 -0
- /package/{src → dist}/templates/checkpoint.md.j2 +0 -0
- /package/{src → dist}/templates/implementation-report.md.j2 +0 -0
- /package/{src → dist}/templates/memory.md.j2 +0 -0
- /package/{src → dist}/templates/plan-bug.md.j2 +0 -0
- /package/{src → dist}/templates/plan-chore.md.j2 +0 -0
- /package/{src → dist}/templates/plan-feature.md.j2 +0 -0
- /package/{src → dist}/templates/progress.json.j2 +0 -0
- /package/{src → dist}/templates/ralph-report.md.j2 +0 -0
- /package/{src → dist}/workflows/analyze-codebase-merge.yaml +0 -0
- /package/{src → dist}/workflows/analyze-codebase.yaml +0 -0
- /package/{src → dist}/workflows/analyze-single.yaml +0 -0
- /package/{src → dist}/workflows/demo.yaml +0 -0
- /package/{src → dist}/workflows/one-shot.yaml +0 -0
- /package/{src → dist}/workflows/plan-build-review.yaml +0 -0
- /package/{src → dist}/workflows/ralph-loop.yaml +0 -0
package/LICENSE
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2025-2026 Étienne St-Pierre
|
|
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.
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025-2026 Étienne St-Pierre
|
|
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
|
@@ -45,24 +45,6 @@ pnpm install && pnpm build
|
|
|
45
45
|
npm install -g .
|
|
46
46
|
```
|
|
47
47
|
|
|
48
|
-
### Using Skills in Interactive Claude Sessions
|
|
49
|
-
|
|
50
|
-
Agentic Forge bundles 13 skills that extend Claude Code with slash commands like `/sdlc-plan`, `/analyze`, `/git-commit`, and more. To make them available in interactive sessions:
|
|
51
|
-
|
|
52
|
-
**Option 1: Pass `--add-dir` when launching Claude**
|
|
53
|
-
|
|
54
|
-
```bash
|
|
55
|
-
claude --add-dir $(agentic-forge skills-dir)
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
**Option 2: Add to `~/.claude/settings.json` permanently**
|
|
59
|
-
|
|
60
|
-
```json
|
|
61
|
-
{
|
|
62
|
-
"additionalDirectories": ["<output of agentic-forge skills-dir>"]
|
|
63
|
-
}
|
|
64
|
-
```
|
|
65
|
-
|
|
66
48
|
## Workflows
|
|
67
49
|
|
|
68
50
|
### plan-build-review (Full SDLC)
|
|
@@ -100,15 +82,46 @@ agentic-forge run analyze-codebase --var "autofix=true"
|
|
|
100
82
|
### All Commands
|
|
101
83
|
|
|
102
84
|
```bash
|
|
103
|
-
# List available workflows
|
|
104
|
-
agentic-forge workflows
|
|
105
|
-
|
|
106
85
|
# Run a workflow with variables
|
|
107
86
|
agentic-forge run <workflow> --var "key=value"
|
|
108
87
|
|
|
109
|
-
#
|
|
88
|
+
# Resume a paused or failed workflow
|
|
89
|
+
agentic-forge resume <workflow_id>
|
|
90
|
+
|
|
91
|
+
# Check workflow status
|
|
92
|
+
agentic-forge status <workflow_id>
|
|
93
|
+
|
|
94
|
+
# Cancel a running workflow
|
|
95
|
+
agentic-forge cancel <workflow_id>
|
|
96
|
+
|
|
97
|
+
# List all workflow runs (optionally filter by status)
|
|
98
|
+
agentic-forge list --status running
|
|
99
|
+
|
|
100
|
+
# Provide input to a paused workflow waiting for human response
|
|
101
|
+
agentic-forge input <workflow_id> "response text"
|
|
102
|
+
|
|
103
|
+
# Copy bundled workflow templates to your project
|
|
104
|
+
agentic-forge init
|
|
105
|
+
|
|
106
|
+
# List available workflows with descriptions
|
|
107
|
+
agentic-forge workflows
|
|
108
|
+
|
|
109
|
+
# Get or set configuration
|
|
110
|
+
agentic-forge config get <key>
|
|
111
|
+
agentic-forge config set <key> <value>
|
|
112
|
+
|
|
113
|
+
# Interactive configuration setup
|
|
114
|
+
agentic-forge configure
|
|
115
|
+
|
|
116
|
+
# Print path to bundled workflow skills directory
|
|
110
117
|
agentic-forge skills-dir
|
|
111
118
|
|
|
119
|
+
# Print path to interactive authoring skills directory
|
|
120
|
+
agentic-forge authoring-dir
|
|
121
|
+
|
|
122
|
+
# Show release notes
|
|
123
|
+
agentic-forge release-notes --latest
|
|
124
|
+
|
|
112
125
|
# Check current version
|
|
113
126
|
agentic-forge version
|
|
114
127
|
|
|
@@ -121,8 +134,10 @@ agentic-forge update
|
|
|
121
134
|
```text
|
|
122
135
|
src/
|
|
123
136
|
agents/ # Bundled agent definitions (explorer, reviewer)
|
|
124
|
-
|
|
125
|
-
skills/ #
|
|
137
|
+
authoring/.claude/ # Interactive authoring skills (workflow-builder)
|
|
138
|
+
skills/ # Skills for users to create and manage workflows
|
|
139
|
+
claude/.claude/ # Workflow execution skills loaded via --add-dir
|
|
140
|
+
skills/ # Bundled skills used by workflows
|
|
126
141
|
commands/ # CLI command implementations
|
|
127
142
|
prompts/ # System prompt templates
|
|
128
143
|
steps/ # Workflow step handlers
|
|
@@ -131,6 +146,31 @@ src/
|
|
|
131
146
|
tests/ # Vitest test suite
|
|
132
147
|
```
|
|
133
148
|
|
|
149
|
+
### Skills directories
|
|
150
|
+
|
|
151
|
+
Agentic Forge separates skills into two directories:
|
|
152
|
+
|
|
153
|
+
- **Workflow skills** (`skills-dir`) — Skills used by the workflow engine during execution. Loaded automatically when running workflows.
|
|
154
|
+
- **Authoring skills** (`authoring-dir`) — Interactive skills for users to create and manage workflows. Add them to your Claude Code session manually:
|
|
155
|
+
|
|
156
|
+
```bash
|
|
157
|
+
claude --add-dir $(agentic-forge authoring-dir)
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
#### Using the workflow-builder skill
|
|
161
|
+
|
|
162
|
+
Once the authoring skills are loaded, use the `/af-workflow-builder` slash command to create, update, explain, validate, or debug workflows:
|
|
163
|
+
|
|
164
|
+
```text
|
|
165
|
+
/af-workflow-builder create a workflow that plans and reviews a feature
|
|
166
|
+
/af-workflow-builder validate my-workflow.yaml
|
|
167
|
+
/af-workflow-builder explain how ralph-loop works
|
|
168
|
+
/af-workflow-builder update my-workflow.yaml to add a parallel step
|
|
169
|
+
/af-workflow-builder debug why my conditional always takes the else branch
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
The skill has full knowledge of the workflow schema, all step types, and bundled skills.
|
|
173
|
+
|
|
134
174
|
## Contributing
|
|
135
175
|
|
|
136
176
|
- **Bug reports and suggestions** - [Open an issue](https://github.com/e-stpierre/agentic-forge/issues) on GitHub
|
|
@@ -19,7 +19,7 @@ Create, update, explain, validate, and debug agentic-forge YAML workflows. This
|
|
|
19
19
|
|
|
20
20
|
### Values
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
Arguments: $ARGUMENTS
|
|
23
23
|
|
|
24
24
|
## Additional Resources
|
|
25
25
|
|
|
@@ -114,7 +114,7 @@ Priority: step `model` > `settings.model` > config default > `sonnet`
|
|
|
114
114
|
|
|
115
115
|
| Symptom | Likely Cause | Fix |
|
|
116
116
|
| -------------------------------------- | ---------------------------------------------- | ---------------------------------------------------------------- |
|
|
117
|
-
| "Missing required variable" | Variable not passed via
|
|
117
|
+
| "Missing required variable" | Variable not passed via CLI | Add `name=value` arg, `--var "name=value"`, or set `default` |
|
|
118
118
|
| Conditional always takes else | Condition expression evaluates to falsy | Check Jinja2 expression syntax and variable names |
|
|
119
119
|
| Ralph loop never completes | Completion JSON not output or promise mismatch | Verify `completion-promise` matches the `promise` field in JSON |
|
|
120
120
|
| Template variable shows as `{{ ... }}` | Undefined variable in lenient mode | Define the variable or enable `strict-mode: true` to catch early |
|
package/{src/claude → dist/authoring}/.claude/skills/workflow-builder/references/REFERENCE.md
RENAMED
|
@@ -57,7 +57,7 @@ settings:
|
|
|
57
57
|
|
|
58
58
|
## Variables
|
|
59
59
|
|
|
60
|
-
Define input parameters for the workflow. Passed via `--var "name=value"` on the CLI.
|
|
60
|
+
Define input parameters for the workflow. Passed as bare `key=value` args or via `--var "name=value"` on the CLI. Missing required variables are prompted interactively when running in a TTY (disable with `--no-interactive`).
|
|
61
61
|
|
|
62
62
|
| Key | Required | Type | Default | Description |
|
|
63
63
|
| ------------- | -------- | ------ | ---------- | ------------------------------------- |
|
|
@@ -398,8 +398,8 @@ outputs:
|
|
|
398
398
|
## CLI Commands
|
|
399
399
|
|
|
400
400
|
```bash
|
|
401
|
-
# Run a workflow
|
|
402
|
-
agentic-forge run <workflow
|
|
401
|
+
# Run a workflow (bare key=value args or --var flag)
|
|
402
|
+
agentic-forge run <workflow> key=value [key=value ...] [--var "key=value"] [--from-step <name>] [--no-interactive] [--terminal-output base|all]
|
|
403
403
|
|
|
404
404
|
# Resume a paused/failed workflow
|
|
405
405
|
agentic-forge resume <workflow-id>
|
|
@@ -422,6 +422,12 @@ agentic-forge workflows [-v]
|
|
|
422
422
|
# Copy bundled workflows to local project
|
|
423
423
|
agentic-forge init [--force] [--list]
|
|
424
424
|
|
|
425
|
+
# Print path to bundled workflow skills directory
|
|
426
|
+
agentic-forge skills-dir
|
|
427
|
+
|
|
428
|
+
# Print path to interactive authoring skills directory
|
|
429
|
+
agentic-forge authoring-dir
|
|
430
|
+
|
|
425
431
|
# Configuration
|
|
426
432
|
agentic-forge config get <key>
|
|
427
433
|
agentic-forge config set <key> <value>
|
|
@@ -354,24 +354,31 @@ outputs:
|
|
|
354
354
|
|
|
355
355
|
# ==================== USAGE EXAMPLES ====================
|
|
356
356
|
#
|
|
357
|
-
# Run with
|
|
357
|
+
# Run with bare key=value args (preferred):
|
|
358
|
+
# agentic-forge run workflow-example.yaml task="Add user authentication"
|
|
359
|
+
#
|
|
360
|
+
# Run with --var flag (equivalent):
|
|
358
361
|
# agentic-forge run workflow-example.yaml --var "task=Add user authentication"
|
|
359
362
|
#
|
|
360
|
-
# Run with
|
|
363
|
+
# Run with multiple variables:
|
|
361
364
|
# agentic-forge run workflow-example.yaml \
|
|
362
|
-
#
|
|
363
|
-
#
|
|
364
|
-
#
|
|
365
|
-
#
|
|
365
|
+
# task="Fix login bug" \
|
|
366
|
+
# plan_type=bug \
|
|
367
|
+
# create_pr=true \
|
|
368
|
+
# max_iterations=15
|
|
366
369
|
#
|
|
367
370
|
# Run with verbose output:
|
|
368
371
|
# agentic-forge run workflow-example.yaml \
|
|
369
|
-
#
|
|
372
|
+
# task="Implement feature" \
|
|
370
373
|
# --terminal-output all
|
|
371
374
|
#
|
|
375
|
+
# Disable interactive prompts (for CI/scripts):
|
|
376
|
+
# agentic-forge run workflow-example.yaml --no-interactive \
|
|
377
|
+
# task="Implement feature"
|
|
378
|
+
#
|
|
372
379
|
# Resume from specific step:
|
|
373
380
|
# agentic-forge run workflow-example.yaml \
|
|
374
|
-
#
|
|
381
|
+
# task="Implement feature" \
|
|
375
382
|
# --from-step review-implementation
|
|
376
383
|
#
|
|
377
384
|
# Provide human input:
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/** Checkpoint management for workflow sessions. */
|
|
2
|
+
export declare function getCheckpointPath(workflowId: string, repoRoot?: string): string;
|
|
3
|
+
export declare function createCheckpoint(workflowId: string, step: string, context: string, progress: string, notes?: string, issues?: string, repoRoot?: string): string;
|
|
4
|
+
export declare function readCheckpoints(workflowId: string, repoRoot?: string): Record<string, unknown>[];
|
|
5
|
+
export declare function getLatestCheckpoint(workflowId: string, repoRoot?: string): Record<string, unknown> | null;
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/** Checkpoint management for workflow sessions. */
|
|
2
|
+
import { appendFileSync, existsSync, mkdirSync, readFileSync } from "node:fs";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import yaml from "js-yaml";
|
|
5
|
+
// --- Path helper ---
|
|
6
|
+
export function getCheckpointPath(workflowId, repoRoot) {
|
|
7
|
+
const root = repoRoot ?? process.cwd();
|
|
8
|
+
return path.join(root, "agentic", "outputs", workflowId, "checkpoint.md");
|
|
9
|
+
}
|
|
10
|
+
// --- Create checkpoint ---
|
|
11
|
+
export function createCheckpoint(workflowId, step, context, progress, notes = "", issues = "", repoRoot) {
|
|
12
|
+
const checkpointPath = getCheckpointPath(workflowId, repoRoot);
|
|
13
|
+
const dir = path.dirname(checkpointPath);
|
|
14
|
+
mkdirSync(dir, { recursive: true });
|
|
15
|
+
const existing = readCheckpoints(workflowId, repoRoot);
|
|
16
|
+
const checkpointNum = existing.length + 1;
|
|
17
|
+
const checkpointId = `chk-${String(checkpointNum).padStart(3, "0")}`;
|
|
18
|
+
const timestamp = new Date().toISOString();
|
|
19
|
+
const frontmatter = {
|
|
20
|
+
checkpoint_id: checkpointId,
|
|
21
|
+
step,
|
|
22
|
+
created: timestamp,
|
|
23
|
+
workflow_id: workflowId,
|
|
24
|
+
status: "in_progress",
|
|
25
|
+
};
|
|
26
|
+
const entryLines = [
|
|
27
|
+
"---",
|
|
28
|
+
yaml.dump(frontmatter, { flowLevel: -1 }).trim(),
|
|
29
|
+
"---",
|
|
30
|
+
"",
|
|
31
|
+
"## Context",
|
|
32
|
+
"",
|
|
33
|
+
context,
|
|
34
|
+
"",
|
|
35
|
+
"## Progress",
|
|
36
|
+
"",
|
|
37
|
+
progress,
|
|
38
|
+
"",
|
|
39
|
+
];
|
|
40
|
+
if (notes) {
|
|
41
|
+
entryLines.push("## Notes for Next Session", "", notes, "");
|
|
42
|
+
}
|
|
43
|
+
if (issues) {
|
|
44
|
+
entryLines.push("## Issues Discovered", "", issues, "");
|
|
45
|
+
}
|
|
46
|
+
entryLines.push("---\n");
|
|
47
|
+
const entry = entryLines.join("\n");
|
|
48
|
+
appendFileSync(checkpointPath, entry, "utf-8");
|
|
49
|
+
return checkpointId;
|
|
50
|
+
}
|
|
51
|
+
// --- Read checkpoints ---
|
|
52
|
+
export function readCheckpoints(workflowId, repoRoot) {
|
|
53
|
+
const checkpointPath = getCheckpointPath(workflowId, repoRoot);
|
|
54
|
+
if (!existsSync(checkpointPath)) {
|
|
55
|
+
return [];
|
|
56
|
+
}
|
|
57
|
+
const content = readFileSync(checkpointPath, "utf-8");
|
|
58
|
+
const checkpoints = [];
|
|
59
|
+
const parts = content.split("---");
|
|
60
|
+
let i = 1;
|
|
61
|
+
while (i < parts.length - 1) {
|
|
62
|
+
const frontmatterStr = parts[i].trim();
|
|
63
|
+
if (!frontmatterStr) {
|
|
64
|
+
i += 1;
|
|
65
|
+
continue;
|
|
66
|
+
}
|
|
67
|
+
const body = i + 1 < parts.length ? parts[i + 1].trim() : "";
|
|
68
|
+
try {
|
|
69
|
+
const frontmatter = yaml.load(frontmatterStr);
|
|
70
|
+
if (frontmatter && "checkpoint_id" in frontmatter) {
|
|
71
|
+
frontmatter.content = body;
|
|
72
|
+
checkpoints.push(frontmatter);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
catch {
|
|
76
|
+
// Invalid YAML, skip
|
|
77
|
+
}
|
|
78
|
+
i += 2;
|
|
79
|
+
}
|
|
80
|
+
return checkpoints;
|
|
81
|
+
}
|
|
82
|
+
// --- Get latest checkpoint ---
|
|
83
|
+
export function getLatestCheckpoint(workflowId, repoRoot) {
|
|
84
|
+
const checkpoints = readCheckpoints(workflowId, repoRoot);
|
|
85
|
+
return checkpoints.length > 0 ? checkpoints[checkpoints.length - 1] : null;
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/checkpoints/manager.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.d.ts
ADDED
package/dist/cli.js
ADDED
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/** CLI entry point for agentic-forge command. */
|
|
3
|
+
import { Command } from "commander";
|
|
4
|
+
function optString(val) {
|
|
5
|
+
return typeof val === "string" ? val : undefined;
|
|
6
|
+
}
|
|
7
|
+
function optBool(val) {
|
|
8
|
+
return typeof val === "boolean" ? val : undefined;
|
|
9
|
+
}
|
|
10
|
+
function optStringArray(val) {
|
|
11
|
+
return Array.isArray(val) && val.every((v) => typeof v === "string") ? val : undefined;
|
|
12
|
+
}
|
|
13
|
+
import { CliExitError, cmdAuthoringDir, cmdCancel, cmdConfig, cmdConfigure, cmdInit, cmdInput, cmdList, cmdReleaseNotes, cmdResume, cmdRun, cmdSkillsDir, cmdStatus, cmdUpdate, cmdVersion, cmdWorkflows, getVersion, } from "./commands/index.js";
|
|
14
|
+
const program = new Command()
|
|
15
|
+
.name("agentic-forge")
|
|
16
|
+
.version(getVersion())
|
|
17
|
+
.description("Agentic workflow orchestration for Claude Code");
|
|
18
|
+
// run command
|
|
19
|
+
program
|
|
20
|
+
.command("run")
|
|
21
|
+
.description("Run a workflow with optional key=value variables (prompts for missing required vars)")
|
|
22
|
+
.argument("[workflow]", "workflow name or path to YAML file")
|
|
23
|
+
.argument("[vars...]", "workflow variables as key=value pairs")
|
|
24
|
+
.option("--list", "list all available workflows")
|
|
25
|
+
.option("--var <key=value...>", "set workflow variable (can be used multiple times)")
|
|
26
|
+
.option("--from-step <step>", "resume from a specific step")
|
|
27
|
+
.option("--no-interactive", "disable interactive prompts for missing variables")
|
|
28
|
+
.option("--terminal-output <mode>", "terminal output granularity (base or all)")
|
|
29
|
+
.action(async (workflow, vars, opts) => {
|
|
30
|
+
await cmdRun({
|
|
31
|
+
workflow,
|
|
32
|
+
listWorkflows: optBool(opts.list),
|
|
33
|
+
vars: optStringArray(opts.var),
|
|
34
|
+
bareVars: optStringArray(vars),
|
|
35
|
+
fromStep: optString(opts.fromStep),
|
|
36
|
+
interactive: opts.interactive !== false,
|
|
37
|
+
terminalOutput: optString(opts.terminalOutput),
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
// resume command
|
|
41
|
+
program
|
|
42
|
+
.command("resume")
|
|
43
|
+
.argument("<workflow_id>", "workflow ID to resume")
|
|
44
|
+
.option("--terminal-output <mode>", "terminal output granularity (base or all)")
|
|
45
|
+
.action(async (workflowId, opts) => {
|
|
46
|
+
await cmdResume({
|
|
47
|
+
workflowId,
|
|
48
|
+
terminalOutput: optString(opts.terminalOutput),
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
// status command
|
|
52
|
+
program
|
|
53
|
+
.command("status")
|
|
54
|
+
.argument("<workflow_id>", "workflow ID")
|
|
55
|
+
.action((workflowId) => {
|
|
56
|
+
cmdStatus(workflowId);
|
|
57
|
+
});
|
|
58
|
+
// cancel command
|
|
59
|
+
program
|
|
60
|
+
.command("cancel")
|
|
61
|
+
.argument("<workflow_id>", "workflow ID to cancel")
|
|
62
|
+
.action((workflowId) => {
|
|
63
|
+
cmdCancel(workflowId);
|
|
64
|
+
});
|
|
65
|
+
// list command
|
|
66
|
+
program
|
|
67
|
+
.command("list")
|
|
68
|
+
.option("--status <status>", "filter by status (running, completed, failed, paused)")
|
|
69
|
+
.action((opts) => {
|
|
70
|
+
cmdList(optString(opts.status));
|
|
71
|
+
});
|
|
72
|
+
// input command
|
|
73
|
+
program
|
|
74
|
+
.command("input")
|
|
75
|
+
.argument("<workflow_id>", "workflow ID")
|
|
76
|
+
.argument("<response>", "response to provide")
|
|
77
|
+
.action((workflowId, response) => {
|
|
78
|
+
cmdInput(workflowId, response);
|
|
79
|
+
});
|
|
80
|
+
// configure command
|
|
81
|
+
program
|
|
82
|
+
.command("configure")
|
|
83
|
+
.description("Configure plugin settings")
|
|
84
|
+
.action(() => {
|
|
85
|
+
cmdConfigure();
|
|
86
|
+
});
|
|
87
|
+
// init command
|
|
88
|
+
program
|
|
89
|
+
.command("init")
|
|
90
|
+
.description("Copy bundled workflow templates to local project")
|
|
91
|
+
.option("--force", "overwrite existing workflow files")
|
|
92
|
+
.option("--list", "list available bundled workflows without copying")
|
|
93
|
+
.action((opts) => {
|
|
94
|
+
cmdInit({
|
|
95
|
+
force: optBool(opts.force),
|
|
96
|
+
listOnly: optBool(opts.list),
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
// config command with subcommands
|
|
100
|
+
const configCmd = program.command("config").description("Get or set configuration");
|
|
101
|
+
configCmd
|
|
102
|
+
.command("get")
|
|
103
|
+
.argument("<key>", "configuration key (dot notation)")
|
|
104
|
+
.action((key) => {
|
|
105
|
+
cmdConfig("get", key);
|
|
106
|
+
});
|
|
107
|
+
configCmd
|
|
108
|
+
.command("set")
|
|
109
|
+
.argument("<key>", "configuration key (dot notation)")
|
|
110
|
+
.argument("<value>", "value to set")
|
|
111
|
+
.action((key, value) => {
|
|
112
|
+
cmdConfig("set", key, value);
|
|
113
|
+
});
|
|
114
|
+
// version command
|
|
115
|
+
program
|
|
116
|
+
.command("version")
|
|
117
|
+
.description("Show version information")
|
|
118
|
+
.action(() => {
|
|
119
|
+
cmdVersion();
|
|
120
|
+
});
|
|
121
|
+
// release-notes command
|
|
122
|
+
program
|
|
123
|
+
.command("release-notes")
|
|
124
|
+
.argument("[version]", "show release notes for a specific version")
|
|
125
|
+
.option("--latest", "show only the most recent version's release notes")
|
|
126
|
+
.action((specificVersion, opts) => {
|
|
127
|
+
cmdReleaseNotes({
|
|
128
|
+
specificVersion,
|
|
129
|
+
latest: optBool(opts.latest),
|
|
130
|
+
});
|
|
131
|
+
});
|
|
132
|
+
// skills-dir command
|
|
133
|
+
program
|
|
134
|
+
.command("skills-dir")
|
|
135
|
+
.description("Print path to bundled skills directory")
|
|
136
|
+
.action(() => {
|
|
137
|
+
cmdSkillsDir();
|
|
138
|
+
});
|
|
139
|
+
// authoring-dir command
|
|
140
|
+
program
|
|
141
|
+
.command("authoring-dir")
|
|
142
|
+
.description("Print path to interactive authoring skills directory")
|
|
143
|
+
.action(() => {
|
|
144
|
+
cmdAuthoringDir();
|
|
145
|
+
});
|
|
146
|
+
// update command
|
|
147
|
+
program
|
|
148
|
+
.command("update")
|
|
149
|
+
.description("Update agentic-forge to the latest version")
|
|
150
|
+
.option("--check", "check for updates without installing")
|
|
151
|
+
.action((opts) => {
|
|
152
|
+
cmdUpdate({
|
|
153
|
+
check: optBool(opts.check),
|
|
154
|
+
});
|
|
155
|
+
});
|
|
156
|
+
// workflows command
|
|
157
|
+
program
|
|
158
|
+
.command("workflows")
|
|
159
|
+
.description("List available workflows with descriptions")
|
|
160
|
+
.option("-v, --verbose", "show workflow variables and full descriptions")
|
|
161
|
+
.action((opts) => {
|
|
162
|
+
cmdWorkflows({
|
|
163
|
+
verbose: optBool(opts.verbose),
|
|
164
|
+
});
|
|
165
|
+
});
|
|
166
|
+
program.parseAsync().catch((err) => {
|
|
167
|
+
if (err instanceof CliExitError) {
|
|
168
|
+
process.stderr.write(`${err.message}\n`);
|
|
169
|
+
process.exit(err.exitCode);
|
|
170
|
+
}
|
|
171
|
+
throw err;
|
|
172
|
+
});
|
|
173
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,iDAAiD;AAEjD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,SAAS,SAAS,CAAC,GAAY;IAC9B,OAAO,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;AAClD,CAAC;AAED,SAAS,OAAO,CAAC,GAAY;IAC5B,OAAO,OAAO,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;AACnD,CAAC;AAED,SAAS,cAAc,CAAC,GAAY;IACnC,OAAO,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;AACxF,CAAC;AAED,OAAO,EACN,YAAY,EACZ,eAAe,EACf,SAAS,EACT,SAAS,EACT,YAAY,EACZ,OAAO,EACP,QAAQ,EACR,OAAO,EACP,eAAe,EACf,SAAS,EACT,MAAM,EACN,YAAY,EACZ,SAAS,EACT,SAAS,EACT,UAAU,EACV,YAAY,EACZ,UAAU,GACV,MAAM,qBAAqB,CAAC;AAE7B,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE;KAC3B,IAAI,CAAC,eAAe,CAAC;KACrB,OAAO,CAAC,UAAU,EAAE,CAAC;KACrB,WAAW,CAAC,gDAAgD,CAAC,CAAC;AAEhE,cAAc;AACd,OAAO;KACL,OAAO,CAAC,KAAK,CAAC;KACd,WAAW,CACX,sFAAsF,CACtF;KACA,QAAQ,CAAC,YAAY,EAAE,oCAAoC,CAAC;KAC5D,QAAQ,CAAC,WAAW,EAAE,uCAAuC,CAAC;KAC9D,MAAM,CAAC,QAAQ,EAAE,8BAA8B,CAAC;KAChD,MAAM,CAAC,sBAAsB,EAAE,oDAAoD,CAAC;KACpF,MAAM,CAAC,oBAAoB,EAAE,6BAA6B,CAAC;KAC3D,MAAM,CAAC,kBAAkB,EAAE,mDAAmD,CAAC;KAC/E,MAAM,CAAC,0BAA0B,EAAE,2CAA2C,CAAC;KAC/E,MAAM,CAAC,KAAK,EAAE,QAA4B,EAAE,IAAc,EAAE,IAA6B,EAAE,EAAE;IAC7F,MAAM,MAAM,CAAC;QACZ,QAAQ;QACR,aAAa,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;QACjC,IAAI,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC;QAC9B,QAAQ,EAAE,cAAc,CAAC,IAAI,CAAC;QAC9B,QAAQ,EAAE,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;QAClC,WAAW,EAAE,IAAI,CAAC,WAAW,KAAK,KAAK;QACvC,cAAc,EAAE,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC;KAC9C,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEJ,iBAAiB;AACjB,OAAO;KACL,OAAO,CAAC,QAAQ,CAAC;KACjB,QAAQ,CAAC,eAAe,EAAE,uBAAuB,CAAC;KAClD,MAAM,CAAC,0BAA0B,EAAE,2CAA2C,CAAC;KAC/E,MAAM,CAAC,KAAK,EAAE,UAAkB,EAAE,IAA6B,EAAE,EAAE;IACnE,MAAM,SAAS,CAAC;QACf,UAAU;QACV,cAAc,EAAE,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC;KAC9C,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEJ,iBAAiB;AACjB,OAAO;KACL,OAAO,CAAC,QAAQ,CAAC;KACjB,QAAQ,CAAC,eAAe,EAAE,aAAa,CAAC;KACxC,MAAM,CAAC,CAAC,UAAkB,EAAE,EAAE;IAC9B,SAAS,CAAC,UAAU,CAAC,CAAC;AACvB,CAAC,CAAC,CAAC;AAEJ,iBAAiB;AACjB,OAAO;KACL,OAAO,CAAC,QAAQ,CAAC;KACjB,QAAQ,CAAC,eAAe,EAAE,uBAAuB,CAAC;KAClD,MAAM,CAAC,CAAC,UAAkB,EAAE,EAAE;IAC9B,SAAS,CAAC,UAAU,CAAC,CAAC;AACvB,CAAC,CAAC,CAAC;AAEJ,eAAe;AACf,OAAO;KACL,OAAO,CAAC,MAAM,CAAC;KACf,MAAM,CAAC,mBAAmB,EAAE,uDAAuD,CAAC;KACpF,MAAM,CAAC,CAAC,IAA6B,EAAE,EAAE;IACzC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AACjC,CAAC,CAAC,CAAC;AAEJ,gBAAgB;AAChB,OAAO;KACL,OAAO,CAAC,OAAO,CAAC;KAChB,QAAQ,CAAC,eAAe,EAAE,aAAa,CAAC;KACxC,QAAQ,CAAC,YAAY,EAAE,qBAAqB,CAAC;KAC7C,MAAM,CAAC,CAAC,UAAkB,EAAE,QAAgB,EAAE,EAAE;IAChD,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;AAChC,CAAC,CAAC,CAAC;AAEJ,oBAAoB;AACpB,OAAO;KACL,OAAO,CAAC,WAAW,CAAC;KACpB,WAAW,CAAC,2BAA2B,CAAC;KACxC,MAAM,CAAC,GAAG,EAAE;IACZ,YAAY,EAAE,CAAC;AAChB,CAAC,CAAC,CAAC;AAEJ,eAAe;AACf,OAAO;KACL,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,kDAAkD,CAAC;KAC/D,MAAM,CAAC,SAAS,EAAE,mCAAmC,CAAC;KACtD,MAAM,CAAC,QAAQ,EAAE,kDAAkD,CAAC;KACpE,MAAM,CAAC,CAAC,IAA6B,EAAE,EAAE;IACzC,OAAO,CAAC;QACP,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;QAC1B,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;KAC5B,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEJ,kCAAkC;AAClC,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,0BAA0B,CAAC,CAAC;AAEpF,SAAS;KACP,OAAO,CAAC,KAAK,CAAC;KACd,QAAQ,CAAC,OAAO,EAAE,kCAAkC,CAAC;KACrD,MAAM,CAAC,CAAC,GAAW,EAAE,EAAE;IACvB,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACvB,CAAC,CAAC,CAAC;AAEJ,SAAS;KACP,OAAO,CAAC,KAAK,CAAC;KACd,QAAQ,CAAC,OAAO,EAAE,kCAAkC,CAAC;KACrD,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC;KACnC,MAAM,CAAC,CAAC,GAAW,EAAE,KAAa,EAAE,EAAE;IACtC,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AAC9B,CAAC,CAAC,CAAC;AAEJ,kBAAkB;AAClB,OAAO;KACL,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,0BAA0B,CAAC;KACvC,MAAM,CAAC,GAAG,EAAE;IACZ,UAAU,EAAE,CAAC;AACd,CAAC,CAAC,CAAC;AAEJ,wBAAwB;AACxB,OAAO;KACL,OAAO,CAAC,eAAe,CAAC;KACxB,QAAQ,CAAC,WAAW,EAAE,2CAA2C,CAAC;KAClE,MAAM,CAAC,UAAU,EAAE,mDAAmD,CAAC;KACvE,MAAM,CAAC,CAAC,eAAmC,EAAE,IAA6B,EAAE,EAAE;IAC9E,eAAe,CAAC;QACf,eAAe;QACf,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;KAC5B,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEJ,qBAAqB;AACrB,OAAO;KACL,OAAO,CAAC,YAAY,CAAC;KACrB,WAAW,CAAC,wCAAwC,CAAC;KACrD,MAAM,CAAC,GAAG,EAAE;IACZ,YAAY,EAAE,CAAC;AAChB,CAAC,CAAC,CAAC;AAEJ,wBAAwB;AACxB,OAAO;KACL,OAAO,CAAC,eAAe,CAAC;KACxB,WAAW,CAAC,sDAAsD,CAAC;KACnE,MAAM,CAAC,GAAG,EAAE;IACZ,eAAe,EAAE,CAAC;AACnB,CAAC,CAAC,CAAC;AAEJ,iBAAiB;AACjB,OAAO;KACL,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,4CAA4C,CAAC;KACzD,MAAM,CAAC,SAAS,EAAE,sCAAsC,CAAC;KACzD,MAAM,CAAC,CAAC,IAA6B,EAAE,EAAE;IACzC,SAAS,CAAC;QACT,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;KAC1B,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEJ,oBAAoB;AACpB,OAAO;KACL,OAAO,CAAC,WAAW,CAAC;KACpB,WAAW,CAAC,4CAA4C,CAAC;KACzD,MAAM,CAAC,eAAe,EAAE,+CAA+C,CAAC;KACxE,MAAM,CAAC,CAAC,IAA6B,EAAE,EAAE;IACzC,YAAY,CAAC;QACZ,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;KAC9B,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEJ,OAAO,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;IAC3C,IAAI,GAAG,YAAY,YAAY,EAAE,CAAC;QACjC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC;QACzC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC;IACD,MAAM,GAAG,CAAC;AACX,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/** Authoring-dir command handler. */
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { fileURLToPath } from "node:url";
|
|
4
|
+
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
5
|
+
export function cmdAuthoringDir() {
|
|
6
|
+
const authoringDir = path.resolve(path.join(__dirname, "..", "authoring"));
|
|
7
|
+
process.stdout.write(`${authoringDir}\n`);
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=authoring-dir.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authoring-dir.js","sourceRoot":"","sources":["../../src/commands/authoring-dir.ts"],"names":[],"mappings":"AAAA,qCAAqC;AAErC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE/D,MAAM,UAAU,eAAe;IAC9B,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC;IAC3E,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,YAAY,IAAI,CAAC,CAAC;AAC3C,CAAC"}
|