pando-ai 0.0.19 → 0.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/dist/cli.js +138 -138
- package/dist/watcher-process.js +136 -136
- package/dist/workers/{chunk-UIWCIYYF.mjs → chunk-HDFL4PL5.mjs} +15 -15
- package/dist/workers/indexer-worker.mjs +1 -1
- package/dist/workers/snapshot-worker.mjs +4 -4
- package/package.json +1 -1
- package/resources/tools/pando-tools.json +59 -555
- package/tools/clojure-editor/lib/pando-clojure-editor-standalone.jar +0 -0
- package/tools/clojure-indexer/lib/pando-clojure-indexer-standalone.jar +0 -0
|
@@ -23,30 +23,20 @@
|
|
|
23
23
|
"read-this-first()",
|
|
24
24
|
"get-project-root()",
|
|
25
25
|
"set-project-root(root)",
|
|
26
|
-
"get-enabled-languages()",
|
|
27
|
-
"set-enabled-languages(languages)",
|
|
28
26
|
"find-nodes(q, qMode, name, async, exported, static, private, protected, readonly, abstract, paramCount, exportedOnly, defaultOnly, symbolKinds, hasDecorator, implements, extends, returns, asOf, scopeNode, expectedHash, limit, offset, sort, lang, semanticKind, include, cursor, datalog, boundary, reachabilityDepth, reachabilityOptions)",
|
|
29
27
|
"find-references(to, expectedHash, boundary, includeDeclaration, includeStrings, includeComments, limit, offset, relType, sort, reachabilityDepth, reachabilityOptions, asOf)",
|
|
30
28
|
"find-callers(of, expectedHash, depth, aggregate, boundary, asOf, offset, limit, relType, sort, reachabilityDepth, reachabilityOptions)",
|
|
29
|
+
"get-content(target, format, maxBytes, offset)",
|
|
31
30
|
"get-db-schema(includeColumns)",
|
|
32
31
|
"query-db(sql, maxRows)",
|
|
33
32
|
"get-storage-content(bucket, key, offset, maxBytes, encoding, full)",
|
|
34
33
|
"workspace-overview()",
|
|
35
34
|
"list-exports(scope, symbolKinds, export_kinds, limit, offset)",
|
|
36
35
|
"analyze-imports(groupBy, limit, offset)",
|
|
37
|
-
"clojure-namespace-graph(includeExternal, scope, namespacePrefix, edgeKinds, limit, offset)",
|
|
38
|
-
"clojure-namespace-dependencies(namespace, transitive, edgeKinds, limit, offset)",
|
|
39
|
-
"clojure-namespace-dependents(namespace, transitive, edgeKinds, limit, offset)",
|
|
40
|
-
"plan-clojure-namespace-move(namespace, newFile)",
|
|
41
|
-
"plan-clojure-namespace-rename(oldNamespace, newNamespace)",
|
|
42
|
-
"move-clojure-namespace(namespace, newFile)",
|
|
43
|
-
"rename-clojure-namespace(oldNamespace, newNamespace)",
|
|
44
36
|
"rename(path, newName, expectedHash, boundary, requireConfirmation, confirmed, includeStrings, includeComments, page, reachabilityDepth, reachabilityOptions)",
|
|
45
37
|
"delete(path, expectedHashes, forceDeleteReferencesMayBreakSyntax, page)",
|
|
46
38
|
"insert(to, code, replaceExistingNodeAtPath, expectedHash, createFileIfMissing, newFileInitialContent, forceInsertWillBreakSyntax)",
|
|
47
39
|
"replace(path, expectedHash, with, scope, forceReplaceWillBreakSyntax)",
|
|
48
|
-
"replace-body(path, expectedHash, with, forceReplaceWillBreakSyntax)",
|
|
49
|
-
"change-signature(path, expectedHash, parameters, returnType, makeAsync, makeSyncFromAsync, forceChangeWillBreakSyntax, boundary, batchSaves)",
|
|
50
40
|
"filter-map-reduce(query, transforms, apply)",
|
|
51
41
|
"list-snapshots(offset, limit)",
|
|
52
42
|
"diff-snapshots(head, base, page)",
|
|
@@ -64,7 +54,7 @@
|
|
|
64
54
|
"name": "read-this-first",
|
|
65
55
|
"category": "pando",
|
|
66
56
|
"signature": "read-this-first()",
|
|
67
|
-
"description": "
|
|
57
|
+
"description": "Quickstart hints for Pando AST usage. Returns a short help block. Example: {}",
|
|
68
58
|
"parameters": {
|
|
69
59
|
"type": "object",
|
|
70
60
|
"properties": {},
|
|
@@ -114,66 +104,11 @@
|
|
|
114
104
|
}
|
|
115
105
|
]
|
|
116
106
|
},
|
|
117
|
-
{
|
|
118
|
-
"name": "get-enabled-languages",
|
|
119
|
-
"category": "pando",
|
|
120
|
-
"signature": "get-enabled-languages()",
|
|
121
|
-
"description": "Return the currently enabled indexing languages for the selected root, plus the full list of language ids that can be set. Example: {}",
|
|
122
|
-
"parameters": {
|
|
123
|
-
"type": "object",
|
|
124
|
-
"properties": {},
|
|
125
|
-
"required": [],
|
|
126
|
-
"additionalProperties": false
|
|
127
|
-
},
|
|
128
|
-
"examples": [
|
|
129
|
-
{}
|
|
130
|
-
]
|
|
131
|
-
},
|
|
132
|
-
{
|
|
133
|
-
"name": "set-enabled-languages",
|
|
134
|
-
"category": "pando",
|
|
135
|
-
"signature": "set-enabled-languages(languages)",
|
|
136
|
-
"description": "Persist the enabled indexing languages for the selected root. The provided array becomes the supported language list. Example: { languages: ['clojure'] }",
|
|
137
|
-
"parameters": {
|
|
138
|
-
"type": "object",
|
|
139
|
-
"properties": {
|
|
140
|
-
"languages": {
|
|
141
|
-
"type": "array",
|
|
142
|
-
"description": "Language ids to keep enabled for indexing.",
|
|
143
|
-
"items": {
|
|
144
|
-
"type": "string",
|
|
145
|
-
"enum": [
|
|
146
|
-
"ts",
|
|
147
|
-
"js",
|
|
148
|
-
"python",
|
|
149
|
-
"c",
|
|
150
|
-
"cpp",
|
|
151
|
-
"csharp",
|
|
152
|
-
"dart",
|
|
153
|
-
"java",
|
|
154
|
-
"clojure"
|
|
155
|
-
]
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
},
|
|
159
|
-
"required": [
|
|
160
|
-
"languages"
|
|
161
|
-
],
|
|
162
|
-
"additionalProperties": false
|
|
163
|
-
},
|
|
164
|
-
"examples": [
|
|
165
|
-
{
|
|
166
|
-
"languages": [
|
|
167
|
-
"clojure"
|
|
168
|
-
]
|
|
169
|
-
}
|
|
170
|
-
]
|
|
171
|
-
},
|
|
172
107
|
{
|
|
173
108
|
"name": "find-nodes",
|
|
174
109
|
"category": "pando",
|
|
175
110
|
"signature": "find-nodes(q, qMode, name, async, exported, static, private, protected, readonly, abstract, paramCount, exportedOnly, defaultOnly, symbolKinds, hasDecorator, implements, extends, returns, asOf, scopeNode, expectedHash, limit, offset, sort, lang, semanticKind, include, cursor, datalog, boundary, reachabilityDepth, reachabilityOptions)",
|
|
176
|
-
"description": "Search code nodes by symbolKinds/name/text/scope with optional enrichment. qMode: 'fts' (SQLite MATCH syntax) or 'like' (SQL LIKE with %/_). scopeNode may be a dir, file, or node path 'src/a.ts#10-20:FD'; if it includes '#', expectedHash (no @) is required to verify. limit clamps to 100 per page; offset clamps to >= 0; use limit='all' to stream pages. include can add self/body/parents
|
|
111
|
+
"description": "Search code nodes by symbolKinds/name/text/scope with optional enrichment. qMode: 'fts' (SQLite MATCH syntax) or 'like' (SQL LIKE with %/_). scopeNode may be a dir, file, or node path 'src/a.ts#10-20:FD'; if it includes '#', expectedHash (no @) is required to verify. limit clamps to 100 per page; offset clamps to >= 0; use limit='all' to stream pages. include can add self/body/parents for topN<=5. Examples: { symbolKinds:['function'], name:'init', limit:10 }, { q:'\"TODO\"', qMode:'fts', limit:10 }, { scopeNode:'src/services/', limit:10 }",
|
|
177
112
|
"parameters": {
|
|
178
113
|
"type": "object",
|
|
179
114
|
"properties": {
|
|
@@ -391,10 +326,6 @@
|
|
|
391
326
|
"type": "boolean",
|
|
392
327
|
"description": "Include parent chain metadata."
|
|
393
328
|
},
|
|
394
|
-
"arities": {
|
|
395
|
-
"type": "boolean",
|
|
396
|
-
"description": "For Clojure, include explicit multi-arity clause targets with path/hash/ref so body edits can target a single arity."
|
|
397
|
-
},
|
|
398
329
|
"topN": {
|
|
399
330
|
"type": "integer",
|
|
400
331
|
"description": "How many results to fully enrich (0-5).",
|
|
@@ -820,11 +751,60 @@
|
|
|
820
751
|
}
|
|
821
752
|
]
|
|
822
753
|
},
|
|
754
|
+
{
|
|
755
|
+
"name": "get-content",
|
|
756
|
+
"category": "pando",
|
|
757
|
+
"signature": "get-content(target, format, maxBytes, offset)",
|
|
758
|
+
"description": "Read file content (repo-relative or absolute within root). maxBytes defaults to 500000 (clamped 1..2000000). format: 'raw' or 'parsed' (JSON only, offset=0, no truncation). Example: { target:'src/index.ts', maxBytes:2000 }",
|
|
759
|
+
"parameters": {
|
|
760
|
+
"type": "object",
|
|
761
|
+
"properties": {
|
|
762
|
+
"target": {
|
|
763
|
+
"type": "string",
|
|
764
|
+
"description": "Repo-relative path or absolute path under project root."
|
|
765
|
+
},
|
|
766
|
+
"format": {
|
|
767
|
+
"type": "string",
|
|
768
|
+
"description": "raw | parsed"
|
|
769
|
+
},
|
|
770
|
+
"maxBytes": {
|
|
771
|
+
"anyOf": [
|
|
772
|
+
{
|
|
773
|
+
"type": "number"
|
|
774
|
+
},
|
|
775
|
+
{
|
|
776
|
+
"type": "string"
|
|
777
|
+
}
|
|
778
|
+
]
|
|
779
|
+
},
|
|
780
|
+
"offset": {
|
|
781
|
+
"anyOf": [
|
|
782
|
+
{
|
|
783
|
+
"type": "number"
|
|
784
|
+
},
|
|
785
|
+
{
|
|
786
|
+
"type": "string"
|
|
787
|
+
}
|
|
788
|
+
]
|
|
789
|
+
}
|
|
790
|
+
},
|
|
791
|
+
"required": [
|
|
792
|
+
"target"
|
|
793
|
+
],
|
|
794
|
+
"additionalProperties": false
|
|
795
|
+
},
|
|
796
|
+
"examples": [
|
|
797
|
+
{
|
|
798
|
+
"target": "src/index.ts",
|
|
799
|
+
"maxBytes": 2000
|
|
800
|
+
}
|
|
801
|
+
]
|
|
802
|
+
},
|
|
823
803
|
{
|
|
824
804
|
"name": "get-db-schema",
|
|
825
805
|
"category": "pando",
|
|
826
806
|
"signature": "get-db-schema(includeColumns)",
|
|
827
|
-
"description": "Return the logical unified index schema only (aggregated across all index chunks, no per-chunk details).
|
|
807
|
+
"description": "Return the logical unified index schema only (aggregated across all index chunks, no per-chunk details). includeColumns defaults to true. Example: { includeColumns:true }",
|
|
828
808
|
"parameters": {
|
|
829
809
|
"type": "object",
|
|
830
810
|
"properties": {
|
|
@@ -846,7 +826,7 @@
|
|
|
846
826
|
"name": "query-db",
|
|
847
827
|
"category": "pando",
|
|
848
828
|
"signature": "query-db(sql, maxRows)",
|
|
849
|
-
"description": "Execute passthrough SQL against all index chunks (readonly), then globally merge and apply ORDER BY/LIMIT/OFFSET semantics in code. Chunk identity is intentionally hidden from results.
|
|
829
|
+
"description": "Execute passthrough SQL against all index chunks (readonly), then globally merge and apply ORDER BY/LIMIT/OFFSET semantics in code. Chunk identity is intentionally hidden from results. Example: { sql:'SELECT * FROM nodes LIMIT 20' }",
|
|
850
830
|
"parameters": {
|
|
851
831
|
"type": "object",
|
|
852
832
|
"properties": {
|
|
@@ -959,7 +939,7 @@
|
|
|
959
939
|
"name": "workspace-overview",
|
|
960
940
|
"category": "pando",
|
|
961
941
|
"signature": "workspace-overview()",
|
|
962
|
-
"description": "Summarize workspace files, node counts, modules, artifacts, indexing status
|
|
942
|
+
"description": "Summarize workspace files, node counts, modules, artifacts, and indexing status. Example: {}",
|
|
963
943
|
"parameters": {
|
|
964
944
|
"type": "object",
|
|
965
945
|
"properties": {},
|
|
@@ -1069,270 +1049,6 @@
|
|
|
1069
1049
|
}
|
|
1070
1050
|
]
|
|
1071
1051
|
},
|
|
1072
|
-
{
|
|
1073
|
-
"name": "clojure-namespace-graph",
|
|
1074
|
-
"category": "pando",
|
|
1075
|
-
"signature": "clojure-namespace-graph(includeExternal, scope, namespacePrefix, edgeKinds, limit, offset)",
|
|
1076
|
-
"description": "Get the Clojure namespace dependency graph for the current workspace. Results are paged and can be filtered by repo-relative path scope, namespacePrefix, and edge kind. scope filters by file path prefix such as 'src/metabase/tracing/', while namespacePrefix filters by namespace name such as 'metabase.tracing'. Returns namespaces and edges with kinds like 'require', 'refer', 'refer-all', 'require-macros', 'refer-macros', 'refer-all-macros', and 'use'. Useful for understanding namespace structure and dependencies before refactoring.",
|
|
1077
|
-
"parameters": {
|
|
1078
|
-
"type": "object",
|
|
1079
|
-
"properties": {
|
|
1080
|
-
"includeExternal": {
|
|
1081
|
-
"type": "boolean",
|
|
1082
|
-
"description": "Include external dependencies like clojure.* namespaces. Default: false (project namespaces only)."
|
|
1083
|
-
},
|
|
1084
|
-
"scope": {
|
|
1085
|
-
"type": "string",
|
|
1086
|
-
"description": "Optional repo-relative path prefix filter, e.g. 'src/metabase/tracing/'."
|
|
1087
|
-
},
|
|
1088
|
-
"namespacePrefix": {
|
|
1089
|
-
"type": "string",
|
|
1090
|
-
"description": "Optional namespace-name prefix filter, e.g. 'metabase.tracing'."
|
|
1091
|
-
},
|
|
1092
|
-
"edgeKinds": {
|
|
1093
|
-
"type": "array",
|
|
1094
|
-
"items": {
|
|
1095
|
-
"type": "string"
|
|
1096
|
-
},
|
|
1097
|
-
"description": "Optional edge kind filter, e.g. ['require', 'refer', 'refer-macros']."
|
|
1098
|
-
},
|
|
1099
|
-
"limit": {
|
|
1100
|
-
"type": "number",
|
|
1101
|
-
"description": "Maximum number of namespaces and edges to return per page. Default: 100."
|
|
1102
|
-
},
|
|
1103
|
-
"offset": {
|
|
1104
|
-
"type": "number",
|
|
1105
|
-
"description": "Pagination offset for both namespaces and edges. Default: 0."
|
|
1106
|
-
}
|
|
1107
|
-
},
|
|
1108
|
-
"additionalProperties": false
|
|
1109
|
-
},
|
|
1110
|
-
"examples": [
|
|
1111
|
-
{
|
|
1112
|
-
"scope": "src/metabase/tracing/",
|
|
1113
|
-
"namespacePrefix": "metabase.tracing",
|
|
1114
|
-
"includeExternal": false,
|
|
1115
|
-
"limit": 20,
|
|
1116
|
-
"offset": 0
|
|
1117
|
-
}
|
|
1118
|
-
]
|
|
1119
|
-
},
|
|
1120
|
-
{
|
|
1121
|
-
"name": "clojure-namespace-dependencies",
|
|
1122
|
-
"category": "pando",
|
|
1123
|
-
"signature": "clojure-namespace-dependencies(namespace, transitive, edgeKinds, limit, offset)",
|
|
1124
|
-
"description": "Get namespaces that the given Clojure namespace depends on. Returns the traversal root, discovered namespaces, and traversed edges. By default this is transitive; set transitive=false for direct dependencies only.",
|
|
1125
|
-
"parameters": {
|
|
1126
|
-
"type": "object",
|
|
1127
|
-
"properties": {
|
|
1128
|
-
"namespace": {
|
|
1129
|
-
"type": "string",
|
|
1130
|
-
"description": "The fully-qualified namespace (e.g., 'myapp.core')."
|
|
1131
|
-
},
|
|
1132
|
-
"transitive": {
|
|
1133
|
-
"type": "boolean",
|
|
1134
|
-
"description": "When false, return only direct dependencies. Default: true."
|
|
1135
|
-
},
|
|
1136
|
-
"edgeKinds": {
|
|
1137
|
-
"type": "array",
|
|
1138
|
-
"items": {
|
|
1139
|
-
"type": "string"
|
|
1140
|
-
},
|
|
1141
|
-
"description": "Optional edge kind filter, e.g. ['require', 'refer', 'refer-macros']."
|
|
1142
|
-
},
|
|
1143
|
-
"limit": {
|
|
1144
|
-
"type": "number",
|
|
1145
|
-
"description": "Maximum number of namespaces and edges to return per page. Default: 100."
|
|
1146
|
-
},
|
|
1147
|
-
"offset": {
|
|
1148
|
-
"type": "number",
|
|
1149
|
-
"description": "Pagination offset for both namespaces and edges. Default: 0."
|
|
1150
|
-
}
|
|
1151
|
-
},
|
|
1152
|
-
"required": [
|
|
1153
|
-
"namespace"
|
|
1154
|
-
],
|
|
1155
|
-
"additionalProperties": false
|
|
1156
|
-
},
|
|
1157
|
-
"examples": [
|
|
1158
|
-
{
|
|
1159
|
-
"namespace": "myapp.core",
|
|
1160
|
-
"transitive": false,
|
|
1161
|
-
"edgeKinds": [
|
|
1162
|
-
"require",
|
|
1163
|
-
"refer"
|
|
1164
|
-
],
|
|
1165
|
-
"limit": 100,
|
|
1166
|
-
"offset": 0
|
|
1167
|
-
}
|
|
1168
|
-
]
|
|
1169
|
-
},
|
|
1170
|
-
{
|
|
1171
|
-
"name": "clojure-namespace-dependents",
|
|
1172
|
-
"category": "pando",
|
|
1173
|
-
"signature": "clojure-namespace-dependents(namespace, transitive, edgeKinds, limit, offset)",
|
|
1174
|
-
"description": "Get namespaces that depend on the given Clojure namespace. Returns the traversal root, discovered namespaces, and traversed edges. By default this is transitive; set transitive=false for direct dependents only.",
|
|
1175
|
-
"parameters": {
|
|
1176
|
-
"type": "object",
|
|
1177
|
-
"properties": {
|
|
1178
|
-
"namespace": {
|
|
1179
|
-
"type": "string",
|
|
1180
|
-
"description": "The fully-qualified namespace (e.g., 'myapp.util')."
|
|
1181
|
-
},
|
|
1182
|
-
"transitive": {
|
|
1183
|
-
"type": "boolean",
|
|
1184
|
-
"description": "When false, return only direct dependents. Default: true."
|
|
1185
|
-
},
|
|
1186
|
-
"edgeKinds": {
|
|
1187
|
-
"type": "array",
|
|
1188
|
-
"items": {
|
|
1189
|
-
"type": "string"
|
|
1190
|
-
},
|
|
1191
|
-
"description": "Optional edge kind filter, e.g. ['require', 'refer', 'refer-macros']."
|
|
1192
|
-
},
|
|
1193
|
-
"limit": {
|
|
1194
|
-
"type": "number",
|
|
1195
|
-
"description": "Maximum number of namespaces and edges to return per page. Default: 100."
|
|
1196
|
-
},
|
|
1197
|
-
"offset": {
|
|
1198
|
-
"type": "number",
|
|
1199
|
-
"description": "Pagination offset for both namespaces and edges. Default: 0."
|
|
1200
|
-
}
|
|
1201
|
-
},
|
|
1202
|
-
"required": [
|
|
1203
|
-
"namespace"
|
|
1204
|
-
],
|
|
1205
|
-
"additionalProperties": false
|
|
1206
|
-
},
|
|
1207
|
-
"examples": [
|
|
1208
|
-
{
|
|
1209
|
-
"namespace": "myapp.util",
|
|
1210
|
-
"transitive": true,
|
|
1211
|
-
"limit": 100,
|
|
1212
|
-
"offset": 0
|
|
1213
|
-
}
|
|
1214
|
-
]
|
|
1215
|
-
},
|
|
1216
|
-
{
|
|
1217
|
-
"name": "plan-clojure-namespace-move",
|
|
1218
|
-
"category": "pando",
|
|
1219
|
-
"signature": "plan-clojure-namespace-move(namespace, newFile)",
|
|
1220
|
-
"description": "Plan moving a Clojure namespace to a new file location. Returns a detailed plan including the new namespace name (derived from file path), affected files, and required changes to require statements. Does NOT execute the move - returns a plan only.",
|
|
1221
|
-
"parameters": {
|
|
1222
|
-
"type": "object",
|
|
1223
|
-
"properties": {
|
|
1224
|
-
"namespace": {
|
|
1225
|
-
"type": "string",
|
|
1226
|
-
"description": "The current fully-qualified namespace (e.g., 'myapp.old.location')."
|
|
1227
|
-
},
|
|
1228
|
-
"newFile": {
|
|
1229
|
-
"type": "string",
|
|
1230
|
-
"description": "The new file path (e.g., 'src/myapp/new/location.clj'). The new namespace will be derived from this path."
|
|
1231
|
-
}
|
|
1232
|
-
},
|
|
1233
|
-
"required": [
|
|
1234
|
-
"namespace",
|
|
1235
|
-
"newFile"
|
|
1236
|
-
],
|
|
1237
|
-
"additionalProperties": false
|
|
1238
|
-
},
|
|
1239
|
-
"examples": [
|
|
1240
|
-
{
|
|
1241
|
-
"namespace": "myapp.old.location",
|
|
1242
|
-
"newFile": "src/myapp/new/location.clj"
|
|
1243
|
-
}
|
|
1244
|
-
]
|
|
1245
|
-
},
|
|
1246
|
-
{
|
|
1247
|
-
"name": "plan-clojure-namespace-rename",
|
|
1248
|
-
"category": "pando",
|
|
1249
|
-
"signature": "plan-clojure-namespace-rename(oldNamespace, newNamespace)",
|
|
1250
|
-
"description": "Plan renaming a Clojure namespace (keeping the same file). Returns affected files and required changes to require statements. Does NOT execute the rename; apply the planned changes manually.",
|
|
1251
|
-
"parameters": {
|
|
1252
|
-
"type": "object",
|
|
1253
|
-
"properties": {
|
|
1254
|
-
"oldNamespace": {
|
|
1255
|
-
"type": "string",
|
|
1256
|
-
"description": "The current fully-qualified namespace (e.g., 'myapp.util')."
|
|
1257
|
-
},
|
|
1258
|
-
"newNamespace": {
|
|
1259
|
-
"type": "string",
|
|
1260
|
-
"description": "The new fully-qualified namespace (e.g., 'myapp.helpers')."
|
|
1261
|
-
}
|
|
1262
|
-
},
|
|
1263
|
-
"required": [
|
|
1264
|
-
"oldNamespace",
|
|
1265
|
-
"newNamespace"
|
|
1266
|
-
],
|
|
1267
|
-
"additionalProperties": false
|
|
1268
|
-
},
|
|
1269
|
-
"examples": [
|
|
1270
|
-
{
|
|
1271
|
-
"oldNamespace": "myapp.util",
|
|
1272
|
-
"newNamespace": "myapp.helpers"
|
|
1273
|
-
}
|
|
1274
|
-
]
|
|
1275
|
-
},
|
|
1276
|
-
{
|
|
1277
|
-
"name": "move-clojure-namespace",
|
|
1278
|
-
"category": "pando",
|
|
1279
|
-
"signature": "move-clojure-namespace(namespace, newFile)",
|
|
1280
|
-
"description": "Rename a Clojure namespace and move its defining file. This uses the indexed namespace graph to plan dependent updates, applies the namespace rename, and then moves the file to newFile.",
|
|
1281
|
-
"parameters": {
|
|
1282
|
-
"type": "object",
|
|
1283
|
-
"properties": {
|
|
1284
|
-
"namespace": {
|
|
1285
|
-
"type": "string",
|
|
1286
|
-
"description": "The current fully-qualified namespace (e.g., 'myapp.old.location')."
|
|
1287
|
-
},
|
|
1288
|
-
"newFile": {
|
|
1289
|
-
"type": "string",
|
|
1290
|
-
"description": "The destination file path (e.g., 'src/myapp/new/location.clj')."
|
|
1291
|
-
}
|
|
1292
|
-
},
|
|
1293
|
-
"required": [
|
|
1294
|
-
"namespace",
|
|
1295
|
-
"newFile"
|
|
1296
|
-
],
|
|
1297
|
-
"additionalProperties": false
|
|
1298
|
-
},
|
|
1299
|
-
"examples": [
|
|
1300
|
-
{
|
|
1301
|
-
"namespace": "myapp.old.location",
|
|
1302
|
-
"newFile": "src/myapp/new/location.clj"
|
|
1303
|
-
}
|
|
1304
|
-
]
|
|
1305
|
-
},
|
|
1306
|
-
{
|
|
1307
|
-
"name": "rename-clojure-namespace",
|
|
1308
|
-
"category": "pando",
|
|
1309
|
-
"signature": "rename-clojure-namespace(oldNamespace, newNamespace)",
|
|
1310
|
-
"description": "Rename a Clojure namespace across the workspace using the normal rename machinery. This updates the namespace declaration and dependent references, but does not move the file.",
|
|
1311
|
-
"parameters": {
|
|
1312
|
-
"type": "object",
|
|
1313
|
-
"properties": {
|
|
1314
|
-
"oldNamespace": {
|
|
1315
|
-
"type": "string",
|
|
1316
|
-
"description": "The current fully-qualified namespace (e.g., 'myapp.util')."
|
|
1317
|
-
},
|
|
1318
|
-
"newNamespace": {
|
|
1319
|
-
"type": "string",
|
|
1320
|
-
"description": "The new fully-qualified namespace (e.g., 'myapp.helpers')."
|
|
1321
|
-
}
|
|
1322
|
-
},
|
|
1323
|
-
"required": [
|
|
1324
|
-
"oldNamespace",
|
|
1325
|
-
"newNamespace"
|
|
1326
|
-
],
|
|
1327
|
-
"additionalProperties": false
|
|
1328
|
-
},
|
|
1329
|
-
"examples": [
|
|
1330
|
-
{
|
|
1331
|
-
"oldNamespace": "myapp.util",
|
|
1332
|
-
"newNamespace": "myapp.helpers"
|
|
1333
|
-
}
|
|
1334
|
-
]
|
|
1335
|
-
},
|
|
1336
1052
|
{
|
|
1337
1053
|
"name": "rename",
|
|
1338
1054
|
"category": "pando",
|
|
@@ -1627,7 +1343,7 @@
|
|
|
1627
1343
|
"name": "replace",
|
|
1628
1344
|
"category": "pando",
|
|
1629
1345
|
"signature": "replace(path, expectedHash, with, scope, forceReplaceWillBreakSyntax)",
|
|
1630
|
-
"description": "Replace a node. scope='node' replaces the entire node (default). scope='body' replaces only the inner body
|
|
1346
|
+
"description": "Replace a node. scope='node' replaces the entire node (default). scope='body' replaces only the inner body (no braces) and fails if the target has no body. Requires expectedHash (no @). Example: { path:'src/app.ts#FD:0', expectedHash:'p123:c456', with:'function x() {}' }",
|
|
1631
1347
|
"parameters": {
|
|
1632
1348
|
"type": "object",
|
|
1633
1349
|
"properties": {
|
|
@@ -1645,7 +1361,7 @@
|
|
|
1645
1361
|
},
|
|
1646
1362
|
"scope": {
|
|
1647
1363
|
"type": "string",
|
|
1648
|
-
"description": "Replacement scope: 'node' (default) or 'body' (inner body only
|
|
1364
|
+
"description": "Replacement scope: 'node' (default) or 'body' (inner body only).",
|
|
1649
1365
|
"enum": [
|
|
1650
1366
|
"node",
|
|
1651
1367
|
"body"
|
|
@@ -1677,223 +1393,11 @@
|
|
|
1677
1393
|
}
|
|
1678
1394
|
]
|
|
1679
1395
|
},
|
|
1680
|
-
{
|
|
1681
|
-
"name": "replace-body",
|
|
1682
|
-
"category": "pando",
|
|
1683
|
-
"signature": "replace-body(path, expectedHash, with, forceReplaceWillBreakSyntax)",
|
|
1684
|
-
"description": "Replace only a node body. This is equivalent to pando_replace with scope='body', but exposed as a dedicated tool for callers that need an explicit replace-body operation. Provide body contents only, not enclosing delimiters; the replacement text is written as-is, including indentation and leading/trailing whitespace. Requires expectedHash (no @). Example: { path:'src/app.ts#FD:0', expectedHash:'p123:c456', with:'console.log(1);' }",
|
|
1685
|
-
"parameters": {
|
|
1686
|
-
"type": "object",
|
|
1687
|
-
"properties": {
|
|
1688
|
-
"path": {
|
|
1689
|
-
"type": "string",
|
|
1690
|
-
"description": "Node path (file#nodePath) without @hash."
|
|
1691
|
-
},
|
|
1692
|
-
"expectedHash": {
|
|
1693
|
-
"type": "string",
|
|
1694
|
-
"description": "Hash portion only (no @)."
|
|
1695
|
-
},
|
|
1696
|
-
"with": {
|
|
1697
|
-
"type": "string",
|
|
1698
|
-
"description": "Replacement text for the inner body only. Do not include enclosing delimiters; whitespace is preserved exactly as provided."
|
|
1699
|
-
},
|
|
1700
|
-
"forceReplaceWillBreakSyntax": {
|
|
1701
|
-
"type": "boolean",
|
|
1702
|
-
"description": "Allow syntax errors after replacement."
|
|
1703
|
-
}
|
|
1704
|
-
},
|
|
1705
|
-
"required": [
|
|
1706
|
-
"path",
|
|
1707
|
-
"expectedHash",
|
|
1708
|
-
"with"
|
|
1709
|
-
],
|
|
1710
|
-
"additionalProperties": false
|
|
1711
|
-
},
|
|
1712
|
-
"examples": [
|
|
1713
|
-
{
|
|
1714
|
-
"path": "src/app.ts#FD:0",
|
|
1715
|
-
"expectedHash": "p123:c456",
|
|
1716
|
-
"with": "console.log(1);"
|
|
1717
|
-
}
|
|
1718
|
-
]
|
|
1719
|
-
},
|
|
1720
|
-
{
|
|
1721
|
-
"name": "change-signature",
|
|
1722
|
-
"category": "pando",
|
|
1723
|
-
"signature": "change-signature(path, expectedHash, parameters, returnType, makeAsync, makeSyncFromAsync, forceChangeWillBreakSyntax, boundary, batchSaves)",
|
|
1724
|
-
"description": "Modify a function or method signature with best-effort call-site updates. Supports parameter add/remove/modify/reorder, return type changes, and async/sync conversion. Requires path and expectedHash (no @). Writes create automatic snapshots before and after the operation.",
|
|
1725
|
-
"parameters": {
|
|
1726
|
-
"type": "object",
|
|
1727
|
-
"properties": {
|
|
1728
|
-
"path": {
|
|
1729
|
-
"type": "string",
|
|
1730
|
-
"description": "Node path without @hash (file#nodePath)."
|
|
1731
|
-
},
|
|
1732
|
-
"expectedHash": {
|
|
1733
|
-
"type": "string",
|
|
1734
|
-
"description": "Hash portion only (no @)."
|
|
1735
|
-
},
|
|
1736
|
-
"parameters": {
|
|
1737
|
-
"type": "object",
|
|
1738
|
-
"description": "Parameter changes to apply.",
|
|
1739
|
-
"properties": {
|
|
1740
|
-
"add": {
|
|
1741
|
-
"type": "array",
|
|
1742
|
-
"description": "Parameters to insert. position defaults to the end.",
|
|
1743
|
-
"items": {
|
|
1744
|
-
"type": "object",
|
|
1745
|
-
"properties": {
|
|
1746
|
-
"name": {
|
|
1747
|
-
"type": "string"
|
|
1748
|
-
},
|
|
1749
|
-
"type": {
|
|
1750
|
-
"type": "string"
|
|
1751
|
-
},
|
|
1752
|
-
"defaultValue": {
|
|
1753
|
-
"type": "string"
|
|
1754
|
-
},
|
|
1755
|
-
"position": {
|
|
1756
|
-
"type": "integer",
|
|
1757
|
-
"minimum": 0
|
|
1758
|
-
},
|
|
1759
|
-
"callSiteArg": {
|
|
1760
|
-
"type": "string",
|
|
1761
|
-
"description": "Optional expression to insert at rewritten call sites for the new parameter."
|
|
1762
|
-
}
|
|
1763
|
-
},
|
|
1764
|
-
"required": [
|
|
1765
|
-
"name"
|
|
1766
|
-
],
|
|
1767
|
-
"additionalProperties": false
|
|
1768
|
-
}
|
|
1769
|
-
},
|
|
1770
|
-
"remove": {
|
|
1771
|
-
"type": "array",
|
|
1772
|
-
"description": "Parameters to remove by name or zero-based index.",
|
|
1773
|
-
"items": {
|
|
1774
|
-
"anyOf": [
|
|
1775
|
-
{
|
|
1776
|
-
"type": "string"
|
|
1777
|
-
},
|
|
1778
|
-
{
|
|
1779
|
-
"type": "integer",
|
|
1780
|
-
"minimum": 0
|
|
1781
|
-
}
|
|
1782
|
-
]
|
|
1783
|
-
}
|
|
1784
|
-
},
|
|
1785
|
-
"modify": {
|
|
1786
|
-
"type": "array",
|
|
1787
|
-
"description": "Parameters to modify by name or zero-based index.",
|
|
1788
|
-
"items": {
|
|
1789
|
-
"type": "object",
|
|
1790
|
-
"properties": {
|
|
1791
|
-
"target": {
|
|
1792
|
-
"anyOf": [
|
|
1793
|
-
{
|
|
1794
|
-
"type": "string"
|
|
1795
|
-
},
|
|
1796
|
-
{
|
|
1797
|
-
"type": "integer",
|
|
1798
|
-
"minimum": 0
|
|
1799
|
-
}
|
|
1800
|
-
]
|
|
1801
|
-
},
|
|
1802
|
-
"newName": {
|
|
1803
|
-
"type": "string"
|
|
1804
|
-
},
|
|
1805
|
-
"newType": {
|
|
1806
|
-
"type": "string"
|
|
1807
|
-
},
|
|
1808
|
-
"newDefaultValue": {
|
|
1809
|
-
"type": "string"
|
|
1810
|
-
}
|
|
1811
|
-
},
|
|
1812
|
-
"required": [
|
|
1813
|
-
"target"
|
|
1814
|
-
],
|
|
1815
|
-
"additionalProperties": false
|
|
1816
|
-
}
|
|
1817
|
-
},
|
|
1818
|
-
"reorder": {
|
|
1819
|
-
"type": "array",
|
|
1820
|
-
"description": "New parameter order by zero-based indices.",
|
|
1821
|
-
"items": {
|
|
1822
|
-
"type": "integer",
|
|
1823
|
-
"minimum": 0
|
|
1824
|
-
}
|
|
1825
|
-
}
|
|
1826
|
-
},
|
|
1827
|
-
"additionalProperties": false
|
|
1828
|
-
},
|
|
1829
|
-
"returnType": {
|
|
1830
|
-
"type": "string",
|
|
1831
|
-
"description": "New declared return type."
|
|
1832
|
-
},
|
|
1833
|
-
"makeAsync": {
|
|
1834
|
-
"type": "boolean",
|
|
1835
|
-
"description": "Set the target function to async."
|
|
1836
|
-
},
|
|
1837
|
-
"makeSyncFromAsync": {
|
|
1838
|
-
"type": "boolean",
|
|
1839
|
-
"description": "Attempt to remove async from the target function."
|
|
1840
|
-
},
|
|
1841
|
-
"forceChangeWillBreakSyntax": {
|
|
1842
|
-
"type": "boolean",
|
|
1843
|
-
"description": "Allow syntax-breaking changes without rollback."
|
|
1844
|
-
},
|
|
1845
|
-
"boundary": {
|
|
1846
|
-
"type": "string",
|
|
1847
|
-
"description": "Search boundary: 'project' (default), 'reachable', or 'workspace'.",
|
|
1848
|
-
"enum": [
|
|
1849
|
-
"project",
|
|
1850
|
-
"reachable",
|
|
1851
|
-
"workspace"
|
|
1852
|
-
]
|
|
1853
|
-
},
|
|
1854
|
-
"batchSaves": {
|
|
1855
|
-
"type": "boolean",
|
|
1856
|
-
"description": "Batch writes until the operation completes."
|
|
1857
|
-
}
|
|
1858
|
-
},
|
|
1859
|
-
"required": [
|
|
1860
|
-
"path",
|
|
1861
|
-
"expectedHash"
|
|
1862
|
-
],
|
|
1863
|
-
"additionalProperties": false
|
|
1864
|
-
},
|
|
1865
|
-
"examples": [
|
|
1866
|
-
{
|
|
1867
|
-
"path": "src/app.ts#FD:0",
|
|
1868
|
-
"expectedHash": "p123:c456",
|
|
1869
|
-
"parameters": {
|
|
1870
|
-
"add": [
|
|
1871
|
-
{
|
|
1872
|
-
"name": "options",
|
|
1873
|
-
"type": "Options",
|
|
1874
|
-
"position": 1
|
|
1875
|
-
}
|
|
1876
|
-
]
|
|
1877
|
-
}
|
|
1878
|
-
},
|
|
1879
|
-
{
|
|
1880
|
-
"path": "src/app.ts#FD:0",
|
|
1881
|
-
"expectedHash": "p123:c456",
|
|
1882
|
-
"parameters": {
|
|
1883
|
-
"remove": [
|
|
1884
|
-
"oldParam",
|
|
1885
|
-
1
|
|
1886
|
-
]
|
|
1887
|
-
},
|
|
1888
|
-
"returnType": "Promise<void>"
|
|
1889
|
-
}
|
|
1890
|
-
]
|
|
1891
|
-
},
|
|
1892
1396
|
{
|
|
1893
1397
|
"name": "filter-map-reduce",
|
|
1894
1398
|
"category": "pando",
|
|
1895
1399
|
"signature": "filter-map-reduce(query, transforms, apply)",
|
|
1896
|
-
"description": "Batch apply transforms to matches selected by the query. query accepts the same parameters as find-nodes; see find-nodes documentation. Supported transforms: insert, delete, replace (use scope:'body' for body-only).
|
|
1400
|
+
"description": "Batch apply transforms to matches selected by the query. query accepts the same parameters as find-nodes; see find-nodes documentation. Supported transforms: insert, delete, replace (use scope:'body' for body-only). Transforms must NOT include expectedHash (hashes are derived from matches). Matches are applied per-file in descending start offset order to reduce drift. Anchors accept $MATCH, $LABEL(name), and $CREATED[idx] (negative idx allowed). apply.pageSize clamps to 100. apply.maxMatches can cap total matches. Example: { query:{ symbolKinds:['function'], name:'foo' }, transforms:[{ op:'insert', to:{ bodyEndOf:'$MATCH' }, code:'\\nreturn 1;', replaceExistingNodeAtPath:false }] }",
|
|
1897
1401
|
"parameters": {
|
|
1898
1402
|
"type": "object",
|
|
1899
1403
|
"properties": {
|
|
@@ -2274,7 +1778,7 @@
|
|
|
2274
1778
|
"name": "snapshot-worktree",
|
|
2275
1779
|
"category": "pando",
|
|
2276
1780
|
"signature": "snapshot-worktree(message, trailers)",
|
|
2277
|
-
"description": "
|
|
1781
|
+
"description": "Snapshot current git worktree changes. If no changes, returns snapshotSkipped=true. message and trailers are optional. Example: { message:'checkpoint', trailers:{ ticket:'ABC-123' } }",
|
|
2278
1782
|
"parameters": {
|
|
2279
1783
|
"type": "object",
|
|
2280
1784
|
"properties": {
|