create-minions-bundle 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/README.md +16 -0
  2. package/package.json +41 -0
  3. package/src/bundle-codegen.js +259 -0
  4. package/src/generator.js +107 -0
  5. package/src/github.js +110 -0
  6. package/src/index.js +144 -0
  7. package/src/manual.js +171 -0
  8. package/src/prompts.js +128 -0
  9. package/src/template.js +62 -0
  10. package/templates/apps/blog/astro.config.mjs +25 -0
  11. package/templates/apps/blog/netlify.toml +3 -0
  12. package/templates/apps/blog/package.json +34 -0
  13. package/templates/apps/blog/public/favicon.svg +4 -0
  14. package/templates/apps/blog/src/layouts/BaseLayout.astro +39 -0
  15. package/templates/apps/blog/src/pages/index.astro +18 -0
  16. package/templates/apps/blog/src/pages/posts/welcome.md +23 -0
  17. package/templates/apps/blog/src/styles/global.css.template +6 -0
  18. package/templates/apps/blog/tsconfig.json +11 -0
  19. package/templates/apps/docs/astro.config.mjs +42 -0
  20. package/templates/apps/docs/netlify.toml +4 -0
  21. package/templates/apps/docs/package.json +21 -0
  22. package/templates/apps/docs/src/content/docs/api/python.md +24 -0
  23. package/templates/apps/docs/src/content/docs/api/typescript.md +24 -0
  24. package/templates/apps/docs/src/content/docs/getting-started/installation.md +27 -0
  25. package/templates/apps/docs/src/content/docs/getting-started/introduction.md +22 -0
  26. package/templates/apps/docs/src/content/docs/getting-started/quick-start.md +28 -0
  27. package/templates/apps/docs/src/content/docs/index.mdx.template +24 -0
  28. package/templates/apps/docs/src/styles/custom.css.template +14 -0
  29. package/templates/apps/docs/tsconfig.json +3 -0
  30. package/templates/apps/web/index.html +17 -0
  31. package/templates/apps/web/netlify.toml +6 -0
  32. package/templates/apps/web/package.json +34 -0
  33. package/templates/apps/web/postcss.config.js +5 -0
  34. package/templates/apps/web/public/favicon.svg +4 -0
  35. package/templates/apps/web/src/App.css +111 -0
  36. package/templates/apps/web/src/App.tsx +46 -0
  37. package/templates/apps/web/src/index.css.template +12 -0
  38. package/templates/apps/web/src/main.tsx +10 -0
  39. package/templates/apps/web/tsconfig.json +36 -0
  40. package/templates/apps/web/tsconfig.node.json +13 -0
  41. package/templates/apps/web/vite.config.ts +21 -0
  42. package/templates/github/CODE_OF_CONDUCT.md +5 -0
  43. package/templates/github/CONTRIBUTING.md +49 -0
  44. package/templates/github/FUNDING.yml +2 -0
  45. package/templates/github/FUNDING.yml.template +1 -0
  46. package/templates/github/ISSUE_TEMPLATE/bug_report.md +20 -0
  47. package/templates/github/ISSUE_TEMPLATE/feature_request.md +18 -0
  48. package/templates/github/workflows/ci.yml +65 -0
  49. package/templates/github/workflows/publish.yml +81 -0
  50. package/templates/github/workflows/release.yml +16 -0
  51. package/templates/packages/cli/README.md +19 -0
  52. package/templates/packages/cli/package.json +38 -0
  53. package/templates/packages/cli/src/index.ts +353 -0
  54. package/templates/packages/cli/tsconfig.json +23 -0
  55. package/templates/packages/python/README.md +21 -0
  56. package/templates/packages/python/__pythonModule__/__init__.py +24 -0
  57. package/templates/packages/python/__pythonModule__/schemas.py.template +8 -0
  58. package/templates/packages/python/pyproject.toml +34 -0
  59. package/templates/packages/python/tests/test_basic.py +20 -0
  60. package/templates/packages/sdk/README.md.template +25 -0
  61. package/templates/packages/sdk/package.json.template +43 -0
  62. package/templates/packages/sdk/src/__tests__/bundle.test.ts.template +18 -0
  63. package/templates/packages/sdk/src/bundle.ts.template +6 -0
  64. package/templates/packages/sdk/src/index.ts.template +13 -0
  65. package/templates/packages/sdk/src/relations.ts.template +6 -0
  66. package/templates/packages/sdk/src/views.ts.template +6 -0
  67. package/templates/packages/sdk/tsconfig.json +26 -0
  68. package/templates/root/.release-please-manifest.json +3 -0
  69. package/templates/root/CHANGELOG.md +15 -0
  70. package/templates/root/CHANGELOG.md.template +10 -0
  71. package/templates/root/LICENSE.template +21 -0
  72. package/templates/root/README.md.template +42 -0
  73. package/templates/root/SECURITY.md +35 -0
  74. package/templates/root/SECURITY.md.template +11 -0
  75. package/templates/root/SKILLS.md.template +10 -0
  76. package/templates/root/package.json.template +28 -0
  77. package/templates/root/pnpm-workspace.yaml +4 -0
  78. package/templates/root/release-please-config.json +61 -0
  79. package/templates/root/tsconfig.json +31 -0
@@ -0,0 +1,27 @@
1
+ ---
2
+ title: Installation
3
+ description: "Install {{projectCapitalized}} packages"
4
+ ---
5
+
6
+ ## TypeScript / Node.js
7
+
8
+ ```bash
9
+ npm install {{sdkName}} minions-sdk
10
+ ```
11
+
12
+ ## Python
13
+
14
+ ```bash
15
+ pip install {{pythonPackage}}
16
+ ```
17
+
18
+ ## CLI
19
+
20
+ ```bash
21
+ npm install -g {{cliName}}
22
+ ```
23
+
24
+ ## Requirements
25
+
26
+ - **Node.js** 20 or later
27
+ - **Python** 3.11 or later (for Python SDK)
@@ -0,0 +1,22 @@
1
+ ---
2
+ title: Introduction
3
+ description: "Get started with {{projectCapitalized}}"
4
+ ---
5
+
6
+ # {{projectCapitalized}}
7
+
8
+ {{projectDescription}}
9
+
10
+ ## Overview
11
+
12
+ This project is part of the [Minions ecosystem](https://github.com/mxn2020/minions) and provides:
13
+
14
+ - **TypeScript SDK** (`{{sdkName}}`) — Core library for Node.js
15
+ - **Python SDK** (`{{pythonPackage}}`) — Python bindings
16
+ - **CLI Tool** (`{{cliName}}`) — Command-line interface
17
+ - **Web App** — Interactive playground at [{{domainApp}}](https://{{domainApp}})
18
+
19
+ ## Next Steps
20
+
21
+ - [Installation](/getting-started/installation/) — Set up the SDK
22
+ - [Quick Start](/getting-started/quick-start/) — Your first project
@@ -0,0 +1,28 @@
1
+ ---
2
+ title: Quick Start
3
+ description: "Get up and running with {{projectCapitalized}} in minutes"
4
+ ---
5
+
6
+ ## TypeScript
7
+
8
+ ```typescript
9
+ import { createClient } from '{{sdkName}}';
10
+
11
+ const client = createClient();
12
+ console.log('Version:', client.version);
13
+ ```
14
+
15
+ ## Python
16
+
17
+ ```python
18
+ from {{pythonModule}} import create_client
19
+
20
+ client = create_client()
21
+ print(f"Version: {client['version']}")
22
+ ```
23
+
24
+ ## CLI
25
+
26
+ ```bash
27
+ {{cliCommand}} info
28
+ ```
@@ -0,0 +1,24 @@
1
+ ---
2
+ title: "{{projectCapitalized}}"
3
+ description: "{{projectDescription}}"
4
+ template: splash
5
+ hero:
6
+ tagline: "{{projectDescription}}"
7
+ actions:
8
+ - text: Quick Start
9
+ link: /getting-started/quick-start/
10
+ icon: right-arrow
11
+ variant: primary
12
+ - text: View on GitHub
13
+ link: https://github.com/{{githubRepo}}
14
+ icon: external
15
+ ---
16
+
17
+ import { Card, CardGrid, LinkCard } from '@astrojs/starlight/components';
18
+
19
+ ## Start Here
20
+
21
+ <CardGrid>
22
+ <LinkCard title="Quick Start" description="Install the packages and use the bundle." href="/getting-started/quick-start/" />
23
+ <LinkCard title="API Reference" description="TypeScript API Reference for the core types." href="/api/typescript/" />
24
+ </CardGrid>
@@ -0,0 +1,14 @@
1
+ /* Custom styles for {{projectCapitalized}} docs */
2
+ :root {
3
+ --sl-color-accent-low: #1a1145;
4
+ --sl-color-accent: {{accentColor}};
5
+ --sl-color-accent-high: #c4b5fd;
6
+ --sl-color-white: #ffffff;
7
+ --sl-color-gray-1: #eceef2;
8
+ --sl-color-gray-2: #c0c2c7;
9
+ --sl-color-gray-3: #888b96;
10
+ --sl-color-gray-4: #555765;
11
+ --sl-color-gray-5: #353841;
12
+ --sl-color-gray-6: #24272f;
13
+ --sl-color-black: #17181c;
14
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "extends": "astro/tsconfigs/strict"
3
+ }
@@ -0,0 +1,17 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+
4
+ <head>
5
+ <meta charset="UTF-8" />
6
+ <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
7
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
8
+ <title>{{projectCapitalized}}</title>
9
+ <meta name="description" content="{{projectDescription}}" />
10
+ </head>
11
+
12
+ <body>
13
+ <div id="root"></div>
14
+ <script type="module" src="/src/main.tsx"></script>
15
+ </body>
16
+
17
+ </html>
@@ -0,0 +1,6 @@
1
+ # Web app (Vite + React) — Netlify config
2
+ # Base directory in Netlify dashboard: apps/web
3
+
4
+ [build]
5
+ command = "pnpm run build"
6
+ publish = "apps/web/dist"
@@ -0,0 +1,34 @@
1
+ {
2
+ "name": "{{webName}}",
3
+ "version": "0.1.0",
4
+ "private": true,
5
+ "type": "module",
6
+ "engines": {
7
+ "node": ">=18"
8
+ },
9
+ "scripts": {
10
+ "dev": "vite",
11
+ "build": "tsc && vite build",
12
+ "preview": "vite preview"
13
+ },
14
+ "dependencies": {
15
+ "framer-motion": "^12.34.2",
16
+ "lucide-react": "^0.575.0",
17
+ "{{sdkName}}": "workspace:*",
18
+ "react": "^19.2.4",
19
+ "react-dom": "^19.2.4",
20
+ "react-router-dom": "^7.13.0"
21
+ },
22
+ "devDependencies": {
23
+ "@tailwindcss/postcss": "^4.2.0",
24
+ "@types/react": "^19.2.14",
25
+ "@types/react-dom": "^19.2.3",
26
+ "@vitejs/plugin-react": "^5.1.4",
27
+ "autoprefixer": "^10.4.24",
28
+ "postcss": "^8.5.6",
29
+ "tailwindcss": "^4.2.0",
30
+ "typescript": "^5.9.3",
31
+ "vite": "^7.3.1"
32
+ },
33
+ "license": "{{license}}"
34
+ }
@@ -0,0 +1,5 @@
1
+ export default {
2
+ plugins: {
3
+ '@tailwindcss/postcss': {},
4
+ },
5
+ };
@@ -0,0 +1,4 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">
2
+ <circle cx="16" cy="16" r="14" fill="{{accentColor}}"/>
3
+ <text x="16" y="21" text-anchor="middle" fill="white" font-size="16" font-weight="bold" font-family="system-ui">M</text>
4
+ </svg>
@@ -0,0 +1,111 @@
1
+ .app {
2
+ min-height: 100vh;
3
+ background: var(--bg);
4
+ color: var(--text);
5
+ font-family: 'Inter', system-ui, sans-serif;
6
+ }
7
+
8
+ .hero {
9
+ text-align: center;
10
+ padding: 6rem 2rem 4rem;
11
+ }
12
+
13
+ .hero h1 {
14
+ font-size: 3rem;
15
+ font-weight: 800;
16
+ background: linear-gradient(135deg, var(--accent), #A78BFA);
17
+ -webkit-background-clip: text;
18
+ -webkit-text-fill-color: transparent;
19
+ }
20
+
21
+ .tagline {
22
+ color: var(--text-dim);
23
+ font-size: 1.25rem;
24
+ margin-top: 1rem;
25
+ }
26
+
27
+ .cta-buttons {
28
+ display: flex;
29
+ gap: 1rem;
30
+ justify-content: center;
31
+ margin-top: 2rem;
32
+ }
33
+
34
+ .btn {
35
+ padding: 0.75rem 2rem;
36
+ border-radius: 0.5rem;
37
+ font-weight: 600;
38
+ text-decoration: none;
39
+ transition: all 0.2s;
40
+ }
41
+
42
+ .btn-primary {
43
+ background: var(--accent);
44
+ color: white;
45
+ }
46
+
47
+ .btn-primary:hover {
48
+ background: var(--accent-hover);
49
+ transform: translateY(-1px);
50
+ }
51
+
52
+ .btn-secondary {
53
+ background: var(--surface);
54
+ color: var(--text);
55
+ border: 1px solid #334155;
56
+ }
57
+
58
+ .btn-secondary:hover {
59
+ border-color: var(--accent);
60
+ }
61
+
62
+ .features {
63
+ display: grid;
64
+ grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
65
+ gap: 1.5rem;
66
+ max-width: 900px;
67
+ margin: 0 auto;
68
+ padding: 2rem;
69
+ }
70
+
71
+ .feature-card {
72
+ background: var(--surface);
73
+ border-radius: 0.75rem;
74
+ padding: 2rem;
75
+ border: 1px solid #334155;
76
+ transition: border-color 0.2s;
77
+ }
78
+
79
+ .feature-card:hover {
80
+ border-color: var(--accent);
81
+ }
82
+
83
+ .feature-card h3 {
84
+ font-size: 1.125rem;
85
+ margin-bottom: 0.75rem;
86
+ }
87
+
88
+ .feature-card code {
89
+ background: #0F0F23;
90
+ padding: 0.5rem 1rem;
91
+ border-radius: 0.25rem;
92
+ font-size: 0.875rem;
93
+ color: var(--accent);
94
+ display: block;
95
+ }
96
+
97
+ .footer {
98
+ text-align: center;
99
+ padding: 3rem 2rem;
100
+ color: var(--text-dim);
101
+ font-size: 0.875rem;
102
+ }
103
+
104
+ .footer a {
105
+ color: var(--accent);
106
+ text-decoration: none;
107
+ }
108
+
109
+ .footer a:hover {
110
+ text-decoration: underline;
111
+ }
@@ -0,0 +1,46 @@
1
+ import './App.css';
2
+
3
+ function App() {
4
+ return (
5
+ <div className="app">
6
+ <header className="hero">
7
+ <h1>{{ projectCapitalized }}</h1>
8
+ <p className="tagline">{{ projectDescription }}</p>
9
+ <div className="cta-buttons">
10
+ <a href="https://{{domainHelp}}" className="btn btn-primary">
11
+ Documentation
12
+ </a>
13
+ <a href="https://github.com/{{githubRepo}}" className="btn btn-secondary">
14
+ GitHub
15
+ </a>
16
+ </div>
17
+ </header>
18
+
19
+ <main className="content">
20
+ <section className="features">
21
+ <div className="feature-card">
22
+ <h3>TypeScript SDK</h3>
23
+ <code>npm install {{ sdkName }}</code>
24
+ </div>
25
+ <div className="feature-card">
26
+ <h3>Python SDK</h3>
27
+ <code>pip install {{ pythonPackage }}</code>
28
+ </div>
29
+ <div className="feature-card">
30
+ <h3>CLI Tool</h3>
31
+ <code>npm install -g {{ cliName }}</code>
32
+ </div>
33
+ </section>
34
+ </main>
35
+
36
+ <footer className="footer">
37
+ <p>
38
+ Built on the{' '}
39
+ <a href="https://github.com/mxn2020/minions">Minions SDK</a>
40
+ </p>
41
+ </footer>
42
+ </div>
43
+ );
44
+ }
45
+
46
+ export default App;
@@ -0,0 +1,12 @@
1
+ @import "tailwindcss";
2
+
3
+ :root {
4
+ --accent: {{accentColor}};
5
+ --accent-hover: {{accentHoverColor}};
6
+ --color-accent: {{accentColor}};
7
+ --color-accent-hover: {{accentHoverColor}};
8
+ --bg: #0F0F23;
9
+ --surface: #1A1A2E;
10
+ --text: #E2E8F0;
11
+ --text-dim: #94A3B8;
12
+ }
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ import ReactDOM from 'react-dom/client';
3
+ import App from './App';
4
+ import './index.css';
5
+
6
+ ReactDOM.createRoot(document.getElementById('root')!).render(
7
+ <React.StrictMode>
8
+ <App />
9
+ </React.StrictMode>,
10
+ );
@@ -0,0 +1,36 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2020",
4
+ "useDefineForClassFields": true,
5
+ "lib": [
6
+ "ES2020",
7
+ "DOM",
8
+ "DOM.Iterable"
9
+ ],
10
+ "module": "ESNext",
11
+ "skipLibCheck": true,
12
+ "moduleResolution": "bundler",
13
+ "allowImportingTsExtensions": true,
14
+ "resolveJsonModule": true,
15
+ "isolatedModules": true,
16
+ "noEmit": true,
17
+ "jsx": "react-jsx",
18
+ "strict": true,
19
+ "noUnusedLocals": true,
20
+ "noUnusedParameters": true,
21
+ "noFallthroughCasesInSwitch": true,
22
+ "paths": {
23
+ "@/*": [
24
+ "./src/*"
25
+ ]
26
+ }
27
+ },
28
+ "include": [
29
+ "src"
30
+ ],
31
+ "references": [
32
+ {
33
+ "path": "./tsconfig.node.json"
34
+ }
35
+ ]
36
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "compilerOptions": {
3
+ "composite": true,
4
+ "skipLibCheck": true,
5
+ "module": "ESNext",
6
+ "moduleResolution": "bundler",
7
+ "allowSyntheticDefaultImports": true,
8
+ "strict": true
9
+ },
10
+ "include": [
11
+ "vite.config.ts"
12
+ ]
13
+ }
@@ -0,0 +1,21 @@
1
+ import { defineConfig } from 'vite';
2
+ import react from '@vitejs/plugin-react';
3
+ import path from 'path';
4
+
5
+ export default defineConfig({
6
+ plugins: [react()],
7
+ resolve: {
8
+ alias: {
9
+ '@': path.resolve(__dirname, './src'),
10
+ },
11
+ },
12
+ base: '/',
13
+ optimizeDeps: {
14
+ include: ['{{sdkName}}'],
15
+ },
16
+ build: {
17
+ commonjsOptions: {
18
+ include: [/{{projectSlug}}/, /node_modules/],
19
+ },
20
+ },
21
+ });
@@ -0,0 +1,5 @@
1
+ # Code of Conduct
2
+
3
+ As contributors and maintainers of this project, we pledge to respect all people who contribute through reporting issues, posting feature requests, updating documentation, submitting pull requests or patches, and other activities.
4
+
5
+ We are committed to making participation in this project a harassment-free experience for everyone, regardless of level of experience, gender, gender identity and expression, sexual orientation, disability, personal appearance, body size, race, ethnicity, age, or religion.
@@ -0,0 +1,49 @@
1
+ # Contributing to {{projectCapitalized}}
2
+
3
+ Thank you for your interest in contributing to {{projectCapitalized}}!
4
+
5
+ ## Getting Started
6
+
7
+ 1. Fork the repository
8
+ 2. Clone your fork: `git clone https://github.com/YOUR_USERNAME/{{projectName}}.git`
9
+ 3. Install dependencies: `pnpm install`
10
+ 4. Create a branch: `git checkout -b feature/my-feature`
11
+
12
+ ## Development
13
+
14
+ ```bash
15
+ # Build all packages
16
+ pnpm run build
17
+
18
+ # Run tests
19
+ pnpm run test
20
+
21
+ # Type check
22
+ pnpm run lint
23
+ ```
24
+
25
+ ## Project Structure
26
+
27
+ - `packages/core/` — Framework-agnostic core library
28
+ - `packages/cli/` — CLI tool
29
+ - `packages/python/` — Python SDK
30
+ - `apps/docs/` — Astro Starlight documentation site
31
+ - `apps/web/` — Playground web app
32
+ - `apps/blog/` — Blog
33
+
34
+ ## Pull Request Process
35
+
36
+ 1. Ensure your code passes `pnpm run lint` and `pnpm run test`
37
+ 2. Update documentation if your changes affect the public API
38
+ 3. Add tests for new functionality
39
+ 4. Keep PRs focused — one feature or fix per PR
40
+
41
+ ## Code Style
42
+
43
+ - TypeScript strict mode
44
+ - ESM modules
45
+ - JSDoc on all public exports
46
+
47
+ ## License
48
+
49
+ By contributing, you agree that your contributions will be licensed under the {{license}} License.
@@ -0,0 +1,2 @@
1
+ buy_me_a_coffee: mxn2020
2
+ github: mxn2020
@@ -0,0 +1 @@
1
+ github: {{githubOrg}}
@@ -0,0 +1,20 @@
1
+ ---
2
+ name: Bug Report
3
+ about: Report a bug in the {{projectCapitalized}} library or CLI
4
+ title: '[Bug] '
5
+ labels: bug
6
+ ---
7
+
8
+ **Describe the bug**
9
+ A clear description of the bug.
10
+
11
+ **To Reproduce**
12
+ Steps to reproduce the behavior.
13
+
14
+ **Expected behavior**
15
+ What you expected to happen.
16
+
17
+ **Environment**
18
+ - Node.js version:
19
+ - {{sdkName}} version:
20
+ - OS:
@@ -0,0 +1,18 @@
1
+ ---
2
+ name: Feature Request
3
+ about: Suggest a new feature for {{projectCapitalized}}
4
+ title: '[Feature] '
5
+ labels: enhancement
6
+ ---
7
+
8
+ **Is your feature request related to a problem?**
9
+ A clear description of the problem.
10
+
11
+ **Describe the solution you'd like**
12
+ What you want to happen.
13
+
14
+ **Describe alternatives you've considered**
15
+ Other approaches you've thought about.
16
+
17
+ **Additional context**
18
+ Any other context (spec section references, examples, etc.)
@@ -0,0 +1,65 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+ branches: [main]
8
+
9
+ permissions:
10
+ contents: read
11
+
12
+ jobs:
13
+ build-and-test:
14
+ runs-on: ubuntu-latest
15
+ strategy:
16
+ matrix:
17
+ node-version: [20, 22]
18
+
19
+ steps:
20
+ - uses: actions/checkout@v4
21
+
22
+ - name: Install pnpm
23
+ uses: pnpm/action-setup@v4
24
+ with:
25
+ version: 9
26
+
27
+ - name: Use Node.js ${{ matrix.node-version }}
28
+ uses: actions/setup-node@v4
29
+ with:
30
+ node-version: ${{ matrix.node-version }}
31
+ cache: pnpm
32
+
33
+ - name: Install dependencies
34
+ run: pnpm install
35
+
36
+ - name: Lint
37
+ run: pnpm run lint
38
+
39
+ - name: Build core packages
40
+ run: pnpm --filter {{sdkName}} run build && pnpm --filter {{cliName}} run build && pnpm --filter {{docsName}} run build && pnpm --filter {{blogName}} run build && pnpm --filter {{webName}} run build
41
+
42
+ - name: Test
43
+ run: pnpm run test
44
+
45
+ python-sdk:
46
+ runs-on: ubuntu-latest
47
+ strategy:
48
+ matrix:
49
+ python-version: ['3.11', '3.12', '3.13']
50
+
51
+ steps:
52
+ - uses: actions/checkout@v4
53
+
54
+ - name: Set up Python ${{ matrix.python-version }}
55
+ uses: actions/setup-python@v5
56
+ with:
57
+ python-version: ${{ matrix.python-version }}
58
+
59
+ - name: Install Python SDK
60
+ working-directory: packages/python
61
+ run: pip install -e ".[test]"
62
+
63
+ - name: Run Python tests
64
+ working-directory: packages/python
65
+ run: pytest -v