Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
fe7001b
agent updates to reign in Codex
sei-dupdyke Jul 23, 2026
fcd7879
make claude dual-context
sei-dupdyke Jul 24, 2026
cda9306
wires up executions to create user pools automatically and set defaul…
sei-dupdyke Jul 24, 2026
3c1d7ed
Adds ScenarioWorkflowBinding and bumps to 9.2
sei-dupdyke Jul 24, 2026
b96c439
Deletes package-lock in frontend
sei-dupdyke Jul 24, 2026
bad1239
Restores frontend package-lock.json for npm ci
sei-dupdyke Jul 24, 2026
c85023a
Continued RPG work
sei-dupdyke Jul 27, 2026
40d7663
Merge pull request #685 from cmu-sei/rpg-kriegspiel-mode
sei-dupdyke Jul 27, 2026
9416fbf
wires up pi coding agent
sei-dupdyke Jul 29, 2026
ce52423
Merge branch 'master' of https://github.com/cmu-sei/GHOSTS into devel…
sei-dupdyke Aug 4, 2026
0e359e1
Merge branch 'master' of https://github.com/cmu-sei/GHOSTS into devel…
sei-dupdyke Aug 4, 2026
d877281
Merge branch 'master' of https://github.com/cmu-sei/GHOSTS into devel…
sei-dupdyke Aug 4, 2026
79918f0
9.3 removes front end pages from api (making it a pure api)
sei-dupdyke Aug 4, 2026
0032d45
9.3 removes front end pages from api (making it a pure api)
sei-dupdyke Aug 4, 2026
e2e2e1a
9.3 removes front end pages from api (making it a pure api)
sei-dupdyke Aug 4, 2026
a9f42f7
changes aspire api endpoint to swagger page
sei-dupdyke Aug 5, 2026
2246a2e
fixes default pandora theme
sei-dupdyke Aug 5, 2026
97d4017
removes stale references from api project file
sei-dupdyke Aug 5, 2026
f6e1d67
auto publish provisioned n8n workflows
sei-dupdyke Aug 5, 2026
6b10555
fixes connected with missing value
sei-dupdyke Aug 5, 2026
7e7489f
improves agent layout on dynamic activities screen
sei-dupdyke Aug 7, 2026
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
  •  
  •  
  •  
13 changes: 11 additions & 2 deletions .devcontainer/features/claude/install.sh
Original file line number Diff line number Diff line change
@@ -1,5 +1,14 @@
#!/bin/bash
set -euo pipefail

# Install Claude Code CLI
su - "${_REMOTE_USER}" -c "curl -fsSL https://claude.ai/install.sh | bash"
# Install (or upgrade) the Claude Code CLI via the official installer script.
# Runs in two contexts: as root during the feature build (with _REMOTE_USER
# set) and as the remote user if reused later. Drop to the remote user only
# when invoked as root; otherwise run directly.
INSTALL_CMD='curl -fsSL https://claude.ai/install.sh | bash'

if [ "$(id -u)" = "0" ] && [ -n "${_REMOTE_USER:-}" ]; then
su - "${_REMOTE_USER}" -c "$INSTALL_CMD"
else
eval "$INSTALL_CMD"
fi
21 changes: 21 additions & 0 deletions .devcontainer/postcreate.sh
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,27 @@ if [ -f "$DEVENV" ]; then
"${PI_PATHS[@]}" > "$HOME/.pi/agent/models.json"
fi

# --- Pi Coding Agent settings (default provider/model) ---
# Without this, pi falls back to its built-in "google" provider and a
# bare model id, which then fails against the ambient CLAUDE_CODE_USE_BEDROCK
# env because Bedrock requires a region-prefixed inference profile id.
# The aws profile pins amazon-bedrock + a us.-prefixed model. Later
# configured profiles override earlier ones (shallow merge).
PI_SETTINGS_FILES=()
for profile in "${CONFIGURED[@]}"; do
if [ -f "$PROFILES_DIR/$profile/pi.settings.json" ]; then
PI_SETTINGS_FILES+=("$profile")
fi
done

if [ ${#PI_SETTINGS_FILES[@]} -ge 1 ]; then
mkdir -p "$HOME/.pi/agent"
PI_SETTINGS_PATHS=()
for p in "${PI_SETTINGS_FILES[@]}"; do PI_SETTINGS_PATHS+=("$PROFILES_DIR/$p/pi.settings.json"); done
jq -s 'reduce .[] as $s ({}; . * $s)' \
"${PI_SETTINGS_PATHS[@]}" > "$HOME/.pi/agent/settings.json"
fi

# --- Codex CLI config ---
# Codex reads ~/.codex/config.toml. Only the aws profile ships one: it
# targets OpenAI GPT-5.5 via Codex's built-in amazon-bedrock provider
Expand Down
4 changes: 4 additions & 0 deletions .devcontainer/profiles/aws/pi.settings.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 7 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,13 @@ Core components:
- SignalR is used for real-time client/server communication.
- Do not assume authentication is built in; deployment may rely on an auth proxy.

## Development
- Simplicity, concision, and readability matter much more than flexibility, abstractions, hypothetical reuse, etc.
- Avoid over-engineering or adding unnecessary features.
- Define clear success criteria.
- If something is unclear or confusing, stop and ask questions. Never assume.
- Edit only what you must. Don't needlessly alter adjacent code.

## Verification

Before finishing:
Expand Down
47 changes: 45 additions & 2 deletions configuration/n8n-bootstrap/scripts/provision-n8n.sh

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

15 changes: 15 additions & 0 deletions docs/new.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,20 @@
# What's New in GHOSTS 9

## Version 9.1

### Automatic NPC pools and default workflows on execution

Creating an execution now brings a scenario to life automatically:

- **NPC pools** — each `UserPool` (role + count) defined on the scenario generates that many execution-scoped NPCs when the execution is created. They are grouped by `Campaign` = scenario name, `Enclave` = run name, and `Team` = pool role. Pool NPCs exist as a population regardless of whether they are assigned to a machine (they may live in "greyspace").
- **Default n8n workflows** — scenarios are seeded with a default set of animation workflow bindings (Belief, Social Graph, Post to Social Media). When an execution starts, these are scheduled on their cron and fired via n8n. Bindings are editable per scenario, referenced by stable webhook path, and the referenced workflows are activated in n8n automatically if inactive.

### Database is recreated on upgrade

> **Breaking:** GHOSTS uses `EnsureCreated()` and does not run EF migrations. The 9.1 schema adds a `scenarioworkflowbindings` table, so **an existing 9.0 database must be dropped and recreated** — it will not be altered in place. There is no automatic migration path.

To upgrade, delete the `ghosts` database (or its Postgres volume) and restart the API; it recreates the schema and re-seeds on startup. Back up any data you need first.

## Version 9.0

### Angular 20 Frontend
Expand Down
142 changes: 142 additions & 0 deletions experimental/rpg/fixtures/scenarios/meridian-hybrid.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading
Loading