codeharness 0.36.3 → 0.36.5

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.
@@ -2895,7 +2895,7 @@ function generateDockerfileTemplate(projectDir, stackOrDetections) {
2895
2895
  }
2896
2896
 
2897
2897
  // src/modules/infra/init-project.ts
2898
- var HARNESS_VERSION = true ? "0.36.3" : "0.0.0-dev";
2898
+ var HARNESS_VERSION = true ? "0.36.5" : "0.0.0-dev";
2899
2899
  function failResult(opts, error) {
2900
2900
  return {
2901
2901
  status: "fail",
@@ -16,7 +16,7 @@ import {
16
16
  stopCollectorOnly,
17
17
  stopSharedStack,
18
18
  stopStack
19
- } from "./chunk-2FHBRGG7.js";
19
+ } from "./chunk-3UH6SVBO.js";
20
20
  export {
21
21
  checkRemoteEndpoint,
22
22
  cleanupOrphanedContainers,
package/dist/index.js CHANGED
@@ -40,7 +40,7 @@ import {
40
40
  validateDockerfile,
41
41
  warn,
42
42
  writeState
43
- } from "./chunk-2FHBRGG7.js";
43
+ } from "./chunk-3UH6SVBO.js";
44
44
 
45
45
  // src/index.ts
46
46
  import { Command } from "commander";
@@ -3175,7 +3175,7 @@ function formatCoverageContextMessage(coverage, target) {
3175
3175
  var TASK_PROMPTS = {
3176
3176
  "create-story": (key) => `Create the story spec for ${key}. Read the epic definitions and architecture docs. Write a complete story file with acceptance criteria, tasks, and dev notes. CRITICAL: Every AC must be testable by a blind QA agent using ONLY a user guide + browser/API/CLI access. No AC should reference source code, internal data structures, or implementation details like O(1) complexity. Each AC must describe observable behavior that can be verified through UI interaction (agent-browser), API calls (curl), CLI commands (docker exec), or log inspection (docker logs). Wrap output in <story-spec>...</story-spec> tags.`,
3177
3177
  "implement": (key) => `Implement story ${key}`,
3178
- "check": (key) => `Run automated checks for story ${key}. Run ONLY these commands: 1) \`npx vitest run\` (unit tests), 2) \`npm run lint\` (linter). Do NOT run \`npm test\` (BATS integration tests) \u2014 those require the installed CLI binary and Docker, which are not available in the sandbox. If vitest and lint both pass, include <verdict>pass</verdict>. If either fails, include <verdict>fail</verdict> with the actual error output. Only report failures from YOUR test run, not from previous sessions.`,
3178
+ "check": (key) => `Run automated checks for story ${key}. Execute the project's test suite and linter. Include <verdict>pass</verdict> or <verdict>fail</verdict> in your response.`,
3179
3179
  "review": (key) => `Review the implementation of story ${key}. Check for correctness, security issues, architecture violations, and AC coverage. Include <verdict>pass</verdict> or <verdict>fail</verdict> in your response. If fail, include <issues>...</issues>.`,
3180
3180
  "document": (key) => `Write user documentation for story ${key}. Describe what was built and how to use it from a user's perspective. No source code. Wrap documentation in <user-docs>...</user-docs> tags.`,
3181
3181
  "deploy": () => `Provision the Docker environment for this project. Check for docker-compose.yml, start containers, verify health. Wrap report in <deploy-report>...</deploy-report> tags with status, containers, URLs, credentials, health.`,
@@ -3635,6 +3635,10 @@ var loopIterationActor = fromPromise2(async ({ input }) => {
3635
3635
  }
3636
3636
  if (haltedInLoop) break;
3637
3637
  }
3638
+ if (tasksCompleted === 0 && !haltedInLoop && errors.length > 0) {
3639
+ warn(`workflow-machine: loop iteration produced zero completions with ${errors.length} error(s) \u2014 halting to prevent infinite loop`);
3640
+ haltedInLoop = true;
3641
+ }
3638
3642
  return { ...input, currentState, errors, tasksCompleted, halted: haltedInLoop, lastContract, lastVerdict, accumulatedCostUsd };
3639
3643
  });
3640
3644
  var loopMachine = setup({
@@ -11194,7 +11198,7 @@ function registerTeardownCommand(program) {
11194
11198
  } else if (otlpMode === "remote-routed") {
11195
11199
  if (!options.keepDocker) {
11196
11200
  try {
11197
- const { stopCollectorOnly: stopCollectorOnly2 } = await import("./docker-Z6B3GBST.js");
11201
+ const { stopCollectorOnly: stopCollectorOnly2 } = await import("./docker-LNVG4NBV.js");
11198
11202
  stopCollectorOnly2();
11199
11203
  result.docker.stopped = true;
11200
11204
  if (!isJson) {
@@ -11226,7 +11230,7 @@ function registerTeardownCommand(program) {
11226
11230
  info("Shared stack: kept running (other projects may use it)");
11227
11231
  }
11228
11232
  } else if (isLegacyStack) {
11229
- const { isStackRunning: isStackRunning2, stopStack } = await import("./docker-Z6B3GBST.js");
11233
+ const { isStackRunning: isStackRunning2, stopStack } = await import("./docker-LNVG4NBV.js");
11230
11234
  let stackRunning = false;
11231
11235
  try {
11232
11236
  stackRunning = isStackRunning2(composeFile);
@@ -13859,7 +13863,7 @@ var CodexDriver = class {
13859
13863
  opts.plugins
13860
13864
  );
13861
13865
  }
13862
- const args = ["exec", "--json", "--full-auto", "--skip-git-repo-check"];
13866
+ const args = opts.sourceAccess ? ["exec", "--json", "--dangerously-bypass-approvals-and-sandbox", "--skip-git-repo-check"] : ["exec", "--json", "--full-auto", "--skip-git-repo-check"];
13863
13867
  const model = opts.model && !opts.model.startsWith("claude-") ? opts.model : void 0;
13864
13868
  if (model) {
13865
13869
  args.push("--model", model);
@@ -14213,7 +14217,7 @@ function registerDriversCommand(program) {
14213
14217
  }
14214
14218
 
14215
14219
  // src/index.ts
14216
- var VERSION = true ? "0.36.3" : "0.0.0-dev";
14220
+ var VERSION = true ? "0.36.5" : "0.0.0-dev";
14217
14221
  function createProgram() {
14218
14222
  const program = new Command();
14219
14223
  program.name("codeharness").description("Makes autonomous coding agents produce software that actually works").version(VERSION).option("--json", "Output in machine-readable JSON format");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codeharness",
3
- "version": "0.36.3",
3
+ "version": "0.36.5",
4
4
  "type": "module",
5
5
  "description": "CLI for codeharness — makes autonomous coding agents produce software that actually works",
6
6
  "bin": {