poe-code 3.0.29 → 3.0.31

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 (227) hide show
  1. package/README.md +2 -2
  2. package/dist/bin/poe-claude.js +23 -0
  3. package/dist/bin/poe-codex.js +23 -0
  4. package/dist/bin/poe-kimi-cli.js +23 -0
  5. package/dist/bin/poe-opencode.js +23 -0
  6. package/dist/bin.cjs +9 -0
  7. package/dist/cli/binary-aliases.d.ts +7 -0
  8. package/dist/cli/binary-aliases.js +26 -0
  9. package/dist/cli/binary-aliases.js.map +1 -0
  10. package/dist/cli/bootstrap.d.ts +4 -0
  11. package/dist/cli/bootstrap.js +78 -0
  12. package/dist/cli/bootstrap.js.map +1 -0
  13. package/dist/cli/command-not-found.d.ts +8 -0
  14. package/dist/cli/command-not-found.js +34 -0
  15. package/dist/cli/command-not-found.js.map +1 -0
  16. package/dist/cli/commands/configure-payload.d.ts +15 -0
  17. package/dist/cli/commands/configure-payload.js +31 -0
  18. package/dist/cli/commands/configure-payload.js.map +1 -0
  19. package/dist/cli/commands/configure.d.ts +12 -0
  20. package/dist/cli/commands/configure.js +151 -0
  21. package/dist/cli/commands/configure.js.map +1 -0
  22. package/dist/cli/commands/ensure-isolated-config.d.ts +12 -0
  23. package/dist/cli/commands/ensure-isolated-config.js +53 -0
  24. package/dist/cli/commands/ensure-isolated-config.js.map +1 -0
  25. package/dist/cli/commands/generate.d.ts +9 -0
  26. package/dist/cli/commands/generate.js +322 -0
  27. package/dist/cli/commands/generate.js.map +1 -0
  28. package/dist/cli/commands/install.d.ts +4 -0
  29. package/dist/cli/commands/install.js +40 -0
  30. package/dist/cli/commands/install.js.map +1 -0
  31. package/dist/cli/commands/login.d.ts +6 -0
  32. package/dist/cli/commands/login.js +105 -0
  33. package/dist/cli/commands/login.js.map +1 -0
  34. package/dist/cli/commands/mcp.d.ts +3 -0
  35. package/dist/cli/commands/mcp.js +178 -0
  36. package/dist/cli/commands/mcp.js.map +1 -0
  37. package/dist/cli/commands/models.d.ts +3 -0
  38. package/dist/cli/commands/models.js +183 -0
  39. package/dist/cli/commands/models.js.map +1 -0
  40. package/dist/cli/commands/ralph-worktree.d.ts +3 -0
  41. package/dist/cli/commands/ralph-worktree.js +73 -0
  42. package/dist/cli/commands/ralph-worktree.js.map +1 -0
  43. package/dist/cli/commands/ralph.d.ts +3 -0
  44. package/dist/cli/commands/ralph.js +424 -0
  45. package/dist/cli/commands/ralph.js.map +1 -0
  46. package/dist/cli/commands/shared.d.ts +29 -0
  47. package/dist/cli/commands/shared.js +82 -0
  48. package/dist/cli/commands/shared.js.map +1 -0
  49. package/dist/cli/commands/skill.d.ts +3 -0
  50. package/dist/cli/commands/skill.js +242 -0
  51. package/dist/cli/commands/skill.js.map +1 -0
  52. package/dist/cli/commands/spawn.d.ts +17 -0
  53. package/dist/cli/commands/spawn.js +226 -0
  54. package/dist/cli/commands/spawn.js.map +1 -0
  55. package/dist/cli/commands/test.d.ts +8 -0
  56. package/dist/cli/commands/test.js +124 -0
  57. package/dist/cli/commands/test.js.map +1 -0
  58. package/dist/cli/commands/unconfigure.d.ts +7 -0
  59. package/dist/cli/commands/unconfigure.js +116 -0
  60. package/dist/cli/commands/unconfigure.js.map +1 -0
  61. package/dist/cli/commands/usage.d.ts +3 -0
  62. package/dist/cli/commands/usage.js +186 -0
  63. package/dist/cli/commands/usage.js.map +1 -0
  64. package/dist/cli/commands/version.d.ts +3 -0
  65. package/dist/cli/commands/version.js +31 -0
  66. package/dist/cli/commands/version.js.map +1 -0
  67. package/dist/cli/commands/wrap.d.ts +3 -0
  68. package/dist/cli/commands/wrap.js +61 -0
  69. package/dist/cli/commands/wrap.js.map +1 -0
  70. package/dist/cli/constants.d.ts +24 -0
  71. package/dist/cli/constants.js +44 -0
  72. package/dist/cli/constants.js.map +1 -0
  73. package/dist/cli/container.d.ts +42 -0
  74. package/dist/cli/container.js +90 -0
  75. package/dist/cli/container.js.map +1 -0
  76. package/dist/cli/context.d.ts +33 -0
  77. package/dist/cli/context.js +91 -0
  78. package/dist/cli/context.js.map +1 -0
  79. package/dist/cli/environment.d.ts +21 -0
  80. package/dist/cli/environment.js +106 -0
  81. package/dist/cli/environment.js.map +1 -0
  82. package/dist/cli/error-logger.d.ts +62 -0
  83. package/dist/cli/error-logger.js +155 -0
  84. package/dist/cli/error-logger.js.map +1 -0
  85. package/dist/cli/errors.d.ts +95 -0
  86. package/dist/cli/errors.js +141 -0
  87. package/dist/cli/errors.js.map +1 -0
  88. package/dist/cli/exit-signals.d.ts +4 -0
  89. package/dist/cli/exit-signals.js +8 -0
  90. package/dist/cli/exit-signals.js.map +1 -0
  91. package/dist/cli/http.d.ts +12 -0
  92. package/dist/cli/http.js +2 -0
  93. package/dist/cli/http.js.map +1 -0
  94. package/dist/cli/isolated-env-runner.d.ts +10 -0
  95. package/dist/cli/isolated-env-runner.js +50 -0
  96. package/dist/cli/isolated-env-runner.js.map +1 -0
  97. package/dist/cli/isolated-env.d.ts +24 -0
  98. package/dist/cli/isolated-env.js +210 -0
  99. package/dist/cli/isolated-env.js.map +1 -0
  100. package/dist/cli/logger.d.ts +36 -0
  101. package/dist/cli/logger.js +191 -0
  102. package/dist/cli/logger.js.map +1 -0
  103. package/dist/cli/mcp-output-format.d.ts +2 -0
  104. package/dist/cli/mcp-output-format.js +27 -0
  105. package/dist/cli/mcp-output-format.js.map +1 -0
  106. package/dist/cli/mcp-server.d.ts +21 -0
  107. package/dist/cli/mcp-server.js +321 -0
  108. package/dist/cli/mcp-server.js.map +1 -0
  109. package/dist/cli/options.d.ts +45 -0
  110. package/dist/cli/options.js +111 -0
  111. package/dist/cli/options.js.map +1 -0
  112. package/dist/cli/poe-code-command-runner.d.ts +6 -0
  113. package/dist/cli/poe-code-command-runner.js +63 -0
  114. package/dist/cli/poe-code-command-runner.js.map +1 -0
  115. package/dist/cli/program.d.ts +4 -0
  116. package/dist/cli/program.js +249 -0
  117. package/dist/cli/program.js.map +1 -0
  118. package/dist/cli/prompt-runner.d.ts +10 -0
  119. package/dist/cli/prompt-runner.js +79 -0
  120. package/dist/cli/prompt-runner.js.map +1 -0
  121. package/dist/cli/prompts.d.ts +39 -0
  122. package/dist/cli/prompts.js +42 -0
  123. package/dist/cli/prompts.js.map +1 -0
  124. package/dist/cli/service-registry.d.ts +108 -0
  125. package/dist/cli/service-registry.js +83 -0
  126. package/dist/cli/service-registry.js.map +1 -0
  127. package/dist/cli/types.d.ts +2 -0
  128. package/dist/cli/types.js +2 -0
  129. package/dist/cli/types.js.map +1 -0
  130. package/dist/cli/ui/service-menu.d.ts +7 -0
  131. package/dist/cli/ui/service-menu.js +43 -0
  132. package/dist/cli/ui/service-menu.js.map +1 -0
  133. package/dist/index.d.ts +8 -0
  134. package/dist/index.js +36812 -0
  135. package/dist/index.js.map +7 -0
  136. package/dist/providers/claude-code.d.ts +13 -0
  137. package/dist/providers/claude-code.js +143 -0
  138. package/dist/providers/claude-code.js.map +1 -0
  139. package/dist/providers/codex.d.ts +17 -0
  140. package/dist/providers/codex.js +144 -0
  141. package/dist/providers/codex.js.map +1 -0
  142. package/dist/providers/create-provider.d.ts +29 -0
  143. package/dist/providers/create-provider.js +78 -0
  144. package/dist/providers/create-provider.js.map +1 -0
  145. package/dist/providers/index.d.ts +2 -0
  146. package/dist/providers/index.js +8 -0
  147. package/dist/providers/index.js.map +1 -0
  148. package/dist/providers/kimi.d.ts +4 -0
  149. package/dist/providers/kimi.js +123 -0
  150. package/dist/providers/kimi.js.map +1 -0
  151. package/dist/providers/opencode.d.ts +3 -0
  152. package/dist/providers/opencode.js +119 -0
  153. package/dist/providers/opencode.js.map +1 -0
  154. package/dist/providers/spawn-options.d.ts +13 -0
  155. package/dist/providers/spawn-options.js +2 -0
  156. package/dist/providers/spawn-options.js.map +1 -0
  157. package/dist/sdk/container.d.ts +18 -0
  158. package/dist/sdk/container.js +127 -0
  159. package/dist/sdk/container.js.map +1 -0
  160. package/dist/sdk/credentials.d.ts +9 -0
  161. package/dist/sdk/credentials.js +35 -0
  162. package/dist/sdk/credentials.js.map +1 -0
  163. package/dist/sdk/generate.d.ts +5 -0
  164. package/dist/sdk/generate.js +97 -0
  165. package/dist/sdk/generate.js.map +1 -0
  166. package/dist/sdk/spawn-core.d.ts +23 -0
  167. package/dist/sdk/spawn-core.js +105 -0
  168. package/dist/sdk/spawn-core.js.map +1 -0
  169. package/dist/sdk/spawn.d.ts +31 -0
  170. package/dist/sdk/spawn.js +109 -0
  171. package/dist/sdk/spawn.js.map +1 -0
  172. package/dist/sdk/types.d.ts +44 -0
  173. package/dist/sdk/types.js +2 -0
  174. package/dist/sdk/types.js.map +1 -0
  175. package/dist/services/client-instance.d.ts +12 -0
  176. package/dist/services/client-instance.js +36 -0
  177. package/dist/services/client-instance.js.map +1 -0
  178. package/dist/services/credentials.d.ts +24 -0
  179. package/dist/services/credentials.js +157 -0
  180. package/dist/services/credentials.js.map +1 -0
  181. package/dist/services/llm-client.d.ts +22 -0
  182. package/dist/services/llm-client.js +138 -0
  183. package/dist/services/llm-client.js.map +1 -0
  184. package/dist/services/media-download.d.ts +17 -0
  185. package/dist/services/media-download.js +42 -0
  186. package/dist/services/media-download.js.map +1 -0
  187. package/dist/services/model-strategy.d.ts +99 -0
  188. package/dist/services/model-strategy.js +187 -0
  189. package/dist/services/model-strategy.js.map +1 -0
  190. package/dist/services/mutation-events.d.ts +4 -0
  191. package/dist/services/mutation-events.js +53 -0
  192. package/dist/services/mutation-events.js.map +1 -0
  193. package/dist/services/service-install.d.ts +22 -0
  194. package/dist/services/service-install.js +70 -0
  195. package/dist/services/service-install.js.map +1 -0
  196. package/dist/services/version.d.ts +11 -0
  197. package/dist/services/version.js +28 -0
  198. package/dist/services/version.js.map +1 -0
  199. package/dist/tools/label-generator.d.ts +11 -0
  200. package/dist/tools/label-generator.js +78 -0
  201. package/dist/tools/label-generator.js.map +1 -0
  202. package/dist/utils/backup.d.ts +5 -0
  203. package/dist/utils/backup.js +56 -0
  204. package/dist/utils/backup.js.map +1 -0
  205. package/dist/utils/cli-settings-merge.d.ts +22 -0
  206. package/dist/utils/cli-settings-merge.js +56 -0
  207. package/dist/utils/cli-settings-merge.js.map +1 -0
  208. package/dist/utils/command-checks.d.ts +36 -0
  209. package/dist/utils/command-checks.js +120 -0
  210. package/dist/utils/command-checks.js.map +1 -0
  211. package/dist/utils/command-line.d.ts +1 -0
  212. package/dist/utils/command-line.js +54 -0
  213. package/dist/utils/command-line.js.map +1 -0
  214. package/dist/utils/dry-run.d.ts +39 -0
  215. package/dist/utils/dry-run.js +315 -0
  216. package/dist/utils/dry-run.js.map +1 -0
  217. package/dist/utils/execution-context.d.ts +48 -0
  218. package/dist/utils/execution-context.js +151 -0
  219. package/dist/utils/execution-context.js.map +1 -0
  220. package/dist/utils/file-system.d.ts +21 -0
  221. package/dist/utils/file-system.js +2 -0
  222. package/dist/utils/file-system.js.map +1 -0
  223. package/dist/utils/json.d.ts +12 -0
  224. package/dist/utils/json.js +45 -0
  225. package/dist/utils/json.js.map +1 -0
  226. package/package.json +5 -2
  227. package/packages/tiny-mcp-test-server/dist/index.js +47 -0
@@ -0,0 +1,424 @@
1
+ import path from "node:path";
2
+ import { select, isCancel, cancel } from "@poe-code/design-system";
3
+ import { loadConfig, ralphBuild, logActivity, resolvePlanPath, parsePlan } from "@poe-code/ralph";
4
+ import { supportedAgents, resolveAgentSupport, installSkill } from "@poe-code/agent-skill-config";
5
+ import { renderTemplate } from "@poe-code/config-mutations";
6
+ import { ValidationError } from "../errors.js";
7
+ import { createExecutionResources, resolveCommandFlags } from "./shared.js";
8
+ import { registerRalphWorktreeCommand } from "./ralph-worktree.js";
9
+ // Template imports are lazy to avoid breaking tsx/tsc output
10
+ // (Node.js can't resolve .md/.log as ESM modules)
11
+ const templateImports = {
12
+ promptPartialPlan: () => import("../../templates/ralph/PROMPT_PARTIAL_plan.md"),
13
+ skillPlan: () => import("../../templates/ralph/SKILL_plan.md"),
14
+ promptPlan: () => import("../../templates/ralph/PROMPT_plan.md"),
15
+ promptBuild: () => import("../../templates/ralph/PROMPT_build.md"),
16
+ stateProgress: () => import("../../templates/ralph/state/progress.md"),
17
+ stateGuardrails: () => import("../../templates/ralph/state/guardrails.md"),
18
+ stateErrors: () => import("../../templates/ralph/state/errors.log"),
19
+ stateActivity: () => import("../../templates/ralph/state/activity.log"),
20
+ };
21
+ async function loadRalphTemplates() {
22
+ const [promptPartialPlan, skillPlan, promptPlan, promptBuild, stateProgress, stateGuardrails, stateErrors, stateActivity] = await Promise.all([
23
+ templateImports.promptPartialPlan(),
24
+ templateImports.skillPlan(),
25
+ templateImports.promptPlan(),
26
+ templateImports.promptBuild(),
27
+ templateImports.stateProgress(),
28
+ templateImports.stateGuardrails(),
29
+ templateImports.stateErrors(),
30
+ templateImports.stateActivity(),
31
+ ]);
32
+ return {
33
+ promptPartialPlan: promptPartialPlan.default,
34
+ skillPlan: skillPlan.default,
35
+ promptPlan: promptPlan.default,
36
+ promptBuild: promptBuild.default,
37
+ stateProgress: stateProgress.default,
38
+ stateGuardrails: stateGuardrails.default,
39
+ stateErrors: stateErrors.default,
40
+ stateActivity: stateActivity.default,
41
+ };
42
+ }
43
+ const DEFAULT_RALPH_AGENT = "claude-code";
44
+ async function pathExists(fs, filePath) {
45
+ try {
46
+ await fs.stat(filePath);
47
+ return true;
48
+ }
49
+ catch (error) {
50
+ if (error &&
51
+ typeof error === "object" &&
52
+ "code" in error &&
53
+ error.code === "ENOENT") {
54
+ return false;
55
+ }
56
+ throw error;
57
+ }
58
+ }
59
+ function resolveIterations(value) {
60
+ if (value == null) {
61
+ return 25;
62
+ }
63
+ const parsed = Number.parseInt(value, 10);
64
+ if (!Number.isFinite(parsed) || parsed < 1) {
65
+ throw new ValidationError(`Invalid iterations "${value}". Expected a positive integer.`);
66
+ }
67
+ return parsed;
68
+ }
69
+ function resolveMaxFailures(value) {
70
+ if (value == null) {
71
+ return 3;
72
+ }
73
+ const parsed = Number.parseInt(value, 10);
74
+ if (!Number.isFinite(parsed) || parsed < 1) {
75
+ throw new ValidationError(`Invalid max failures "${value}". Expected a positive integer.`);
76
+ }
77
+ return parsed;
78
+ }
79
+ async function writeFileOrSkip(args) {
80
+ const exists = await pathExists(args.fs, args.filePath);
81
+ if (exists && !args.force) {
82
+ args.logger.info(`Skip: ${args.displayPath} (already exists)`);
83
+ return "skipped";
84
+ }
85
+ await args.fs.mkdir(path.dirname(args.filePath), { recursive: true });
86
+ await args.fs.writeFile(args.filePath, args.contents, { encoding: "utf8" });
87
+ args.logger.info(`${exists ? "Overwrite" : "Create"}: ${args.displayPath}`);
88
+ return "written";
89
+ }
90
+ async function installRalphTemplates(args) {
91
+ const resources = createExecutionResources(args.container, args.flags, "ralph:install");
92
+ try {
93
+ resources.logger.intro(`ralph install (${args.agent}, ${args.scope})`);
94
+ const cwd = args.container.env.cwd;
95
+ const force = args.force;
96
+ const support = resolveAgentSupport(args.agent);
97
+ if (support.status !== "supported" || !support.config) {
98
+ throw new ValidationError(`Unsupported agent: ${args.agent}`);
99
+ }
100
+ const templates = await loadRalphTemplates();
101
+ // Install /plan skill to agent's skill directory
102
+ const skillContents = renderTemplate(templates.skillPlan, { PROMPT_PARTIAL_PLAN: templates.promptPartialPlan });
103
+ const skillResult = await installSkill(args.agent, { name: "poe-code-ralph-plan", content: skillContents }, {
104
+ fs: resources.context.fs,
105
+ cwd,
106
+ homeDir: args.container.env.homeDir,
107
+ scope: args.scope,
108
+ dryRun: args.flags.dryRun
109
+ });
110
+ resources.logger.info(`Create: ${skillResult.displayPath}`);
111
+ // Install project templates to .agents/poe-code-ralph
112
+ // PROMPT_plan.md: use string replace to preserve {{REQUEST}} and {{OUT_PATH}} as runtime variables
113
+ const promptPlanContents = templates.promptPlan.replace("{{{PROMPT_PARTIAL_PLAN}}}", templates.promptPartialPlan);
114
+ const templateWrites = [
115
+ {
116
+ targetPath: path.join(cwd, ".agents", "poe-code-ralph", "PROMPT_plan.md"),
117
+ displayPath: ".agents/poe-code-ralph/PROMPT_plan.md",
118
+ contents: promptPlanContents
119
+ },
120
+ {
121
+ targetPath: path.join(cwd, ".agents", "poe-code-ralph", "PROMPT_build.md"),
122
+ displayPath: ".agents/poe-code-ralph/PROMPT_build.md",
123
+ contents: templates.promptBuild
124
+ }
125
+ ];
126
+ for (const entry of templateWrites) {
127
+ await writeFileOrSkip({
128
+ fs: resources.context.fs,
129
+ filePath: entry.targetPath,
130
+ contents: entry.contents,
131
+ force,
132
+ logger: resources.logger,
133
+ displayPath: entry.displayPath
134
+ });
135
+ }
136
+ // Install state files to .poe-code-ralph
137
+ const stateFiles = [
138
+ {
139
+ contents: templates.stateProgress,
140
+ targetPath: path.join(cwd, ".poe-code-ralph", "progress.md"),
141
+ displayPath: ".poe-code-ralph/progress.md"
142
+ },
143
+ {
144
+ contents: templates.stateGuardrails,
145
+ targetPath: path.join(cwd, ".poe-code-ralph", "guardrails.md"),
146
+ displayPath: ".poe-code-ralph/guardrails.md"
147
+ },
148
+ {
149
+ contents: templates.stateErrors,
150
+ targetPath: path.join(cwd, ".poe-code-ralph", "errors.log"),
151
+ displayPath: ".poe-code-ralph/errors.log"
152
+ },
153
+ {
154
+ contents: templates.stateActivity,
155
+ targetPath: path.join(cwd, ".poe-code-ralph", "activity.log"),
156
+ displayPath: ".poe-code-ralph/activity.log"
157
+ }
158
+ ];
159
+ for (const entry of stateFiles) {
160
+ await writeFileOrSkip({
161
+ fs: resources.context.fs,
162
+ filePath: entry.targetPath,
163
+ contents: entry.contents,
164
+ force,
165
+ logger: resources.logger,
166
+ displayPath: entry.displayPath
167
+ });
168
+ }
169
+ resources.context.complete({
170
+ success: `Installed Ralph templates for ${args.agent}.`,
171
+ dry: `Dry run: would install Ralph templates for ${args.agent}.`
172
+ });
173
+ }
174
+ finally {
175
+ resources.context.finalize();
176
+ }
177
+ }
178
+ export function registerRalphCommand(program, container) {
179
+ const ralph = program
180
+ .command("ralph")
181
+ .description("Run Ralph iterations for a plan.");
182
+ const agent = ralph.command("agent").description("Agent helper commands.");
183
+ agent
184
+ .command("log")
185
+ .description("Append a message to the Ralph activity log.")
186
+ .option("--activity-log <path>", "Custom activity log path")
187
+ .argument("<message>", "Message to append to the activity log")
188
+ .action(async function (message) {
189
+ const flags = resolveCommandFlags(program);
190
+ if (flags.dryRun) {
191
+ return;
192
+ }
193
+ const options = this.opts();
194
+ const trimmedMessage = typeof message === "string" ? message.trim() : "";
195
+ if (trimmedMessage.length === 0) {
196
+ throw new ValidationError("Activity log message cannot be empty.");
197
+ }
198
+ let configActivityLogPath;
199
+ try {
200
+ const config = await loadConfig(container.env.cwd, { fs: container.fs });
201
+ configActivityLogPath = config.activityLogPath;
202
+ }
203
+ catch (error) {
204
+ const message = error instanceof Error ? error.message : String(error);
205
+ throw new ValidationError(message);
206
+ }
207
+ const rawPath = options.activityLog?.trim() || configActivityLogPath || ".poe-code-ralph/activity.log";
208
+ const resolvedPath = path.isAbsolute(rawPath)
209
+ ? rawPath
210
+ : path.resolve(container.env.cwd, rawPath);
211
+ await logActivity(resolvedPath, trimmedMessage, {
212
+ fs: container.fs
213
+ });
214
+ });
215
+ agent
216
+ .command("validate-plan")
217
+ .description("Validate a Ralph plan YAML file.")
218
+ .option("--plan <path>", "Path to the plan file")
219
+ .action(async function () {
220
+ const options = this.opts();
221
+ const cwd = container.env.cwd;
222
+ const planPath = options.plan?.trim();
223
+ if (!planPath) {
224
+ throw new ValidationError("--plan <path> is required.");
225
+ }
226
+ const resolvedPath = path.isAbsolute(planPath)
227
+ ? planPath
228
+ : path.resolve(cwd, planPath);
229
+ let content;
230
+ try {
231
+ content = await container.fs.readFile(resolvedPath, "utf8");
232
+ }
233
+ catch (error) {
234
+ if (error &&
235
+ typeof error === "object" &&
236
+ "code" in error &&
237
+ error.code === "ENOENT") {
238
+ throw new ValidationError(`Plan file not found: ${planPath}`);
239
+ }
240
+ throw error;
241
+ }
242
+ try {
243
+ parsePlan(content);
244
+ console.log(`Plan valid: ${planPath}`);
245
+ }
246
+ catch (error) {
247
+ const message = error instanceof Error ? error.message : String(error);
248
+ throw new ValidationError(`Invalid plan: ${message}`);
249
+ }
250
+ });
251
+ ralph
252
+ .command("install")
253
+ .description("Install Ralph templates and /plan skill.")
254
+ .option("--force", "Overwrite existing files")
255
+ .option("--agent <name>", "Agent to install skills for")
256
+ .option("--local", "Use local scope (in the current project)")
257
+ .option("--global", "Use global scope (in the user home directory)")
258
+ .action(async function () {
259
+ const flags = resolveCommandFlags(program);
260
+ const options = this.opts();
261
+ if (options.local && options.global) {
262
+ throw new ValidationError("Use either --local or --global, not both.");
263
+ }
264
+ let agent = options.agent;
265
+ if (!agent) {
266
+ if (flags.assumeYes) {
267
+ agent = DEFAULT_RALPH_AGENT;
268
+ }
269
+ else {
270
+ const selected = await select({
271
+ message: "Select agent to install Ralph for:",
272
+ options: supportedAgents.map((a) => ({ value: a, label: a }))
273
+ });
274
+ if (isCancel(selected)) {
275
+ cancel("Operation cancelled");
276
+ return;
277
+ }
278
+ agent = selected;
279
+ }
280
+ }
281
+ const support = resolveAgentSupport(agent);
282
+ if (support.status === "unknown") {
283
+ throw new ValidationError(`Unknown agent: ${agent}`);
284
+ }
285
+ if (support.status === "unsupported") {
286
+ throw new ValidationError(`Skills not supported for ${support.id}.`);
287
+ }
288
+ let scope;
289
+ if (options.local) {
290
+ scope = "local";
291
+ }
292
+ else if (options.global) {
293
+ scope = "global";
294
+ }
295
+ else if (flags.assumeYes) {
296
+ scope = "local";
297
+ }
298
+ else {
299
+ const selected = await select({
300
+ message: "Select scope:",
301
+ options: [
302
+ { value: "local", label: "Local (project)" },
303
+ { value: "global", label: "Global (user home)" }
304
+ ]
305
+ });
306
+ if (isCancel(selected)) {
307
+ cancel("Operation cancelled");
308
+ return;
309
+ }
310
+ scope = selected;
311
+ }
312
+ await installRalphTemplates({
313
+ container,
314
+ flags,
315
+ force: Boolean(options.force),
316
+ agent: support.id ?? agent,
317
+ scope
318
+ });
319
+ });
320
+ ralph
321
+ .command("build")
322
+ .description("Run the Ralph build loop for the selected plan.")
323
+ .option("--plan <path>", "Path to the plan file")
324
+ .option("--agent <name>", "Agent name to run (default: codex)")
325
+ .option("--no-commit", "Instruct the agent not to commit changes")
326
+ .option("--max-failures <n>", "Warn after <n> consecutive failures (default 3)")
327
+ .option("--pause-on-overbake", "Pause and prompt when overbaking is detected")
328
+ .option("--worktree", "Run the build loop in an isolated git worktree")
329
+ .option("--worktree-name <name>", "Name for the worktree (default: derived from plan file name)")
330
+ .argument("[iterations]", "Number of iterations to run (default 25)")
331
+ .action(async function (iterations) {
332
+ const flags = resolveCommandFlags(program);
333
+ const options = this.opts();
334
+ const resources = createExecutionResources(container, flags, "ralph:build");
335
+ try {
336
+ resources.logger.intro("ralph build");
337
+ if (flags.dryRun) {
338
+ throw new ValidationError("ralph build does not support --dry-run. Use --no-commit instead.");
339
+ }
340
+ let config;
341
+ try {
342
+ config = await loadConfig(container.env.cwd, { fs: container.fs });
343
+ }
344
+ catch (error) {
345
+ const message = error instanceof Error ? error.message : String(error);
346
+ throw new ValidationError(message);
347
+ }
348
+ let planPath;
349
+ try {
350
+ planPath = await resolvePlanPath({
351
+ cwd: container.env.cwd,
352
+ plan: options.plan ?? config.planPath,
353
+ fs: container.fs
354
+ });
355
+ }
356
+ catch (error) {
357
+ const message = error instanceof Error ? error.message : String(error);
358
+ throw new ValidationError(message);
359
+ }
360
+ if (!planPath) {
361
+ return;
362
+ }
363
+ const maxIterations = typeof iterations === "string" ? resolveIterations(iterations) : config.maxIterations ?? 25;
364
+ const agent = options.agent?.trim() ? options.agent.trim() : config.agent ?? "codex";
365
+ const noCommit = options.commit === false ? true : config.noCommit ?? false;
366
+ const staleSeconds = config.staleSeconds ?? 60;
367
+ const maxFailures = typeof options.maxFailures === "string" ? resolveMaxFailures(options.maxFailures) : undefined;
368
+ const pauseOnOverbake = Boolean(options.pauseOnOverbake);
369
+ const worktreeEnabled = Boolean(options.worktree);
370
+ const worktree = worktreeEnabled
371
+ ? { enabled: true, name: options.worktreeName?.trim() || undefined }
372
+ : undefined;
373
+ const cwd = container.env.cwd;
374
+ resources.logger.info(`Plan: ${planPath}`);
375
+ resources.logger.info(`Agent: ${agent}`);
376
+ resources.logger.info(`Iterations: ${maxIterations}`);
377
+ if (noCommit)
378
+ resources.logger.info("No-commit: true");
379
+ if (worktree)
380
+ resources.logger.info(`Worktree: ${worktree.name ?? "(auto)"}`);
381
+ try {
382
+ const planContent = await container.fs.readFile(path.resolve(cwd, planPath), "utf8");
383
+ const plan = parsePlan(planContent);
384
+ const total = plan.stories.length;
385
+ const done = plan.stories.filter((s) => s.status === "done").length;
386
+ const inProgress = plan.stories.filter((s) => s.status === "in_progress").length;
387
+ const open = total - done - inProgress;
388
+ resources.logger.info(`Stories: ${done}/${total} done${inProgress ? `, ${inProgress} in progress` : ""}${open ? `, ${open} open` : ""}`);
389
+ }
390
+ catch {
391
+ // Plan file may not be parseable yet
392
+ }
393
+ await ralphBuild({
394
+ planPath,
395
+ progressPath: config.progressPath,
396
+ guardrailsPath: config.guardrailsPath,
397
+ errorsLogPath: config.errorsLogPath,
398
+ activityLogPath: config.activityLogPath,
399
+ maxIterations,
400
+ maxFailures,
401
+ pauseOnOverbake,
402
+ agent,
403
+ noCommit,
404
+ staleSeconds,
405
+ cwd,
406
+ worktree
407
+ });
408
+ resources.logger.success("Ralph run finished.");
409
+ }
410
+ finally {
411
+ resources.context.finalize();
412
+ }
413
+ });
414
+ registerRalphWorktreeCommand(ralph, container);
415
+ ralph
416
+ .command("plan")
417
+ .description("Generate a plan file via an agent.")
418
+ .option("--out <path>", "Output path for generated plan YAML")
419
+ .argument("[request]", "Inline plan request")
420
+ .action(async function () {
421
+ throw new ValidationError("Interactive planning is not yet available. Create your plan YAML manually or use the poe-code-ralph-plan skill inside your agent.");
422
+ });
423
+ }
424
+ //# sourceMappingURL=ralph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ralph.js","sourceRoot":"","sources":["../../../src/cli/commands/ralph.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import type { Command } from "commander";
2
+ import type { CliContainer } from "../container.js";
3
+ import type { ProviderService, ProviderContext, ProviderIsolatedEnv } from "../service-registry.js";
4
+ import { type CommandContext } from "../context.js";
5
+ import type { ScopedLogger } from "../logger.js";
6
+ import type { MutationObservers } from "@poe-code/config-mutations";
7
+ export interface CommandFlags {
8
+ dryRun: boolean;
9
+ assumeYes: boolean;
10
+ verbose: boolean;
11
+ }
12
+ export interface ExecutionResources {
13
+ logger: ScopedLogger;
14
+ context: CommandContext;
15
+ }
16
+ export declare function resolveCommandFlags(program: Command): CommandFlags;
17
+ export declare function createExecutionResources(container: CliContainer, flags: CommandFlags, scope: string): ExecutionResources;
18
+ export declare function buildProviderContext(container: CliContainer, adapter: ProviderService, resources: ExecutionResources): ProviderContext;
19
+ export declare function listIsolatedServiceIds(container: CliContainer): string[];
20
+ export declare function resolveServiceAdapter(container: CliContainer, service: string): ProviderService;
21
+ export declare function formatServiceList(names: string[]): string;
22
+ export declare function applyIsolatedConfiguration(input: {
23
+ adapter: ProviderService;
24
+ providerContext: ProviderContext;
25
+ payload: unknown;
26
+ isolated: ProviderIsolatedEnv;
27
+ providerName: string;
28
+ observers?: MutationObservers;
29
+ }): Promise<void>;
@@ -0,0 +1,82 @@
1
+ import { createLoggingCommandRunner } from "../context.js";
2
+ import { resolveIsolatedTargetDirectory } from "../isolated-env.js";
3
+ export function resolveCommandFlags(program) {
4
+ const opts = program.optsWithGlobals();
5
+ return {
6
+ dryRun: Boolean(opts.dryRun),
7
+ assumeYes: Boolean(opts.yes),
8
+ verbose: Boolean(opts.verbose)
9
+ };
10
+ }
11
+ export function createExecutionResources(container, flags, scope) {
12
+ const baseLogger = container.loggerFactory.create({
13
+ dryRun: flags.dryRun,
14
+ verbose: flags.verbose,
15
+ scope
16
+ });
17
+ const runner = createLoggingCommandRunner(container.commandRunner, baseLogger);
18
+ const context = container.contextFactory.create({
19
+ dryRun: flags.dryRun,
20
+ logger: baseLogger,
21
+ runner
22
+ });
23
+ return {
24
+ logger: baseLogger,
25
+ context
26
+ };
27
+ }
28
+ export function buildProviderContext(container, adapter, resources) {
29
+ const runCheck = createCheckRunner(resources);
30
+ return {
31
+ env: container.env,
32
+ command: resources.context,
33
+ logger: resources.logger,
34
+ runCheck
35
+ };
36
+ }
37
+ function createCheckRunner(resources) {
38
+ return async (check) => {
39
+ await check.run({
40
+ isDryRun: resources.logger.context.dryRun,
41
+ runCommand: resources.context.runCommand,
42
+ logDryRun: (message) => resources.logger.dryRun(message)
43
+ });
44
+ };
45
+ }
46
+ export function listIsolatedServiceIds(container) {
47
+ return container.registry
48
+ .list()
49
+ .filter((provider) => Boolean(provider.isolatedEnv))
50
+ .map((provider) => provider.name);
51
+ }
52
+ export function resolveServiceAdapter(container, service) {
53
+ const adapter = container.registry.get(service);
54
+ if (!adapter) {
55
+ throw new Error(`Unknown agent "${service}".`);
56
+ }
57
+ return adapter;
58
+ }
59
+ export function formatServiceList(names) {
60
+ const unique = Array.from(new Set(names.filter((name) => name.length > 0)));
61
+ if (unique.length === 0) {
62
+ return "";
63
+ }
64
+ return ` (${unique.join(" | ")})`;
65
+ }
66
+ export async function applyIsolatedConfiguration(input) {
67
+ await input.adapter.configure({
68
+ fs: input.providerContext.command.fs,
69
+ env: input.providerContext.env,
70
+ command: input.providerContext.command,
71
+ options: input.payload,
72
+ pathMapper: {
73
+ mapTargetDirectory: ({ targetDirectory }) => resolveIsolatedTargetDirectory({
74
+ targetDirectory,
75
+ isolated: input.isolated,
76
+ env: input.providerContext.env,
77
+ providerName: input.providerName
78
+ })
79
+ }
80
+ }, input.observers ? { observers: input.observers } : undefined);
81
+ }
82
+ //# sourceMappingURL=shared.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/cli/commands/shared.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Command } from "commander";
2
+ import type { CliContainer } from "../container.js";
3
+ export declare function registerSkillCommand(program: Command, container: CliContainer): void;