@guanlin4924/devflow-pi 0.1.76 → 0.1.78

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 (25) hide show
  1. package/package.json +9 -2
  2. package/plugins/devflow-intel/skills/workflow-code-index/references/adapter-contract.md +8 -0
  3. package/plugins/devflow-intel/skills/workflow-code-index/references/data-model.md +1 -1
  4. package/plugins/devflow-intel/skills/workflow-code-index/scripts/adapters/base.py +20 -0
  5. package/plugins/devflow-intel/skills/workflow-code-index/scripts/adapters/capabilities.py +26 -0
  6. package/plugins/devflow-intel/skills/workflow-code-index/scripts/adapters/generic_text.py +4 -2
  7. package/plugins/devflow-intel/skills/workflow-code-index/scripts/adapters/go_ast.py +20 -0
  8. package/plugins/devflow-intel/skills/workflow-code-index/scripts/adapters/helpers/DevflowJavaAstHelper.java +96 -0
  9. package/plugins/devflow-intel/skills/workflow-code-index/scripts/adapters/helpers/go_ast_helper.go +96 -0
  10. package/plugins/devflow-intel/skills/workflow-code-index/scripts/adapters/helpers/php_ast_helper.php +91 -0
  11. package/plugins/devflow-intel/skills/workflow-code-index/scripts/adapters/helpers/tree_sitter_wasm_helper.mjs +50 -0
  12. package/plugins/devflow-intel/skills/workflow-code-index/scripts/adapters/helpers/typescript_ast_helper.cjs +123 -0
  13. package/plugins/devflow-intel/skills/workflow-code-index/scripts/adapters/java_ast.py +37 -0
  14. package/plugins/devflow-intel/skills/workflow-code-index/scripts/adapters/native_process.py +328 -0
  15. package/plugins/devflow-intel/skills/workflow-code-index/scripts/adapters/parser-capabilities.json +491 -0
  16. package/plugins/devflow-intel/skills/workflow-code-index/scripts/adapters/php_ast.py +55 -0
  17. package/plugins/devflow-intel/skills/workflow-code-index/scripts/adapters/python_ast.py +10 -0
  18. package/plugins/devflow-intel/skills/workflow-code-index/scripts/adapters/registry.py +55 -50
  19. package/plugins/devflow-intel/skills/workflow-code-index/scripts/adapters/structured_scope.py +1 -1
  20. package/plugins/devflow-intel/skills/workflow-code-index/scripts/adapters/tree_sitter_wasm.py +253 -0
  21. package/plugins/devflow-intel/skills/workflow-code-index/scripts/adapters/typescript_ast.py +31 -0
  22. package/plugins/devflow-intel/skills/workflow-code-index/scripts/code_index.py +29 -12
  23. package/plugins/devflow-intel/skills/workflow-code-index/scripts/semantic.py +93 -12
  24. package/plugins/devflow-intel/skills/workflow-code-index/scripts/writers/sqlite_writer.py +26 -13
  25. package/src/constants.ts +1 -1
@@ -0,0 +1,491 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "languages": {
4
+ "python": {
5
+ "parser": "python-ast@1",
6
+ "strategy": "native",
7
+ "status": "implemented",
8
+ "runtime": "python-stdlib",
9
+ "fallback": "generic-text@2"
10
+ },
11
+ "typescript": {
12
+ "parser": "typescript-compiler-ast@1",
13
+ "strategy": "native",
14
+ "status": "implemented",
15
+ "runtime": "node-typescript",
16
+ "fallback": "structured-scope@1"
17
+ },
18
+ "javascript": {
19
+ "parser": "typescript-compiler-ast@1",
20
+ "strategy": "native",
21
+ "status": "implemented",
22
+ "runtime": "node-typescript",
23
+ "fallback": "structured-scope@1"
24
+ },
25
+ "go": {
26
+ "parser": "go-parser-ast@1",
27
+ "strategy": "native",
28
+ "status": "implemented",
29
+ "runtime": "go-toolchain",
30
+ "fallback": "structured-scope@1"
31
+ },
32
+ "java": {
33
+ "parser": "javac-tree-ast@1",
34
+ "strategy": "native",
35
+ "status": "implemented",
36
+ "runtime": "jdk-compiler",
37
+ "fallback": "structured-scope@1"
38
+ },
39
+ "php": {
40
+ "parser": "nikic-php-parser-ast@1",
41
+ "strategy": "native",
42
+ "status": "conditional",
43
+ "runtime": "php-composer",
44
+ "fallback": "structured-scope@1",
45
+ "todo": "Bundle or provision nikic PHP-Parser independently of target repositories."
46
+ },
47
+ "ruby": {
48
+ "parser": "tree-sitter-wasm:ruby@1",
49
+ "strategy": "tree-sitter-wasm",
50
+ "status": "implemented",
51
+ "fallback": "structured-scope@1",
52
+ "support_level": "supported",
53
+ "grammar": {
54
+ "id": "ruby",
55
+ "package": "@plurnk/plurnk-mimetypes-grammar-ruby",
56
+ "version": "1.16.1",
57
+ "sha256": "sha256:cb39211ed6631a1c20ac8a90fa2f981102e9f5a388baa3fea860cc7a36f76984",
58
+ "license": "MIT",
59
+ "fixture": "tests/fixtures/tree-sitter/ruby",
60
+ "embedded_languages": []
61
+ },
62
+ "runtime_dependency": "@plurnk/plurnk-mimetypes-grammar-ruby@1.16.1"
63
+ },
64
+ "rust": {
65
+ "parser": "tree-sitter-wasm:rust@1",
66
+ "strategy": "tree-sitter-wasm",
67
+ "status": "unavailable",
68
+ "fallback": "structured-scope@1",
69
+ "support_level": "parser_unavailable",
70
+ "grammar": {
71
+ "id": "rust",
72
+ "package": "tree-sitter-rust",
73
+ "version": null,
74
+ "sha256": null,
75
+ "license": "MIT",
76
+ "fixture": "tests/fixtures/tree-sitter/rust",
77
+ "embedded_languages": []
78
+ },
79
+ "todo": "Provide a pinned web-tree-sitter WASM grammar via DEVFLOW_TREE_SITTER_WASM_GRAMMAR_RUST."
80
+ },
81
+ "kotlin": {
82
+ "parser": "tree-sitter-wasm:kotlin@1",
83
+ "strategy": "tree-sitter-wasm",
84
+ "status": "implemented",
85
+ "fallback": "structured-scope@1",
86
+ "support_level": "supported",
87
+ "grammar": {
88
+ "id": "kotlin",
89
+ "package": "@plurnk/plurnk-mimetypes-grammar-kotlin",
90
+ "version": "1.16.1",
91
+ "sha256": "sha256:7294358f85c60e15602fc35b175c9b5559ca8bf39aeb0fd91a7d84f63f5fbf1a",
92
+ "license": "MIT",
93
+ "fixture": "tests/fixtures/tree-sitter/kotlin",
94
+ "embedded_languages": []
95
+ },
96
+ "runtime_dependency": "@plurnk/plurnk-mimetypes-grammar-kotlin@1.16.1"
97
+ },
98
+ "c": {
99
+ "parser": "tree-sitter-wasm:c@1",
100
+ "strategy": "tree-sitter-wasm",
101
+ "status": "unavailable",
102
+ "fallback": "structured-scope@1",
103
+ "support_level": "parser_unavailable",
104
+ "grammar": {
105
+ "id": "c",
106
+ "package": "tree-sitter-c",
107
+ "version": null,
108
+ "sha256": null,
109
+ "license": "MIT",
110
+ "fixture": "tests/fixtures/tree-sitter/c",
111
+ "embedded_languages": []
112
+ },
113
+ "todo": "Provide a pinned web-tree-sitter WASM grammar via DEVFLOW_TREE_SITTER_WASM_GRAMMAR_C."
114
+ },
115
+ "cpp": {
116
+ "parser": "tree-sitter-wasm:cpp@1",
117
+ "strategy": "tree-sitter-wasm",
118
+ "status": "implemented",
119
+ "fallback": "structured-scope@1",
120
+ "support_level": "supported",
121
+ "grammar": {
122
+ "id": "cpp",
123
+ "package": "@plurnk/plurnk-mimetypes-grammar-cpp",
124
+ "version": "1.16.1",
125
+ "sha256": "sha256:9f74e4a1b2861425f8931f8934ea48b975560f51af5c913c42049eb4e9b016f4",
126
+ "license": "MIT",
127
+ "fixture": "tests/fixtures/tree-sitter/cpp",
128
+ "embedded_languages": []
129
+ },
130
+ "runtime_dependency": "@plurnk/plurnk-mimetypes-grammar-cpp@1.16.1"
131
+ },
132
+ "csharp": {
133
+ "parser": "tree-sitter-wasm:c_sharp@1",
134
+ "strategy": "tree-sitter-wasm",
135
+ "status": "unavailable",
136
+ "fallback": "structured-scope@1",
137
+ "support_level": "parser_unavailable",
138
+ "grammar": {
139
+ "id": "c_sharp",
140
+ "package": "tree-sitter-c-sharp",
141
+ "version": null,
142
+ "sha256": null,
143
+ "license": "MIT",
144
+ "fixture": "tests/fixtures/tree-sitter/csharp",
145
+ "embedded_languages": []
146
+ },
147
+ "todo": "Provide a pinned web-tree-sitter WASM grammar via DEVFLOW_TREE_SITTER_WASM_GRAMMAR_CSHARP."
148
+ },
149
+ "swift": {
150
+ "parser": "tree-sitter-wasm:swift@1",
151
+ "strategy": "tree-sitter-wasm",
152
+ "status": "unavailable",
153
+ "fallback": "structured-scope@1",
154
+ "support_level": "parser_unavailable",
155
+ "grammar": {
156
+ "id": "swift",
157
+ "package": "tree-sitter-swift",
158
+ "version": null,
159
+ "sha256": null,
160
+ "license": "MIT",
161
+ "fixture": "tests/fixtures/tree-sitter/swift",
162
+ "embedded_languages": []
163
+ },
164
+ "todo": "Provide a pinned web-tree-sitter WASM grammar via DEVFLOW_TREE_SITTER_WASM_GRAMMAR_SWIFT."
165
+ },
166
+ "dart": {
167
+ "parser": "tree-sitter-wasm:dart@1",
168
+ "strategy": "tree-sitter-wasm",
169
+ "status": "unavailable",
170
+ "fallback": "structured-scope@1",
171
+ "support_level": "parser_unavailable",
172
+ "grammar": {
173
+ "id": "dart",
174
+ "package": "tree-sitter-dart",
175
+ "version": null,
176
+ "sha256": null,
177
+ "license": "MIT",
178
+ "fixture": "tests/fixtures/tree-sitter/dart",
179
+ "embedded_languages": []
180
+ },
181
+ "todo": "Provide a pinned web-tree-sitter WASM grammar via DEVFLOW_TREE_SITTER_WASM_GRAMMAR_DART."
182
+ },
183
+ "scala": {
184
+ "parser": "tree-sitter-wasm:scala@1",
185
+ "strategy": "tree-sitter-wasm",
186
+ "status": "implemented",
187
+ "fallback": "structured-scope@1",
188
+ "support_level": "supported",
189
+ "grammar": {
190
+ "id": "scala",
191
+ "package": "@plurnk/plurnk-mimetypes-grammar-scala",
192
+ "version": "1.16.1",
193
+ "sha256": "sha256:026c2f9a8374109861f6621f4759ef690faebcaa67c2d56b06af3786c206b030",
194
+ "license": "Apache-2.0",
195
+ "fixture": "tests/fixtures/tree-sitter/scala",
196
+ "embedded_languages": []
197
+ },
198
+ "runtime_dependency": "@plurnk/plurnk-mimetypes-grammar-scala@1.16.1"
199
+ },
200
+ "lua": {
201
+ "parser": "tree-sitter-wasm:lua@1",
202
+ "strategy": "tree-sitter-wasm",
203
+ "status": "conditional",
204
+ "support_level": "parser_unavailable",
205
+ "fallback": "structured-scope@1",
206
+ "grammar": {
207
+ "id": "lua",
208
+ "package": "tree-sitter-lua",
209
+ "version": null,
210
+ "sha256": null,
211
+ "license": "MIT",
212
+ "fixture": "tests/fixtures/tree-sitter/lua",
213
+ "embedded_languages": []
214
+ },
215
+ "todo": "Provide a pinned web-tree-sitter WASM grammar via DEVFLOW_TREE_SITTER_WASM_GRAMMAR_LUA."
216
+ },
217
+ "shell": {
218
+ "parser": "tree-sitter-wasm:bash@1",
219
+ "strategy": "tree-sitter-wasm",
220
+ "status": "conditional",
221
+ "support_level": "parser_unavailable",
222
+ "fallback": "structured-scope@1",
223
+ "grammar": {
224
+ "id": "bash",
225
+ "package": "tree-sitter-bash",
226
+ "version": null,
227
+ "sha256": null,
228
+ "license": "MIT",
229
+ "fixture": "tests/fixtures/tree-sitter/bash",
230
+ "embedded_languages": []
231
+ },
232
+ "todo": "Provide a pinned web-tree-sitter WASM grammar via DEVFLOW_TREE_SITTER_WASM_GRAMMAR_SHELL."
233
+ },
234
+ "vue": {
235
+ "parser": "tree-sitter-wasm:vue@1",
236
+ "strategy": "tree-sitter-wasm",
237
+ "status": "unavailable",
238
+ "fallback": "structured-scope@1",
239
+ "support_level": "parser_unavailable",
240
+ "grammar": {
241
+ "id": "vue",
242
+ "package": "tree-sitter-vue",
243
+ "version": null,
244
+ "sha256": null,
245
+ "license": "MIT",
246
+ "fixture": "tests/fixtures/tree-sitter/vue",
247
+ "embedded_languages": []
248
+ },
249
+ "todo": "Provide a pinned web-tree-sitter WASM grammar via DEVFLOW_TREE_SITTER_WASM_GRAMMAR_VUE."
250
+ },
251
+ "svelte": {
252
+ "parser": "tree-sitter-wasm:svelte@1",
253
+ "strategy": "tree-sitter-wasm",
254
+ "status": "unavailable",
255
+ "fallback": "structured-scope@1",
256
+ "support_level": "parser_unavailable",
257
+ "grammar": {
258
+ "id": "svelte",
259
+ "package": "tree-sitter-svelte",
260
+ "version": null,
261
+ "sha256": null,
262
+ "license": "MIT",
263
+ "fixture": "tests/fixtures/tree-sitter/svelte",
264
+ "embedded_languages": []
265
+ },
266
+ "todo": "Provide a pinned web-tree-sitter WASM grammar via DEVFLOW_TREE_SITTER_WASM_GRAMMAR_SVELTE."
267
+ },
268
+ "sql": {
269
+ "parser": "tree-sitter-wasm:sql@1",
270
+ "strategy": "tree-sitter-wasm",
271
+ "status": "unavailable",
272
+ "fallback": "generic-text@2",
273
+ "support_level": "parser_unavailable",
274
+ "grammar": {
275
+ "id": "sql",
276
+ "package": "tree-sitter-sql",
277
+ "version": null,
278
+ "sha256": null,
279
+ "license": "MIT",
280
+ "fixture": "tests/fixtures/tree-sitter/sql",
281
+ "embedded_languages": []
282
+ },
283
+ "todo": "Provide a pinned web-tree-sitter WASM grammar via DEVFLOW_TREE_SITTER_WASM_GRAMMAR_SQL."
284
+ },
285
+ "html": {
286
+ "parser": "tree-sitter-wasm:html@1",
287
+ "strategy": "tree-sitter-wasm",
288
+ "status": "unavailable",
289
+ "fallback": "generic-text@2",
290
+ "support_level": "parser_unavailable",
291
+ "grammar": {
292
+ "id": "html",
293
+ "package": "tree-sitter-html",
294
+ "version": null,
295
+ "sha256": null,
296
+ "license": "MIT",
297
+ "fixture": "tests/fixtures/tree-sitter/html",
298
+ "embedded_languages": []
299
+ },
300
+ "todo": "Provide a pinned web-tree-sitter WASM grammar via DEVFLOW_TREE_SITTER_WASM_GRAMMAR_HTML."
301
+ },
302
+ "css": {
303
+ "parser": "tree-sitter-wasm:css@1",
304
+ "strategy": "tree-sitter-wasm",
305
+ "status": "unavailable",
306
+ "fallback": "generic-text@2",
307
+ "support_level": "parser_unavailable",
308
+ "grammar": {
309
+ "id": "css",
310
+ "package": "tree-sitter-css",
311
+ "version": null,
312
+ "sha256": null,
313
+ "license": "MIT",
314
+ "fixture": "tests/fixtures/tree-sitter/css",
315
+ "embedded_languages": []
316
+ },
317
+ "todo": "Provide a pinned web-tree-sitter WASM grammar via DEVFLOW_TREE_SITTER_WASM_GRAMMAR_CSS."
318
+ },
319
+ "json": {
320
+ "parser": "tree-sitter-wasm:json@1",
321
+ "strategy": "tree-sitter-wasm",
322
+ "status": "unavailable",
323
+ "fallback": "generic-text@2",
324
+ "support_level": "parser_unavailable",
325
+ "grammar": {
326
+ "id": "json",
327
+ "package": "tree-sitter-json",
328
+ "version": null,
329
+ "sha256": null,
330
+ "license": "MIT",
331
+ "fixture": "tests/fixtures/tree-sitter/json",
332
+ "embedded_languages": []
333
+ },
334
+ "todo": "Provide a pinned web-tree-sitter WASM grammar via DEVFLOW_TREE_SITTER_WASM_GRAMMAR_JSON."
335
+ },
336
+ "yaml": {
337
+ "parser": "tree-sitter-wasm:yaml@1",
338
+ "strategy": "tree-sitter-wasm",
339
+ "status": "implemented",
340
+ "fallback": "generic-text@2",
341
+ "support_level": "supported",
342
+ "grammar": {
343
+ "id": "yaml",
344
+ "package": "@plurnk/plurnk-mimetypes-grammar-yaml",
345
+ "version": "1.16.1",
346
+ "sha256": "sha256:1d87a5e4a634f475e63dc232b1e67cd1930c3c1585892df792eada06ff7ffce7",
347
+ "license": "MIT",
348
+ "fixture": "tests/fixtures/tree-sitter/yaml",
349
+ "embedded_languages": []
350
+ },
351
+ "runtime_dependency": "@plurnk/plurnk-mimetypes-grammar-yaml@1.16.1"
352
+ },
353
+ "toml": {
354
+ "parser": "tree-sitter-wasm:toml@1",
355
+ "strategy": "tree-sitter-wasm",
356
+ "status": "unavailable",
357
+ "fallback": "generic-text@2",
358
+ "support_level": "parser_unavailable",
359
+ "grammar": {
360
+ "id": "toml",
361
+ "package": "tree-sitter-toml",
362
+ "version": null,
363
+ "sha256": null,
364
+ "license": "MIT",
365
+ "fixture": "tests/fixtures/tree-sitter/toml",
366
+ "embedded_languages": []
367
+ },
368
+ "todo": "Provide a pinned web-tree-sitter WASM grammar via DEVFLOW_TREE_SITTER_WASM_GRAMMAR_TOML."
369
+ },
370
+ "xml": {
371
+ "parser": "tree-sitter-wasm:xml@1",
372
+ "strategy": "tree-sitter-wasm",
373
+ "status": "unavailable",
374
+ "fallback": "generic-text@2",
375
+ "support_level": "parser_unavailable",
376
+ "grammar": {
377
+ "id": "xml",
378
+ "package": "tree-sitter-xml",
379
+ "version": null,
380
+ "sha256": null,
381
+ "license": "MIT",
382
+ "fixture": "tests/fixtures/tree-sitter/xml",
383
+ "embedded_languages": []
384
+ },
385
+ "todo": "Provide a pinned web-tree-sitter WASM grammar via DEVFLOW_TREE_SITTER_WASM_GRAMMAR_XML."
386
+ },
387
+ "graphql": {
388
+ "parser": "tree-sitter-wasm:graphql@1",
389
+ "strategy": "tree-sitter-wasm",
390
+ "status": "implemented",
391
+ "fallback": "generic-text@2",
392
+ "support_level": "supported",
393
+ "grammar": {
394
+ "id": "graphql",
395
+ "package": "tree-sitter-graphql-grammar-wasm",
396
+ "version": "1.1.0",
397
+ "sha256": "sha256:3def862e09d38087496d20de787427327a1242a4b36ee341879892979d3c51bf",
398
+ "license": "MIT",
399
+ "fixture": "tests/fixtures/tree-sitter/graphql",
400
+ "embedded_languages": []
401
+ },
402
+ "runtime_dependency": "tree-sitter-graphql-grammar-wasm@1.1.0",
403
+ "todo": "Additional language grammars require separately pinned WASM packages."
404
+ },
405
+ "protobuf": {
406
+ "parser": "tree-sitter-wasm:proto@1",
407
+ "strategy": "tree-sitter-wasm",
408
+ "status": "unavailable",
409
+ "fallback": "generic-text@2",
410
+ "support_level": "parser_unavailable",
411
+ "grammar": {
412
+ "id": "proto",
413
+ "package": "tree-sitter-proto",
414
+ "version": null,
415
+ "sha256": null,
416
+ "license": "MIT",
417
+ "fixture": "tests/fixtures/tree-sitter/protobuf",
418
+ "embedded_languages": []
419
+ },
420
+ "todo": "Provide a pinned web-tree-sitter WASM grammar via DEVFLOW_TREE_SITTER_WASM_GRAMMAR_PROTOBUF."
421
+ },
422
+ "hcl": {
423
+ "parser": "tree-sitter-wasm:hcl@1",
424
+ "strategy": "tree-sitter-wasm",
425
+ "status": "unavailable",
426
+ "fallback": "generic-text@2",
427
+ "support_level": "parser_unavailable",
428
+ "grammar": {
429
+ "id": "hcl",
430
+ "package": "tree-sitter-hcl",
431
+ "version": null,
432
+ "sha256": null,
433
+ "license": "MIT",
434
+ "fixture": "tests/fixtures/tree-sitter/hcl",
435
+ "embedded_languages": []
436
+ },
437
+ "todo": "Provide a pinned web-tree-sitter WASM grammar via DEVFLOW_TREE_SITTER_WASM_GRAMMAR_HCL."
438
+ },
439
+ "terraform": {
440
+ "parser": "tree-sitter-wasm:hcl@1",
441
+ "strategy": "tree-sitter-wasm",
442
+ "status": "unavailable",
443
+ "fallback": "generic-text@2",
444
+ "support_level": "parser_unavailable",
445
+ "grammar": {
446
+ "id": "hcl",
447
+ "package": "tree-sitter-hcl",
448
+ "version": null,
449
+ "sha256": null,
450
+ "license": "MIT",
451
+ "fixture": "tests/fixtures/tree-sitter/terraform",
452
+ "embedded_languages": []
453
+ },
454
+ "todo": "Provide a pinned web-tree-sitter WASM grammar via DEVFLOW_TREE_SITTER_WASM_GRAMMAR_TERRAFORM."
455
+ },
456
+ "dockerfile": {
457
+ "parser": "tree-sitter-wasm:dockerfile@1",
458
+ "strategy": "tree-sitter-wasm",
459
+ "status": "unavailable",
460
+ "fallback": "generic-text@2",
461
+ "support_level": "parser_unavailable",
462
+ "grammar": {
463
+ "id": "dockerfile",
464
+ "package": "tree-sitter-dockerfile",
465
+ "version": null,
466
+ "sha256": null,
467
+ "license": "MIT",
468
+ "fixture": "tests/fixtures/tree-sitter/dockerfile",
469
+ "embedded_languages": []
470
+ },
471
+ "todo": "Provide a pinned web-tree-sitter WASM grammar via DEVFLOW_TREE_SITTER_WASM_GRAMMAR_DOCKERFILE."
472
+ },
473
+ "markdown": {
474
+ "parser": "tree-sitter-wasm:markdown@1",
475
+ "strategy": "tree-sitter-wasm",
476
+ "status": "unavailable",
477
+ "fallback": "generic-text@2",
478
+ "support_level": "parser_unavailable",
479
+ "grammar": {
480
+ "id": "markdown",
481
+ "package": "tree-sitter-markdown",
482
+ "version": null,
483
+ "sha256": null,
484
+ "license": "MIT",
485
+ "fixture": "tests/fixtures/tree-sitter/markdown",
486
+ "embedded_languages": []
487
+ },
488
+ "todo": "Provide a pinned web-tree-sitter WASM grammar via DEVFLOW_TREE_SITTER_WASM_GRAMMAR_MARKDOWN."
489
+ }
490
+ }
491
+ }
@@ -0,0 +1,55 @@
1
+ import os
2
+ import shutil
3
+ import subprocess
4
+ from pathlib import Path
5
+ from typing import List, Optional, Tuple
6
+
7
+ from adapters.native_process import HELPER_DIR, NativeProcessAdapter
8
+
9
+
10
+ class PhpAstAdapter(NativeProcessAdapter):
11
+ name = "nikic-php-parser-ast"
12
+ languages = ("php",)
13
+ native_description = "nikic PHP-Parser syntax tree; declarations, imports, and calls"
14
+
15
+ def __init__(self, fallback):
16
+ super().__init__(fallback)
17
+ self.autoload: Optional[Path] = None
18
+ self.autoload_by_root = {}
19
+
20
+ def version(self) -> str:
21
+ return "1"
22
+
23
+ def _autoload_candidates(self, codebase=None):
24
+ configured = os.environ.get("DEVFLOW_PHP_PARSER_AUTOLOAD")
25
+ if configured:
26
+ yield Path(configured)
27
+ if codebase is not None:
28
+ yield Path(codebase.root) / "vendor" / "autoload.php"
29
+ for parent in Path(codebase.root).parents:
30
+ yield parent / "vendor" / "autoload.php"
31
+ for parent in Path(__file__).resolve().parents:
32
+ yield parent / "vendor" / "autoload.php"
33
+
34
+ def check_available(self, codebase=None) -> Tuple[bool, str]:
35
+ php = shutil.which("php")
36
+ if not php:
37
+ return False, "php executable not found"
38
+ for candidate in self._autoload_candidates(codebase):
39
+ if not candidate.is_file():
40
+ continue
41
+ probe = subprocess.run(
42
+ [php, "-r", f"require {str(candidate)!r}; exit(class_exists('PhpParser\\\\ParserFactory') ? 0 : 3);"],
43
+ stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL, check=False,
44
+ )
45
+ if probe.returncode == 0:
46
+ self.autoload = candidate
47
+ self.autoload_by_root[self._availability_key(codebase)] = candidate
48
+ return True, f"nikic/PHP-Parser available via {candidate}"
49
+ return False, "nikic/PHP-Parser is not installed; set DEVFLOW_PHP_PARSER_AUTOLOAD or install nikic/php-parser"
50
+
51
+ def command(self, codebase=None) -> List[str]:
52
+ autoload = self.autoload_by_root.get(self._availability_key(codebase), self.autoload)
53
+ if autoload is None:
54
+ raise RuntimeError("nikic/PHP-Parser autoload path is unavailable")
55
+ return [shutil.which("php") or "php", str(HELPER_DIR / "php_ast_helper.php"), str(autoload)]
@@ -18,6 +18,15 @@ class PythonAstAdapter(Adapter):
18
18
  def version(self) -> str:
19
19
  return "1"
20
20
 
21
+ def capability(self) -> Dict:
22
+ return {
23
+ "parser": self.parser_id,
24
+ "languages": ["python"],
25
+ "native": True,
26
+ "available": True,
27
+ "scope": "Python standard library ast syntax tree; declarations, imports, and calls",
28
+ }
29
+
21
30
  def parse_file(self, codebase, file_record, text) -> ParseResult:
22
31
  if file_record["language"] != "python":
23
32
  return self.fallback.parse_file(codebase, file_record, text)
@@ -44,6 +53,7 @@ class PythonAstAdapter(Adapter):
44
53
  symbols=[file_symbol, *visitor.symbols],
45
54
  relations=visitor.contains + visitor.relations,
46
55
  diagnostics=[],
56
+ actual_parser=self.parser_id,
47
57
  )
48
58
 
49
59