Skip to content

Commit 4dad4c8

Browse files
committed
Initial commit
0 parents  commit 4dad4c8

72 files changed

Lines changed: 5248 additions & 0 deletions

File tree

Some content is hidden

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

.env.example

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
# Copy this file to `.env` for local-only publishing credentials.
2+
# `.env` is ignored by git.
3+
4+
MAVEN_CENTRAL_USERNAME=
5+
MAVEN_CENTRAL_PASSWORD=
6+
7+
GITHUB_PACKAGES_USERNAME=
8+
GITHUB_PACKAGES_PASSWORD=
9+
10+
SIGNING_KEY_BASE64=
11+
SIGNING_PASSWORD=
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
name: Bug report
2+
description: Report a reproducible SDK bug or regression.
3+
title: "[Bug]: "
4+
labels:
5+
- bug
6+
body:
7+
- type: textarea
8+
id: summary
9+
attributes:
10+
label: Summary
11+
description: What is broken?
12+
validations:
13+
required: true
14+
- type: textarea
15+
id: reproduction
16+
attributes:
17+
label: Reproduction
18+
description: Include steps, sample code, and module information.
19+
validations:
20+
required: true
21+
- type: textarea
22+
id: expected
23+
attributes:
24+
label: Expected behavior
25+
validations:
26+
required: true
27+
- type: textarea
28+
id: environment
29+
attributes:
30+
label: Environment
31+
description: Android Studio version, JDK, Gradle, Android API level, device or emulator.
32+
validations:
33+
required: true

.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: false
2+
contact_links:
3+
- name: Security reports
4+
url: mailto:hello@resolvekit.app
5+
about: Report vulnerabilities privately by email.
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
name: Feature request
2+
description: Suggest an SDK capability or integration improvement.
3+
title: "[Feature]: "
4+
labels:
5+
- enhancement
6+
body:
7+
- type: textarea
8+
id: problem
9+
attributes:
10+
label: Problem statement
11+
description: What developer or product problem are you trying to solve?
12+
validations:
13+
required: true
14+
- type: textarea
15+
id: proposal
16+
attributes:
17+
label: Proposed solution
18+
description: Describe the API, module, or workflow you want.
19+
validations:
20+
required: true
21+
- type: textarea
22+
id: alternatives
23+
attributes:
24+
label: Alternatives considered
25+
description: Optional, but useful if you evaluated other approaches.

.github/pull_request_template.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
## Summary
2+
3+
- explain the change
4+
- explain the user-facing or developer-facing impact
5+
6+
## Verification
7+
8+
- [ ] `./gradlew test`
9+
- [ ] `./gradlew :sample:assembleDebug`
10+
- [ ] README or docs updated if needed
11+
12+
## Notes
13+
14+
- credentials or release infrastructure required:
15+
- follow-up work:

.github/workflows/android.yml

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
name: Android CI
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
pull_request:
8+
9+
jobs:
10+
build:
11+
runs-on: ubuntu-latest
12+
13+
steps:
14+
- name: Checkout
15+
uses: actions/checkout@v4
16+
17+
- name: Set up JDK 17
18+
uses: actions/setup-java@v4
19+
with:
20+
distribution: temurin
21+
java-version: "17"
22+
23+
- name: Set up Android SDK
24+
uses: android-actions/setup-android@v3
25+
26+
- name: Install Android SDK packages
27+
run: sdkmanager "platforms;android-36" "build-tools;36.0.0"
28+
29+
- name: Set up Gradle
30+
uses: gradle/actions/setup-gradle@v4
31+
32+
- name: Validate wrapper permissions
33+
run: chmod +x gradlew
34+
35+
- name: Build, test, and publish locally
36+
run: ./gradlew test :sample:assembleDebug publishToMavenLocal

.github/workflows/publish.yml

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
name: Publish SDK
2+
3+
on:
4+
workflow_dispatch:
5+
release:
6+
types:
7+
- published
8+
9+
permissions:
10+
contents: read
11+
packages: write
12+
13+
jobs:
14+
publish:
15+
runs-on: ubuntu-latest
16+
17+
steps:
18+
- name: Checkout
19+
uses: actions/checkout@v4
20+
21+
- name: Set up JDK 17
22+
uses: actions/setup-java@v4
23+
with:
24+
distribution: temurin
25+
java-version: "17"
26+
27+
- name: Set up Android SDK
28+
uses: android-actions/setup-android@v3
29+
30+
- name: Install Android SDK packages
31+
run: sdkmanager "platforms;android-36" "build-tools;36.0.0"
32+
33+
- name: Set up Gradle
34+
uses: gradle/actions/setup-gradle@v4
35+
36+
- name: Validate wrapper permissions
37+
run: chmod +x gradlew
38+
39+
- name: Build and test
40+
run: ./gradlew test :sample:assembleDebug
41+
42+
- name: Publish to GitHub Packages
43+
env:
44+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
45+
GITHUB_ACTOR: ${{ github.actor }}
46+
run: ./gradlew publishAllPublicationsToGitHubPackagesRepository
47+
48+
- name: Publish to Maven Central
49+
if: ${{ secrets.MAVEN_CENTRAL_USERNAME != '' && secrets.MAVEN_CENTRAL_PASSWORD != '' && secrets.SIGNING_KEY_BASE64 != '' && secrets.SIGNING_PASSWORD != '' }}
50+
env:
51+
MAVEN_CENTRAL_USERNAME: ${{ secrets.MAVEN_CENTRAL_USERNAME }}
52+
MAVEN_CENTRAL_PASSWORD: ${{ secrets.MAVEN_CENTRAL_PASSWORD }}
53+
SIGNING_KEY_BASE64: ${{ secrets.SIGNING_KEY_BASE64 }}
54+
SIGNING_PASSWORD: ${{ secrets.SIGNING_PASSWORD }}
55+
run: ./gradlew publishAllPublicationsToMavenCentralRepository
56+
57+
- name: Finalize Maven Central deployment
58+
if: ${{ secrets.MAVEN_CENTRAL_USERNAME != '' && secrets.MAVEN_CENTRAL_PASSWORD != '' && secrets.SIGNING_KEY_BASE64 != '' && secrets.SIGNING_PASSWORD != '' }}
59+
env:
60+
MAVEN_CENTRAL_USERNAME: ${{ secrets.MAVEN_CENTRAL_USERNAME }}
61+
MAVEN_CENTRAL_PASSWORD: ${{ secrets.MAVEN_CENTRAL_PASSWORD }}
62+
run: |
63+
auth="$(printf '%s:%s' "$MAVEN_CENTRAL_USERNAME" "$MAVEN_CENTRAL_PASSWORD" | base64 | tr -d '\n')"
64+
curl --fail --silent --show-error \
65+
-X POST \
66+
-H "Authorization: Bearer $auth" \
67+
"https://ossrh-staging-api.central.sonatype.com/manual/upload/defaultRepository/app.resolvekit?publishing_type=automatic"

.gitignore

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
docs/plans/
2+
.gradle/
3+
.idea/
4+
build/
5+
*/build/
6+
local.properties
7+
*.iml
8+
.DS_Store
9+
*.keystore
10+
vectors.db
11+
12+
# Codex local configuration
13+
.codex/
14+
15+
# AI agent local tooling
16+
.agents/
17+
.claude/
18+
.claude-flow/
19+
.swarm/
20+
.mcp.json
21+
AGENTS.md
22+
CLAUDE.md
23+
24+
# Environment variables
25+
.env
26+
.env.local
27+
.env.*.local
28+
29+
# Claude Code local config
30+
CLAUDE.local.md

CONTRIBUTING.md

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
# Contributing
2+
3+
## Development setup
4+
5+
1. Install JDK 17.
6+
2. Install Android SDK Platform 36 and Build-Tools 36.x in Android Studio.
7+
3. Clone the repository and open it in Android Studio, or use the Gradle wrapper from the terminal.
8+
4. Add `local.properties` with your SDK path:
9+
10+
```properties
11+
sdk.dir=/path/to/Android/sdk
12+
```
13+
14+
5. If you want to run the sample app against the live backend, add your API key to `local.properties`:
15+
16+
```properties
17+
resolvekit.apiKey=iaa_your_key_here
18+
```
19+
20+
You can also export `RESOLVEKIT_API_KEY` instead of writing it to `local.properties`.
21+
22+
For local publishing credentials, copy [`.env.example`](/Users/t0405/Developer/resolvekit-android-sdk/.env.example) to `.env` and fill in the values you need. Use a base64-encoded private key in `SIGNING_KEY_BASE64`. Keep `.env` local only.
23+
24+
## Validation
25+
26+
Run the same checks that CI runs before opening a pull request:
27+
28+
```bash
29+
./gradlew test :sample:assembleDebug publishToMavenLocal
30+
```
31+
32+
## Project structure
33+
34+
- `core` contains shared types and tool registration.
35+
- `networking` contains the backend client and event stream handling.
36+
- `ui` contains the runtime and host UI surfaces.
37+
- `authoring` contains the `@ResolveKit` annotation APIs.
38+
- `ksp` contains the annotation processor.
39+
- `sample` is the reference Android app.
40+
41+
## Pull requests
42+
43+
- Keep changes scoped.
44+
- Update the README when public behavior changes.
45+
- Do not commit secrets, `.env`, `local.properties`, or private credentials.
46+
- Include verification notes in the pull request body.

LICENSE

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
MIT License
2+
3+
Copyright (c) 2026 ResolveKit
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in all
13+
copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+
SOFTWARE.

0 commit comments

Comments
 (0)