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.
Files changed (209) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +31 -21
  3. package/dist/checkpoints/manager.d.ts +5 -0
  4. package/dist/checkpoints/manager.js +87 -0
  5. package/dist/checkpoints/manager.js.map +1 -0
  6. package/{src → dist}/claude/.claude/skills/analyze/SKILL.md +1 -1
  7. package/{src → dist}/claude/.claude/skills/create-checkpoint/SKILL.md +1 -1
  8. package/{src → dist}/claude/.claude/skills/create-log/SKILL.md +1 -1
  9. package/{src → dist}/claude/.claude/skills/fix-analyze/SKILL.md +1 -1
  10. package/{src → dist}/claude/.claude/skills/git-branch/SKILL.md +1 -1
  11. package/{src → dist}/claude/.claude/skills/git-commit/SKILL.md +1 -1
  12. package/{src → dist}/claude/.claude/skills/git-pr/SKILL.md +1 -1
  13. package/{src → dist}/claude/.claude/skills/sdlc-plan/SKILL.md +1 -1
  14. package/{src → dist}/claude/.claude/skills/sdlc-review/SKILL.md +1 -1
  15. package/{src → dist}/claude/.claude/skills/workflow-builder/SKILL.md +1 -1
  16. package/dist/cli.d.ts +3 -0
  17. package/dist/cli.js +155 -0
  18. package/dist/cli.js.map +1 -0
  19. package/dist/commands/config-cmd.d.ts +2 -0
  20. package/dist/commands/config-cmd.js +30 -0
  21. package/dist/commands/config-cmd.js.map +1 -0
  22. package/{src/commands/index.ts → dist/commands/index.d.ts} +1 -10
  23. package/dist/commands/index.js +13 -0
  24. package/dist/commands/index.js.map +1 -0
  25. package/dist/commands/init.d.ts +6 -0
  26. package/dist/commands/init.js +83 -0
  27. package/dist/commands/init.js.map +1 -0
  28. package/dist/commands/release-notes.d.ts +5 -0
  29. package/dist/commands/release-notes.js +68 -0
  30. package/dist/commands/release-notes.js.map +1 -0
  31. package/dist/commands/resume.d.ts +5 -0
  32. package/dist/commands/resume.js +79 -0
  33. package/dist/commands/resume.js.map +1 -0
  34. package/dist/commands/run.d.ts +14 -0
  35. package/dist/commands/run.js +193 -0
  36. package/dist/commands/run.js.map +1 -0
  37. package/dist/commands/shortcuts.d.ts +2 -0
  38. package/dist/commands/shortcuts.js +11 -0
  39. package/dist/commands/shortcuts.js.map +1 -0
  40. package/dist/commands/skills-dir.d.ts +2 -0
  41. package/dist/commands/skills-dir.js +9 -0
  42. package/dist/commands/skills-dir.js.map +1 -0
  43. package/dist/commands/status.d.ts +4 -0
  44. package/dist/commands/status.js +99 -0
  45. package/dist/commands/status.js.map +1 -0
  46. package/dist/commands/update.d.ts +4 -0
  47. package/dist/commands/update.js +65 -0
  48. package/dist/commands/update.js.map +1 -0
  49. package/dist/commands/version.d.ts +3 -0
  50. package/dist/commands/version.js +26 -0
  51. package/dist/commands/version.js.map +1 -0
  52. package/dist/commands/workflows.d.ts +4 -0
  53. package/dist/commands/workflows.js +109 -0
  54. package/dist/commands/workflows.js.map +1 -0
  55. package/dist/config.d.ts +8 -0
  56. package/dist/config.js +110 -0
  57. package/dist/config.js.map +1 -0
  58. package/dist/console.d.ts +103 -0
  59. package/dist/console.js +670 -0
  60. package/dist/console.js.map +1 -0
  61. package/dist/executor.d.ts +27 -0
  62. package/dist/executor.js +236 -0
  63. package/dist/executor.js.map +1 -0
  64. package/dist/git/worktree.d.ts +23 -0
  65. package/dist/git/worktree.js +170 -0
  66. package/dist/git/worktree.js.map +1 -0
  67. package/dist/logging/logger.d.ts +27 -0
  68. package/dist/logging/logger.js +69 -0
  69. package/dist/logging/logger.js.map +1 -0
  70. package/dist/orchestrator.d.ts +44 -0
  71. package/dist/orchestrator.js +587 -0
  72. package/dist/orchestrator.js.map +1 -0
  73. package/dist/parser.d.ts +17 -0
  74. package/dist/parser.js +184 -0
  75. package/dist/parser.js.map +1 -0
  76. package/dist/progress.d.ts +29 -0
  77. package/dist/progress.js +275 -0
  78. package/dist/progress.js.map +1 -0
  79. package/dist/ralph-loop.d.ts +26 -0
  80. package/dist/ralph-loop.js +194 -0
  81. package/dist/ralph-loop.js.map +1 -0
  82. package/dist/renderer.d.ts +15 -0
  83. package/dist/renderer.js +123 -0
  84. package/dist/renderer.js.map +1 -0
  85. package/dist/runner.d.ts +84 -0
  86. package/dist/runner.js +529 -0
  87. package/dist/runner.js.map +1 -0
  88. package/dist/signal-manager.d.ts +16 -0
  89. package/dist/signal-manager.js +50 -0
  90. package/dist/signal-manager.js.map +1 -0
  91. package/dist/steps/base.d.ts +28 -0
  92. package/dist/steps/base.js +23 -0
  93. package/dist/steps/base.js.map +1 -0
  94. package/dist/steps/conditional-step.d.ts +12 -0
  95. package/dist/steps/conditional-step.js +106 -0
  96. package/dist/steps/conditional-step.js.map +1 -0
  97. package/{src/steps/index.ts → dist/steps/index.d.ts} +1 -9
  98. package/dist/steps/index.js +8 -0
  99. package/dist/steps/index.js.map +1 -0
  100. package/dist/steps/parallel-step.d.ts +11 -0
  101. package/dist/steps/parallel-step.js +166 -0
  102. package/dist/steps/parallel-step.js.map +1 -0
  103. package/dist/steps/prompt-step.d.ts +8 -0
  104. package/dist/steps/prompt-step.js +94 -0
  105. package/dist/steps/prompt-step.js.map +1 -0
  106. package/dist/steps/ralph-loop-step.d.ts +8 -0
  107. package/dist/steps/ralph-loop-step.js +132 -0
  108. package/dist/steps/ralph-loop-step.js.map +1 -0
  109. package/dist/steps/serial-step.d.ts +10 -0
  110. package/dist/steps/serial-step.js +57 -0
  111. package/dist/steps/serial-step.js.map +1 -0
  112. package/dist/types.d.ts +118 -0
  113. package/dist/types.js +10 -0
  114. package/dist/types.js.map +1 -0
  115. package/package.json +56 -2
  116. package/.gitattributes +0 -24
  117. package/.github/workflows/ci.yml +0 -70
  118. package/.markdownlint-cli2.jsonc +0 -16
  119. package/.prettierignore +0 -3
  120. package/.prettierrc +0 -6
  121. package/.vscode/agentic-forge.code-workspace +0 -26
  122. package/CHANGELOG.md +0 -100
  123. package/CLAUDE.md +0 -158
  124. package/CONTRIBUTING.md +0 -152
  125. package/biome.json +0 -21
  126. package/scripts/copy-assets.js +0 -21
  127. package/src/checkpoints/manager.ts +0 -119
  128. package/src/cli.ts +0 -182
  129. package/src/commands/config-cmd.ts +0 -28
  130. package/src/commands/init.ts +0 -96
  131. package/src/commands/release-notes.ts +0 -85
  132. package/src/commands/resume.ts +0 -103
  133. package/src/commands/run.ts +0 -234
  134. package/src/commands/shortcuts.ts +0 -11
  135. package/src/commands/skills-dir.ts +0 -11
  136. package/src/commands/status.ts +0 -112
  137. package/src/commands/update.ts +0 -64
  138. package/src/commands/version.ts +0 -27
  139. package/src/commands/workflows.ts +0 -129
  140. package/src/config.ts +0 -129
  141. package/src/console.ts +0 -790
  142. package/src/executor.ts +0 -354
  143. package/src/git/worktree.ts +0 -236
  144. package/src/logging/logger.ts +0 -95
  145. package/src/orchestrator.ts +0 -815
  146. package/src/parser.ts +0 -225
  147. package/src/progress.ts +0 -306
  148. package/src/ralph-loop.ts +0 -260
  149. package/src/renderer.ts +0 -164
  150. package/src/runner.ts +0 -634
  151. package/src/signal-manager.ts +0 -55
  152. package/src/steps/base.ts +0 -71
  153. package/src/steps/conditional-step.ts +0 -144
  154. package/src/steps/parallel-step.ts +0 -213
  155. package/src/steps/prompt-step.ts +0 -121
  156. package/src/steps/ralph-loop-step.ts +0 -186
  157. package/src/steps/serial-step.ts +0 -84
  158. package/src/types.ts +0 -141
  159. package/tests/config.test.ts +0 -219
  160. package/tests/console.test.ts +0 -506
  161. package/tests/executor.test.ts +0 -339
  162. package/tests/init.test.ts +0 -86
  163. package/tests/logger.test.ts +0 -110
  164. package/tests/parser.test.ts +0 -290
  165. package/tests/progress.test.ts +0 -345
  166. package/tests/ralph-loop.test.ts +0 -418
  167. package/tests/renderer.test.ts +0 -350
  168. package/tests/runner.test.ts +0 -497
  169. package/tests/setup.test.ts +0 -7
  170. package/tests/signal-manager.test.ts +0 -26
  171. package/tests/steps.test.ts +0 -412
  172. package/tests/worktree.test.ts +0 -411
  173. package/tsconfig.json +0 -18
  174. package/vitest.config.ts +0 -8
  175. /package/{src → dist}/agents/explorer.md +0 -0
  176. /package/{src → dist}/agents/reviewer.md +0 -0
  177. /package/{src → dist}/claude/.claude/skills/analyze/references/bug.md +0 -0
  178. /package/{src → dist}/claude/.claude/skills/analyze/references/debt.md +0 -0
  179. /package/{src → dist}/claude/.claude/skills/analyze/references/doc.md +0 -0
  180. /package/{src → dist}/claude/.claude/skills/analyze/references/security.md +0 -0
  181. /package/{src → dist}/claude/.claude/skills/analyze/references/style.md +0 -0
  182. /package/{src → dist}/claude/.claude/skills/orchestrate/SKILL.md +0 -0
  183. /package/{src → dist}/claude/.claude/skills/sdlc-plan/references/bug.md +0 -0
  184. /package/{src → dist}/claude/.claude/skills/sdlc-plan/references/chore.md +0 -0
  185. /package/{src → dist}/claude/.claude/skills/sdlc-plan/references/feature.md +0 -0
  186. /package/{src → dist}/claude/.claude/skills/workflow-builder/references/REFERENCE.md +0 -0
  187. /package/{src → dist}/claude/.claude/skills/workflow-builder/references/workflow-example.yaml +0 -0
  188. /package/{src → dist}/prompts/agentic-system.md +0 -0
  189. /package/{src → dist}/templates/analysis/bug.md.j2 +0 -0
  190. /package/{src → dist}/templates/analysis/debt.md.j2 +0 -0
  191. /package/{src → dist}/templates/analysis/doc.md.j2 +0 -0
  192. /package/{src → dist}/templates/analysis/security.md.j2 +0 -0
  193. /package/{src → dist}/templates/analysis/style.md.j2 +0 -0
  194. /package/{src → dist}/templates/analysis-summary.md.j2 +0 -0
  195. /package/{src → dist}/templates/checkpoint.md.j2 +0 -0
  196. /package/{src → dist}/templates/implementation-report.md.j2 +0 -0
  197. /package/{src → dist}/templates/memory.md.j2 +0 -0
  198. /package/{src → dist}/templates/plan-bug.md.j2 +0 -0
  199. /package/{src → dist}/templates/plan-chore.md.j2 +0 -0
  200. /package/{src → dist}/templates/plan-feature.md.j2 +0 -0
  201. /package/{src → dist}/templates/progress.json.j2 +0 -0
  202. /package/{src → dist}/templates/ralph-report.md.j2 +0 -0
  203. /package/{src → dist}/workflows/analyze-codebase-merge.yaml +0 -0
  204. /package/{src → dist}/workflows/analyze-codebase.yaml +0 -0
  205. /package/{src → dist}/workflows/analyze-single.yaml +0 -0
  206. /package/{src → dist}/workflows/demo.yaml +0 -0
  207. /package/{src → dist}/workflows/one-shot.yaml +0 -0
  208. /package/{src → dist}/workflows/plan-build-review.yaml +0 -0
  209. /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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"}
@@ -24,7 +24,7 @@ Analyze codebase for issues across multiple domains: bugs, technical debt, docum
24
24
 
25
25
  ### Values
26
26
 
27
- \$ARGUMENTS
27
+ Arguments: $ARGUMENTS
28
28
 
29
29
  ## Additional Resources
30
30
 
@@ -21,7 +21,7 @@ Record progress and provide context for future sessions or other agents. Use thi
21
21
 
22
22
  ### Values
23
23
 
24
- \$ARGUMENTS
24
+ Arguments: $ARGUMENTS
25
25
 
26
26
  ## Core Principles
27
27
 
@@ -21,7 +21,7 @@ Add a structured log entry to the workflow's NDJSON log file. Use this skill for
21
21
 
22
22
  ### Values
23
23
 
24
- \$ARGUMENTS
24
+ Arguments: $ARGUMENTS
25
25
 
26
26
  ## Core Principles
27
27
 
@@ -20,7 +20,7 @@ Iteratively fix issues identified in an analysis document. This skill reads the
20
20
 
21
21
  ### Values
22
22
 
23
- \$ARGUMENTS
23
+ Arguments: $ARGUMENTS
24
24
 
25
25
  ## Core Principles
26
26
 
@@ -20,7 +20,7 @@ Create and checkout a new git branch following the naming convention: `<category
20
20
 
21
21
  ### Values
22
22
 
23
- \$ARGUMENTS
23
+ Arguments: $ARGUMENTS
24
24
 
25
25
  ## Core Principles
26
26
 
@@ -20,7 +20,7 @@ Create a well-structured commit with a concise title and optional bullet-point d
20
20
 
21
21
  ### Values
22
22
 
23
- \$ARGUMENTS
23
+ Arguments: $ARGUMENTS
24
24
 
25
25
  ## Core Principles
26
26
 
@@ -21,7 +21,7 @@ Create a pull request using the GitHub CLI with a descriptive title and appropri
21
21
 
22
22
  ### Values
23
23
 
24
- \$ARGUMENTS
24
+ Arguments: $ARGUMENTS
25
25
 
26
26
  ## Core Principles
27
27
 
@@ -22,7 +22,7 @@ Create a structured implementation plan for the given task. This skill analyzes
22
22
 
23
23
  ### Values
24
24
 
25
- \$ARGUMENTS
25
+ Arguments: $ARGUMENTS
26
26
 
27
27
  ## Additional Resources
28
28
 
@@ -21,7 +21,7 @@ Review the implementation against quality standards and optionally against a pla
21
21
 
22
22
  ### Values
23
23
 
24
- \$ARGUMENTS
24
+ Arguments: $ARGUMENTS
25
25
 
26
26
  ## Core Principles
27
27
 
@@ -19,7 +19,7 @@ Create, update, explain, validate, and debug agentic-forge YAML workflows. This
19
19
 
20
20
  ### Values
21
21
 
22
- \$ARGUMENTS
22
+ Arguments: $ARGUMENTS
23
23
 
24
24
  ## Additional Resources
25
25
 
package/dist/cli.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ /** CLI entry point for agentic-forge command. */
3
+ export {};
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ /** Config command handler. */
2
+ export declare function cmdConfig(configCommand: string, key: string, value?: string): void;
@@ -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,6 @@
1
+ /** Init and configure command handlers. */
2
+ export declare function cmdInit(options: {
3
+ force?: boolean;
4
+ listOnly?: boolean;
5
+ }): void;
6
+ export declare function cmdConfigure(): void;
@@ -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