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.
Files changed (174) hide show
  1. stackone_ai-2.1.1/.claude/rules/nix-workflow.md +84 -0
  2. stackone_ai-2.1.1/.github/actions/setup-nix/action.yaml +54 -0
  3. {stackone_ai-2.0.0 → stackone_ai-2.1.1}/.github/dependabot.yaml +2 -14
  4. {stackone_ai-2.0.0 → stackone_ai-2.1.1}/.github/workflows/ci.yaml +17 -23
  5. {stackone_ai-2.0.0 → stackone_ai-2.1.1}/.github/workflows/nix-flake-update.yaml +1 -1
  6. {stackone_ai-2.0.0 → stackone_ai-2.1.1}/.github/workflows/nix-flake.yaml +5 -3
  7. {stackone_ai-2.0.0 → stackone_ai-2.1.1}/.github/workflows/release.yaml +2 -0
  8. stackone_ai-2.1.1/.gitmodules +3 -0
  9. stackone_ai-2.1.1/.release-please-manifest.json +3 -0
  10. {stackone_ai-2.0.0 → stackone_ai-2.1.1}/CHANGELOG.md +27 -0
  11. {stackone_ai-2.0.0 → stackone_ai-2.1.1}/CLAUDE.md +1 -0
  12. {stackone_ai-2.0.0 → stackone_ai-2.1.1}/PKG-INFO +40 -26
  13. {stackone_ai-2.0.0 → stackone_ai-2.1.1}/README.md +37 -24
  14. {stackone_ai-2.0.0 → stackone_ai-2.1.1}/flake.lock +20 -20
  15. {stackone_ai-2.0.0 → stackone_ai-2.1.1}/flake.nix +16 -5
  16. {stackone_ai-2.0.0 → stackone_ai-2.1.1}/pyproject.toml +8 -6
  17. {stackone_ai-2.0.0 → stackone_ai-2.1.1}/stackone_ai/__init__.py +1 -1
  18. {stackone_ai-2.0.0 → stackone_ai-2.1.1}/stackone_ai/integrations/langgraph.py +5 -5
  19. {stackone_ai-2.0.0 → stackone_ai-2.1.1}/stackone_ai/models.py +3 -3
  20. stackone_ai-2.1.1/tests/conftest.py +101 -0
  21. stackone_ai-2.1.1/tests/mocks/serve.ts +134 -0
  22. stackone_ai-2.0.0/tests/test_toolset_mcp.py → stackone_ai-2.1.1/tests/test_fetch_tools.py +203 -175
  23. {stackone_ai-2.0.0 → stackone_ai-2.1.1}/uv.lock +669 -106
  24. stackone_ai-2.1.1/vendor/stackone-ai-node/.claude/rules/development-workflow.md +29 -0
  25. stackone_ai-2.1.1/vendor/stackone-ai-node/.claude/rules/file-operations.md +134 -0
  26. stackone_ai-2.1.1/vendor/stackone-ai-node/.claude/rules/git-workflow.md +97 -0
  27. stackone_ai-2.1.1/vendor/stackone-ai-node/.claude/rules/pnpm-usage.md +54 -0
  28. stackone_ai-2.1.1/vendor/stackone-ai-node/.claude/rules/typescript-patterns.md +246 -0
  29. stackone_ai-2.1.1/vendor/stackone-ai-node/.claude/rules/typescript-testing.md +132 -0
  30. stackone_ai-2.1.1/vendor/stackone-ai-node/.claude/skills/orama-integration/SKILL.md +25 -0
  31. stackone_ai-2.1.1/vendor/stackone-ai-node/.cursor/rules/development-workflow.mdc +1 -0
  32. stackone_ai-2.1.1/vendor/stackone-ai-node/.cursor/rules/file-operations.mdc +1 -0
  33. stackone_ai-2.1.1/vendor/stackone-ai-node/.cursor/rules/git-workflow.mdc +1 -0
  34. stackone_ai-2.1.1/vendor/stackone-ai-node/.cursor/rules/orama-integration.mdc +1 -0
  35. stackone_ai-2.1.1/vendor/stackone-ai-node/.cursor/rules/pnpm-usage.mdc +1 -0
  36. stackone_ai-2.1.1/vendor/stackone-ai-node/.cursor/rules/typescript-patterns.mdc +1 -0
  37. stackone_ai-2.1.1/vendor/stackone-ai-node/.cursor/rules/typescript-testing.mdc +1 -0
  38. stackone_ai-2.1.1/vendor/stackone-ai-node/.envrc +1 -0
  39. stackone_ai-2.1.1/vendor/stackone-ai-node/.git +1 -0
  40. stackone_ai-2.1.1/vendor/stackone-ai-node/.github/CODEOWNERS +6 -0
  41. {stackone_ai-2.0.0 → stackone_ai-2.1.1/vendor/stackone-ai-node}/.github/actions/setup-nix/action.yaml +4 -4
  42. stackone_ai-2.1.1/vendor/stackone-ai-node/.github/workflows/check-title.yaml +25 -0
  43. stackone_ai-2.1.1/vendor/stackone-ai-node/.github/workflows/ci.yaml +87 -0
  44. stackone_ai-2.1.1/vendor/stackone-ai-node/.github/workflows/claude.yaml +39 -0
  45. stackone_ai-2.1.1/vendor/stackone-ai-node/.github/workflows/dry-publish.yaml +17 -0
  46. stackone_ai-2.1.1/vendor/stackone-ai-node/.github/workflows/nix-flake.yaml +33 -0
  47. stackone_ai-2.1.1/vendor/stackone-ai-node/.github/workflows/release.yaml +52 -0
  48. stackone_ai-2.1.1/vendor/stackone-ai-node/.gitignore +183 -0
  49. stackone_ai-2.1.1/vendor/stackone-ai-node/.gitleaks.toml +11 -0
  50. stackone_ai-2.1.1/vendor/stackone-ai-node/.mcp.json +12 -0
  51. stackone_ai-2.1.1/vendor/stackone-ai-node/.oxfmtrc.jsonc +7 -0
  52. stackone_ai-2.1.1/vendor/stackone-ai-node/.oxlintrc.jsonc +179 -0
  53. stackone_ai-2.1.1/vendor/stackone-ai-node/AGENTS.md +1 -0
  54. stackone_ai-2.1.1/vendor/stackone-ai-node/CHANGELOG.md +373 -0
  55. stackone_ai-2.1.1/vendor/stackone-ai-node/CLAUDE.md +26 -0
  56. stackone_ai-2.1.1/vendor/stackone-ai-node/LICENSE +201 -0
  57. stackone_ai-2.1.1/vendor/stackone-ai-node/README.md +614 -0
  58. stackone_ai-2.1.1/vendor/stackone-ai-node/examples/README.md +295 -0
  59. stackone_ai-2.1.1/vendor/stackone-ai-node/examples/ai-sdk-integration.test.ts +52 -0
  60. stackone_ai-2.1.1/vendor/stackone-ai-node/examples/ai-sdk-integration.ts +52 -0
  61. stackone_ai-2.1.1/vendor/stackone-ai-node/examples/anthropic-integration.ts +63 -0
  62. stackone_ai-2.1.1/vendor/stackone-ai-node/examples/claude-agent-sdk-integration.test.ts +140 -0
  63. stackone_ai-2.1.1/vendor/stackone-ai-node/examples/claude-agent-sdk-integration.ts +88 -0
  64. stackone_ai-2.1.1/vendor/stackone-ai-node/examples/fetch-tools-debug.ts +297 -0
  65. stackone_ai-2.1.1/vendor/stackone-ai-node/examples/fetch-tools.test.ts +102 -0
  66. stackone_ai-2.1.1/vendor/stackone-ai-node/examples/fetch-tools.ts +82 -0
  67. stackone_ai-2.1.1/vendor/stackone-ai-node/examples/meta-tools.ts +280 -0
  68. stackone_ai-2.1.1/vendor/stackone-ai-node/examples/openai-integration.test.ts +72 -0
  69. stackone_ai-2.1.1/vendor/stackone-ai-node/examples/openai-integration.ts +69 -0
  70. stackone_ai-2.1.1/vendor/stackone-ai-node/examples/openai-responses-integration.test.ts +64 -0
  71. stackone_ai-2.1.1/vendor/stackone-ai-node/examples/openai-responses-integration.ts +63 -0
  72. stackone_ai-2.1.1/vendor/stackone-ai-node/examples/package.json +30 -0
  73. stackone_ai-2.1.1/vendor/stackone-ai-node/examples/tanstack-ai-integration.test.ts +77 -0
  74. stackone_ai-2.1.1/vendor/stackone-ai-node/examples/tanstack-ai-integration.ts +83 -0
  75. stackone_ai-2.1.1/vendor/stackone-ai-node/examples/tsconfig.json +16 -0
  76. stackone_ai-2.1.1/vendor/stackone-ai-node/flake.lock +61 -0
  77. stackone_ai-2.1.1/vendor/stackone-ai-node/flake.nix +49 -0
  78. stackone_ai-2.1.1/vendor/stackone-ai-node/knip.config.ts +21 -0
  79. stackone_ai-2.1.1/vendor/stackone-ai-node/lefthook.yaml +22 -0
  80. stackone_ai-2.1.1/vendor/stackone-ai-node/mocks/handlers.example-api.ts +59 -0
  81. stackone_ai-2.1.1/vendor/stackone-ai-node/mocks/handlers.mcp.ts +35 -0
  82. stackone_ai-2.1.1/vendor/stackone-ai-node/mocks/handlers.openai.ts +214 -0
  83. stackone_ai-2.1.1/vendor/stackone-ai-node/mocks/handlers.stackone-ai.ts +97 -0
  84. stackone_ai-2.1.1/vendor/stackone-ai-node/mocks/handlers.stackone-rpc.ts +85 -0
  85. stackone_ai-2.1.1/vendor/stackone-ai-node/mocks/handlers.ts +13 -0
  86. stackone_ai-2.1.1/vendor/stackone-ai-node/mocks/handlers.utils.ts +30 -0
  87. stackone_ai-2.1.1/vendor/stackone-ai-node/mocks/mcp-server.ts +275 -0
  88. stackone_ai-2.1.1/vendor/stackone-ai-node/mocks/node.ts +4 -0
  89. stackone_ai-2.1.1/vendor/stackone-ai-node/package.json +118 -0
  90. stackone_ai-2.1.1/vendor/stackone-ai-node/pnpm-lock.yaml +4506 -0
  91. stackone_ai-2.1.1/vendor/stackone-ai-node/pnpm-workspace.yaml +66 -0
  92. stackone_ai-2.1.1/vendor/stackone-ai-node/src/consts.ts +20 -0
  93. stackone_ai-2.1.1/vendor/stackone-ai-node/src/feedback.test.ts +300 -0
  94. stackone_ai-2.1.1/vendor/stackone-ai-node/src/feedback.ts +230 -0
  95. stackone_ai-2.1.1/vendor/stackone-ai-node/src/headers.test.ts +69 -0
  96. stackone_ai-2.1.1/vendor/stackone-ai-node/src/headers.ts +46 -0
  97. stackone_ai-2.1.1/vendor/stackone-ai-node/src/index.ts +29 -0
  98. stackone_ai-2.1.1/vendor/stackone-ai-node/src/mcp-client.test.ts +68 -0
  99. stackone_ai-2.1.1/vendor/stackone-ai-node/src/mcp-client.ts +55 -0
  100. stackone_ai-2.1.1/vendor/stackone-ai-node/src/requestBuilder.test.ts +778 -0
  101. stackone_ai-2.1.1/vendor/stackone-ai-node/src/requestBuilder.ts +377 -0
  102. stackone_ai-2.1.1/vendor/stackone-ai-node/src/rpc-client.test.ts +122 -0
  103. stackone_ai-2.1.1/vendor/stackone-ai-node/src/rpc-client.ts +107 -0
  104. stackone_ai-2.1.1/vendor/stackone-ai-node/src/schema.ts +64 -0
  105. stackone_ai-2.1.1/vendor/stackone-ai-node/src/tool.test-d.ts +53 -0
  106. stackone_ai-2.1.1/vendor/stackone-ai-node/src/tool.test.ts +1453 -0
  107. stackone_ai-2.1.1/vendor/stackone-ai-node/src/tool.ts +743 -0
  108. stackone_ai-2.1.1/vendor/stackone-ai-node/src/toolsets.test-d.ts +44 -0
  109. stackone_ai-2.1.1/vendor/stackone-ai-node/src/toolsets.test.ts +712 -0
  110. stackone_ai-2.1.1/vendor/stackone-ai-node/src/toolsets.ts +558 -0
  111. stackone_ai-2.1.1/vendor/stackone-ai-node/src/types.ts +203 -0
  112. stackone_ai-2.1.1/vendor/stackone-ai-node/src/utils/array.test.ts +48 -0
  113. stackone_ai-2.1.1/vendor/stackone-ai-node/src/utils/array.ts +13 -0
  114. stackone_ai-2.1.1/vendor/stackone-ai-node/src/utils/error-stackone-api.test.ts +208 -0
  115. stackone_ai-2.1.1/vendor/stackone-ai-node/src/utils/error-stackone-api.ts +130 -0
  116. stackone_ai-2.1.1/vendor/stackone-ai-node/src/utils/error-stackone.test.ts +15 -0
  117. stackone_ai-2.1.1/vendor/stackone-ai-node/src/utils/error-stackone.ts +9 -0
  118. stackone_ai-2.1.1/vendor/stackone-ai-node/src/utils/tfidf-index.test.ts +206 -0
  119. stackone_ai-2.1.1/vendor/stackone-ai-node/src/utils/tfidf-index.ts +192 -0
  120. stackone_ai-2.1.1/vendor/stackone-ai-node/src/utils/try-import.test.ts +23 -0
  121. stackone_ai-2.1.1/vendor/stackone-ai-node/src/utils/try-import.ts +25 -0
  122. stackone_ai-2.1.1/vendor/stackone-ai-node/src/utils/type.ts +4 -0
  123. stackone_ai-2.1.1/vendor/stackone-ai-node/tsconfig.json +28 -0
  124. stackone_ai-2.1.1/vendor/stackone-ai-node/tsdown.config.ts +20 -0
  125. stackone_ai-2.1.1/vendor/stackone-ai-node/vitest.config.ts +46 -0
  126. stackone_ai-2.1.1/vendor/stackone-ai-node/vitest.setup.ts +5 -0
  127. stackone_ai-2.0.0/.release-please-manifest.json +0 -3
  128. stackone_ai-2.0.0/py.typed +0 -1
  129. {stackone_ai-2.0.0 → stackone_ai-2.1.1}/.claude/rules/development-workflow.md +0 -0
  130. {stackone_ai-2.0.0 → stackone_ai-2.1.1}/.claude/rules/examples-standards.md +0 -0
  131. {stackone_ai-2.0.0 → stackone_ai-2.1.1}/.claude/rules/git-workflow.md +0 -0
  132. {stackone_ai-2.0.0 → stackone_ai-2.1.1}/.claude/rules/no-relative-imports.md +0 -0
  133. {stackone_ai-2.0.0 → stackone_ai-2.1.1}/.claude/rules/package-installation.md +0 -0
  134. {stackone_ai-2.0.0 → stackone_ai-2.1.1}/.claude/rules/release-please-standards.md +0 -0
  135. {stackone_ai-2.0.0 → stackone_ai-2.1.1}/.claude/rules/uv-scripts.md +0 -0
  136. {stackone_ai-2.0.0 → stackone_ai-2.1.1}/.cursor/rules/development-workflow.mdc +0 -0
  137. {stackone_ai-2.0.0 → stackone_ai-2.1.1}/.cursor/rules/examples-standards.mdc +0 -0
  138. {stackone_ai-2.0.0 → stackone_ai-2.1.1}/.cursor/rules/git-workflow.mdc +0 -0
  139. {stackone_ai-2.0.0 → stackone_ai-2.1.1}/.cursor/rules/no-relative-imports.mdc +0 -0
  140. {stackone_ai-2.0.0 → stackone_ai-2.1.1}/.cursor/rules/package-installation.mdc +0 -0
  141. {stackone_ai-2.0.0 → stackone_ai-2.1.1}/.cursor/rules/release-please-standards.mdc +0 -0
  142. {stackone_ai-2.0.0 → stackone_ai-2.1.1}/.cursor/rules/uv-scripts.mdc +0 -0
  143. {stackone_ai-2.0.0 → stackone_ai-2.1.1}/.envrc +0 -0
  144. {stackone_ai-2.0.0 → stackone_ai-2.1.1}/.gitignore +0 -0
  145. {stackone_ai-2.0.0 → stackone_ai-2.1.1}/.gitleaks.toml +0 -0
  146. {stackone_ai-2.0.0 → stackone_ai-2.1.1}/.mcp.json +0 -0
  147. {stackone_ai-2.0.0 → stackone_ai-2.1.1}/.release-please-config.json +0 -0
  148. {stackone_ai-2.0.0 → stackone_ai-2.1.1}/LICENSE +0 -0
  149. {stackone_ai-2.0.0 → stackone_ai-2.1.1}/examples/crewai_integration.py +0 -0
  150. {stackone_ai-2.0.0 → stackone_ai-2.1.1}/examples/file_uploads.py +0 -0
  151. {stackone_ai-2.0.0 → stackone_ai-2.1.1}/examples/index.py +0 -0
  152. {stackone_ai-2.0.0 → stackone_ai-2.1.1}/examples/langchain_integration.py +0 -0
  153. {stackone_ai-2.0.0 → stackone_ai-2.1.1}/examples/meta_tools_example.py +0 -0
  154. {stackone_ai-2.0.0 → stackone_ai-2.1.1}/examples/openai_integration.py +0 -0
  155. {stackone_ai-2.0.0 → stackone_ai-2.1.1}/examples/stackone_account_ids.py +0 -0
  156. {stackone_ai-2.0.0 → stackone_ai-2.1.1}/examples/test_examples.py +0 -0
  157. {stackone_ai-2.0.0 → stackone_ai-2.1.1}/justfile +0 -0
  158. {stackone_ai-2.0.0 → stackone_ai-2.1.1}/scripts/update_version.py +0 -0
  159. {stackone_ai-2.0.0 → stackone_ai-2.1.1}/stackone_ai/constants.py +0 -0
  160. {stackone_ai-2.0.0 → stackone_ai-2.1.1}/stackone_ai/feedback/__init__.py +0 -0
  161. {stackone_ai-2.0.0 → stackone_ai-2.1.1}/stackone_ai/feedback/tool.py +0 -0
  162. {stackone_ai-2.0.0 → stackone_ai-2.1.1}/stackone_ai/integrations/__init__.py +0 -0
  163. {stackone_ai-2.0.0 → stackone_ai-2.1.1}/stackone_ai/meta_tools.py +0 -0
  164. {stackone_ai-2.0.0 → stackone_ai-2.1.1}/stackone_ai/py.typed +0 -0
  165. {stackone_ai-2.0.0 → stackone_ai-2.1.1}/stackone_ai/toolset.py +0 -0
  166. {stackone_ai-2.0.0 → stackone_ai-2.1.1}/stackone_ai/utils/__init__.py +0 -0
  167. {stackone_ai-2.0.0 → stackone_ai-2.1.1}/stackone_ai/utils/tfidf_index.py +0 -0
  168. {stackone_ai-2.0.0 → stackone_ai-2.1.1}/tests/test_feedback.py +0 -0
  169. {stackone_ai-2.0.0 → stackone_ai-2.1.1}/tests/test_integrations_langgraph.py +0 -0
  170. {stackone_ai-2.0.0 → stackone_ai-2.1.1}/tests/test_meta_tools.py +0 -0
  171. {stackone_ai-2.0.0 → stackone_ai-2.1.1}/tests/test_models.py +0 -0
  172. {stackone_ai-2.0.0 → stackone_ai-2.1.1}/tests/test_tfidf_index.py +0 -0
  173. {stackone_ai-2.0.0 → stackone_ai-2.1.1}/tests/test_tool_calling.py +0 -0
  174. {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
- dev-dependencies:
19
+ python-minor-patch:
20
20
  patterns:
21
- - "pytest*"
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: nix develop --command just gitleaks
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
- - name: Install dependencies
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: nix develop --command just lint
53
+ run: just lint
58
54
 
59
55
  - name: Run Ty
60
- run: nix develop --command just ty
56
+ run: just ty
61
57
 
62
58
  - name: Run Tests
63
- run: nix develop --command just test
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
- - name: Install dependencies
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: nix develop --command just coverage
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@98357b18bf14b5342f975ff684046ec3b2a07725 # v8.0.0
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: Setup Nix
30
- uses: ./.github/actions/setup-nix
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
@@ -27,6 +27,8 @@ jobs:
27
27
  - name: Setup Nix
28
28
  if: ${{ steps.release.outputs.release_created }}
29
29
  uses: ./.github/actions/setup-nix
30
+ with:
31
+ skip-mock-server: "true"
30
32
 
31
33
  - name: Update version in __init__.py
32
34
  if: ${{ steps.release.outputs.release_created }}
@@ -0,0 +1,3 @@
1
+ [submodule "vendor/stackone-ai-node"]
2
+ path = vendor/stackone-ai-node
3
+ url = https://github.com/StackOneHQ/stackone-ai-node.git
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "2.1.1"
3
+ }
@@ -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.0.0
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.11
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
  [![PyPI version](https://badge.fury.io/py/stackone-ai.svg)](https://badge.fury.io/py/stackone-ai)
35
36
  [![GitHub release (latest by date)](https://img.shields.io/github/v/release/StackOneHQ/stackone-ai-python)](https://github.com/StackOneHQ/stackone-ai-python/releases)
36
37
  [![Coverage](https://stackonehq.github.io/stackone-ai-python/badges.svg)](https://stackonehq.github.io/stackone-ai-python/html/)
38
+ [![DeepWiki](https://img.shields.io/badge/DeepWiki-StackOneHQ%2Fstackone--ai--python-blue.svg?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAyCAYAAAAnWDnqAAAAAXNSR0IArs4c6QAAA05JREFUaEPtmUtyEzEQhtWTQyQLHNak2AB7ZnyXZMEjXMGeK/AIi+QuHrMnbChYY7MIh8g01fJoopFb0uhhEqqcbWTp06/uv1saEDv4O3n3dV60RfP947Mm9/SQc0ICFQgzfc4CYZoTPAswgSJCCUJUnAAoRHOAUOcATwbmVLWdGoH//PB8mnKqScAhsD0kYP3j/Yt5LPQe2KvcXmGvRHcDnpxfL2zOYJ1mFwrryWTz0advv1Ut4CJgf5uhDuDj5eUcAUoahrdY/56ebRWeraTjMt/00Sh3UDtjgHtQNHwcRGOC98BJEAEymycmYcWwOprTgcB6VZ5JK5TAJ+fXGLBm3FDAmn6oPPjR4rKCAoJCal2eAiQp2x0vxTPB3ALO2CRkwmDy5WohzBDwSEFKRwPbknEggCPB/imwrycgxX2NzoMCHhPkDwqYMr9tRcP5qNrMZHkVnOjRMWwLCcr8ohBVb1OMjxLwGCvjTikrsBOiA6fNyCrm8V1rP93iVPpwaE+gO0SsWmPiXB+jikdf6SizrT5qKasx5j8ABbHpFTx+vFXp9EnYQmLx02h1QTTrl6eDqxLnGjporxl3NL3agEvXdT0WmEost648sQOYAeJS9Q7bfUVoMGnjo4AZdUMQku50McDcMWcBPvr0SzbTAFDfvJqwLzgxwATnCgnp4wDl6Aa+Ax283gghmj+vj7feE2KBBRMW3FzOpLOADl0Isb5587h/U4gGvkt5v60Z1VLG8BhYjbzRwyQZemwAd6cCR5/XFWLYZRIMpX39AR0tjaGGiGzLVyhse5C9RKC6ai42ppWPKiBagOvaYk8lO7DajerabOZP46Lby5wKjw1HCRx7p9sVMOWGzb/vA1hwiWc6jm3MvQDTogQkiqIhJV0nBQBTU+3okKCFDy9WwferkHjtxib7t3xIUQtHxnIwtx4mpg26/HfwVNVDb4oI9RHmx5WGelRVlrtiw43zboCLaxv46AZeB3IlTkwouebTr1y2NjSpHz68WNFjHvupy3q8TFn3Hos2IAk4Ju5dCo8B3wP7VPr/FGaKiG+T+v+TQqIrOqMTL1VdWV1DdmcbO8KXBz6esmYWYKPwDL5b5FA1a0hwapHiom0r/cKaoqr+27/XcrS5UwSMbQAAAABJRU5ErkJggg==)](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
  [![PyPI version](https://badge.fury.io/py/stackone-ai.svg)](https://badge.fury.io/py/stackone-ai)
4
4
  [![GitHub release (latest by date)](https://img.shields.io/github/v/release/StackOneHQ/stackone-ai-python)](https://github.com/StackOneHQ/stackone-ai-python/releases)
5
5
  [![Coverage](https://stackonehq.github.io/stackone-ai-python/badges.svg)](https://stackonehq.github.io/stackone-ai-python/html/)
6
+ [![DeepWiki](https://img.shields.io/badge/DeepWiki-StackOneHQ%2Fstackone--ai--python-blue.svg?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAyCAYAAAAnWDnqAAAAAXNSR0IArs4c6QAAA05JREFUaEPtmUtyEzEQhtWTQyQLHNak2AB7ZnyXZMEjXMGeK/AIi+QuHrMnbChYY7MIh8g01fJoopFb0uhhEqqcbWTp06/uv1saEDv4O3n3dV60RfP947Mm9/SQc0ICFQgzfc4CYZoTPAswgSJCCUJUnAAoRHOAUOcATwbmVLWdGoH//PB8mnKqScAhsD0kYP3j/Yt5LPQe2KvcXmGvRHcDnpxfL2zOYJ1mFwrryWTz0advv1Ut4CJgf5uhDuDj5eUcAUoahrdY/56ebRWeraTjMt/00Sh3UDtjgHtQNHwcRGOC98BJEAEymycmYcWwOprTgcB6VZ5JK5TAJ+fXGLBm3FDAmn6oPPjR4rKCAoJCal2eAiQp2x0vxTPB3ALO2CRkwmDy5WohzBDwSEFKRwPbknEggCPB/imwrycgxX2NzoMCHhPkDwqYMr9tRcP5qNrMZHkVnOjRMWwLCcr8ohBVb1OMjxLwGCvjTikrsBOiA6fNyCrm8V1rP93iVPpwaE+gO0SsWmPiXB+jikdf6SizrT5qKasx5j8ABbHpFTx+vFXp9EnYQmLx02h1QTTrl6eDqxLnGjporxl3NL3agEvXdT0WmEost648sQOYAeJS9Q7bfUVoMGnjo4AZdUMQku50McDcMWcBPvr0SzbTAFDfvJqwLzgxwATnCgnp4wDl6Aa+Ax283gghmj+vj7feE2KBBRMW3FzOpLOADl0Isb5587h/U4gGvkt5v60Z1VLG8BhYjbzRwyQZemwAd6cCR5/XFWLYZRIMpX39AR0tjaGGiGzLVyhse5C9RKC6ai42ppWPKiBagOvaYk8lO7DajerabOZP46Lby5wKjw1HCRx7p9sVMOWGzb/vA1hwiWc6jm3MvQDTogQkiqIhJV0nBQBTU+3okKCFDy9WwferkHjtxib7t3xIUQtHxnIwtx4mpg26/HfwVNVDb4oI9RHmx5WGelRVlrtiw43zboCLaxv46AZeB3IlTkwouebTr1y2NjSpHz68WNFjHvupy3q8TFn3Hos2IAk4Ju5dCo8B3wP7VPr/FGaKiG+T+v+TQqIrOqMTL1VdWV1DdmcbO8KXBz6esmYWYKPwDL5b5FA1a0hwapHiom0r/cKaoqr+27/XcrS5UwSMbQAAAABJRU5ErkJggg==)](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": 1761588595,
7
- "narHash": "sha256-XKUZz9zewJNUj46b4AJdiRZJAvSZ0Dqj2BNfXvFlJC4=",
8
- "owner": "edolstra",
6
+ "lastModified": 1767039857,
7
+ "narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=",
8
+ "owner": "NixOS",
9
9
  "repo": "flake-compat",
10
- "rev": "f387cd2afec9419c8ee37694406ca490c3f34ee5",
10
+ "rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab",
11
11
  "type": "github"
12
12
  },
13
13
  "original": {
14
- "owner": "edolstra",
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": 1765835352,
25
- "narHash": "sha256-XswHlK/Qtjasvhd1nOa1e8MgZ8GS//jBoTqWtrS1Giw=",
24
+ "lastModified": 1768135262,
25
+ "narHash": "sha256-PVvu7OqHBGWN16zSi6tEmPwwHQ4rLPU9Plvs8/1TUBY=",
26
26
  "owner": "hercules-ci",
27
27
  "repo": "flake-parts",
28
- "rev": "a34fae9c08a15ad73f295041fec82323541400a9",
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": 1765911976,
45
- "narHash": "sha256-t3T/xm8zstHRLx+pIHxVpQTiySbKqcQbK+r+01XVKc0=",
44
+ "lastModified": 1767281941,
45
+ "narHash": "sha256-6MkqajPICgugsuZ92OMoQcgSHnD6sJHwk8AxvMcIgTE=",
46
46
  "owner": "cachix",
47
47
  "repo": "git-hooks.nix",
48
- "rev": "b68b780b69702a090c8bb1b973bab13756cc7a27",
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": 1766870016,
112
- "narHash": "sha256-fHmxAesa6XNqnIkcS6+nIHuEmgd/iZSP/VXxweiEuQw=",
111
+ "lastModified": 1768149890,
112
+ "narHash": "sha256-iihg1oHkVkYHD1pFQifGEP+Rw1g+LZQyDNbtAqpXtNM=",
113
113
  "owner": "NixOS",
114
114
  "repo": "nixpkgs",
115
- "rev": "5c2bc52fb9f8c264ed6c93bd20afa2ff5e763dce",
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": 1761236834,
128
- "narHash": "sha256-+pthv6hrL5VLW2UqPdISGuLiUZ6SnAXdd2DdUE+fV2Q=",
127
+ "lastModified": 1767364772,
128
+ "narHash": "sha256-fFUnEYMla8b7UKjijLnMe+oVFOz6HjijGGNS1l7dYaQ=",
129
129
  "owner": "nixos",
130
130
  "repo": "nixpkgs",
131
- "rev": "d5faa84122bc0a1fd5d378492efce4e289f8eac1",
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": 1766000401,
155
- "narHash": "sha256-+cqN4PJz9y0JQXfAK5J1drd0U05D5fcAGhzhfVrDlsI=",
154
+ "lastModified": 1768158989,
155
+ "narHash": "sha256-67vyT1+xClLldnumAzCTBvU0jLZ1YBcf4vANRWP3+Ak=",
156
156
  "owner": "numtide",
157
157
  "repo": "treefmt-nix",
158
- "rev": "42d96e75aa56a3f70cab7e7dc4a32868db28e8fd",
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.uv}/bin/uv run ty check";
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.mkShell {
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
- # Install dependencies only if .venv is missing or uv.lock is newer
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