214 Commits

Author SHA1 Message Date
Ezhil
6a0c8ce710 chore: update issue templates (#265) 2026-04-01 02:33:12 +05:30
ezl-keygraph
bc8fd203ed feat: add npx CLI with monorepo, CI/CD, and ephemeral worker architecture (#256)
* feat: integrate npx CLI, CI/CD, and ephemeral worker architecture

Bring in changes from shannon-npx: npx-distributable CLI package (cli/),
semantic-release CI/CD workflows, ephemeral per-scan worker containers,
TOML config support, setup wizard, and workspace management.

Preserves all shannon-only changes: security hardening (localhost-bound
ports, MCP env allowlist, path traversal guard), updated benchmarks
(XBEN 19/31/35/44), README assets, and prompt injection disclaimer.

Applies security hardening to cli/infra/compose.yml as well.

* refactor: migrate to Turborepo + pnpm + Biome monorepo

Restructure into apps/worker, apps/cli, packages/mcp-server with
Turborepo task orchestration, pnpm workspaces, Biome linting/formatting,
and tsdown CLI bundling.

Key changes:
- src/ -> apps/worker/src/, cli/ -> apps/cli/, mcp-server/ -> packages/mcp-server/
- prompts/ and configs/ moved into apps/worker/
- npm replaced with pnpm, package-lock.json replaced with pnpm-lock.yaml
- Dockerfile updated for pnpm-based builds
- CLI logs command rewritten with chokidar for cross-platform reliability
- Router health checking added for auto-detected router mode
- Centralized path resolution via apps/worker/src/paths.ts

* fix: resolve all biome warnings and formatting issues

- Remove unnecessary non-null assertions where values are guaranteed
- Replace array index access with .at() for safer element retrieval
- Use local variables to avoid repeated process.env lookups
- Replace any types with unknown in functional utilities
- Use nullish coalescing for TOTP hash byte access
- Auto-format security patches to match biome config

* fix: pin pnpm to 10.12.1 in Dockerfile for catalog support

* fix: handle Esc cancellation in Bedrock setup flow

Replace p.group() with individual prompts and per-field cancel checks,
matching the pattern used by all other provider setup flows.

* feat: add optional model customization to Anthropic setup

* fix: resolve Docker bind mount permission errors on Linux

Use entrypoint-based UID remapping instead of --user flag so the
container's pentest user matches the host UID/GID, keeping bind-mounted
volumes writable. Git config moved to --system level to survive remapping.

* fix: show resumed workflow ID in splash screen URL

When resuming a workflow, the Temporal Web UI link pointed to the old
(terminated) workflow ID. Now extracts "New Workflow ID" from the resume
header in workflow.log, falling back to the original ID for fresh scans.

* style: fix biome formatting in docker.ts

* fix: align TypeScript config types with JSON Schema

- SuccessCondition.type: use schema values (url_contains,
  element_present, url_equals_exactly, text_contains) instead of
  stale values (url, cookie, element, redirect)
- Authentication.login_flow: mark optional to match schema which
  does not require it

* feat: mark GitHub release as latest during rollback

* fix: use native ARM64 runners for Docker multi-platform builds

Replace QEMU emulation with parallel native builds using a matrix
strategy (ubuntu-latest for amd64, ubuntu-24.04-arm for arm64).
Each platform pushes by digest, then a merge job creates the
multi-arch manifest list before signing with cosign.

* fix: resolve SessionMutex race condition with 3+ concurrent waiters

* fix: skip POSIX permission check on Windows

writeFileSync mode option is ignored on Windows, so config.toml
gets 0o666 and the guard rejects it.

* fix: resolve unsubstituted placeholders in report prompt

Remove unused {{GITHUB_URL}} placeholder and wire up {{AUTH_CONTEXT}}
with structured auth context (login type, username, URL, MFA status).

* fix: remove duplicate environment gate from merge-docker job

Move DOCKERHUB_USERNAME from vars to secrets so merge-docker can access
credentials without its own environment scope. This eliminates the
redundant double approval since build-docker already gates on
release-publish.

* fix: replace POSIX sleep binary with cross-platform async sleep

execFileSync('sleep') is unavailable on Windows. Use node:timers/promises
setTimeout instead, making ensureInfra async.

* fix: use session.json for workflow ID on resume instead of parsing workflow.log

On resume, workflow.log already exists with stale headers from the
previous run. The CLI poll found '====' immediately and extracted the
old workflow ID, producing a wrong Temporal Web UI URL.

Read the workflow ID from session.json instead — the worker writes
resume attempts there atomically. For fresh runs, poll until
originalWorkflowId appears. For resumes, poll until a new
resumeAttempts entry is appended.

* feat: add custom base URL support for Anthropic-compatible proxies

Support ANTHROPIC_BASE_URL + ANTHROPIC_AUTH_TOKEN to route SDK requests
through LiteLLM or any Anthropic-compatible proxy. Adds TUI wizard
option, TOML config mapping, credential validation, and preflight
endpoint reachability check via SDK query.

* fix: remove environment gates and add NPM_TOKEN to publish step

* feat: add beta release and rollback workflows with cosign signing

* fix: remove redundant checkout and pnpm steps from beta release workflow

* docs: normalize README commands to mode-neutral shorthand

Add a substitution note after Quick Start sections so all subsequent
examples use bare `shannon` instead of mixing `./shannon` and
`npx @keygraph/shannon`. Mode-specific commands (build, update,
uninstall) get inline annotations. Also fixes a broken command in the
Custom Base URL section.

* fix: remove redundant `update` command

Image is already auto-pulled by `ensureImage()` during `start` when the
pinned version tag is missing locally. Manual `update` was unnecessary.

* docs: add CLI package README stub

* docs: update README setup instructions for dual CLI modes

* docs: update announcement banner to npx availability

* feat: migrate from MCP tools to CLI based tools (#252)

* feat: migrate from MCP tools to CLI tools

* fix: restore browser action emoji formatters for CLI output

Adapt formatBrowserAction for playwright-cli commands, replacing the old
mcp__playwright__browser_* tool name matching removed during migration.

* fix: mount credential file to fixed container path for Vertex AI

GOOGLE_APPLICATION_CREDENTIALS was forwarded as-is to the container,
causing the relative host path to resolve against the repo mount
instead of the credentials mount. Now both local and npx modes mount
the resolved file to /app/credentials/google-sa-key.json and rewrite
the env var to match.

* feat: add git awareness and optional description field to config

* fix: drop redundant --ipc host flag from worker container

* fix: align announcement banner URL with main branch

* feat: add target URL reachability preflight check (#254)

* Moving asset benchmark graph image to this folder

* Move benchmark results to benchmark repo

Windows Defender flags exploit code in the pentest reports as false positives, forcing every Windows user to add a Defender exclusion just to clone Shannon.

* Updated README

* fix: case-insensitive grep for semantic-release version probe

* fix: harden supply chain security (#255)

* fix: patch smol-toml and tsdown vulnerabilities

Update smol-toml 1.6.0→1.6.1 (DoS via recursive comment parsing) and
tsdown 0.21.2→0.21.5 (picomatch ReDoS + method injection).

* fix: pin all unpinned dependency versions in Dockerfile

Pins subfinder v2.13.0, WhatWeb v0.6.3 (switched from git clone to
release tarball), schemathesis 4.13.0, addressable 2.8.9,
claude-code 2.1.84, and playwright-cli 0.1.1 for reproducible builds.

* fix: pin GitHub Actions to commit SHAs for supply chain security

* fix: pin GitHub Actions to commit SHAs in beta and rollback workflows
v1.0.0
2026-03-27 02:34:29 +05:30
ezl-keygraph
0d172f5e32 docs: update announcement banner URL to npx discussion (#250) 2026-03-19 04:44:32 +05:30
ezl-keygraph
3324c01b83 docs: update announcement banner to npx availability (#248) 2026-03-19 04:37:52 +05:30
ezl-keygraph
601fbe7756 feat: add beta release and rollback workflows with cosign signing (#247) 2026-03-18 22:15:59 +05:30
ezl-keygraph
ae4bd45a30 feat: add custom base URL support for Anthropic-compatible endpoints (#246)
Support ANTHROPIC_BASE_URL + ANTHROPIC_AUTH_TOKEN in .env to route
SDK requests through proxies or gateways. Preflight now validates the
custom endpoint is reachable instead of skipping credential checks.
2026-03-18 00:53:44 +05:30
Arjun Malleswaran
629c52ed3b Merge pull request #230 from KeygraphHQ/patching-benchmark
chore: upload correct benchmarks for XBEN 19/31/35/44
2026-03-09 19:30:51 -07:00
ajmallesh
3dd4056dc3 chore: upload correct benchmarks for XBEN 19/31/35/44 2026-03-09 19:07:21 -07:00
Arjun Malleswaran
17df89a48f Merge pull request #224 from ajmallesh/security/tighten-docker-env-isolation
Hardening local defaults
2026-03-07 11:56:35 -08:00
ajmallesh
58afb767c6 docs: simplify prompt injection disclaimer in README 2026-03-07 11:48:59 -08:00
ajmallesh
023cc953db security: tighten Docker isolation and subprocess env
- Pin @playwright/mcp to 0.0.68 instead of @latest to prevent supply chain risk
- Restrict MCP subprocess env to allowlist (PATH, HOME, NODE_PATH, DISPLAY, XDG_*) instead of spreading process.env
- Add path traversal guard to @include() directive in prompt templates
- Bind all Docker ports to 127.0.0.1 to prevent network exposure
- Remove ipc: host — shm_size: 2gb already covers Chromium shared memory needs
- Add prompt injection disclaimer for untrusted repositories to README
2026-03-06 17:20:39 -08:00
nelliekeygraph
01165382ed Merge pull request #220 from KeygraphHQ/Readme-Update
Readme update
2026-03-06 13:42:49 -08:00
george-keygraph
4c6750541b Update README.md 2026-03-06 11:38:53 -08:00
george-keygraph
2feff83b6e Add files via upload 2026-03-06 11:38:18 -08:00
george-keygraph
96b2728318 Delete assets/keygraph_button.png 2026-03-06 11:38:06 -08:00
george-keygraph
595b2ada78 Update README.md 2026-03-06 11:36:43 -08:00
george-keygraph
c68ee44103 Add files via upload 2026-03-06 11:35:16 -08:00
Arjun Malleswaran
fdd7d0af64 Merge pull request #216 from KeygraphHQ/Updated-README.md
Updated readme.md
2026-03-05 16:48:32 -08:00
george-keygraph
03377de469 Update README.md 2026-03-05 16:47:03 -08:00
george-keygraph
477ccd71aa Update README.md 2026-03-05 16:45:08 -08:00
george-keygraph
43aa6386a2 Add files via upload 2026-03-05 16:44:01 -08:00
Arjun Malleswaran
6ad2c9d5c1 Merge pull request #206 from KeygraphHQ/keygraphVarun-patch-1
update image
2026-03-04 18:40:22 -08:00
keygraphVarun
53bb10c450 Update README.md 2026-03-04 18:39:05 -08:00
keygraphVarun
ce98c749f5 update image 2026-03-04 18:38:11 -08:00
keygraphVarun
ba8f737d02 Delete assets/github-banner.png 2026-03-04 18:37:54 -08:00
keygraphVarun
a01b130281 update image 2026-03-04 18:36:34 -08:00
Arjun Malleswaran
ff7874815a Merge pull request #205 from KeygraphHQ/keygraphVarun-patch-4
Update README.md
2026-03-04 18:30:39 -08:00
keygraphVarun
c5f13235da Update SHANNON-PRO.md 2026-03-04 18:28:41 -08:00
keygraphVarun
528dced335 updated image 2026-03-04 18:20:35 -08:00
keygraphVarun
cdf0f13cc6 Add files via upload 2026-03-04 18:19:27 -08:00
keygraphVarun
e69ce6f51e Update README.md 2026-03-04 18:17:46 -08:00
Arjun Malleswaran
ab2c400daf Merge pull request #202 from KeygraphHQ/keygraphVarun-patch-1
Update README.md
2026-03-04 13:59:42 -08:00
keygraphVarun
9b0e64944b Update README.md
cleanup
2026-03-04 13:57:28 -08:00
Arjun Malleswaran
f3f4e44ccd Merge pull request #198 from KeygraphHQ/keygraphVarun-patch-1
Update SHANNON-PRO.md
2026-03-04 13:46:34 -08:00
Arjun Malleswaran
6b68bb40f8 Merge pull request #200 from KeygraphHQ/keygraphVarun-patch-2
Update README.md
2026-03-04 13:46:10 -08:00
keygraphVarun
d3de8e13fb Update SHANNON-PRO.md 2026-03-04 13:44:08 -08:00
keygraphVarun
57d1141f4a Update README.md 2026-03-04 13:38:43 -08:00
keygraphVarun
1aafc0c3d0 Update README.md
update readme
2026-03-04 13:08:18 -08:00
keygraphVarun
a8afe98518 Update SHANNON-PRO.md
fix
2026-03-04 11:35:49 -08:00
keygraphVarun
395b2bd187 Update SHANNON-PRO.md
Shannon Pro
2026-03-04 11:32:00 -08:00
ezl-keygraph
e29d5b88a0 Merge pull request #177 from KeygraphHQ/feat/model-tiers
feat: add three-tier model system with Bedrock and Vertex AI support
2026-03-03 22:40:29 +05:30
ezl-keygraph
6a76df2f4c feat: add Google Vertex AI support with service account auth 2026-03-03 02:42:46 +05:30
ezl-keygraph
3ec491b30b chore: update pipeline testing vulnerability prompts 2026-03-03 02:05:09 +05:30
ezl-keygraph
b62abfea4c feat: add three-tier model system with Bedrock support
Introduce small/medium/large model tiers so agents use the appropriate
model for their task complexity. Pre-recon uses Opus (large) for deep
source code analysis, most agents use Sonnet (medium), and report uses
Haiku (small) for summarization.

- Add src/ai/models.ts with ModelTier type and resolveModel()
- Add modelTier field to AgentDefinition
- Refactor claude-executor env var passthrough into loop
- Add Bedrock credential validation in preflight and CLI
- Pass through Bedrock and model env vars in docker-compose
2026-03-03 01:08:26 +05:30
Arjun Malleswaran
98e3446448 Merge pull request #161 from KeygraphHQ/feat/pipeline-config
feat: add configurable pipeline retry and concurrency settings
2026-02-24 10:52:52 -08:00
ajmallesh
a03bc7506c chore: improve PR command summary format with rich bullet style 2026-02-24 09:31:37 -08:00
ajmallesh
d67c07dc55 feat: add configurable pipeline retry and concurrency settings (#157)
- Add `pipeline` config section with `retry_preset` and `max_concurrent_pipelines` options
- Add `subscription` retry preset with extended 6h max interval for Anthropic rate limit windows
- Replace Promise.allSettled with concurrency-limited runner for vuln/exploit pipelines
- Wire pipeline config through client, shared types, and workflow activity proxy selection
2026-02-24 09:31:33 -08:00
Arjun Malleswaran
91f03242a5 Merge pull request #160 from KeygraphHQ/chore/update-readme-banner
chore: update README banner image
2026-02-24 09:15:17 -08:00
ajmallesh
17d12be2ab chore: update README banner image 2026-02-24 09:11:50 -08:00
ezl-keygraph
6b403d59a7 Merge pull request #152 from KeygraphHQ/fix/router-env-passthrough
fix: pass router env vars to SDK subprocess
2026-02-21 02:24:29 +05:30