openfox 0.2.0 → 0.2.2

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.
@@ -62,7 +62,14 @@ async function runCli(options) {
62
62
  process.exit(0);
63
63
  }
64
64
  if (values.version) {
65
- console.log("0.1.0");
65
+ const { readFileSync } = await import("fs");
66
+ const { fileURLToPath } = await import("url");
67
+ const { dirname, join } = await import("path");
68
+ const __filename = fileURLToPath(import.meta.url);
69
+ const __dirname = dirname(__filename);
70
+ const packageJsonPath = join(__dirname, "../package.json");
71
+ const packageJson = JSON.parse(readFileSync(packageJsonPath, "utf-8"));
72
+ console.log(packageJson.version);
66
73
  process.exit(0);
67
74
  }
68
75
  const [command] = positionals;
@@ -135,4 +142,4 @@ async function runCli(options) {
135
142
  export {
136
143
  runCli
137
144
  };
138
- //# sourceMappingURL=chunk-MKAHOQBI.js.map
145
+ //# sourceMappingURL=chunk-D5ZF2VDN.js.map
package/dist/cli/dev.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  runCli
4
- } from "../chunk-MKAHOQBI.js";
4
+ } from "../chunk-D5ZF2VDN.js";
5
5
  import {
6
6
  logger
7
7
  } from "../chunk-U62ZECSQ.js";
package/dist/cli/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  runCli
4
- } from "../chunk-MKAHOQBI.js";
4
+ } from "../chunk-D5ZF2VDN.js";
5
5
  import {
6
6
  logger
7
7
  } from "../chunk-U62ZECSQ.js";
@@ -0,0 +1,120 @@
1
+ {
2
+ "name": "openfox",
3
+ "version": "0.2.2",
4
+ "description": "Local-LLM-first agentic coding assistant",
5
+ "type": "module",
6
+ "bin": {
7
+ "openfox": "./dist/cli/index.js",
8
+ "openfox-dev": "./dist/cli/dev.js"
9
+ },
10
+ "exports": {
11
+ ".": {
12
+ "types": "./dist/server/index.d.ts",
13
+ "import": "./dist/server/index.js"
14
+ },
15
+ "./shared": {
16
+ "types": "./dist/shared/index.d.ts",
17
+ "import": "./dist/shared/index.js"
18
+ }
19
+ },
20
+ "files": [
21
+ "dist",
22
+ "!dist/**/*.map",
23
+ "dist/**/*.md",
24
+ "package.json"
25
+ ],
26
+ "scripts": {
27
+ "dev": "OPENFOX_DEV=true tsx watch src/cli/dev.ts --no-browser",
28
+ "dev:web": "vite --config web/vite.config.ts",
29
+ "build": "FORCE_COLOR=1 npm run build:server && FORCE_COLOR=1 npm run build:web",
30
+ "build:server": "FORCE_COLOR=1 tsup && mkdir -p dist/skill-defaults dist/command-defaults dist/agent-defaults dist/workflow-defaults && cp src/server/skills/defaults/*.md dist/skill-defaults/ && cp src/server/commands/defaults/*.md dist/command-defaults/ && cp src/server/agents/defaults/*.md dist/agent-defaults/ && cp src/server/workflows/defaults/*.json dist/workflow-defaults/ && cp package.json dist/",
31
+ "build:web": "cd web && FORCE_COLOR=1 vite build --outDir ../dist/web",
32
+ "start": "node dist/cli/index.js",
33
+ "start:dev": "node dist/cli/dev.js",
34
+ "test": "vitest run --reporter=dot --silent=passed-only && vitest run --reporter=dot --silent=passed-only --config e2e/vitest.config.ts",
35
+ "test:unit": "vitest run --reporter=dot --silent=passed-only",
36
+ "test:e2e": "vitest run --reporter=dot --silent=passed-only --config e2e/vitest.config.ts",
37
+ "test:cov": "vitest run --reporter=dot --silent=passed-only --coverage && vitest run --reporter=dot --silent=passed-only --config e2e/vitest.config.ts --coverage",
38
+ "test:cov:unit": "vitest run --reporter=dot --silent=passed-only --coverage",
39
+ "test:cov:e2e": "vitest run --reporter=dot --silent=passed-only --config e2e/vitest.config.ts --coverage",
40
+ "typecheck": "npm run typecheck:server && npm run typecheck:web",
41
+ "typecheck:server": "tsc --noEmit",
42
+ "typecheck:web": "cd web && tsc --noEmit",
43
+ "lint": "eslint src/",
44
+ "lint:fix": "eslint src/ --fix",
45
+ "format": "prettier --check 'src/**/*.ts'",
46
+ "format:fix": "prettier --write 'src/**/*.ts'",
47
+ "clean": "rm -rf dist",
48
+ "prepublishOnly": "npm run build",
49
+ "prepare": "husky"
50
+ },
51
+ "dependencies": {
52
+ "@clack/prompts": "^1.1.0",
53
+ "@fontsource/jetbrains-mono": "^5.2.8",
54
+ "bash-language-server": "^5.4.2",
55
+ "better-sqlite3": "^12.8.0",
56
+ "cors": "^2.8.5",
57
+ "express": "^5.2.1",
58
+ "fast-glob": "^3.3.3",
59
+ "gray-matter": "^4.0.3",
60
+ "html2canvas": "^1.4.1",
61
+ "ignore": "^7.0.5",
62
+ "open": "^11.0.0",
63
+ "openai": "^6.33.0",
64
+ "pyright": "^1.1.408",
65
+ "react-markdown": "^10.1.0",
66
+ "react-syntax-highlighter": "^16.1.1",
67
+ "react-virtuoso": "4.18.3",
68
+ "remark-gfm": "^4.0.1",
69
+ "sql-language-server": "^1.7.1",
70
+ "turndown": "^7.2.2",
71
+ "typescript": "^5.8.2",
72
+ "typescript-language-server": "^5.1.3",
73
+ "vite": "^6.1.0",
74
+ "vscode-jsonrpc": "^8.2.1",
75
+ "vscode-langservers-extracted": "^4.10.0",
76
+ "vscode-languageserver-protocol": "^3.17.5",
77
+ "wouter": "^3.9.0",
78
+ "ws": "^8.20.0",
79
+ "yaml-language-server": "^1.15.0",
80
+ "zod": "^4.3.6",
81
+ "zustand": "^5.0.12"
82
+ },
83
+ "devDependencies": {
84
+ "@eslint/js": "^10.0.1",
85
+ "@types/better-sqlite3": "^7.6.13",
86
+ "@types/node": "^22.19.15",
87
+ "@types/react": "^19.0.8",
88
+ "@types/react-dom": "^19.0.3",
89
+ "@types/react-syntax-highlighter": "^15.5.13",
90
+ "@types/turndown": "^5.0.6",
91
+ "@types/ws": "^8.5.14",
92
+ "@vitejs/plugin-react": "^4.3.4",
93
+ "@vitest/coverage-v8": "^4.1.2",
94
+ "autoprefixer": "^10.4.20",
95
+ "concurrently": "^9.2.1",
96
+ "dotenv": "^17.3.1",
97
+ "eslint": "^10.1.0",
98
+ "husky": "^9.1.7",
99
+ "lint-staged": "^16.4.0",
100
+ "postcss": "^8.5.1",
101
+ "prettier": "^3.8.1",
102
+ "react": "^19.0.0",
103
+ "react-dom": "^19.0.0",
104
+ "tailwindcss": "^3.4.17",
105
+ "tsup": "^8.4.0",
106
+ "tsx": "^4.19.2",
107
+ "typescript": "^5.7.3",
108
+ "typescript-eslint": "^8.57.2",
109
+ "vitest": "^4.1.2"
110
+ },
111
+ "lint-staged": {
112
+ "src/**/*.ts": [
113
+ "eslint --no-warn-ignored"
114
+ ]
115
+ },
116
+ "engines": {
117
+ "node": ">=24.0.0"
118
+ },
119
+ "license": "MIT"
120
+ }
@@ -0,0 +1,45 @@
1
+ {
2
+ "metadata": {
3
+ "id": "default",
4
+ "name": "Build & Verify",
5
+ "description": "Standard build-verify loop. Builder implements criteria, verifier checks them.",
6
+ "version": "1.0.0",
7
+ "color": "#3b82f6"
8
+ },
9
+ "entryStep": "build",
10
+ "settings": {
11
+ "maxIterations": 50
12
+ },
13
+ "steps": [
14
+ {
15
+ "id": "build",
16
+ "name": "Builder",
17
+ "type": "agent",
18
+ "phase": "build",
19
+ "toolMode": "builder",
20
+ "prompt": "Implement the task and make sure you fulfil the {{criteriaCount}} criteria. Mark each criterion as complete using complete_criterion when done.",
21
+ "nudgePrompt": "Continue working on the acceptance criteria. {{reason}}.\n\n{{verifierFindings}}\nDon't forget to mark the criteria as complete with complete_criterion",
22
+ "transitions": [
23
+ { "when": { "type": "any_criteria_blocked" }, "goto": "$blocked" },
24
+ { "when": { "type": "all_criteria_completed_or_passed" }, "goto": "verify" },
25
+ { "when": { "type": "has_pending_criteria" }, "goto": "build" }
26
+ ]
27
+ },
28
+ {
29
+ "id": "verify",
30
+ "name": "Verifier",
31
+ "type": "sub_agent",
32
+ "phase": "verification",
33
+ "subAgentType": "verifier",
34
+ "prompt": "## Task Summary\n{{summary}}\n\n## Criteria\n{{criteriaList}}\n\n## Modified Files\n{{modifiedFiles}}\n\nVerify each criterion marked [NEEDS VERIFICATION]. Read the code, run tests if applicable, then call pass_criterion or fail_criterion for each.",
35
+ "transitions": [
36
+ { "when": { "type": "any_criteria_blocked" }, "goto": "$blocked" },
37
+ { "when": { "type": "all_criteria_passed" }, "goto": "$done" },
38
+ { "when": { "type": "has_pending_criteria" }, "goto": "build" }
39
+ ]
40
+ }
41
+ ],
42
+ "startCondition": {
43
+ "type": "has_pending_criteria"
44
+ }
45
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "openfox",
3
- "version": "0.2.0",
3
+ "version": "0.2.2",
4
4
  "description": "Local-LLM-first agentic coding assistant",
5
5
  "type": "module",
6
6
  "bin": {
@@ -20,13 +20,14 @@
20
20
  "files": [
21
21
  "dist",
22
22
  "!dist/**/*.map",
23
- "dist/**/*.md"
23
+ "dist/**/*.md",
24
+ "package.json"
24
25
  ],
25
26
  "scripts": {
26
27
  "dev": "OPENFOX_DEV=true tsx watch src/cli/dev.ts --no-browser",
27
28
  "dev:web": "vite --config web/vite.config.ts",
28
29
  "build": "FORCE_COLOR=1 npm run build:server && FORCE_COLOR=1 npm run build:web",
29
- "build:server": "FORCE_COLOR=1 tsup && mkdir -p dist/skill-defaults dist/command-defaults dist/agent-defaults && cp src/server/skills/defaults/*.md dist/skill-defaults/ && cp src/server/commands/defaults/*.md dist/command-defaults/ && cp src/server/agents/defaults/*.md dist/agent-defaults/",
30
+ "build:server": "FORCE_COLOR=1 tsup && mkdir -p dist/skill-defaults dist/command-defaults dist/agent-defaults dist/workflow-defaults && cp src/server/skills/defaults/*.md dist/skill-defaults/ && cp src/server/commands/defaults/*.md dist/command-defaults/ && cp src/server/agents/defaults/*.md dist/agent-defaults/ && cp src/server/workflows/defaults/*.json dist/workflow-defaults/ && cp package.json dist/",
30
31
  "build:web": "cd web && FORCE_COLOR=1 vite build --outDir ../dist/web",
31
32
  "start": "node dist/cli/index.js",
32
33
  "start:dev": "node dist/cli/dev.js",