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

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
49 changes: 49 additions & 0 deletions .compound-engineering/config.local.example.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
# Compound Engineering -- local config
# Copy to .compound-engineering/config.local.yaml in your project root.
# All settings are optional. Invalid values fall through to defaults.

# --- Work delegation (Codex) ---

# work_delegate: codex # codex | false (default: false)
# work_delegate_consent: true # true | false (default: false)
# work_delegate_sandbox: yolo # yolo | full-auto (default: yolo)
# work_delegate_decision: auto # auto | ask (default: auto)
# work_delegate_model: gpt-5.4 # any valid codex model (omit to use ~/.codex/config.toml default)
# work_delegate_effort: high # minimal | low | medium | high | xhigh (omit to use ~/.codex/config.toml default)

# --- Product pulse ---
# Settings written by /ce-product-pulse first-run interview. Re-run the skill with
# argument `setup` or `reconfigure` to edit interactively.

# pulse_product_name: "Spiral" # used in report titles (no default)
# pulse_lookback_default: 24h # 1h | 24h | 7d | 30d (default: 24h)
# pulse_primary_event: "session_started" # the event that means "user showed up"
# pulse_value_event: "task_completed" # the event that means "user got value"
# pulse_completion_events: "onboarded,first_purchase" # comma-separated, 0-3 events
# pulse_quality_scoring: false # true | false (default: false; AI products only)
# pulse_quality_dimension: "answer accuracy" # dimension scored 1-5 when pulse_quality_scoring is true
# pulse_analytics_source: posthog # posthog | mixpanel | custom (no default)
# pulse_tracing_source: sentry # sentry | datadog | custom (no default)
# pulse_payments_source: stripe # stripe | custom (no default)
# pulse_db_enabled: false # true | false (default: false; read-only DB if true)
# pulse_metric_sources: "retention_d7=posthog,nps=delighted" # strategy-metric -> source overrides; comma-separated 'metric=source' pairs; unlisted metrics fall back to pulse_analytics_source
# pulse_pending_metrics: "retention_d7,nps" # comma-separated strategy metrics awaiting instrumentation; render as 'no data'
# pulse_excluded_metrics: "north_star" # comma-separated strategy metrics intentionally not in pulse

# --- Output format ---
# Per-skill output format default. Selects the exclusive format the artifact
# is written in: `md` produces a markdown file, `html` produces a single
# self-contained HTML file. The two are mutually exclusive -- there is no
# sibling artifact. See DESIGN.md or your agent instructions to influence
# HTML styling. CLI arguments override these defaults; pipeline contexts
# (e.g., LFG, disable-model-invocation) always force `md` regardless.

# plan_output: html # md | html (default: md)
# brainstorm_output: html # md | html (default: md)
# ideate_output: md # md | html (default: html -- ideation docs are human-facing, so HTML is the default; set md to opt out)

# --- ce-promote ---
# Written automatically when you decline the Spiral setup offer in /ce-promote.
# Suppresses that one-time setup nudge in this project. Remove the key to re-enable.

# ce_promote_spiral_optout: true # true | (absent) (default: absent -- offer once)
62 changes: 0 additions & 62 deletions .github/workflows/cla.yml

This file was deleted.

3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -23,3 +23,6 @@ npm-debug.log*
# vercel
.vercel
node_modules

# Compound Engineering machine-local config
.compound-engineering/*.local.yaml
3 changes: 2 additions & 1 deletion app/api/bid-review/route.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
// Copyright (C) 2026 Steel-Tech / StructuPath
import Anthropic from "@anthropic-ai/sdk";
import { MODELS } from "@/lib/ai/models";
import { buildBidReviewPrompt } from "@/lib/ai/bid-review-prompt";

// ── API key (read at module load, checked per-request) ──────
Expand Down Expand Up @@ -122,7 +123,7 @@ ${cleaned}
Produce the full structured analysis in the format specified in your system prompt.`;

const stream = await client.messages.stream({
model: "claude-sonnet-4-20250514",
model: MODELS.ANALYSIS,
max_tokens: 4096,
system: systemPrompt,
messages: [{ role: "user", content: userMessage }],
Expand Down
3 changes: 2 additions & 1 deletion app/api/chat/route.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
// Copyright (C) 2026 Steel-Tech / StructuPath
import Anthropic from "@anthropic-ai/sdk";
import { MODELS } from "@/lib/ai/models";
import { buildSystemPrompt } from "@/lib/ai/system-prompts";
import { getPhaseContent } from "@/content/phases";
import type { StateCode } from "@/content/phases";
Expand Down Expand Up @@ -199,7 +200,7 @@ export async function POST(req: Request) {
const systemPrompt = buildSystemPrompt(step, profile, phaseContent.title);

const stream = await client.messages.stream({
model: "claude-sonnet-4-20250514",
model: MODELS.MENTOR,
max_tokens: 1024,
system: systemPrompt,
messages: messages.map((m) => ({
Expand Down
3 changes: 2 additions & 1 deletion app/api/onboarding/route.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
// Copyright (C) 2026 Steel-Tech / StructuPath
import Anthropic from "@anthropic-ai/sdk";
import { MODELS } from "@/lib/ai/models";
import { buildOnboardingPrompt } from "@/lib/ai/onboarding-prompt";

// ── API key (read at module load, checked per-request) ──────
Expand Down Expand Up @@ -128,7 +129,7 @@ export async function POST(req: Request) {
const systemPrompt = buildOnboardingPrompt();

const stream = await client.messages.stream({
model: "claude-sonnet-4-20250514",
model: MODELS.MENTOR,
max_tokens: 512,
system: systemPrompt,
messages: messages.map((m) => ({
Expand Down
Loading
Loading