fxhoudinimcp 0.1.0__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 (93) hide show
  1. fxhoudinimcp-0.1.0/.auto-changelog +7 -0
  2. fxhoudinimcp-0.1.0/.github/workflows/docs.yml +52 -0
  3. fxhoudinimcp-0.1.0/.github/workflows/release.yml +197 -0
  4. fxhoudinimcp-0.1.0/.gitignore +43 -0
  5. fxhoudinimcp-0.1.0/.scripts/git/Get-CurrentGitTag.ps1 +5 -0
  6. fxhoudinimcp-0.1.0/.scripts/git/Update-GitTag.ps1 +73 -0
  7. fxhoudinimcp-0.1.0/.vscode/tasks.json +88 -0
  8. fxhoudinimcp-0.1.0/CHANGELOG.md +15 -0
  9. fxhoudinimcp-0.1.0/LICENSE +21 -0
  10. fxhoudinimcp-0.1.0/PKG-INFO +340 -0
  11. fxhoudinimcp-0.1.0/README.md +298 -0
  12. fxhoudinimcp-0.1.0/docs/.scripts/generate_technical_docs.py +60 -0
  13. fxhoudinimcp-0.1.0/docs/changelog.md +1 -0
  14. fxhoudinimcp-0.1.0/docs/how-to/configuration.md +44 -0
  15. fxhoudinimcp-0.1.0/docs/how-to/index.md +6 -0
  16. fxhoudinimcp-0.1.0/docs/how-to/tools.md +97 -0
  17. fxhoudinimcp-0.1.0/docs/images/favicon.svg +3 -0
  18. fxhoudinimcp-0.1.0/docs/images/logo.svg +6 -0
  19. fxhoudinimcp-0.1.0/docs/index.md +82 -0
  20. fxhoudinimcp-0.1.0/docs/installation.md +13 -0
  21. fxhoudinimcp-0.1.0/docs/stylesheets/extra.css +60 -0
  22. fxhoudinimcp-0.1.0/houdini/fxhoudinimcp.json +11 -0
  23. fxhoudinimcp-0.1.0/houdini/scripts/456.py +14 -0
  24. fxhoudinimcp-0.1.0/houdini/scripts/python/fxhoudinimcp_server/__init__.py +5 -0
  25. fxhoudinimcp-0.1.0/houdini/scripts/python/fxhoudinimcp_server/dispatcher.py +146 -0
  26. fxhoudinimcp-0.1.0/houdini/scripts/python/fxhoudinimcp_server/handlers/__init__.py +68 -0
  27. fxhoudinimcp-0.1.0/houdini/scripts/python/fxhoudinimcp_server/handlers/animation_handlers.py +292 -0
  28. fxhoudinimcp-0.1.0/houdini/scripts/python/fxhoudinimcp_server/handlers/cache_handlers.py +348 -0
  29. fxhoudinimcp-0.1.0/houdini/scripts/python/fxhoudinimcp_server/handlers/chop_handlers.py +241 -0
  30. fxhoudinimcp-0.1.0/houdini/scripts/python/fxhoudinimcp_server/handlers/code_handlers.py +153 -0
  31. fxhoudinimcp-0.1.0/houdini/scripts/python/fxhoudinimcp_server/handlers/context_handlers.py +770 -0
  32. fxhoudinimcp-0.1.0/houdini/scripts/python/fxhoudinimcp_server/handlers/cop_handlers.py +468 -0
  33. fxhoudinimcp-0.1.0/houdini/scripts/python/fxhoudinimcp_server/handlers/dop_handlers.py +422 -0
  34. fxhoudinimcp-0.1.0/houdini/scripts/python/fxhoudinimcp_server/handlers/geometry_handlers.py +693 -0
  35. fxhoudinimcp-0.1.0/houdini/scripts/python/fxhoudinimcp_server/handlers/hda_handlers.py +532 -0
  36. fxhoudinimcp-0.1.0/houdini/scripts/python/fxhoudinimcp_server/handlers/lops_handlers.py +1117 -0
  37. fxhoudinimcp-0.1.0/houdini/scripts/python/fxhoudinimcp_server/handlers/material_handlers.py +323 -0
  38. fxhoudinimcp-0.1.0/houdini/scripts/python/fxhoudinimcp_server/handlers/node_handlers.py +668 -0
  39. fxhoudinimcp-0.1.0/houdini/scripts/python/fxhoudinimcp_server/handlers/parameter_handlers.py +477 -0
  40. fxhoudinimcp-0.1.0/houdini/scripts/python/fxhoudinimcp_server/handlers/rendering_handlers.py +570 -0
  41. fxhoudinimcp-0.1.0/houdini/scripts/python/fxhoudinimcp_server/handlers/scene_handlers.py +338 -0
  42. fxhoudinimcp-0.1.0/houdini/scripts/python/fxhoudinimcp_server/handlers/take_handlers.py +169 -0
  43. fxhoudinimcp-0.1.0/houdini/scripts/python/fxhoudinimcp_server/handlers/top_handlers.py +641 -0
  44. fxhoudinimcp-0.1.0/houdini/scripts/python/fxhoudinimcp_server/handlers/vex_handlers.py +272 -0
  45. fxhoudinimcp-0.1.0/houdini/scripts/python/fxhoudinimcp_server/handlers/viewport_handlers.py +473 -0
  46. fxhoudinimcp-0.1.0/houdini/scripts/python/fxhoudinimcp_server/handlers/workflow_handlers.py +969 -0
  47. fxhoudinimcp-0.1.0/houdini/scripts/python/fxhoudinimcp_server/hwebserver_app.py +59 -0
  48. fxhoudinimcp-0.1.0/houdini/scripts/python/fxhoudinimcp_server/startup.py +78 -0
  49. fxhoudinimcp-0.1.0/houdini/toolbar/fxhoudinimcp.shelf +36 -0
  50. fxhoudinimcp-0.1.0/mkdocs.yml +166 -0
  51. fxhoudinimcp-0.1.0/package.json +8 -0
  52. fxhoudinimcp-0.1.0/pyproject.toml +79 -0
  53. fxhoudinimcp-0.1.0/python/fxhoudinimcp/__init__.py +3 -0
  54. fxhoudinimcp-0.1.0/python/fxhoudinimcp/__main__.py +27 -0
  55. fxhoudinimcp-0.1.0/python/fxhoudinimcp/bridge.py +155 -0
  56. fxhoudinimcp-0.1.0/python/fxhoudinimcp/errors.py +71 -0
  57. fxhoudinimcp-0.1.0/python/fxhoudinimcp/prompts/__init__.py +6 -0
  58. fxhoudinimcp-0.1.0/python/fxhoudinimcp/prompts/workflows.py +215 -0
  59. fxhoudinimcp-0.1.0/python/fxhoudinimcp/protocol.py +64 -0
  60. fxhoudinimcp-0.1.0/python/fxhoudinimcp/resources/__init__.py +8 -0
  61. fxhoudinimcp-0.1.0/python/fxhoudinimcp/resources/geo_resources.py +16 -0
  62. fxhoudinimcp-0.1.0/python/fxhoudinimcp/resources/scene_resources.py +51 -0
  63. fxhoudinimcp-0.1.0/python/fxhoudinimcp/resources/usd_resources.py +16 -0
  64. fxhoudinimcp-0.1.0/python/fxhoudinimcp/server.py +53 -0
  65. fxhoudinimcp-0.1.0/python/fxhoudinimcp/tools/__init__.py +29 -0
  66. fxhoudinimcp-0.1.0/python/fxhoudinimcp/tools/animation.py +184 -0
  67. fxhoudinimcp-0.1.0/python/fxhoudinimcp/tools/cache.py +100 -0
  68. fxhoudinimcp-0.1.0/python/fxhoudinimcp/tools/chops.py +119 -0
  69. fxhoudinimcp-0.1.0/python/fxhoudinimcp/tools/code.py +96 -0
  70. fxhoudinimcp-0.1.0/python/fxhoudinimcp/tools/context.py +178 -0
  71. fxhoudinimcp-0.1.0/python/fxhoudinimcp/tools/cops.py +169 -0
  72. fxhoudinimcp-0.1.0/python/fxhoudinimcp/tools/dops.py +130 -0
  73. fxhoudinimcp-0.1.0/python/fxhoudinimcp/tools/geometry.py +278 -0
  74. fxhoudinimcp-0.1.0/python/fxhoudinimcp/tools/hda.py +220 -0
  75. fxhoudinimcp-0.1.0/python/fxhoudinimcp/tools/lops.py +409 -0
  76. fxhoudinimcp-0.1.0/python/fxhoudinimcp/tools/materials.py +104 -0
  77. fxhoudinimcp-0.1.0/python/fxhoudinimcp/tools/nodes.py +373 -0
  78. fxhoudinimcp-0.1.0/python/fxhoudinimcp/tools/parameters.py +271 -0
  79. fxhoudinimcp-0.1.0/python/fxhoudinimcp/tools/rendering.py +200 -0
  80. fxhoudinimcp-0.1.0/python/fxhoudinimcp/tools/scene.py +141 -0
  81. fxhoudinimcp-0.1.0/python/fxhoudinimcp/tools/takes.py +81 -0
  82. fxhoudinimcp-0.1.0/python/fxhoudinimcp/tools/tops.py +179 -0
  83. fxhoudinimcp-0.1.0/python/fxhoudinimcp/tools/vex.py +123 -0
  84. fxhoudinimcp-0.1.0/python/fxhoudinimcp/tools/viewport.py +211 -0
  85. fxhoudinimcp-0.1.0/python/fxhoudinimcp/tools/workflows.py +282 -0
  86. fxhoudinimcp-0.1.0/requirements.mkdocs.txt +3 -0
  87. fxhoudinimcp-0.1.0/tests/conftest.py +27 -0
  88. fxhoudinimcp-0.1.0/tests/test_bridge.py +165 -0
  89. fxhoudinimcp-0.1.0/tests/test_dispatcher.py +93 -0
  90. fxhoudinimcp-0.1.0/tests/test_errors.py +88 -0
  91. fxhoudinimcp-0.1.0/tests/test_protocol.py +73 -0
  92. fxhoudinimcp-0.1.0/tests/test_serialization.py +106 -0
  93. fxhoudinimcp-0.1.0/tests/test_tools.py +97 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "template": "keepachangelog",
3
+ "unreleased": true,
4
+ "commitLimit": false,
5
+ "ignoreCommitPattern": ".*(CHANGELOG|README).*",
6
+ "sortCommits": "date"
7
+ }
@@ -0,0 +1,52 @@
1
+ name: Documentation
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+ tags:
8
+ - "v*"
9
+ workflow_dispatch:
10
+
11
+ permissions:
12
+ contents: write
13
+
14
+ jobs:
15
+ deploy:
16
+ runs-on: ubuntu-latest
17
+ steps:
18
+ - uses: actions/checkout@v5
19
+ with:
20
+ fetch-depth: 0
21
+
22
+ - uses: actions/setup-python@v5
23
+ with:
24
+ python-version: 3.x
25
+
26
+ - name: Install dependencies
27
+ run: pip install -r requirements.mkdocs.txt
28
+
29
+ - name: Configure Git
30
+ run: |
31
+ git config user.name github-actions
32
+ git config user.email github-actions@github.com
33
+
34
+ - name: Fetch gh-pages branch
35
+ run: |
36
+ if git ls-remote --exit-code --heads origin gh-pages > /dev/null 2>&1; then
37
+ git fetch origin gh-pages:gh-pages
38
+ echo "Fetched existing gh-pages branch"
39
+ else
40
+ echo "gh-pages branch does not exist yet, mike will create it"
41
+ fi
42
+
43
+ - name: Deploy docs (versioned)
44
+ env:
45
+ GH_TOKEN: ${{ secrets.GH_TOKEN }}
46
+ run: |
47
+ VERSION=$(git describe --tags --abbrev=0 2>/dev/null | sed 's/^v//' || echo "0.1.0")
48
+ mike deploy --push --update-aliases "$VERSION" latest
49
+ git fetch origin gh-pages:gh-pages --force
50
+ mike set-default --push latest
51
+ echo "Mike versions:"
52
+ mike list
@@ -0,0 +1,197 @@
1
+ # This workflow handles the complete release process:
2
+ # 1. Generate changelog from conventional commits
3
+ # 2. Create a GitHub release with changelog content
4
+ # 3. Build and publish Python package to PyPI
5
+
6
+ name: Release
7
+
8
+ on:
9
+ push:
10
+ tags:
11
+ - "v*.*.*"
12
+ workflow_dispatch:
13
+ workflow_call:
14
+ inputs:
15
+ node-version:
16
+ description: "Node.js version to use for changelog generation"
17
+ type: string
18
+ default: "20"
19
+ python-version:
20
+ description: "Python version to use for build and documentation"
21
+ type: string
22
+ default: "3.11"
23
+ skip-changelog:
24
+ description: "Skip changelog generation"
25
+ type: boolean
26
+ default: false
27
+ skip-pypi:
28
+ description: "Skip PyPI publishing"
29
+ type: boolean
30
+ default: false
31
+ secrets:
32
+ PIPY_USERNAME:
33
+ description: "PyPI username for package publishing"
34
+ required: false
35
+ PIPY_API_TOKEN:
36
+ description: "PyPI API token for package publishing"
37
+ required: false
38
+
39
+ permissions:
40
+ contents: write
41
+ pages: write
42
+ id-token: write
43
+
44
+ jobs:
45
+ # Step 1: Generate changelog FIRST so it can be included in the release
46
+ generate-changelog:
47
+ name: Generate Changelog
48
+ if: ${{ inputs.skip-changelog != true }}
49
+ runs-on: ubuntu-latest
50
+ outputs:
51
+ changelog-section: ${{ steps.extract-changelog.outputs.section }}
52
+ steps:
53
+ - name: Checkout
54
+ uses: actions/checkout@v4
55
+ with:
56
+ ref: main
57
+ fetch-depth: 0
58
+
59
+ - name: Check for package.json
60
+ id: check-npm
61
+ run: |
62
+ if [ -f "package.json" ]; then
63
+ echo "exists=true" >> $GITHUB_OUTPUT
64
+ else
65
+ echo "exists=false" >> $GITHUB_OUTPUT
66
+ echo "No package.json found, skipping changelog generation"
67
+ fi
68
+
69
+ - name: Setup Node.js
70
+ if: steps.check-npm.outputs.exists == 'true'
71
+ uses: actions/setup-node@v4
72
+ with:
73
+ node-version: ${{ inputs.node-version || '20' }}
74
+
75
+ - name: Install dependencies
76
+ if: steps.check-npm.outputs.exists == 'true'
77
+ run: npm install && npm install -g auto-changelog
78
+
79
+ - name: Generate changelog
80
+ if: steps.check-npm.outputs.exists == 'true'
81
+ run: npm run changelog
82
+
83
+ - name: Extract changelog section for this release
84
+ id: extract-changelog
85
+ run: |
86
+ TAG_NAME="${GITHUB_REF_NAME:-$(git describe --tags --abbrev=0)}"
87
+ VERSION="${TAG_NAME#v}"
88
+
89
+ if [ ! -f "CHANGELOG.md" ]; then
90
+ echo "section=No changelog available for this release." >> $GITHUB_OUTPUT
91
+ exit 0
92
+ fi
93
+
94
+ echo "Looking for version: ${VERSION} (tag: ${TAG_NAME})"
95
+
96
+ # Try multiple patterns to find the version section
97
+ SECTION=$(awk "/^## \[v?${VERSION}\]/{found=1; next} /^## /{if(found) exit} found{print}" CHANGELOG.md)
98
+ SECTION=$(echo "$SECTION" | sed '/^[[:space:]]*$/d' | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')
99
+
100
+ if [ -z "$SECTION" ]; then
101
+ SECTION=$(awk "/^## \[${TAG_NAME}\]/{found=1; next} /^## /{if(found) exit} found{print}" CHANGELOG.md)
102
+ SECTION=$(echo "$SECTION" | sed '/^[[:space:]]*$/d' | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')
103
+ fi
104
+
105
+ if [ -z "$SECTION" ]; then
106
+ SECTION=$(awk "/^## v?${VERSION}/{found=1; next} /^## /{if(found) exit} found{print}" CHANGELOG.md)
107
+ SECTION=$(echo "$SECTION" | sed '/^[[:space:]]*$/d' | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')
108
+ fi
109
+
110
+ if [ -z "$SECTION" ]; then
111
+ if grep -q "## \[v\?${VERSION}\]" CHANGELOG.md || grep -q "## v\?${VERSION}" CHANGELOG.md; then
112
+ SECTION="This release contains minor updates. See commit history for details."
113
+ else
114
+ SECTION="No changelog entry found for version ${VERSION}."
115
+ fi
116
+ fi
117
+
118
+ echo "section<<EOF" >> $GITHUB_OUTPUT
119
+ echo "$SECTION" >> $GITHUB_OUTPUT
120
+ echo "EOF" >> $GITHUB_OUTPUT
121
+
122
+ - name: Remove package-lock.json
123
+ if: steps.check-npm.outputs.exists == 'true'
124
+ run: rm -f package-lock.json
125
+
126
+ - name: Commit and push changelog
127
+ if: steps.check-npm.outputs.exists == 'true'
128
+ run: |
129
+ git config --global user.name 'github-actions[bot]'
130
+ git config --global user.email 'github-actions[bot]@users.noreply.github.com'
131
+ git add CHANGELOG.md
132
+ if [ -n "$(git status --porcelain)" ]; then
133
+ git commit -m '[DOC] CHANGELOG' -m '[skip ci]'
134
+ git push origin main
135
+ else
136
+ echo "No changes to commit"
137
+ fi
138
+
139
+ # Step 2: Create release WITH changelog content
140
+ create-release:
141
+ name: Create GitHub Release
142
+ needs: generate-changelog
143
+ if: ${{ always() && !cancelled() }}
144
+ runs-on: ubuntu-latest
145
+ steps:
146
+ - name: Checkout
147
+ uses: actions/checkout@v4
148
+ with:
149
+ ref: main
150
+
151
+ - name: Create draft release
152
+ uses: softprops/action-gh-release@v2
153
+ with:
154
+ draft: true
155
+ name: ${{ github.ref_name }}
156
+ body: |
157
+ ## What's Changed
158
+
159
+ ${{ needs.generate-changelog.outputs.changelog-section || 'No detailed changelog available for this release.' }}
160
+
161
+ ---
162
+ 📄 **[View Full Changelog](https://github.com/${{ github.repository }}/blob/main/CHANGELOG.md)**
163
+
164
+ # Step 3: Build and publish to PyPI
165
+ publish-pypi:
166
+ name: Publish to PyPI
167
+ needs: create-release
168
+ if: ${{ always() && !cancelled() && inputs.skip-pypi != true && startsWith(github.ref, 'refs/tags/v') }}
169
+ runs-on: ubuntu-latest
170
+ steps:
171
+ - name: Checkout code
172
+ uses: actions/checkout@v4
173
+ with:
174
+ ref: ${{ github.ref }}
175
+ fetch-depth: 0
176
+ submodules: true
177
+
178
+ - name: Set up Python
179
+ uses: actions/setup-python@v5
180
+ with:
181
+ python-version: ${{ inputs.python-version || '3.11' }}
182
+
183
+ - name: Install build dependencies
184
+ run: |
185
+ python -m pip install --upgrade pip
186
+ pip install setuptools wheel twine build
187
+
188
+ - name: Build package
189
+ run: |
190
+ python -m build
191
+
192
+ - name: Publish package to PyPI
193
+ env:
194
+ TWINE_USERNAME: ${{ secrets.PIPY_USERNAME }}
195
+ TWINE_PASSWORD: ${{ secrets.PIPY_API_TOKEN }}
196
+ run: |
197
+ twine upload dist/*
@@ -0,0 +1,43 @@
1
+ # Python
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+ *.egg-info/
6
+ dist/
7
+ build/
8
+ *.egg
9
+ .eggs/
10
+ .venv/
11
+ venv/
12
+ env/
13
+ .env
14
+ *.so
15
+ *.dylib
16
+
17
+ # Testing
18
+ .pytest_cache/
19
+ .ruff_cache/
20
+ .mypy_cache/
21
+ htmlcov/
22
+ .coverage
23
+
24
+ # Node
25
+ node_modules/
26
+ package-lock.json
27
+
28
+ # MkDocs
29
+ site/
30
+
31
+ # OS
32
+ *.log
33
+ .DS_Store
34
+ Thumbs.db
35
+
36
+ # IDE
37
+ .vscode/settings.json
38
+
39
+ # AI tools
40
+ .claude/
41
+ .cursor/
42
+ .aider*
43
+ .copilot/
@@ -0,0 +1,5 @@
1
+ # Get the latest tag
2
+ $latestTag = git describe --tags (git rev-list --tags --max-count=1)
3
+
4
+ # Output the latest tag
5
+ Write-Output "Current version: $latestTag"
@@ -0,0 +1,73 @@
1
+ param (
2
+ [string]$incrementType
3
+ )
4
+
5
+ # Get the latest tag (handle case where no tags exist)
6
+ try {
7
+ $tagList = git rev-list --tags --max-count=1 2>$null
8
+ if ($tagList) {
9
+ $latestTag = git describe --tags $tagList 2>$null
10
+ }
11
+ else {
12
+ $latestTag = $null
13
+ }
14
+ }
15
+ catch {
16
+ $latestTag = $null
17
+ }
18
+
19
+ # If no tags exist, start with v0.1.0
20
+ if (-not $latestTag) {
21
+ Write-Host "No existing tags found. Creating initial version v0.1.0..."
22
+ $newVersion = "0.1.0"
23
+ git tag -a "v$newVersion" -m "Version $newVersion"
24
+ git push origin "v$newVersion"
25
+ Write-Host "Tag v$newVersion pushed."
26
+ Write-Output $newVersion
27
+ exit 0
28
+ }
29
+
30
+ # Remove the 'v' prefix if it exists
31
+ if ($latestTag.StartsWith('v')) {
32
+ $latestTag = $latestTag.Substring(1)
33
+ }
34
+
35
+ # Split the version into an array
36
+ $versionParts = $latestTag -split '\.'
37
+
38
+ # Ensure the versionParts array has three elements
39
+ if ($versionParts.Length -ne 3) {
40
+ Write-Host "Error: The latest tag '$latestTag' is not in the expected format 'vX.Y.Z'."
41
+ exit 1
42
+ }
43
+
44
+ switch ($incrementType) {
45
+ "major" {
46
+ $versionParts[0] = [int]$versionParts[0] + 1
47
+ $versionParts[1] = 0
48
+ $versionParts[2] = 0
49
+ }
50
+ "minor" {
51
+ $versionParts[1] = [int]$versionParts[1] + 1
52
+ $versionParts[2] = 0
53
+ }
54
+ "patch" {
55
+ $versionParts[2] = [int]$versionParts[2] + 1
56
+ }
57
+ default {
58
+ Write-Host "Usage: .\Update-GitTag.ps1 {major|minor|patch}"
59
+ exit 1
60
+ }
61
+ }
62
+
63
+ # Join the version parts into a new version string
64
+ $newVersion = "$($versionParts[0]).$($versionParts[1]).$($versionParts[2])"
65
+
66
+ # Create and push the new tag (CI will handle the rest)
67
+ git tag -a "v$newVersion" -m "Version $newVersion"
68
+ git push origin "v$newVersion"
69
+
70
+ Write-Host "Tag v$newVersion pushed."
71
+
72
+ # Output the new version
73
+ Write-Output $newVersion
@@ -0,0 +1,88 @@
1
+ {
2
+ "version": "2.0.0",
3
+ "tasks": [
4
+ {
5
+ "label": "Get Current Git Tag",
6
+ "type": "shell",
7
+ "command": "powershell -ExecutionPolicy Bypass -File ./.scripts/git/Get-CurrentGitTag.ps1",
8
+ "problemMatcher": [],
9
+ "group": {
10
+ "kind": "none",
11
+ "isDefault": true
12
+ },
13
+ "presentation": {
14
+ "reveal": "always",
15
+ "panel": "shared"
16
+ }
17
+ },
18
+ {
19
+ "label": "Create and Push Git Tag",
20
+ "type": "shell",
21
+ "command": "powershell -ExecutionPolicy Bypass -File ./.scripts/git/Update-GitTag.ps1 ${input:incrementType}",
22
+ "problemMatcher": [],
23
+ "group": {
24
+ "kind": "none",
25
+ "isDefault": true
26
+ },
27
+ "presentation": {
28
+ "reveal": "always",
29
+ "panel": "shared"
30
+ }
31
+ },
32
+ {
33
+ "label": "Deploy Documentation (MkDocs)",
34
+ "type": "shell",
35
+ "command": "python -m mkdocs gh-deploy",
36
+ "problemMatcher": [],
37
+ "group": {
38
+ "kind": "none",
39
+ "isDefault": true
40
+ },
41
+ "presentation": {
42
+ "reveal": "always",
43
+ "panel": "shared"
44
+ }
45
+ },
46
+ {
47
+ "label": "Deploy Documentation (MkDocs, Local Preview)",
48
+ "type": "shell",
49
+ "command": "python -m mkdocs serve",
50
+ "problemMatcher": [],
51
+ "group": {
52
+ "kind": "none",
53
+ "isDefault": true
54
+ },
55
+ "presentation": {
56
+ "reveal": "always",
57
+ "panel": "shared"
58
+ }
59
+ },
60
+ {
61
+ "label": "Generate Changelog",
62
+ "type": "shell",
63
+ "command": "npm install; npm run changelog",
64
+ "problemMatcher": [],
65
+ "group": {
66
+ "kind": "none",
67
+ "isDefault": true
68
+ },
69
+ "presentation": {
70
+ "reveal": "always",
71
+ "panel": "shared"
72
+ }
73
+ }
74
+ ],
75
+ "inputs": [
76
+ {
77
+ "id": "incrementType",
78
+ "type": "pickString",
79
+ "description": "Select the version increment type",
80
+ "options": [
81
+ "major",
82
+ "minor",
83
+ "patch"
84
+ ],
85
+ "default": "patch"
86
+ }
87
+ ]
88
+ }
@@ -0,0 +1,15 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog).
9
+
10
+ ## Unreleased
11
+
12
+ ### Commits
13
+
14
+ - [INIT] Initial commit [`5649253`](https://github.com/healkeiser/fxhoudinimcp/commit/5649253c60768cecb4397b0bd6c9dbe80a97e96e)
15
+ - [STYLE] Package name refactoring [`f7dc5ad`](https://github.com/healkeiser/fxhoudinimcp/commit/f7dc5adba4c7dd7638c1b4883cd64d76ae506d9e)
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 FXHoudini-MCP Contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.