stackone-ai 2.0.0__tar.gz → 2.1.1__tar.gz
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.
- stackone_ai-2.1.1/.claude/rules/nix-workflow.md +84 -0
- stackone_ai-2.1.1/.github/actions/setup-nix/action.yaml +54 -0
- {stackone_ai-2.0.0 → stackone_ai-2.1.1}/.github/dependabot.yaml +2 -14
- {stackone_ai-2.0.0 → stackone_ai-2.1.1}/.github/workflows/ci.yaml +17 -23
- {stackone_ai-2.0.0 → stackone_ai-2.1.1}/.github/workflows/nix-flake-update.yaml +1 -1
- {stackone_ai-2.0.0 → stackone_ai-2.1.1}/.github/workflows/nix-flake.yaml +5 -3
- {stackone_ai-2.0.0 → stackone_ai-2.1.1}/.github/workflows/release.yaml +2 -0
- stackone_ai-2.1.1/.gitmodules +3 -0
- stackone_ai-2.1.1/.release-please-manifest.json +3 -0
- {stackone_ai-2.0.0 → stackone_ai-2.1.1}/CHANGELOG.md +27 -0
- {stackone_ai-2.0.0 → stackone_ai-2.1.1}/CLAUDE.md +1 -0
- {stackone_ai-2.0.0 → stackone_ai-2.1.1}/PKG-INFO +40 -26
- {stackone_ai-2.0.0 → stackone_ai-2.1.1}/README.md +37 -24
- {stackone_ai-2.0.0 → stackone_ai-2.1.1}/flake.lock +20 -20
- {stackone_ai-2.0.0 → stackone_ai-2.1.1}/flake.nix +16 -5
- {stackone_ai-2.0.0 → stackone_ai-2.1.1}/pyproject.toml +8 -6
- {stackone_ai-2.0.0 → stackone_ai-2.1.1}/stackone_ai/__init__.py +1 -1
- {stackone_ai-2.0.0 → stackone_ai-2.1.1}/stackone_ai/integrations/langgraph.py +5 -5
- {stackone_ai-2.0.0 → stackone_ai-2.1.1}/stackone_ai/models.py +3 -3
- stackone_ai-2.1.1/tests/conftest.py +101 -0
- stackone_ai-2.1.1/tests/mocks/serve.ts +134 -0
- stackone_ai-2.0.0/tests/test_toolset_mcp.py → stackone_ai-2.1.1/tests/test_fetch_tools.py +203 -175
- {stackone_ai-2.0.0 → stackone_ai-2.1.1}/uv.lock +669 -106
- stackone_ai-2.1.1/vendor/stackone-ai-node/.claude/rules/development-workflow.md +29 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/.claude/rules/file-operations.md +134 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/.claude/rules/git-workflow.md +97 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/.claude/rules/pnpm-usage.md +54 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/.claude/rules/typescript-patterns.md +246 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/.claude/rules/typescript-testing.md +132 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/.claude/skills/orama-integration/SKILL.md +25 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/.cursor/rules/development-workflow.mdc +1 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/.cursor/rules/file-operations.mdc +1 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/.cursor/rules/git-workflow.mdc +1 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/.cursor/rules/orama-integration.mdc +1 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/.cursor/rules/pnpm-usage.mdc +1 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/.cursor/rules/typescript-patterns.mdc +1 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/.cursor/rules/typescript-testing.mdc +1 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/.envrc +1 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/.git +1 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/.github/CODEOWNERS +6 -0
- {stackone_ai-2.0.0 → stackone_ai-2.1.1/vendor/stackone-ai-node}/.github/actions/setup-nix/action.yaml +4 -4
- stackone_ai-2.1.1/vendor/stackone-ai-node/.github/workflows/check-title.yaml +25 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/.github/workflows/ci.yaml +87 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/.github/workflows/claude.yaml +39 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/.github/workflows/dry-publish.yaml +17 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/.github/workflows/nix-flake.yaml +33 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/.github/workflows/release.yaml +52 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/.gitignore +183 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/.gitleaks.toml +11 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/.mcp.json +12 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/.oxfmtrc.jsonc +7 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/.oxlintrc.jsonc +179 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/AGENTS.md +1 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/CHANGELOG.md +373 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/CLAUDE.md +26 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/LICENSE +201 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/README.md +614 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/examples/README.md +295 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/examples/ai-sdk-integration.test.ts +52 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/examples/ai-sdk-integration.ts +52 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/examples/anthropic-integration.ts +63 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/examples/claude-agent-sdk-integration.test.ts +140 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/examples/claude-agent-sdk-integration.ts +88 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/examples/fetch-tools-debug.ts +297 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/examples/fetch-tools.test.ts +102 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/examples/fetch-tools.ts +82 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/examples/meta-tools.ts +280 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/examples/openai-integration.test.ts +72 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/examples/openai-integration.ts +69 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/examples/openai-responses-integration.test.ts +64 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/examples/openai-responses-integration.ts +63 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/examples/package.json +30 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/examples/tanstack-ai-integration.test.ts +77 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/examples/tanstack-ai-integration.ts +83 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/examples/tsconfig.json +16 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/flake.lock +61 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/flake.nix +49 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/knip.config.ts +21 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/lefthook.yaml +22 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/mocks/handlers.example-api.ts +59 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/mocks/handlers.mcp.ts +35 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/mocks/handlers.openai.ts +214 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/mocks/handlers.stackone-ai.ts +97 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/mocks/handlers.stackone-rpc.ts +85 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/mocks/handlers.ts +13 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/mocks/handlers.utils.ts +30 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/mocks/mcp-server.ts +275 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/mocks/node.ts +4 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/package.json +118 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/pnpm-lock.yaml +4506 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/pnpm-workspace.yaml +66 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/src/consts.ts +20 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/src/feedback.test.ts +300 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/src/feedback.ts +230 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/src/headers.test.ts +69 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/src/headers.ts +46 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/src/index.ts +29 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/src/mcp-client.test.ts +68 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/src/mcp-client.ts +55 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/src/requestBuilder.test.ts +778 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/src/requestBuilder.ts +377 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/src/rpc-client.test.ts +122 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/src/rpc-client.ts +107 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/src/schema.ts +64 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/src/tool.test-d.ts +53 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/src/tool.test.ts +1453 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/src/tool.ts +743 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/src/toolsets.test-d.ts +44 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/src/toolsets.test.ts +712 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/src/toolsets.ts +558 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/src/types.ts +203 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/src/utils/array.test.ts +48 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/src/utils/array.ts +13 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/src/utils/error-stackone-api.test.ts +208 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/src/utils/error-stackone-api.ts +130 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/src/utils/error-stackone.test.ts +15 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/src/utils/error-stackone.ts +9 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/src/utils/tfidf-index.test.ts +206 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/src/utils/tfidf-index.ts +192 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/src/utils/try-import.test.ts +23 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/src/utils/try-import.ts +25 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/src/utils/type.ts +4 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/tsconfig.json +28 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/tsdown.config.ts +20 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/vitest.config.ts +46 -0
- stackone_ai-2.1.1/vendor/stackone-ai-node/vitest.setup.ts +5 -0
- stackone_ai-2.0.0/.release-please-manifest.json +0 -3
- stackone_ai-2.0.0/py.typed +0 -1
- {stackone_ai-2.0.0 → stackone_ai-2.1.1}/.claude/rules/development-workflow.md +0 -0
- {stackone_ai-2.0.0 → stackone_ai-2.1.1}/.claude/rules/examples-standards.md +0 -0
- {stackone_ai-2.0.0 → stackone_ai-2.1.1}/.claude/rules/git-workflow.md +0 -0
- {stackone_ai-2.0.0 → stackone_ai-2.1.1}/.claude/rules/no-relative-imports.md +0 -0
- {stackone_ai-2.0.0 → stackone_ai-2.1.1}/.claude/rules/package-installation.md +0 -0
- {stackone_ai-2.0.0 → stackone_ai-2.1.1}/.claude/rules/release-please-standards.md +0 -0
- {stackone_ai-2.0.0 → stackone_ai-2.1.1}/.claude/rules/uv-scripts.md +0 -0
- {stackone_ai-2.0.0 → stackone_ai-2.1.1}/.cursor/rules/development-workflow.mdc +0 -0
- {stackone_ai-2.0.0 → stackone_ai-2.1.1}/.cursor/rules/examples-standards.mdc +0 -0
- {stackone_ai-2.0.0 → stackone_ai-2.1.1}/.cursor/rules/git-workflow.mdc +0 -0
- {stackone_ai-2.0.0 → stackone_ai-2.1.1}/.cursor/rules/no-relative-imports.mdc +0 -0
- {stackone_ai-2.0.0 → stackone_ai-2.1.1}/.cursor/rules/package-installation.mdc +0 -0
- {stackone_ai-2.0.0 → stackone_ai-2.1.1}/.cursor/rules/release-please-standards.mdc +0 -0
- {stackone_ai-2.0.0 → stackone_ai-2.1.1}/.cursor/rules/uv-scripts.mdc +0 -0
- {stackone_ai-2.0.0 → stackone_ai-2.1.1}/.envrc +0 -0
- {stackone_ai-2.0.0 → stackone_ai-2.1.1}/.gitignore +0 -0
- {stackone_ai-2.0.0 → stackone_ai-2.1.1}/.gitleaks.toml +0 -0
- {stackone_ai-2.0.0 → stackone_ai-2.1.1}/.mcp.json +0 -0
- {stackone_ai-2.0.0 → stackone_ai-2.1.1}/.release-please-config.json +0 -0
- {stackone_ai-2.0.0 → stackone_ai-2.1.1}/LICENSE +0 -0
- {stackone_ai-2.0.0 → stackone_ai-2.1.1}/examples/crewai_integration.py +0 -0
- {stackone_ai-2.0.0 → stackone_ai-2.1.1}/examples/file_uploads.py +0 -0
- {stackone_ai-2.0.0 → stackone_ai-2.1.1}/examples/index.py +0 -0
- {stackone_ai-2.0.0 → stackone_ai-2.1.1}/examples/langchain_integration.py +0 -0
- {stackone_ai-2.0.0 → stackone_ai-2.1.1}/examples/meta_tools_example.py +0 -0
- {stackone_ai-2.0.0 → stackone_ai-2.1.1}/examples/openai_integration.py +0 -0
- {stackone_ai-2.0.0 → stackone_ai-2.1.1}/examples/stackone_account_ids.py +0 -0
- {stackone_ai-2.0.0 → stackone_ai-2.1.1}/examples/test_examples.py +0 -0
- {stackone_ai-2.0.0 → stackone_ai-2.1.1}/justfile +0 -0
- {stackone_ai-2.0.0 → stackone_ai-2.1.1}/scripts/update_version.py +0 -0
- {stackone_ai-2.0.0 → stackone_ai-2.1.1}/stackone_ai/constants.py +0 -0
- {stackone_ai-2.0.0 → stackone_ai-2.1.1}/stackone_ai/feedback/__init__.py +0 -0
- {stackone_ai-2.0.0 → stackone_ai-2.1.1}/stackone_ai/feedback/tool.py +0 -0
- {stackone_ai-2.0.0 → stackone_ai-2.1.1}/stackone_ai/integrations/__init__.py +0 -0
- {stackone_ai-2.0.0 → stackone_ai-2.1.1}/stackone_ai/meta_tools.py +0 -0
- {stackone_ai-2.0.0 → stackone_ai-2.1.1}/stackone_ai/py.typed +0 -0
- {stackone_ai-2.0.0 → stackone_ai-2.1.1}/stackone_ai/toolset.py +0 -0
- {stackone_ai-2.0.0 → stackone_ai-2.1.1}/stackone_ai/utils/__init__.py +0 -0
- {stackone_ai-2.0.0 → stackone_ai-2.1.1}/stackone_ai/utils/tfidf_index.py +0 -0
- {stackone_ai-2.0.0 → stackone_ai-2.1.1}/tests/test_feedback.py +0 -0
- {stackone_ai-2.0.0 → stackone_ai-2.1.1}/tests/test_integrations_langgraph.py +0 -0
- {stackone_ai-2.0.0 → stackone_ai-2.1.1}/tests/test_meta_tools.py +0 -0
- {stackone_ai-2.0.0 → stackone_ai-2.1.1}/tests/test_models.py +0 -0
- {stackone_ai-2.0.0 → stackone_ai-2.1.1}/tests/test_tfidf_index.py +0 -0
- {stackone_ai-2.0.0 → stackone_ai-2.1.1}/tests/test_tool_calling.py +0 -0
- {stackone_ai-2.0.0 → stackone_ai-2.1.1}/tests/test_toolset.py +0 -0
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
# Nix Workflow
|
|
2
|
+
|
|
3
|
+
This rule provides guidance on Nix usage in the StackOne AI Python SDK.
|
|
4
|
+
|
|
5
|
+
## Development Environment
|
|
6
|
+
|
|
7
|
+
The project uses `flake.nix` with flake-parts to define the development environment. Enter it with `nix develop`.
|
|
8
|
+
|
|
9
|
+
### Adding Development Tools
|
|
10
|
+
|
|
11
|
+
To add a new tool to the development environment, add it to `buildInputs` in `flake.nix`:
|
|
12
|
+
|
|
13
|
+
```nix
|
|
14
|
+
devShells.default = pkgs.mkShellNoCC {
|
|
15
|
+
buildInputs = with pkgs; [
|
|
16
|
+
uv
|
|
17
|
+
ty
|
|
18
|
+
just
|
|
19
|
+
nixfmt-rfc-style
|
|
20
|
+
|
|
21
|
+
# your new tool here
|
|
22
|
+
new-tool
|
|
23
|
+
];
|
|
24
|
+
};
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
### Treefmt and Git Hooks
|
|
28
|
+
|
|
29
|
+
The flake includes:
|
|
30
|
+
|
|
31
|
+
- **treefmt-nix**: Unified formatting (nixfmt, ruff, oxfmt)
|
|
32
|
+
- **git-hooks.nix**: Pre-commit hooks (gitleaks, treefmt, ty)
|
|
33
|
+
|
|
34
|
+
These are automatically installed when entering the dev shell.
|
|
35
|
+
|
|
36
|
+
## CI Workflow
|
|
37
|
+
|
|
38
|
+
CI uses `nix profile install` via the `.github/actions/setup-nix/action.yaml` composite action.
|
|
39
|
+
|
|
40
|
+
### Adding Tools to CI Jobs
|
|
41
|
+
|
|
42
|
+
Specify tools in the `tools` input of the setup-nix action:
|
|
43
|
+
|
|
44
|
+
```yaml
|
|
45
|
+
- name: Setup Nix
|
|
46
|
+
uses: ./.github/actions/setup-nix
|
|
47
|
+
with:
|
|
48
|
+
tools: uv ty just bun pnpm_10
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
The action installs packages using:
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
nix profile install --inputs-from . nixpkgs#tool1 nixpkgs#tool2
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### CI Tool Configuration
|
|
58
|
+
|
|
59
|
+
- **Default tools**: `uv ty just` (defined in action.yaml)
|
|
60
|
+
- **Skip uv sync**: Set `skip-uv-sync: 'true'` for jobs that don't need Python dependencies
|
|
61
|
+
|
|
62
|
+
### Example: Adding a New Tool to CI Job
|
|
63
|
+
|
|
64
|
+
```yaml
|
|
65
|
+
ci:
|
|
66
|
+
runs-on: ubuntu-latest
|
|
67
|
+
steps:
|
|
68
|
+
- name: Checkout repository
|
|
69
|
+
uses: actions/checkout@v4
|
|
70
|
+
with:
|
|
71
|
+
submodules: true
|
|
72
|
+
- name: Setup Nix
|
|
73
|
+
uses: ./.github/actions/setup-nix
|
|
74
|
+
with:
|
|
75
|
+
tools: uv ty just new-tool
|
|
76
|
+
- name: Run Lint
|
|
77
|
+
run: just lint
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## Notes
|
|
81
|
+
|
|
82
|
+
- The project uses flake-parts for modular flake configuration
|
|
83
|
+
- Git submodules are initialised automatically in dev shell and CI
|
|
84
|
+
- MCP mock server dependencies (pnpm) are installed for testing
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
name: "Setup Nix"
|
|
2
|
+
description: "Install Nix and configure cache"
|
|
3
|
+
inputs:
|
|
4
|
+
tools:
|
|
5
|
+
description: 'Space-separated list of nixpkgs packages to install (e.g., "uv ty just")'
|
|
6
|
+
required: false
|
|
7
|
+
default: "uv ty just"
|
|
8
|
+
skip-uv-sync:
|
|
9
|
+
description: "Skip uv sync step (useful for jobs that do not need Python dependencies)"
|
|
10
|
+
required: false
|
|
11
|
+
default: "false"
|
|
12
|
+
skip-mock-server:
|
|
13
|
+
description: "Skip MCP mock server dependencies installation (useful for jobs that do not run tests)"
|
|
14
|
+
required: false
|
|
15
|
+
default: "false"
|
|
16
|
+
runs:
|
|
17
|
+
using: "composite"
|
|
18
|
+
steps:
|
|
19
|
+
- name: Install Nix
|
|
20
|
+
uses: cachix/install-nix-action@0b0e072294b088b73964f1d72dfdac0951439dbd # v31.8.4
|
|
21
|
+
with:
|
|
22
|
+
github_access_token: ${{ github.token }}
|
|
23
|
+
|
|
24
|
+
- name: Install tools from nixpkgs
|
|
25
|
+
shell: bash
|
|
26
|
+
run: |
|
|
27
|
+
tools="${{ inputs.tools }}"
|
|
28
|
+
packages=""
|
|
29
|
+
for tool in $tools; do
|
|
30
|
+
packages="$packages nixpkgs#$tool"
|
|
31
|
+
done
|
|
32
|
+
nix profile install --inputs-from . $packages
|
|
33
|
+
|
|
34
|
+
- name: Initialise git submodules
|
|
35
|
+
if: inputs.skip-uv-sync != 'true'
|
|
36
|
+
shell: bash
|
|
37
|
+
run: |
|
|
38
|
+
# Only initialise if submodules exist but are not yet checked out
|
|
39
|
+
if [ -f .gitmodules ] && [ ! -f vendor/stackone-ai-node/package.json ]; then
|
|
40
|
+
git submodule update --init --recursive
|
|
41
|
+
fi
|
|
42
|
+
|
|
43
|
+
- name: Install Python dependencies
|
|
44
|
+
if: inputs.skip-uv-sync != 'true'
|
|
45
|
+
shell: bash
|
|
46
|
+
run: uv sync --all-extras
|
|
47
|
+
|
|
48
|
+
- name: Install MCP mock server dependencies
|
|
49
|
+
if: inputs.skip-uv-sync != 'true' && inputs.skip-mock-server != 'true'
|
|
50
|
+
shell: bash
|
|
51
|
+
run: |
|
|
52
|
+
if [ -f vendor/stackone-ai-node/package.json ]; then
|
|
53
|
+
cd vendor/stackone-ai-node && pnpm install --frozen-lockfile
|
|
54
|
+
fi
|
|
@@ -16,21 +16,9 @@ updates:
|
|
|
16
16
|
- dependencies
|
|
17
17
|
- python
|
|
18
18
|
groups:
|
|
19
|
-
|
|
19
|
+
python-minor-patch:
|
|
20
20
|
patterns:
|
|
21
|
-
- "
|
|
22
|
-
- "ruff"
|
|
23
|
-
- "ty"
|
|
24
|
-
- "pre-commit"
|
|
25
|
-
update-types:
|
|
26
|
-
- minor
|
|
27
|
-
- patch
|
|
28
|
-
ai-frameworks:
|
|
29
|
-
patterns:
|
|
30
|
-
- "openai*"
|
|
31
|
-
- "langchain*"
|
|
32
|
-
- "crewai*"
|
|
33
|
-
- "mcp*"
|
|
21
|
+
- "*"
|
|
34
22
|
update-types:
|
|
35
23
|
- minor
|
|
36
24
|
- patch
|
|
@@ -26,60 +26,54 @@ jobs:
|
|
|
26
26
|
|
|
27
27
|
- name: Setup Nix
|
|
28
28
|
uses: ./.github/actions/setup-nix
|
|
29
|
+
with:
|
|
30
|
+
tools: gitleaks
|
|
31
|
+
skip-uv-sync: "true"
|
|
29
32
|
|
|
30
33
|
- name: Run Gitleaks
|
|
31
|
-
run:
|
|
34
|
+
run: gitleaks detect --source . --config .gitleaks.toml
|
|
32
35
|
|
|
33
36
|
ci:
|
|
34
37
|
runs-on: ubuntu-latest
|
|
35
38
|
strategy:
|
|
36
39
|
matrix:
|
|
37
|
-
python-version: ["3.11", "3.13"]
|
|
38
|
-
include:
|
|
39
|
-
- python-version: "3.11"
|
|
40
|
-
sync-extras: "--all-extras"
|
|
41
|
-
- python-version: "3.13"
|
|
42
|
-
sync-extras: "--all-extras"
|
|
43
|
-
env:
|
|
44
|
-
STACKONE_API_KEY: ${{ secrets.STACKONE_API_KEY }}
|
|
45
|
-
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
|
|
40
|
+
python-version: ["3.10", "3.11", "3.12", "3.13"]
|
|
46
41
|
steps:
|
|
47
42
|
- name: Checkout repository
|
|
48
43
|
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
|
44
|
+
with:
|
|
45
|
+
submodules: true
|
|
49
46
|
|
|
50
47
|
- name: Setup Nix
|
|
51
48
|
uses: ./.github/actions/setup-nix
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
run: nix develop --command just install ${{ matrix.sync-extras }}
|
|
49
|
+
with:
|
|
50
|
+
tools: uv ty just bun pnpm_10 typescript-go
|
|
55
51
|
|
|
56
52
|
- name: Run Lint
|
|
57
|
-
run:
|
|
53
|
+
run: just lint
|
|
58
54
|
|
|
59
55
|
- name: Run Ty
|
|
60
|
-
run:
|
|
56
|
+
run: just ty
|
|
61
57
|
|
|
62
58
|
- name: Run Tests
|
|
63
|
-
run:
|
|
59
|
+
run: just test
|
|
64
60
|
|
|
65
61
|
coverage:
|
|
66
62
|
runs-on: ubuntu-latest
|
|
67
63
|
if: github.ref == 'refs/heads/main'
|
|
68
|
-
env:
|
|
69
|
-
STACKONE_API_KEY: ${{ secrets.STACKONE_API_KEY }}
|
|
70
|
-
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
|
|
71
64
|
steps:
|
|
72
65
|
- name: Checkout repository
|
|
73
66
|
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
|
67
|
+
with:
|
|
68
|
+
submodules: true
|
|
74
69
|
|
|
75
70
|
- name: Setup Nix
|
|
76
71
|
uses: ./.github/actions/setup-nix
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
run: nix develop --command just install --all-extras
|
|
72
|
+
with:
|
|
73
|
+
tools: uv just bun pnpm_10 typescript-go
|
|
80
74
|
|
|
81
75
|
- name: Run Tests with Coverage
|
|
82
|
-
run:
|
|
76
|
+
run: just coverage
|
|
83
77
|
|
|
84
78
|
- name: Create Coverage Badge
|
|
85
79
|
uses: jaywcjlove/coverage-badges-cli@4e8975aa2628e3329126e7eee36724d07ed86fda # v2.2.0
|
|
@@ -35,7 +35,7 @@ jobs:
|
|
|
35
35
|
- name: Create Pull Request
|
|
36
36
|
id: create-pr
|
|
37
37
|
if: steps.check-changes.outputs.changed == 'true'
|
|
38
|
-
uses: peter-evans/create-pull-request@
|
|
38
|
+
uses: peter-evans/create-pull-request@c0f553fe549906ede9cf27b5156039d195d2ece0 # v8.1.0
|
|
39
39
|
with:
|
|
40
40
|
token: ${{ secrets.GITHUB_TOKEN }}
|
|
41
41
|
commit-message: "chore(deps): update nix flake inputs"
|
|
@@ -26,8 +26,10 @@ jobs:
|
|
|
26
26
|
- name: Checkout repository
|
|
27
27
|
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
|
28
28
|
|
|
29
|
-
- name:
|
|
30
|
-
uses:
|
|
29
|
+
- name: Install Nix
|
|
30
|
+
uses: cachix/install-nix-action@4e002c8ec80594ecd40e759629461e26c8abed15 # v31.9.0
|
|
31
|
+
with:
|
|
32
|
+
github_access_token: ${{ github.token }}
|
|
31
33
|
|
|
32
34
|
- name: Check flake
|
|
33
|
-
run: nix flake check --all-systems --show-trace
|
|
35
|
+
run: nix flake check --all-systems --print-build-logs --show-trace
|
|
@@ -1,5 +1,32 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [2.1.1](https://github.com/StackOneHQ/stackone-ai-python/compare/stackone-ai-v2.1.0...stackone-ai-v2.1.1) (2026-01-22)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Bug Fixes
|
|
7
|
+
|
|
8
|
+
* **ci:** skip mock server install in release workflow [ENG-11910] ([#111](https://github.com/StackOneHQ/stackone-ai-python/issues/111)) ([377d766](https://github.com/StackOneHQ/stackone-ai-python/commit/377d766a276b444e84fee5af95f3d56db7e0b89b))
|
|
9
|
+
|
|
10
|
+
## [2.1.0](https://github.com/StackOneHQ/stackone-ai-python/compare/stackone-ai-v2.0.0...stackone-ai-v2.1.0) (2026-01-22)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
### Features
|
|
14
|
+
|
|
15
|
+
* **nix:** integrate uv2nix for Python dependency management ([#88](https://github.com/StackOneHQ/stackone-ai-python/issues/88)) ([ee67062](https://github.com/StackOneHQ/stackone-ai-python/commit/ee67062d1a6628c9b549f2ad69c0c1d7bdde6d97))
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
### Bug Fixes
|
|
19
|
+
|
|
20
|
+
* **ci:** add submodules checkout to coverage job ([#85](https://github.com/StackOneHQ/stackone-ai-python/issues/85)) ([4cf907a](https://github.com/StackOneHQ/stackone-ai-python/commit/4cf907a49ac288f368ebbfa3a5dc59a0194bf54a))
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
### Documentation
|
|
24
|
+
|
|
25
|
+
* deepwiki badge ([#97](https://github.com/StackOneHQ/stackone-ai-python/issues/97)) ([d8b0234](https://github.com/StackOneHQ/stackone-ai-python/commit/d8b02346b6a77377b7c0356e636edcf2eac47096))
|
|
26
|
+
* **readme:** improve Nix development environment setup instructions ([#94](https://github.com/StackOneHQ/stackone-ai-python/issues/94)) ([2d6f6c2](https://github.com/StackOneHQ/stackone-ai-python/commit/2d6f6c224d1119a5a0254934ff542a0572f44c06))
|
|
27
|
+
* **readme:** reorganise installation section ([#72](https://github.com/StackOneHQ/stackone-ai-python/issues/72)) ([3cde479](https://github.com/StackOneHQ/stackone-ai-python/commit/3cde4794739e95479409396adc3b6e3b01eb3d33))
|
|
28
|
+
* **rules:** add nix-workflow rule ([#106](https://github.com/StackOneHQ/stackone-ai-python/issues/106)) ([b10c164](https://github.com/StackOneHQ/stackone-ai-python/commit/b10c164142ede3ce37b96a27b0e73452d6de50e6))
|
|
29
|
+
|
|
3
30
|
## [2.0.0](https://github.com/StackOneHQ/stackone-ai-python/compare/stackone-ai-v0.3.4...stackone-ai-v2.0.0) (2025-12-29)
|
|
4
31
|
|
|
5
32
|
|
|
@@ -15,6 +15,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
|
|
|
15
15
|
| **git-workflow** | All files | Commit conventions, branch strategy, PR guidelines |
|
|
16
16
|
| **development-workflow** | All files | Code style, file naming, project conventions |
|
|
17
17
|
| **release-please-standards** | All files | Release versioning with release-please |
|
|
18
|
+
| **nix-workflow** | All files | Nix development environment and CI configuration |
|
|
18
19
|
| **no-relative-imports** | `**/*.py` | Enforce absolute imports in Python files |
|
|
19
20
|
| **package-installation** | `**/pyproject.toml` | UV package management standards |
|
|
20
21
|
| **uv-scripts** | `scripts/**/*.py` | Utility script standards with UV |
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: stackone-ai
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.1.1
|
|
4
4
|
Summary: agents performing actions on your SaaS
|
|
5
5
|
Author-email: StackOne <support@stackone.com>
|
|
6
6
|
License-File: LICENSE
|
|
@@ -8,11 +8,12 @@ Classifier: Development Status :: 4 - Beta
|
|
|
8
8
|
Classifier: Intended Audience :: Developers
|
|
9
9
|
Classifier: License :: OSI Approved :: MIT License
|
|
10
10
|
Classifier: Programming Language :: Python :: 3
|
|
11
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
11
12
|
Classifier: Programming Language :: Python :: 3.11
|
|
12
13
|
Classifier: Programming Language :: Python :: 3.12
|
|
13
14
|
Classifier: Programming Language :: Python :: 3.13
|
|
14
15
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
15
|
-
Requires-Python: >=3.
|
|
16
|
+
Requires-Python: >=3.10
|
|
16
17
|
Requires-Dist: bm25s>=0.2.2
|
|
17
18
|
Requires-Dist: httpx>=0.28.0
|
|
18
19
|
Requires-Dist: langchain-core>=0.1.0
|
|
@@ -34,6 +35,9 @@ Description-Content-Type: text/markdown
|
|
|
34
35
|
[](https://badge.fury.io/py/stackone-ai)
|
|
35
36
|
[](https://github.com/StackOneHQ/stackone-ai-python/releases)
|
|
36
37
|
[](https://stackonehq.github.io/stackone-ai-python/html/)
|
|
38
|
+
[](https://deepwiki.com/StackOneHQ/stackone-ai-python)
|
|
39
|
+
|
|
40
|
+
<!-- DeepWiki badge generated by https://deepwiki.ryoppippi.com/ -->
|
|
37
41
|
|
|
38
42
|
StackOne AI provides a unified interface for accessing various SaaS tools through AI-friendly APIs.
|
|
39
43
|
|
|
@@ -60,30 +64,6 @@ StackOne AI provides a unified interface for accessing various SaaS tools throug
|
|
|
60
64
|
|
|
61
65
|
## Installation
|
|
62
66
|
|
|
63
|
-
### Using Nix (Recommended for Development)
|
|
64
|
-
|
|
65
|
-
If you have [Nix](https://nixos.org/) installed with flakes enabled:
|
|
66
|
-
|
|
67
|
-
```bash
|
|
68
|
-
# Enter development environment (auto-installs dependencies and git hooks)
|
|
69
|
-
nix develop
|
|
70
|
-
|
|
71
|
-
# Format code
|
|
72
|
-
nix fmt
|
|
73
|
-
|
|
74
|
-
# Run checks
|
|
75
|
-
nix flake check
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
The Nix development environment includes:
|
|
79
|
-
|
|
80
|
-
- Python with uv package manager
|
|
81
|
-
- Automatic dependency installation
|
|
82
|
-
- Git hooks (treefmt + ty) auto-configured
|
|
83
|
-
- Consistent environment across all platforms
|
|
84
|
-
|
|
85
|
-
### Using pip/uv
|
|
86
|
-
|
|
87
67
|
```bash
|
|
88
68
|
pip install 'stackone-ai[mcp]'
|
|
89
69
|
|
|
@@ -388,6 +368,40 @@ For more examples, check out the [examples/](examples/) directory:
|
|
|
388
368
|
- [CrewAI Integration](examples/crewai_integration.py)
|
|
389
369
|
- [Meta Tools](examples/meta_tools_example.py)
|
|
390
370
|
|
|
371
|
+
## Development
|
|
372
|
+
|
|
373
|
+
### Using Nix (Recommended)
|
|
374
|
+
|
|
375
|
+
This project includes a Nix flake for reproducible development environments. All development tools are defined in [flake.nix](./flake.nix) and provided via Nix.
|
|
376
|
+
|
|
377
|
+
#### Installing Nix
|
|
378
|
+
|
|
379
|
+
```bash
|
|
380
|
+
# Install Nix with flakes enabled (if not already installed)
|
|
381
|
+
curl --proto '=https' --tlsv1.2 -sSf -L https://artifacts.nixos.org/experimental-installer | \
|
|
382
|
+
sh -s -- install
|
|
383
|
+
|
|
384
|
+
# If flakes are not enabled, enable them with:
|
|
385
|
+
mkdir -p ~/.config/nix && echo "experimental-features = nix-command flakes" >> ~/.config/nix/nix.conf
|
|
386
|
+
```
|
|
387
|
+
|
|
388
|
+
#### Activating the Development Environment
|
|
389
|
+
|
|
390
|
+
```bash
|
|
391
|
+
# Automatic activation with direnv (recommended)
|
|
392
|
+
direnv allow
|
|
393
|
+
|
|
394
|
+
# Or manual activation
|
|
395
|
+
nix develop
|
|
396
|
+
```
|
|
397
|
+
|
|
398
|
+
The Nix development environment includes:
|
|
399
|
+
|
|
400
|
+
- Python with uv package manager
|
|
401
|
+
- Automatic dependency installation
|
|
402
|
+
- Git hooks (treefmt + ty) auto-configured
|
|
403
|
+
- Consistent environment across all platforms
|
|
404
|
+
|
|
391
405
|
## License
|
|
392
406
|
|
|
393
407
|
Apache 2.0 License
|
|
@@ -3,6 +3,9 @@
|
|
|
3
3
|
[](https://badge.fury.io/py/stackone-ai)
|
|
4
4
|
[](https://github.com/StackOneHQ/stackone-ai-python/releases)
|
|
5
5
|
[](https://stackonehq.github.io/stackone-ai-python/html/)
|
|
6
|
+
[](https://deepwiki.com/StackOneHQ/stackone-ai-python)
|
|
7
|
+
|
|
8
|
+
<!-- DeepWiki badge generated by https://deepwiki.ryoppippi.com/ -->
|
|
6
9
|
|
|
7
10
|
StackOne AI provides a unified interface for accessing various SaaS tools through AI-friendly APIs.
|
|
8
11
|
|
|
@@ -29,30 +32,6 @@ StackOne AI provides a unified interface for accessing various SaaS tools throug
|
|
|
29
32
|
|
|
30
33
|
## Installation
|
|
31
34
|
|
|
32
|
-
### Using Nix (Recommended for Development)
|
|
33
|
-
|
|
34
|
-
If you have [Nix](https://nixos.org/) installed with flakes enabled:
|
|
35
|
-
|
|
36
|
-
```bash
|
|
37
|
-
# Enter development environment (auto-installs dependencies and git hooks)
|
|
38
|
-
nix develop
|
|
39
|
-
|
|
40
|
-
# Format code
|
|
41
|
-
nix fmt
|
|
42
|
-
|
|
43
|
-
# Run checks
|
|
44
|
-
nix flake check
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
The Nix development environment includes:
|
|
48
|
-
|
|
49
|
-
- Python with uv package manager
|
|
50
|
-
- Automatic dependency installation
|
|
51
|
-
- Git hooks (treefmt + ty) auto-configured
|
|
52
|
-
- Consistent environment across all platforms
|
|
53
|
-
|
|
54
|
-
### Using pip/uv
|
|
55
|
-
|
|
56
35
|
```bash
|
|
57
36
|
pip install 'stackone-ai[mcp]'
|
|
58
37
|
|
|
@@ -357,6 +336,40 @@ For more examples, check out the [examples/](examples/) directory:
|
|
|
357
336
|
- [CrewAI Integration](examples/crewai_integration.py)
|
|
358
337
|
- [Meta Tools](examples/meta_tools_example.py)
|
|
359
338
|
|
|
339
|
+
## Development
|
|
340
|
+
|
|
341
|
+
### Using Nix (Recommended)
|
|
342
|
+
|
|
343
|
+
This project includes a Nix flake for reproducible development environments. All development tools are defined in [flake.nix](./flake.nix) and provided via Nix.
|
|
344
|
+
|
|
345
|
+
#### Installing Nix
|
|
346
|
+
|
|
347
|
+
```bash
|
|
348
|
+
# Install Nix with flakes enabled (if not already installed)
|
|
349
|
+
curl --proto '=https' --tlsv1.2 -sSf -L https://artifacts.nixos.org/experimental-installer | \
|
|
350
|
+
sh -s -- install
|
|
351
|
+
|
|
352
|
+
# If flakes are not enabled, enable them with:
|
|
353
|
+
mkdir -p ~/.config/nix && echo "experimental-features = nix-command flakes" >> ~/.config/nix/nix.conf
|
|
354
|
+
```
|
|
355
|
+
|
|
356
|
+
#### Activating the Development Environment
|
|
357
|
+
|
|
358
|
+
```bash
|
|
359
|
+
# Automatic activation with direnv (recommended)
|
|
360
|
+
direnv allow
|
|
361
|
+
|
|
362
|
+
# Or manual activation
|
|
363
|
+
nix develop
|
|
364
|
+
```
|
|
365
|
+
|
|
366
|
+
The Nix development environment includes:
|
|
367
|
+
|
|
368
|
+
- Python with uv package manager
|
|
369
|
+
- Automatic dependency installation
|
|
370
|
+
- Git hooks (treefmt + ty) auto-configured
|
|
371
|
+
- Consistent environment across all platforms
|
|
372
|
+
|
|
360
373
|
## License
|
|
361
374
|
|
|
362
375
|
Apache 2.0 License
|
|
@@ -3,15 +3,15 @@
|
|
|
3
3
|
"flake-compat": {
|
|
4
4
|
"flake": false,
|
|
5
5
|
"locked": {
|
|
6
|
-
"lastModified":
|
|
7
|
-
"narHash": "sha256-
|
|
8
|
-
"owner": "
|
|
6
|
+
"lastModified": 1767039857,
|
|
7
|
+
"narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=",
|
|
8
|
+
"owner": "NixOS",
|
|
9
9
|
"repo": "flake-compat",
|
|
10
|
-
"rev": "
|
|
10
|
+
"rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab",
|
|
11
11
|
"type": "github"
|
|
12
12
|
},
|
|
13
13
|
"original": {
|
|
14
|
-
"owner": "
|
|
14
|
+
"owner": "NixOS",
|
|
15
15
|
"repo": "flake-compat",
|
|
16
16
|
"type": "github"
|
|
17
17
|
}
|
|
@@ -21,11 +21,11 @@
|
|
|
21
21
|
"nixpkgs-lib": "nixpkgs-lib"
|
|
22
22
|
},
|
|
23
23
|
"locked": {
|
|
24
|
-
"lastModified":
|
|
25
|
-
"narHash": "sha256-
|
|
24
|
+
"lastModified": 1768135262,
|
|
25
|
+
"narHash": "sha256-PVvu7OqHBGWN16zSi6tEmPwwHQ4rLPU9Plvs8/1TUBY=",
|
|
26
26
|
"owner": "hercules-ci",
|
|
27
27
|
"repo": "flake-parts",
|
|
28
|
-
"rev": "
|
|
28
|
+
"rev": "80daad04eddbbf5a4d883996a73f3f542fa437ac",
|
|
29
29
|
"type": "github"
|
|
30
30
|
},
|
|
31
31
|
"original": {
|
|
@@ -41,11 +41,11 @@
|
|
|
41
41
|
"nixpkgs": "nixpkgs"
|
|
42
42
|
},
|
|
43
43
|
"locked": {
|
|
44
|
-
"lastModified":
|
|
45
|
-
"narHash": "sha256-
|
|
44
|
+
"lastModified": 1767281941,
|
|
45
|
+
"narHash": "sha256-6MkqajPICgugsuZ92OMoQcgSHnD6sJHwk8AxvMcIgTE=",
|
|
46
46
|
"owner": "cachix",
|
|
47
47
|
"repo": "git-hooks.nix",
|
|
48
|
-
"rev": "
|
|
48
|
+
"rev": "f0927703b7b1c8d97511c4116eb9b4ec6645a0fa",
|
|
49
49
|
"type": "github"
|
|
50
50
|
},
|
|
51
51
|
"original": {
|
|
@@ -108,11 +108,11 @@
|
|
|
108
108
|
},
|
|
109
109
|
"nixpkgs_2": {
|
|
110
110
|
"locked": {
|
|
111
|
-
"lastModified":
|
|
112
|
-
"narHash": "sha256-
|
|
111
|
+
"lastModified": 1768149890,
|
|
112
|
+
"narHash": "sha256-iihg1oHkVkYHD1pFQifGEP+Rw1g+LZQyDNbtAqpXtNM=",
|
|
113
113
|
"owner": "NixOS",
|
|
114
114
|
"repo": "nixpkgs",
|
|
115
|
-
"rev": "
|
|
115
|
+
"rev": "4d113fe1f7bb454435a5cabae6cd283e64191bb7",
|
|
116
116
|
"type": "github"
|
|
117
117
|
},
|
|
118
118
|
"original": {
|
|
@@ -124,11 +124,11 @@
|
|
|
124
124
|
},
|
|
125
125
|
"nixpkgs_3": {
|
|
126
126
|
"locked": {
|
|
127
|
-
"lastModified":
|
|
128
|
-
"narHash": "sha256
|
|
127
|
+
"lastModified": 1767364772,
|
|
128
|
+
"narHash": "sha256-fFUnEYMla8b7UKjijLnMe+oVFOz6HjijGGNS1l7dYaQ=",
|
|
129
129
|
"owner": "nixos",
|
|
130
130
|
"repo": "nixpkgs",
|
|
131
|
-
"rev": "
|
|
131
|
+
"rev": "16c7794d0a28b5a37904d55bcca36003b9109aaa",
|
|
132
132
|
"type": "github"
|
|
133
133
|
},
|
|
134
134
|
"original": {
|
|
@@ -151,11 +151,11 @@
|
|
|
151
151
|
"nixpkgs": "nixpkgs_3"
|
|
152
152
|
},
|
|
153
153
|
"locked": {
|
|
154
|
-
"lastModified":
|
|
155
|
-
"narHash": "sha256
|
|
154
|
+
"lastModified": 1768158989,
|
|
155
|
+
"narHash": "sha256-67vyT1+xClLldnumAzCTBvU0jLZ1YBcf4vANRWP3+Ak=",
|
|
156
156
|
"owner": "numtide",
|
|
157
157
|
"repo": "treefmt-nix",
|
|
158
|
-
"rev": "
|
|
158
|
+
"rev": "e96d59dff5c0d7fddb9d113ba108f03c3ef99eca",
|
|
159
159
|
"type": "github"
|
|
160
160
|
},
|
|
161
161
|
"original": {
|
|
@@ -81,7 +81,7 @@
|
|
|
81
81
|
ty = {
|
|
82
82
|
enable = true;
|
|
83
83
|
name = "ty";
|
|
84
|
-
entry = "${pkgs.
|
|
84
|
+
entry = "${pkgs.ty}/bin/ty check";
|
|
85
85
|
files = "^stackone_ai/";
|
|
86
86
|
language = "system";
|
|
87
87
|
types = [ "python" ];
|
|
@@ -89,23 +89,34 @@
|
|
|
89
89
|
};
|
|
90
90
|
};
|
|
91
91
|
|
|
92
|
-
devShells.default = pkgs.
|
|
92
|
+
devShells.default = pkgs.mkShellNoCC {
|
|
93
93
|
buildInputs = with pkgs; [
|
|
94
94
|
uv
|
|
95
|
+
ty
|
|
95
96
|
just
|
|
96
97
|
nixfmt-rfc-style
|
|
97
|
-
basedpyright
|
|
98
98
|
|
|
99
99
|
# security
|
|
100
100
|
gitleaks
|
|
101
|
+
|
|
102
|
+
# Node.js for MCP mock server
|
|
103
|
+
bun
|
|
104
|
+
pnpm_10
|
|
105
|
+
typescript-go
|
|
101
106
|
];
|
|
102
107
|
|
|
103
108
|
shellHook = ''
|
|
104
109
|
echo "StackOne AI Python SDK development environment"
|
|
105
110
|
|
|
106
|
-
#
|
|
111
|
+
# Initialize git submodules if not already done
|
|
112
|
+
if [ -f .gitmodules ] && [ ! -f vendor/stackone-ai-node/package.json ]; then
|
|
113
|
+
echo "📦 Initializing git submodules..."
|
|
114
|
+
git submodule update --init --recursive
|
|
115
|
+
fi
|
|
116
|
+
|
|
117
|
+
# Install Python dependencies only if .venv is missing or uv.lock is newer
|
|
107
118
|
if [ ! -d .venv ] || [ uv.lock -nt .venv ]; then
|
|
108
|
-
echo "📦 Installing dependencies..."
|
|
119
|
+
echo "📦 Installing Python dependencies..."
|
|
109
120
|
uv sync --all-extras
|
|
110
121
|
fi
|
|
111
122
|
|