Commit Graph

108 Commits

Author SHA1 Message Date
ajmallesh
69f2d8ffe7 refactor: simplify session ID handling and improve Taskfile options
- Include hostname in workflow ID for better audit log organization
- Extract sanitizeHostname utility to audit/utils.ts for reuse
- Remove unused generateSessionLogPath and buildLogFilePath functions
- Simplify Taskfile with CONFIG/OUTPUT/CLEAN named parameters
2026-01-12 17:46:21 -08:00
ajmallesh
b84c1d3bb0 feat: improve Temporal client UX and env handling
- Change default to fire-and-forget (--wait flag to opt-in)
- Add splash screen and improve console output formatting
- Add .env to gitignore, remove from dockerignore for container access
- Add Taskfile for common development commands
2026-01-12 17:46:21 -08:00
ajmallesh
5bda6fa634 refactor: consolidate Docker setup to root docker-compose.yml 2026-01-12 17:46:21 -08:00
ajmallesh
b26c69023d fix: add report assembly step to Temporal workflow
- Add assembleReportActivity to concatenate exploitation evidence files before report agent runs
- Call assembleFinalReport in workflow Phase 5 before runReportAgent
- Ensure deliverables directory exists before writing final report
- Simplify pipeline-testing report prompt to just prepend header
2026-01-12 17:46:21 -08:00
ajmallesh
cbb2b4acc0 feat: fix Docker worker container setup
- Install uv instead of deprecated uvx package
- Add mcp-server and configs directories to container
- Mount target repo dynamically via TARGET_REPO env variable
2026-01-12 17:46:21 -08:00
ajmallesh
05f8e2382c feat: add Temporal worker, client, and query tools (phase 5)
- Add worker.ts with workflow bundling and graceful shutdown
- Add client.ts CLI to start pipelines with progress polling
- Add query.ts CLI to inspect running workflow state
- Fix buffer overflow by truncating error messages and stack traces
- Skip git operations gracefully on non-git repositories
- Add kill.sh/start.sh dev scripts and Dockerfile.worker
2026-01-12 17:46:21 -08:00
ajmallesh
eb7eced23f feat: add Temporal workflow for 5-phase pipeline orchestration (phase 4) 2026-01-12 17:46:21 -08:00
ajmallesh
322e427c38 feat: add Temporal activities for agent execution (phase 3)
- Add activities.ts with heartbeat loop, git checkpoint/rollback, and error classification
- Export runClaudePrompt, validateAgentOutput, ClaudePromptResult for Temporal use
- Track attempt number via Temporal Context for accurate audit logging
- Rollback git workspace before retry to ensure clean state
2026-01-12 17:46:21 -08:00
ajmallesh
6fdfdcb96a feat: add Temporal integration foundation (phase 1-2)
- Add Temporal SDK dependencies (@temporalio/client, worker, workflow, activity)
- Add shared types for pipeline state, metrics, and progress queries
- Add classifyErrorForTemporal() for retry behavior classification
- Add docker-compose for Temporal server with SQLite persistence
2026-01-12 17:46:21 -08:00
ajmallesh
49e53b9e0c feat: add Claude Code custom commands for debug and review 2026-01-12 17:46:21 -08:00
ajmallesh
f84414d5ca refactor: modularize claude-executor and extract shared utilities
- Extract message handling into src/ai/message-handlers.ts with pure functions
- Extract output formatting into src/ai/output-formatters.ts
- Extract progress management into src/ai/progress-manager.ts
- Add audit-logger.ts with Null Object pattern for optional logging
- Add shared utilities: formatting.ts, file-io.ts, functional.ts
- Consolidate getPromptNameForAgent into src/types/agents.ts
2026-01-12 17:46:21 -08:00
ezl-keygraph
bc52d67dd5 refactor: remove orchestration layer (#45)
* refactor: remove orchestration layer and simplify CLI

Remove the complex orchestration layer including checkpoint management,
rollback/recovery commands, and session management commands. This
consolidates the execution logic directly in shannon.ts for a simpler
fire-and-forget execution model.

Changes:
- Remove checkpoint-manager.ts and rollback functionality
- Remove command-handler.ts and cli/prompts.ts
- Simplify session-manager.ts to just agent definitions
- Consolidate orchestration logic in shannon.ts
- Update CLAUDE.md documentation

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* refactor: move session lock logic to shannon.ts, simplify session-manager

- Reduce session-manager.ts to only AGENTS, AGENT_ORDER, getParallelGroups()
- Move Session interface and lock file functions to shannon.ts
- Simplify Session to only: id, webUrl, repoPath, status, startedAt
- Remove unused types/session.ts

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* refactor: use crypto.randomUUID() for session ID generation

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-12 22:58:17 +05:30
ezl-keygraph
264b16991a feat: add configurable output directory with --output flag (#41)
* feat: add configurable output directory with --output flag

Add --output CLI flag to specify custom output directory for session
folders containing audit logs, prompts, agent logs, and deliverables.

Changes:
- Add --output <path> CLI flag parsing
- Update generateAuditPath() to use custom path when provided
- Add consolidateOutputs() to copy deliverables to session folder
- Update Docker examples with volume mounts for output directories
- Default remains ./audit-logs/ when --output is not specified

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

* feat: add configurable output directory with --output flag

Add --output CLI flag to specify custom output directory for session
folders containing audit logs, prompts, agent logs, and deliverables.

Changes:
- Add --output <path> CLI flag parsing
- Store outputPath in Session interface for persistence
- Update generateAuditPath() to use custom path when provided
- Pass outputPath through pre-recon and checkpoint-manager
- Add consolidateOutputs() to copy deliverables to session folder
- Update Docker examples with volume mount instructions
- Default remains ./audit-logs/ when --output is not specified

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

* chore: add gitkeep and fix formatting

* fix: correct docker run command formatting in README

Remove invalid inline comments after backslash continuations in docker
run commands. Comments cannot appear after backslash line continuations
in shell scripts, as the backslash escapes the newline character.

Reorganized comments to appear on separate lines before or after the
command block for better clarity and proper shell syntax.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude <noreply@anthropic.com>
2026-01-08 23:50:42 +05:30
ezl-keygraph
dd18f4629b feat: typescript migration (#40)
* chore: initialize TypeScript configuration and build setup

- Add tsconfig.json for root and mcp-server with strict type checking
- Install typescript and @types/node as devDependencies
- Add npm build script for TypeScript compilation
- Update main entrypoint to compiled dist/shannon.js
- Update Dockerfile to build TypeScript before running
- Configure output directory and module resolution for Node.js

* refactor: migrate codebase from JavaScript to TypeScript

- Convert all 37 JavaScript files to TypeScript (.js -> .ts)
- Add type definitions in src/types/ for agents, config, errors, session
- Update mcp-server with proper TypeScript types
- Move entry point from shannon.mjs to src/shannon.ts
- Update tsconfig.json with rootDir: "./src" for cleaner dist output
- Update Dockerfile to build TypeScript before runtime
- Update package.json paths to use compiled dist/shannon.js

No runtime behavior changes - pure type safety migration.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* docs: update CLI references from ./shannon.mjs to shannon

- Update help text in src/cli/ui.ts
- Update usage examples in src/cli/command-handler.ts
- Update setup message in src/shannon.ts
- Update CLAUDE.md documentation with TypeScript file structure
- Replace all ./shannon.mjs references with shannon command

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* chore: remove unnecessary eslint-disable comments

ESLint is not configured in this project, making these comments redundant.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-08 00:18:25 +05:30
Arjun Malleswaran
b4d2c35b91 Merge pull request #39 from KeygraphHQ/keygraphVarun-patch-1
Update README.md
2026-01-05 14:47:54 -08:00
keygraphVarun
f44d4d6fb8 Update README.md
docs: rename Benchmark Results to Sample Reports, add link to XBOW benchmark
2026-01-05 13:04:33 -08:00
Khaushik-keygraph
f92e3f6840 Merge pull request #35 from KeygraphHQ/fix-dockerfile-linux-compatible
fix: Add Linux support for Docker volume permissions
2025-12-23 00:21:03 +05:30
Khaushik-keygraph
b54d0fcc9b fix: Add Linux support for Docker volume permissions 2025-12-20 23:02:24 +05:30
Arjun Malleswaran
fc8b122cca Merge pull request #30 from KeygraphHQ/fix-community-github-links
docs: fix GitHub links in Community & Support section
2025-12-16 22:51:04 -08:00
ajmallesh
6d55352a13 docs: fix GitHub links in Community & Support section
Update GitHub Issues and Discussions links to use correct
organization name (KeygraphHQ instead of keygraph).

🤖 Generated with [Claude Code](https://claude.com/claude-code)
2025-12-16 22:48:54 -08:00
Arjun Malleswaran
00b5511028 Merge pull request #27 from KeygraphHQ/update-discord-link
docs: update Discord invite links
2025-12-16 13:34:22 -08:00
ajmallesh
aecca9cec4 docs: update Discord invite links 2025-12-16 13:33:02 -08:00
Arjun Malleswaran
4d61d4af3f Merge pull request #26 from KeygraphHQ/keygraphVarun-patch-update-readme
clarify contributions
2025-12-16 13:15:26 -08:00
keygraphVarun
81ceabac1f clarify contributions 2025-12-16 13:14:29 -08:00
Arjun Malleswaran
41d3d3912d Merge pull request #21 from KeygraphHQ/bug-fixes
Docker and config path fixes
2025-12-15 10:41:12 -08:00
ajmallesh
1e784e650d fix: support absolute config paths in checkpoint manager
Co-Authored-By: Khaushik-keygraph <khaushik.contractor@keygraph.io>
2025-12-15 10:34:25 -08:00
ajmallesh
906d464abd fix: configure git to trust all directories in Docker
Co-Authored-By: Khaushik-keygraph <khaushik.contractor@keygraph.io>
2025-12-15 10:34:25 -08:00
ajmallesh
fba798ac49 docs: add Docker instructions for testing local applications
Co-Authored-By: Khaushik-keygraph <khaushik.contractor@keygraph.io>
2025-12-15 10:34:24 -08:00
Khaushik-keygraph
c655e8a716 chore: added disable loader functionality 2025-12-10 00:59:56 +05:30
Arjun Malleswaran
accb9562ba Merge pull request #19 from KeygraphHQ/additional-flags
chore: added flag additions for minimizing logs
2025-12-09 10:33:36 -08:00
Khaushik-keygraph
38e49eb1eb chore: added flag additions for minimizing logs 2025-12-09 23:59:12 +05:30
Arjun Malleswaran
c664000458 Merge pull request #18 from KeygraphHQ/16-windows-defender-flags-benchmark-deliverables-as-backdoorphpperhetshell-during-local-use
docs: add Windows Defender false positive guidance
2025-12-08 10:20:51 -08:00
ajmallesh
af41570ae9 docs: add Windows Defender false positive guidance
Closes #16
2025-12-02 19:07:37 -08:00
ajmallesh
2c410d90b3 docs: update Discord invite links 2025-12-01 09:24:19 -08:00
ajmallesh
534b18e303 chore: change license to AGPL-3.0 2025-11-26 18:45:36 -08:00
ajmallesh
8f2825b32f docs: clarify Shannon is a white-box pentesting tool
- Add prominent callout that Shannon Lite is designed for white-box
  (source-available) application security testing
- Update XBOW benchmark description to "hint-free, source-aware"
- Clarify benchmark comparison context (white-box vs black-box results)
- Update benchmark performance comparison image

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-24 12:37:55 -08:00
Khaushik-keygraph
369e3a34cf chore: added licensing to dockerfile 2025-11-22 20:46:15 +05:30
keygraphVarun
7f7285702e fix link 2025-11-22 20:43:09 +05:30
keygraphVarun
deb4e51f98 cleanup 2025-11-22 20:43:09 +05:30
keygraphVarun
2b14282ff6 consistency on score 2025-11-22 20:43:09 +05:30
ajmallesh
5bbd757b45 fix: resolve Docker build failure and clarify env var configuration
- Remove .env file with incorrect CLAUDE_CODE_MAX_TOKENS variable
- Remove .env copy from Dockerfile that was causing build to fail
- Update README to distinguish local (export) vs Docker (-e) env var usage
- Add CLAUDE_CODE_MAX_OUTPUT_TOKENS to all Docker run examples

The correct variable is CLAUDE_CODE_MAX_OUTPUT_TOKENS (not CLAUDE_CODE_MAX_TOKENS)
and should be passed at runtime via -e flag for Docker or export for local runs.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-19 10:28:44 -08:00
Khaushik-keygraph
d2519322d2 fix: removed comments 2025-11-13 20:33:58 +05:30
keygraphVarun
456d852b87 style changes 2025-11-13 20:28:15 +05:30
keygraphVarun
341448c8a3 Link to benchmark 2025-11-13 20:27:26 +05:30
ajmallesh
b32e71a9b4 chore: add licensing comments to prompts 2025-11-13 17:53:41 +05:30
ajmallesh
30f324be5e Update license references from BSL to MPL in documentation
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-13 17:48:05 +05:30
Arjun Malleswaran
378585a4a3 Merge pull request #14 from KeygraphHQ/license-change
License change
2025-11-13 16:57:18 +05:30
Arjun Malleswaran
c040efc6b5 Update LICENSE 2025-11-13 16:56:19 +05:30
ajmallesh
1051d40527 chore: add MPL license comments 2025-11-13 16:55:13 +05:30
Arjun Malleswaran
fbf24c5d10 Update README.md 2025-11-04 08:47:18 -08:00