agentic-forge 0.0.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -21
- package/README.md +31 -21
- 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/{src → dist}/claude/.claude/skills/workflow-builder/SKILL.md +1 -1
- package/dist/cli.d.ts +3 -0
- package/dist/cli.js +155 -0
- package/dist/cli.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} +1 -10
- package/dist/commands/index.js +13 -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 +14 -0
- package/dist/commands/run.js +193 -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 +109 -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 +56 -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}/claude/.claude/skills/workflow-builder/references/REFERENCE.md +0 -0
- /package/{src → dist}/claude/.claude/skills/workflow-builder/references/workflow-example.yaml +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,43 @@ 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
|
|
|
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
|
+
|
|
109
116
|
# Print path to bundled skills directory
|
|
110
117
|
agentic-forge skills-dir
|
|
111
118
|
|
|
119
|
+
# Show release notes
|
|
120
|
+
agentic-forge release-notes --latest
|
|
121
|
+
|
|
112
122
|
# Check current version
|
|
113
123
|
agentic-forge version
|
|
114
124
|
|
|
@@ -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,155 @@
|
|
|
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 { 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
|
+
.argument("[workflow]", "workflow name or path to YAML file")
|
|
22
|
+
.option("--list", "list all available workflows")
|
|
23
|
+
.option("--var <key=value...>", "set workflow variable (can be used multiple times)")
|
|
24
|
+
.option("--from-step <step>", "resume from a specific step")
|
|
25
|
+
.option("--terminal-output <mode>", "terminal output granularity (base or all)")
|
|
26
|
+
.action(async (workflow, opts) => {
|
|
27
|
+
await cmdRun({
|
|
28
|
+
workflow,
|
|
29
|
+
listWorkflows: optBool(opts.list),
|
|
30
|
+
vars: optStringArray(opts.var),
|
|
31
|
+
fromStep: optString(opts.fromStep),
|
|
32
|
+
terminalOutput: optString(opts.terminalOutput),
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
// resume command
|
|
36
|
+
program
|
|
37
|
+
.command("resume")
|
|
38
|
+
.argument("<workflow_id>", "workflow ID to resume")
|
|
39
|
+
.option("--terminal-output <mode>", "terminal output granularity (base or all)")
|
|
40
|
+
.action(async (workflowId, opts) => {
|
|
41
|
+
await cmdResume({
|
|
42
|
+
workflowId,
|
|
43
|
+
terminalOutput: optString(opts.terminalOutput),
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
// status command
|
|
47
|
+
program
|
|
48
|
+
.command("status")
|
|
49
|
+
.argument("<workflow_id>", "workflow ID")
|
|
50
|
+
.action((workflowId) => {
|
|
51
|
+
cmdStatus(workflowId);
|
|
52
|
+
});
|
|
53
|
+
// cancel command
|
|
54
|
+
program
|
|
55
|
+
.command("cancel")
|
|
56
|
+
.argument("<workflow_id>", "workflow ID to cancel")
|
|
57
|
+
.action((workflowId) => {
|
|
58
|
+
cmdCancel(workflowId);
|
|
59
|
+
});
|
|
60
|
+
// list command
|
|
61
|
+
program
|
|
62
|
+
.command("list")
|
|
63
|
+
.option("--status <status>", "filter by status (running, completed, failed, paused)")
|
|
64
|
+
.action((opts) => {
|
|
65
|
+
cmdList(optString(opts.status));
|
|
66
|
+
});
|
|
67
|
+
// input command
|
|
68
|
+
program
|
|
69
|
+
.command("input")
|
|
70
|
+
.argument("<workflow_id>", "workflow ID")
|
|
71
|
+
.argument("<response>", "response to provide")
|
|
72
|
+
.action((workflowId, response) => {
|
|
73
|
+
cmdInput(workflowId, response);
|
|
74
|
+
});
|
|
75
|
+
// configure command
|
|
76
|
+
program
|
|
77
|
+
.command("configure")
|
|
78
|
+
.description("Configure plugin settings")
|
|
79
|
+
.action(() => {
|
|
80
|
+
cmdConfigure();
|
|
81
|
+
});
|
|
82
|
+
// init command
|
|
83
|
+
program
|
|
84
|
+
.command("init")
|
|
85
|
+
.description("Copy bundled workflow templates to local project")
|
|
86
|
+
.option("--force", "overwrite existing workflow files")
|
|
87
|
+
.option("--list", "list available bundled workflows without copying")
|
|
88
|
+
.action((opts) => {
|
|
89
|
+
cmdInit({
|
|
90
|
+
force: optBool(opts.force),
|
|
91
|
+
listOnly: optBool(opts.list),
|
|
92
|
+
});
|
|
93
|
+
});
|
|
94
|
+
// config command with subcommands
|
|
95
|
+
const configCmd = program.command("config").description("Get or set configuration");
|
|
96
|
+
configCmd
|
|
97
|
+
.command("get")
|
|
98
|
+
.argument("<key>", "configuration key (dot notation)")
|
|
99
|
+
.action((key) => {
|
|
100
|
+
cmdConfig("get", key);
|
|
101
|
+
});
|
|
102
|
+
configCmd
|
|
103
|
+
.command("set")
|
|
104
|
+
.argument("<key>", "configuration key (dot notation)")
|
|
105
|
+
.argument("<value>", "value to set")
|
|
106
|
+
.action((key, value) => {
|
|
107
|
+
cmdConfig("set", key, value);
|
|
108
|
+
});
|
|
109
|
+
// version command
|
|
110
|
+
program
|
|
111
|
+
.command("version")
|
|
112
|
+
.description("Show version information")
|
|
113
|
+
.action(() => {
|
|
114
|
+
cmdVersion();
|
|
115
|
+
});
|
|
116
|
+
// release-notes command
|
|
117
|
+
program
|
|
118
|
+
.command("release-notes")
|
|
119
|
+
.argument("[version]", "show release notes for a specific version")
|
|
120
|
+
.option("--latest", "show only the most recent version's release notes")
|
|
121
|
+
.action((specificVersion, opts) => {
|
|
122
|
+
cmdReleaseNotes({
|
|
123
|
+
specificVersion,
|
|
124
|
+
latest: optBool(opts.latest),
|
|
125
|
+
});
|
|
126
|
+
});
|
|
127
|
+
// skills-dir command
|
|
128
|
+
program
|
|
129
|
+
.command("skills-dir")
|
|
130
|
+
.description("Print path to bundled skills directory")
|
|
131
|
+
.action(() => {
|
|
132
|
+
cmdSkillsDir();
|
|
133
|
+
});
|
|
134
|
+
// update command
|
|
135
|
+
program
|
|
136
|
+
.command("update")
|
|
137
|
+
.description("Update agentic-forge to the latest version")
|
|
138
|
+
.option("--check", "check for updates without installing")
|
|
139
|
+
.action((opts) => {
|
|
140
|
+
cmdUpdate({
|
|
141
|
+
check: optBool(opts.check),
|
|
142
|
+
});
|
|
143
|
+
});
|
|
144
|
+
// workflows command
|
|
145
|
+
program
|
|
146
|
+
.command("workflows")
|
|
147
|
+
.description("List available workflows with descriptions")
|
|
148
|
+
.option("-v, --verbose", "show workflow variables and full descriptions")
|
|
149
|
+
.action((opts) => {
|
|
150
|
+
cmdWorkflows({
|
|
151
|
+
verbose: optBool(opts.verbose),
|
|
152
|
+
});
|
|
153
|
+
});
|
|
154
|
+
program.parse();
|
|
155
|
+
//# 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":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/** Config command handler. */
|
|
2
|
+
import { getConfigValue, setConfigValue } from "../config.js";
|
|
3
|
+
export function cmdConfig(configCommand, key, value) {
|
|
4
|
+
if (configCommand === "get") {
|
|
5
|
+
const result = getConfigValue(key);
|
|
6
|
+
if (result === null) {
|
|
7
|
+
process.stderr.write(`Key not found: ${key}\n`);
|
|
8
|
+
process.exit(1);
|
|
9
|
+
}
|
|
10
|
+
if (typeof result === "object" && result !== null) {
|
|
11
|
+
process.stdout.write(`${JSON.stringify(result, null, 2)}\n`);
|
|
12
|
+
}
|
|
13
|
+
else {
|
|
14
|
+
process.stdout.write(`${result}\n`);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
else if (configCommand === "set") {
|
|
18
|
+
if (value === undefined) {
|
|
19
|
+
process.stderr.write("Usage: agentic-forge config set <key> <value>\n");
|
|
20
|
+
process.exit(1);
|
|
21
|
+
}
|
|
22
|
+
setConfigValue(key, value);
|
|
23
|
+
process.stdout.write(`Set ${key} = ${value}\n`);
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
process.stderr.write("Usage: agentic-forge config get|set <key> [value]\n");
|
|
27
|
+
process.exit(1);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=config-cmd.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-cmd.js","sourceRoot":"","sources":["../../src/commands/config-cmd.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAE9B,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9D,MAAM,UAAU,SAAS,CAAC,aAAqB,EAAE,GAAW,EAAE,KAAc;IAC3E,IAAI,aAAa,KAAK,KAAK,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YACrB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAAC;YAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC;QACD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YACnD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QAC9D,CAAC;aAAM,CAAC;YACP,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,IAAI,CAAC,CAAC;QACrC,CAAC;IACF,CAAC;SAAM,IAAI,aAAa,KAAK,KAAK,EAAE,CAAC;QACpC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAC;YACxE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC;QACD,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC3B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,KAAK,IAAI,CAAC,CAAC;IACjD,CAAC;SAAM,CAAC;QACP,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,qDAAqD,CAAC,CAAC;QAC5E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;AACF,CAAC"}
|
|
@@ -1,14 +1,5 @@
|
|
|
1
1
|
/** Command handler exports. */
|
|
2
|
-
|
|
3
|
-
export {
|
|
4
|
-
cmdRun,
|
|
5
|
-
discoverWorkflow,
|
|
6
|
-
listAvailableWorkflows,
|
|
7
|
-
resolveWorkflowPath,
|
|
8
|
-
getBundledWorkflowsDir,
|
|
9
|
-
getUserWorkflowsDir,
|
|
10
|
-
getProjectWorkflowsDir,
|
|
11
|
-
} from "./run.js";
|
|
2
|
+
export { cmdRun, discoverWorkflow, listAvailableWorkflows, resolveWorkflowPath, getBundledWorkflowsDir, getUserWorkflowsDir, getProjectWorkflowsDir, } from "./run.js";
|
|
12
3
|
export { cmdResume } from "./resume.js";
|
|
13
4
|
export { cmdStatus, cmdCancel, cmdList } from "./status.js";
|
|
14
5
|
export { cmdInit, cmdConfigure } from "./init.js";
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/** Command handler exports. */
|
|
2
|
+
export { cmdRun, discoverWorkflow, listAvailableWorkflows, resolveWorkflowPath, getBundledWorkflowsDir, getUserWorkflowsDir, getProjectWorkflowsDir, } from "./run.js";
|
|
3
|
+
export { cmdResume } from "./resume.js";
|
|
4
|
+
export { cmdStatus, cmdCancel, cmdList } from "./status.js";
|
|
5
|
+
export { cmdInit, cmdConfigure } from "./init.js";
|
|
6
|
+
export { cmdConfig } from "./config-cmd.js";
|
|
7
|
+
export { cmdVersion, getVersion } from "./version.js";
|
|
8
|
+
export { cmdUpdate } from "./update.js";
|
|
9
|
+
export { cmdReleaseNotes } from "./release-notes.js";
|
|
10
|
+
export { cmdSkillsDir } from "./skills-dir.js";
|
|
11
|
+
export { cmdWorkflows } from "./workflows.js";
|
|
12
|
+
export { cmdInput } from "./shortcuts.js";
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAE/B,OAAO,EACN,MAAM,EACN,gBAAgB,EAChB,sBAAsB,EACtB,mBAAmB,EACnB,sBAAsB,EACtB,mBAAmB,EACnB,sBAAsB,GACtB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/** Init and configure command handlers. */
|
|
2
|
+
import { copyFileSync, existsSync, mkdirSync, readdirSync, writeFileSync } from "node:fs";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import { getDefaultConfig, loadConfig } from "../config.js";
|
|
5
|
+
import { getBundledWorkflowsDir } from "./run.js";
|
|
6
|
+
export function cmdInit(options) {
|
|
7
|
+
const bundledDir = getBundledWorkflowsDir();
|
|
8
|
+
if (!existsSync(bundledDir)) {
|
|
9
|
+
process.stderr.write("Error: Bundled workflows directory not found.\n");
|
|
10
|
+
process.exit(1);
|
|
11
|
+
}
|
|
12
|
+
const bundledWorkflows = readdirSync(bundledDir)
|
|
13
|
+
.filter((f) => f.endsWith(".yaml"))
|
|
14
|
+
.sort();
|
|
15
|
+
if (bundledWorkflows.length === 0) {
|
|
16
|
+
process.stderr.write("No bundled workflows found.\n");
|
|
17
|
+
process.exit(1);
|
|
18
|
+
}
|
|
19
|
+
// List only mode
|
|
20
|
+
if (options.listOnly) {
|
|
21
|
+
process.stdout.write("Available bundled workflows:\n\n");
|
|
22
|
+
for (const wf of bundledWorkflows) {
|
|
23
|
+
process.stdout.write(` ${wf}\n`);
|
|
24
|
+
}
|
|
25
|
+
process.stdout.write("\nUse 'agentic-forge init' to copy these to agentic/workflows/\n");
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
// Copy workflows to local directory
|
|
29
|
+
const targetDir = path.join(process.cwd(), "agentic", "workflows");
|
|
30
|
+
mkdirSync(targetDir, { recursive: true });
|
|
31
|
+
const copied = [];
|
|
32
|
+
const skipped = [];
|
|
33
|
+
for (const wf of bundledWorkflows) {
|
|
34
|
+
const targetPath = path.join(targetDir, wf);
|
|
35
|
+
if (existsSync(targetPath) && !options.force) {
|
|
36
|
+
skipped.push(wf);
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
copyFileSync(path.join(bundledDir, wf), targetPath);
|
|
40
|
+
copied.push(wf);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
if (copied.length > 0) {
|
|
44
|
+
process.stdout.write(`Copied ${copied.length} workflow(s) to ${targetDir}/\n`);
|
|
45
|
+
for (const name of copied) {
|
|
46
|
+
process.stdout.write(` + ${name}\n`);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
if (skipped.length > 0) {
|
|
50
|
+
process.stdout.write(`\nSkipped ${skipped.length} existing workflow(s):\n`);
|
|
51
|
+
for (const name of skipped) {
|
|
52
|
+
process.stdout.write(` - ${name}\n`);
|
|
53
|
+
}
|
|
54
|
+
process.stdout.write("\nUse --force to overwrite existing files.\n");
|
|
55
|
+
}
|
|
56
|
+
// Create config.json next to workflows
|
|
57
|
+
initConfig(path.join(process.cwd(), "agentic"), options.force ?? false);
|
|
58
|
+
if (copied.length > 0) {
|
|
59
|
+
process.stdout.write("\nYou can now run workflows with:\n");
|
|
60
|
+
process.stdout.write(" agentic-forge run agentic/workflows/<workflow>.yaml\n");
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
function initConfig(agenticDir, force) {
|
|
64
|
+
const configPath = path.join(agenticDir, "config.json");
|
|
65
|
+
if (existsSync(configPath) && !force) {
|
|
66
|
+
process.stdout.write(`\nConfig already exists: ${configPath}\n`);
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
mkdirSync(agenticDir, { recursive: true });
|
|
70
|
+
const config = getDefaultConfig();
|
|
71
|
+
writeFileSync(configPath, JSON.stringify(config, null, 2), "utf-8");
|
|
72
|
+
process.stdout.write(`\nCreated config: ${configPath}\n`);
|
|
73
|
+
}
|
|
74
|
+
export function cmdConfigure() {
|
|
75
|
+
const config = loadConfig();
|
|
76
|
+
process.stdout.write("Agentic Workflows Configuration\n");
|
|
77
|
+
process.stdout.write(`${"=".repeat(40)}\n`);
|
|
78
|
+
process.stdout.write("\nCurrent settings:\n");
|
|
79
|
+
process.stdout.write(`${JSON.stringify(config, null, 2)}\n`);
|
|
80
|
+
process.stdout.write("\nUse 'agentic-forge config set <key> <value>' to modify settings.\n");
|
|
81
|
+
process.stdout.write("Example: agentic-forge config set defaults.maxRetry 5\n");
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=init.js.map
|