unity-agentic-tools 0.5.0 → 0.6.1

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 (99) hide show
  1. package/README.md +49 -103
  2. package/dist/animator-utils.d.ts +46 -0
  3. package/dist/animator-utils.d.ts.map +1 -0
  4. package/dist/animator-utils.js +161 -0
  5. package/dist/animator-utils.js.map +1 -0
  6. package/dist/bridge-install.d.ts +11 -0
  7. package/dist/bridge-install.d.ts.map +1 -0
  8. package/dist/bridge-install.js +23 -0
  9. package/dist/bridge-install.js.map +1 -0
  10. package/dist/build-settings.d.ts +43 -0
  11. package/dist/build-settings.d.ts.map +1 -0
  12. package/dist/build-settings.js +196 -0
  13. package/dist/build-settings.js.map +1 -0
  14. package/dist/build-version.d.ts +40 -0
  15. package/dist/build-version.d.ts.map +1 -0
  16. package/dist/build-version.js +114 -0
  17. package/dist/build-version.js.map +1 -0
  18. package/dist/class-ids.d.ts +30 -0
  19. package/dist/class-ids.d.ts.map +1 -0
  20. package/dist/class-ids.js +322 -0
  21. package/dist/class-ids.js.map +1 -0
  22. package/dist/cleanup.d.ts +21 -0
  23. package/dist/cleanup.d.ts.map +1 -0
  24. package/dist/cleanup.js +161 -0
  25. package/dist/cleanup.js.map +1 -0
  26. package/dist/cli-output.d.ts +7 -0
  27. package/dist/cli-output.d.ts.map +1 -0
  28. package/dist/cli-output.js +24 -0
  29. package/dist/cli-output.js.map +1 -0
  30. package/dist/cli.d.ts +3 -0
  31. package/dist/cli.d.ts.map +1 -0
  32. package/dist/cli.js +795 -8143
  33. package/dist/cli.js.map +1 -0
  34. package/dist/doc-indexer-cli.js +1 -1
  35. package/dist/editor-client.d.ts +18 -0
  36. package/dist/editor-client.d.ts.map +1 -0
  37. package/dist/editor-client.js +256 -0
  38. package/dist/editor-client.js.map +1 -0
  39. package/dist/editor-discovery.d.ts +17 -0
  40. package/dist/editor-discovery.d.ts.map +1 -0
  41. package/dist/editor-discovery.js +248 -0
  42. package/dist/editor-discovery.js.map +1 -0
  43. package/dist/editor-transport.d.ts +30 -0
  44. package/dist/editor-transport.d.ts.map +1 -0
  45. package/dist/editor-transport.js +175 -0
  46. package/dist/editor-transport.js.map +1 -0
  47. package/dist/gitignore.d.ts +3 -0
  48. package/dist/gitignore.d.ts.map +1 -0
  49. package/dist/gitignore.js +40 -0
  50. package/dist/gitignore.js.map +1 -0
  51. package/dist/guid-cache.d.ts +45 -0
  52. package/dist/guid-cache.d.ts.map +1 -0
  53. package/dist/guid-cache.js +111 -0
  54. package/dist/guid-cache.js.map +1 -0
  55. package/dist/index.d.ts +11 -0
  56. package/dist/index.d.ts.map +1 -0
  57. package/dist/index.js +743 -8040
  58. package/dist/index.js.map +1 -0
  59. package/dist/loaded-protection.d.ts +6 -0
  60. package/dist/loaded-protection.d.ts.map +1 -0
  61. package/dist/loaded-protection.js +95 -0
  62. package/dist/loaded-protection.js.map +1 -0
  63. package/dist/packages.d.ts +55 -0
  64. package/dist/packages.d.ts.map +1 -0
  65. package/dist/packages.js +102 -0
  66. package/dist/packages.js.map +1 -0
  67. package/dist/params.d.ts +54 -0
  68. package/dist/params.d.ts.map +1 -0
  69. package/dist/params.js +106 -0
  70. package/dist/params.js.map +1 -0
  71. package/dist/project-search.d.ts +16 -0
  72. package/dist/project-search.d.ts.map +1 -0
  73. package/dist/project-search.js +538 -0
  74. package/dist/project-search.js.map +1 -0
  75. package/dist/scanner.d.ts +150 -0
  76. package/dist/scanner.d.ts.map +1 -0
  77. package/dist/scanner.js +223 -0
  78. package/dist/scanner.js.map +1 -0
  79. package/dist/setup.d.ts +25 -0
  80. package/dist/setup.d.ts.map +1 -0
  81. package/dist/setup.js +185 -0
  82. package/dist/setup.js.map +1 -0
  83. package/dist/types.d.ts +390 -0
  84. package/dist/types.d.ts.map +1 -0
  85. package/dist/types.js +3 -0
  86. package/dist/types.js.map +1 -0
  87. package/dist/util.d.ts +2 -0
  88. package/dist/util.d.ts.map +1 -0
  89. package/dist/util.js +7 -0
  90. package/dist/util.js.map +1 -0
  91. package/dist/utils.d.ts +82 -0
  92. package/dist/utils.d.ts.map +1 -0
  93. package/dist/utils.js +291 -0
  94. package/dist/utils.js.map +1 -0
  95. package/native/unity-file-tools.darwin-arm64.node +0 -0
  96. package/native/unity-file-tools.darwin-x64.node +0 -0
  97. package/native/unity-file-tools.linux-x64-gnu.node +0 -0
  98. package/native/unity-file-tools.win32-x64-msvc.node +0 -0
  99. package/package.json +4 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,UAAU;AACV,qCAOmB;AANf,uGAAA,YAAY,OAAA;AACZ,kHAAA,uBAAuB,OAAA;AACvB,+GAAA,oBAAoB,OAAA;AACpB,sHAAA,2BAA2B,OAAA;AAC3B,mHAAA,wBAAwB,OAAA;AACxB,qHAAA,0BAA0B,OAAA;AAG9B,kBAAkB;AAClB,iCAAgC;AAAvB,8FAAA,KAAK,OAAA;AACd,qCAAoC;AAA3B,kGAAA,OAAO,OAAA;AAEhB,iBAAiB;AACjB,mDAAoF;AAA3E,gHAAA,cAAc,OAAA;AAAE,8GAAA,YAAY,OAAA;AAAE,oHAAA,kBAAkB,OAAA;AAEzD,QAAQ;AACR,iCAA6E;AAApE,oGAAA,WAAW,OAAA;AAAE,qGAAA,YAAY,OAAA;AAAE,gHAAA,uBAAuB,OAAA"}
@@ -0,0 +1,6 @@
1
+ export declare function is_editor_connected_for_project(project_path: string): Promise<boolean>;
2
+ export declare function enforce_loaded_edit_protection(file_path: string, bypass: boolean | undefined, project_path?: string): Promise<{
3
+ allowed: boolean;
4
+ error?: string;
5
+ }>;
6
+ //# sourceMappingURL=loaded-protection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loaded-protection.d.ts","sourceRoot":"","sources":["../src/loaded-protection.ts"],"names":[],"mappings":"AAyDA,wBAAsB,+BAA+B,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAI5F;AAED,wBAAsB,8BAA8B,CAChD,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,OAAO,GAAG,SAAS,EAC3B,YAAY,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAgD/C"}
@@ -0,0 +1,95 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.is_editor_connected_for_project = is_editor_connected_for_project;
4
+ exports.enforce_loaded_edit_protection = enforce_loaded_edit_protection;
5
+ const path_1 = require("path");
6
+ const editor_client_1 = require("./editor-client");
7
+ const utils_1 = require("./utils");
8
+ function normalize_slashes(value) {
9
+ return value.replace(/\\/g, '/');
10
+ }
11
+ function to_project_asset_path(file_path, project_path) {
12
+ const abs_file = (0, path_1.resolve)(file_path);
13
+ const abs_project = (0, path_1.resolve)(project_path);
14
+ const rel = (0, path_1.relative)(abs_project, abs_file);
15
+ if (!rel || rel.startsWith('..') || rel.includes(`..${path_1.sep}`)) {
16
+ if (/^Assets[\\/]/.test(file_path)) {
17
+ return normalize_slashes(file_path);
18
+ }
19
+ return null;
20
+ }
21
+ return normalize_slashes(rel);
22
+ }
23
+ function normalize_loaded_paths(paths) {
24
+ return new Set(paths.map(p => normalize_slashes(p)));
25
+ }
26
+ async function get_loaded_state(project_path) {
27
+ const config = await (0, editor_client_1.discover_editor_config)(project_path);
28
+ if ('error' in config)
29
+ return null;
30
+ const response = await (0, editor_client_1.call_editor)({
31
+ project_path,
32
+ method: 'editor.scene.loaded',
33
+ timeout: 2500,
34
+ });
35
+ if (response.error || !response.result || typeof response.result !== 'object') {
36
+ return null;
37
+ }
38
+ const result = response.result;
39
+ const loaded = Array.isArray(result.loaded_scene_paths)
40
+ ? result.loaded_scene_paths.filter((v) => typeof v === 'string')
41
+ : [];
42
+ return {
43
+ loaded_scene_paths: loaded,
44
+ active_scene_path: typeof result.active_scene_path === 'string' ? result.active_scene_path : undefined,
45
+ prefab_stage_path: typeof result.prefab_stage_path === 'string' ? result.prefab_stage_path : undefined,
46
+ };
47
+ }
48
+ async function is_editor_connected_for_project(project_path) {
49
+ const resolved_project = (0, utils_1.resolve_project_path)(project_path);
50
+ const config = await (0, editor_client_1.discover_editor_config)(resolved_project);
51
+ return !('error' in config);
52
+ }
53
+ async function enforce_loaded_edit_protection(file_path, bypass, project_path) {
54
+ if (bypass)
55
+ return { allowed: true };
56
+ const ext = file_path.toLowerCase().split('.').pop();
57
+ if (!ext || (ext !== 'unity' && ext !== 'prefab')) {
58
+ return { allowed: true };
59
+ }
60
+ const inferred_project = project_path
61
+ ? (0, utils_1.resolve_project_path)(project_path)
62
+ : (0, utils_1.find_unity_project_root)((0, path_1.dirname)((0, path_1.resolve)(file_path))) || process.cwd();
63
+ const loaded_state = await get_loaded_state(inferred_project);
64
+ if (!loaded_state) {
65
+ return { allowed: true };
66
+ }
67
+ const target_asset_path = to_project_asset_path(file_path, inferred_project);
68
+ if (!target_asset_path) {
69
+ return { allowed: true };
70
+ }
71
+ const loaded_scenes = normalize_loaded_paths(loaded_state.loaded_scene_paths);
72
+ const active_scene = loaded_state.active_scene_path ? normalize_slashes(loaded_state.active_scene_path) : '';
73
+ const prefab_stage = loaded_state.prefab_stage_path ? normalize_slashes(loaded_state.prefab_stage_path) : '';
74
+ if (target_asset_path.endsWith('.unity')) {
75
+ if (loaded_scenes.has(target_asset_path)) {
76
+ const reason = active_scene === target_asset_path
77
+ ? 'it is currently the active scene in the Unity Editor'
78
+ : 'it is currently loaded in the Unity Editor';
79
+ return {
80
+ allowed: false,
81
+ error: `Refusing to edit ${target_asset_path}: ${reason}. Use --bypass-loaded-protection to force file-based edits while editor is connected.`,
82
+ };
83
+ }
84
+ }
85
+ if (target_asset_path.endsWith('.prefab')) {
86
+ if (prefab_stage === target_asset_path) {
87
+ return {
88
+ allowed: false,
89
+ error: `Refusing to edit ${target_asset_path}: it is currently open in Prefab Mode. Use --bypass-loaded-protection to force file-based edits while editor is connected.`,
90
+ };
91
+ }
92
+ }
93
+ return { allowed: true };
94
+ }
95
+ //# sourceMappingURL=loaded-protection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loaded-protection.js","sourceRoot":"","sources":["../src/loaded-protection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Structure of Unity's Packages/manifest.json
3
+ */
4
+ interface PackageManifest {
5
+ dependencies: Record<string, string>;
6
+ [key: string]: unknown;
7
+ }
8
+ /**
9
+ * Load and validate a Unity package manifest.
10
+ * @returns The parsed manifest or an error string.
11
+ */
12
+ export declare function load_manifest(project_path: string): {
13
+ manifest: PackageManifest;
14
+ path: string;
15
+ } | {
16
+ error: string;
17
+ };
18
+ /**
19
+ * Save a manifest to disk preserving original key order, with 2-space indent.
20
+ */
21
+ export declare function save_manifest(manifest_path: string, manifest: PackageManifest): void;
22
+ /**
23
+ * List packages from the manifest, optionally filtering by search pattern.
24
+ */
25
+ export declare function list_packages(project_path: string, search?: string): {
26
+ packages: {
27
+ name: string;
28
+ version: string;
29
+ }[];
30
+ count: number;
31
+ } | {
32
+ error: string;
33
+ };
34
+ /**
35
+ * Add or update a package in the manifest.
36
+ */
37
+ export declare function add_package(project_path: string, name: string, version: string): {
38
+ success: true;
39
+ action: 'added' | 'updated';
40
+ name: string;
41
+ version: string;
42
+ } | {
43
+ error: string;
44
+ };
45
+ /**
46
+ * Remove a package from the manifest.
47
+ */
48
+ export declare function remove_package(project_path: string, name: string): {
49
+ success: true;
50
+ name: string;
51
+ } | {
52
+ error: string;
53
+ };
54
+ export {};
55
+ //# sourceMappingURL=packages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"packages.d.ts","sourceRoot":"","sources":["../src/packages.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,UAAU,eAAe;IACrB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,YAAY,EAAE,MAAM,GAAG;IAAE,QAAQ,EAAE,eAAe,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAenH;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,GAAG,IAAI,CAEpF;AAED;;GAEG;AACH,wBAAgB,aAAa,CACzB,YAAY,EAAE,MAAM,EACpB,MAAM,CAAC,EAAE,MAAM,GAChB;IAAE,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAYtF;AAgBD;;GAEG;AACH,wBAAgB,WAAW,CACvB,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,GAChB;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,OAAO,GAAG,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAmBnG;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC1B,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,MAAM,GACb;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAYrD"}
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.load_manifest = load_manifest;
4
+ exports.save_manifest = save_manifest;
5
+ exports.list_packages = list_packages;
6
+ exports.add_package = add_package;
7
+ exports.remove_package = remove_package;
8
+ const fs_1 = require("fs");
9
+ const path_1 = require("path");
10
+ /**
11
+ * Load and validate a Unity package manifest.
12
+ * @returns The parsed manifest or an error string.
13
+ */
14
+ function load_manifest(project_path) {
15
+ const manifest_path = (0, path_1.join)(project_path, 'Packages', 'manifest.json');
16
+ if (!(0, fs_1.existsSync)(manifest_path)) {
17
+ return { error: `manifest.json not found at ${manifest_path}` };
18
+ }
19
+ try {
20
+ const raw = (0, fs_1.readFileSync)(manifest_path, 'utf-8');
21
+ const parsed = JSON.parse(raw);
22
+ if (!parsed.dependencies || typeof parsed.dependencies !== 'object') {
23
+ return { error: `Invalid manifest.json: missing "dependencies" object` };
24
+ }
25
+ return { manifest: parsed, path: manifest_path };
26
+ }
27
+ catch (err) {
28
+ return { error: `Failed to parse manifest.json: ${err instanceof Error ? err.message : String(err)}` };
29
+ }
30
+ }
31
+ /**
32
+ * Save a manifest to disk preserving original key order, with 2-space indent.
33
+ */
34
+ function save_manifest(manifest_path, manifest) {
35
+ (0, fs_1.writeFileSync)(manifest_path, JSON.stringify(manifest, null, 2) + '\n', 'utf-8');
36
+ }
37
+ /**
38
+ * List packages from the manifest, optionally filtering by search pattern.
39
+ */
40
+ function list_packages(project_path, search) {
41
+ const result = load_manifest(project_path);
42
+ if ('error' in result)
43
+ return result;
44
+ let entries = Object.entries(result.manifest.dependencies).map(([name, version]) => ({ name, version }));
45
+ if (search) {
46
+ const pattern = search.toLowerCase();
47
+ entries = entries.filter(e => e.name.toLowerCase().includes(pattern));
48
+ }
49
+ return { packages: entries, count: entries.length };
50
+ }
51
+ /**
52
+ * Validate a package version string.
53
+ * Accepts semver (1.2.3, 1.2.3-preview.1), git URLs, file: paths, and Unity version aliases.
54
+ */
55
+ function validate_version(version) {
56
+ // semver: 1.0.0, 1.2.3-preview.4, 0.1.0-exp.1
57
+ if (/^\d+\.\d+\.\d+(-[\w.]+)?$/.test(version))
58
+ return true;
59
+ // git URL
60
+ if (version.startsWith('https://') || version.startsWith('git://') || version.startsWith('ssh://'))
61
+ return true;
62
+ // file: path
63
+ if (version.startsWith('file:'))
64
+ return true;
65
+ return false;
66
+ }
67
+ /**
68
+ * Add or update a package in the manifest.
69
+ */
70
+ function add_package(project_path, name, version) {
71
+ if (!name || name.trim() === '') {
72
+ return { error: 'Package name must not be empty' };
73
+ }
74
+ if (/\s/.test(name)) {
75
+ return { error: `Invalid package name "${name}". Package names must not contain spaces.` };
76
+ }
77
+ if (!validate_version(version)) {
78
+ return { error: `Invalid version "${version}". Expected semver (e.g., 1.2.3), git URL, or file: path.` };
79
+ }
80
+ const result = load_manifest(project_path);
81
+ if ('error' in result)
82
+ return result;
83
+ const action = result.manifest.dependencies[name] ? 'updated' : 'added';
84
+ result.manifest.dependencies[name] = version;
85
+ save_manifest(result.path, result.manifest);
86
+ return { success: true, action, name, version };
87
+ }
88
+ /**
89
+ * Remove a package from the manifest.
90
+ */
91
+ function remove_package(project_path, name) {
92
+ const result = load_manifest(project_path);
93
+ if ('error' in result)
94
+ return result;
95
+ if (!(name in result.manifest.dependencies)) {
96
+ return { error: `Package "${name}" not found in manifest` };
97
+ }
98
+ delete result.manifest.dependencies[name];
99
+ save_manifest(result.path, result.manifest);
100
+ return { success: true, name };
101
+ }
102
+ //# sourceMappingURL=packages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"packages.js","sourceRoot":"","sources":["../src/packages.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Parameter normalization utility for handling LLM-generated parameter inconsistencies.
3
+ * Provides bidirectional snake_case/camelCase fallback inspired by CoPlay's ToolParams.
4
+ */
5
+ export declare class ParamNormalizer {
6
+ private params;
7
+ constructor(params: Record<string, unknown>);
8
+ /**
9
+ * Get parameter with case-insensitive fallback.
10
+ * Tries exact match first, then opposite case.
11
+ */
12
+ get<T = unknown>(key: string, defaultValue?: T): T | undefined;
13
+ /**
14
+ * Get required parameter or throw descriptive error.
15
+ */
16
+ getRequired<T = unknown>(key: string, errorMsg?: string): T;
17
+ /**
18
+ * Get boolean with string coercion ("true" -> true).
19
+ */
20
+ getBool(key: string, defaultValue?: boolean): boolean;
21
+ /**
22
+ * Get integer with string parsing and validation.
23
+ */
24
+ getInt(key: string, defaultValue?: number): number | undefined;
25
+ /**
26
+ * Check if parameter exists (with case fallback).
27
+ */
28
+ has(key: string): boolean;
29
+ /**
30
+ * Get raw value (for objects/arrays) with case fallback.
31
+ */
32
+ getRaw(key: string): unknown;
33
+ private toOppositeCase;
34
+ }
35
+ /**
36
+ * Result type for parameter validation operations.
37
+ */
38
+ export declare class Result<T> {
39
+ readonly isSuccess: boolean;
40
+ readonly value: T | null;
41
+ readonly errorMessage: string | null;
42
+ constructor(isSuccess: boolean, value: T | null, errorMessage: string | null);
43
+ static Success<T>(value: T): Result<T>;
44
+ static Error<T>(message: string): Result<T>;
45
+ /**
46
+ * Extract value or return error response object.
47
+ */
48
+ getOrError(outValue: {
49
+ value?: T;
50
+ }): {
51
+ error: string;
52
+ } | null;
53
+ }
54
+ //# sourceMappingURL=params.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"params.d.ts","sourceRoot":"","sources":["../src/params.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,qBAAa,eAAe;IACxB,OAAO,CAAC,MAAM,CAA0B;gBAE5B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAI3C;;;OAGG;IACH,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS;IAS9D;;OAEG;IACH,WAAW,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,CAAC;IAQ3D;;OAEG;IACH,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,UAAQ,GAAG,OAAO;IAOnD;;OAEG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAO9D;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIzB;;OAEG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAI5B,OAAO,CAAC,cAAc;CASzB;AAED;;GAEG;AACH,qBAAa,MAAM,CAAC,CAAC;aAEG,SAAS,EAAE,OAAO;aAClB,KAAK,EAAE,CAAC,GAAG,IAAI;aACf,YAAY,EAAE,MAAM,GAAG,IAAI;gBAF3B,SAAS,EAAE,OAAO,EAClB,KAAK,EAAE,CAAC,GAAG,IAAI,EACf,YAAY,EAAE,MAAM,GAAG,IAAI;IAG/C,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;IAItC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC;IAI3C;;OAEG;IACH,UAAU,CAAC,QAAQ,EAAE;QAAE,KAAK,CAAC,EAAE,CAAC,CAAA;KAAE,GAAG;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;CAOhE"}
package/dist/params.js ADDED
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+ /**
3
+ * Parameter normalization utility for handling LLM-generated parameter inconsistencies.
4
+ * Provides bidirectional snake_case/camelCase fallback inspired by CoPlay's ToolParams.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.Result = exports.ParamNormalizer = void 0;
8
+ class ParamNormalizer {
9
+ constructor(params) {
10
+ this.params = params || {};
11
+ }
12
+ /**
13
+ * Get parameter with case-insensitive fallback.
14
+ * Tries exact match first, then opposite case.
15
+ */
16
+ get(key, defaultValue) {
17
+ if (key in this.params)
18
+ return this.params[key];
19
+ const alt = this.toOppositeCase(key);
20
+ if (alt in this.params)
21
+ return this.params[alt];
22
+ return defaultValue;
23
+ }
24
+ /**
25
+ * Get required parameter or throw descriptive error.
26
+ */
27
+ getRequired(key, errorMsg) {
28
+ const value = this.get(key);
29
+ if (value === undefined || value === null || value === '') {
30
+ throw new Error(errorMsg || `Required parameter '${key}' is missing`);
31
+ }
32
+ return value;
33
+ }
34
+ /**
35
+ * Get boolean with string coercion ("true" -> true).
36
+ */
37
+ getBool(key, defaultValue = false) {
38
+ const value = this.get(key);
39
+ if (value === undefined || value === null)
40
+ return defaultValue;
41
+ if (typeof value === 'boolean')
42
+ return value;
43
+ return String(value).toLowerCase() === 'true';
44
+ }
45
+ /**
46
+ * Get integer with string parsing and validation.
47
+ */
48
+ getInt(key, defaultValue) {
49
+ const value = this.get(key);
50
+ if (value === undefined || value === null)
51
+ return defaultValue;
52
+ const parsed = parseInt(String(value), 10);
53
+ return isNaN(parsed) ? defaultValue : parsed;
54
+ }
55
+ /**
56
+ * Check if parameter exists (with case fallback).
57
+ */
58
+ has(key) {
59
+ return key in this.params || this.toOppositeCase(key) in this.params;
60
+ }
61
+ /**
62
+ * Get raw value (for objects/arrays) with case fallback.
63
+ */
64
+ getRaw(key) {
65
+ return this.get(key);
66
+ }
67
+ toOppositeCase(str) {
68
+ if (str.includes('_')) {
69
+ // snake_case -> camelCase
70
+ return str.replace(/_([a-z])/gi, (_, c) => c.toUpperCase());
71
+ }
72
+ else {
73
+ // camelCase -> snake_case
74
+ return str.replace(/([A-Z])/g, (match) => '_' + match.toLowerCase());
75
+ }
76
+ }
77
+ }
78
+ exports.ParamNormalizer = ParamNormalizer;
79
+ /**
80
+ * Result type for parameter validation operations.
81
+ */
82
+ class Result {
83
+ constructor(isSuccess, value, errorMessage) {
84
+ this.isSuccess = isSuccess;
85
+ this.value = value;
86
+ this.errorMessage = errorMessage;
87
+ }
88
+ static Success(value) {
89
+ return new Result(true, value, null);
90
+ }
91
+ static Error(message) {
92
+ return new Result(false, null, message);
93
+ }
94
+ /**
95
+ * Extract value or return error response object.
96
+ */
97
+ getOrError(outValue) {
98
+ if (this.isSuccess && this.value !== null) {
99
+ outValue.value = this.value;
100
+ return null;
101
+ }
102
+ return { error: this.errorMessage || 'Unknown error' };
103
+ }
104
+ }
105
+ exports.Result = Result;
106
+ //# sourceMappingURL=params.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"params.js","sourceRoot":"","sources":["../src/params.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { ProjectSearchOptions, ProjectSearchResult, ProjectGrepOptions, ProjectGrepResult } from './types';
2
+ /**
3
+ * Recursively walk a Unity project directory and collect files with given extensions.
4
+ * Uses native Rust walker when available, falls back to JS implementation.
5
+ */
6
+ export declare function walk_project_files(project_path: string, extensions: string[], exclude_dirs?: string[]): string[];
7
+ /**
8
+ * Search across all scene/prefab files in a Unity project for GameObjects.
9
+ */
10
+ export declare function search_project(options: ProjectSearchOptions): ProjectSearchResult;
11
+ /**
12
+ * Search for a regex pattern across project files.
13
+ * Uses native Rust grep when available, falls back to JS implementation.
14
+ */
15
+ export declare function grep_project(options: ProjectGrepOptions): ProjectGrepResult;
16
+ //# sourceMappingURL=project-search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-search.d.ts","sourceRoot":"","sources":["../src/project-search.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACR,oBAAoB,EACpB,mBAAmB,EAEnB,kBAAkB,EAClB,iBAAiB,EAMpB,MAAM,SAAS,CAAC;AAyCjB;;;GAGG;AACH,wBAAgB,kBAAkB,CAC9B,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAAE,EACpB,YAAY,CAAC,EAAE,MAAM,EAAE,GACxB,MAAM,EAAE,CAYV;AA+DD;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,oBAAoB,GAAG,mBAAmB,CAwQjF;AAID;;;GAGG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,kBAAkB,GAAG,iBAAiB,CAmC3E"}