Skip to content

Commit 90ad808

Browse files
committed
feat: initial commit - axe cli with axe-dig code intelligence engine
0 parents  commit 90ad808

File tree

381 files changed

+58996
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

381 files changed

+58996
-0
lines changed

.digignore

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
# DIG ignore patterns (gitignore syntax)
2+
# Auto-generated - review and customize for your project
3+
# Docs: https://git-scm.com/docs/gitignore
4+
5+
# ===================
6+
# Dependencies
7+
# ===================
8+
node_modules/
9+
.venv/
10+
venv/
11+
env/
12+
__pycache__/
13+
.tox/
14+
.nox/
15+
.pytest_cache/
16+
.mypy_cache/
17+
.ruff_cache/
18+
vendor/
19+
Pods/
20+
21+
# ===================
22+
# Build outputs
23+
# ===================
24+
dist/
25+
build/
26+
out/
27+
target/
28+
*.egg-info/
29+
*.whl
30+
*.pyc
31+
*.pyo
32+
33+
# ===================
34+
# Binary/large files
35+
# ===================
36+
*.so
37+
*.dylib
38+
*.dll
39+
*.exe
40+
*.bin
41+
*.o
42+
*.a
43+
*.lib
44+
45+
# ===================
46+
# IDE/editors
47+
# ===================
48+
.idea/
49+
.vscode/
50+
*.swp
51+
*.swo
52+
*~
53+
54+
# ===================
55+
# Security (always exclude)
56+
# ===================
57+
.env
58+
.env.*
59+
*.pem
60+
*.key
61+
*.p12
62+
*.pfx
63+
credentials.*
64+
secrets.*
65+
66+
# ===================
67+
# Version control
68+
# ===================
69+
.git/
70+
.hg/
71+
.svn/
72+
73+
# ===================
74+
# OS files
75+
# ===================
76+
.DS_Store
77+
Thumbs.db
78+
79+
# ===================
80+
# Project-specific
81+
# Add your custom patterns below
82+
# ===================
83+
# large_test_fixtures/
84+
# data/

.gitattributes

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
assets/axe_gif_axe_axe_ending.gif filter=lfs diff=lfs merge=lfs -text
2+
*.gif filter=lfs diff=lfs merge=lfs -text
3+
assets/*.gif filter=lfs diff=lfs merge=lfs -text
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
name: Bug Report
2+
description: Report an issue that should be fixed
3+
labels:
4+
- bug
5+
- needs triage
6+
body:
7+
- type: markdown
8+
attributes:
9+
value: |
10+
Thank you for submitting a bug report! It helps make axe Code CLI better for everyone.
11+
12+
If you need help or support using axe Code CLI, and are not reporting a bug, please post on [axe-cli/discussions](https://github.com/SRSWTI/axe/discussions), where you can ask questions or engage with others on ideas for how to improve axe Code CLI.
13+
14+
Make sure you are running the latest version of axe Code CLI (`uv tool upgrade axe-cli` to upgrade). The bug you are experiencing may already have been fixed.
15+
16+
Please try to include as much information as possible.
17+
18+
- type: input
19+
id: version
20+
attributes:
21+
label: What version of Axe Code CLI is running?
22+
description: Copy the output of `axe --version` or `/version`
23+
validations:
24+
required: true
25+
- type: input
26+
id: plan
27+
attributes:
28+
label: Which open platform/subscription were you using?
29+
description: which open platform/subscription were you using?
30+
validations:
31+
required: true
32+
- type: input
33+
id: model
34+
attributes:
35+
label: Which model were you using?
36+
description: which porvider were you using and whihc model and what was the config toml set up
37+
- type: input
38+
id: platform
39+
attributes:
40+
label: What platform is your computer?
41+
description: |
42+
For MacOS and Linux: copy the output of `uname -mprs`
43+
For Windows: copy the output of `"$([Environment]::OSVersion | ForEach-Object VersionString) $(if ([Environment]::Is64BitOperatingSystem) { "x64" } else { "x86" })"` in the PowerShell console
44+
- type: textarea
45+
id: actual
46+
attributes:
47+
label: What issue are you seeing?
48+
description: Please include the full error messages and prompts with any private information redacted. If possible, please provide text instead of a screenshot.
49+
validations:
50+
required: true
51+
- type: textarea
52+
id: steps
53+
attributes:
54+
label: What steps can reproduce the bug?
55+
description: Explain the bug and provide a code snippet that can reproduce it. Please include session id and context usage if applicable.
56+
validations:
57+
required: true
58+
- type: textarea
59+
id: expected
60+
attributes:
61+
label: What is the expected behavior?
62+
description: If possible, please provide text instead of a screenshot.
63+
- type: textarea
64+
id: notes
65+
attributes:
66+
label: Additional information
67+
description: Is there anything else you think we should know?
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
name: Feature Request
2+
description: Propose a new feature for Axe Code CLI
3+
labels:
4+
- enhancement
5+
body:
6+
- type: markdown
7+
attributes:
8+
value: |
9+
Is Axe Code CLI missing a feature that you'd like to see? Feel free to propose it here.
10+
11+
Before you submit a feature:
12+
1. Search existing issues for similar features. If you find one, 👍 it rather than opening a new one.
13+
2. The Axe Code CLI team will try to balance the varying needs of the community when prioritizing or rejecting new features. Please understand that not all features will be accepted.
14+
15+
- type: textarea
16+
id: feature
17+
attributes:
18+
label: What feature would you like to see?
19+
validations:
20+
required: true
21+
- type: textarea
22+
id: notes
23+
attributes:
24+
label: Additional information
25+
description: Is there anything else you think we should know?

.github/ISSUE_TEMPLATE/config.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
blank_issues_enabled: true
2+
contact_links:
3+
- name: Questions and General Discussion
4+
url: https://github.com/SRSWTI/axe/discussions
5+
about: Have questions? Welcome to open a discussion!
Lines changed: 163 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,163 @@
1+
name: macos-code-sign
2+
description: Sign and notarize macOS PyInstaller binaries
3+
4+
inputs:
5+
binary-path:
6+
description: Path to the binary to sign
7+
required: true
8+
apple-certificate-p12:
9+
description: Base64-encoded Apple signing certificate (P12)
10+
required: true
11+
apple-certificate-password:
12+
description: Password for the signing certificate
13+
required: true
14+
apple-notarization-key-p8:
15+
description: Base64-encoded Apple notarization key (P8)
16+
required: true
17+
apple-notarization-key-id:
18+
description: Apple notarization key ID
19+
required: true
20+
apple-notarization-issuer-id:
21+
description: Apple notarization issuer ID
22+
required: true
23+
24+
runs:
25+
using: composite
26+
steps:
27+
- name: Import signing certificate
28+
shell: bash
29+
env:
30+
APPLE_CERTIFICATE_P12: ${{ inputs.apple-certificate-p12 }}
31+
APPLE_CERTIFICATE_PASSWORD: ${{ inputs.apple-certificate-password }}
32+
KEYCHAIN_PASSWORD: actions
33+
run: |
34+
set -euo pipefail
35+
36+
# Decode certificate
37+
cert_path="${RUNNER_TEMP}/certificate.p12"
38+
echo "$APPLE_CERTIFICATE_P12" | base64 -d > "$cert_path"
39+
40+
# Create temporary keychain
41+
keychain_path="${RUNNER_TEMP}/signing.keychain-db"
42+
security create-keychain -p "$KEYCHAIN_PASSWORD" "$keychain_path"
43+
security set-keychain-settings -lut 21600 "$keychain_path"
44+
security unlock-keychain -p "$KEYCHAIN_PASSWORD" "$keychain_path"
45+
46+
# Add to keychain search list
47+
security list-keychains -d user -s "$keychain_path" $(security list-keychains -d user | tr -d '"')
48+
security default-keychain -s "$keychain_path"
49+
50+
# Import certificate
51+
security import "$cert_path" -k "$keychain_path" -P "$APPLE_CERTIFICATE_PASSWORD" -T /usr/bin/codesign -T /usr/bin/security
52+
security set-key-partition-list -S apple-tool:,apple: -s -k "$KEYCHAIN_PASSWORD" "$keychain_path" > /dev/null
53+
54+
# Find signing identity
55+
IDENTITY=$(security find-identity -v -p codesigning "$keychain_path" | grep "Developer ID Application" | head -1 | sed -n 's/.*"\(Developer ID Application[^"]*\)".*/\1/p')
56+
57+
if [[ -z "$IDENTITY" ]]; then
58+
echo "❌ No Developer ID Application identity found"
59+
security find-identity -v -p codesigning "$keychain_path"
60+
exit 1
61+
fi
62+
63+
echo "✅ Found signing identity: $IDENTITY"
64+
echo "APPLE_SIGNING_IDENTITY=$IDENTITY" >> "$GITHUB_ENV"
65+
echo "APPLE_KEYCHAIN_PATH=$keychain_path" >> "$GITHUB_ENV"
66+
67+
rm -f "$cert_path"
68+
69+
- name: Sign PyInstaller binary and embedded libraries
70+
shell: bash
71+
env:
72+
BINARY_PATH: ${{ inputs.binary-path }}
73+
run: |
74+
set -euo pipefail
75+
76+
echo "Signing PyInstaller binary: $BINARY_PATH"
77+
78+
# PyInstaller onefile binaries embed libraries that get extracted at runtime.
79+
# We need to unpack, sign everything, and repack.
80+
81+
# First, try signing the binary directly with --deep
82+
# For single-file PyInstaller executables, this should work
83+
codesign --deep --force --options runtime --timestamp \
84+
--sign "$APPLE_SIGNING_IDENTITY" \
85+
--keychain "$APPLE_KEYCHAIN_PATH" \
86+
"$BINARY_PATH"
87+
88+
echo "✅ Binary signed"
89+
codesign -dv --verbose=2 "$BINARY_PATH"
90+
91+
- name: Notarize binary
92+
shell: bash
93+
env:
94+
BINARY_PATH: ${{ inputs.binary-path }}
95+
APPLE_NOTARIZATION_KEY_P8: ${{ inputs.apple-notarization-key-p8 }}
96+
APPLE_NOTARIZATION_KEY_ID: ${{ inputs.apple-notarization-key-id }}
97+
APPLE_NOTARIZATION_ISSUER_ID: ${{ inputs.apple-notarization-issuer-id }}
98+
run: |
99+
set -euo pipefail
100+
101+
# Save API key
102+
key_path="${RUNNER_TEMP}/AuthKey.p8"
103+
echo "$APPLE_NOTARIZATION_KEY_P8" | base64 -d > "$key_path"
104+
105+
# Create zip for notarization
106+
binary_name=$(basename "$BINARY_PATH")
107+
zip_path="${RUNNER_TEMP}/${binary_name}.zip"
108+
ditto -c -k --keepParent "$BINARY_PATH" "$zip_path"
109+
110+
echo "Submitting for notarization..."
111+
112+
# Submit and wait
113+
result=$(xcrun notarytool submit "$zip_path" \
114+
--key "$key_path" \
115+
--key-id "$APPLE_NOTARIZATION_KEY_ID" \
116+
--issuer "$APPLE_NOTARIZATION_ISSUER_ID" \
117+
--wait \
118+
--timeout 10m \
119+
--output-format json 2>&1) || true
120+
121+
echo "$result"
122+
123+
status=$(echo "$result" | grep -o '"status":"[^"]*"' | cut -d'"' -f4 || echo "unknown")
124+
125+
if [[ "$status" == "Accepted" ]]; then
126+
echo "✅ Notarization successful"
127+
else
128+
echo "⚠️ Notarization status: $status"
129+
# Get detailed log
130+
submission_id=$(echo "$result" | grep -o '"id":"[^"]*"' | cut -d'"' -f4 || echo "")
131+
if [[ -n "$submission_id" ]]; then
132+
echo "Fetching notarization log..."
133+
xcrun notarytool log "$submission_id" \
134+
--key "$key_path" \
135+
--key-id "$APPLE_NOTARIZATION_KEY_ID" \
136+
--issuer "$APPLE_NOTARIZATION_ISSUER_ID" || true
137+
fi
138+
exit 1
139+
fi
140+
141+
# Cleanup
142+
rm -f "$key_path" "$zip_path"
143+
144+
- name: Verify signature
145+
shell: bash
146+
env:
147+
BINARY_PATH: ${{ inputs.binary-path }}
148+
run: |
149+
set -euo pipefail
150+
151+
echo "Verifying signature and notarization..."
152+
codesign -dv --verbose=2 "$BINARY_PATH"
153+
echo ""
154+
echo "Gatekeeper check:"
155+
spctl -a -vv "$BINARY_PATH" 2>&1 || true
156+
157+
- name: Cleanup keychain
158+
if: always()
159+
shell: bash
160+
run: |
161+
if [[ -n "${APPLE_KEYCHAIN_PATH:-}" && -f "${APPLE_KEYCHAIN_PATH}" ]]; then
162+
security delete-keychain "$APPLE_KEYCHAIN_PATH" || true
163+
fi

.github/dependabot.yml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
# To get started with Dependabot version updates, you'll need to specify which
2+
# package ecosystems to update and where the package manifests are located.
3+
# Please see the documentation for all configuration options:
4+
# https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file
5+
6+
version: 2
7+
updates:
8+
- package-ecosystem: "uv"
9+
directory: "/"
10+
schedule:
11+
interval: "daily"
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
{
2+
"LABEL": {
3+
"name": "Invalid PR Title",
4+
"color": "B60205"
5+
},
6+
"CHECKS": {
7+
"regexp": "^(feat|fix|test|refactor|chore|style|docs|perf|build|ci|revert)(\\(.*\\))?:.*"
8+
},
9+
"MESSAGES": {
10+
"failure": "The PR title is invalid. Please refer to https://www.conventionalcommits.org/en/v1.0.0/ for the convention."
11+
}
12+
}

0 commit comments

Comments
 (0)