Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
5 changes: 5 additions & 0 deletions .changeset/proofkit-cli-major-migration.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@proofkit/cli": major
---

Rewrite the CLI package for better observability, composability, and error tracing.
2 changes: 1 addition & 1 deletion .github/workflows/continuous-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ jobs:
- name: Install dependencies
run: pnpm install --frozen-lockfile

- name: Run Unit Tests
- name: Run Deterministic Contract Tests
run: pnpm test

build:
Expand Down
5 changes: 4 additions & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -59,9 +59,12 @@ jobs:
doppler configure set project proofkit
doppler configure set config test

- name: Run Tests
- name: Run Deterministic Contract Tests
run: pnpm test

- name: Run CLI External Integration Smoke Tests
run: doppler run -- pnpm --filter @proofkit/cli test:smoke

- name: Run fmodata E2E Tests
run: pnpm --filter @proofkit/fmodata test:e2e

Expand Down
26 changes: 1 addition & 25 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -1,25 +1 @@
# Agent Instructions

## Landing the Plane (Session Completion)

**When ending a work session**, you MUST complete ALL steps below. Work is NOT complete until `git push` succeeds.

**MANDATORY WORKFLOW:**

1. **File issues for remaining work** - Create issues for anything that needs follow-up
2. **Run quality gates** (if code changed) - Tests, linters, builds
3. **PUSH TO REMOTE** - This is MANDATORY:
```bash
git pull --rebase
git push
git status # MUST show "up to date with origin"
```
4. **Clean up** - Clear stashes, prune remote branches
5. **Verify** - All changes committed AND pushed
6. **Hand off** - Provide context for next session

**CRITICAL RULES:**
- Work is NOT complete until `git push` succeeds
- NEVER stop before pushing - that leaves work stranded locally
- NEVER say "ready to push when you are" - YOU must push
- If push fails, resolve and retry until it succeeds
Always run `pnpm run ci` from the root of the repo after completing a task and before committing.
17 changes: 14 additions & 3 deletions apps/docs/src/app/(home)/page.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,16 @@
import { Card, Cards } from "fumadocs-ui/components/card";
import { Bot, Brain, Code, Database, Globe, RectangleEllipsis, ShieldCheck, Terminal, WandSparkles, WebhookIcon } from "lucide-react";
import {
Bot,
Brain,
Code,
Database,
Globe,
RectangleEllipsis,
ShieldCheck,
Terminal,
WandSparkles,
WebhookIcon,
} from "lucide-react";
import Image from "next/image";
import Link from "next/link";
import ProofKitLogo from "@/../public/proofkit.png";
Expand Down Expand Up @@ -150,8 +161,8 @@ export default function HomePage() {
Works with any agent
</div>
<p className="text-gray-500 text-sm">
Skills are bundled with each package — just install and your AI coding tool picks them up automatically.
Compatible with Claude Code, Cursor, Windsurf, and more.
Skills are bundled with each package — just install and your AI coding tool picks them up
automatically. Compatible with Claude Code, Cursor, Windsurf, and more.
</p>
</div>
</div>
Expand Down
16 changes: 6 additions & 10 deletions apps/docs/src/components/AgentCommand.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -23,19 +23,15 @@ export function AgentCommand({
return (
<div className="group relative my-4 font-mono text-sm">
<div className="overflow-hidden rounded-lg border border-[#e87a2a] bg-[#1a1a2e]">
<div className="flex items-center justify-between border-b border-[#e87a2a]/40 px-4 py-2">
<span className="text-xs text-[#e87a2a]">{label}</span>
<div className="flex items-center justify-between border-[#e87a2a]/40 border-b px-4 py-2">
<span className="text-[#e87a2a] text-xs">{label}</span>
<button
type="button"
onClick={copy}
className="rounded-md p-1 text-[#7a7a9e] transition-colors hover:text-[#e0e0e0]"
aria-label="Copy command"
className="rounded-md p-1 text-[#7a7a9e] transition-colors hover:text-[#e0e0e0]"
onClick={copy}
type="button"
>
{copied ? (
<CheckIcon className="size-4 text-green-400" />
) : (
<CopyIcon className="size-4" />
)}
{copied ? <CheckIcon className="size-4 text-green-400" /> : <CopyIcon className="size-4" />}
</button>
</div>
<div className="px-4 py-3">
Expand Down
7 changes: 6 additions & 1 deletion biome.json
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,12 @@
"arrowParentheses": "always",
"quoteStyle": "double"
},
"globals": ["__FMDAPI_VERSION__", "__BETTER_AUTH_VERSION__", "__WEBVIEWER_VERSION__", "__TYPEGEN_VERSION__"]
"globals": [
"__FMDAPI_VERSION__",
"__BETTER_AUTH_VERSION__",
"__WEBVIEWER_VERSION__",
"__TYPEGEN_VERSION__"
]
},
"json": {
"formatter": {
Expand Down
2 changes: 1 addition & 1 deletion btca.config.jsonc
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,4 @@
],
"model": "gpt-5.3-codex",
"provider": "openai"
}
}
5 changes: 5 additions & 0 deletions packages/cli-old/.yarnrc.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
packageExtensions:
chalk@5.0.1:
dependencies:
"#ansi-styles": npm:ansi-styles@6.1.0
"#supports-color": npm:supports-color@9.2.2
Comment on lines +1 to +5
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Verify packageExtensions syntax and chalk dependencies

# Check if ansi-styles@6.1.0 and supports-color@9.2.2 exist on npm
echo "=== Checking if specified versions exist on npm ==="
curl -s https://registry.npmjs.org/ansi-styles | jq -r '.versions | keys[] | select(. == "6.1.0")'
curl -s https://registry.npmjs.org/supports-color | jq -r '.versions | keys[] | select(. == "9.2.2")'

# Check chalk@5.0.1 actual dependencies
echo -e "\n=== Checking chalk@5.0.1 dependencies ==="
curl -s https://registry.npmjs.org/chalk/5.0.1 | jq '.dependencies, .peerDependencies'

# Check Yarn version in use
echo -e "\n=== Checking Yarn version ==="
fd -t f 'package.json' packages/cli-old --exec cat {} | jq -r '.packageManager // "not specified"'

Repository: proofgeist/proofkit

Length of output: 266


🌐 Web query:

Yarn packageExtensions syntax with subpath imports

💡 Result:

packageExtensions keys are package descriptors (<packageName>@<semverRange>), not module-specifier strings, so you can’t target a subpath import like react-dom/client (or lodash/fp) in the key. Yarn applies the extension to the package whose version matches the range. [1]

Correct syntax

# .yarnrc.yml
packageExtensions:
  react-dom@*:
    dependencies:
      scheduler: "^0.23.0"

  "@scope/pkg@^1.2.0":
    peerDependencies:
      react: "*"
    peerDependenciesMeta:
      react:
        optional: true

Each key is “a descriptor covering a semver range”; Yarn merges in dependencies, peerDependencies, and peerDependenciesMeta. [1][2]

How this relates to subpath imports

If some package is doing import "react-dom/client", the dependency it needs to list (and the one you can fix via packageExtensions) is still react-dom, because client is just a file/subpath inside that package (often governed by the package’s exports). packageExtensions won’t change whether a given subpath is exported; it only amends dependency metadata. [1]

Sources:
[1] Yarn .yarnrc.yml config docs (packageExtensions section) (documents.devdocs.io)
[2] Yarn configuration type for packageExtensions (yarnpkg.com)

Citations:


Remove the "#" prefix from dependency keys in packageExtensions — this syntax is invalid.

The keys "#ansi-styles" and "#supports-color" violate Yarn's packageExtensions schema. According to Yarn documentation, packageExtensions keys must be package descriptors in the format <packageName>@<semverRange>, not subpath import names with # prefixes.

The correct syntax is:

Corrected packageExtensions syntax
packageExtensions:
  ansi-styles@6.1.0:
    # ...
  supports-color@9.2.2:
    # ...

Or using semver ranges:

packageExtensions:
  ansi-styles@*:
    # ...
  supports-color@*:
    # ...

Additionally, chalk@5.0.1 lists no dependencies on npm, so these overrides may be unnecessary. Verify whether these packageExtensions additions are required or if they can be removed entirely.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/cli-old/.yarnrc.yml` around lines 1 - 5, The packageExtensions block
uses invalid keys "#ansi-styles" and "#supports-color"; replace those entries
under packageExtensions -> chalk@5.0.1 with valid package descriptors such as
ansi-styles@6.1.0 and supports-color@9.2.2 (or use semver ranges like
ansi-styles@* and supports-color@*) or remove the packageExtensions for
chalk@5.0.1 entirely if those dependency overrides are not required; update the
keys and/or remove the overrides so the packageExtensions schema uses proper
"<packageName>@<semverRange>" descriptors.

Loading
Loading