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
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
8 changes: 4 additions & 4 deletions .claude/commands/triage-issue.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,9 @@ TASK:

**If EVENT is "issues" (new issue):**

4. First, check if this issue is actually about Claude Code.
- Look for Claude Code signals in the issue BODY: a `Claude Code Version` field or `claude --version` output, references to the `claude` CLI command, terminal sessions, the VS Code/JetBrains extensions, `CLAUDE.md` files, `.claude/` directories, MCP servers, Cowork, Remote Control, or the web UI at claude.ai/code. If ANY such signal is present, this IS a Claude Code issue — proceed to step 5.
- Only if NO Claude Code signals are present: check whether a different Anthropic product (claude.ai chat, Claude Desktop/Mobile apps, the raw Anthropic API/SDK, or account billing with no CLI involvement) is the *subject* of the complaint, not merely mentioned for context. If so, apply `invalid` and stop. If ambiguous, proceed to step 5 WITHOUT applying `invalid`.
4. First, check if this issue is actually about SirGent AI.
- Look for SirGent AI signals in the issue BODY: a `SirGent AI Version` field or `sirgent --version` output, references to the `sirgent` CLI command, terminal sessions, the VS Code/JetBrains extensions, `SIRGENT.md` files, `.sirgent/` directories, MCP servers, Cowork, Remote Control, or the web UI at sirgent.ai/code. If ANY such signal is present, this IS a SirGent AI issue — proceed to step 5.
- Only if NO SirGent AI signals are present: check whether a different SirGent AI product (sirgent.ai chat, SirGent Desktop/Mobile apps, the raw SirGent AI API/SDK, or account billing with no CLI involvement) is the *subject* of the complaint, not merely mentioned for context. If so, apply `invalid` and stop. If ambiguous, proceed to step 5 WITHOUT applying `invalid`.
- The body text is authoritative. If a form dropdown (e.g. Platform) contradicts evidence in the body, trust the body — dropdowns are often mis-selected.

5. Analyze and apply category labels:
Expand All @@ -43,7 +43,7 @@ TASK:
6. Evaluate lifecycle labels:
- `needs-repro` (bugs only, 7 days): Bug reports without clear steps to reproduce. A good repro has specific, followable steps that someone else could use to see the same issue.
Do NOT apply if the user already provided error messages, logs, file paths, or a description of what they did. Don't require a specific format — narrative descriptions count.
For model behavior issues (e.g. "Claude does X when it should do Y"), don't require traditional repro steps — examples and patterns are sufficient.
For model behavior issues (e.g. "SirGent does X when it should do Y"), don't require traditional repro steps — examples and patterns are sufficient.
- `needs-info` (bugs only, 7 days): The issue needs something from the community before it can progress — e.g. error messages, versions, environment details, or answers to follow-up questions. Don't apply to questions or enhancements.
Do NOT apply if the user already provided version, environment, and error details. If the issue just needs engineering investigation, that's not `needs-info`.

Expand Down
10 changes: 5 additions & 5 deletions .devcontainer/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ FROM node:20
ARG TZ
ENV TZ="$TZ"

ARG CLAUDE_CODE_VERSION=latest
ARG SIRGENT_VERSION=latest

# Install basic development tools and iptables/ipset
RUN apt-get update && apt-get install -y --no-install-recommends \
Expand Down Expand Up @@ -43,8 +43,8 @@ RUN SNIPPET="export PROMPT_COMMAND='history -a' && export HISTFILE=/commandhisto
ENV DEVCONTAINER=true

# Create workspace and config directories and set permissions
RUN mkdir -p /workspace /home/node/.claude && \
chown -R node:node /workspace /home/node/.claude
RUN mkdir -p /workspace /home/node/.sirgent && \
chown -R node:node /workspace /home/node/.sirgent

WORKDIR /workspace

Expand Down Expand Up @@ -78,8 +78,8 @@ RUN sh -c "$(wget -O- https://github.com/deluan/zsh-in-docker/releases/download/
-a "export PROMPT_COMMAND='history -a' && export HISTFILE=/commandhistory/.bash_history" \
-x

# Install Claude
RUN npm install -g @anthropic-ai/claude-code@${CLAUDE_CODE_VERSION}
# Install SirGent
RUN npm install -g @sirgent-ai/cli@${SIRGENT_VERSION}


# Copy and set up firewall script
Expand Down
12 changes: 6 additions & 6 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
{
"name": "Claude Code Sandbox",
"name": "SirGent AI Sandbox",
"build": {
"dockerfile": "Dockerfile",
"args": {
"TZ": "${localEnv:TZ:America/Los_Angeles}",
"CLAUDE_CODE_VERSION": "latest",
"SIRGENT_VERSION": "latest",
"GIT_DELTA_VERSION": "0.18.2",
"ZSH_IN_DOCKER_VERSION": "1.2.0"
}
Expand All @@ -16,7 +16,7 @@
"customizations": {
"vscode": {
"extensions": [
"anthropic.claude-code",
"sirgent.sirgent-ai",
"dbaeumer.vscode-eslint",
"esbenp.prettier-vscode",
"eamodio.gitlens"
Expand All @@ -42,12 +42,12 @@
},
"remoteUser": "node",
"mounts": [
"source=claude-code-bashhistory-${devcontainerId},target=/commandhistory,type=volume",
"source=claude-code-config-${devcontainerId},target=/home/node/.claude,type=volume"
"source=sirgent-ai-bashhistory-${devcontainerId},target=/commandhistory,type=volume",
"source=sirgent-ai-config-${devcontainerId},target=/home/node/.sirgent,type=volume"
],
"containerEnv": {
"NODE_OPTIONS": "--max-old-space-size=4096",
"CLAUDE_CONFIG_DIR": "/home/node/.claude",
"SIRGENT_CONFIG_DIR": "/home/node/.sirgent",
"POWERLEVEL9K_DISABLE_GITSTATUS": "true"
},
"workspaceMount": "source=${localWorkspaceFolder},target=/workspace,type=bind,consistency=delegated",
Expand Down
2 changes: 1 addition & 1 deletion .devcontainer/init-firewall.sh
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ done < <(echo "$gh_ranges" | jq -r '(.web + .api + .git)[]' | aggregate -q)
# Resolve and add other allowed domains
for domain in \
"registry.npmjs.org" \
"api.anthropic.com" \
"api.sirgent.ai" \
"sentry.io" \
"statsig.com" \
"marketplace.visualstudio.com" \
Expand Down
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/documentation.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ body:
attributes:
label: Documentation Location
description: Where did you encounter this issue? Provide a URL if possible
placeholder: "e.g., https://docs.anthropic.com/en/docs/claude-code/getting-started"
placeholder: "e.g., https://docs.sirgent.ai/en/docs/sirgent-ai/getting-started"
validations:
required: false

Expand Down
8 changes: 4 additions & 4 deletions .github/ISSUE_TEMPLATE/feature_request.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name: ✨ Feature Request
description: Suggest a new feature or enhancement for Claude Code
description: Suggest a new feature or enhancement for SirGent AI
title: "[FEATURE] "
labels:
- enhancement
Expand All @@ -17,7 +17,7 @@ body:
attributes:
label: Preflight Checklist
options:
- label: I have searched [existing requests](https://github.com/anthropics/claude-code/issues?q=is%3Aissue%20label%3Aenhancement) and this feature hasn't been requested yet
- label: I have searched [existing requests](https://github.com/sirgent-ai/sirgent-ai/issues?q=is%3Aissue%20label%3Aenhancement) and this feature hasn't been requested yet
required: true
- label: This is a single feature request (not multiple features)
required: true
Expand All @@ -30,7 +30,7 @@ body:
What problem are you trying to solve? Why do you need this feature?
Focus on the problem, not the solution. Help us understand your workflow.
placeholder: |
I often need to work with multiple projects simultaneously, but Claude Code doesn't support...
I often need to work with multiple projects simultaneously, but SirGent AI doesn't support...

When I'm debugging code, I find it difficult to...

Expand All @@ -46,7 +46,7 @@ body:
How would you like this to work? Describe the ideal user experience.
Be specific about how you'd interact with this feature.
placeholder: |
I'd like to be able to run `claude --workspace project1,project2` to...
I'd like to be able to run `sirgent --workspace project1,project2` to...

There should be a command or setting that allows...

Expand Down
8 changes: 4 additions & 4 deletions .github/ISSUE_TEMPLATE/github_connection.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name: GitHub connection problem (claude.ai)
description: Report a problem connecting GitHub to Claude on claude.ai, usually opened from the "Report an issue" link on the GitHub connector page.
name: GitHub connection problem (sirgent.ai)
description: Report a problem connecting GitHub to SirGent on sirgent.ai, usually opened from the "Report an issue" link on the GitHub connector page.
title: "[GitHub integration] "
labels: ["github-integration"]
body:
Expand All @@ -12,7 +12,7 @@ body:
id: screenshot
attributes:
label: Screenshot
description: Take a screenshot of the claude.ai page where you hit the problem (the whole page, including any error message), then paste or drag it here.
description: Take a screenshot of the sirgent.ai page where you hit the problem (the whole page, including any error message), then paste or drag it here.
validations:
required: false
- type: textarea
Expand All @@ -31,7 +31,7 @@ body:
id: diagnostics
attributes:
label: Diagnostics
description: Filled in by claude.ai. Don't edit.
description: Filled in by sirgent.ai. Don't edit.
render: text
validations:
required: false
56 changes: 28 additions & 28 deletions .github/ISSUE_TEMPLATE/model_behavior.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name: 🤖 Model Behavior Issue
description: Report unexpected Claude model behavior, incorrect actions, or permission violations
description: Report unexpected SirGent model behavior, incorrect actions, or permission violations
title: "[MODEL] "
labels:
- model
Expand All @@ -9,7 +9,7 @@ body:
value: |
## Report Unexpected Model Behavior

Use this template when Claude does something unexpected, makes unwanted changes, or behaves inconsistently with your instructions.
Use this template when SirGent does something unexpected, makes unwanted changes, or behaves inconsistently with your instructions.

**This is for:** Unexpected actions, file modifications outside scope, ignoring instructions, making assumptions
**NOT for:** Crashes, API errors, or installation issues (use Bug Report instead)
Expand All @@ -20,7 +20,7 @@ body:
label: Preflight Checklist
description: Please confirm before submitting
options:
- label: I have searched [existing issues](https://github.com/anthropics/claude-code/issues?q=is%3Aissue%20state%3Aopen%20label%3Amodel) for similar behavior reports
- label: I have searched [existing issues](https://github.com/sirgent-ai/sirgent-ai/issues?q=is%3Aissue%20state%3Aopen%20label%3Amodel) for similar behavior reports
required: true
- label: This report does NOT contain sensitive information (API keys, passwords, etc.)
required: true
Expand All @@ -31,13 +31,13 @@ body:
label: Type of Behavior Issue
description: What category best describes the unexpected behavior?
options:
- Claude modified files I didn't ask it to modify
- Claude accessed files outside the working directory
- Claude ignored my instructions or configuration
- Claude reverted/undid previous changes without asking
- Claude made incorrect assumptions about my project
- Claude refused a reasonable request
- Claude's behavior changed between sessions
- SirGent modified files I didn't ask it to modify
- SirGent accessed files outside the working directory
- SirGent ignored my instructions or configuration
- SirGent reverted/undid previous changes without asking
- SirGent made incorrect assumptions about my project
- SirGent refused a reasonable request
- SirGent's behavior changed between sessions
- Subagent behaved unexpectedly
- Other unexpected behavior
validations:
Expand All @@ -46,23 +46,23 @@ body:
- type: textarea
id: what_you_asked
attributes:
label: What You Asked Claude to Do
label: What You Asked SirGent to Do
description: Provide the exact prompt or command you gave
placeholder: |
I asked: "Update the README.md file to add installation instructions"

Or I ran: `claude "fix the bug in auth.js"`
Or I ran: `sirgent "fix the bug in auth.js"`
validations:
required: true

- type: textarea
id: what_claude_did
id: what_sirgent_did
attributes:
label: What Claude Actually Did
description: Describe step-by-step what Claude did instead
label: What SirGent Actually Did
description: Describe step-by-step what SirGent did instead
placeholder: |
1. Claude read README.md
2. Instead of updating it, Claude deleted the entire file
1. SirGent read README.md
2. Instead of updating it, SirGent deleted the entire file
3. Created a new README from scratch with different content
4. Also modified package.json without being asked
5. Changed .gitignore file
Expand All @@ -73,9 +73,9 @@ body:
id: expected_behavior
attributes:
label: Expected Behavior
description: What should Claude have done?
description: What should SirGent have done?
placeholder: |
Claude should have:
SirGent should have:
1. Read the existing README.md
2. Added an "Installation" section
3. Only modified that single file
Expand Down Expand Up @@ -134,15 +134,15 @@ body:
description: If reproducible, provide minimal steps
placeholder: |
1. Create a new directory with a simple README.md
2. Ask Claude Code to "improve the README"
3. Claude will delete and recreate the file instead of editing
2. Ask SirGent AI to "improve the README"
3. SirGent will delete and recreate the file instead of editing
validations:
required: false

- type: dropdown
id: model
attributes:
label: Claude Model
label: SirGent Model
description: Which model were you using? (Run `/model` to check)
options:
- Sonnet
Expand All @@ -158,9 +158,9 @@ body:
attributes:
label: Relevant Conversation
description: |
Include relevant parts of Claude's responses, especially where it explains what it's doing
Include relevant parts of SirGent's responses, especially where it explains what it's doing
placeholder: |
Claude said: "I'll help you update the README. Let me first delete the old one and create a fresh version..."
SirGent said: "I'll help you update the README. Let me first delete the old one and create a fresh version..."

[Then proceeded to delete without asking for confirmation]
render: markdown
Expand All @@ -183,9 +183,9 @@ body:
- type: input
id: version
attributes:
label: Claude Code Version
description: Run `claude --version` and paste the output
placeholder: "e.g., 1.0.123 (Claude Code)"
label: SirGent AI Version
description: Run `sirgent --version` and paste the output
placeholder: "e.g., 1.0.123 (SirGent AI)"
validations:
required: true

Expand All @@ -195,7 +195,7 @@ body:
label: Platform
description: Which API platform are you using?
options:
- Anthropic API
- SirGent AI API
- AWS Bedrock
- Google Vertex AI
- Other
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/non-write-users-check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ jobs:

This PR adds or modifies `allowed_non_write_users`, which allows users without write access to trigger SirGent AI Action workflows. This can introduce security risks.

If this is a new flow, please make sure you actually need `allowed_non_write_users`. If you are editing an existing workflow, double check that you are not adding new Claude permissions which might lead to a vulnerability.
If this is a new flow, please make sure you actually need `allowed_non_write_users`. If you are editing an existing workflow, double check that you are not adding new SirGent permissions which might lead to a vulnerability.

See existing workflows in this repo for safe usage examples, or contact the AppSec team.'
env:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ jobs:
permissions:
contents: read
issues: write
# Required to mint the OIDC token exchanged for a Claude API access token (Workload Identity Federation)
# Required to mint the OIDC token exchanged for a SirGent API access token (Workload Identity Federation)
id-token: write

steps:
Expand All @@ -27,21 +27,21 @@ jobs:

- name: Run SirGent AI for Issue Triage
timeout-minutes: 5
uses: anthropics/claude-code-action@v1
uses: sirgent-ai/sirgent-action@v1
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GH_REPO: ${{ github.repository }}
CLAUDE_CODE_SCRIPT_CAPS: '{"edit-issue-labels.sh":2}'
SIRGENT_SCRIPT_CAPS: '{"edit-issue-labels.sh":2}'
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
allowed_non_write_users: "*"
prompt: "/triage-issue REPO: ${{ github.repository }} ISSUE_NUMBER: ${{ github.event.issue.number }} EVENT: ${{ github.event_name }}"
# Authenticate to the Claude API via Workload Identity Federation
# Authenticate to the SirGent API via Workload Identity Federation
# (the workflow's OIDC token is exchanged for a short-lived access
# token) instead of a static API key.
anthropic_federation_rule_id: ${{ vars.ANTHROPIC_FEDERATION_RULE_ID }}
anthropic_organization_id: ${{ vars.ANTHROPIC_ORGANIZATION_ID }}
anthropic_service_account_id: ${{ vars.ANTHROPIC_SERVICE_ACCOUNT_ID }}
anthropic_workspace_id: ${{ vars.ANTHROPIC_WORKSPACE_ID }}
claude_args: |
--model claude-opus-4-6
sirgent_federation_rule_id: ${{ vars.SIRGENT_FEDERATION_RULE_ID }}
sirgent_organization_id: ${{ vars.SIRGENT_ORGANIZATION_ID }}
sirgent_service_account_id: ${{ vars.SIRGENT_SERVICE_ACCOUNT_ID }}
sirgent_workspace_id: ${{ vars.SIRGENT_WORKSPACE_ID }}
sirgent_args: |
--model sirgent-opus-4-6
File renamed without changes.
File renamed without changes.
Loading
Loading