@mrclrchtr/supi-code-intelligence 4.7.0 → 4.9.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/node_modules/@mrclrchtr/supi-code-runtime/README.md +1 -1
- package/node_modules/@mrclrchtr/supi-code-runtime/package.json +1 -15
- package/node_modules/@mrclrchtr/supi-code-runtime/src/api.ts +1 -6
- package/node_modules/@mrclrchtr/supi-core/README.md +29 -35
- package/node_modules/@mrclrchtr/supi-core/package.json +4 -7
- package/node_modules/@mrclrchtr/supi-core/src/api.ts +4 -6
- package/node_modules/@mrclrchtr/supi-core/src/config/config.ts +0 -20
- package/node_modules/@mrclrchtr/supi-core/src/config/prompt-surface.ts +7 -1
- package/node_modules/@mrclrchtr/supi-core/src/config.ts +0 -1
- package/node_modules/@mrclrchtr/supi-core/src/context.ts +1 -9
- package/node_modules/@mrclrchtr/supi-core/src/debug-registry.ts +8 -0
- package/node_modules/@mrclrchtr/supi-core/src/debug-timing.ts +107 -0
- package/node_modules/@mrclrchtr/supi-core/src/index.ts +4 -6
- package/node_modules/@mrclrchtr/supi-core/src/settings/settings-registry.ts +54 -28
- package/node_modules/@mrclrchtr/supi-core/src/settings/settings-schema.ts +91 -125
- package/node_modules/@mrclrchtr/supi-core/src/settings.ts +10 -7
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/README.md +1 -1
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/package.json +1 -15
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/src/api.ts +1 -6
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/README.md +29 -35
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/package.json +4 -7
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/api.ts +4 -6
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/config/config.ts +0 -20
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/config/prompt-surface.ts +7 -1
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/config.ts +0 -1
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/context.ts +1 -9
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/debug-registry.ts +8 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/debug-timing.ts +107 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/index.ts +4 -6
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/settings/settings-registry.ts +54 -28
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/settings/settings-schema.ts +91 -125
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/settings.ts +10 -7
- package/node_modules/@mrclrchtr/supi-lsp/package.json +3 -3
- package/node_modules/@mrclrchtr/supi-lsp/src/client/client-diagnostics.ts +361 -0
- package/node_modules/@mrclrchtr/supi-lsp/src/client/client.ts +46 -238
- package/node_modules/@mrclrchtr/supi-lsp/src/manager/manager.ts +25 -33
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/README.md +1 -1
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/package.json +1 -15
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/src/api.ts +1 -6
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/README.md +29 -35
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/package.json +4 -7
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/api.ts +4 -6
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/config/config.ts +0 -20
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/config/prompt-surface.ts +7 -1
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/config.ts +0 -1
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/context.ts +1 -9
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/debug-registry.ts +8 -0
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/debug-timing.ts +107 -0
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/index.ts +4 -6
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/settings/settings-registry.ts +54 -28
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/settings/settings-schema.ts +91 -125
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/settings.ts +10 -7
- package/node_modules/@mrclrchtr/supi-tree-sitter/package.json +3 -3
- package/package.json +5 -5
- package/src/analysis/search/ast-scan-timing.ts +59 -0
- package/src/analysis/search/pattern-analysis.ts +230 -0
- package/src/analysis/search/pattern.ts +22 -224
- package/src/config.ts +19 -16
- package/src/substrate/lsp/settings.ts +90 -91
- package/src/tool/find/execute.ts +5 -8
- package/src/tool/graph/execute.ts +1 -1
- package/src/tool/health/execute.ts +2 -5
- package/src/tool/inspect/execute.ts +5 -7
- package/src/tool/orientation/execute.ts +4 -5
- package/src/tool/refactor-apply/execute.ts +4 -5
- package/src/tool/refactor-plan/execute.ts +7 -9
- package/src/tool/result/errors.ts +2 -82
- package/src/ui/tui/common.ts +1 -1
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/README.md +0 -120
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/package.json +0 -75
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/api.ts +0 -42
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/config/config.ts +0 -221
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/config/prompt-surface.ts +0 -357
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/config.ts +0 -11
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/context/context-messages.ts +0 -119
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/context/context-provider-registry.ts +0 -36
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/context/context-tag.ts +0 -31
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/context.ts +0 -16
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/debug-registry.ts +0 -287
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/evidence-badge.ts +0 -41
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/footer-registry.ts +0 -57
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/index.ts +0 -36
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/llm.ts +0 -201
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/model-selection.ts +0 -134
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/path-utils.ts +0 -44
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/path.ts +0 -2
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/progress-widget.ts +0 -189
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/project-roots.ts +0 -170
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/project.ts +0 -15
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/prompt-surface.ts +0 -4
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/registry-utils.ts +0 -93
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/report.ts +0 -121
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/session-utils.ts +0 -71
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/session.ts +0 -8
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings/scoped-settings-list.ts +0 -373
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings/settings-action-menu.ts +0 -102
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings/settings-command.ts +0 -15
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings/settings-registry.ts +0 -76
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings/settings-schema.ts +0 -487
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings/settings-submenus.ts +0 -141
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings/settings-ui.ts +0 -118
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings-ui.ts +0 -3
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings.ts +0 -33
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/spinner-frames.ts +0 -11
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/status-spinner.ts +0 -68
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/terminal.ts +0 -60
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/tool-framework.ts +0 -192
- package/node_modules/@mrclrchtr/supi-code-runtime/src/index.ts +0 -42
- package/node_modules/@mrclrchtr/supi-code-runtime/src/workspace/context.ts +0 -45
- package/node_modules/@mrclrchtr/supi-core/src/context/context-messages.ts +0 -119
- package/node_modules/@mrclrchtr/supi-core/src/progress-widget.ts +0 -189
- package/node_modules/@mrclrchtr/supi-core/src/settings/scoped-settings-list.ts +0 -373
- package/node_modules/@mrclrchtr/supi-core/src/settings/settings-action-menu.ts +0 -102
- package/node_modules/@mrclrchtr/supi-core/src/settings/settings-command.ts +0 -15
- package/node_modules/@mrclrchtr/supi-core/src/settings/settings-submenus.ts +0 -141
- package/node_modules/@mrclrchtr/supi-core/src/settings/settings-ui.ts +0 -118
- package/node_modules/@mrclrchtr/supi-core/src/settings-ui.ts +0 -3
- package/node_modules/@mrclrchtr/supi-core/src/tool-framework.ts +0 -192
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/README.md +0 -120
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/package.json +0 -75
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/api.ts +0 -42
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/config/config.ts +0 -221
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/config/prompt-surface.ts +0 -357
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/config.ts +0 -11
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/context/context-messages.ts +0 -119
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/context/context-provider-registry.ts +0 -36
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/context/context-tag.ts +0 -31
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/context.ts +0 -16
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/debug-registry.ts +0 -287
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/evidence-badge.ts +0 -41
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/footer-registry.ts +0 -57
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/index.ts +0 -36
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/llm.ts +0 -201
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/model-selection.ts +0 -134
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/path-utils.ts +0 -44
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/path.ts +0 -2
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/progress-widget.ts +0 -189
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/project-roots.ts +0 -170
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/project.ts +0 -15
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/prompt-surface.ts +0 -4
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/registry-utils.ts +0 -93
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/report.ts +0 -121
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/session-utils.ts +0 -71
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/session.ts +0 -8
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings/scoped-settings-list.ts +0 -373
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings/settings-action-menu.ts +0 -102
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings/settings-command.ts +0 -15
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings/settings-registry.ts +0 -76
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings/settings-schema.ts +0 -487
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings/settings-submenus.ts +0 -141
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings/settings-ui.ts +0 -118
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings-ui.ts +0 -3
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings.ts +0 -33
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/spinner-frames.ts +0 -11
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/status-spinner.ts +0 -68
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/terminal.ts +0 -60
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/tool-framework.ts +0 -192
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/src/index.ts +0 -42
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/src/workspace/context.ts +0 -45
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/context/context-messages.ts +0 -119
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/progress-widget.ts +0 -189
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/settings/scoped-settings-list.ts +0 -373
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/settings/settings-action-menu.ts +0 -102
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/settings/settings-command.ts +0 -15
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/settings/settings-submenus.ts +0 -141
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/settings/settings-ui.ts +0 -118
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/settings-ui.ts +0 -3
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/tool-framework.ts +0 -192
- package/node_modules/@mrclrchtr/supi-lsp/src/client/client-refresh.ts +0 -234
- package/node_modules/@mrclrchtr/supi-lsp/src/diagnostics/diagnostics.ts +0 -99
- package/node_modules/@mrclrchtr/supi-lsp/src/diagnostics/suppression-diagnostics.ts +0 -60
- package/node_modules/@mrclrchtr/supi-lsp/src/index.ts +0 -41
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/README.md +0 -120
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/package.json +0 -75
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/api.ts +0 -42
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/config/config.ts +0 -221
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/config/prompt-surface.ts +0 -357
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/config.ts +0 -11
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/context/context-messages.ts +0 -119
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/context/context-provider-registry.ts +0 -36
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/context/context-tag.ts +0 -31
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/context.ts +0 -16
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/debug-registry.ts +0 -287
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/evidence-badge.ts +0 -41
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/footer-registry.ts +0 -57
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/index.ts +0 -36
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/llm.ts +0 -201
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/model-selection.ts +0 -134
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/path-utils.ts +0 -44
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/path.ts +0 -2
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/progress-widget.ts +0 -189
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/project-roots.ts +0 -170
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/project.ts +0 -15
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/prompt-surface.ts +0 -4
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/registry-utils.ts +0 -93
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/report.ts +0 -121
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/session-utils.ts +0 -71
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/session.ts +0 -8
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings/scoped-settings-list.ts +0 -373
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings/settings-action-menu.ts +0 -102
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings/settings-command.ts +0 -15
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings/settings-registry.ts +0 -76
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings/settings-schema.ts +0 -487
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings/settings-submenus.ts +0 -141
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings/settings-ui.ts +0 -118
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings-ui.ts +0 -3
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings.ts +0 -33
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/spinner-frames.ts +0 -11
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/status-spinner.ts +0 -68
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/terminal.ts +0 -60
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/tool-framework.ts +0 -192
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/src/index.ts +0 -42
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/src/workspace/context.ts +0 -45
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/context/context-messages.ts +0 -119
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/progress-widget.ts +0 -189
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/settings/scoped-settings-list.ts +0 -373
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/settings/settings-action-menu.ts +0 -102
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/settings/settings-command.ts +0 -15
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/settings/settings-submenus.ts +0 -141
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/settings/settings-ui.ts +0 -118
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/settings-ui.ts +0 -3
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/tool-framework.ts +0 -192
- package/src/tool/infra/error-results.ts +0 -19
|
@@ -1,51 +1,33 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
CodeResult,
|
|
3
|
-
OutlineData,
|
|
4
|
-
StructuralProvider as StructuralSubstrate,
|
|
5
|
-
} from "@mrclrchtr/supi-code-runtime/api";
|
|
1
|
+
import type { StructuralProvider as StructuralSubstrate } from "@mrclrchtr/supi-code-runtime/api";
|
|
6
2
|
import type { StructuralSearchOperation } from "@mrclrchtr/supi-tree-sitter/api";
|
|
7
3
|
import type { CodeFindAstKind } from "../../tool/find/ast-kinds.ts";
|
|
8
4
|
import type { EvidencePartialReason } from "../evidence.ts";
|
|
9
5
|
import {
|
|
10
6
|
type AstScanExclusion,
|
|
11
|
-
type AstScanLimitation,
|
|
12
7
|
type AstScanOperations,
|
|
13
8
|
type AstScanPolicy,
|
|
14
9
|
DEFAULT_AST_SCAN_MAX_FILES,
|
|
15
10
|
DEFAULT_AST_SCAN_TIMEOUT_MS,
|
|
16
11
|
enumerateAstFiles,
|
|
17
12
|
} from "./ast-scan.ts";
|
|
18
|
-
import {
|
|
19
|
-
import { settleByDeadline } from "./deadline.ts";
|
|
13
|
+
import { startAstScanTimer } from "./ast-scan-timing.ts";
|
|
20
14
|
import { relativeDisplayPath } from "./paths.ts";
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
readonly file: string;
|
|
38
|
-
readonly kind: StructuredFailureKind;
|
|
39
|
-
readonly reason: string;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
export type StructuredScanLimitation = AstScanLimitation | ProviderScanLimitation;
|
|
43
|
-
|
|
44
|
-
export interface ProviderScanLimitation {
|
|
45
|
-
readonly reason: "provider-failure";
|
|
46
|
-
readonly pathCount: number;
|
|
47
|
-
readonly examples: readonly string[];
|
|
48
|
-
}
|
|
15
|
+
import {
|
|
16
|
+
analyzeStructuredFiles,
|
|
17
|
+
type StructuredFailure,
|
|
18
|
+
type StructuredMatch,
|
|
19
|
+
type StructuredPatternParams,
|
|
20
|
+
type StructuredScanLimitation,
|
|
21
|
+
} from "./pattern-analysis.ts";
|
|
22
|
+
|
|
23
|
+
export type {
|
|
24
|
+
ProviderScanLimitation,
|
|
25
|
+
StructuredFailure,
|
|
26
|
+
StructuredFailureKind,
|
|
27
|
+
StructuredMatch,
|
|
28
|
+
StructuredPatternParams,
|
|
29
|
+
StructuredScanLimitation,
|
|
30
|
+
} from "./pattern-analysis.ts";
|
|
49
31
|
|
|
50
32
|
/** Structured completeness state for the AST source-file scan. */
|
|
51
33
|
export interface StructuredScanSummary {
|
|
@@ -98,6 +80,7 @@ export interface StructuredPatternSearchOptions {
|
|
|
98
80
|
export async function getStructuredPatternMatches(
|
|
99
81
|
options: StructuredPatternSearchOptions,
|
|
100
82
|
): Promise<StructuredPatternOutcome> {
|
|
83
|
+
const scanTimer = startAstScanTimer();
|
|
101
84
|
const now = options.control?.now ?? Date.now;
|
|
102
85
|
const maxFiles = options.control?.maxFiles ?? DEFAULT_AST_SCAN_MAX_FILES;
|
|
103
86
|
const timeoutMs = options.control?.timeoutMs ?? DEFAULT_AST_SCAN_TIMEOUT_MS;
|
|
@@ -143,6 +126,7 @@ export async function getStructuredPatternMatches(
|
|
|
143
126
|
};
|
|
144
127
|
}
|
|
145
128
|
|
|
129
|
+
scanTimer.enumerationCompleted();
|
|
146
130
|
const analysis = await analyzeStructuredFiles({
|
|
147
131
|
files: enumeration.files,
|
|
148
132
|
displayBase: enumeration.displayBase,
|
|
@@ -156,13 +140,14 @@ export async function getStructuredPatternMatches(
|
|
|
156
140
|
const capabilityMismatches = analysis.failures.filter(
|
|
157
141
|
(failure) => failure.kind === "unsupported-language",
|
|
158
142
|
);
|
|
143
|
+
const complete = enumeration.complete && analysis.limitations.length === 0;
|
|
144
|
+
scanTimer.record({ context: options, operation, roots, enumeration, analysis, complete });
|
|
159
145
|
if (capabilityMismatches.length > 0) {
|
|
160
146
|
return {
|
|
161
147
|
kind: "unavailable",
|
|
162
148
|
reason: `Structural provider rejected ${capabilityMismatches.length} file${capabilityMismatches.length === 1 ? "" : "s"} declared eligible for ${operation} analysis.`,
|
|
163
149
|
};
|
|
164
150
|
}
|
|
165
|
-
const complete = enumeration.complete && analysis.limitations.length === 0;
|
|
166
151
|
return {
|
|
167
152
|
kind: "completed",
|
|
168
153
|
result: {
|
|
@@ -183,92 +168,6 @@ export async function getStructuredPatternMatches(
|
|
|
183
168
|
};
|
|
184
169
|
}
|
|
185
170
|
|
|
186
|
-
interface AnalyzeStructuredFilesOptions {
|
|
187
|
-
readonly files: readonly string[];
|
|
188
|
-
readonly displayBase: string;
|
|
189
|
-
readonly params: StructuredPatternParams;
|
|
190
|
-
readonly structural: StructuralSubstrate;
|
|
191
|
-
readonly deadline: number;
|
|
192
|
-
readonly now: () => number;
|
|
193
|
-
readonly signal?: AbortSignal;
|
|
194
|
-
readonly initialLimitations: readonly AstScanLimitation[];
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
async function analyzeStructuredFiles(options: AnalyzeStructuredFilesOptions): Promise<{
|
|
198
|
-
matches: StructuredMatch[];
|
|
199
|
-
failures: StructuredFailure[];
|
|
200
|
-
limitations: StructuredScanLimitation[];
|
|
201
|
-
analyzedFileCount: number;
|
|
202
|
-
}> {
|
|
203
|
-
const matches: StructuredMatch[] = [];
|
|
204
|
-
const failures: StructuredFailure[] = [];
|
|
205
|
-
const limitations: StructuredScanLimitation[] = [...options.initialLimitations];
|
|
206
|
-
const matcher = createStructuredMatcher(options.params.pattern);
|
|
207
|
-
let analyzedFileCount = 0;
|
|
208
|
-
|
|
209
|
-
for (const [index, absoluteFile] of options.files.entries()) {
|
|
210
|
-
options.signal?.throwIfAborted();
|
|
211
|
-
if (options.now() > options.deadline) {
|
|
212
|
-
addAnalysisTimeout(limitations, options.files.slice(index), options.displayBase);
|
|
213
|
-
break;
|
|
214
|
-
}
|
|
215
|
-
const relativeFile = relativeDisplayPath(options.displayBase, absoluteFile);
|
|
216
|
-
const fileMatches: StructuredMatch[] = [];
|
|
217
|
-
const fileFailures: StructuredFailure[] = [];
|
|
218
|
-
const outcome = await settleByDeadline(
|
|
219
|
-
async () => {
|
|
220
|
-
try {
|
|
221
|
-
await collectMatchesForFile(
|
|
222
|
-
fileMatches,
|
|
223
|
-
fileFailures,
|
|
224
|
-
options.structural,
|
|
225
|
-
relativeFile,
|
|
226
|
-
options.params.kind,
|
|
227
|
-
matcher,
|
|
228
|
-
);
|
|
229
|
-
} catch (error) {
|
|
230
|
-
fileFailures.push({
|
|
231
|
-
file: relativeFile,
|
|
232
|
-
kind: "runtime-error",
|
|
233
|
-
reason: errorMessage(error),
|
|
234
|
-
});
|
|
235
|
-
}
|
|
236
|
-
},
|
|
237
|
-
{ deadline: options.deadline, now: options.now, signal: options.signal },
|
|
238
|
-
);
|
|
239
|
-
if (outcome.kind === "timeout") {
|
|
240
|
-
addAnalysisTimeout(limitations, options.files.slice(index), options.displayBase);
|
|
241
|
-
break;
|
|
242
|
-
}
|
|
243
|
-
options.signal?.throwIfAborted();
|
|
244
|
-
matches.push(...fileMatches);
|
|
245
|
-
failures.push(...fileFailures);
|
|
246
|
-
if (fileFailures.length === 0) analyzedFileCount += 1;
|
|
247
|
-
}
|
|
248
|
-
|
|
249
|
-
if (failures.length > 0) {
|
|
250
|
-
limitations.push({
|
|
251
|
-
reason: "provider-failure",
|
|
252
|
-
pathCount: failures.length,
|
|
253
|
-
examples: failures.slice(0, 5).map((failure) => failure.file),
|
|
254
|
-
});
|
|
255
|
-
}
|
|
256
|
-
return { matches, failures, limitations, analyzedFileCount };
|
|
257
|
-
}
|
|
258
|
-
|
|
259
|
-
function addAnalysisTimeout(
|
|
260
|
-
limitations: StructuredScanLimitation[],
|
|
261
|
-
remainingFiles: readonly string[],
|
|
262
|
-
cwd: string,
|
|
263
|
-
): void {
|
|
264
|
-
if (limitations.some((limitation) => limitation.reason === "timeout")) return;
|
|
265
|
-
limitations.push({
|
|
266
|
-
reason: "timeout",
|
|
267
|
-
pathCount: remainingFiles.length,
|
|
268
|
-
examples: remainingFiles.slice(0, 5).map((file) => relativeDisplayPath(cwd, file)),
|
|
269
|
-
});
|
|
270
|
-
}
|
|
271
|
-
|
|
272
171
|
function primaryPartialReason(
|
|
273
172
|
limitations: readonly StructuredScanLimitation[],
|
|
274
173
|
): EvidencePartialReason {
|
|
@@ -282,94 +181,6 @@ function primaryPartialReason(
|
|
|
282
181
|
return "provider-limited";
|
|
283
182
|
}
|
|
284
183
|
|
|
285
|
-
// biome-ignore lint/complexity/useMaxParams: helper takes explicit collection inputs to avoid intermediate objects in the hot path
|
|
286
|
-
// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: kind-specific tree-sitter matching is clearest as one helper
|
|
287
|
-
async function collectMatchesForFile(
|
|
288
|
-
matches: StructuredMatch[],
|
|
289
|
-
failures: StructuredFailure[],
|
|
290
|
-
structural: StructuralSubstrate,
|
|
291
|
-
relFile: string,
|
|
292
|
-
kind: CodeFindAstKind,
|
|
293
|
-
matcher: (value: string) => boolean,
|
|
294
|
-
): Promise<void> {
|
|
295
|
-
const recordFailure = (kind: StructuredFailureKind, reason: string) => {
|
|
296
|
-
failures.push({ file: relFile, kind, reason });
|
|
297
|
-
};
|
|
298
|
-
|
|
299
|
-
if (kind === "definition") {
|
|
300
|
-
const outline = await structural.outline(relFile);
|
|
301
|
-
if (!handleStructuralResult(outline, recordFailure)) return;
|
|
302
|
-
for (const item of flattenOutlineItems(outline.data)) {
|
|
303
|
-
if (!matcher(item.name)) continue;
|
|
304
|
-
matches.push({ file: relFile, name: item.name, kind: item.kind, line: item.startLine });
|
|
305
|
-
}
|
|
306
|
-
return;
|
|
307
|
-
}
|
|
308
|
-
|
|
309
|
-
if (kind === "export") {
|
|
310
|
-
const exportsResult = await structural.exports(relFile);
|
|
311
|
-
if (!handleStructuralResult(exportsResult, recordFailure)) return;
|
|
312
|
-
for (const item of exportsResult.data) {
|
|
313
|
-
if (!matcher(item.name)) continue;
|
|
314
|
-
matches.push({ file: relFile, name: item.name, kind: item.kind, line: item.startLine });
|
|
315
|
-
}
|
|
316
|
-
return;
|
|
317
|
-
}
|
|
318
|
-
|
|
319
|
-
if (kind === "import") {
|
|
320
|
-
const importsResult = await structural.imports(relFile);
|
|
321
|
-
if (!handleStructuralResult(importsResult, recordFailure)) return;
|
|
322
|
-
for (const item of importsResult.data) {
|
|
323
|
-
if (!matcher(item.moduleSpecifier)) continue;
|
|
324
|
-
matches.push({
|
|
325
|
-
file: relFile,
|
|
326
|
-
name: item.moduleSpecifier,
|
|
327
|
-
kind: "import",
|
|
328
|
-
line: item.startLine,
|
|
329
|
-
});
|
|
330
|
-
}
|
|
331
|
-
return;
|
|
332
|
-
}
|
|
333
|
-
|
|
334
|
-
if (kind === "call") {
|
|
335
|
-
const callResult = await structural.callSites(relFile);
|
|
336
|
-
if (!handleStructuralResult(callResult, recordFailure)) return;
|
|
337
|
-
for (const call of callResult.data) {
|
|
338
|
-
if (!matcher(callableExpressionForMatching(call.name))) continue;
|
|
339
|
-
matches.push({ file: relFile, name: call.name, kind: "call", line: call.startLine });
|
|
340
|
-
}
|
|
341
|
-
return;
|
|
342
|
-
}
|
|
343
|
-
|
|
344
|
-
const outline = await structural.outline(relFile);
|
|
345
|
-
if (!handleStructuralResult(outline, recordFailure)) return;
|
|
346
|
-
for (const item of flattenOutlineItems(outline.data)) {
|
|
347
|
-
if (kind === "type" && !TYPE_KIND.test(item.kind.toLowerCase())) continue;
|
|
348
|
-
if (kind === "interface" && item.kind.toLowerCase() !== "interface") continue;
|
|
349
|
-
if (kind === "class" && item.kind.toLowerCase() !== "class") continue;
|
|
350
|
-
if (kind === "method" && item.kind.toLowerCase() !== "method") continue;
|
|
351
|
-
if (kind === "enum" && item.kind.toLowerCase() !== "enum") continue;
|
|
352
|
-
if (!matcher(item.name)) continue;
|
|
353
|
-
matches.push({ file: relFile, name: item.name, kind: item.kind, line: item.startLine });
|
|
354
|
-
}
|
|
355
|
-
}
|
|
356
|
-
|
|
357
|
-
/** Flatten provider outlines so nested class/interface/enum declarations remain searchable. */
|
|
358
|
-
function flattenOutlineItems(items: readonly OutlineData[]): OutlineData[] {
|
|
359
|
-
return items.flatMap((item) => [item, ...flattenOutlineItems(item.children ?? [])]);
|
|
360
|
-
}
|
|
361
|
-
|
|
362
|
-
function handleStructuralResult<T>(
|
|
363
|
-
result: CodeResult<T>,
|
|
364
|
-
recordFailure: (kind: StructuredFailureKind, reason: string) => void,
|
|
365
|
-
): result is { kind: "success"; data: T } {
|
|
366
|
-
if (result.kind === "success") return true;
|
|
367
|
-
recordFailure(result.kind, result.message);
|
|
368
|
-
return false;
|
|
369
|
-
}
|
|
370
|
-
|
|
371
|
-
const TYPE_KIND = /^(?:class|interface|type|enum|struct|union|record|object|concept)$/;
|
|
372
|
-
|
|
373
184
|
const AST_KIND_OPERATIONS = {
|
|
374
185
|
definition: "outline",
|
|
375
186
|
import: "imports",
|
|
@@ -385,16 +196,3 @@ const AST_KIND_OPERATIONS = {
|
|
|
385
196
|
function structuralOperationForKind(kind: CodeFindAstKind): StructuralSearchOperation {
|
|
386
197
|
return AST_KIND_OPERATIONS[kind];
|
|
387
198
|
}
|
|
388
|
-
|
|
389
|
-
function createStructuredMatcher(pattern: string): (value: string) => boolean {
|
|
390
|
-
const ignoreCase = !/[A-Z]/.test(pattern);
|
|
391
|
-
const needle = ignoreCase ? pattern.toLowerCase() : pattern;
|
|
392
|
-
return (value: string) => {
|
|
393
|
-
const haystack = ignoreCase ? value.toLowerCase() : value;
|
|
394
|
-
return haystack.includes(needle);
|
|
395
|
-
};
|
|
396
|
-
}
|
|
397
|
-
|
|
398
|
-
function errorMessage(error: unknown): string {
|
|
399
|
-
return error instanceof Error ? error.message : "Structural provider failed.";
|
|
400
|
-
}
|
package/src/config.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
|
|
4
4
|
import { loadSupiConfig } from "@mrclrchtr/supi-core/config";
|
|
5
|
-
import {
|
|
5
|
+
import { defineConfigSettings, registerSettings } from "@mrclrchtr/supi-core/settings";
|
|
6
6
|
|
|
7
7
|
const CODE_INTELLIGENCE_SECTION = "code-intelligence";
|
|
8
8
|
|
|
@@ -24,19 +24,22 @@ export function loadCodeIntelligenceConfig(cwd: string, homeDir?: string): CodeI
|
|
|
24
24
|
|
|
25
25
|
/** Register code-intelligence settings with the shared SuPi settings registry. */
|
|
26
26
|
export function registerCodeIntelligenceSettings(pi: ExtensionAPI, homeDir?: string): void {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
27
|
+
registerSettings(
|
|
28
|
+
pi,
|
|
29
|
+
defineConfigSettings({
|
|
30
|
+
id: CODE_INTELLIGENCE_SECTION,
|
|
31
|
+
label: "Code Intelligence",
|
|
32
|
+
section: CODE_INTELLIGENCE_SECTION,
|
|
33
|
+
defaults: CODE_INTELLIGENCE_DEFAULTS,
|
|
34
|
+
fields: [
|
|
35
|
+
{
|
|
36
|
+
kind: "stringList" as const,
|
|
37
|
+
key: "instructionFileNames",
|
|
38
|
+
label: "Instruction File Names",
|
|
39
|
+
description: "Directory-local instruction file names shown by directory orientation",
|
|
40
|
+
},
|
|
41
|
+
],
|
|
42
|
+
...(homeDir ? { homeDir } : {}),
|
|
43
|
+
}),
|
|
44
|
+
);
|
|
42
45
|
}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
//
|
|
7
7
|
// Registered fields:
|
|
8
8
|
// - exclude: stringList
|
|
9
|
-
// - disabled_servers: custom submenu
|
|
9
|
+
// - disabled_servers: custom submenu whose module action writes per-language disable config
|
|
10
10
|
|
|
11
11
|
import { type ExtensionAPI, getSettingsListTheme } from "@earendil-works/pi-coding-agent";
|
|
12
12
|
import type { Component, SettingItem } from "@earendil-works/pi-tui";
|
|
@@ -14,7 +14,8 @@ import { Container, Key, matchesKey, SettingsList, Text } from "@earendil-works/
|
|
|
14
14
|
|
|
15
15
|
import { loadSupiConfigSectionForScope, writeSupiConfig } from "@mrclrchtr/supi-core/config";
|
|
16
16
|
import {
|
|
17
|
-
|
|
17
|
+
defineConfigSettings,
|
|
18
|
+
registerSettings,
|
|
18
19
|
type SettingsScope,
|
|
19
20
|
type ValueSource,
|
|
20
21
|
} from "@mrclrchtr/supi-core/settings";
|
|
@@ -94,34 +95,16 @@ function createDisabledServersSubmenu(
|
|
|
94
95
|
return {
|
|
95
96
|
render: (width: number) => container.render(width),
|
|
96
97
|
invalidate: () => container.invalidate(),
|
|
97
|
-
// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: single event handler for the submenu
|
|
98
98
|
handleInput: (data: string) => {
|
|
99
99
|
if (matchesKey(data, Key.escape)) {
|
|
100
100
|
if (!dirty) {
|
|
101
101
|
done();
|
|
102
102
|
return;
|
|
103
103
|
}
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
for (const item of items) {
|
|
110
|
-
if (item.currentValue === "disabled") {
|
|
111
|
-
servers[item.id] = { ...(servers[item.id] ?? {}), enabled: false };
|
|
112
|
-
} else {
|
|
113
|
-
const srv = servers[item.id];
|
|
114
|
-
if (srv) {
|
|
115
|
-
delete srv.enabled;
|
|
116
|
-
if (Object.keys(srv).length === 0) {
|
|
117
|
-
delete servers[item.id];
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
writeSupiConfig({ section: "lsp", scope, cwd }, { servers });
|
|
124
|
-
done("saved");
|
|
104
|
+
const disabled = items
|
|
105
|
+
.filter((item) => item.currentValue === "disabled")
|
|
106
|
+
.map((item) => item.id);
|
|
107
|
+
done(JSON.stringify(disabled));
|
|
125
108
|
return;
|
|
126
109
|
}
|
|
127
110
|
settingsList.handleInput?.(data);
|
|
@@ -129,75 +112,91 @@ function createDisabledServersSubmenu(
|
|
|
129
112
|
};
|
|
130
113
|
}
|
|
131
114
|
|
|
115
|
+
/** Persist the complete disabled-server choice through the settings module action path. */
|
|
116
|
+
function persistDisabledServers(
|
|
117
|
+
scope: SettingsScope,
|
|
118
|
+
cwd: string,
|
|
119
|
+
value: string | undefined,
|
|
120
|
+
): void {
|
|
121
|
+
const selected = value ? JSON.parse(value) : [];
|
|
122
|
+
if (!Array.isArray(selected) || !selected.every((item) => typeof item === "string")) {
|
|
123
|
+
throw new Error("Invalid disabled-server selection");
|
|
124
|
+
}
|
|
125
|
+
const disabled = new Set<string>(selected);
|
|
126
|
+
const currentSection = loadSupiConfigSectionForScope("lsp", cwd, { scope });
|
|
127
|
+
const servers =
|
|
128
|
+
(currentSection?.servers as Record<string, Record<string, unknown>> | undefined) ?? {};
|
|
129
|
+
const names = new Set([...Object.keys(servers), ...getConfiguredServers(cwd)]);
|
|
130
|
+
for (const name of names) {
|
|
131
|
+
if (disabled.has(name)) {
|
|
132
|
+
servers[name] = { ...(servers[name] ?? {}), enabled: false };
|
|
133
|
+
continue;
|
|
134
|
+
}
|
|
135
|
+
const server = servers[name];
|
|
136
|
+
if (!server) continue;
|
|
137
|
+
delete server.enabled;
|
|
138
|
+
if (Object.keys(server).length === 0) delete servers[name];
|
|
139
|
+
}
|
|
140
|
+
writeSupiConfig({ section: "lsp", scope, cwd }, { servers });
|
|
141
|
+
}
|
|
142
|
+
|
|
132
143
|
export function registerLspSettings(pi: ExtensionAPI): void {
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
kind: "custom" as const,
|
|
147
|
-
key: "disabled_servers",
|
|
148
|
-
label: "Disabled Servers",
|
|
149
|
-
description: "Press Enter to choose which language servers to disable",
|
|
150
|
-
resolve: (scope, cwd) => {
|
|
151
|
-
const scopedDisabled = getDisabledServersFromConfig(scope, cwd);
|
|
152
|
-
const otherScope = scope === "project" ? "global" : "project";
|
|
153
|
-
const otherDisabled =
|
|
154
|
-
scope === "project" ? getDisabledServersFromConfig("global", cwd) : new Set<string>();
|
|
155
|
-
|
|
156
|
-
// Effective disabled servers = union of both scopes (since either disables)
|
|
157
|
-
const effectiveDisabled = new Set([...scopedDisabled, ...otherDisabled]);
|
|
158
|
-
const label =
|
|
159
|
-
effectiveDisabled.size > 0 ? [...effectiveDisabled].sort().join(", ") : "none disabled";
|
|
160
|
-
|
|
161
|
-
// Source: where the override comes from
|
|
162
|
-
let source: ValueSource;
|
|
163
|
-
if (scopedDisabled.size > 0) {
|
|
164
|
-
source = scope;
|
|
165
|
-
} else if (otherDisabled.size > 0) {
|
|
166
|
-
source = otherScope as ValueSource;
|
|
167
|
-
} else {
|
|
168
|
-
source = "default";
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
let inheritanceSource: "global" | "default" | undefined;
|
|
172
|
-
if (scope === "project" && source === "project") {
|
|
173
|
-
inheritanceSource =
|
|
174
|
-
getDisabledServersFromConfig("global", cwd).size > 0 ? "global" : "default";
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
return { displayValue: label, source, inheritanceSource };
|
|
144
|
+
registerSettings(
|
|
145
|
+
pi,
|
|
146
|
+
defineConfigSettings({
|
|
147
|
+
id: "lsp",
|
|
148
|
+
label: "LSP",
|
|
149
|
+
section: "lsp",
|
|
150
|
+
defaults: LSP_DEFAULTS,
|
|
151
|
+
fields: [
|
|
152
|
+
{
|
|
153
|
+
kind: "stringList" as const,
|
|
154
|
+
key: "exclude",
|
|
155
|
+
label: "Exclude Patterns",
|
|
156
|
+
description: "Gitignore patterns to suppress LSP diagnostics (comma-separated)",
|
|
178
157
|
},
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
const
|
|
186
|
-
const
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
158
|
+
{
|
|
159
|
+
kind: "custom" as const,
|
|
160
|
+
key: "disabled_servers",
|
|
161
|
+
label: "Disabled Servers",
|
|
162
|
+
description: "Press Enter to choose which language servers to disable",
|
|
163
|
+
resolve: (scope, cwd) => {
|
|
164
|
+
const scopedDisabled = getDisabledServersFromConfig(scope, cwd);
|
|
165
|
+
const otherScope = scope === "project" ? "global" : "project";
|
|
166
|
+
const otherDisabled =
|
|
167
|
+
scope === "project" ? getDisabledServersFromConfig("global", cwd) : new Set<string>();
|
|
168
|
+
|
|
169
|
+
// Effective disabled servers = union of both scopes (since either disables)
|
|
170
|
+
const effectiveDisabled = new Set([...scopedDisabled, ...otherDisabled]);
|
|
171
|
+
const label =
|
|
172
|
+
effectiveDisabled.size > 0
|
|
173
|
+
? [...effectiveDisabled].sort().join(", ")
|
|
174
|
+
: "none disabled";
|
|
175
|
+
|
|
176
|
+
// Source: where the override comes from
|
|
177
|
+
let source: ValueSource;
|
|
178
|
+
if (scopedDisabled.size > 0) {
|
|
179
|
+
source = scope;
|
|
180
|
+
} else if (otherDisabled.size > 0) {
|
|
181
|
+
source = otherScope as ValueSource;
|
|
182
|
+
} else {
|
|
183
|
+
source = "default";
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
let inheritanceSource: "global" | "default" | undefined;
|
|
187
|
+
if (scope === "project" && source === "project") {
|
|
188
|
+
inheritanceSource =
|
|
189
|
+
getDisabledServersFromConfig("global", cwd).size > 0 ? "global" : "default";
|
|
195
190
|
}
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
191
|
+
|
|
192
|
+
return { displayValue: label, source, inheritanceSource };
|
|
193
|
+
},
|
|
194
|
+
submenu: (_currentValue, done, scope, cwd) =>
|
|
195
|
+
createDisabledServersSubmenu(scope, cwd, done),
|
|
196
|
+
persist: (scope, cwd, action) =>
|
|
197
|
+
persistDisabledServers(scope, cwd, action.kind === "set" ? action.value : undefined),
|
|
199
198
|
},
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
199
|
+
],
|
|
200
|
+
}),
|
|
201
|
+
);
|
|
203
202
|
}
|
package/src/tool/find/execute.ts
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
import type { FindMode, FindWorkflowInput } from "../../session/find-types.ts";
|
|
4
4
|
import type { CodeIntelResult, CodeIntelToolExecCtx } from "../../types/index.ts";
|
|
5
|
-
import { unavailableSearchDetails } from "../infra/error-results.ts";
|
|
6
5
|
import { toWorkflowControl } from "../infra/workflow-control.ts";
|
|
6
|
+
import { searchErrorResult } from "../result/errors.ts";
|
|
7
7
|
import { assembleFindWorkflowResult } from "../result/find.ts";
|
|
8
8
|
import type { CodeFindAstKind } from "./ast-kinds.ts";
|
|
9
9
|
import { renderFindResult } from "./render.ts";
|
|
@@ -23,13 +23,10 @@ export async function executeFindTool(
|
|
|
23
23
|
const outcome = await ctx.session.find(params as FindWorkflowInput, toWorkflowControl(ctx));
|
|
24
24
|
if (outcome.kind === "unavailable") throw new Error(outcome.reason);
|
|
25
25
|
if (outcome.kind === "invalid-input") {
|
|
26
|
-
return {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
["Fix the search input and retry"],
|
|
31
|
-
),
|
|
32
|
-
};
|
|
26
|
+
return searchErrorResult(`**Error:** ${outcome.message}`, {
|
|
27
|
+
scope: Array.isArray(params?.scope) ? params.scope.join(", ") : null,
|
|
28
|
+
nextQueries: ["Fix the search input and retry"],
|
|
29
|
+
});
|
|
33
30
|
}
|
|
34
31
|
|
|
35
32
|
const assembly = assembleFindWorkflowResult(outcome);
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
import type { GraphWorkflowInput, RequestedGraphRelation } from "../../session/graph-types.ts";
|
|
4
4
|
import type { GraphTargetInput } from "../../session/target-input.ts";
|
|
5
5
|
import type { CodeIntelResult, CodeIntelToolExecCtx } from "../../types/index.ts";
|
|
6
|
-
import { searchErrorResult } from "../infra/error-results.ts";
|
|
7
6
|
import { toWorkflowControl } from "../infra/workflow-control.ts";
|
|
7
|
+
import { searchErrorResult } from "../result/errors.ts";
|
|
8
8
|
import { assembleGraphResult } from "../result/graph.ts";
|
|
9
9
|
import { renderGraphResult } from "./markdown.ts";
|
|
10
10
|
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
import type { HealthSection, HealthWorkflowInput } from "../../session/health-types.ts";
|
|
4
4
|
import type { CodeIntelResult, CodeIntelToolExecCtx } from "../../types/index.ts";
|
|
5
|
-
import { unavailableHealthDetails } from "../infra/error-results.ts";
|
|
6
5
|
import { toWorkflowControl } from "../infra/workflow-control.ts";
|
|
6
|
+
import { healthErrorResult } from "../result/errors.ts";
|
|
7
7
|
import { assembleHealthResult } from "../result/health.ts";
|
|
8
8
|
import { renderHealthResult } from "./markdown.ts";
|
|
9
9
|
|
|
@@ -21,10 +21,7 @@ export async function executeHealthTool(
|
|
|
21
21
|
const outcome = await ctx.session.health(params as HealthWorkflowInput, toWorkflowControl(ctx));
|
|
22
22
|
if (outcome.kind === "unavailable") throw new Error(outcome.reason);
|
|
23
23
|
if (outcome.kind === "invalid-input") {
|
|
24
|
-
return {
|
|
25
|
-
content: `**Error:** ${outcome.message}`,
|
|
26
|
-
details: unavailableHealthDetails("invalid input"),
|
|
27
|
-
};
|
|
24
|
+
return healthErrorResult(`**Error:** ${outcome.message}`, "invalid input");
|
|
28
25
|
}
|
|
29
26
|
|
|
30
27
|
const assembly = assembleHealthResult(outcome.data);
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
import type { InspectWorkflowInput } from "../../session/inspect-types.ts";
|
|
4
4
|
import type { SourcePointInput } from "../../session/target-input.ts";
|
|
5
5
|
import type { CodeIntelResult, CodeIntelToolExecCtx } from "../../types/index.ts";
|
|
6
|
-
import { unavailableInspectDetails } from "../infra/error-results.ts";
|
|
7
6
|
import { toWorkflowControl } from "../infra/workflow-control.ts";
|
|
7
|
+
import { inspectErrorResult } from "../result/errors.ts";
|
|
8
8
|
import { assembleInspectResult } from "../result/inspect.ts";
|
|
9
9
|
import { renderInspectResult } from "./markdown.ts";
|
|
10
10
|
|
|
@@ -20,12 +20,10 @@ export async function executeInspectTool(
|
|
|
20
20
|
const outcome = await ctx.session.inspect(params as InspectWorkflowInput, toWorkflowControl(ctx));
|
|
21
21
|
if (outcome.kind === "unavailable") throw new Error(outcome.reason);
|
|
22
22
|
if (outcome.kind === "invalid-input") {
|
|
23
|
-
return {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
]),
|
|
28
|
-
};
|
|
23
|
+
return inspectErrorResult(`**Error:** ${outcome.message}`, {
|
|
24
|
+
focusTarget: "invalid input",
|
|
25
|
+
nextQueries: ["Provide an existing file and exact 1-based point"],
|
|
26
|
+
});
|
|
29
27
|
}
|
|
30
28
|
|
|
31
29
|
const assembly = assembleInspectResult(outcome.data, outcome.nextQueries);
|