@slopus/beer 0.1.2 → 0.1.6

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 (195) hide show
  1. package/dist/_workflows/_index.d.ts +1 -1
  2. package/dist/_workflows/_index.js +7 -7
  3. package/dist/_workflows/bootstrap.d.ts +1 -1
  4. package/dist/_workflows/bootstrap.js +14 -14
  5. package/dist/_workflows/checkpointWorkflow.d.ts +1 -1
  6. package/dist/_workflows/checkpointWorkflow.js +2 -2
  7. package/dist/_workflows/context/context.d.ts +2 -2
  8. package/dist/_workflows/context/context.js +11 -11
  9. package/dist/_workflows/context/context.spec.js +1 -1
  10. package/dist/_workflows/context/utils/contextApplyConfig.d.ts +1 -1
  11. package/dist/_workflows/context/utils/contextApplyConfig.js +1 -1
  12. package/dist/_workflows/context/utils/contextApplyConfig.spec.js +1 -1
  13. package/dist/_workflows/context/utils/contextAskGithubRepo.d.ts +1 -1
  14. package/dist/_workflows/context/utils/contextAskGithubRepo.js +3 -3
  15. package/dist/_workflows/context/utils/contextAskGithubRepo.spec.js +1 -1
  16. package/dist/_workflows/context/utils/contextGitignoreEnsure.spec.js +1 -1
  17. package/dist/_workflows/context/utils/progressMultilineStart.spec.js +1 -1
  18. package/dist/_workflows/planWorkflow.d.ts +1 -1
  19. package/dist/_workflows/planWorkflow.js +9 -9
  20. package/dist/_workflows/prompts/PROMPT_AGENTS_MD.md +168 -0
  21. package/dist/_workflows/prompts/PROMPT_DECISIONS.md +372 -0
  22. package/dist/_workflows/prompts/PROMPT_PRODUCT_NAME.md +101 -0
  23. package/dist/_workflows/prompts/PROMPT_PRODUCT_PITCH.md +197 -0
  24. package/dist/_workflows/prompts/PROMPT_PRODUCT_PITCH_FINAL.md +44 -0
  25. package/dist/_workflows/prompts/PROMPT_PROJECT_BLUEPRINT.md +469 -0
  26. package/dist/_workflows/prompts/PROMPT_README.md +101 -0
  27. package/dist/_workflows/prompts/PROMPT_RESEARCH.md +407 -0
  28. package/dist/_workflows/prompts/PROMPT_RESEARCH_PROBLEMS.md +296 -0
  29. package/dist/_workflows/prompts/PROMPT_TECHNOLOGY_STACK.md +460 -0
  30. package/dist/_workflows/prompts/PROMPT_TECHNOLOGY_STACK_FINAL.md +48 -0
  31. package/dist/_workflows/ralphLoopWorkflow.d.ts +1 -1
  32. package/dist/_workflows/ralphLoopWorkflow.js +5 -5
  33. package/dist/_workflows/ralphWorkflow.d.ts +1 -1
  34. package/dist/_workflows/ralphWorkflow.js +5 -5
  35. package/dist/_workflows/researchWorkflow.d.ts +1 -1
  36. package/dist/_workflows/researchWorkflow.js +3 -3
  37. package/dist/_workflows/steps/generate.d.ts +2 -2
  38. package/dist/_workflows/steps/generate.js +3 -3
  39. package/dist/_workflows/steps/generateCommit.d.ts +1 -1
  40. package/dist/_workflows/steps/generateCommit.js +2 -2
  41. package/dist/_workflows/steps/generateDocument.d.ts +2 -2
  42. package/dist/_workflows/steps/generateDocument.js +3 -3
  43. package/dist/_workflows/steps/generateFrontmatter.d.ts +2 -2
  44. package/dist/_workflows/steps/generateFrontmatter.js +1 -1
  45. package/dist/_workflows/steps/generateProgressMessageResolve.d.ts +1 -1
  46. package/dist/_workflows/steps/generateReadme.d.ts +1 -1
  47. package/dist/_workflows/steps/generateReadme.js +2 -2
  48. package/dist/_workflows/steps/ralphExecute.d.ts +1 -1
  49. package/dist/_workflows/steps/ralphExecute.js +2 -2
  50. package/dist/_workflows/steps/ralphLoopExecute.d.ts +1 -1
  51. package/dist/_workflows/steps/ralphLoopExecute.js +2 -2
  52. package/dist/_workflows/steps/ralphLoopPlanGenerate.d.ts +1 -1
  53. package/dist/_workflows/steps/ralphLoopPlanGenerate.js +3 -3
  54. package/dist/_workflows/steps/ralphLoopPlanPathResolve.d.ts +1 -1
  55. package/dist/_workflows/steps/ralphLoopReviewRound.d.ts +1 -1
  56. package/dist/_workflows/steps/ralphLoopReviewRound.js +2 -2
  57. package/dist/_workflows/steps/ralphPlan.d.ts +1 -1
  58. package/dist/_workflows/steps/ralphPlan.js +6 -6
  59. package/dist/_workflows/steps/ralphPlanPathResolve.d.ts +1 -1
  60. package/dist/_workflows/steps/ralphReview.d.ts +1 -1
  61. package/dist/_workflows/steps/ralphReview.js +4 -4
  62. package/dist/main.js +5 -5
  63. package/dist/modules/ai/aiOutputExtract.spec.js +1 -1
  64. package/dist/modules/ai/generate.d.ts +2 -2
  65. package/dist/modules/ai/generate.js +5 -5
  66. package/dist/modules/ai/generate.spec.js +1 -1
  67. package/dist/modules/ai/generate.unit.spec.js +1 -1
  68. package/dist/modules/ai/generateEventTypes.d.ts +2 -2
  69. package/dist/modules/ai/generateFile.d.ts +2 -2
  70. package/dist/modules/ai/generateFile.js +2 -2
  71. package/dist/modules/ai/generateFile.spec.js +1 -1
  72. package/dist/modules/ai/generatePureSessionCreate.d.ts +3 -3
  73. package/dist/modules/ai/generatePureSessionCreate.js +1 -1
  74. package/dist/modules/ai/generatePureSessionCreate.spec.js +1 -1
  75. package/dist/modules/ai/generatePureText.d.ts +2 -2
  76. package/dist/modules/ai/generatePureText.js +5 -5
  77. package/dist/modules/ai/generatePureText.spec.js +1 -1
  78. package/dist/modules/ai/generateSessionCreate.d.ts +2 -2
  79. package/dist/modules/ai/generateSessionCreate.js +1 -1
  80. package/dist/modules/ai/generateSessionCreate.spec.js +1 -1
  81. package/dist/modules/ai/generateText.d.ts +2 -2
  82. package/dist/modules/ai/generateText.js +1 -1
  83. package/dist/modules/ai/generateText.spec.js +1 -1
  84. package/dist/modules/ai/generateVerify.spec.js +1 -1
  85. package/dist/modules/ai/providerGenerate.d.ts +3 -3
  86. package/dist/modules/ai/providerGenerate.js +2 -2
  87. package/dist/modules/ai/providerGenerate.spec.js +2 -2
  88. package/dist/modules/ai/providerGenerate.unit.spec.js +1 -1
  89. package/dist/modules/ai/providers/commandJSONL.d.ts +1 -1
  90. package/dist/modules/ai/providers/commandJSONL.js +2 -2
  91. package/dist/modules/ai/providers/commandJSONL.spec.js +1 -1
  92. package/dist/modules/ai/providers/piProviderGenerate.d.ts +1 -1
  93. package/dist/modules/ai/providers/piProviderGenerate.js +1 -1
  94. package/dist/modules/ai/providers/piProviderGenerate.spec.js +1 -1
  95. package/dist/modules/beer/beerOriginalPathResolve.spec.js +1 -1
  96. package/dist/modules/beer/beerSettingsRead.d.ts +1 -1
  97. package/dist/modules/beer/beerSettingsRead.spec.js +1 -1
  98. package/dist/modules/beer/beerSettingsTypes.d.ts +2 -2
  99. package/dist/modules/beer/beerSettingsWrite.d.ts +1 -1
  100. package/dist/modules/git/gitPush.js +1 -1
  101. package/dist/modules/git/gitRemoteEnsure.js +1 -1
  102. package/dist/modules/git/gitRepoCheckout.js +1 -1
  103. package/dist/modules/git/gitRepoCheckout.spec.js +2 -2
  104. package/dist/modules/git/gitRepoEnsure.js +1 -1
  105. package/dist/modules/git/gitRepoEnsure.spec.js +1 -1
  106. package/dist/modules/git/gitStageAndCommit.js +1 -1
  107. package/dist/modules/git/gitignoreEnsure.spec.js +1 -1
  108. package/dist/modules/github/githubCliEnsure.js +2 -2
  109. package/dist/modules/github/githubOwnerChoicesGet.js +1 -1
  110. package/dist/modules/github/githubRepoCreate.js +1 -1
  111. package/dist/modules/github/githubRepoExists.js +1 -1
  112. package/dist/modules/github/githubRepoNameResolve.d.ts +1 -1
  113. package/dist/modules/github/githubRepoNameResolve.js +1 -1
  114. package/dist/modules/github/githubRepoNameResolve.spec.js +1 -1
  115. package/dist/modules/github/githubRepoParse.d.ts +1 -1
  116. package/dist/modules/github/githubRepoParse.spec.js +1 -1
  117. package/dist/modules/github/githubRepoStatusGet.d.ts +1 -1
  118. package/dist/modules/github/githubRepoStatusGet.js +2 -2
  119. package/dist/modules/github/githubViewerGet.js +2 -2
  120. package/dist/modules/plan/planPromptChildren.d.ts +2 -2
  121. package/dist/modules/plan/planPromptChildren.spec.js +1 -1
  122. package/dist/modules/plan/planPromptDocument.d.ts +2 -2
  123. package/dist/modules/plan/planPromptDocument.spec.js +1 -1
  124. package/dist/modules/plan/planPromptPicker.d.ts +1 -1
  125. package/dist/modules/plan/planPromptPicker.js +1 -1
  126. package/dist/modules/plan/planPromptPicker.spec.js +1 -1
  127. package/dist/modules/plan/planPromptRoot.d.ts +1 -1
  128. package/dist/modules/plan/planPromptRoot.spec.js +1 -1
  129. package/dist/modules/plan/planSourceDocumentsResolve.d.ts +1 -1
  130. package/dist/modules/plan/planSourceDocumentsResolve.spec.js +1 -1
  131. package/dist/modules/providers/providerDetect.d.ts +1 -1
  132. package/dist/modules/providers/providerDetect.js +2 -2
  133. package/dist/modules/providers/providerDetect.spec.js +1 -1
  134. package/dist/modules/providers/providerModelSelect.d.ts +1 -1
  135. package/dist/modules/providers/providerModelSelect.spec.js +1 -1
  136. package/dist/modules/providers/providerModelsGet.d.ts +1 -1
  137. package/dist/modules/providers/providerModelsGet.js +1 -1
  138. package/dist/modules/providers/providerModelsGet.spec.js +1 -1
  139. package/dist/modules/providers/providerPriorityList.d.ts +1 -1
  140. package/dist/modules/providers/providerPriorityList.spec.js +1 -1
  141. package/dist/modules/sandbox/sandboxInferenceFilesystemPolicy.d.ts +1 -1
  142. package/dist/modules/sandbox/sandboxInferenceFilesystemPolicy.js +1 -1
  143. package/dist/modules/sandbox/sandboxInferenceFilesystemPolicy.spec.js +1 -1
  144. package/dist/modules/sandbox/sandboxInferenceGet.d.ts +2 -2
  145. package/dist/modules/sandbox/sandboxInferenceGet.js +1 -1
  146. package/dist/modules/sandbox/sandboxPassthrough.d.ts +1 -1
  147. package/dist/modules/sandbox/sandboxPassthrough.spec.js +1 -1
  148. package/dist/modules/tree/treeChildrenParse.d.ts +1 -1
  149. package/dist/modules/tree/treeChildrenRead.d.ts +1 -1
  150. package/dist/modules/tree/treeChildrenRead.spec.js +1 -1
  151. package/dist/modules/tree/treeChildrenWrite.d.ts +1 -1
  152. package/dist/modules/tree/treeChildrenWrite.spec.js +1 -1
  153. package/dist/modules/tree/treeInferenceProgressRun.d.ts +1 -1
  154. package/dist/modules/tree/treeInferenceProgressRun.js +1 -1
  155. package/dist/modules/tree/treeInferenceProgressRun.spec.js +1 -1
  156. package/dist/modules/tree/treeLeafPick.d.ts +1 -1
  157. package/dist/modules/tree/treeLeafPick.js +8 -8
  158. package/dist/modules/tree/treeLeafPick.spec.js +1 -1
  159. package/dist/modules/tree/treeNodeExpand.d.ts +1 -1
  160. package/dist/modules/tree/treeNodeExpand.js +8 -8
  161. package/dist/modules/tree/treeNodeExpand.spec.js +3 -3
  162. package/dist/modules/tree/treeNodePathResolve.d.ts +1 -1
  163. package/dist/modules/tree/treeNodeRead.d.ts +1 -1
  164. package/dist/modules/tree/treeNodeRead.spec.js +1 -1
  165. package/dist/modules/tree/treeNodeSlug.spec.js +1 -1
  166. package/dist/modules/tree/treeNodeWrite.d.ts +1 -1
  167. package/dist/modules/tree/treeNodeWrite.spec.js +1 -1
  168. package/dist/modules/tree/treeSearchRun.d.ts +1 -1
  169. package/dist/modules/tree/treeSearchRun.js +12 -12
  170. package/dist/modules/tree/treeSearchRun.spec.js +3 -3
  171. package/dist/modules/tree/treeSearchTypes.d.ts +1 -1
  172. package/dist/modules/tree/treeStateLeaves.d.ts +1 -1
  173. package/dist/modules/tree/treeStateLeaves.spec.js +1 -1
  174. package/dist/modules/tree/treeStateRead.d.ts +1 -1
  175. package/dist/modules/tree/treeStateRead.js +2 -2
  176. package/dist/modules/tree/treeStateRead.spec.js +1 -1
  177. package/dist/modules/tree/treeStateRender.d.ts +1 -1
  178. package/dist/modules/tree/treeStateRender.spec.js +1 -1
  179. package/dist/modules/util/asyncLock.spec.js +1 -1
  180. package/dist/modules/util/commandRun.d.ts +1 -1
  181. package/dist/modules/util/commandRun.js +2 -2
  182. package/dist/modules/util/commandRun.spec.js +1 -1
  183. package/dist/modules/util/pathLock.js +2 -2
  184. package/dist/modules/util/pathLock.spec.js +1 -1
  185. package/dist/modules/util/pathLockOverlap.spec.js +1 -1
  186. package/dist/release/releaseRun.js +3 -3
  187. package/dist/release/releaseVersionPrompt.js +3 -3
  188. package/dist/text/text.d.ts +2 -2
  189. package/dist/text/text.js +1 -1
  190. package/dist/text/text.spec.js +1 -1
  191. package/dist/text/textGenBuild.js +1 -1
  192. package/dist/text/textGenGenerate.spec.js +1 -1
  193. package/dist/types.d.ts +9 -9
  194. package/dist/types.js +1 -1
  195. package/package.json +3 -2
@@ -1,6 +1,6 @@
1
1
  import path from "node:path";
2
2
  import matter from "gray-matter";
3
- import { generateFile } from "@/modules/ai/generateFile.js";
3
+ import { generateFile } from "../../modules/ai/generateFile.js";
4
4
  /**
5
5
  * Generates a file and requires YAML frontmatter that matches the given schema.
6
6
  * Expects: outputFilePath is project-relative or absolute and schema is a zod object-like validator.
@@ -1,4 +1,4 @@
1
- import type { GenerateEvent } from "@/types";
1
+ import type { GenerateEvent } from "../../types.js";
2
2
  /**
3
3
  * Resolves a user-facing progress message for inference events.
4
4
  * Expects: baseMessage is already trimmed and non-empty.
@@ -1,4 +1,4 @@
1
- import type { Context } from "@/types";
1
+ import type { Context } from "../../types.js";
2
2
  export interface GenerateReadmeInput {
3
3
  sourceFullName: string;
4
4
  publishFullName: string;
@@ -1,8 +1,8 @@
1
1
  import { readFileSync } from "node:fs";
2
2
  import path from "node:path";
3
3
  import { fileURLToPath } from "node:url";
4
- import { text, textFormat } from "@text";
5
- import { generateFile } from "@/modules/ai/generateFile.js";
4
+ import { text, textFormat } from "../../text/text.js";
5
+ import { generateFile } from "../../modules/ai/generateFile.js";
6
6
  const promptTemplate = readFileSync(path.join(path.dirname(fileURLToPath(import.meta.url)), "../prompts/PROMPT_README.md"), "utf-8");
7
7
  /**
8
8
  * Generates README.md at project root using sonnet-biased inference.
@@ -1,4 +1,4 @@
1
- import type { Context } from "@/types";
1
+ import type { Context } from "../../types.js";
2
2
  /**
3
3
  * Executes the finalized ralph plan with codex-xhigh.
4
4
  * Expects: planPath points to an existing plan markdown file.
@@ -1,7 +1,7 @@
1
1
  import { readFile } from "node:fs/promises";
2
2
  import path from "node:path";
3
- import { text } from "@text";
4
- import { generate } from "@/_workflows/steps/generate.js";
3
+ import { text } from "../../text/text.js";
4
+ import { generate } from "../../_workflows/steps/generate.js";
5
5
  const executePromptTemplate = [
6
6
  "Implement this build goal in the current repository: {{buildGoal}}",
7
7
  "Use this finalized plan as the exact scope of work:",
@@ -1,4 +1,4 @@
1
- import type { Context } from "@/types";
1
+ import type { Context } from "../../types.js";
2
2
  /**
3
3
  * Executes the generated ralph-loop plan using built-in inference.
4
4
  * Expects: planPath points to an existing markdown plan file.
@@ -1,7 +1,7 @@
1
1
  import { readFile } from "node:fs/promises";
2
2
  import path from "node:path";
3
- import { text } from "@text";
4
- import { generate } from "@/_workflows/steps/generate.js";
3
+ import { text } from "../../text/text.js";
4
+ import { generate } from "../../_workflows/steps/generate.js";
5
5
  const executePromptTemplate = [
6
6
  "Implement this request in the current repository: {{buildGoal}}",
7
7
  "Follow this plan exactly, then complete all pending implementation and test tasks:",
@@ -1,4 +1,4 @@
1
- import type { Context } from "@/types";
1
+ import type { Context } from "../../types.js";
2
2
  export interface RalphLoopPlanGenerateOptions {
3
3
  planPath?: string;
4
4
  }
@@ -1,8 +1,8 @@
1
1
  import { mkdir, writeFile } from "node:fs/promises";
2
2
  import path from "node:path";
3
- import { text } from "@text";
4
- import { generate } from "@/_workflows/steps/generate.js";
5
- import { ralphLoopPlanPathResolve } from "@/_workflows/steps/ralphLoopPlanPathResolve.js";
3
+ import { text } from "../../text/text.js";
4
+ import { generate } from "../../_workflows/steps/generate.js";
5
+ import { ralphLoopPlanPathResolve } from "../../_workflows/steps/ralphLoopPlanPathResolve.js";
6
6
  const planPromptTemplate = [
7
7
  "Create a markdown implementation plan for this request: {{buildGoal}}",
8
8
  "Output only the final plan markdown (no wrappers).",
@@ -1,4 +1,4 @@
1
- import type { Context } from "@/types";
1
+ import type { Context } from "../../types.js";
2
2
  /**
3
3
  * Resolves a deterministic plan file path for ralph-loop.
4
4
  * Expects: buildGoal is user-entered free text describing what to build.
@@ -1,4 +1,4 @@
1
- import type { Context } from "@/types";
1
+ import type { Context } from "../../types.js";
2
2
  /**
3
3
  * Runs one built-in-inference review round and applies fixes in-place.
4
4
  * Expects: round is 1..3 and planPath points to an existing plan file.
@@ -1,7 +1,7 @@
1
1
  import { readFile } from "node:fs/promises";
2
2
  import path from "node:path";
3
- import { textFormatKey } from "@text";
4
- import { generate } from "@/_workflows/steps/generate.js";
3
+ import { textFormatKey } from "../../text/text.js";
4
+ import { generate } from "../../_workflows/steps/generate.js";
5
5
  const reviewPromptTemplate = [
6
6
  "Run review round {{round}} of 3 for this implementation plan:",
7
7
  "{{planContent}}",
@@ -1,4 +1,4 @@
1
- import type { Context } from "@/types";
1
+ import type { Context } from "../../types.js";
2
2
  export interface RalphPlanOptions {
3
3
  planPath?: string;
4
4
  }
@@ -1,11 +1,11 @@
1
1
  import { mkdir, writeFile } from "node:fs/promises";
2
2
  import path from "node:path";
3
- import { text, textFormatKey } from "@text";
4
- import { generateProgressMessageResolve } from "@/_workflows/steps/generateProgressMessageResolve.js";
5
- import { ralphPlanPathResolve } from "@/_workflows/steps/ralphPlanPathResolve.js";
6
- import { ralphPlanResponseParse } from "@/_workflows/steps/ralphPlanResponseParse.js";
7
- import { generateSessionCreate } from "@/modules/ai/generateSessionCreate.js";
8
- import { promptInput } from "@/modules/prompt/promptInput.js";
3
+ import { text, textFormatKey } from "../../text/text.js";
4
+ import { generateProgressMessageResolve } from "../../_workflows/steps/generateProgressMessageResolve.js";
5
+ import { ralphPlanPathResolve } from "../../_workflows/steps/ralphPlanPathResolve.js";
6
+ import { ralphPlanResponseParse } from "../../_workflows/steps/ralphPlanResponseParse.js";
7
+ import { generateSessionCreate } from "../../modules/ai/generateSessionCreate.js";
8
+ import { promptInput } from "../../modules/prompt/promptInput.js";
9
9
  const initialPlanningPromptTemplate = [
10
10
  "Create an implementation plan for this build goal: {{buildGoal}}",
11
11
  "Respond using this exact structure:",
@@ -1,4 +1,4 @@
1
- import type { Context } from "@/types";
1
+ import type { Context } from "../../types.js";
2
2
  /**
3
3
  * Resolves a deterministic plan file path for ralph.
4
4
  * Expects: buildGoal is free-form user text describing what to build.
@@ -1,4 +1,4 @@
1
- import type { Context } from "@/types";
1
+ import type { Context } from "../../types.js";
2
2
  /**
3
3
  * Runs codex-high review rounds until no issues remain or the safety cap is reached.
4
4
  * Expects: planPath points to an existing plan markdown file.
@@ -1,9 +1,9 @@
1
1
  import { readFile } from "node:fs/promises";
2
2
  import path from "node:path";
3
- import { text } from "@text";
4
- import { generateProgressMessageResolve } from "@/_workflows/steps/generateProgressMessageResolve.js";
5
- import { ralphReviewNoIssuesDetect } from "@/_workflows/steps/ralphReviewNoIssuesDetect.js";
6
- import { generateSessionCreate } from "@/modules/ai/generateSessionCreate.js";
3
+ import { text } from "../../text/text.js";
4
+ import { generateProgressMessageResolve } from "../../_workflows/steps/generateProgressMessageResolve.js";
5
+ import { ralphReviewNoIssuesDetect } from "../../_workflows/steps/ralphReviewNoIssuesDetect.js";
6
+ import { generateSessionCreate } from "../../modules/ai/generateSessionCreate.js";
7
7
  const MAX_REVIEW_ROUNDS = 10;
8
8
  const reviewInitialPromptTemplate = [
9
9
  "Review the implemented changes against this plan:",
package/dist/main.js CHANGED
@@ -1,11 +1,11 @@
1
1
  import { readFileSync } from "node:fs";
2
2
  import select from "@inquirer/select";
3
- import { text } from "@text";
3
+ import { text } from "./text/text.js";
4
4
  import { Command } from "commander";
5
- import { workflows } from "@/_workflows/_index.js";
6
- import { Context } from "@/_workflows/context/context.js";
7
- import { githubCliEnsure } from "@/modules/github/githubCliEnsure.js";
8
- import { pathResolveFromInitCwd } from "@/modules/util/pathResolveFromInitCwd.js";
5
+ import { workflows } from "./_workflows/_index.js";
6
+ import { Context } from "./_workflows/context/context.js";
7
+ import { githubCliEnsure } from "./modules/github/githubCliEnsure.js";
8
+ import { pathResolveFromInitCwd } from "./modules/util/pathResolveFromInitCwd.js";
9
9
  const pkg = JSON.parse(readFileSync(new URL("../package.json", import.meta.url), "utf-8"));
10
10
  const program = new Command();
11
11
  program
@@ -1,5 +1,5 @@
1
1
  import { describe, expect, it } from "vitest";
2
- import { aiOutputExtract } from "@/modules/ai/aiOutputExtract.js";
2
+ import { aiOutputExtract } from "../../modules/ai/aiOutputExtract.js";
3
3
  describe("aiOutputExtract", () => {
4
4
  it("extracts text from output tags", () => {
5
5
  const result = aiOutputExtract("before\n<output>Hello</output>\nafter");
@@ -1,5 +1,5 @@
1
- import type { InferenceWritePolicy } from "@/modules/sandbox/sandboxInferenceTypes.js";
2
- import type { Context, GenerateEvent, ProviderId, ProviderModelSelectionMode } from "@/types";
1
+ import type { InferenceWritePolicy } from "../../modules/sandbox/sandboxInferenceTypes.js";
2
+ import type { Context, GenerateEvent, ProviderId, ProviderModelSelectionMode } from "../../types.js";
3
3
  export interface GenerateResult {
4
4
  provider?: string;
5
5
  sessionId?: string;
@@ -1,9 +1,9 @@
1
1
  import { readFile } from "node:fs/promises";
2
- import { beerLogLine } from "@text";
3
- import { providerGenerate } from "@/modules/ai/providerGenerate.js";
4
- import { providerModelSelect } from "@/modules/providers/providerModelSelect.js";
5
- import { providerPriorityList } from "@/modules/providers/providerPriorityList.js";
6
- import { sandboxInferenceGet } from "@/modules/sandbox/sandboxInferenceGet.js";
2
+ import { beerLogLine } from "../../text/text.js";
3
+ import { providerGenerate } from "../../modules/ai/providerGenerate.js";
4
+ import { providerModelSelect } from "../../modules/providers/providerModelSelect.js";
5
+ import { providerPriorityList } from "../../modules/providers/providerPriorityList.js";
6
+ import { sandboxInferenceGet } from "../../modules/sandbox/sandboxInferenceGet.js";
7
7
  function inferMessage(message, options) {
8
8
  options?.onMessage?.(`[beer][infer] ${message}`);
9
9
  }
@@ -1,6 +1,6 @@
1
1
  import { spawnSync } from "node:child_process";
2
2
  import { describe, expect, it } from "vitest";
3
- import { generate } from "@/modules/ai/generate.js";
3
+ import { generate } from "../../modules/ai/generate.js";
4
4
  const TEST_TIMEOUT_MS = 180_000;
5
5
  function commandExists(command) {
6
6
  const result = spawnSync("zsh", ["-lc", `command -v ${command}`], {
@@ -15,7 +15,7 @@ vi.mock("@/modules/sandbox/sandboxInferenceGet.js", () => ({
15
15
  vi.mock("@/modules/ai/providerGenerate.js", () => ({
16
16
  providerGenerate: providerGenerateMock
17
17
  }));
18
- import { generate } from "@/modules/ai/generate.js";
18
+ import { generate } from "../../modules/ai/generate.js";
19
19
  describe("generate event parsing", () => {
20
20
  beforeEach(() => {
21
21
  providerPriorityListMock.mockReset();
@@ -1,5 +1,5 @@
1
- import type { ProviderEvent, ProviderTokenUsage } from "@/modules/ai/providerEventTypes.js";
2
- import type { ProviderId } from "@/modules/providers/providerTypes.js";
1
+ import type { ProviderEvent, ProviderTokenUsage } from "../../modules/ai/providerEventTypes.js";
2
+ import type { ProviderId } from "../../modules/providers/providerTypes.js";
3
3
  export interface GenerateProviderFailure {
4
4
  providerId: ProviderId;
5
5
  exitCode: number;
@@ -1,5 +1,5 @@
1
- import { type GenerateExpectedFileOutputVerify, type GeneratePermissions } from "@/modules/ai/generate.js";
2
- import type { Context } from "@/types";
1
+ import { type GenerateExpectedFileOutputVerify, type GeneratePermissions } from "../../modules/ai/generate.js";
2
+ import type { Context } from "../../types.js";
3
3
  export interface GenerateFilePermissions extends Omit<GeneratePermissions, "expectedOutput"> {
4
4
  retries?: number;
5
5
  verify?: GenerateExpectedFileOutputVerify;
@@ -1,7 +1,7 @@
1
1
  import { mkdir, stat } from "node:fs/promises";
2
2
  import path from "node:path";
3
- import { generate } from "@/modules/ai/generate.js";
4
- import { beerOriginalPathResolve } from "@/modules/beer/beerOriginalPathResolve.js";
3
+ import { generate } from "../../modules/ai/generate.js";
4
+ import { beerOriginalPathResolve } from "../../modules/beer/beerOriginalPathResolve.js";
5
5
  /**
6
6
  * Generates content and asks the model to write it into a specific file path only.
7
7
  * Retries when inference succeeds but the target file does not appear on disk.
@@ -6,7 +6,7 @@ const generateMock = vi.hoisted(() => vi.fn());
6
6
  vi.mock("./generate.js", () => ({
7
7
  generate: generateMock
8
8
  }));
9
- import { generateFile } from "@/modules/ai/generateFile.js";
9
+ import { generateFile } from "../../modules/ai/generateFile.js";
10
10
  describe("generateFile", () => {
11
11
  beforeEach(() => {
12
12
  generateMock.mockReset();
@@ -1,6 +1,6 @@
1
- import type { GenerateResult } from "@/modules/ai/generate.js";
2
- import { type GeneratePureTextPermissions } from "@/modules/ai/generatePureText.js";
3
- import type { Context } from "@/types";
1
+ import type { GenerateResult } from "../../modules/ai/generate.js";
2
+ import { type GeneratePureTextPermissions } from "../../modules/ai/generatePureText.js";
3
+ import type { Context } from "../../types.js";
4
4
  export interface PureSession {
5
5
  readonly sessionId?: string;
6
6
  generate(prompt: string, permissions?: PureSessionGeneratePermissions): Promise<GenerateResult>;
@@ -1,4 +1,4 @@
1
- import { generatePureText } from "@/modules/ai/generatePureText.js";
1
+ import { generatePureText } from "../../modules/ai/generatePureText.js";
2
2
  /**
3
3
  * Creates a stateful pure-inference session that carries provider sessionId between calls.
4
4
  * Expects: caller persists sessionId when they need to resume later.
@@ -3,7 +3,7 @@ const generatePureTextMock = vi.hoisted(() => vi.fn());
3
3
  vi.mock("@/modules/ai/generatePureText.js", () => ({
4
4
  generatePureText: generatePureTextMock
5
5
  }));
6
- import { generatePureSessionCreate } from "@/modules/ai/generatePureSessionCreate.js";
6
+ import { generatePureSessionCreate } from "../../modules/ai/generatePureSessionCreate.js";
7
7
  describe("generatePureSessionCreate", () => {
8
8
  beforeEach(() => {
9
9
  generatePureTextMock.mockReset();
@@ -1,5 +1,5 @@
1
- import type { GenerateResult } from "@/modules/ai/generate.js";
2
- import type { Context, GenerateEvent, ProviderId, ProviderModelSelectionMode } from "@/types";
1
+ import type { GenerateResult } from "../../modules/ai/generate.js";
2
+ import type { Context, GenerateEvent, ProviderId, ProviderModelSelectionMode } from "../../types.js";
3
3
  export interface GeneratePureTextPermissions {
4
4
  sessionId?: string;
5
5
  providerPriority?: readonly ProviderId[];
@@ -1,8 +1,8 @@
1
- import { beerLogLine } from "@text";
2
- import { providerGenerate } from "@/modules/ai/providerGenerate.js";
3
- import { providerModelSelect } from "@/modules/providers/providerModelSelect.js";
4
- import { providerPriorityList } from "@/modules/providers/providerPriorityList.js";
5
- import { sandboxPassthrough } from "@/modules/sandbox/sandboxPassthrough.js";
1
+ import { beerLogLine } from "../../text/text.js";
2
+ import { providerGenerate } from "../../modules/ai/providerGenerate.js";
3
+ import { providerModelSelect } from "../../modules/providers/providerModelSelect.js";
4
+ import { providerPriorityList } from "../../modules/providers/providerPriorityList.js";
5
+ import { sandboxPassthrough } from "../../modules/sandbox/sandboxPassthrough.js";
6
6
  function inferMessage(message, options) {
7
7
  options?.onMessage?.(`[beer][infer] ${message}`);
8
8
  }
@@ -11,7 +11,7 @@ vi.mock("@/modules/providers/providerModelSelect.js", () => ({
11
11
  vi.mock("@/modules/ai/providerGenerate.js", () => ({
12
12
  providerGenerate: providerGenerateMock
13
13
  }));
14
- import { generatePureText } from "@/modules/ai/generatePureText.js";
14
+ import { generatePureText } from "../../modules/ai/generatePureText.js";
15
15
  describe("generatePureText", () => {
16
16
  beforeEach(() => {
17
17
  providerPriorityListMock.mockReset();
@@ -1,5 +1,5 @@
1
- import { type GeneratePermissions, type GenerateResult } from "@/modules/ai/generate.js";
2
- import type { Context } from "@/types";
1
+ import { type GeneratePermissions, type GenerateResult } from "../../modules/ai/generate.js";
2
+ import type { Context } from "../../types.js";
3
3
  export interface Session {
4
4
  readonly sessionId?: string;
5
5
  generate(prompt: string, permissions?: SessionGeneratePermissions): Promise<GenerateResult>;
@@ -1,4 +1,4 @@
1
- import { generate } from "@/modules/ai/generate.js";
1
+ import { generate } from "../../modules/ai/generate.js";
2
2
  /**
3
3
  * Creates a stateful generate session that carries provider sessionId between calls.
4
4
  * Expects: callers persist sessionId externally when they want to resume later.
@@ -3,7 +3,7 @@ const generateMock = vi.hoisted(() => vi.fn());
3
3
  vi.mock("@/modules/ai/generate.js", () => ({
4
4
  generate: generateMock
5
5
  }));
6
- import { generateSessionCreate } from "@/modules/ai/generateSessionCreate.js";
6
+ import { generateSessionCreate } from "../../modules/ai/generateSessionCreate.js";
7
7
  describe("generateSessionCreate", () => {
8
8
  beforeEach(() => {
9
9
  generateMock.mockReset();
@@ -1,5 +1,5 @@
1
- import { type GenerateExpectedTextOutputVerify, type GeneratePermissions, type GenerateResult } from "@/modules/ai/generate.js";
2
- import type { Context } from "@/types";
1
+ import { type GenerateExpectedTextOutputVerify, type GeneratePermissions, type GenerateResult } from "../../modules/ai/generate.js";
2
+ import type { Context } from "../../types.js";
3
3
  export interface GenerateTextPermissions extends Omit<GeneratePermissions, "expectedOutput"> {
4
4
  verify?: GenerateExpectedTextOutputVerify;
5
5
  }
@@ -1,4 +1,4 @@
1
- import { generate } from "@/modules/ai/generate.js";
1
+ import { generate } from "../../modules/ai/generate.js";
2
2
  /**
3
3
  * Shortcut for text generation with default text expectation.
4
4
  * Expects: prompt is inference task text and permissions optionally constrain provider/write policy.
@@ -3,7 +3,7 @@ const generateMock = vi.hoisted(() => vi.fn());
3
3
  vi.mock("./generate.js", () => ({
4
4
  generate: generateMock
5
5
  }));
6
- import { generateText } from "@/modules/ai/generateText.js";
6
+ import { generateText } from "../../modules/ai/generateText.js";
7
7
  describe("generateText", () => {
8
8
  beforeEach(() => {
9
9
  generateMock.mockReset();
@@ -10,7 +10,7 @@ vi.mock("@/modules/ai/providerGenerate.js", () => ({
10
10
  vi.mock("@/modules/sandbox/sandboxInferenceGet.js", () => ({
11
11
  sandboxInferenceGet: sandboxInferenceGetMock
12
12
  }));
13
- import { generate } from "@/modules/ai/generate.js";
13
+ import { generate } from "../../modules/ai/generate.js";
14
14
  describe("generate expectedOutput verification", () => {
15
15
  beforeEach(() => {
16
16
  providerGenerateMock.mockReset();
@@ -1,6 +1,6 @@
1
- import type { InferenceWritePolicy } from "@/modules/sandbox/sandboxInferenceTypes.js";
2
- import type { CommandSandbox } from "@/modules/sandbox/sandboxTypes.js";
3
- import type { ProviderEvent, ProviderId, ProviderTokenUsage } from "@/types";
1
+ import type { InferenceWritePolicy } from "../../modules/sandbox/sandboxInferenceTypes.js";
2
+ import type { CommandSandbox } from "../../modules/sandbox/sandboxTypes.js";
3
+ import type { ProviderEvent, ProviderId, ProviderTokenUsage } from "../../types.js";
4
4
  export interface ProviderGenerateInput {
5
5
  providerId: ProviderId;
6
6
  command: string;
@@ -1,5 +1,5 @@
1
- import { aiOutputExtract } from "@/modules/ai/aiOutputExtract.js";
2
- import { piProviderGenerate } from "@/modules/ai/providers/piProviderGenerate.js";
1
+ import { aiOutputExtract } from "../../modules/ai/aiOutputExtract.js";
2
+ import { piProviderGenerate } from "../../modules/ai/providers/piProviderGenerate.js";
3
3
  const OUTPUT_RETRY_PROMPT = "Error: your previous response did not include <output> tags. Continue this session and return only <output>...</output>.";
4
4
  /**
5
5
  * Runs provider inference through CLI and extracts response wrapped in <output> tags.
@@ -3,8 +3,8 @@ import { chmod, mkdtemp, readFile, rm, writeFile } from "node:fs/promises";
3
3
  import os from "node:os";
4
4
  import path from "node:path";
5
5
  import { describe, expect, it } from "vitest";
6
- import { providerGenerate } from "@/modules/ai/providerGenerate.js";
7
- import { sandboxInferenceGet } from "@/modules/sandbox/sandboxInferenceGet.js";
6
+ import { providerGenerate } from "../../modules/ai/providerGenerate.js";
7
+ import { sandboxInferenceGet } from "../../modules/sandbox/sandboxInferenceGet.js";
8
8
  const TEST_TIMEOUT_MS = 180_000;
9
9
  function commandExists(command) {
10
10
  const result = spawnSync("zsh", ["-lc", `command -v ${command}`], {
@@ -3,7 +3,7 @@ const piProviderGenerateMock = vi.hoisted(() => vi.fn());
3
3
  vi.mock("@/modules/ai/providers/piProviderGenerate.js", () => ({
4
4
  piProviderGenerate: piProviderGenerateMock
5
5
  }));
6
- import { providerGenerate } from "@/modules/ai/providerGenerate.js";
6
+ import { providerGenerate } from "../../modules/ai/providerGenerate.js";
7
7
  describe("providerGenerate", () => {
8
8
  beforeEach(() => {
9
9
  piProviderGenerateMock.mockReset();
@@ -1,4 +1,4 @@
1
- import type { CommandSandbox } from "@/modules/sandbox/sandboxTypes.js";
1
+ import type { CommandSandbox } from "../../../modules/sandbox/sandboxTypes.js";
2
2
  export interface CommandJSONLInput {
3
3
  command: string;
4
4
  args: string[];
@@ -1,6 +1,6 @@
1
1
  import { spawn } from "node:child_process";
2
- import { textFormatKey } from "@text";
3
- import { pathResolveFromInitCwd } from "@/modules/util/pathResolveFromInitCwd.js";
2
+ import { textFormatKey } from "../../../text/text.js";
3
+ import { pathResolveFromInitCwd } from "../../../modules/util/pathResolveFromInitCwd.js";
4
4
  /**
5
5
  * Runs a sandboxed CLI command, streams stdout/stderr, and emits parsed JSONL events.
6
6
  * Expects: stdout emits JSON Lines; malformed JSON lines are ignored.
@@ -4,7 +4,7 @@ const spawnMock = vi.hoisted(() => vi.fn());
4
4
  vi.mock("node:child_process", () => ({
5
5
  spawn: spawnMock
6
6
  }));
7
- import { commandJSONL } from "@/modules/ai/providers/commandJSONL.js";
7
+ import { commandJSONL } from "../../../modules/ai/providers/commandJSONL.js";
8
8
  function spawnChildCreate() {
9
9
  const child = new EventEmitter();
10
10
  child.stdout = new EventEmitter();
@@ -1,4 +1,4 @@
1
- import type { CommandSandbox } from "@/modules/sandbox/sandboxTypes.js";
1
+ import type { CommandSandbox } from "../../../modules/sandbox/sandboxTypes.js";
2
2
  export interface PiProviderGenerateInput {
3
3
  command: string;
4
4
  model?: string;
@@ -1,4 +1,4 @@
1
- import { commandJSONL } from "@/modules/ai/providers/commandJSONL.js";
1
+ import { commandJSONL } from "../../../modules/ai/providers/commandJSONL.js";
2
2
  /**
3
3
  * Runs PI CLI in JSON mode and resolves the latest assistant message_end text.
4
4
  * Expects: PI emits JSONL events on stdout.
@@ -3,7 +3,7 @@ const commandJSONLMock = vi.hoisted(() => vi.fn());
3
3
  vi.mock("@/modules/ai/providers/commandJSONL.js", () => ({
4
4
  commandJSONL: commandJSONLMock
5
5
  }));
6
- import { piProviderGenerate } from "@/modules/ai/providers/piProviderGenerate.js";
6
+ import { piProviderGenerate } from "../../../modules/ai/providers/piProviderGenerate.js";
7
7
  describe("piProviderGenerate", () => {
8
8
  beforeEach(() => {
9
9
  commandJSONLMock.mockReset();
@@ -1,6 +1,6 @@
1
1
  import path from "node:path";
2
2
  import { describe, expect, it } from "vitest";
3
- import { beerOriginalPathResolve } from "@/modules/beer/beerOriginalPathResolve.js";
3
+ import { beerOriginalPathResolve } from "../../modules/beer/beerOriginalPathResolve.js";
4
4
  describe("beerOriginalPathResolve", () => {
5
5
  it("resolves to .beer/local/original under the provided project path", () => {
6
6
  const projectPath = "/tmp/test-project";
@@ -1,4 +1,4 @@
1
- import type { BeerSettings } from "@/modules/beer/beerSettingsTypes.js";
1
+ import type { BeerSettings } from "../../modules/beer/beerSettingsTypes.js";
2
2
  /**
3
3
  * Reads settings.json or returns default settings when missing.
4
4
  */
@@ -2,7 +2,7 @@ import { mkdtemp, rm, writeFile } from "node:fs/promises";
2
2
  import os from "node:os";
3
3
  import path from "node:path";
4
4
  import { describe, expect, it } from "vitest";
5
- import { beerSettingsRead } from "@/modules/beer/beerSettingsRead.js";
5
+ import { beerSettingsRead } from "../../modules/beer/beerSettingsRead.js";
6
6
  describe("beerSettingsRead", () => {
7
7
  it("ignores legacy providers field from settings.json", async () => {
8
8
  const tempDir = await mkdtemp(path.join(os.tmpdir(), "holdmybeer-settings-read-"));
@@ -1,4 +1,4 @@
1
- import type { GitHubRepoRef } from "@/modules/github/githubTypes.js";
1
+ import type { GitHubRepoRef } from "../../modules/github/githubTypes.js";
2
2
  export interface BeerSettings {
3
3
  version: 1;
4
4
  sourceRepo?: GitHubRepoRef;
@@ -8,5 +8,5 @@ export interface BeerSettings {
8
8
  productName?: string;
9
9
  updatedAt: number;
10
10
  }
11
- export type { ProviderDetection } from "@/modules/providers/providerTypes.js";
11
+ export type { ProviderDetection } from "../../modules/providers/providerTypes.js";
12
12
  //# sourceMappingURL=beerSettingsTypes.d.ts.map
@@ -1,4 +1,4 @@
1
- import type { BeerSettings } from "@/modules/beer/beerSettingsTypes.js";
1
+ import type { BeerSettings } from "../../modules/beer/beerSettingsTypes.js";
2
2
  /**
3
3
  * Persists .beer/settings.json with stable formatting.
4
4
  */
@@ -1,4 +1,4 @@
1
- import { commandRun } from "@/modules/util/commandRun.js";
1
+ import { commandRun } from "../../modules/util/commandRun.js";
2
2
  /**
3
3
  * Pushes current HEAD to the target remote branch.
4
4
  * Expects: cwd is the git repository root.
@@ -1,4 +1,4 @@
1
- import { commandRun } from "@/modules/util/commandRun.js";
1
+ import { commandRun } from "../../modules/util/commandRun.js";
2
2
  /**
3
3
  * Ensures origin points to the target remote URL.
4
4
  * Expects: cwd is the git repository root.
@@ -1,6 +1,6 @@
1
1
  import { mkdir, rm } from "node:fs/promises";
2
2
  import path from "node:path";
3
- import { commandRun } from "@/modules/util/commandRun.js";
3
+ import { commandRun } from "../../modules/util/commandRun.js";
4
4
  /**
5
5
  * Recreates a shallow clone of the repository at targetDir.
6
6
  * Returns the HEAD commit hash of the checkout for reproducibility.
@@ -2,8 +2,8 @@ import { mkdtemp, readFile, rm, writeFile } from "node:fs/promises";
2
2
  import os from "node:os";
3
3
  import path from "node:path";
4
4
  import { describe, expect, it } from "vitest";
5
- import { gitRepoCheckout } from "@/modules/git/gitRepoCheckout.js";
6
- import { commandRun } from "@/modules/util/commandRun.js";
5
+ import { gitRepoCheckout } from "../../modules/git/gitRepoCheckout.js";
6
+ import { commandRun } from "../../modules/util/commandRun.js";
7
7
  describe("gitRepoCheckout", () => {
8
8
  it("recreates a shallow clone at target path", async () => {
9
9
  const tempRoot = await mkdtemp(path.join(os.tmpdir(), "beer-git-"));