ultimate-pi 0.1.0 → 0.1.3
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.
- package/.agents/skills/ck-search/SKILL.md +99 -0
- package/.agents/skills/defuddle/SKILL.md +90 -0
- package/.agents/skills/find-skills/SKILL.md +142 -0
- package/.agents/skills/firecrawl/SKILL.md +150 -0
- package/.agents/skills/firecrawl/rules/install.md +82 -0
- package/.agents/skills/firecrawl/rules/security.md +26 -0
- package/.agents/skills/firecrawl-agent/SKILL.md +57 -0
- package/.agents/skills/firecrawl-build-interact/SKILL.md +67 -0
- package/.agents/skills/firecrawl-build-onboarding/SKILL.md +102 -0
- package/.agents/skills/firecrawl-build-onboarding/references/auth-flow.md +39 -0
- package/.agents/skills/firecrawl-build-onboarding/references/project-setup.md +20 -0
- package/.agents/skills/firecrawl-build-onboarding/references/sdk-installation.md +17 -0
- package/.agents/skills/firecrawl-build-scrape/SKILL.md +68 -0
- package/.agents/skills/firecrawl-build-search/SKILL.md +68 -0
- package/.agents/skills/firecrawl-crawl/SKILL.md +58 -0
- package/.agents/skills/firecrawl-download/SKILL.md +69 -0
- package/.agents/skills/firecrawl-interact/SKILL.md +83 -0
- package/.agents/skills/firecrawl-map/SKILL.md +50 -0
- package/.agents/skills/firecrawl-parse/SKILL.md +61 -0
- package/.agents/skills/firecrawl-scrape/SKILL.md +68 -0
- package/.agents/skills/firecrawl-search/SKILL.md +59 -0
- package/.agents/skills/obsidian-bases/SKILL.md +299 -0
- package/.agents/skills/obsidian-markdown/SKILL.md +237 -0
- package/.agents/skills/posthog-analyst/SKILL.md +306 -0
- package/.agents/skills/posthog-analyst/evals/evals.json +23 -0
- package/.agents/skills/wiki/SKILL.md +215 -0
- package/.agents/skills/wiki/references/css-snippets.md +122 -0
- package/.agents/skills/wiki/references/frontmatter.md +107 -0
- package/.agents/skills/wiki/references/git-setup.md +58 -0
- package/.agents/skills/wiki/references/mcp-setup.md +149 -0
- package/.agents/skills/wiki/references/modes.md +259 -0
- package/.agents/skills/wiki/references/plugins.md +96 -0
- package/.agents/skills/wiki/references/rest-api.md +124 -0
- package/.agents/skills/wiki-autoresearch/SKILL.md +211 -0
- package/.agents/skills/wiki-autoresearch/references/program.md +75 -0
- package/.agents/skills/wiki-fold/SKILL.md +204 -0
- package/.agents/skills/wiki-fold/references/fold-template.md +133 -0
- package/.agents/skills/wiki-ingest/SKILL.md +288 -0
- package/.agents/skills/wiki-lint/SKILL.md +183 -0
- package/.agents/skills/wiki-query/SKILL.md +176 -0
- package/.agents/skills/wiki-save/SKILL.md +128 -0
- package/.ckignore +41 -0
- package/.env.example +9 -0
- package/.github/banner-v2.png +0 -0
- package/.github/workflows/lint.yml +33 -0
- package/.github/workflows/publish-github-packages.yml +35 -0
- package/.github/workflows/publish-npm.yml +32 -0
- package/.pi/SYSTEM.md +107 -40
- package/.pi/agents/pi-pi/agent-expert.md +205 -0
- package/.pi/agents/pi-pi/cli-expert.md +47 -0
- package/.pi/agents/pi-pi/config-expert.md +67 -0
- package/.pi/agents/pi-pi/ext-expert.md +53 -0
- package/.pi/agents/pi-pi/keybinding-expert.md +123 -0
- package/.pi/agents/pi-pi/pi-orchestrator.md +103 -0
- package/.pi/agents/pi-pi/prompt-expert.md +83 -0
- package/.pi/agents/pi-pi/skill-expert.md +52 -0
- package/.pi/agents/pi-pi/theme-expert.md +46 -0
- package/.pi/agents/pi-pi/tui-expert.md +100 -0
- package/.pi/agents/rethink.md +140 -0
- package/.pi/agents/wiki-ingest.md +67 -0
- package/.pi/agents/wiki-lint.md +75 -0
- package/.pi/auto-commit.json +20 -0
- package/.pi/extensions/banner.png +0 -0
- package/.pi/extensions/ck-enforce.ts +216 -0
- package/.pi/extensions/custom-footer.ts +308 -0
- package/.pi/extensions/custom-header.ts +116 -0
- package/.pi/extensions/dotenv-loader.ts +170 -0
- package/.pi/internal/cursor-sdk-transcript-parser.ts +59 -0
- package/.pi/model-router.json +95 -0
- package/.pi/npm/.gitignore +2 -0
- package/.pi/prompts/git-sync.md +124 -0
- package/.pi/prompts/harness-setup.md +509 -0
- package/.pi/prompts/save.md +16 -0
- package/.pi/prompts/wiki-autoresearch.md +19 -0
- package/.pi/prompts/wiki.md +23 -0
- package/.pi/providers/cursor-sdk-provider.test.mjs +476 -0
- package/.pi/providers/cursor-sdk-provider.ts +1085 -0
- package/.pi/settings.json +14 -4
- package/.pi/skills/agent-router/SKILL.md +174 -0
- package/.pi/sounds/alert/1-kaching-track.mp3 +0 -0
- package/.pi/sounds/error/1-ksi-wth-track.mp3 +0 -0
- package/.pi/sounds/error/2-smash-track.mp3 +0 -0
- package/.pi/sounds/error/3-buzzer-track.mp3 +0 -0
- package/.pi/sounds/notification/1-soft-notification-track.mp3 +0 -0
- package/.pi/sounds/project-sounds.json +25 -0
- package/.pi/sounds/reminder/1-soft-notification-track.mp3 +0 -0
- package/.pi/sounds/success/1-tada-track.mp3 +0 -0
- package/.pi/sounds/success/2-jobs-done-track.mp3 +0 -0
- package/.pi/sounds/success/3-yay-track.mp3 +0 -0
- package/CONTRIBUTING.md +116 -0
- package/README.md +33 -40
- package/biome.json +34 -0
- package/firecrawl/.env.template +58 -0
- package/firecrawl/README.md +49 -0
- package/firecrawl/docker-compose.yaml +201 -0
- package/firecrawl/searxng/searxng.env +3 -0
- package/firecrawl/searxng/settings.yml +85 -0
- package/lefthook.yml +8 -0
- package/package.json +55 -16
- package/vault/AGENTS.md +37 -0
- package/vault/wiki/_templates/comparison.md +39 -0
- package/vault/wiki/_templates/concept.md +40 -0
- package/vault/wiki/_templates/decision.md +21 -0
- package/vault/wiki/_templates/entity.md +32 -0
- package/vault/wiki/_templates/flow.md +14 -0
- package/vault/wiki/_templates/module.md +18 -0
- package/vault/wiki/_templates/question.md +31 -0
- package/vault/wiki/_templates/source.md +39 -0
- package/vault/wiki/concepts/AST-Aware Code Chunking.md +44 -0
- package/vault/wiki/concepts/Build-Time Prompt Compilation.md +107 -0
- package/vault/wiki/concepts/Context Engine (AI Coding).md +47 -0
- package/vault/wiki/concepts/Context-Aware System Reminders.md +61 -0
- package/vault/wiki/concepts/Contextualized Text Embedding.md +42 -0
- package/vault/wiki/concepts/Contractor vs Employee AI Model.md +55 -0
- package/vault/wiki/concepts/Dual-Model Agent Architecture.md +65 -0
- package/vault/wiki/concepts/Late Chunking vs Early Chunking.md +43 -0
- package/vault/wiki/concepts/Majority Vote Ensembling.md +68 -0
- package/vault/wiki/concepts/Meta-Harness.md +16 -0
- package/vault/wiki/concepts/Multi-Agent AI Coding Architecture.md +75 -0
- package/vault/wiki/concepts/Prompt Enhancement.md +90 -0
- package/vault/wiki/concepts/Prompt Renderer.md +89 -0
- package/vault/wiki/concepts/Semantic Codebase Indexing.md +67 -0
- package/vault/wiki/concepts/additive-config-hierarchy.md +16 -0
- package/vault/wiki/concepts/agent-artifacts-verifiable-deliverables.md +71 -0
- package/vault/wiki/concepts/agent-browser-browser-automation.md +99 -0
- package/vault/wiki/concepts/agent-codebase-interface.md +43 -0
- package/vault/wiki/concepts/agent-harness-architecture.md +67 -0
- package/vault/wiki/concepts/agent-loop-detection-patterns.md +133 -0
- package/vault/wiki/concepts/agent-search-enforcement.md +126 -0
- package/vault/wiki/concepts/agent-skills-ecosystem.md +74 -0
- package/vault/wiki/concepts/agent-skills-pattern.md +68 -0
- package/vault/wiki/concepts/agentic-harness-context-enforcement.md +91 -0
- package/vault/wiki/concepts/agentic-harness.md +34 -0
- package/vault/wiki/concepts/agentic-orchestration-pipeline.md +56 -0
- package/vault/wiki/concepts/agentic-search-no-embeddings.md +18 -0
- package/vault/wiki/concepts/anthropic-context-engineering.md +13 -0
- package/vault/wiki/concepts/antigravity-agent-first-architecture.md +61 -0
- package/vault/wiki/concepts/ast-compression.md +19 -0
- package/vault/wiki/concepts/ast-truncation.md +66 -0
- package/vault/wiki/concepts/barrel-files.md +37 -0
- package/vault/wiki/concepts/browser-harness-agent.md +41 -0
- package/vault/wiki/concepts/browser-subagent-visual-verification.md +82 -0
- package/vault/wiki/concepts/codebase-intelligence-ecosystem-comparison.md +192 -0
- package/vault/wiki/concepts/codebase-intelligence-harness-integration.md +161 -0
- package/vault/wiki/concepts/codebase-to-context-ingestion.md +46 -0
- package/vault/wiki/concepts/codex-harness-innovations.md +147 -0
- package/vault/wiki/concepts/consensus-debate-flow.md +17 -0
- package/vault/wiki/concepts/consensus-debate.md +206 -0
- package/vault/wiki/concepts/content-addressed-spec-identity.md +166 -0
- package/vault/wiki/concepts/context-anxiety.md +57 -0
- package/vault/wiki/concepts/context-compression-techniques.md +19 -0
- package/vault/wiki/concepts/context-continuity.md +22 -0
- package/vault/wiki/concepts/context-drift-in-agents.md +106 -0
- package/vault/wiki/concepts/context-engineering.md +62 -0
- package/vault/wiki/concepts/context-folding.md +67 -0
- package/vault/wiki/concepts/context-mode.md +38 -0
- package/vault/wiki/concepts/cursor-harness-innovations.md +107 -0
- package/vault/wiki/concepts/deterministic-session-compaction.md +79 -0
- package/vault/wiki/concepts/drift-detection-unified.md +296 -0
- package/vault/wiki/concepts/execution-feedback-loop.md +46 -0
- package/vault/wiki/concepts/feedforward-feedback-harness.md +60 -0
- package/vault/wiki/concepts/five-root-cause-metrics-sentrux.md +40 -0
- package/vault/wiki/concepts/fork-safe-spec-storage.md +89 -0
- package/vault/wiki/concepts/fts5-sandbox.md +19 -0
- package/vault/wiki/concepts/fuzzy-edit-matching.md +71 -0
- package/vault/wiki/concepts/gemini-cli-architecture.md +104 -0
- package/vault/wiki/concepts/generator-evaluator-architecture.md +64 -0
- package/vault/wiki/concepts/guardian-agent-pattern.md +67 -0
- package/vault/wiki/concepts/harness-configuration-layers.md +89 -0
- package/vault/wiki/concepts/harness-control-frameworks.md +155 -0
- package/vault/wiki/concepts/harness-engineering-first-principles.md +90 -0
- package/vault/wiki/concepts/harness-h-formalism.md +53 -0
- package/vault/wiki/concepts/hybrid-code-search.md +61 -0
- package/vault/wiki/concepts/inline-post-edit-validation.md +112 -0
- package/vault/wiki/concepts/legendary-engineering-patterns-harness.md +110 -0
- package/vault/wiki/concepts/lifecycle-hooks.md +94 -0
- package/vault/wiki/concepts/mcp-tool-routing.md +102 -0
- package/vault/wiki/concepts/memory-system-of-record-vs-ephemeral-cache.md +47 -0
- package/vault/wiki/concepts/meta-agent-context-pruning.md +151 -0
- package/vault/wiki/concepts/model-adaptive-harness.md +122 -0
- package/vault/wiki/concepts/model-routing-agents.md +101 -0
- package/vault/wiki/concepts/monorepo-architecture.md +45 -0
- package/vault/wiki/concepts/multi-agent-specialization.md +61 -0
- package/vault/wiki/concepts/permission-subsystem.md +16 -0
- package/vault/wiki/concepts/pi-messenger-analysis.md +243 -0
- package/vault/wiki/concepts/pi-vscode-extension-landscape.md +37 -0
- package/vault/wiki/concepts/policy-engine-pattern.md +78 -0
- package/vault/wiki/concepts/progressive-disclosure-agents.md +53 -0
- package/vault/wiki/concepts/progressive-skill-disclosure.md +17 -0
- package/vault/wiki/concepts/provider-native-prompting.md +203 -0
- package/vault/wiki/concepts/quality-signal-sentrux.md +37 -0
- package/vault/wiki/concepts/repo-map-ranking.md +42 -0
- package/vault/wiki/concepts/result-monad-error-handling.md +47 -0
- package/vault/wiki/concepts/safety-defense-in-depth.md +83 -0
- package/vault/wiki/concepts/sandbox-os-enforcement.md +18 -0
- package/vault/wiki/concepts/selective-debate-routing.md +70 -0
- package/vault/wiki/concepts/self-evolving-harness.md +60 -0
- package/vault/wiki/concepts/sentrux-mcp-integration.md +36 -0
- package/vault/wiki/concepts/sentrux-rules-engine.md +49 -0
- package/vault/wiki/concepts/shell-pattern-compression.md +24 -0
- package/vault/wiki/concepts/skill-first-architecture.md +166 -0
- package/vault/wiki/concepts/structured-compaction.md +78 -0
- package/vault/wiki/concepts/subagent-orchestration.md +17 -0
- package/vault/wiki/concepts/subagent-worktree-isolation.md +68 -0
- package/vault/wiki/concepts/superpowers-methodology.md +78 -0
- package/vault/wiki/concepts/think-in-code.md +73 -0
- package/vault/wiki/concepts/ts-execution-layer.md +100 -0
- package/vault/wiki/concepts/typescript-strict-mode.md +37 -0
- package/vault/wiki/concepts/vcc-conversation-compaction-for-pi.md +51 -0
- package/vault/wiki/concepts/verification-drift-detection.md +19 -0
- package/vault/wiki/consensus/consensus-records.md +58 -0
- package/vault/wiki/decisions/2026-04-30-pi-lean-ctx-native.md +122 -0
- package/vault/wiki/decisions/adr-008.md +40 -0
- package/vault/wiki/decisions/adr-009.md +46 -0
- package/vault/wiki/decisions/adr-010.md +55 -0
- package/vault/wiki/decisions/adr-011.md +165 -0
- package/vault/wiki/decisions/adr-012.md +102 -0
- package/vault/wiki/decisions/adr-013.md +59 -0
- package/vault/wiki/decisions/adr-014.md +73 -0
- package/vault/wiki/decisions/adr-015.md +81 -0
- package/vault/wiki/decisions/adr-016.md +91 -0
- package/vault/wiki/decisions/adr-017.md +79 -0
- package/vault/wiki/decisions/adr-018.md +100 -0
- package/vault/wiki/decisions/adr-019.md +75 -0
- package/vault/wiki/decisions/adr-020.md +106 -0
- package/vault/wiki/decisions/adr-021.md +86 -0
- package/vault/wiki/decisions/adr-022.md +113 -0
- package/vault/wiki/decisions/adr-023.md +113 -0
- package/vault/wiki/decisions/adr-024.md +73 -0
- package/vault/wiki/decisions/adr-025.md +130 -0
- package/vault/wiki/decisions/adr-026.md +56 -0
- package/vault/wiki/decisions/colocate-wiki.md +34 -0
- package/vault/wiki/entities/Anders Hejlsberg.md +29 -0
- package/vault/wiki/entities/Anthropic.md +17 -0
- package/vault/wiki/entities/Augment Code.md +49 -0
- package/vault/wiki/entities/Bjarne Stroustrup.md +26 -0
- package/vault/wiki/entities/Bolt.new (StackBlitz).md +39 -0
- package/vault/wiki/entities/Boris Cherny.md +11 -0
- package/vault/wiki/entities/Claude Code.md +19 -0
- package/vault/wiki/entities/Dennis Ritchie.md +26 -0
- package/vault/wiki/entities/Emergent Labs.md +32 -0
- package/vault/wiki/entities/Google Cloud.md +16 -0
- package/vault/wiki/entities/Guido van Rossum.md +28 -0
- package/vault/wiki/entities/Ken Thompson.md +28 -0
- package/vault/wiki/entities/Lee et al.md +16 -0
- package/vault/wiki/entities/Linus Torvalds.md +28 -0
- package/vault/wiki/entities/Lovable (company).md +40 -0
- package/vault/wiki/entities/Martin Fowler.md +16 -0
- package/vault/wiki/entities/Meng et al.md +16 -0
- package/vault/wiki/entities/OpenAI.md +16 -0
- package/vault/wiki/entities/Rocket.new.md +38 -0
- package/vault/wiki/entities/VILA-Lab.md +15 -0
- package/vault/wiki/entities/autodev-codebase.md +18 -0
- package/vault/wiki/entities/ck-tool.md +59 -0
- package/vault/wiki/entities/codesearch.md +18 -0
- package/vault/wiki/entities/disler-indydevdan.md +33 -0
- package/vault/wiki/entities/gsd-get-shit-done.md +56 -0
- package/vault/wiki/entities/javascript-runtimes.md +48 -0
- package/vault/wiki/entities/jesse-vincent.md +38 -0
- package/vault/wiki/entities/lean-ctx.md +32 -0
- package/vault/wiki/entities/opendev.md +41 -0
- package/vault/wiki/entities/ops-codegraph-tool.md +18 -0
- package/vault/wiki/entities/pi-coding-agent.md +53 -0
- package/vault/wiki/entities/sentrux.md +54 -0
- package/vault/wiki/entities/vgrep-tool.md +57 -0
- package/vault/wiki/entities/vitest.md +41 -0
- package/vault/wiki/flows/harness-wiki-pipeline.md +204 -0
- package/vault/wiki/hot.md +932 -0
- package/vault/wiki/index.md +437 -0
- package/vault/wiki/log.md +418 -0
- package/vault/wiki/meta/dashboard.md +30 -0
- package/vault/wiki/meta/lint-report-2026-04-30.md +86 -0
- package/vault/wiki/meta/lint-report-2026-05-02.md +251 -0
- package/vault/wiki/meta/overview.canvas +43 -0
- package/vault/wiki/modules/adversarial-verification.md +57 -0
- package/vault/wiki/modules/automated-observability.md +54 -0
- package/vault/wiki/modules/bench.md +20 -0
- package/vault/wiki/modules/extensions.md +23 -0
- package/vault/wiki/modules/grounding-checkpoints.md +62 -0
- package/vault/wiki/modules/harness-implementation-plan.md +345 -0
- package/vault/wiki/modules/harness-wiki-skill-mapping.md +135 -0
- package/vault/wiki/modules/harness.md +86 -0
- package/vault/wiki/modules/persistent-memory.md +85 -0
- package/vault/wiki/modules/schema-orchestration.md +68 -0
- package/vault/wiki/modules/skills.md +27 -0
- package/vault/wiki/modules/spec-hardening.md +58 -0
- package/vault/wiki/modules/structured-planning.md +53 -0
- package/vault/wiki/modules/think-in-code-enforcement.md +153 -0
- package/vault/wiki/modules/wiki-query-interface.md +64 -0
- package/vault/wiki/overview.md +51 -0
- package/vault/wiki/questions/Research-pi-vs-claude-code-agentic-orchestration-pipeline.md +87 -0
- package/vault/wiki/questions/Research-sentrux-dev.md +123 -0
- package/vault/wiki/questions/Research-superpowers-skill-for-agentic-coding-agents.md +164 -0
- package/vault/wiki/questions/Research: Augment Code Context Engine.md +244 -0
- package/vault/wiki/questions/Research: Automating Software Engineering - Lovable, Bolt, Emergent, Rocket.md +112 -0
- package/vault/wiki/questions/Research: Claude Code State-of-the-Art Harness Improvements.md +209 -0
- package/vault/wiki/questions/Research: Codex State-of-the-Art Harness Improvements.md +99 -0
- package/vault/wiki/questions/Research: Engineering Workflows of Legendary Programmers and AI Harness Mapping.md +107 -0
- package/vault/wiki/questions/Research: Fallow Codebase Intelligence Harness Integration.md +72 -0
- package/vault/wiki/questions/Research: Gemini CLI SOTA Harness Integration.md +166 -0
- package/vault/wiki/questions/Research: GitHub Issues as Harness Spec Storage.md +188 -0
- package/vault/wiki/questions/Research: Google Antigravity Harness Integration.md +120 -0
- package/vault/wiki/questions/Research: Meta-Agent Context Drift Detection.md +236 -0
- package/vault/wiki/questions/Research: Model-Adaptive Agent Harness Design.md +95 -0
- package/vault/wiki/questions/Research: Model-Specific Prompting Guides.md +165 -0
- package/vault/wiki/questions/Research: Prompt Renderer for Multi-Model Agent Harness.md +216 -0
- package/vault/wiki/questions/Research: Skill-First Harness Architecture.md +91 -0
- package/vault/wiki/questions/Research: TypeScript Best Practices and Codebase Structure.md +88 -0
- package/vault/wiki/questions/Research: TypeScript Execution Layer for Agent Tool Calling.md +81 -0
- package/vault/wiki/questions/Research: claude-mem over Obsidian for Harness Layer.md +71 -0
- package/vault/wiki/questions/Research: claude-mem over obsidian wiki as the knowledge base for our agentic harness pipeline. think from first principles. does this replace or complement our current setup? no hard feelings about previous decisions. gimme accurate points.md +80 -0
- package/vault/wiki/questions/Research: context-mode vs lean-ctx.md +72 -0
- package/vault/wiki/questions/Research: cursor.sh Harness Innovations.md +92 -0
- package/vault/wiki/questions/Research: executor.sh Harness Integration.md +170 -0
- package/vault/wiki/questions/Research: how GSD fits into our coding harness setup.md +97 -0
- package/vault/wiki/questions/Research: how claude-mem fits into our workflow. and whether it should replace obsidian in the codebase. no hard feelings about previous actions, rethink from first principles always.md +80 -0
- package/vault/wiki/questions/Research: pi-vcc.md +113 -0
- package/vault/wiki/questions/Research: semantic code search tools.md +69 -0
- package/vault/wiki/questions/Research: vcc extension for pi coding agent.md +73 -0
- package/vault/wiki/questions/how-to-enable-semantic-code-search-now.md +111 -0
- package/vault/wiki/questions/mvp-implementation-blueprint.md +552 -0
- package/vault/wiki/questions/research-agent-first-codebase-exploration.md +199 -0
- package/vault/wiki/questions/research-agentic-coding-harness-latest-papers.md +142 -0
- package/vault/wiki/questions/research-gitingest-gitreverse-integration.md +100 -0
- package/vault/wiki/questions/research-wozcode-token-reduction.md +67 -0
- package/vault/wiki/questions/resolved-context-pruning-inplace-vs-restart.md +95 -0
- package/vault/wiki/questions/resolved-context-window-economics.md +167 -0
- package/vault/wiki/questions/resolved-imad-debate-gating-transfer.md +126 -0
- package/vault/wiki/questions/resolved-mcp-tool-preference.md +112 -0
- package/vault/wiki/questions/resolved-small-model-meta-agents.md +107 -0
- package/vault/wiki/questions/resolved-treesitter-dynamic-languages.md +95 -0
- package/vault/wiki/sources/Auggie Context MCP Server.md +63 -0
- package/vault/wiki/sources/Augment Code Codacy AI Giants.md +61 -0
- package/vault/wiki/sources/Augment Code MCP SiliconAngle.md +49 -0
- package/vault/wiki/sources/Augment Code WorkOS ERC 2025.md +55 -0
- package/vault/wiki/sources/Augment Context Engine Official.md +71 -0
- package/vault/wiki/sources/Augment SWE-bench Agent GitHub.md +74 -0
- package/vault/wiki/sources/Augment SWE-bench Pro Blog.md +58 -0
- package/vault/wiki/sources/Source: AgentBus Jinja2 Prompt Pipelines.md +75 -0
- package/vault/wiki/sources/Source: Arxiv /342/200/224 Don't Break the Cache.md" +85 -0
- package/vault/wiki/sources/Source: Augment - Harness Engineering for AI Coding Agents.md +58 -0
- package/vault/wiki/sources/Source: Blake Crosley Agent Architecture Guide.md +100 -0
- package/vault/wiki/sources/Source: Bolt.new Architecture & Case Study.md +75 -0
- package/vault/wiki/sources/Source: Build-Time Prompt Compilation Architecture.md +107 -0
- package/vault/wiki/sources/Source: Claude API Agent Skills Overview.md +70 -0
- package/vault/wiki/sources/Source: Gemini CLI Changelogs.md +88 -0
- package/vault/wiki/sources/Source: Google Blog - Gemini CLI Announcement.md +57 -0
- package/vault/wiki/sources/Source: Google Gemini CLI Architecture Docs.md +53 -0
- package/vault/wiki/sources/Source: LangChain - Anatomy of Agent Harness.md +65 -0
- package/vault/wiki/sources/Source: Lovable Architecture & Clone Analysis.md +83 -0
- package/vault/wiki/sources/Source: Martin Fowler - Harness Engineering.md +70 -0
- package/vault/wiki/sources/Source: OpenAI Harness Engineering Five Principles.md +58 -0
- package/vault/wiki/sources/Source: OpenAI Harness Engineering /342/200/224 0 Lines of Human Code.md" +101 -0
- package/vault/wiki/sources/Source: OpenDev /342/200/224 Building AI Coding Agents for the Terminal.md" +100 -0
- package/vault/wiki/sources/Source: Render AI Coding Agents Benchmark 2025.md +53 -0
- package/vault/wiki/sources/Source: Rocket.new /342/200/224 Vibe Solutioning Platform.md" +70 -0
- package/vault/wiki/sources/Source: SwirlAI Agent Skills Progressive Disclosure.md +71 -0
- package/vault/wiki/sources/Source: TianPan Prompt Caching Architecture.md +89 -0
- package/vault/wiki/sources/Source: Vercel Labs agent-browser.md +155 -0
- package/vault/wiki/sources/Source: browser-harness CDP Harness.md +126 -0
- package/vault/wiki/sources/agent-drift-academic-paper.md +79 -0
- package/vault/wiki/sources/aider-repomap-tree-sitter.md +42 -0
- package/vault/wiki/sources/anthropic-compaction-api.md +58 -0
- package/vault/wiki/sources/anthropic-effective-harnesses.md +42 -0
- package/vault/wiki/sources/anthropic-prompt-best-practices.md +100 -0
- package/vault/wiki/sources/anthropic2026-harness-design.md +63 -0
- package/vault/wiki/sources/barrel-files-tkdodo.md +38 -0
- package/vault/wiki/sources/birth-of-unix-kernighan-interview.md +57 -0
- package/vault/wiki/sources/bockeler2026-harness-engineering.md +69 -0
- package/vault/wiki/sources/cast-code-chunking-paper.md +50 -0
- package/vault/wiki/sources/ck-semantic-search.md +78 -0
- package/vault/wiki/sources/claude-code-architecture-karaxai-2026.md +71 -0
- package/vault/wiki/sources/claude-code-architecture-qubytes-2026.md +50 -0
- package/vault/wiki/sources/claude-code-architecture-vila-lab-2026.md +64 -0
- package/vault/wiki/sources/claude-code-security-architecture-penligent-2026.md +70 -0
- package/vault/wiki/sources/claude-context-editing-docs.md +13 -0
- package/vault/wiki/sources/cloudflare-codemode.md +63 -0
- package/vault/wiki/sources/code-chunk-library-supermemory.md +63 -0
- package/vault/wiki/sources/codeact-apple-2024.md +62 -0
- package/vault/wiki/sources/codex-dsc-rfc-8573.md +41 -0
- package/vault/wiki/sources/codex-open-source-agent-2026.md +110 -0
- package/vault/wiki/sources/coir-code-retrieval-benchmark.md +51 -0
- package/vault/wiki/sources/colinmcnamara-context-optimization-codemode.md +48 -0
- package/vault/wiki/sources/context-folding-paper.md +61 -0
- package/vault/wiki/sources/context-mode-website.md +63 -0
- package/vault/wiki/sources/cursor-agent-best-practices-2026.md +62 -0
- package/vault/wiki/sources/cursor-fork-29b-2025.md +50 -0
- package/vault/wiki/sources/cursor-harness-april-2026.md +76 -0
- package/vault/wiki/sources/cursor-instant-apply-2024.md +45 -0
- package/vault/wiki/sources/cursor-shadow-workspace-2024.md +52 -0
- package/vault/wiki/sources/cursor-shipped-coding-agent-2026.md +53 -0
- package/vault/wiki/sources/cursor-vs-antigravity-2026.md +51 -0
- package/vault/wiki/sources/disler-pi-vs-claude-code.md +69 -0
- package/vault/wiki/sources/distill-deterministic-context-compression.md +53 -0
- package/vault/wiki/sources/embedding-models-benchmark-supermemory-2025.md +48 -0
- package/vault/wiki/sources/executor-rhyssullivan.md +122 -0
- package/vault/wiki/sources/fallow-rs-codebase-intelligence.md +125 -0
- package/vault/wiki/sources/fan2025-imad.md +60 -0
- package/vault/wiki/sources/forgecode-gpt5-agent-improvements.md +63 -0
- package/vault/wiki/sources/gemini-3-prompting-guide.md +78 -0
- package/vault/wiki/sources/gh-cli-sub-issue-rfc.md +50 -0
- package/vault/wiki/sources/gh-sub-issue-extension.md +72 -0
- package/vault/wiki/sources/github-fork-issues-discussion.md +44 -0
- package/vault/wiki/sources/github-issue-dependencies-docs.md +49 -0
- package/vault/wiki/sources/github-sub-issues-docs.md +51 -0
- package/vault/wiki/sources/gitingest.md +91 -0
- package/vault/wiki/sources/gitreverse.md +63 -0
- package/vault/wiki/sources/google-antigravity-official-blog.md +47 -0
- package/vault/wiki/sources/google-antigravity-wikipedia.md +53 -0
- package/vault/wiki/sources/gsd-codecentric-deep-dive.md +57 -0
- package/vault/wiki/sources/gsd-github-repo.md +51 -0
- package/vault/wiki/sources/gsd-hn-discussion.md +59 -0
- package/vault/wiki/sources/guido-python-design-philosophy.md +56 -0
- package/vault/wiki/sources/hejlsberg-7-learnings.md +48 -0
- package/vault/wiki/sources/ironclaw-drift-monitor.md +80 -0
- package/vault/wiki/sources/langsight-loop-detection.md +80 -0
- package/vault/wiki/sources/leanctx-website.md +69 -0
- package/vault/wiki/sources/lee2026-meta-harness.md +59 -0
- package/vault/wiki/sources/linux-kernel-coding-workflow.md +50 -0
- package/vault/wiki/sources/lou2026-autoharness.md +53 -0
- package/vault/wiki/sources/martin-fowler-harness-engineering.md +73 -0
- package/vault/wiki/sources/mcp-architecture-docs.md +13 -0
- package/vault/wiki/sources/meng2026-agent-harness-survey.md +79 -0
- package/vault/wiki/sources/mindstudio-four-agent-types.md +68 -0
- package/vault/wiki/sources/ms-chat-history-management.md +13 -0
- package/vault/wiki/sources/openai-prompt-guidance.md +104 -0
- package/vault/wiki/sources/openclaw-session-pruning.md +13 -0
- package/vault/wiki/sources/opencode-dcp.md +13 -0
- package/vault/wiki/sources/opendev-arxiv-2603.05344v1.md +79 -0
- package/vault/wiki/sources/openhands-platform.md +39 -0
- package/vault/wiki/sources/oss-guide-codebase-exploration.md +53 -0
- package/vault/wiki/sources/pi-compaction-extensions-ecosystem.md +102 -0
- package/vault/wiki/sources/pi-context-prune-github-repo.md +38 -0
- package/vault/wiki/sources/pi-mono-compaction-docs.md +38 -0
- package/vault/wiki/sources/pi-omni-compact-github-repo.md +50 -0
- package/vault/wiki/sources/pi-rtk-optimizer-github-repo.md +45 -0
- package/vault/wiki/sources/pi-vcc-github-repo.md +69 -0
- package/vault/wiki/sources/pi-vscode-marketplace.md +41 -0
- package/vault/wiki/sources/pi-vscode-model-provider-marketplace.md +39 -0
- package/vault/wiki/sources/py-tree-sitter.md +13 -0
- package/vault/wiki/sources/sentrux-dev-landing.md +40 -0
- package/vault/wiki/sources/sentrux-docs-pro-architecture.md +75 -0
- package/vault/wiki/sources/sentrux-docs-quality-signal.md +46 -0
- package/vault/wiki/sources/sentrux-docs-root-cause-metrics.md +57 -0
- package/vault/wiki/sources/sentrux-docs-rules-engine.md +58 -0
- package/vault/wiki/sources/sentrux-github-repo.md +56 -0
- package/vault/wiki/sources/superpowers-github-repo.md +56 -0
- package/vault/wiki/sources/superpowers-release-blog.md +54 -0
- package/vault/wiki/sources/superpowers-termdock-analysis.md +45 -0
- package/vault/wiki/sources/swe-agent-aci.md +42 -0
- package/vault/wiki/sources/swe-bench.md +45 -0
- package/vault/wiki/sources/swe-pruner-context-pruning.md +13 -0
- package/vault/wiki/sources/think-in-code-blog.md +48 -0
- package/vault/wiki/sources/tree-sitter-docs.md +13 -0
- package/vault/wiki/sources/ts-best-practices-2025-devto.md +42 -0
- package/vault/wiki/sources/ts-folder-structure-mingyang.md +58 -0
- package/vault/wiki/sources/ts-monorepo-koerselman.md +44 -0
- package/vault/wiki/sources/ts-result-error-handling-kkalamarski.md +52 -0
- package/vault/wiki/sources/ts-runtimes-comparison-betterstack.md +42 -0
- package/vault/wiki/sources/ts-strict-mode-rishikc.md +43 -0
- package/vault/wiki/sources/unix-philosophy.md +48 -0
- package/vault/wiki/sources/vectara-chunking-vs-embedding-naacl2025.md +39 -0
- package/vault/wiki/sources/vectara-guardian-agents.md +79 -0
- package/vault/wiki/sources/vgrep-semantic-search.md +76 -0
- package/vault/wiki/sources/vitest-official.md +41 -0
- package/vault/wiki/sources/vscode-pi-community-extension.md +40 -0
- package/vault/wiki/sources/wozcode.md +79 -0
- package/.agents/skills/compress/SKILL.md +0 -111
- package/.agents/skills/compress/scripts/__init__.py +0 -9
- package/.agents/skills/compress/scripts/__main__.py +0 -3
- package/.agents/skills/compress/scripts/benchmark.py +0 -78
- package/.agents/skills/compress/scripts/cli.py +0 -73
- package/.agents/skills/compress/scripts/compress.py +0 -227
- package/.agents/skills/compress/scripts/detect.py +0 -121
- package/.agents/skills/compress/scripts/validate.py +0 -189
- package/.agents/skills/emil-design-eng/SKILL.md +0 -679
- package/.agents/skills/lean-ctx/SKILL.md +0 -149
- package/.agents/skills/lean-ctx/scripts/install.sh +0 -95
- package/.agents/skills/scrapling-official/LICENSE.txt +0 -28
- package/.agents/skills/scrapling-official/SKILL.md +0 -390
- package/.agents/skills/scrapling-official/examples/01_fetcher_session.py +0 -26
- package/.agents/skills/scrapling-official/examples/02_dynamic_session.py +0 -26
- package/.agents/skills/scrapling-official/examples/03_stealthy_session.py +0 -26
- package/.agents/skills/scrapling-official/examples/04_spider.py +0 -58
- package/.agents/skills/scrapling-official/examples/README.md +0 -45
- package/.agents/skills/scrapling-official/references/fetching/choosing.md +0 -78
- package/.agents/skills/scrapling-official/references/fetching/dynamic.md +0 -352
- package/.agents/skills/scrapling-official/references/fetching/static.md +0 -432
- package/.agents/skills/scrapling-official/references/fetching/stealthy.md +0 -255
- package/.agents/skills/scrapling-official/references/mcp-server.md +0 -214
- package/.agents/skills/scrapling-official/references/migrating_from_beautifulsoup.md +0 -86
- package/.agents/skills/scrapling-official/references/parsing/adaptive.md +0 -212
- package/.agents/skills/scrapling-official/references/parsing/main_classes.md +0 -586
- package/.agents/skills/scrapling-official/references/parsing/selection.md +0 -494
- package/.agents/skills/scrapling-official/references/spiders/advanced.md +0 -344
- package/.agents/skills/scrapling-official/references/spiders/architecture.md +0 -94
- package/.agents/skills/scrapling-official/references/spiders/getting-started.md +0 -164
- package/.agents/skills/scrapling-official/references/spiders/proxy-blocking.md +0 -235
- package/.agents/skills/scrapling-official/references/spiders/requests-responses.md +0 -196
- package/.agents/skills/scrapling-official/references/spiders/sessions.md +0 -205
- package/.github/banner.png +0 -0
- package/PLAN.md +0 -11
- package/extensions/lean-ctx-enforce.ts +0 -166
- package/skills-lock.json +0 -35
- package/wiki/README.md +0 -10
- package/wiki/decisions/0001-establish-project-wiki-and-decision-record-format.md +0 -25
- package/wiki/decisions/0002-add-project-banner-to-readme.md +0 -26
- package/wiki/decisions/0003-remove-redundant-readme-title-heading.md +0 -26
- package/wiki/decisions/0004-publish-package-to-npm-as-ultimate-pi.md +0 -26
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: source
|
|
3
|
+
source_type: product-documentation
|
|
4
|
+
author: WithWoz Inc.
|
|
5
|
+
date_published: 2026
|
|
6
|
+
url: https://www.wozcode.com/how-it-works
|
|
7
|
+
confidence: medium
|
|
8
|
+
key_claims:
|
|
9
|
+
- "25-55% token reduction vs vanilla Claude Code"
|
|
10
|
+
- "Three levers: smarter search, batched edits, quality loop"
|
|
11
|
+
- "AST truncation stubs function bodies, returns only signatures"
|
|
12
|
+
- "Haiku subagents handle ~40% of coding work (exploration)"
|
|
13
|
+
- "100% local architecture, zero cloud code transmission"
|
|
14
|
+
- "Post-edit syntax validation (TS, JSON/YAML, SQL) catches errors before model retries"
|
|
15
|
+
- "Fuzzy edit matching tolerates whitespace drift and visually-identical characters"
|
|
16
|
+
- "Claims measured from live Anthropic API usage fields, not simulations"
|
|
17
|
+
tags:
|
|
18
|
+
- wozcode
|
|
19
|
+
- token-reduction
|
|
20
|
+
- claude-code
|
|
21
|
+
- agent-architecture
|
|
22
|
+
created: 2026-04-30
|
|
23
|
+
updated: 2026-04-30
|
|
24
|
+
status: ingested
|
|
25
|
+
title: "WOZCODE"
|
|
26
|
+
|
|
27
|
+
---# WOZCODE
|
|
28
|
+
|
|
29
|
+
WOZCODE is a Claude Code plugin by WithWoz Inc. that reduces token spend through three compounding levers. Patent-pending. Runs 100% locally — code never leaves the developer's machine.
|
|
30
|
+
|
|
31
|
+
## Three Core Levers
|
|
32
|
+
|
|
33
|
+
### 1. Smarter Search (Input Token Reduction)
|
|
34
|
+
- Ranked snippets instead of full-file grep dumps
|
|
35
|
+
- AST truncation: stubs function bodies, returns only signatures
|
|
36
|
+
- Returns only what the model needs for the current task
|
|
37
|
+
|
|
38
|
+
### 2. Batched & Fuzzy Edits (Output Token Reduction)
|
|
39
|
+
- Multiple file edits merged into a single model call
|
|
40
|
+
- Fuzzy edit matching: tolerates whitespace drift, indentation changes, curly vs straight quotes, em-dashes
|
|
41
|
+
- Near-misses land without retry round-trips
|
|
42
|
+
|
|
43
|
+
### 3. Quality Loop (Rework Reduction)
|
|
44
|
+
- Post-edit syntax validation: TS compiler, JSON/YAML/HTML parsers, SQL linter
|
|
45
|
+
- SQL dialect auto-fix: rewrites backtick identifiers, unquoted reserved aliases, `COUNT(DISTINCT a, b)`, `date_trunc("month", col)`
|
|
46
|
+
- Better error context: dialect-specific hints, real file content diffs instead of "string not found"
|
|
47
|
+
|
|
48
|
+
## Agent Architecture
|
|
49
|
+
|
|
50
|
+
| Agent | Model | Role |
|
|
51
|
+
|-------|-------|------|
|
|
52
|
+
| `woz:code` | User's frontier model (Opus/Sonnet) | Main thread, writes/edits code with full tool access |
|
|
53
|
+
| `woz:explore` | Haiku | Read-only exploration, returns summaries to parent. ~15× cheaper. |
|
|
54
|
+
|
|
55
|
+
~40% of coding work is exploration — automatically routed to Haiku.
|
|
56
|
+
|
|
57
|
+
## Privacy Architecture
|
|
58
|
+
|
|
59
|
+
- **Never sent**: source code, file contents, file paths, grep output, tool inputs/outputs, prompts, model responses, Anthropic API key
|
|
60
|
+
- **In the loop for tool execution, not API transport**: API requests go direct from machine to Anthropic
|
|
61
|
+
- **What WOZCODE servers do**: stats dashboard, auth endpoint, billing (via Stripe)
|
|
62
|
+
- **Aggregated anonymous stats**: session-level token/cost/time metrics only
|
|
63
|
+
|
|
64
|
+
## Competitor Comparison (from WOZCODE)
|
|
65
|
+
|
|
66
|
+
| Tool | Approach | WOZCODE's Critique |
|
|
67
|
+
|------|----------|-------------------|
|
|
68
|
+
| SDL-MCP | Graph-based code exploration | Covers only exploration, not editing/validation |
|
|
69
|
+
| Caveman | System-prompt prose compression | Most tokens are in tool calls, not prose |
|
|
70
|
+
| WOZCODE | Full-session coverage | Covers exploration, editing, and validation |
|
|
71
|
+
|
|
72
|
+
## Claims to Verify
|
|
73
|
+
|
|
74
|
+
Claims are **medium confidence** (single source, commercial product, patent-pending means details obscured):
|
|
75
|
+
- [ ] 25-55% token savings — benchmarkable on our codebase
|
|
76
|
+
- [ ] 5-10× faster on DB tasks — domain-specific claim
|
|
77
|
+
- [ ] AST truncation effectiveness on dynamic languages
|
|
78
|
+
- [ ] Fuzzy edit matching false-positive rate
|
|
79
|
+
- [ ] Post-edit validation latency overhead
|
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: compress
|
|
3
|
-
description: >
|
|
4
|
-
Compress natural language memory files (CLAUDE.md, todos, preferences) into caveman format
|
|
5
|
-
to save input tokens. Preserves all technical substance, code, URLs, and structure.
|
|
6
|
-
Compressed version overwrites the original file. Human-readable backup saved as FILE.original.md.
|
|
7
|
-
Trigger: /caveman:compress <filepath> or "compress memory file"
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
# Caveman Compress
|
|
11
|
-
|
|
12
|
-
## Purpose
|
|
13
|
-
|
|
14
|
-
Compress natural language files (CLAUDE.md, todos, preferences) into caveman-speak to reduce input tokens. Compressed version overwrites original. Human-readable backup saved as `<filename>.original.md`.
|
|
15
|
-
|
|
16
|
-
## Trigger
|
|
17
|
-
|
|
18
|
-
`/caveman:compress <filepath>` or when user asks to compress a memory file.
|
|
19
|
-
|
|
20
|
-
## Process
|
|
21
|
-
|
|
22
|
-
1. This SKILL.md lives alongside `scripts/` in the same directory. Find that directory.
|
|
23
|
-
|
|
24
|
-
2. Run:
|
|
25
|
-
|
|
26
|
-
cd <directory_containing_this_SKILL.md> && python3 -m scripts <absolute_filepath>
|
|
27
|
-
|
|
28
|
-
3. The CLI will:
|
|
29
|
-
- detect file type (no tokens)
|
|
30
|
-
- call Claude to compress
|
|
31
|
-
- validate output (no tokens)
|
|
32
|
-
- if errors: cherry-pick fix with Claude (targeted fixes only, no recompression)
|
|
33
|
-
- retry up to 2 times
|
|
34
|
-
- if still failing after 2 retries: report error to user, leave original file untouched
|
|
35
|
-
|
|
36
|
-
4. Return result to user
|
|
37
|
-
|
|
38
|
-
## Compression Rules
|
|
39
|
-
|
|
40
|
-
### Remove
|
|
41
|
-
- Articles: a, an, the
|
|
42
|
-
- Filler: just, really, basically, actually, simply, essentially, generally
|
|
43
|
-
- Pleasantries: "sure", "certainly", "of course", "happy to", "I'd recommend"
|
|
44
|
-
- Hedging: "it might be worth", "you could consider", "it would be good to"
|
|
45
|
-
- Redundant phrasing: "in order to" → "to", "make sure to" → "ensure", "the reason is because" → "because"
|
|
46
|
-
- Connective fluff: "however", "furthermore", "additionally", "in addition"
|
|
47
|
-
|
|
48
|
-
### Preserve EXACTLY (never modify)
|
|
49
|
-
- Code blocks (fenced ``` and indented)
|
|
50
|
-
- Inline code (`backtick content`)
|
|
51
|
-
- URLs and links (full URLs, markdown links)
|
|
52
|
-
- File paths (`/src/components/...`, `./config.yaml`)
|
|
53
|
-
- Commands (`npm install`, `git commit`, `docker build`)
|
|
54
|
-
- Technical terms (library names, API names, protocols, algorithms)
|
|
55
|
-
- Proper nouns (project names, people, companies)
|
|
56
|
-
- Dates, version numbers, numeric values
|
|
57
|
-
- Environment variables (`$HOME`, `NODE_ENV`)
|
|
58
|
-
|
|
59
|
-
### Preserve Structure
|
|
60
|
-
- All markdown headings (keep exact heading text, compress body below)
|
|
61
|
-
- Bullet point hierarchy (keep nesting level)
|
|
62
|
-
- Numbered lists (keep numbering)
|
|
63
|
-
- Tables (compress cell text, keep structure)
|
|
64
|
-
- Frontmatter/YAML headers in markdown files
|
|
65
|
-
|
|
66
|
-
### Compress
|
|
67
|
-
- Use short synonyms: "big" not "extensive", "fix" not "implement a solution for", "use" not "utilize"
|
|
68
|
-
- Fragments OK: "Run tests before commit" not "You should always run tests before committing"
|
|
69
|
-
- Drop "you should", "make sure to", "remember to" — just state the action
|
|
70
|
-
- Merge redundant bullets that say the same thing differently
|
|
71
|
-
- Keep one example where multiple examples show the same pattern
|
|
72
|
-
|
|
73
|
-
CRITICAL RULE:
|
|
74
|
-
Anything inside ``` ... ``` must be copied EXACTLY.
|
|
75
|
-
Do not:
|
|
76
|
-
- remove comments
|
|
77
|
-
- remove spacing
|
|
78
|
-
- reorder lines
|
|
79
|
-
- shorten commands
|
|
80
|
-
- simplify anything
|
|
81
|
-
|
|
82
|
-
Inline code (`...`) must be preserved EXACTLY.
|
|
83
|
-
Do not modify anything inside backticks.
|
|
84
|
-
|
|
85
|
-
If file contains code blocks:
|
|
86
|
-
- Treat code blocks as read-only regions
|
|
87
|
-
- Only compress text outside them
|
|
88
|
-
- Do not merge sections around code
|
|
89
|
-
|
|
90
|
-
## Pattern
|
|
91
|
-
|
|
92
|
-
Original:
|
|
93
|
-
> You should always make sure to run the test suite before pushing any changes to the main branch. This is important because it helps catch bugs early and prevents broken builds from being deployed to production.
|
|
94
|
-
|
|
95
|
-
Compressed:
|
|
96
|
-
> Run tests before push to main. Catch bugs early, prevent broken prod deploys.
|
|
97
|
-
|
|
98
|
-
Original:
|
|
99
|
-
> The application uses a microservices architecture with the following components. The API gateway handles all incoming requests and routes them to the appropriate service. The authentication service is responsible for managing user sessions and JWT tokens.
|
|
100
|
-
|
|
101
|
-
Compressed:
|
|
102
|
-
> Microservices architecture. API gateway route all requests to services. Auth service manage user sessions + JWT tokens.
|
|
103
|
-
|
|
104
|
-
## Boundaries
|
|
105
|
-
|
|
106
|
-
- ONLY compress natural language files (.md, .txt, extensionless)
|
|
107
|
-
- NEVER modify: .py, .js, .ts, .json, .yaml, .yml, .toml, .env, .lock, .css, .html, .xml, .sql, .sh
|
|
108
|
-
- If file has mixed content (prose + code), compress ONLY the prose sections
|
|
109
|
-
- If unsure whether something is code or prose, leave it unchanged
|
|
110
|
-
- Original file is backed up as FILE.original.md before overwriting
|
|
111
|
-
- Never compress FILE.original.md (skip it)
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env python3
|
|
2
|
-
from pathlib import Path
|
|
3
|
-
import sys
|
|
4
|
-
|
|
5
|
-
# Support both direct execution and module import
|
|
6
|
-
try:
|
|
7
|
-
from .validate import validate
|
|
8
|
-
except ImportError:
|
|
9
|
-
sys.path.insert(0, str(Path(__file__).parent))
|
|
10
|
-
from validate import validate
|
|
11
|
-
|
|
12
|
-
try:
|
|
13
|
-
import tiktoken
|
|
14
|
-
_enc = tiktoken.get_encoding("o200k_base")
|
|
15
|
-
except ImportError:
|
|
16
|
-
_enc = None
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
def count_tokens(text):
|
|
20
|
-
if _enc is None:
|
|
21
|
-
return len(text.split()) # fallback: word count
|
|
22
|
-
return len(_enc.encode(text))
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
def benchmark_pair(orig_path: Path, comp_path: Path):
|
|
26
|
-
orig_text = orig_path.read_text()
|
|
27
|
-
comp_text = comp_path.read_text()
|
|
28
|
-
|
|
29
|
-
orig_tokens = count_tokens(orig_text)
|
|
30
|
-
comp_tokens = count_tokens(comp_text)
|
|
31
|
-
saved = 100 * (orig_tokens - comp_tokens) / orig_tokens if orig_tokens > 0 else 0.0
|
|
32
|
-
result = validate(orig_path, comp_path)
|
|
33
|
-
|
|
34
|
-
return (comp_path.name, orig_tokens, comp_tokens, saved, result.is_valid)
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
def print_table(rows):
|
|
38
|
-
print("\n| File | Original | Compressed | Saved % | Valid |")
|
|
39
|
-
print("|------|----------|------------|---------|-------|")
|
|
40
|
-
for r in rows:
|
|
41
|
-
print(f"| {r[0]} | {r[1]} | {r[2]} | {r[3]:.1f}% | {'✅' if r[4] else '❌'} |")
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
def main():
|
|
45
|
-
# Direct file pair: python3 benchmark.py original.md compressed.md
|
|
46
|
-
if len(sys.argv) == 3:
|
|
47
|
-
orig = Path(sys.argv[1]).resolve()
|
|
48
|
-
comp = Path(sys.argv[2]).resolve()
|
|
49
|
-
if not orig.exists():
|
|
50
|
-
print(f"❌ Not found: {orig}")
|
|
51
|
-
sys.exit(1)
|
|
52
|
-
if not comp.exists():
|
|
53
|
-
print(f"❌ Not found: {comp}")
|
|
54
|
-
sys.exit(1)
|
|
55
|
-
print_table([benchmark_pair(orig, comp)])
|
|
56
|
-
return
|
|
57
|
-
|
|
58
|
-
# Glob mode: repo_root/tests/caveman-compress/
|
|
59
|
-
tests_dir = Path(__file__).parent.parent.parent / "tests" / "caveman-compress"
|
|
60
|
-
if not tests_dir.exists():
|
|
61
|
-
print(f"❌ Tests dir not found: {tests_dir}")
|
|
62
|
-
sys.exit(1)
|
|
63
|
-
|
|
64
|
-
rows = []
|
|
65
|
-
for orig in sorted(tests_dir.glob("*.original.md")):
|
|
66
|
-
comp = orig.with_name(orig.stem.removesuffix(".original") + ".md")
|
|
67
|
-
if comp.exists():
|
|
68
|
-
rows.append(benchmark_pair(orig, comp))
|
|
69
|
-
|
|
70
|
-
if not rows:
|
|
71
|
-
print("No compressed file pairs found.")
|
|
72
|
-
return
|
|
73
|
-
|
|
74
|
-
print_table(rows)
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
if __name__ == "__main__":
|
|
78
|
-
main()
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env python3
|
|
2
|
-
"""
|
|
3
|
-
Caveman Compress CLI
|
|
4
|
-
|
|
5
|
-
Usage:
|
|
6
|
-
caveman <filepath>
|
|
7
|
-
"""
|
|
8
|
-
|
|
9
|
-
import sys
|
|
10
|
-
from pathlib import Path
|
|
11
|
-
|
|
12
|
-
from .compress import compress_file
|
|
13
|
-
from .detect import detect_file_type, should_compress
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
def print_usage():
|
|
17
|
-
print("Usage: caveman <filepath>")
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
def main():
|
|
21
|
-
if len(sys.argv) != 2:
|
|
22
|
-
print_usage()
|
|
23
|
-
sys.exit(1)
|
|
24
|
-
|
|
25
|
-
filepath = Path(sys.argv[1])
|
|
26
|
-
|
|
27
|
-
# Check file exists
|
|
28
|
-
if not filepath.exists():
|
|
29
|
-
print(f"❌ File not found: {filepath}")
|
|
30
|
-
sys.exit(1)
|
|
31
|
-
|
|
32
|
-
if not filepath.is_file():
|
|
33
|
-
print(f"❌ Not a file: {filepath}")
|
|
34
|
-
sys.exit(1)
|
|
35
|
-
|
|
36
|
-
filepath = filepath.resolve()
|
|
37
|
-
|
|
38
|
-
# Detect file type
|
|
39
|
-
file_type = detect_file_type(filepath)
|
|
40
|
-
|
|
41
|
-
print(f"Detected: {file_type}")
|
|
42
|
-
|
|
43
|
-
# Check if compressible
|
|
44
|
-
if not should_compress(filepath):
|
|
45
|
-
print("Skipping: file is not natural language (code/config)")
|
|
46
|
-
sys.exit(0)
|
|
47
|
-
|
|
48
|
-
print("Starting caveman compression...\n")
|
|
49
|
-
|
|
50
|
-
try:
|
|
51
|
-
success = compress_file(filepath)
|
|
52
|
-
|
|
53
|
-
if success:
|
|
54
|
-
print("\nCompression completed successfully")
|
|
55
|
-
backup_path = filepath.with_name(filepath.stem + ".original.md")
|
|
56
|
-
print(f"Compressed: {filepath}")
|
|
57
|
-
print(f"Original: {backup_path}")
|
|
58
|
-
sys.exit(0)
|
|
59
|
-
else:
|
|
60
|
-
print("\n❌ Compression failed after retries")
|
|
61
|
-
sys.exit(2)
|
|
62
|
-
|
|
63
|
-
except KeyboardInterrupt:
|
|
64
|
-
print("\nInterrupted by user")
|
|
65
|
-
sys.exit(130)
|
|
66
|
-
|
|
67
|
-
except Exception as e:
|
|
68
|
-
print(f"\n❌ Error: {e}")
|
|
69
|
-
sys.exit(1)
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
if __name__ == "__main__":
|
|
73
|
-
main()
|
|
@@ -1,227 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env python3
|
|
2
|
-
"""
|
|
3
|
-
Caveman Memory Compression Orchestrator
|
|
4
|
-
|
|
5
|
-
Usage:
|
|
6
|
-
python scripts/compress.py <filepath>
|
|
7
|
-
"""
|
|
8
|
-
|
|
9
|
-
import os
|
|
10
|
-
import re
|
|
11
|
-
import subprocess
|
|
12
|
-
from pathlib import Path
|
|
13
|
-
from typing import List
|
|
14
|
-
|
|
15
|
-
OUTER_FENCE_REGEX = re.compile(
|
|
16
|
-
r"\A\s*(`{3,}|~{3,})[^\n]*\n(.*)\n\1\s*\Z", re.DOTALL
|
|
17
|
-
)
|
|
18
|
-
|
|
19
|
-
# Filenames and paths that almost certainly hold secrets or PII. Compressing
|
|
20
|
-
# them ships raw bytes to the Anthropic API — a third-party data boundary that
|
|
21
|
-
# developers on sensitive codebases cannot cross. detect.py already skips .env
|
|
22
|
-
# by extension, but credentials.md / secrets.txt / ~/.aws/credentials would
|
|
23
|
-
# slip through the natural-language filter. This is a hard refuse before read.
|
|
24
|
-
SENSITIVE_BASENAME_REGEX = re.compile(
|
|
25
|
-
r"(?ix)^("
|
|
26
|
-
r"\.env(\..+)?"
|
|
27
|
-
r"|\.netrc"
|
|
28
|
-
r"|credentials(\..+)?"
|
|
29
|
-
r"|secrets?(\..+)?"
|
|
30
|
-
r"|passwords?(\..+)?"
|
|
31
|
-
r"|id_(rsa|dsa|ecdsa|ed25519)(\.pub)?"
|
|
32
|
-
r"|authorized_keys"
|
|
33
|
-
r"|known_hosts"
|
|
34
|
-
r"|.*\.(pem|key|p12|pfx|crt|cer|jks|keystore|asc|gpg)"
|
|
35
|
-
r")$"
|
|
36
|
-
)
|
|
37
|
-
|
|
38
|
-
SENSITIVE_PATH_COMPONENTS = frozenset({".ssh", ".aws", ".gnupg", ".kube", ".docker"})
|
|
39
|
-
|
|
40
|
-
SENSITIVE_NAME_TOKENS = (
|
|
41
|
-
"secret", "credential", "password", "passwd",
|
|
42
|
-
"apikey", "accesskey", "token", "privatekey",
|
|
43
|
-
)
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
def is_sensitive_path(filepath: Path) -> bool:
|
|
47
|
-
"""Heuristic denylist for files that must never be shipped to a third-party API."""
|
|
48
|
-
name = filepath.name
|
|
49
|
-
if SENSITIVE_BASENAME_REGEX.match(name):
|
|
50
|
-
return True
|
|
51
|
-
lowered_parts = {p.lower() for p in filepath.parts}
|
|
52
|
-
if lowered_parts & SENSITIVE_PATH_COMPONENTS:
|
|
53
|
-
return True
|
|
54
|
-
# Normalize separators so "api-key" and "api_key" both match "apikey".
|
|
55
|
-
lower = re.sub(r"[_\-\s.]", "", name.lower())
|
|
56
|
-
return any(tok in lower for tok in SENSITIVE_NAME_TOKENS)
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
def strip_llm_wrapper(text: str) -> str:
|
|
60
|
-
"""Strip outer ```markdown ... ``` fence when it wraps the entire output."""
|
|
61
|
-
m = OUTER_FENCE_REGEX.match(text)
|
|
62
|
-
if m:
|
|
63
|
-
return m.group(2)
|
|
64
|
-
return text
|
|
65
|
-
|
|
66
|
-
from .detect import should_compress
|
|
67
|
-
from .validate import validate
|
|
68
|
-
|
|
69
|
-
MAX_RETRIES = 2
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
# ---------- Claude Calls ----------
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
def call_claude(prompt: str) -> str:
|
|
76
|
-
api_key = os.environ.get("ANTHROPIC_API_KEY")
|
|
77
|
-
if api_key:
|
|
78
|
-
try:
|
|
79
|
-
import anthropic
|
|
80
|
-
|
|
81
|
-
client = anthropic.Anthropic(api_key=api_key)
|
|
82
|
-
msg = client.messages.create(
|
|
83
|
-
model=os.environ.get("CAVEMAN_MODEL", "claude-sonnet-4-5"),
|
|
84
|
-
max_tokens=8192,
|
|
85
|
-
messages=[{"role": "user", "content": prompt}],
|
|
86
|
-
)
|
|
87
|
-
return strip_llm_wrapper(msg.content[0].text.strip())
|
|
88
|
-
except ImportError:
|
|
89
|
-
pass # anthropic not installed, fall back to CLI
|
|
90
|
-
# Fallback: use claude CLI (handles desktop auth)
|
|
91
|
-
try:
|
|
92
|
-
result = subprocess.run(
|
|
93
|
-
["claude", "--print"],
|
|
94
|
-
input=prompt,
|
|
95
|
-
text=True,
|
|
96
|
-
capture_output=True,
|
|
97
|
-
check=True,
|
|
98
|
-
)
|
|
99
|
-
return strip_llm_wrapper(result.stdout.strip())
|
|
100
|
-
except subprocess.CalledProcessError as e:
|
|
101
|
-
raise RuntimeError(f"Claude call failed:\n{e.stderr}")
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
def build_compress_prompt(original: str) -> str:
|
|
105
|
-
return f"""
|
|
106
|
-
Compress this markdown into caveman format.
|
|
107
|
-
|
|
108
|
-
STRICT RULES:
|
|
109
|
-
- Do NOT modify anything inside ``` code blocks
|
|
110
|
-
- Do NOT modify anything inside inline backticks
|
|
111
|
-
- Preserve ALL URLs exactly
|
|
112
|
-
- Preserve ALL headings exactly
|
|
113
|
-
- Preserve file paths and commands
|
|
114
|
-
- Return ONLY the compressed markdown body — do NOT wrap the entire output in a ```markdown fence or any other fence. Inner code blocks from the original stay as-is; do not add a new outer fence around the whole file.
|
|
115
|
-
|
|
116
|
-
Only compress natural language.
|
|
117
|
-
|
|
118
|
-
TEXT:
|
|
119
|
-
{original}
|
|
120
|
-
"""
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
def build_fix_prompt(original: str, compressed: str, errors: List[str]) -> str:
|
|
124
|
-
errors_str = "\n".join(f"- {e}" for e in errors)
|
|
125
|
-
return f"""You are fixing a caveman-compressed markdown file. Specific validation errors were found.
|
|
126
|
-
|
|
127
|
-
CRITICAL RULES:
|
|
128
|
-
- DO NOT recompress or rephrase the file
|
|
129
|
-
- ONLY fix the listed errors — leave everything else exactly as-is
|
|
130
|
-
- The ORIGINAL is provided as reference only (to restore missing content)
|
|
131
|
-
- Preserve caveman style in all untouched sections
|
|
132
|
-
|
|
133
|
-
ERRORS TO FIX:
|
|
134
|
-
{errors_str}
|
|
135
|
-
|
|
136
|
-
HOW TO FIX:
|
|
137
|
-
- Missing URL: find it in ORIGINAL, restore it exactly where it belongs in COMPRESSED
|
|
138
|
-
- Code block mismatch: find the exact code block in ORIGINAL, restore it in COMPRESSED
|
|
139
|
-
- Heading mismatch: restore the exact heading text from ORIGINAL into COMPRESSED
|
|
140
|
-
- Do not touch any section not mentioned in the errors
|
|
141
|
-
|
|
142
|
-
ORIGINAL (reference only):
|
|
143
|
-
{original}
|
|
144
|
-
|
|
145
|
-
COMPRESSED (fix this):
|
|
146
|
-
{compressed}
|
|
147
|
-
|
|
148
|
-
Return ONLY the fixed compressed file. No explanation.
|
|
149
|
-
"""
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
# ---------- Core Logic ----------
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
def compress_file(filepath: Path) -> bool:
|
|
156
|
-
# Resolve and validate path
|
|
157
|
-
filepath = filepath.resolve()
|
|
158
|
-
MAX_FILE_SIZE = 500_000 # 500KB
|
|
159
|
-
if not filepath.exists():
|
|
160
|
-
raise FileNotFoundError(f"File not found: {filepath}")
|
|
161
|
-
if filepath.stat().st_size > MAX_FILE_SIZE:
|
|
162
|
-
raise ValueError(f"File too large to compress safely (max 500KB): {filepath}")
|
|
163
|
-
|
|
164
|
-
# Refuse files that look like they contain secrets or PII. Compressing ships
|
|
165
|
-
# the raw bytes to the Anthropic API — a third-party boundary — so we fail
|
|
166
|
-
# loudly rather than silently exfiltrate credentials or keys. Override is
|
|
167
|
-
# intentional: the user must rename the file if the heuristic is wrong.
|
|
168
|
-
if is_sensitive_path(filepath):
|
|
169
|
-
raise ValueError(
|
|
170
|
-
f"Refusing to compress {filepath}: filename looks sensitive "
|
|
171
|
-
"(credentials, keys, secrets, or known private paths). "
|
|
172
|
-
"Compression sends file contents to the Anthropic API. "
|
|
173
|
-
"Rename the file if this is a false positive."
|
|
174
|
-
)
|
|
175
|
-
|
|
176
|
-
print(f"Processing: {filepath}")
|
|
177
|
-
|
|
178
|
-
if not should_compress(filepath):
|
|
179
|
-
print("Skipping (not natural language)")
|
|
180
|
-
return False
|
|
181
|
-
|
|
182
|
-
original_text = filepath.read_text(errors="ignore")
|
|
183
|
-
backup_path = filepath.with_name(filepath.stem + ".original.md")
|
|
184
|
-
|
|
185
|
-
# Check if backup already exists to prevent accidental overwriting
|
|
186
|
-
if backup_path.exists():
|
|
187
|
-
print(f"⚠️ Backup file already exists: {backup_path}")
|
|
188
|
-
print("The original backup may contain important content.")
|
|
189
|
-
print("Aborting to prevent data loss. Please remove or rename the backup file if you want to proceed.")
|
|
190
|
-
return False
|
|
191
|
-
|
|
192
|
-
# Step 1: Compress
|
|
193
|
-
print("Compressing with Claude...")
|
|
194
|
-
compressed = call_claude(build_compress_prompt(original_text))
|
|
195
|
-
|
|
196
|
-
# Save original as backup, write compressed to original path
|
|
197
|
-
backup_path.write_text(original_text)
|
|
198
|
-
filepath.write_text(compressed)
|
|
199
|
-
|
|
200
|
-
# Step 2: Validate + Retry
|
|
201
|
-
for attempt in range(MAX_RETRIES):
|
|
202
|
-
print(f"\nValidation attempt {attempt + 1}")
|
|
203
|
-
|
|
204
|
-
result = validate(backup_path, filepath)
|
|
205
|
-
|
|
206
|
-
if result.is_valid:
|
|
207
|
-
print("Validation passed")
|
|
208
|
-
break
|
|
209
|
-
|
|
210
|
-
print("❌ Validation failed:")
|
|
211
|
-
for err in result.errors:
|
|
212
|
-
print(f" - {err}")
|
|
213
|
-
|
|
214
|
-
if attempt == MAX_RETRIES - 1:
|
|
215
|
-
# Restore original on failure
|
|
216
|
-
filepath.write_text(original_text)
|
|
217
|
-
backup_path.unlink(missing_ok=True)
|
|
218
|
-
print("❌ Failed after retries — original restored")
|
|
219
|
-
return False
|
|
220
|
-
|
|
221
|
-
print("Fixing with Claude...")
|
|
222
|
-
compressed = call_claude(
|
|
223
|
-
build_fix_prompt(original_text, compressed, result.errors)
|
|
224
|
-
)
|
|
225
|
-
filepath.write_text(compressed)
|
|
226
|
-
|
|
227
|
-
return True
|