Skip to content

Commit 500452e

Browse files
committed
Initial commit 🎉
Perstack: npm/npx for AI Agents https://docs.perstack.ai
0 parents  commit 500452e

File tree

281 files changed

+34559
-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.

281 files changed

+34559
-0
lines changed

‎.changeset/README.md‎

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# Changesets
2+
3+
Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works
4+
with multi-package repos, or single-package repos to help you version and publish your code. You can
5+
find the full documentation for it [in our repository](https://github.com/changesets/changesets)
6+
7+
We have a quick list of common questions to get you started engaging with this project in
8+
[our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md)

‎.changeset/config.json‎

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
{
2+
"$schema": "https://unpkg.com/@changesets/config@3.1.1/schema.json",
3+
"changelog": "@changesets/cli/changelog",
4+
"commit": false,
5+
"fixed": [],
6+
"linked": [],
7+
"access": "public",
8+
"baseBranch": "main",
9+
"updateInternalDependencies": "patch",
10+
"ignore": ["@perstack/docs"]
11+
}

‎.github/workflows/ci.yml‎

Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
1+
name: CI
2+
3+
on:
4+
push:
5+
branches: [main]
6+
pull_request:
7+
types: [opened, synchronize, reopened]
8+
9+
concurrency:
10+
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
11+
cancel-in-progress: true
12+
13+
permissions:
14+
contents: read
15+
16+
env:
17+
CI: 'true'
18+
PNPM_VERSION: '10.10.0'
19+
NODE_VERSION: '22'
20+
21+
jobs:
22+
quality:
23+
name: Lint / Format / Knip
24+
runs-on: ubuntu-24.04
25+
steps:
26+
- uses: actions/checkout@v4
27+
28+
- name: Setup pnpm
29+
uses: pnpm/action-setup@v4
30+
with:
31+
version: ${{ env.PNPM_VERSION }}
32+
33+
- name: Setup Node.js
34+
uses: actions/setup-node@v4
35+
with:
36+
node-version: ${{ env.NODE_VERSION }}
37+
cache: 'pnpm'
38+
39+
- name: Install dependencies
40+
run: pnpm install --frozen-lockfile
41+
42+
- name: Lint & Format check
43+
run: pnpm run format-and-lint
44+
45+
- name: Type check
46+
run: pnpm run typecheck
47+
48+
- name: Check unused dependencies
49+
run: pnpm run check-deps
50+
51+
test:
52+
name: Test
53+
runs-on: ubuntu-24.04
54+
steps:
55+
- uses: actions/checkout@v4
56+
57+
- name: Setup pnpm
58+
uses: pnpm/action-setup@v4
59+
with:
60+
version: ${{ env.PNPM_VERSION }}
61+
62+
- name: Setup Node.js
63+
uses: actions/setup-node@v4
64+
with:
65+
node-version: ${{ env.NODE_VERSION }}
66+
cache: 'pnpm'
67+
68+
- name: Install dependencies
69+
run: pnpm install --frozen-lockfile
70+
71+
- name: Prepare test environment
72+
run: pnpm run reset
73+
74+
- name: Run tests with coverage
75+
run: pnpm test
76+
77+
- name: Upload coverage to Codecov
78+
uses: codecov/codecov-action@v4
79+
with:
80+
token: ${{ secrets.CODECOV_TOKEN }}
81+
files: ./coverage/lcov.info
82+
fail_ci_if_error: false
83+
84+
build:
85+
name: Build
86+
runs-on: ubuntu-24.04
87+
steps:
88+
- uses: actions/checkout@v4
89+
with:
90+
fetch-depth: 0
91+
92+
- name: Setup pnpm
93+
uses: pnpm/action-setup@v4
94+
with:
95+
version: ${{ env.PNPM_VERSION }}
96+
97+
- name: Setup Node.js
98+
uses: actions/setup-node@v4
99+
with:
100+
node-version: ${{ env.NODE_VERSION }}
101+
cache: 'pnpm'
102+
103+
- name: Install dependencies
104+
run: pnpm install --frozen-lockfile
105+
106+
- name: Restore turbo cache
107+
uses: actions/cache@v4
108+
with:
109+
path: .turbo
110+
key: turbo-${{ runner.os }}-${{ hashFiles('**/*.[tj]s', '**/*.[tj]sx', 'pnpm-lock.yaml') }}
111+
restore-keys: |
112+
turbo-${{ runner.os }}-
113+
114+
- name: Build all packages
115+
run: pnpm run build
116+
env:
117+
NODE_ENV: production
118+
119+
ci-success:
120+
name: CI Success
121+
runs-on: ubuntu-24.04
122+
needs: [quality, test, build]
123+
if: always()
124+
steps:
125+
- name: Check all job statuses
126+
run: |
127+
if [[ "${{ contains(needs.*.result, 'failure') }}" == "true" ]]; then
128+
echo "::error::One or more CI jobs failed"
129+
exit 1
130+
fi
131+
echo "✅ All CI checks passed!"
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
name: Validate Type Management
2+
3+
on:
4+
pull_request:
5+
branches: [main]
6+
push:
7+
branches: [main]
8+
9+
jobs:
10+
validate:
11+
runs-on: ubuntu-latest
12+
steps:
13+
- name: Checkout
14+
uses: actions/checkout@v4
15+
with:
16+
fetch-depth: 0
17+
- name: Setup pnpm
18+
uses: pnpm/action-setup@v4
19+
with:
20+
version: 10.10.0
21+
- name: Setup Node.js
22+
uses: actions/setup-node@v4
23+
with:
24+
node-version: 22
25+
cache: 'pnpm'
26+
- name: Install dependencies
27+
run: pnpm install --frozen-lockfile
28+
- name: Validate version sync
29+
run: pnpm validate:versions
30+
- name: Validate changesets
31+
run: pnpm validate:changeset
32+
if: github.event_name == 'pull_request'
33+
- name: Check schema diff
34+
run: pnpm check:schema-diff
35+
if: github.event_name == 'pull_request'
36+
- name: Type check
37+
run: pnpm typecheck
38+
- name: Build all packages
39+
run: pnpm build
40+

‎.gitignore‎

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
.claude/
2+
.cursor/
3+
.DS_Store
4+
.env
5+
.env.*.local
6+
.env.local
7+
.idea/
8+
.next/
9+
.npmrc
10+
.turbo/
11+
.vscode/
12+
*.log
13+
*.swo
14+
*.swp
15+
*.temp
16+
*.tmp
17+
*.tsbuildinfo
18+
coverage/
19+
dist/
20+
node_modules/
21+
npm-debug.log*
22+
perstack.toml
23+
perstack/
24+
!packages/perstack
25+
Thumbs.db

0 commit comments

Comments
 (0)