@uniswap/ai-toolkit-nx-claude 0.5.23-next.0 → 0.5.24-next.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/content/commands/agnostic/CLAUDE.md +2 -1
- package/dist/content/commands/agnostic/git-worktree-orchestrator.md +248 -11
- package/dist/generators/addons/generator.cjs +1 -1
- package/dist/generators/init/CLAUDE.md +1 -1
- package/dist/generators/init/generator.cjs +30 -114
- package/dist/index.cjs +1 -1
- package/dist/packages/ai-toolkit-nx-claude/src/generators/init/generator.d.ts.map +1 -1
- package/dist/packages/ai-toolkit-nx-claude/src/utils/auto-update-utils.d.ts.map +1 -1
- package/package.json +3 -3
|
@@ -35,7 +35,7 @@ Language-agnostic slash command definitions for Claude Code. Each markdown file
|
|
|
35
35
|
- `work-through-pr-comments.md` - Methodically work through PR comments
|
|
36
36
|
- `generate-commit-message.md` - Generate structured commit messages
|
|
37
37
|
- `split-stack.md` - Split Graphite PR stacks
|
|
38
|
-
- `git-worktree-orchestrator.md` - Create and manage git worktrees with spec-workflow and Linear integration
|
|
38
|
+
- `git-worktree-orchestrator.md` - Create and manage git worktrees with spec-workflow, Graphite, setup scripts, and Linear integration
|
|
39
39
|
|
|
40
40
|
### Documentation
|
|
41
41
|
|
|
@@ -118,6 +118,7 @@ Commands that manage larger processes:
|
|
|
118
118
|
- `/implement-spec` - Spec task implementation
|
|
119
119
|
- `/execute-plan` - Plan execution
|
|
120
120
|
- `/work-through-pr-comments` - Comment resolution workflow
|
|
121
|
+
- `/git-worktree-orchestrator` - Worktree creation with Graphite, setup scripts, and Linear automation
|
|
121
122
|
|
|
122
123
|
## Development
|
|
123
124
|
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: git-worktree-orchestrator
|
|
3
|
-
description: Create and manage a git worktree based on the current directory and a branch name, with optional spec-workflow setup and Linear task automation.
|
|
4
|
-
argument-hint: <branch-name> [linear-task-id]
|
|
3
|
+
description: Create and manage a git worktree based on the current directory and a branch name, with optional spec-workflow setup, Graphite integration, and Linear task automation.
|
|
4
|
+
argument-hint: <branch-name> [--graphite [--trunk <branch>]] [--setup <script-or-command>] [linear-task-id]
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# Git Worktree Orchestrator
|
|
8
8
|
|
|
9
9
|
Create and manage a git worktree based on the current directory and a branch name. After creating the worktree, it copies the .spec-workflow directory, adds the spec-workflow MCP, and can optionally commit/push, open a PR, and clean up the worktree. It also copies other files from the root git worktree into the newly created worktree.
|
|
10
10
|
|
|
11
|
+
Supports Graphite integration to track the new branch on top of a trunk branch, and can run a setup script immediately after creating the worktree.
|
|
12
|
+
|
|
11
13
|
Optionally accepts a Linear task ID to automatically spawn a new Claude Code instance that will complete the task autonomously.
|
|
12
14
|
|
|
13
15
|
## Usage
|
|
@@ -16,13 +18,28 @@ Optionally accepts a Linear task ID to automatically spawn a new Claude Code ins
|
|
|
16
18
|
# Create worktree for a new branch
|
|
17
19
|
/git-worktree-orchestrator add-new-color
|
|
18
20
|
|
|
19
|
-
# Create worktree
|
|
20
|
-
/git-worktree-orchestrator feature/
|
|
21
|
+
# Create worktree with Graphite tracking (will prompt for trunk branch)
|
|
22
|
+
/git-worktree-orchestrator feature/new-ui --graphite
|
|
23
|
+
|
|
24
|
+
# Create worktree with Graphite tracking on specific trunk
|
|
25
|
+
/git-worktree-orchestrator feature/new-ui --graphite --trunk main
|
|
26
|
+
|
|
27
|
+
# Create worktree and run a setup script
|
|
28
|
+
/git-worktree-orchestrator feature/setup-test --setup "./scripts/setup-dev.sh"
|
|
29
|
+
|
|
30
|
+
# Create worktree and run an inline setup command
|
|
31
|
+
/git-worktree-orchestrator feature/npm-setup --setup "npm install && npm run build"
|
|
32
|
+
|
|
33
|
+
# Full example with all options
|
|
34
|
+
/git-worktree-orchestrator feature/auth-system --graphite --trunk main --setup "npm ci" DEV-1234
|
|
21
35
|
```
|
|
22
36
|
|
|
23
37
|
## Arguments
|
|
24
38
|
|
|
25
39
|
- **branch** (required): Branch name to create/use for the worktree
|
|
40
|
+
- **--graphite, -g** (optional): Enable Graphite integration to track the branch
|
|
41
|
+
- **--trunk <branch>** (optional): Trunk branch name for Graphite tracking (defaults to prompting user, or 'main' if not specified)
|
|
42
|
+
- **--setup <script-or-command>** (optional): Setup script file path or inline command to run after creating the worktree
|
|
26
43
|
- **linear_task_id** (optional): Linear task ID (e.g., DEV-1234) to complete autonomously in the new worktree
|
|
27
44
|
|
|
28
45
|
## Prerequisites
|
|
@@ -30,6 +47,7 @@ Optionally accepts a Linear task ID to automatically spawn a new Claude Code ins
|
|
|
30
47
|
- git (2.5+ for worktree support)
|
|
31
48
|
- claude CLI (for MCP registration and spawning new instances)
|
|
32
49
|
- gh (optional, for PR creation)
|
|
50
|
+
- gt (optional, for Graphite integration)
|
|
33
51
|
|
|
34
52
|
## Workflow Steps
|
|
35
53
|
|
|
@@ -64,7 +82,36 @@ Registers the spec-workflow MCP with Claude for the new worktree directory:
|
|
|
64
82
|
claude mcp add spec-workflow "npx @uniswap/spec-workflow-mcp@latest" "$NEW_DIR"
|
|
65
83
|
```
|
|
66
84
|
|
|
67
|
-
### Step 6: Optional
|
|
85
|
+
### Step 6: Graphite Integration (Optional)
|
|
86
|
+
|
|
87
|
+
If Graphite is enabled (via `--graphite` flag or user prompt):
|
|
88
|
+
|
|
89
|
+
1. Prompts for trunk branch if not provided via `--trunk`
|
|
90
|
+
2. Runs `gt track` in the new worktree to track the branch on top of the trunk branch
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
gt track --trunk "$TRUNK_BRANCH"
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### Step 7: Setup Script Execution (Optional)
|
|
97
|
+
|
|
98
|
+
If a setup script is provided (via `--setup` flag or user prompt):
|
|
99
|
+
|
|
100
|
+
1. Detects whether the input is a file path or inline command
|
|
101
|
+
2. If file: validates existence and executes it
|
|
102
|
+
3. If inline command: executes directly in the worktree directory
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
# File execution
|
|
106
|
+
if [[ -f "$SETUP_SCRIPT" ]]; then
|
|
107
|
+
bash "$SETUP_SCRIPT"
|
|
108
|
+
else
|
|
109
|
+
# Inline command execution
|
|
110
|
+
eval "$SETUP_SCRIPT"
|
|
111
|
+
fi
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### Step 8: Optional Operations
|
|
68
115
|
|
|
69
116
|
Interactive prompts for:
|
|
70
117
|
|
|
@@ -73,7 +120,7 @@ Interactive prompts for:
|
|
|
73
120
|
- **Create PR**: Create a pull request via `gh` or provide URL for manual creation
|
|
74
121
|
- **Cleanup**: Remove the worktree after work is complete
|
|
75
122
|
|
|
76
|
-
### Step
|
|
123
|
+
### Step 9: Linear Task Automation
|
|
77
124
|
|
|
78
125
|
If a Linear task ID is provided, optionally spawns a new Claude Code instance to:
|
|
79
126
|
|
|
@@ -91,13 +138,68 @@ If a Linear task ID is provided, optionally spawns a new Claude Code instance to
|
|
|
91
138
|
#!/usr/bin/env bash
|
|
92
139
|
set -euo pipefail
|
|
93
140
|
|
|
94
|
-
#
|
|
95
|
-
BRANCH="
|
|
96
|
-
LINEAR_TASK_ID="
|
|
141
|
+
# Initialize variables
|
|
142
|
+
BRANCH=""
|
|
143
|
+
LINEAR_TASK_ID=""
|
|
144
|
+
USE_GRAPHITE=""
|
|
145
|
+
TRUNK_BRANCH=""
|
|
146
|
+
SETUP_SCRIPT=""
|
|
147
|
+
|
|
148
|
+
# Parse arguments
|
|
149
|
+
while [[ $# -gt 0 ]]; do
|
|
150
|
+
case "$1" in
|
|
151
|
+
--graphite|-g)
|
|
152
|
+
USE_GRAPHITE="true"
|
|
153
|
+
shift
|
|
154
|
+
;;
|
|
155
|
+
--trunk)
|
|
156
|
+
if [[ -n "${2:-}" && ! "$2" =~ ^- ]]; then
|
|
157
|
+
TRUNK_BRANCH="$2"
|
|
158
|
+
shift 2
|
|
159
|
+
else
|
|
160
|
+
echo "Error: --trunk requires a branch name argument"
|
|
161
|
+
exit 1
|
|
162
|
+
fi
|
|
163
|
+
;;
|
|
164
|
+
--setup)
|
|
165
|
+
if [[ -n "${2:-}" && ! "$2" =~ ^- ]]; then
|
|
166
|
+
SETUP_SCRIPT="$2"
|
|
167
|
+
shift 2
|
|
168
|
+
else
|
|
169
|
+
echo "Error: --setup requires a script path or command argument"
|
|
170
|
+
exit 1
|
|
171
|
+
fi
|
|
172
|
+
;;
|
|
173
|
+
-*)
|
|
174
|
+
echo "Error: Unknown option: $1"
|
|
175
|
+
echo "Usage: <command> <branch-name> [--graphite| -g] [--trunk <branch>] [--setup <script-or-command>] [linear-task-id]"
|
|
176
|
+
exit 1
|
|
177
|
+
;;
|
|
178
|
+
*)
|
|
179
|
+
# Positional arguments: first is branch, second is linear_task_id
|
|
180
|
+
if [[ -z "$BRANCH" ]]; then
|
|
181
|
+
BRANCH="$1"
|
|
182
|
+
elif [[ -z "$LINEAR_TASK_ID" ]]; then
|
|
183
|
+
LINEAR_TASK_ID="$1"
|
|
184
|
+
else
|
|
185
|
+
echo "Error: Unexpected argument: $1"
|
|
186
|
+
exit 1
|
|
187
|
+
fi
|
|
188
|
+
shift
|
|
189
|
+
;;
|
|
190
|
+
esac
|
|
191
|
+
done
|
|
192
|
+
|
|
193
|
+
# Also check for env-provided variables as fallback
|
|
194
|
+
BRANCH="${BRANCH:-${branch:-}}"
|
|
195
|
+
LINEAR_TASK_ID="${LINEAR_TASK_ID:-${linear_task_id:-}}"
|
|
196
|
+
USE_GRAPHITE="${USE_GRAPHITE:-${use_graphite:-}}"
|
|
197
|
+
TRUNK_BRANCH="${TRUNK_BRANCH:-${trunk_branch:-}}"
|
|
198
|
+
SETUP_SCRIPT="${SETUP_SCRIPT:-${setup_script:-}}"
|
|
97
199
|
|
|
98
200
|
if [[ -z "${BRANCH:-}" ]]; then
|
|
99
201
|
echo "Error: branch name is required."
|
|
100
|
-
echo "Usage: <command> <branch-name> [linear-task-id]"
|
|
202
|
+
echo "Usage: <command> <branch-name> [--graphite | -g] [--trunk <branch>] [--setup <script-or-command>] [linear-task-id]"
|
|
101
203
|
exit 1
|
|
102
204
|
fi
|
|
103
205
|
|
|
@@ -205,6 +307,98 @@ else
|
|
|
205
307
|
echo " claude mcp add spec-workflow npx @uniswap/spec-workflow-mcp@latest \"$NEW_DIR\""
|
|
206
308
|
fi
|
|
207
309
|
|
|
310
|
+
# Prompt for Graphite usage if not specified
|
|
311
|
+
if [[ -z "${USE_GRAPHITE:-}" ]]; then
|
|
312
|
+
echo ""
|
|
313
|
+
read -r -p "Use Graphite to track this branch? (y/N): " GRAPHITE_RESP || true
|
|
314
|
+
if [[ "$GRAPHITE_RESP" =~ ^[Yy]$ ]]; then
|
|
315
|
+
USE_GRAPHITE="true"
|
|
316
|
+
fi
|
|
317
|
+
fi
|
|
318
|
+
|
|
319
|
+
# Graphite integration
|
|
320
|
+
if [[ "${USE_GRAPHITE:-}" == "true" ]]; then
|
|
321
|
+
echo ""
|
|
322
|
+
echo "============================================"
|
|
323
|
+
echo "Graphite Integration"
|
|
324
|
+
echo "============================================"
|
|
325
|
+
|
|
326
|
+
if ! command -v gt >/dev/null 2>&1; then
|
|
327
|
+
echo "Warning: 'gt' (Graphite CLI) not found. Skipping Graphite setup."
|
|
328
|
+
echo "Install it from: https://graphite.dev/docs/installing-the-cli"
|
|
329
|
+
else
|
|
330
|
+
# Prompt for trunk branch if not provided
|
|
331
|
+
if [[ -z "${TRUNK_BRANCH:-}" ]]; then
|
|
332
|
+
DEFAULT_TRUNK="$(git -C "$NEW_DIR" remote show origin 2>/dev/null | sed -n 's/.*HEAD branch: //p')" || DEFAULT_TRUNK=""
|
|
333
|
+
DEFAULT_TRUNK="${DEFAULT_TRUNK:-main}"
|
|
334
|
+
read -r -p "Enter trunk branch name [$DEFAULT_TRUNK]: " TRUNK_INPUT || true
|
|
335
|
+
TRUNK_BRANCH="${TRUNK_INPUT:-$DEFAULT_TRUNK}"
|
|
336
|
+
fi
|
|
337
|
+
|
|
338
|
+
echo "Tracking branch '$BRANCH' on top of trunk '$TRUNK_BRANCH'..."
|
|
339
|
+
if ! gt -C "$NEW_DIR" track --trunk "$TRUNK_BRANCH"; then
|
|
340
|
+
echo "Warning: Failed to track branch with Graphite. You can run this manually:"
|
|
341
|
+
echo " cd \"$NEW_DIR\" && gt track --trunk \"$TRUNK_BRANCH\""
|
|
342
|
+
else
|
|
343
|
+
echo "Successfully tracked branch with Graphite."
|
|
344
|
+
fi
|
|
345
|
+
fi
|
|
346
|
+
fi
|
|
347
|
+
|
|
348
|
+
# Prompt for setup script if not provided
|
|
349
|
+
if [[ -z "${SETUP_SCRIPT:-}" ]]; then
|
|
350
|
+
echo ""
|
|
351
|
+
read -r -p "Run a setup script/command in the new worktree? (y/N): " SETUP_RESP || true
|
|
352
|
+
if [[ "$SETUP_RESP" =~ ^[Yy]$ ]]; then
|
|
353
|
+
read -r -p "Enter script path or inline command: " SETUP_SCRIPT || true
|
|
354
|
+
fi
|
|
355
|
+
fi
|
|
356
|
+
|
|
357
|
+
# Execute setup script if provided
|
|
358
|
+
if [[ -n "${SETUP_SCRIPT:-}" ]]; then
|
|
359
|
+
echo ""
|
|
360
|
+
echo "============================================"
|
|
361
|
+
echo "Running Setup Script"
|
|
362
|
+
echo "============================================"
|
|
363
|
+
echo "Executing: $SETUP_SCRIPT"
|
|
364
|
+
echo ""
|
|
365
|
+
|
|
366
|
+
# Change to the new worktree directory for script execution
|
|
367
|
+
pushd "$NEW_DIR" >/dev/null
|
|
368
|
+
|
|
369
|
+
# Check if it's a file path (absolute or relative to original directory)
|
|
370
|
+
SCRIPT_PATH=""
|
|
371
|
+
if [[ -f "$SETUP_SCRIPT" ]]; then
|
|
372
|
+
SCRIPT_PATH="$SETUP_SCRIPT"
|
|
373
|
+
elif [[ -f "$CWD/$SETUP_SCRIPT" ]]; then
|
|
374
|
+
SCRIPT_PATH="$CWD/$SETUP_SCRIPT"
|
|
375
|
+
elif [[ -f "$REPO_ROOT/$SETUP_SCRIPT" ]]; then
|
|
376
|
+
SCRIPT_PATH="$REPO_ROOT/$SETUP_SCRIPT"
|
|
377
|
+
fi
|
|
378
|
+
|
|
379
|
+
if [[ -n "$SCRIPT_PATH" ]]; then
|
|
380
|
+
echo "Running script file: $SCRIPT_PATH"
|
|
381
|
+
if [[ -x "$SCRIPT_PATH" ]]; then
|
|
382
|
+
"$SCRIPT_PATH"
|
|
383
|
+
else
|
|
384
|
+
bash "$SCRIPT_PATH"
|
|
385
|
+
fi
|
|
386
|
+
else
|
|
387
|
+
# Treat as inline command
|
|
388
|
+
echo "Running inline command..."
|
|
389
|
+
eval "$SETUP_SCRIPT"
|
|
390
|
+
fi
|
|
391
|
+
|
|
392
|
+
SETUP_EXIT_CODE=$?
|
|
393
|
+
popd >/dev/null
|
|
394
|
+
|
|
395
|
+
if [[ $SETUP_EXIT_CODE -eq 0 ]]; then
|
|
396
|
+
echo "Setup script completed successfully."
|
|
397
|
+
else
|
|
398
|
+
echo "Warning: Setup script exited with code $SETUP_EXIT_CODE"
|
|
399
|
+
fi
|
|
400
|
+
fi
|
|
401
|
+
|
|
208
402
|
# Prompt for Linear task ID if not provided
|
|
209
403
|
if [[ -z "${LINEAR_TASK_ID:-}" ]]; then
|
|
210
404
|
echo ""
|
|
@@ -361,7 +555,8 @@ The command creates worktrees in a sibling directory pattern:
|
|
|
361
555
|
- **Spec Workflow**: Symlinks `.spec-workflow` from the main repo to enable spec-workflow MCP functionality
|
|
362
556
|
- **Claude Settings**: Copies local Claude settings to maintain consistent behavior
|
|
363
557
|
- **Linear Integration**: Supports autonomous task completion when provided with a Linear task ID
|
|
364
|
-
- **Graphite
|
|
558
|
+
- **Graphite Integration**: Built-in support for `gt track` to manage branch stacks; tracks new branches on specified trunk
|
|
559
|
+
- **Setup Scripts**: Runs custom setup scripts or commands (e.g., `npm install`, `./scripts/setup.sh`) after worktree creation
|
|
365
560
|
|
|
366
561
|
## Merging Work Back
|
|
367
562
|
|
|
@@ -407,4 +602,46 @@ claude mcp add spec-workflow "npx @uniswap/spec-workflow-mcp@latest" "/path/to/w
|
|
|
407
602
|
|
|
408
603
|
**Solution:** Install Claude Code from <https://claude.ai/download>
|
|
409
604
|
|
|
605
|
+
### "gt (Graphite CLI) not found"
|
|
606
|
+
|
|
607
|
+
**Solution:** Install the Graphite CLI:
|
|
608
|
+
|
|
609
|
+
```bash
|
|
610
|
+
npm install -g @withgraphite/graphite-cli
|
|
611
|
+
```
|
|
612
|
+
|
|
613
|
+
Or follow the installation guide at <https://graphite.dev/docs/installing-the-cli>
|
|
614
|
+
|
|
615
|
+
### "Failed to track branch with Graphite"
|
|
616
|
+
|
|
617
|
+
**Solution:** Ensure you're in a Graphite-enabled repository and the trunk branch exists:
|
|
618
|
+
|
|
619
|
+
```bash
|
|
620
|
+
cd /path/to/worktree
|
|
621
|
+
gt init # If not already initialized
|
|
622
|
+
gt track --trunk main
|
|
623
|
+
```
|
|
624
|
+
|
|
625
|
+
### "Setup script failed"
|
|
626
|
+
|
|
627
|
+
**Solution:** Check that your script:
|
|
628
|
+
|
|
629
|
+
1. Exists at the specified path (relative to CWD or repo root)
|
|
630
|
+
2. Has proper execute permissions (`chmod +x script.sh`)
|
|
631
|
+
3. Returns exit code 0 on success
|
|
632
|
+
|
|
633
|
+
You can test the script manually:
|
|
634
|
+
|
|
635
|
+
```bash
|
|
636
|
+
cd /path/to/worktree
|
|
637
|
+
./your-script.sh # or: bash your-script.sh
|
|
638
|
+
```
|
|
639
|
+
|
|
640
|
+
### "Setup command not found"
|
|
641
|
+
|
|
642
|
+
**Solution:** Inline commands are executed with `eval` in the worktree directory. Ensure:
|
|
643
|
+
|
|
644
|
+
1. The command is available in your PATH
|
|
645
|
+
2. You're using proper shell syntax for chained commands (`&&` for sequential, `;` for independent)
|
|
646
|
+
|
|
410
647
|
Arguments: $ARGUMENTS
|
|
@@ -211,7 +211,7 @@ var init_addon_registry = __esm({
|
|
|
211
211
|
mcp: {
|
|
212
212
|
serverName: "slack",
|
|
213
213
|
command: "npx",
|
|
214
|
-
args: ["-y", "@zencoderai/slack-mcp-server", "
|
|
214
|
+
args: ["-y", "-p", "@zencoderai/slack-mcp-server", "slack-mcp"],
|
|
215
215
|
env: {
|
|
216
216
|
SLACK_BOT_TOKEN: "PROMPT_TO_INSERT_SLACK_BOT_TOKEN",
|
|
217
217
|
SLACK_TEAM_ID: "TKZBCKUJJ"
|
|
@@ -162,7 +162,7 @@ echo "export AI_TOOLKIT_SKIP_UPDATE_CHECK=1" >> ~/.zshrc
|
|
|
162
162
|
|
|
163
163
|
- If update checker installation fails, a warning is shown but installation continues
|
|
164
164
|
- Failure is treated as non-critical (user can still use installed commands/agents)
|
|
165
|
-
- Users are advised to report issues
|
|
165
|
+
- Users are advised to report issues at <https://github.com/Uniswap/ai-toolkit/issues>
|
|
166
166
|
|
|
167
167
|
### Installation Modes
|
|
168
168
|
|
|
@@ -211,7 +211,7 @@ var init_addon_registry = __esm({
|
|
|
211
211
|
mcp: {
|
|
212
212
|
serverName: "slack",
|
|
213
213
|
command: "npx",
|
|
214
|
-
args: ["-y", "@zencoderai/slack-mcp-server", "
|
|
214
|
+
args: ["-y", "-p", "@zencoderai/slack-mcp-server", "slack-mcp"],
|
|
215
215
|
env: {
|
|
216
216
|
SLACK_BOT_TOKEN: "PROMPT_TO_INSERT_SLACK_BOT_TOKEN",
|
|
217
217
|
SLACK_TEAM_ID: "TKZBCKUJJ"
|
|
@@ -922,13 +922,7 @@ function getCurrentToolkitVersion() {
|
|
|
922
922
|
return packageJson.version;
|
|
923
923
|
} catch (error) {
|
|
924
924
|
import_devkit.logger.info("checking parent directory for package.json");
|
|
925
|
-
const packageJsonPath = path.join(
|
|
926
|
-
__dirname,
|
|
927
|
-
"..",
|
|
928
|
-
"..",
|
|
929
|
-
"..",
|
|
930
|
-
"package.json"
|
|
931
|
-
);
|
|
925
|
+
const packageJsonPath = path.join(__dirname, "..", "..", "..", "package.json");
|
|
932
926
|
const packageJson = JSON.parse(fs2.readFileSync(packageJsonPath, "utf-8"));
|
|
933
927
|
return packageJson.version;
|
|
934
928
|
}
|
|
@@ -977,7 +971,7 @@ _ai_toolkit_check_updates() {
|
|
|
977
971
|
if command -v npm >/dev/null 2>&1; then
|
|
978
972
|
if ! npm view @uniswap/ai-toolkit-nx-claude@latest version >/dev/null 2>&1; then
|
|
979
973
|
echo "\u26A0\uFE0F Failed to check for AI Toolkit updates (npm registry unavailable)"
|
|
980
|
-
echo "\u{1F41E} Please report this bug
|
|
974
|
+
echo "\u{1F41E} Please report this bug at https://github.com/Uniswap/ai-toolkit/issues"
|
|
981
975
|
return
|
|
982
976
|
fi
|
|
983
977
|
|
|
@@ -1031,7 +1025,7 @@ function _ai_toolkit_check_updates
|
|
|
1031
1025
|
if command -v npm >/dev/null 2>&1
|
|
1032
1026
|
if not npm view @uniswap/ai-toolkit-nx-claude@latest version >/dev/null 2>&1
|
|
1033
1027
|
echo "\u26A0\uFE0F Failed to check for AI Toolkit updates (npm registry unavailable)"
|
|
1034
|
-
echo "\u{1F41E} Please report this bug
|
|
1028
|
+
echo "\u{1F41E} Please report this bug at https://github.com/Uniswap/ai-toolkit/issues"
|
|
1035
1029
|
return
|
|
1036
1030
|
end
|
|
1037
1031
|
|
|
@@ -1063,19 +1057,14 @@ function installUpdateChecker(shell, version) {
|
|
|
1063
1057
|
let configContent = fs2.readFileSync(configPath, "utf-8");
|
|
1064
1058
|
const startMarker = "# AUTOMATED BY AI_TOOLKIT_UPDATE_CHECK";
|
|
1065
1059
|
const endMarker = "# END AI_TOOLKIT_UPDATE_CHECK";
|
|
1066
|
-
const blockRegex = new RegExp(
|
|
1067
|
-
`${startMarker}[\\s\\S]*?${endMarker}\\n?`,
|
|
1068
|
-
"g"
|
|
1069
|
-
);
|
|
1060
|
+
const blockRegex = new RegExp(`${startMarker}[\\s\\S]*?${endMarker}\\n?`, "g");
|
|
1070
1061
|
configContent = configContent.replace(blockRegex, "");
|
|
1071
1062
|
const snippet = shell === "fish" ? generateFishAutoUpdateSnippet(version) : generateAutoUpdateSnippet(version);
|
|
1072
1063
|
const prefix = configContent.trim() ? "\n\n" : "";
|
|
1073
1064
|
const updatedContent = configContent + prefix + snippet + "\n";
|
|
1074
1065
|
fs2.writeFileSync(configPath, updatedContent);
|
|
1075
1066
|
import_devkit.logger.info(`\u2705 Update checker installed to ${configPath}`);
|
|
1076
|
-
import_devkit.logger.info(
|
|
1077
|
-
` Checks once per week, disable with: export AI_TOOLKIT_SKIP_UPDATE_CHECK=1`
|
|
1078
|
-
);
|
|
1067
|
+
import_devkit.logger.info(` Checks once per week, disable with: export AI_TOOLKIT_SKIP_UPDATE_CHECK=1`);
|
|
1079
1068
|
}
|
|
1080
1069
|
|
|
1081
1070
|
// packages/commands/agnostic/dist/src/index.js
|
|
@@ -1133,7 +1122,7 @@ var commands = {
|
|
|
1133
1122
|
filePath: "./generate-commit-message.md"
|
|
1134
1123
|
},
|
|
1135
1124
|
"git-worktree-orchestrator": {
|
|
1136
|
-
description: "Create and manage a git worktree based on the current directory and a branch name, with optional spec-workflow setup and Linear task automation.",
|
|
1125
|
+
description: "Create and manage a git worktree based on the current directory and a branch name, with optional spec-workflow setup, Graphite integration, and Linear task automation.",
|
|
1137
1126
|
filePath: "./git-worktree-orchestrator.md"
|
|
1138
1127
|
},
|
|
1139
1128
|
"implement-spec": {
|
|
@@ -2816,13 +2805,7 @@ function showGeneralMcpInstructions(installedAddons) {
|
|
|
2816
2805
|
}
|
|
2817
2806
|
|
|
2818
2807
|
// packages/ai-toolkit-nx-claude/src/generators/init/generator.ts
|
|
2819
|
-
var DEFAULT_COMMANDS = [
|
|
2820
|
-
"explore",
|
|
2821
|
-
"plan",
|
|
2822
|
-
"review-plan",
|
|
2823
|
-
"execute-plan",
|
|
2824
|
-
"address-pr-issues"
|
|
2825
|
-
];
|
|
2808
|
+
var DEFAULT_COMMANDS = ["explore", "plan", "review-plan", "execute-plan", "address-pr-issues"];
|
|
2826
2809
|
var DEFAULT_AGENTS = [
|
|
2827
2810
|
"context-loader",
|
|
2828
2811
|
"planner",
|
|
@@ -2866,17 +2849,13 @@ async function initGenerator(tree, options) {
|
|
|
2866
2849
|
import_devkit7.logger.info("\u{1F50D} DRY RUN: Claude CLI is not installed");
|
|
2867
2850
|
import_devkit7.logger.info("Would attempt installation in this order:");
|
|
2868
2851
|
import_devkit7.logger.info(" 1. curl -fsSL https://claude.ai/install.sh | bash");
|
|
2869
|
-
import_devkit7.logger.info(
|
|
2870
|
-
" 2. npm install -g @anthropic-ai/claude-code (if curl fails)"
|
|
2871
|
-
);
|
|
2852
|
+
import_devkit7.logger.info(" 2. npm install -g @anthropic-ai/claude-code (if curl fails)");
|
|
2872
2853
|
import_devkit7.logger.info(" 3. Manual instructions (if both fail)");
|
|
2873
2854
|
}
|
|
2874
2855
|
const installMode = options.installMode;
|
|
2875
2856
|
if (installMode === "default") {
|
|
2876
2857
|
import_devkit7.logger.info("\u{1F4E6} Default Installation Mode");
|
|
2877
|
-
import_devkit7.logger.info(
|
|
2878
|
-
" Installing recommended setup with pre-selected components\n"
|
|
2879
|
-
);
|
|
2858
|
+
import_devkit7.logger.info(" Installing recommended setup with pre-selected components\n");
|
|
2880
2859
|
options.installMode = "default";
|
|
2881
2860
|
options.installationType = "global";
|
|
2882
2861
|
options.commands = DEFAULT_COMMANDS;
|
|
@@ -2905,16 +2884,10 @@ async function initGenerator(tree, options) {
|
|
|
2905
2884
|
}
|
|
2906
2885
|
const schemaPath = path5.join(__dirname, "schema.json");
|
|
2907
2886
|
const commandDescriptions = Object.fromEntries(
|
|
2908
|
-
Object.entries(commands).map(([key, value]) => [
|
|
2909
|
-
key,
|
|
2910
|
-
value.description
|
|
2911
|
-
])
|
|
2887
|
+
Object.entries(commands).map(([key, value]) => [key, value.description])
|
|
2912
2888
|
);
|
|
2913
2889
|
const agentDescriptions = Object.fromEntries(
|
|
2914
|
-
Object.entries(agents).map(([key, value]) => [
|
|
2915
|
-
key,
|
|
2916
|
-
value.description
|
|
2917
|
-
])
|
|
2890
|
+
Object.entries(agents).map(([key, value]) => [key, value.description])
|
|
2918
2891
|
);
|
|
2919
2892
|
const homeDir = os4.homedir();
|
|
2920
2893
|
const globalDir = path5.join(homeDir, ".claude");
|
|
@@ -2924,21 +2897,13 @@ async function initGenerator(tree, options) {
|
|
|
2924
2897
|
"commands",
|
|
2925
2898
|
Object.keys(commands)
|
|
2926
2899
|
);
|
|
2927
|
-
const globalExistingAgents = checkExistingFiles(
|
|
2928
|
-
globalDir,
|
|
2929
|
-
"agents",
|
|
2930
|
-
Object.keys(agents)
|
|
2931
|
-
);
|
|
2900
|
+
const globalExistingAgents = checkExistingFiles(globalDir, "agents", Object.keys(agents));
|
|
2932
2901
|
const localExistingCommands = checkExistingFiles(
|
|
2933
2902
|
localDir,
|
|
2934
2903
|
"commands",
|
|
2935
2904
|
Object.keys(commands)
|
|
2936
2905
|
);
|
|
2937
|
-
const localExistingAgents = checkExistingFiles(
|
|
2938
|
-
localDir,
|
|
2939
|
-
"agents",
|
|
2940
|
-
Object.keys(agents)
|
|
2941
|
-
);
|
|
2906
|
+
const localExistingAgents = checkExistingFiles(localDir, "agents", Object.keys(agents));
|
|
2942
2907
|
const optionsWithNoInteractive = {
|
|
2943
2908
|
...options,
|
|
2944
2909
|
"no-interactive": nxNoInteractiveProvided || options.nonInteractive
|
|
@@ -2975,15 +2940,11 @@ async function initGenerator(tree, options) {
|
|
|
2975
2940
|
}
|
|
2976
2941
|
if (normalizedOptions.commandSelectionMode === "all") {
|
|
2977
2942
|
normalizedOptions.commands = Object.keys(commands);
|
|
2978
|
-
import_devkit7.logger.info(
|
|
2979
|
-
`\u{1F4DD} All commands selected (${normalizedOptions.commands.length} total)`
|
|
2980
|
-
);
|
|
2943
|
+
import_devkit7.logger.info(`\u{1F4DD} All commands selected (${normalizedOptions.commands.length} total)`);
|
|
2981
2944
|
}
|
|
2982
2945
|
if (normalizedOptions.agentSelectionMode === "all") {
|
|
2983
2946
|
normalizedOptions.agents = Object.keys(agents);
|
|
2984
|
-
import_devkit7.logger.info(
|
|
2985
|
-
`\u{1F916} All agents selected (${normalizedOptions.agents.length} total)`
|
|
2986
|
-
);
|
|
2947
|
+
import_devkit7.logger.info(`\u{1F916} All agents selected (${normalizedOptions.agents.length} total)`);
|
|
2987
2948
|
}
|
|
2988
2949
|
if (normalizedOptions.installCommands === false) {
|
|
2989
2950
|
normalizedOptions.commands = [];
|
|
@@ -3018,24 +2979,14 @@ async function initGenerator(tree, options) {
|
|
|
3018
2979
|
const commandsToInstall = normalizedOptions.commands || [];
|
|
3019
2980
|
for (const commandName of commandsToInstall) {
|
|
3020
2981
|
let sourcePath = null;
|
|
3021
|
-
const bundledContentDir = path5.join(
|
|
3022
|
-
__dirname,
|
|
3023
|
-
"..",
|
|
3024
|
-
"..",
|
|
3025
|
-
"content",
|
|
3026
|
-
"commands"
|
|
3027
|
-
);
|
|
2982
|
+
const bundledContentDir = path5.join(__dirname, "..", "..", "content", "commands");
|
|
3028
2983
|
if (fs5.existsSync(bundledContentDir)) {
|
|
3029
2984
|
const contentSubDirs = fs5.readdirSync(bundledContentDir).filter((item) => {
|
|
3030
2985
|
const itemPath = path5.join(bundledContentDir, item);
|
|
3031
2986
|
return fs5.statSync(itemPath).isDirectory();
|
|
3032
2987
|
});
|
|
3033
2988
|
for (const subDir of contentSubDirs) {
|
|
3034
|
-
const potentialPath = path5.join(
|
|
3035
|
-
bundledContentDir,
|
|
3036
|
-
subDir,
|
|
3037
|
-
`${commandName}.md`
|
|
3038
|
-
);
|
|
2989
|
+
const potentialPath = path5.join(bundledContentDir, subDir, `${commandName}.md`);
|
|
3039
2990
|
if (fs5.existsSync(potentialPath)) {
|
|
3040
2991
|
sourcePath = potentialPath;
|
|
3041
2992
|
break;
|
|
@@ -3050,12 +3001,7 @@ async function initGenerator(tree, options) {
|
|
|
3050
3001
|
return fs5.statSync(itemPath).isDirectory();
|
|
3051
3002
|
});
|
|
3052
3003
|
for (const subDir of commandSubDirs) {
|
|
3053
|
-
const potentialPath = path5.join(
|
|
3054
|
-
commandsBaseDir,
|
|
3055
|
-
subDir,
|
|
3056
|
-
"src",
|
|
3057
|
-
`${commandName}.md`
|
|
3058
|
-
);
|
|
3004
|
+
const potentialPath = path5.join(commandsBaseDir, subDir, "src", `${commandName}.md`);
|
|
3059
3005
|
if (fs5.existsSync(potentialPath)) {
|
|
3060
3006
|
sourcePath = potentialPath;
|
|
3061
3007
|
break;
|
|
@@ -3064,10 +3010,7 @@ async function initGenerator(tree, options) {
|
|
|
3064
3010
|
}
|
|
3065
3011
|
}
|
|
3066
3012
|
const destPath = path5.join(commandsDir, `${commandName}.md`);
|
|
3067
|
-
const relativeDestPath = path5.join(
|
|
3068
|
-
relativeCommandsDir,
|
|
3069
|
-
`${commandName}.md`
|
|
3070
|
-
);
|
|
3013
|
+
const relativeDestPath = path5.join(relativeCommandsDir, `${commandName}.md`);
|
|
3071
3014
|
try {
|
|
3072
3015
|
if (sourcePath && fs5.existsSync(sourcePath)) {
|
|
3073
3016
|
const content = fs5.readFileSync(sourcePath, "utf-8");
|
|
@@ -3086,24 +3029,14 @@ async function initGenerator(tree, options) {
|
|
|
3086
3029
|
const agentsToInstall = normalizedOptions.agents || [];
|
|
3087
3030
|
for (const agentName of agentsToInstall) {
|
|
3088
3031
|
let sourcePath = null;
|
|
3089
|
-
const bundledContentDir = path5.join(
|
|
3090
|
-
__dirname,
|
|
3091
|
-
"..",
|
|
3092
|
-
"..",
|
|
3093
|
-
"content",
|
|
3094
|
-
"agents"
|
|
3095
|
-
);
|
|
3032
|
+
const bundledContentDir = path5.join(__dirname, "..", "..", "content", "agents");
|
|
3096
3033
|
if (fs5.existsSync(bundledContentDir)) {
|
|
3097
3034
|
const contentSubDirs = fs5.readdirSync(bundledContentDir).filter((item) => {
|
|
3098
3035
|
const itemPath = path5.join(bundledContentDir, item);
|
|
3099
3036
|
return fs5.statSync(itemPath).isDirectory();
|
|
3100
3037
|
});
|
|
3101
3038
|
for (const subDir of contentSubDirs) {
|
|
3102
|
-
const potentialPath = path5.join(
|
|
3103
|
-
bundledContentDir,
|
|
3104
|
-
subDir,
|
|
3105
|
-
`${agentName}.md`
|
|
3106
|
-
);
|
|
3039
|
+
const potentialPath = path5.join(bundledContentDir, subDir, `${agentName}.md`);
|
|
3107
3040
|
if (fs5.existsSync(potentialPath)) {
|
|
3108
3041
|
sourcePath = potentialPath;
|
|
3109
3042
|
break;
|
|
@@ -3118,12 +3051,7 @@ async function initGenerator(tree, options) {
|
|
|
3118
3051
|
return fs5.statSync(itemPath).isDirectory();
|
|
3119
3052
|
});
|
|
3120
3053
|
for (const subDir of agentSubDirs) {
|
|
3121
|
-
const potentialPath = path5.join(
|
|
3122
|
-
agentsBaseDir,
|
|
3123
|
-
subDir,
|
|
3124
|
-
"src",
|
|
3125
|
-
`${agentName}.md`
|
|
3126
|
-
);
|
|
3054
|
+
const potentialPath = path5.join(agentsBaseDir, subDir, "src", `${agentName}.md`);
|
|
3127
3055
|
if (fs5.existsSync(potentialPath)) {
|
|
3128
3056
|
sourcePath = potentialPath;
|
|
3129
3057
|
break;
|
|
@@ -3164,9 +3092,7 @@ async function initGenerator(tree, options) {
|
|
|
3164
3092
|
import_devkit7.logger.info(" - Add update check script to your shell configuration");
|
|
3165
3093
|
import_devkit7.logger.info(" - Checks once per week for new versions");
|
|
3166
3094
|
import_devkit7.logger.info(" - Runs in background (non-blocking)");
|
|
3167
|
-
import_devkit7.logger.info(
|
|
3168
|
-
" - Can be disabled with: export AI_TOOLKIT_SKIP_UPDATE_CHECK=1"
|
|
3169
|
-
);
|
|
3095
|
+
import_devkit7.logger.info(" - Can be disabled with: export AI_TOOLKIT_SKIP_UPDATE_CHECK=1");
|
|
3170
3096
|
return;
|
|
3171
3097
|
}
|
|
3172
3098
|
if (!isDryRun) {
|
|
@@ -3192,7 +3118,7 @@ async function initGenerator(tree, options) {
|
|
|
3192
3118
|
} catch (error) {
|
|
3193
3119
|
import_devkit7.logger.warn(`\u26A0\uFE0F Failed to install update checker: ${error}`);
|
|
3194
3120
|
import_devkit7.logger.info(
|
|
3195
|
-
"This is a bug in ai-toolkit, please report it
|
|
3121
|
+
"This is a bug in ai-toolkit, please report it at https://github.com/Uniswap/ai-toolkit/issues"
|
|
3196
3122
|
);
|
|
3197
3123
|
}
|
|
3198
3124
|
if (normalizedOptions.installHooks) {
|
|
@@ -3257,15 +3183,11 @@ async function initGenerator(tree, options) {
|
|
|
3257
3183
|
}
|
|
3258
3184
|
} else {
|
|
3259
3185
|
if (normalizedOptions.installHooks) {
|
|
3260
|
-
import_devkit7.logger.info(
|
|
3261
|
-
"\n\u{1F50D} DRY RUN: Would install notification hooks (sound mode)"
|
|
3262
|
-
);
|
|
3186
|
+
import_devkit7.logger.info("\n\u{1F50D} DRY RUN: Would install notification hooks (sound mode)");
|
|
3263
3187
|
}
|
|
3264
3188
|
const installAddonsExplicit = explicitlyProvided.has("installAddons") || explicitlyProvided.has("install-addons");
|
|
3265
3189
|
if (normalizedOptions.installMode === "custom" && !installAddonsExplicit && !normalizedOptions.nonInteractive) {
|
|
3266
|
-
import_devkit7.logger.info(
|
|
3267
|
-
"\n\u{1F50D} DRY RUN: Would prompt to install spec-mcp-workflow addon after hooks"
|
|
3268
|
-
);
|
|
3190
|
+
import_devkit7.logger.info("\n\u{1F50D} DRY RUN: Would prompt to install spec-mcp-workflow addon after hooks");
|
|
3269
3191
|
} else if (normalizedOptions.installAddons) {
|
|
3270
3192
|
import_devkit7.logger.info("\n\u{1F50D} DRY RUN: Would install spec-mcp-workflow addon");
|
|
3271
3193
|
}
|
|
@@ -3359,9 +3281,7 @@ async function verifyInstallation2(method) {
|
|
|
3359
3281
|
import_devkit7.logger.info('You can also run "claude --version" to verify');
|
|
3360
3282
|
} catch {
|
|
3361
3283
|
import_devkit7.logger.warn("\u26A0\uFE0F Claude CLI not found in PATH");
|
|
3362
|
-
import_devkit7.logger.info(
|
|
3363
|
-
"You may need to restart your terminal or add Claude to your PATH"
|
|
3364
|
-
);
|
|
3284
|
+
import_devkit7.logger.info("You may need to restart your terminal or add Claude to your PATH");
|
|
3365
3285
|
}
|
|
3366
3286
|
}
|
|
3367
3287
|
function provideManualInstructions() {
|
|
@@ -3369,12 +3289,8 @@ function provideManualInstructions() {
|
|
|
3369
3289
|
import_devkit7.logger.info("\n\u{1F4DA} Manual Installation Instructions:");
|
|
3370
3290
|
import_devkit7.logger.info("1. Via curl: curl -fsSL https://claude.ai/install.sh | bash");
|
|
3371
3291
|
import_devkit7.logger.info("2. Via npm: npm install -g @anthropic-ai/claude-code");
|
|
3372
|
-
import_devkit7.logger.info(
|
|
3373
|
-
|
|
3374
|
-
);
|
|
3375
|
-
import_devkit7.logger.info(
|
|
3376
|
-
'\nFor troubleshooting, run "claude doctor" after manual installation'
|
|
3377
|
-
);
|
|
3292
|
+
import_devkit7.logger.info("3. Visit: https://claude.ai/download for platform-specific instructions");
|
|
3293
|
+
import_devkit7.logger.info('\nFor troubleshooting, run "claude doctor" after manual installation');
|
|
3378
3294
|
}
|
|
3379
3295
|
var generator_default2 = initGenerator;
|
|
3380
3296
|
// Annotate the CommonJS export names for ESM import in node:
|
package/dist/index.cjs
CHANGED
|
@@ -211,7 +211,7 @@ var init_addon_registry = __esm({
|
|
|
211
211
|
mcp: {
|
|
212
212
|
serverName: "slack",
|
|
213
213
|
command: "npx",
|
|
214
|
-
args: ["-y", "@zencoderai/slack-mcp-server", "
|
|
214
|
+
args: ["-y", "-p", "@zencoderai/slack-mcp-server", "slack-mcp"],
|
|
215
215
|
env: {
|
|
216
216
|
SLACK_BOT_TOKEN: "PROMPT_TO_INSERT_SLACK_BOT_TOKEN",
|
|
217
217
|
SLACK_TEAM_ID: "TKZBCKUJJ"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../../../../../src/generators/init/generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAOvC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../../../../../src/generators/init/generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAOvC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAyDpD,wBAAsB,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,mBAAmB,iBAif3E;AA4ID,eAAe,aAAa,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auto-update-utils.d.ts","sourceRoot":"","sources":["../../../../../src/utils/auto-update-utils.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;AAEhD,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,SAAS,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,
|
|
1
|
+
{"version":3,"file":"auto-update-utils.d.ts","sourceRoot":"","sources":["../../../../../src/utils/auto-update-utils.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;AAEhD,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,SAAS,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,CAejD;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,SAAS,CAKvC;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAQ3D;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CA8CjE;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAoDrE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAmC5E"}
|
package/package.json
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@uniswap/ai-toolkit-nx-claude",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.24-next.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"main": "./dist/index.cjs",
|
|
6
6
|
"module": "./dist/index.cjs",
|
|
7
7
|
"types": "./dist/index.d.ts",
|
|
8
8
|
"repository": {
|
|
9
9
|
"type": "git",
|
|
10
|
-
"url": "
|
|
10
|
+
"url": "https://github.com/Uniswap/ai-toolkit.git",
|
|
11
11
|
"directory": "packages/ai-toolkit-nx-claude"
|
|
12
12
|
},
|
|
13
13
|
"publishConfig": {
|
|
14
|
-
"access": "
|
|
14
|
+
"access": "public"
|
|
15
15
|
},
|
|
16
16
|
"bin": {
|
|
17
17
|
"ai-toolkit-nx-claude": "dist/cli-generator.cjs",
|