@slopus/beer 0.1.2 → 0.1.4

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 (184) 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/ralphLoopWorkflow.d.ts +1 -1
  21. package/dist/_workflows/ralphLoopWorkflow.js +5 -5
  22. package/dist/_workflows/ralphWorkflow.d.ts +1 -1
  23. package/dist/_workflows/ralphWorkflow.js +5 -5
  24. package/dist/_workflows/researchWorkflow.d.ts +1 -1
  25. package/dist/_workflows/researchWorkflow.js +3 -3
  26. package/dist/_workflows/steps/generate.d.ts +2 -2
  27. package/dist/_workflows/steps/generate.js +3 -3
  28. package/dist/_workflows/steps/generateCommit.d.ts +1 -1
  29. package/dist/_workflows/steps/generateCommit.js +2 -2
  30. package/dist/_workflows/steps/generateDocument.d.ts +2 -2
  31. package/dist/_workflows/steps/generateDocument.js +3 -3
  32. package/dist/_workflows/steps/generateFrontmatter.d.ts +2 -2
  33. package/dist/_workflows/steps/generateFrontmatter.js +1 -1
  34. package/dist/_workflows/steps/generateProgressMessageResolve.d.ts +1 -1
  35. package/dist/_workflows/steps/generateReadme.d.ts +1 -1
  36. package/dist/_workflows/steps/generateReadme.js +2 -2
  37. package/dist/_workflows/steps/ralphExecute.d.ts +1 -1
  38. package/dist/_workflows/steps/ralphExecute.js +2 -2
  39. package/dist/_workflows/steps/ralphLoopExecute.d.ts +1 -1
  40. package/dist/_workflows/steps/ralphLoopExecute.js +2 -2
  41. package/dist/_workflows/steps/ralphLoopPlanGenerate.d.ts +1 -1
  42. package/dist/_workflows/steps/ralphLoopPlanGenerate.js +3 -3
  43. package/dist/_workflows/steps/ralphLoopPlanPathResolve.d.ts +1 -1
  44. package/dist/_workflows/steps/ralphLoopReviewRound.d.ts +1 -1
  45. package/dist/_workflows/steps/ralphLoopReviewRound.js +2 -2
  46. package/dist/_workflows/steps/ralphPlan.d.ts +1 -1
  47. package/dist/_workflows/steps/ralphPlan.js +6 -6
  48. package/dist/_workflows/steps/ralphPlanPathResolve.d.ts +1 -1
  49. package/dist/_workflows/steps/ralphReview.d.ts +1 -1
  50. package/dist/_workflows/steps/ralphReview.js +4 -4
  51. package/dist/main.js +5 -5
  52. package/dist/modules/ai/aiOutputExtract.spec.js +1 -1
  53. package/dist/modules/ai/generate.d.ts +2 -2
  54. package/dist/modules/ai/generate.js +5 -5
  55. package/dist/modules/ai/generate.spec.js +1 -1
  56. package/dist/modules/ai/generate.unit.spec.js +1 -1
  57. package/dist/modules/ai/generateEventTypes.d.ts +2 -2
  58. package/dist/modules/ai/generateFile.d.ts +2 -2
  59. package/dist/modules/ai/generateFile.js +2 -2
  60. package/dist/modules/ai/generateFile.spec.js +1 -1
  61. package/dist/modules/ai/generatePureSessionCreate.d.ts +3 -3
  62. package/dist/modules/ai/generatePureSessionCreate.js +1 -1
  63. package/dist/modules/ai/generatePureSessionCreate.spec.js +1 -1
  64. package/dist/modules/ai/generatePureText.d.ts +2 -2
  65. package/dist/modules/ai/generatePureText.js +5 -5
  66. package/dist/modules/ai/generatePureText.spec.js +1 -1
  67. package/dist/modules/ai/generateSessionCreate.d.ts +2 -2
  68. package/dist/modules/ai/generateSessionCreate.js +1 -1
  69. package/dist/modules/ai/generateSessionCreate.spec.js +1 -1
  70. package/dist/modules/ai/generateText.d.ts +2 -2
  71. package/dist/modules/ai/generateText.js +1 -1
  72. package/dist/modules/ai/generateText.spec.js +1 -1
  73. package/dist/modules/ai/generateVerify.spec.js +1 -1
  74. package/dist/modules/ai/providerGenerate.d.ts +3 -3
  75. package/dist/modules/ai/providerGenerate.js +2 -2
  76. package/dist/modules/ai/providerGenerate.spec.js +2 -2
  77. package/dist/modules/ai/providerGenerate.unit.spec.js +1 -1
  78. package/dist/modules/ai/providers/commandJSONL.d.ts +1 -1
  79. package/dist/modules/ai/providers/commandJSONL.js +2 -2
  80. package/dist/modules/ai/providers/commandJSONL.spec.js +1 -1
  81. package/dist/modules/ai/providers/piProviderGenerate.d.ts +1 -1
  82. package/dist/modules/ai/providers/piProviderGenerate.js +1 -1
  83. package/dist/modules/ai/providers/piProviderGenerate.spec.js +1 -1
  84. package/dist/modules/beer/beerOriginalPathResolve.spec.js +1 -1
  85. package/dist/modules/beer/beerSettingsRead.d.ts +1 -1
  86. package/dist/modules/beer/beerSettingsRead.spec.js +1 -1
  87. package/dist/modules/beer/beerSettingsTypes.d.ts +2 -2
  88. package/dist/modules/beer/beerSettingsWrite.d.ts +1 -1
  89. package/dist/modules/git/gitPush.js +1 -1
  90. package/dist/modules/git/gitRemoteEnsure.js +1 -1
  91. package/dist/modules/git/gitRepoCheckout.js +1 -1
  92. package/dist/modules/git/gitRepoCheckout.spec.js +2 -2
  93. package/dist/modules/git/gitRepoEnsure.js +1 -1
  94. package/dist/modules/git/gitRepoEnsure.spec.js +1 -1
  95. package/dist/modules/git/gitStageAndCommit.js +1 -1
  96. package/dist/modules/git/gitignoreEnsure.spec.js +1 -1
  97. package/dist/modules/github/githubCliEnsure.js +2 -2
  98. package/dist/modules/github/githubOwnerChoicesGet.js +1 -1
  99. package/dist/modules/github/githubRepoCreate.js +1 -1
  100. package/dist/modules/github/githubRepoExists.js +1 -1
  101. package/dist/modules/github/githubRepoNameResolve.d.ts +1 -1
  102. package/dist/modules/github/githubRepoNameResolve.js +1 -1
  103. package/dist/modules/github/githubRepoNameResolve.spec.js +1 -1
  104. package/dist/modules/github/githubRepoParse.d.ts +1 -1
  105. package/dist/modules/github/githubRepoParse.spec.js +1 -1
  106. package/dist/modules/github/githubRepoStatusGet.d.ts +1 -1
  107. package/dist/modules/github/githubRepoStatusGet.js +2 -2
  108. package/dist/modules/github/githubViewerGet.js +2 -2
  109. package/dist/modules/plan/planPromptChildren.d.ts +2 -2
  110. package/dist/modules/plan/planPromptChildren.spec.js +1 -1
  111. package/dist/modules/plan/planPromptDocument.d.ts +2 -2
  112. package/dist/modules/plan/planPromptDocument.spec.js +1 -1
  113. package/dist/modules/plan/planPromptPicker.d.ts +1 -1
  114. package/dist/modules/plan/planPromptPicker.js +1 -1
  115. package/dist/modules/plan/planPromptPicker.spec.js +1 -1
  116. package/dist/modules/plan/planPromptRoot.d.ts +1 -1
  117. package/dist/modules/plan/planPromptRoot.spec.js +1 -1
  118. package/dist/modules/plan/planSourceDocumentsResolve.d.ts +1 -1
  119. package/dist/modules/plan/planSourceDocumentsResolve.spec.js +1 -1
  120. package/dist/modules/providers/providerDetect.d.ts +1 -1
  121. package/dist/modules/providers/providerDetect.js +2 -2
  122. package/dist/modules/providers/providerDetect.spec.js +1 -1
  123. package/dist/modules/providers/providerModelSelect.d.ts +1 -1
  124. package/dist/modules/providers/providerModelSelect.spec.js +1 -1
  125. package/dist/modules/providers/providerModelsGet.d.ts +1 -1
  126. package/dist/modules/providers/providerModelsGet.js +1 -1
  127. package/dist/modules/providers/providerModelsGet.spec.js +1 -1
  128. package/dist/modules/providers/providerPriorityList.d.ts +1 -1
  129. package/dist/modules/providers/providerPriorityList.spec.js +1 -1
  130. package/dist/modules/sandbox/sandboxInferenceFilesystemPolicy.d.ts +1 -1
  131. package/dist/modules/sandbox/sandboxInferenceFilesystemPolicy.js +1 -1
  132. package/dist/modules/sandbox/sandboxInferenceFilesystemPolicy.spec.js +1 -1
  133. package/dist/modules/sandbox/sandboxInferenceGet.d.ts +2 -2
  134. package/dist/modules/sandbox/sandboxInferenceGet.js +1 -1
  135. package/dist/modules/sandbox/sandboxPassthrough.d.ts +1 -1
  136. package/dist/modules/sandbox/sandboxPassthrough.spec.js +1 -1
  137. package/dist/modules/tree/treeChildrenParse.d.ts +1 -1
  138. package/dist/modules/tree/treeChildrenRead.d.ts +1 -1
  139. package/dist/modules/tree/treeChildrenRead.spec.js +1 -1
  140. package/dist/modules/tree/treeChildrenWrite.d.ts +1 -1
  141. package/dist/modules/tree/treeChildrenWrite.spec.js +1 -1
  142. package/dist/modules/tree/treeInferenceProgressRun.d.ts +1 -1
  143. package/dist/modules/tree/treeInferenceProgressRun.js +1 -1
  144. package/dist/modules/tree/treeInferenceProgressRun.spec.js +1 -1
  145. package/dist/modules/tree/treeLeafPick.d.ts +1 -1
  146. package/dist/modules/tree/treeLeafPick.js +8 -8
  147. package/dist/modules/tree/treeLeafPick.spec.js +1 -1
  148. package/dist/modules/tree/treeNodeExpand.d.ts +1 -1
  149. package/dist/modules/tree/treeNodeExpand.js +8 -8
  150. package/dist/modules/tree/treeNodeExpand.spec.js +3 -3
  151. package/dist/modules/tree/treeNodePathResolve.d.ts +1 -1
  152. package/dist/modules/tree/treeNodeRead.d.ts +1 -1
  153. package/dist/modules/tree/treeNodeRead.spec.js +1 -1
  154. package/dist/modules/tree/treeNodeSlug.spec.js +1 -1
  155. package/dist/modules/tree/treeNodeWrite.d.ts +1 -1
  156. package/dist/modules/tree/treeNodeWrite.spec.js +1 -1
  157. package/dist/modules/tree/treeSearchRun.d.ts +1 -1
  158. package/dist/modules/tree/treeSearchRun.js +12 -12
  159. package/dist/modules/tree/treeSearchRun.spec.js +3 -3
  160. package/dist/modules/tree/treeSearchTypes.d.ts +1 -1
  161. package/dist/modules/tree/treeStateLeaves.d.ts +1 -1
  162. package/dist/modules/tree/treeStateLeaves.spec.js +1 -1
  163. package/dist/modules/tree/treeStateRead.d.ts +1 -1
  164. package/dist/modules/tree/treeStateRead.js +2 -2
  165. package/dist/modules/tree/treeStateRead.spec.js +1 -1
  166. package/dist/modules/tree/treeStateRender.d.ts +1 -1
  167. package/dist/modules/tree/treeStateRender.spec.js +1 -1
  168. package/dist/modules/util/asyncLock.spec.js +1 -1
  169. package/dist/modules/util/commandRun.d.ts +1 -1
  170. package/dist/modules/util/commandRun.js +2 -2
  171. package/dist/modules/util/commandRun.spec.js +1 -1
  172. package/dist/modules/util/pathLock.js +2 -2
  173. package/dist/modules/util/pathLock.spec.js +1 -1
  174. package/dist/modules/util/pathLockOverlap.spec.js +1 -1
  175. package/dist/release/releaseRun.js +3 -3
  176. package/dist/release/releaseVersionPrompt.js +3 -3
  177. package/dist/text/text.d.ts +2 -2
  178. package/dist/text/text.js +1 -1
  179. package/dist/text/text.spec.js +1 -1
  180. package/dist/text/textGenBuild.js +1 -1
  181. package/dist/text/textGenGenerate.spec.js +1 -1
  182. package/dist/types.d.ts +9 -9
  183. package/dist/types.js +1 -1
  184. package/package.json +3 -2
@@ -2,7 +2,7 @@ import { mkdir, 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 { planSourceDocumentsResolve } from "@/modules/plan/planSourceDocumentsResolve.js";
5
+ import { planSourceDocumentsResolve } from "../../modules/plan/planSourceDocumentsResolve.js";
6
6
  describe("planSourceDocumentsResolve", () => {
7
7
  it("returns only known planning documents that exist", async () => {
8
8
  const tempDir = await mkdtemp(path.join(os.tmpdir(), "holdmybeer-plan-sources-"));
@@ -1,4 +1,4 @@
1
- import type { ProviderDetection } from "@/modules/providers/providerTypes.js";
1
+ import type { ProviderDetection } from "../../modules/providers/providerTypes.js";
2
2
  /**
3
3
  * Detects installed provider CLIs by probing known command names.
4
4
  */
@@ -1,5 +1,5 @@
1
- import { providerModelsGet } from "@/modules/providers/providerModelsGet.js";
2
- import { commandRun } from "@/modules/util/commandRun.js";
1
+ import { providerModelsGet } from "../../modules/providers/providerModelsGet.js";
2
+ import { commandRun } from "../../modules/util/commandRun.js";
3
3
  const PROVIDER_PROBES = [
4
4
  {
5
5
  id: "pi",
@@ -3,7 +3,7 @@ const commandRunMock = vi.hoisted(() => vi.fn());
3
3
  vi.mock("@/modules/util/commandRun.js", () => ({
4
4
  commandRun: commandRunMock
5
5
  }));
6
- import { providerDetect } from "@/modules/providers/providerDetect.js";
6
+ import { providerDetect } from "../../modules/providers/providerDetect.js";
7
7
  describe("providerDetect", () => {
8
8
  beforeEach(() => {
9
9
  commandRunMock.mockReset();
@@ -1,4 +1,4 @@
1
- import type { ProviderDetection, ProviderModelSelectionMode } from "@/types";
1
+ import type { ProviderDetection, ProviderModelSelectionMode } from "../../types.js";
2
2
  export interface ProviderModelSelectInput {
3
3
  provider: ProviderDetection;
4
4
  modelPriority?: readonly string[];
@@ -1,5 +1,5 @@
1
1
  import { describe, expect, it } from "vitest";
2
- import { providerModelSelect } from "@/modules/providers/providerModelSelect.js";
2
+ import { providerModelSelect } from "../../modules/providers/providerModelSelect.js";
3
3
  describe("providerModelSelect", () => {
4
4
  const provider = {
5
5
  id: "pi",
@@ -1,4 +1,4 @@
1
- import type { ProviderModel } from "@/types";
1
+ import type { ProviderModel } from "../../types.js";
2
2
  /**
3
3
  * Queries the pi RPC API and returns currently available model ids.
4
4
  * Expects: command points to a working pi CLI binary.
@@ -1,4 +1,4 @@
1
- import { commandRun } from "@/modules/util/commandRun.js";
1
+ import { commandRun } from "../../modules/util/commandRun.js";
2
2
  const RPC_MODELS_REQUEST = '{"id":"models","type":"get_available_models"}\n';
3
3
  /**
4
4
  * Queries the pi RPC API and returns currently available model ids.
@@ -3,7 +3,7 @@ const commandRunMock = vi.hoisted(() => vi.fn());
3
3
  vi.mock("@/modules/util/commandRun.js", () => ({
4
4
  commandRun: commandRunMock
5
5
  }));
6
- import { providerModelsGet } from "@/modules/providers/providerModelsGet.js";
6
+ import { providerModelsGet } from "../../modules/providers/providerModelsGet.js";
7
7
  describe("providerModelsGet", () => {
8
8
  beforeEach(() => {
9
9
  commandRunMock.mockReset();
@@ -1,4 +1,4 @@
1
- import type { ProviderDetection, ProviderId } from "@/modules/providers/providerTypes.js";
1
+ import type { ProviderDetection, ProviderId } from "../../modules/providers/providerTypes.js";
2
2
  /**
3
3
  * Returns available providers ordered by requested provider id priority.
4
4
  */
@@ -1,5 +1,5 @@
1
1
  import { describe, expect, it } from "vitest";
2
- import { providerPriorityList } from "@/modules/providers/providerPriorityList.js";
2
+ import { providerPriorityList } from "../../modules/providers/providerPriorityList.js";
3
3
  describe("providerPriorityList", () => {
4
4
  it("orders available providers by requested provider ids", () => {
5
5
  const providers = [{ id: "pi", available: true, command: "pi", priority: 1 }];
@@ -1,4 +1,4 @@
1
- import type { InferenceWritePolicy } from "@/modules/sandbox/sandboxInferenceTypes.js";
1
+ import type { InferenceWritePolicy } from "../../modules/sandbox/sandboxInferenceTypes.js";
2
2
  export interface SandboxInferenceFilesystemPolicyInput {
3
3
  writePolicy?: InferenceWritePolicy;
4
4
  projectPath?: string;
@@ -1,6 +1,6 @@
1
1
  import os from "node:os";
2
2
  import path from "node:path";
3
- import { pathResolveFromInitCwd } from "@/modules/util/pathResolveFromInitCwd.js";
3
+ import { pathResolveFromInitCwd } from "../../modules/util/pathResolveFromInitCwd.js";
4
4
  const COMMON_HOME_RELATIVE_DENY_PATHS = [
5
5
  ".ssh",
6
6
  ".gnupg",
@@ -1,6 +1,6 @@
1
1
  import path from "node:path";
2
2
  import { afterAll, beforeEach, describe, expect, it } from "vitest";
3
- import { sandboxInferenceFilesystemPolicy } from "@/modules/sandbox/sandboxInferenceFilesystemPolicy.js";
3
+ import { sandboxInferenceFilesystemPolicy } from "../../modules/sandbox/sandboxInferenceFilesystemPolicy.js";
4
4
  describe("sandboxInferenceFilesystemPolicy", () => {
5
5
  const initCwd = process.env.INIT_CWD;
6
6
  const beerProjectPath = process.env.BEER_PROJECT_PATH;
@@ -1,5 +1,5 @@
1
- import type { InferenceWritePolicy } from "@/modules/sandbox/sandboxInferenceTypes.js";
2
- import type { CommandSandbox } from "@/modules/sandbox/sandboxTypes.js";
1
+ import type { InferenceWritePolicy } from "../../modules/sandbox/sandboxInferenceTypes.js";
2
+ import type { CommandSandbox } from "../../modules/sandbox/sandboxTypes.js";
3
3
  export interface SandboxInferenceGetInput {
4
4
  writePolicy?: InferenceWritePolicy;
5
5
  projectPath?: string;
@@ -1,5 +1,5 @@
1
1
  import { SandboxManager } from "@anthropic-ai/sandbox-runtime";
2
- import { sandboxInferenceFilesystemPolicy } from "@/modules/sandbox/sandboxInferenceFilesystemPolicy.js";
2
+ import { sandboxInferenceFilesystemPolicy } from "../../modules/sandbox/sandboxInferenceFilesystemPolicy.js";
3
3
  /**
4
4
  * Returns a per-call sandbox for inference commands.
5
5
  * Network is unrestricted (no network config), writes follow writePolicy.
@@ -1,4 +1,4 @@
1
- import type { CommandSandbox } from "@/modules/sandbox/sandboxTypes.js";
1
+ import type { CommandSandbox } from "../../modules/sandbox/sandboxTypes.js";
2
2
  /**
3
3
  * Creates a sandbox implementation that does not alter commands.
4
4
  * Expects: caller uses this only when provider execution must remain tool-free.
@@ -1,5 +1,5 @@
1
1
  import { describe, expect, it } from "vitest";
2
- import { sandboxPassthrough } from "@/modules/sandbox/sandboxPassthrough.js";
2
+ import { sandboxPassthrough } from "../../modules/sandbox/sandboxPassthrough.js";
3
3
  describe("sandboxPassthrough", () => {
4
4
  it("returns command unchanged", async () => {
5
5
  const sandbox = sandboxPassthrough();
@@ -1,4 +1,4 @@
1
- import type { TreeChildEntry } from "@/types";
1
+ import type { TreeChildEntry } from "../../types.js";
2
2
  /**
3
3
  * Parses JSON text into normalized tree child entries.
4
4
  * Expects: text is a JSON array of `{ title, slug }` objects.
@@ -1,4 +1,4 @@
1
- import type { TreeChildEntry } from "@/types";
1
+ import type { TreeChildEntry } from "../../types.js";
2
2
  /**
3
3
  * Reads node children from `<dir>/children.json`.
4
4
  * Expects: dirPath points to a node directory; returns null when file does not exist.
@@ -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 { treeChildrenRead } from "@/modules/tree/treeChildrenRead.js";
5
+ import { treeChildrenRead } from "../../modules/tree/treeChildrenRead.js";
6
6
  describe("treeChildrenRead", () => {
7
7
  it("returns null when children.json is missing", async () => {
8
8
  const tempDir = await mkdtemp(path.join(os.tmpdir(), "holdmybeer-tree-children-read-"));
@@ -1,4 +1,4 @@
1
- import type { TreeChildEntry } from "@/types";
1
+ import type { TreeChildEntry } from "../../types.js";
2
2
  /**
3
3
  * Persists node children into `<dir>/children.json` using atomic rename.
4
4
  * Expects: entries are pre-validated child title/slug pairs.
@@ -2,7 +2,7 @@ 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 { treeChildrenWrite } from "@/modules/tree/treeChildrenWrite.js";
5
+ import { treeChildrenWrite } from "../../modules/tree/treeChildrenWrite.js";
6
6
  describe("treeChildrenWrite", () => {
7
7
  it("creates parent dirs and writes children.json", async () => {
8
8
  const tempDir = await mkdtemp(path.join(os.tmpdir(), "holdmybeer-tree-children-write-"));
@@ -1,4 +1,4 @@
1
- import type { Context, GenerateEvent } from "@/types";
1
+ import type { Context, GenerateEvent } from "../../types.js";
2
2
  /**
3
3
  * Runs one inference call under a dedicated progress line with event-based status updates.
4
4
  * Expects: message is a user-facing base progress label and run forwards onEvent into inference.
@@ -1,4 +1,4 @@
1
- import { generateProgressMessageResolve } from "@/_workflows/steps/generateProgressMessageResolve.js";
1
+ import { generateProgressMessageResolve } from "../../_workflows/steps/generateProgressMessageResolve.js";
2
2
  /**
3
3
  * Runs one inference call under a dedicated progress line with event-based status updates.
4
4
  * Expects: message is a user-facing base progress label and run forwards onEvent into inference.
@@ -1,5 +1,5 @@
1
1
  import { describe, expect, it, vi } from "vitest";
2
- import { treeInferenceProgressRun } from "@/modules/tree/treeInferenceProgressRun.js";
2
+ import { treeInferenceProgressRun } from "../../modules/tree/treeInferenceProgressRun.js";
3
3
  describe("treeInferenceProgressRun", () => {
4
4
  it("maps inference events to progress updates", async () => {
5
5
  const updates = [];
@@ -1,4 +1,4 @@
1
- import type { Context, TreeNode, TreeSearchConfig } from "@/types";
1
+ import type { Context, TreeNode, TreeSearchConfig } from "../../types.js";
2
2
  /**
3
3
  * Picks the next unexpanded leaf using an inference call over the rendered tree state.
4
4
  * Expects: config.rootDir contains persisted tree node metadata.
@@ -1,11 +1,11 @@
1
- import { text } from "@text";
2
- import { generateText } from "@/modules/ai/generateText.js";
3
- import { treeInferenceProgressRun } from "@/modules/tree/treeInferenceProgressRun.js";
4
- import { treeNodePathResolve } from "@/modules/tree/treeNodePathResolve.js";
5
- import { treeNodeRead } from "@/modules/tree/treeNodeRead.js";
6
- import { treeStateLeaves } from "@/modules/tree/treeStateLeaves.js";
7
- import { treeStateRead } from "@/modules/tree/treeStateRead.js";
8
- import { treeStateRender } from "@/modules/tree/treeStateRender.js";
1
+ import { text } from "../../text/text.js";
2
+ import { generateText } from "../../modules/ai/generateText.js";
3
+ import { treeInferenceProgressRun } from "../../modules/tree/treeInferenceProgressRun.js";
4
+ import { treeNodePathResolve } from "../../modules/tree/treeNodePathResolve.js";
5
+ import { treeNodeRead } from "../../modules/tree/treeNodeRead.js";
6
+ import { treeStateLeaves } from "../../modules/tree/treeStateLeaves.js";
7
+ import { treeStateRead } from "../../modules/tree/treeStateRead.js";
8
+ import { treeStateRender } from "../../modules/tree/treeStateRender.js";
9
9
  /**
10
10
  * Picks the next unexpanded leaf using an inference call over the rendered tree state.
11
11
  * Expects: config.rootDir contains persisted tree node metadata.
@@ -19,7 +19,7 @@ vi.mock("@/modules/tree/treeStateLeaves.js", () => ({
19
19
  vi.mock("@/modules/tree/treeNodeRead.js", () => ({
20
20
  treeNodeRead: treeNodeReadMock
21
21
  }));
22
- import { treeLeafPick } from "@/modules/tree/treeLeafPick.js";
22
+ import { treeLeafPick } from "../../modules/tree/treeLeafPick.js";
23
23
  describe("treeLeafPick", () => {
24
24
  beforeEach(() => {
25
25
  generateTextMock.mockReset();
@@ -1,4 +1,4 @@
1
- import type { Context, TreeChildEntry, TreeNode, TreeSearchConfig } from "@/types";
1
+ import type { Context, TreeChildEntry, TreeNode, TreeSearchConfig } from "../../types.js";
2
2
  export interface TreeNodeExpandResult {
3
3
  children: TreeChildEntry[];
4
4
  status: "expanded" | "leaf";
@@ -1,14 +1,14 @@
1
1
  import { mkdir, stat } from "node:fs/promises";
2
2
  import path from "node:path";
3
- import { textFormatKey } from "@text";
3
+ import { textFormatKey } from "../../text/text.js";
4
4
  import matter from "gray-matter";
5
- import { generateSessionCreate } from "@/modules/ai/generateSessionCreate.js";
6
- import { treeChildrenParse } from "@/modules/tree/treeChildrenParse.js";
7
- import { treeChildrenRead } from "@/modules/tree/treeChildrenRead.js";
8
- import { treeChildrenWrite } from "@/modules/tree/treeChildrenWrite.js";
9
- import { treeInferenceProgressRun } from "@/modules/tree/treeInferenceProgressRun.js";
10
- import { treeNodeRead } from "@/modules/tree/treeNodeRead.js";
11
- import { treeNodeWrite } from "@/modules/tree/treeNodeWrite.js";
5
+ import { generateSessionCreate } from "../../modules/ai/generateSessionCreate.js";
6
+ import { treeChildrenParse } from "../../modules/tree/treeChildrenParse.js";
7
+ import { treeChildrenRead } from "../../modules/tree/treeChildrenRead.js";
8
+ import { treeChildrenWrite } from "../../modules/tree/treeChildrenWrite.js";
9
+ import { treeInferenceProgressRun } from "../../modules/tree/treeInferenceProgressRun.js";
10
+ import { treeNodeRead } from "../../modules/tree/treeNodeRead.js";
11
+ import { treeNodeWrite } from "../../modules/tree/treeNodeWrite.js";
12
12
  /**
13
13
  * Expands a single node by generating its document and children list in one session.
14
14
  * Expects: node points to an on-disk tree directory with writable permissions.
@@ -6,9 +6,9 @@ const generateSessionCreateMock = vi.hoisted(() => vi.fn());
6
6
  vi.mock("@/modules/ai/generateSessionCreate.js", () => ({
7
7
  generateSessionCreate: generateSessionCreateMock
8
8
  }));
9
- import { treeNodeExpand } from "@/modules/tree/treeNodeExpand.js";
10
- import { treeNodeRead } from "@/modules/tree/treeNodeRead.js";
11
- import { treeNodeWrite } from "@/modules/tree/treeNodeWrite.js";
9
+ import { treeNodeExpand } from "../../modules/tree/treeNodeExpand.js";
10
+ import { treeNodeRead } from "../../modules/tree/treeNodeRead.js";
11
+ import { treeNodeWrite } from "../../modules/tree/treeNodeWrite.js";
12
12
  describe("treeNodeExpand", () => {
13
13
  beforeEach(() => {
14
14
  generateSessionCreateMock.mockReset();
@@ -1,4 +1,4 @@
1
- import type { TreeNode } from "@/types";
1
+ import type { TreeNode } from "../../types.js";
2
2
  /**
3
3
  * Resolves a node path relative to the tree root using slash-separated slugs.
4
4
  * Expects: node.dirPath is located under rootDir.
@@ -1,4 +1,4 @@
1
- import type { TreeNodeDisk } from "@/types";
1
+ import type { TreeNodeDisk } from "../../types.js";
2
2
  /**
3
3
  * Reads node metadata from `<dir>/node.json`.
4
4
  * Expects: dirPath points to a node directory; returns null when file does not exist.
@@ -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 { treeNodeRead } from "@/modules/tree/treeNodeRead.js";
5
+ import { treeNodeRead } from "../../modules/tree/treeNodeRead.js";
6
6
  describe("treeNodeRead", () => {
7
7
  it("returns null when node.json is missing", async () => {
8
8
  const tempDir = await mkdtemp(path.join(os.tmpdir(), "holdmybeer-tree-node-read-"));
@@ -1,5 +1,5 @@
1
1
  import { describe, expect, it } from "vitest";
2
- import { treeNodeSlug } from "@/modules/tree/treeNodeSlug.js";
2
+ import { treeNodeSlug } from "../../modules/tree/treeNodeSlug.js";
3
3
  describe("treeNodeSlug", () => {
4
4
  it("converts spaces to hyphen separators", () => {
5
5
  expect(treeNodeSlug("Authentication System")).toBe("authentication-system");
@@ -1,4 +1,4 @@
1
- import type { TreeNodeDisk } from "@/types";
1
+ import type { TreeNodeDisk } from "../../types.js";
2
2
  /**
3
3
  * Persists node metadata into `<dir>/node.json` using atomic rename.
4
4
  * Expects: nodeData contains title/slug/status and optional session id.
@@ -2,7 +2,7 @@ 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 { treeNodeWrite } from "@/modules/tree/treeNodeWrite.js";
5
+ import { treeNodeWrite } from "../../modules/tree/treeNodeWrite.js";
6
6
  describe("treeNodeWrite", () => {
7
7
  it("creates parent dirs and writes node.json", async () => {
8
8
  const tempDir = await mkdtemp(path.join(os.tmpdir(), "holdmybeer-tree-node-write-"));
@@ -1,4 +1,4 @@
1
- import type { Context, TreeSearchConfig, TreeSearchResult } from "@/types";
1
+ import type { Context, TreeSearchConfig, TreeSearchResult } from "../../types.js";
2
2
  /**
3
3
  * Runs persisted two-phase tree search: root walk, then LLM-guided leaf expansion.
4
4
  * Expects: config.documentPrompt/childrenPrompt are deterministic and rootDir is writable.
@@ -1,17 +1,17 @@
1
1
  import { mkdir } from "node:fs/promises";
2
2
  import path from "node:path";
3
- import { text } from "@text";
4
- import { generateText } from "@/modules/ai/generateText.js";
5
- import { treeChildrenParse } from "@/modules/tree/treeChildrenParse.js";
6
- import { treeChildrenRead } from "@/modules/tree/treeChildrenRead.js";
7
- import { treeChildrenWrite } from "@/modules/tree/treeChildrenWrite.js";
8
- import { treeInferenceProgressRun } from "@/modules/tree/treeInferenceProgressRun.js";
9
- import { treeLeafPick } from "@/modules/tree/treeLeafPick.js";
10
- import { treeNodeExpand } from "@/modules/tree/treeNodeExpand.js";
11
- import { treeNodeRead } from "@/modules/tree/treeNodeRead.js";
12
- import { treeNodeWrite } from "@/modules/tree/treeNodeWrite.js";
13
- import { treeStateLeaves } from "@/modules/tree/treeStateLeaves.js";
14
- import { treeStateRead } from "@/modules/tree/treeStateRead.js";
3
+ import { text } from "../../text/text.js";
4
+ import { generateText } from "../../modules/ai/generateText.js";
5
+ import { treeChildrenParse } from "../../modules/tree/treeChildrenParse.js";
6
+ import { treeChildrenRead } from "../../modules/tree/treeChildrenRead.js";
7
+ import { treeChildrenWrite } from "../../modules/tree/treeChildrenWrite.js";
8
+ import { treeInferenceProgressRun } from "../../modules/tree/treeInferenceProgressRun.js";
9
+ import { treeLeafPick } from "../../modules/tree/treeLeafPick.js";
10
+ import { treeNodeExpand } from "../../modules/tree/treeNodeExpand.js";
11
+ import { treeNodeRead } from "../../modules/tree/treeNodeRead.js";
12
+ import { treeNodeWrite } from "../../modules/tree/treeNodeWrite.js";
13
+ import { treeStateLeaves } from "../../modules/tree/treeStateLeaves.js";
14
+ import { treeStateRead } from "../../modules/tree/treeStateRead.js";
15
15
  /**
16
16
  * Runs persisted two-phase tree search: root walk, then LLM-guided leaf expansion.
17
17
  * Expects: config.documentPrompt/childrenPrompt are deterministic and rootDir is writable.
@@ -1,7 +1,7 @@
1
1
  import { mkdtemp, readFile, rm } from "node:fs/promises";
2
2
  import os from "node:os";
3
3
  import path from "node:path";
4
- import { text } from "@text";
4
+ import { text } from "../../text/text.js";
5
5
  import { beforeEach, describe, expect, it, vi } from "vitest";
6
6
  const generateTextMock = vi.hoisted(() => vi.fn());
7
7
  const treeNodeExpandMock = vi.hoisted(() => vi.fn());
@@ -15,8 +15,8 @@ vi.mock("@/modules/tree/treeNodeExpand.js", () => ({
15
15
  vi.mock("@/modules/tree/treeLeafPick.js", () => ({
16
16
  treeLeafPick: treeLeafPickMock
17
17
  }));
18
- import { treeNodeRead } from "@/modules/tree/treeNodeRead.js";
19
- import { treeSearchRun } from "@/modules/tree/treeSearchRun.js";
18
+ import { treeNodeRead } from "../../modules/tree/treeNodeRead.js";
19
+ import { treeSearchRun } from "../../modules/tree/treeSearchRun.js";
20
20
  describe("treeSearchRun", () => {
21
21
  beforeEach(() => {
22
22
  generateTextMock.mockReset();
@@ -1,5 +1,5 @@
1
1
  import type { ZodTypeAny } from "zod";
2
- import type { ProviderModelSelectionMode } from "@/types";
2
+ import type { ProviderModelSelectionMode } from "../../types.js";
3
3
  export type TreeNodeStatus = "unexpanded" | "in-progress" | "expanded" | "leaf";
4
4
  export interface TreeSearchConfig {
5
5
  rootDir: string;
@@ -1,4 +1,4 @@
1
- import type { TreeNode } from "@/types";
1
+ import type { TreeNode } from "../../types.js";
2
2
  /**
3
3
  * Collects unexpanded leaves whose parent is expanded.
4
4
  * Expects: nodes are root-level tree entries; root is treated as expanded.
@@ -1,5 +1,5 @@
1
1
  import { describe, expect, it } from "vitest";
2
- import { treeStateLeaves } from "@/modules/tree/treeStateLeaves.js";
2
+ import { treeStateLeaves } from "../../modules/tree/treeStateLeaves.js";
3
3
  describe("treeStateLeaves", () => {
4
4
  it("returns unexpanded nodes with expanded parents only", () => {
5
5
  const tree = [
@@ -1,4 +1,4 @@
1
- import type { TreeNode } from "@/types";
1
+ import type { TreeNode } from "../../types.js";
2
2
  /**
3
3
  * Reads persisted tree state from disk starting at root children.json.
4
4
  * Expects: rootDir is the tree root directory containing root-level children.json.
@@ -1,6 +1,6 @@
1
1
  import path from "node:path";
2
- import { treeChildrenRead } from "@/modules/tree/treeChildrenRead.js";
3
- import { treeNodeRead } from "@/modules/tree/treeNodeRead.js";
2
+ import { treeChildrenRead } from "../../modules/tree/treeChildrenRead.js";
3
+ import { treeNodeRead } from "../../modules/tree/treeNodeRead.js";
4
4
  /**
5
5
  * Reads persisted tree state from disk starting at root children.json.
6
6
  * Expects: rootDir is the tree root directory containing root-level children.json.
@@ -2,7 +2,7 @@ import { mkdir, 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 { treeStateRead } from "@/modules/tree/treeStateRead.js";
5
+ import { treeStateRead } from "../../modules/tree/treeStateRead.js";
6
6
  describe("treeStateRead", () => {
7
7
  it("returns empty state when root children.json is missing", async () => {
8
8
  const tempDir = await mkdtemp(path.join(os.tmpdir(), "holdmybeer-tree-state-read-"));
@@ -1,4 +1,4 @@
1
- import type { TreeNode } from "@/types";
1
+ import type { TreeNode } from "../../types.js";
2
2
  /**
3
3
  * Renders tree state into an indented outline consumable by picker prompts.
4
4
  * Expects: nodes are root-level entries (root itself is not rendered).
@@ -1,5 +1,5 @@
1
1
  import { describe, expect, it } from "vitest";
2
- import { treeStateRender } from "@/modules/tree/treeStateRender.js";
2
+ import { treeStateRender } from "../../modules/tree/treeStateRender.js";
3
3
  describe("treeStateRender", () => {
4
4
  it("renders indentation and status labels", () => {
5
5
  const tree = [
@@ -1,5 +1,5 @@
1
1
  import { describe, expect, it } from "vitest";
2
- import { AsyncLock } from "@/modules/util/asyncLock.js";
2
+ import { AsyncLock } from "../../modules/util/asyncLock.js";
3
3
  function asyncLockSleep(ms) {
4
4
  return new Promise((resolve) => setTimeout(resolve, ms));
5
5
  }
@@ -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 CommandRunOptions {
3
3
  cwd?: string;
4
4
  timeoutMs?: number | null;
@@ -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 command and captures stdout/stderr.
6
6
  * Throws on non-zero exit unless allowFailure is true.
@@ -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 { commandRun } from "@/modules/util/commandRun.js";
7
+ import { commandRun } from "../../modules/util/commandRun.js";
8
8
  function spawnSuccessChild() {
9
9
  const child = new EventEmitter();
10
10
  child.stdout = new EventEmitter();
@@ -1,7 +1,7 @@
1
1
  import { mkdir, readFile, rename, rm, writeFile } from "node:fs/promises";
2
2
  import path from "node:path";
3
- import { AsyncLock } from "@/modules/util/asyncLock.js";
4
- import { pathLockConflicts } from "@/modules/util/pathLockOverlap.js";
3
+ import { AsyncLock } from "../../modules/util/asyncLock.js";
4
+ import { pathLockConflicts } from "../../modules/util/pathLockOverlap.js";
5
5
  /**
6
6
  * Coordinates path locks in-memory or through a disk-backed JSON file.
7
7
  * Expects: all paths are in the same root namespace (usually repository-relative).
@@ -2,7 +2,7 @@ import { access, mkdtemp, readFile, rm } 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 { PathLock } from "@/modules/util/pathLock.js";
5
+ import { PathLock } from "../../modules/util/pathLock.js";
6
6
  function pathLockDiskStateParse(raw) {
7
7
  return JSON.parse(raw);
8
8
  }
@@ -1,5 +1,5 @@
1
1
  import { describe, expect, it } from "vitest";
2
- import { pathLockConflicts, pathLockOverlap } from "@/modules/util/pathLockOverlap.js";
2
+ import { pathLockConflicts, pathLockOverlap } from "../../modules/util/pathLockOverlap.js";
3
3
  describe("pathLockOverlap", () => {
4
4
  it("matches exact paths", () => {
5
5
  expect(pathLockOverlap("src/app.ts", "src/app.ts")).toBe(true);
@@ -2,9 +2,9 @@ import { spawn } from "node:child_process";
2
2
  import { readFileSync } from "node:fs";
3
3
  import { dirname, resolve } from "node:path";
4
4
  import { fileURLToPath } from "node:url";
5
- import { beerLog, beerLogLine, text } from "@text";
6
- import { commandRun } from "@/modules/util/commandRun.js";
7
- import { releaseVersionPrompt } from "@/release/releaseVersionPrompt.js";
5
+ import { beerLog, beerLogLine, text } from "../text/text.js";
6
+ import { commandRun } from "../modules/util/commandRun.js";
7
+ import { releaseVersionPrompt } from "../release/releaseVersionPrompt.js";
8
8
  const scriptDirectory = dirname(fileURLToPath(import.meta.url));
9
9
  const packageDirectory = resolve(scriptDirectory, "../..");
10
10
  const repositoryDirectory = resolve(packageDirectory, "../..");
@@ -1,6 +1,6 @@
1
- import { text, textFormatKey } from "@text";
2
- import { promptInput } from "@/modules/prompt/promptInput.js";
3
- import { releaseVersionIncrement } from "@/release/releaseVersionIncrement.js";
1
+ import { text, textFormatKey } from "../text/text.js";
2
+ import { promptInput } from "../modules/prompt/promptInput.js";
3
+ import { releaseVersionIncrement } from "../release/releaseVersionIncrement.js";
4
4
  const SEMVER_PATTERN = /^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?(?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$/;
5
5
  /**
6
6
  * Resolves the next package version using patch/minor/major/custom mode.
@@ -1,7 +1,7 @@
1
- import { type TextKey, type TextKeysWithoutValues, type TextKeysWithValues, type TextValuesForKey, text } from "@/text/text.gen.js";
1
+ import { type TextKey, type TextKeysWithoutValues, type TextKeysWithValues, type TextValuesForKey, text } from "../text/text.gen.js";
2
2
  type TextFormatValues = Record<string, string | number>;
3
3
  export { text };
4
- export type { TextKey, TextKeysWithoutValues, TextKeysWithValues, TextValuesForKey } from "@/text/text.gen.js";
4
+ export type { TextKey, TextKeysWithoutValues, TextKeysWithValues, TextValuesForKey } from "../text/text.gen.js";
5
5
  /** Replaces {key} placeholders in a template with provided values. */
6
6
  export declare function textFormat(template: string, values: TextFormatValues): string;
7
7
  /** Formats a catalog entry by key with strongly typed placeholder values. */
package/dist/text/text.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { appendFileSync, mkdirSync } from "node:fs";
2
2
  import path from "node:path";
3
- import { text } from "@/text/text.gen.js";
3
+ import { text } from "../text/text.gen.js";
4
4
  export { text };
5
5
  /** Replaces {key} placeholders in a template with provided values. */
6
6
  export function textFormat(template, values) {