Skip to content

Commit 3a3b5f1

Browse files
Failproof AIclaude
andcommitted
Open-source release: failproofai v0.0.1
Stripped claudeye down to its open-source core — hooks/policies, projects, and session visualizations — renamed everything failproofai. - Remove binary distribution middleware and compiled binary system - Remove eval/enrichment/dashboard/queue infrastructure entirely - Remove login/auth — app is now publicly accessible without login - Rename package, CLI, config paths, telemetry to failproofai - New simple entry point: bin/failproofai.mjs (no compiled binary) - Clean up ~195 remaining claudeye string references in codebase - Fix bugs: missing filter(Boolean), duplicate policy helpers, unhandled telemetry fetch error, missing LLM fetch timeout - Fix README: correct port (8020), correct custom policies API example - Update GitHub issue template, delete stale release workflow Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
0 parents  commit 3a3b5f1

188 files changed

Lines changed: 25755 additions & 0 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.bunfig.toml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
[install]
2+
# Use exact versions for reproducibility
3+
exact = true
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
name: Bug Report
2+
description: Report a bug in Failproof AI
3+
labels: [bug]
4+
5+
body:
6+
- type: textarea
7+
id: description
8+
attributes:
9+
label: Description
10+
description: A clear description of the bug.
11+
validations:
12+
required: true
13+
14+
- type: textarea
15+
id: steps
16+
attributes:
17+
label: Steps to Reproduce
18+
description: Steps to reproduce the behavior.
19+
placeholder: |
20+
1. Run `failproofai`
21+
2. Navigate to Policies
22+
3. Click on '...'
23+
4. See error
24+
validations:
25+
required: true
26+
27+
- type: textarea
28+
id: expected
29+
attributes:
30+
label: Expected Behavior
31+
description: What you expected to happen.
32+
validations:
33+
required: true
34+
35+
- type: input
36+
id: version
37+
attributes:
38+
label: Failproof AI Version
39+
description: Output of `failproofai --version` or check `package.json`.
40+
placeholder: "0.0.1"
41+
validations:
42+
required: true
43+
44+
- type: dropdown
45+
id: node-version
46+
attributes:
47+
label: Node.js / Bun Version
48+
options:
49+
- "Bun 1.3+"
50+
- "Node 20"
51+
- "Node 22"
52+
- Other
53+
validations:
54+
required: true
55+
56+
- type: dropdown
57+
id: os
58+
attributes:
59+
label: Operating System
60+
options:
61+
- macOS
62+
- Linux
63+
- Windows (WSL)
64+
- Other
65+
validations:
66+
required: true
67+
68+
- type: textarea
69+
id: context
70+
attributes:
71+
label: Additional Context
72+
description: Any other context, screenshots, or logs.
73+
validations:
74+
required: false

.github/ISSUE_TEMPLATE/config.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
blank_issues_enabled: true
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
name: Feature Request
2+
description: Suggest a new feature or improvement
3+
labels: [enhancement]
4+
5+
body:
6+
- type: textarea
7+
id: problem
8+
attributes:
9+
label: Problem / Motivation
10+
description: What problem does this feature solve? Why is it needed?
11+
validations:
12+
required: true
13+
14+
- type: textarea
15+
id: solution
16+
attributes:
17+
label: Proposed Solution
18+
description: How should this feature work?
19+
validations:
20+
required: true
21+
22+
- type: textarea
23+
id: alternatives
24+
attributes:
25+
label: Alternatives Considered
26+
description: Any alternative approaches you've thought about.
27+
validations:
28+
required: false
29+
30+
- type: textarea
31+
id: context
32+
attributes:
33+
label: Additional Context
34+
description: Any other context, screenshots, or references.
35+
validations:
36+
required: false

.github/dependabot.yml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
version: 2
2+
updates:
3+
- package-ecosystem: bun
4+
directory: /
5+
schedule:
6+
interval: weekly
7+
day: monday
8+
open-pull-requests-limit: 10
9+
10+
- package-ecosystem: github-actions
11+
directory: /
12+
schedule:
13+
interval: weekly
14+
day: monday
15+
open-pull-requests-limit: 5

.github/pull_request_template.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
## Description
2+
3+
<!-- What does this PR do? Why is it needed? -->
4+
5+
## Type of Change
6+
7+
- [ ] Bug fix
8+
- [ ] New feature
9+
- [ ] Refactor
10+
- [ ] Documentation
11+
12+
## Checklist
13+
14+
- [ ] `npm run lint` passes
15+
- [ ] `npx tsc --noEmit` passes
16+
- [ ] `npm run test:run` passes
17+
- [ ] `npm run build` succeeds

.github/workflows/ci.yml

Lines changed: 178 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,178 @@
1+
name: CI
2+
3+
on:
4+
push:
5+
branches: [main]
6+
pull_request:
7+
branches: [main]
8+
9+
concurrency:
10+
group: ci-${{ github.ref }}
11+
cancel-in-progress: true
12+
13+
jobs:
14+
quality:
15+
runs-on: ubuntu-latest
16+
steps:
17+
- uses: actions/checkout@v6
18+
19+
- uses: oven-sh/setup-bun@v2
20+
with:
21+
bun-version: latest
22+
23+
- uses: actions/cache@v5
24+
with:
25+
path: ~/.bun/install/cache
26+
key: bun-${{ runner.os }}-${{ hashFiles('bun.lockb') }}
27+
restore-keys: bun-${{ runner.os }}-
28+
29+
- name: Install dependencies
30+
uses: nick-fields/retry@v4
31+
with:
32+
max_attempts: 3
33+
timeout_minutes: 5
34+
command: bun install --frozen-lockfile
35+
36+
- name: Check version consistency
37+
run: |
38+
ROOT_VERSION=$(jq -r .version package.json)
39+
echo "Root version: $ROOT_VERSION"
40+
MISMATCH=0
41+
for pkg in packages/*/package.json; do
42+
PKG_VERSION=$(jq -r .version "$pkg")
43+
if [ "$PKG_VERSION" != "$ROOT_VERSION" ]; then
44+
echo "::error file=$pkg::Version mismatch: $pkg has $PKG_VERSION, expected $ROOT_VERSION"
45+
MISMATCH=1
46+
fi
47+
done
48+
# Check optionalDependencies in wrapper
49+
for dep_version in $(jq -r '.optionalDependencies // {} | values[]' packages/wrapper/package.json); do
50+
if [ "$dep_version" != "$ROOT_VERSION" ]; then
51+
echo "::error file=packages/wrapper/package.json::Dependency version mismatch: $dep_version, expected $ROOT_VERSION"
52+
MISMATCH=1
53+
fi
54+
done
55+
if [ "$MISMATCH" -eq 1 ]; then
56+
echo "::error::Version mismatch detected across package.json files"
57+
exit 1
58+
fi
59+
echo "All versions match: $ROOT_VERSION"
60+
61+
- name: Lint
62+
uses: nick-fields/retry@v4
63+
with:
64+
max_attempts: 3
65+
timeout_minutes: 5
66+
command: bun run lint
67+
68+
- name: Type check
69+
uses: nick-fields/retry@v4
70+
with:
71+
max_attempts: 3
72+
timeout_minutes: 5
73+
command: bunx tsc --noEmit
74+
75+
test:
76+
runs-on: ubuntu-latest
77+
strategy:
78+
fail-fast: false
79+
matrix:
80+
env-config:
81+
- { name: default, env: {} }
82+
- { name: telemetry-disabled, env: { FAILPROOFAI_TELEMETRY_DISABLED: "1" } }
83+
- { name: log-debug, env: { FAILPROOFAI_LOG_LEVEL: debug } }
84+
- { name: hook-log-file, env: { FAILPROOFAI_HOOK_LOG_FILE: "1" } }
85+
env: ${{ matrix.env-config.env }}
86+
steps:
87+
- uses: actions/checkout@v6
88+
89+
- uses: oven-sh/setup-bun@v2
90+
with:
91+
bun-version: latest
92+
93+
- uses: actions/cache@v5
94+
with:
95+
path: ~/.bun/install/cache
96+
key: bun-${{ runner.os }}-${{ hashFiles('bun.lockb') }}
97+
restore-keys: bun-${{ runner.os }}-
98+
99+
- name: Install dependencies
100+
uses: nick-fields/retry@v4
101+
with:
102+
max_attempts: 3
103+
timeout_minutes: 5
104+
command: bun install --frozen-lockfile
105+
106+
- name: Test (${{ matrix.env-config.name }})
107+
uses: nick-fields/retry@v4
108+
with:
109+
max_attempts: 3
110+
timeout_minutes: 10
111+
command: bun run test:run
112+
113+
build:
114+
runs-on: ubuntu-latest
115+
steps:
116+
- uses: actions/checkout@v6
117+
118+
- uses: oven-sh/setup-bun@v2
119+
with:
120+
bun-version: latest
121+
122+
- uses: actions/cache@v5
123+
with:
124+
path: ~/.bun/install/cache
125+
key: bun-${{ runner.os }}-${{ hashFiles('bun.lockb') }}
126+
restore-keys: bun-${{ runner.os }}-
127+
128+
- name: Install dependencies
129+
uses: nick-fields/retry@v4
130+
with:
131+
max_attempts: 3
132+
timeout_minutes: 5
133+
command: bun install --frozen-lockfile
134+
135+
- name: Build
136+
uses: nick-fields/retry@v4
137+
with:
138+
max_attempts: 3
139+
timeout_minutes: 10
140+
command: bun run build
141+
142+
test-e2e:
143+
runs-on: ubuntu-latest
144+
env:
145+
FAILPROOFAI_TELEMETRY_DISABLED: "1"
146+
steps:
147+
- uses: actions/checkout@v6
148+
149+
- uses: oven-sh/setup-bun@v2
150+
with:
151+
bun-version: latest
152+
153+
- uses: actions/cache@v5
154+
with:
155+
path: ~/.bun/install/cache
156+
key: bun-${{ runner.os }}-${{ hashFiles('bun.lockb') }}
157+
restore-keys: bun-${{ runner.os }}-
158+
159+
- name: Install dependencies
160+
uses: nick-fields/retry@v4
161+
with:
162+
max_attempts: 3
163+
timeout_minutes: 5
164+
command: bun install --frozen-lockfile
165+
166+
- name: Build npm package (setup E2E env)
167+
uses: nick-fields/retry@v4
168+
with:
169+
max_attempts: 2
170+
timeout_minutes: 15
171+
command: bun run test:npx
172+
173+
- name: E2E Hook Tests
174+
uses: nick-fields/retry@v4
175+
with:
176+
max_attempts: 2
177+
timeout_minutes: 10
178+
command: bun run test:e2e

.gitignore

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2+
3+
# dependencies
4+
/node_modules
5+
/.pnp
6+
.pnp.js
7+
.yarn/install-state.gz
8+
9+
# testing
10+
/coverage
11+
/.test-binary
12+
/.test-npx
13+
14+
# next.js
15+
/.next/
16+
/out/
17+
18+
# production
19+
/build
20+
/dist
21+
22+
# misc
23+
.DS_Store
24+
*.pem
25+
26+
# debug
27+
npm-debug.log*
28+
yarn-debug.log*
29+
yarn-error.log*
30+
31+
# local env files
32+
.env
33+
.env.*
34+
35+
# vercel
36+
.vercel
37+
38+
# typescript
39+
*.tsbuildinfo
40+
next-env.d.ts
41+
42+
# claude
43+
.claude
44+
45+
# cursor
46+
.cursor
47+
48+
# custom hooks loader temp files
49+
*.__failproofai_tmp__.*
50+
51+
# package manager lockfiles (bun.lock is tracked; bun.lockb is binary)
52+
package-lock.json
53+
54+
# build artifacts from test scripts
55+
*.tgz
56+
/failproofai-local
57+
packages/*/bin/
58+
packages/*/assets/

0 commit comments

Comments
 (0)