uloop-cli 0.70.1 → 1.1.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/README.md +4 -4
- package/README_ja.md +4 -4
- package/dist/cli.bundle.cjs +59 -14
- package/dist/cli.bundle.cjs.map +2 -2
- package/package.json +7 -7
- package/src/default-tools.json +29 -1
- package/src/skills/skills-command.ts +13 -5
- package/src/skills/target-config.ts +18 -5
- package/src/version.ts +1 -1
package/package.json
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "uloop-cli",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"//version": "x-release-please-version",
|
|
5
|
-
"description": "CLI tool for Unity Editor communication via
|
|
5
|
+
"description": "CLI tool for Unity Editor communication via Unity CLI Loop",
|
|
6
6
|
"main": "dist/cli.bundle.cjs",
|
|
7
7
|
"bin": {
|
|
8
8
|
"uloop": "./dist/cli.bundle.cjs"
|
|
9
9
|
},
|
|
10
10
|
"type": "module",
|
|
11
11
|
"scripts": {
|
|
12
|
-
"build": "esbuild src/cli.ts --bundle --platform=node --format=cjs --outfile=dist/cli.bundle.cjs --sourcemap --banner:js
|
|
12
|
+
"build": "esbuild src/cli.ts --bundle --platform=node --format=cjs --outfile=dist/cli.bundle.cjs --sourcemap --banner:js=\"#!/usr/bin/env node\" --loader:.md=text",
|
|
13
13
|
"lint": "eslint src",
|
|
14
14
|
"lint:fix": "eslint src --fix",
|
|
15
15
|
"format": "prettier --write src/**/*.ts",
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"license": "MIT",
|
|
28
28
|
"repository": {
|
|
29
29
|
"type": "git",
|
|
30
|
-
"url": "git+https://github.com/hatayama/
|
|
30
|
+
"url": "git+https://github.com/hatayama/unity-cli-loop.git",
|
|
31
31
|
"directory": "Packages/src/Cli~"
|
|
32
32
|
},
|
|
33
33
|
"bugs": {
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
},
|
|
36
36
|
"homepage": "https://github.com/hatayama/uLoopMCP#readme",
|
|
37
37
|
"engines": {
|
|
38
|
-
"node": ">=
|
|
38
|
+
"node": ">=22.0.0"
|
|
39
39
|
},
|
|
40
40
|
"publishConfig": {
|
|
41
41
|
"access": "public",
|
|
@@ -57,11 +57,11 @@
|
|
|
57
57
|
"eslint-plugin-prettier": "5.5.5",
|
|
58
58
|
"eslint-plugin-security": "4.0.0",
|
|
59
59
|
"jest": "30.3.0",
|
|
60
|
-
"knip": "5.
|
|
60
|
+
"knip": "5.87.0",
|
|
61
61
|
"prettier": "3.8.1",
|
|
62
62
|
"ts-jest": "29.4.6",
|
|
63
63
|
"typescript": "5.9.3",
|
|
64
|
-
"typescript-eslint": "8.57.
|
|
64
|
+
"typescript-eslint": "8.57.1"
|
|
65
65
|
},
|
|
66
66
|
"overrides": {
|
|
67
67
|
"minimatch": "10.2.4"
|
package/src/default-tools.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "
|
|
2
|
+
"version": "1.1.0",
|
|
3
3
|
"tools": [
|
|
4
4
|
{
|
|
5
5
|
"name": "compile",
|
|
@@ -530,6 +530,34 @@
|
|
|
530
530
|
}
|
|
531
531
|
}
|
|
532
532
|
}
|
|
533
|
+
},
|
|
534
|
+
{
|
|
535
|
+
"name": "simulate-keyboard",
|
|
536
|
+
"description": "Simulate keyboard key input in PlayMode via Input System. Supports one-shot press, key-down hold, and key-up release for game controls (WASD, Space, etc.). Requires the Input System package (com.unity.inputsystem).",
|
|
537
|
+
"inputSchema": {
|
|
538
|
+
"type": "object",
|
|
539
|
+
"properties": {
|
|
540
|
+
"Action": {
|
|
541
|
+
"type": "string",
|
|
542
|
+
"description": "Keyboard action: Press - one-shot key tap (Down then Up), KeyDown - hold key down, KeyUp - release held key",
|
|
543
|
+
"enum": [
|
|
544
|
+
"Press",
|
|
545
|
+
"KeyDown",
|
|
546
|
+
"KeyUp"
|
|
547
|
+
],
|
|
548
|
+
"default": "Press"
|
|
549
|
+
},
|
|
550
|
+
"Key": {
|
|
551
|
+
"type": "string",
|
|
552
|
+
"description": "Key name matching Input System Key enum (e.g. \"W\", \"Space\", \"LeftShift\", \"A\", \"Return\"). Case-insensitive."
|
|
553
|
+
},
|
|
554
|
+
"Duration": {
|
|
555
|
+
"type": "number",
|
|
556
|
+
"description": "Hold duration in seconds for Press action (0 = one-shot tap). Ignored by KeyDown/KeyUp.",
|
|
557
|
+
"default": 0
|
|
558
|
+
}
|
|
559
|
+
}
|
|
560
|
+
}
|
|
533
561
|
}
|
|
534
562
|
]
|
|
535
563
|
}
|
|
@@ -22,6 +22,7 @@ interface SkillsOptions {
|
|
|
22
22
|
cursor?: boolean;
|
|
23
23
|
gemini?: boolean;
|
|
24
24
|
windsurf?: boolean;
|
|
25
|
+
antigravity?: boolean;
|
|
25
26
|
}
|
|
26
27
|
|
|
27
28
|
export function registerSkillsCommand(program: Command): void {
|
|
@@ -38,6 +39,7 @@ export function registerSkillsCommand(program: Command): void {
|
|
|
38
39
|
.option('--cursor', 'Check Cursor installation')
|
|
39
40
|
.option('--gemini', 'Check Gemini CLI installation')
|
|
40
41
|
.option('--windsurf', 'Check Windsurf installation')
|
|
42
|
+
.option('--antigravity', 'Check Antigravity installation')
|
|
41
43
|
.action((options: SkillsOptions) => {
|
|
42
44
|
const targets = resolveTargets(options);
|
|
43
45
|
const global = options.global ?? false;
|
|
@@ -53,6 +55,7 @@ export function registerSkillsCommand(program: Command): void {
|
|
|
53
55
|
.option('--cursor', 'Install to Cursor')
|
|
54
56
|
.option('--gemini', 'Install to Gemini CLI')
|
|
55
57
|
.option('--windsurf', 'Install to Windsurf')
|
|
58
|
+
.option('--antigravity', 'Install to Antigravity')
|
|
56
59
|
.action((options: SkillsOptions) => {
|
|
57
60
|
const targets = resolveTargets(options);
|
|
58
61
|
if (targets.length === 0) {
|
|
@@ -71,6 +74,7 @@ export function registerSkillsCommand(program: Command): void {
|
|
|
71
74
|
.option('--cursor', 'Uninstall from Cursor')
|
|
72
75
|
.option('--gemini', 'Uninstall from Gemini CLI')
|
|
73
76
|
.option('--windsurf', 'Uninstall from Windsurf')
|
|
77
|
+
.option('--antigravity', 'Uninstall from Antigravity')
|
|
74
78
|
.action((options: SkillsOptions) => {
|
|
75
79
|
const targets = resolveTargets(options);
|
|
76
80
|
if (targets.length === 0) {
|
|
@@ -98,6 +102,9 @@ function resolveTargets(options: SkillsOptions): TargetConfig[] {
|
|
|
98
102
|
if (options.windsurf) {
|
|
99
103
|
targets.push(getTargetConfig('windsurf'));
|
|
100
104
|
}
|
|
105
|
+
if (options.antigravity) {
|
|
106
|
+
targets.push(getTargetConfig('antigravity'));
|
|
107
|
+
}
|
|
101
108
|
return targets;
|
|
102
109
|
}
|
|
103
110
|
|
|
@@ -105,11 +112,12 @@ function showTargetGuidance(command: string): void {
|
|
|
105
112
|
console.log(`\nPlease specify at least one target for '${command}':`);
|
|
106
113
|
console.log('');
|
|
107
114
|
console.log('Available targets:');
|
|
108
|
-
console.log(' --claude
|
|
109
|
-
console.log(' --codex
|
|
110
|
-
console.log(' --cursor
|
|
111
|
-
console.log(' --gemini
|
|
112
|
-
console.log(' --windsurf
|
|
115
|
+
console.log(' --claude Claude Code (.claude/skills/)');
|
|
116
|
+
console.log(' --codex Codex CLI (.agents/skills/)');
|
|
117
|
+
console.log(' --cursor Cursor (.cursor/skills/)');
|
|
118
|
+
console.log(' --gemini Gemini CLI (.agents/skills/)');
|
|
119
|
+
console.log(' --windsurf Windsurf (.agents/skills/)');
|
|
120
|
+
console.log(' --antigravity Antigravity (.agent/skills/)');
|
|
113
121
|
console.log('');
|
|
114
122
|
console.log('Options:');
|
|
115
123
|
console.log(' -g, --global Use global location');
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Supports Claude Code and Codex CLI, with extensibility for future targets.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
export type TargetId = 'claude' | 'codex' | 'cursor' | 'gemini' | 'windsurf';
|
|
6
|
+
export type TargetId = 'claude' | 'codex' | 'cursor' | 'gemini' | 'windsurf' | 'antigravity';
|
|
7
7
|
|
|
8
8
|
export interface TargetConfig {
|
|
9
9
|
id: TargetId;
|
|
@@ -22,7 +22,7 @@ const TARGET_CONFIGS: Record<TargetId, TargetConfig> = {
|
|
|
22
22
|
codex: {
|
|
23
23
|
id: 'codex',
|
|
24
24
|
displayName: 'Codex CLI',
|
|
25
|
-
projectDir: '.
|
|
25
|
+
projectDir: '.agents',
|
|
26
26
|
skillFileName: 'SKILL.md',
|
|
27
27
|
},
|
|
28
28
|
cursor: {
|
|
@@ -34,18 +34,31 @@ const TARGET_CONFIGS: Record<TargetId, TargetConfig> = {
|
|
|
34
34
|
gemini: {
|
|
35
35
|
id: 'gemini',
|
|
36
36
|
displayName: 'Gemini CLI',
|
|
37
|
-
projectDir: '.
|
|
37
|
+
projectDir: '.agents',
|
|
38
38
|
skillFileName: 'SKILL.md',
|
|
39
39
|
},
|
|
40
40
|
windsurf: {
|
|
41
41
|
id: 'windsurf',
|
|
42
42
|
displayName: 'Windsurf',
|
|
43
|
-
projectDir: '.
|
|
43
|
+
projectDir: '.agents',
|
|
44
|
+
skillFileName: 'SKILL.md',
|
|
45
|
+
},
|
|
46
|
+
antigravity: {
|
|
47
|
+
id: 'antigravity',
|
|
48
|
+
displayName: 'Antigravity',
|
|
49
|
+
projectDir: '.agent',
|
|
44
50
|
skillFileName: 'SKILL.md',
|
|
45
51
|
},
|
|
46
52
|
};
|
|
47
53
|
|
|
48
|
-
export const ALL_TARGET_IDS: TargetId[] = [
|
|
54
|
+
export const ALL_TARGET_IDS: TargetId[] = [
|
|
55
|
+
'claude',
|
|
56
|
+
'codex',
|
|
57
|
+
'cursor',
|
|
58
|
+
'gemini',
|
|
59
|
+
'windsurf',
|
|
60
|
+
'antigravity',
|
|
61
|
+
];
|
|
49
62
|
|
|
50
63
|
export function getTargetConfig(id: TargetId): TargetConfig {
|
|
51
64
|
// eslint-disable-next-line security/detect-object-injection -- id is type-constrained to TargetId union type
|
package/src/version.ts
CHANGED
|
@@ -4,4 +4,4 @@
|
|
|
4
4
|
* This file exists to avoid bundling the entire package.json into the CLI bundle.
|
|
5
5
|
* This version is automatically updated by release-please.
|
|
6
6
|
*/
|
|
7
|
-
export const VERSION = '
|
|
7
|
+
export const VERSION = '1.1.0'; // x-release-please-version
|