kemdicode-mcp 1.15.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/LICENSE +674 -0
- package/README.md +486 -0
- package/dist/ai/agents.d.ts +40 -0
- package/dist/ai/agents.d.ts.map +1 -0
- package/dist/ai/agents.js +164 -0
- package/dist/ai/agents.js.map +1 -0
- package/dist/ai/client.d.ts +73 -0
- package/dist/ai/client.d.ts.map +1 -0
- package/dist/ai/client.js +235 -0
- package/dist/ai/client.js.map +1 -0
- package/dist/ai/execute.d.ts +61 -0
- package/dist/ai/execute.d.ts.map +1 -0
- package/dist/ai/execute.js +98 -0
- package/dist/ai/execute.js.map +1 -0
- package/dist/ai/file-context.d.ts +44 -0
- package/dist/ai/file-context.d.ts.map +1 -0
- package/dist/ai/file-context.js +220 -0
- package/dist/ai/file-context.js.map +1 -0
- package/dist/ai/index.d.ts +14 -0
- package/dist/ai/index.d.ts.map +1 -0
- package/dist/ai/index.js +21 -0
- package/dist/ai/index.js.map +1 -0
- package/dist/ai/model-spec.d.ts +33 -0
- package/dist/ai/model-spec.d.ts.map +1 -0
- package/dist/ai/model-spec.js +106 -0
- package/dist/ai/model-spec.js.map +1 -0
- package/dist/ai/providers/anthropic.provider.d.ts +23 -0
- package/dist/ai/providers/anthropic.provider.d.ts.map +1 -0
- package/dist/ai/providers/anthropic.provider.js +135 -0
- package/dist/ai/providers/anthropic.provider.js.map +1 -0
- package/dist/ai/providers/gemini.provider.d.ts +20 -0
- package/dist/ai/providers/gemini.provider.d.ts.map +1 -0
- package/dist/ai/providers/gemini.provider.js +113 -0
- package/dist/ai/providers/gemini.provider.js.map +1 -0
- package/dist/ai/providers/index.d.ts +13 -0
- package/dist/ai/providers/index.d.ts.map +1 -0
- package/dist/ai/providers/index.js +12 -0
- package/dist/ai/providers/index.js.map +1 -0
- package/dist/ai/providers/openai-compat.provider.d.ts +13 -0
- package/dist/ai/providers/openai-compat.provider.d.ts.map +1 -0
- package/dist/ai/providers/openai-compat.provider.js +68 -0
- package/dist/ai/providers/openai-compat.provider.js.map +1 -0
- package/dist/ai/providers/openai-shared.d.ts +41 -0
- package/dist/ai/providers/openai-shared.d.ts.map +1 -0
- package/dist/ai/providers/openai-shared.js +67 -0
- package/dist/ai/providers/openai-shared.js.map +1 -0
- package/dist/ai/providers/openai.provider.d.ts +22 -0
- package/dist/ai/providers/openai.provider.d.ts.map +1 -0
- package/dist/ai/providers/openai.provider.js +74 -0
- package/dist/ai/providers/openai.provider.js.map +1 -0
- package/dist/ai/providers/registry.d.ts +33 -0
- package/dist/ai/providers/registry.d.ts.map +1 -0
- package/dist/ai/providers/registry.js +137 -0
- package/dist/ai/providers/registry.js.map +1 -0
- package/dist/ai/providers/types.d.ts +59 -0
- package/dist/ai/providers/types.d.ts.map +1 -0
- package/dist/ai/providers/types.js +58 -0
- package/dist/ai/providers/types.js.map +1 -0
- package/dist/ai/workspace-editor.d.ts +59 -0
- package/dist/ai/workspace-editor.d.ts.map +1 -0
- package/dist/ai/workspace-editor.js +155 -0
- package/dist/ai/workspace-editor.js.map +1 -0
- package/dist/config/defaults.d.ts +31 -0
- package/dist/config/defaults.d.ts.map +1 -0
- package/dist/config/defaults.js +100 -0
- package/dist/config/defaults.js.map +1 -0
- package/dist/config/index.d.ts +45 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +44 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/manager.d.ts +101 -0
- package/dist/config/manager.d.ts.map +1 -0
- package/dist/config/manager.js +338 -0
- package/dist/config/manager.js.map +1 -0
- package/dist/config/schema.d.ts +382 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/config/schema.js +150 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/config/types.d.ts +189 -0
- package/dist/config/types.d.ts.map +1 -0
- package/dist/config/types.js +32 -0
- package/dist/config/types.js.map +1 -0
- package/dist/constants.d.ts +92 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +100 -0
- package/dist/constants.js.map +1 -0
- package/dist/context/agent-monitor.d.ts +173 -0
- package/dist/context/agent-monitor.d.ts.map +1 -0
- package/dist/context/agent-monitor.js +958 -0
- package/dist/context/agent-monitor.js.map +1 -0
- package/dist/context/feedback-loop.d.ts +73 -0
- package/dist/context/feedback-loop.d.ts.map +1 -0
- package/dist/context/feedback-loop.js +303 -0
- package/dist/context/feedback-loop.js.map +1 -0
- package/dist/context/index.d.ts +29 -0
- package/dist/context/index.d.ts.map +1 -0
- package/dist/context/index.js +29 -0
- package/dist/context/index.js.map +1 -0
- package/dist/context/integration.d.ts +83 -0
- package/dist/context/integration.d.ts.map +1 -0
- package/dist/context/integration.js +276 -0
- package/dist/context/integration.js.map +1 -0
- package/dist/context/iteration-tracker.d.ts +87 -0
- package/dist/context/iteration-tracker.d.ts.map +1 -0
- package/dist/context/iteration-tracker.js +333 -0
- package/dist/context/iteration-tracker.js.map +1 -0
- package/dist/context/storage.d.ts +234 -0
- package/dist/context/storage.d.ts.map +1 -0
- package/dist/context/storage.js +513 -0
- package/dist/context/storage.js.map +1 -0
- package/dist/context/types.d.ts +396 -0
- package/dist/context/types.d.ts.map +1 -0
- package/dist/context/types.js +125 -0
- package/dist/context/types.js.map +1 -0
- package/dist/index.d.ts +70 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +207 -0
- package/dist/index.js.map +1 -0
- package/dist/infrastructure/redis/connection.d.ts +111 -0
- package/dist/infrastructure/redis/connection.d.ts.map +1 -0
- package/dist/infrastructure/redis/connection.js +242 -0
- package/dist/infrastructure/redis/connection.js.map +1 -0
- package/dist/infrastructure/redis/index.d.ts +2 -0
- package/dist/infrastructure/redis/index.d.ts.map +1 -0
- package/dist/infrastructure/redis/index.js +2 -0
- package/dist/infrastructure/redis/index.js.map +1 -0
- package/dist/infrastructure/redis/redis-backed-service.d.ts +35 -0
- package/dist/infrastructure/redis/redis-backed-service.d.ts.map +1 -0
- package/dist/infrastructure/redis/redis-backed-service.js +55 -0
- package/dist/infrastructure/redis/redis-backed-service.js.map +1 -0
- package/dist/kanban/board-store.d.ts +222 -0
- package/dist/kanban/board-store.d.ts.map +1 -0
- package/dist/kanban/board-store.js +486 -0
- package/dist/kanban/board-store.js.map +1 -0
- package/dist/kanban/index.d.ts +33 -0
- package/dist/kanban/index.d.ts.map +1 -0
- package/dist/kanban/index.js +37 -0
- package/dist/kanban/index.js.map +1 -0
- package/dist/kanban/kanban-store.d.ts +236 -0
- package/dist/kanban/kanban-store.d.ts.map +1 -0
- package/dist/kanban/kanban-store.js +854 -0
- package/dist/kanban/kanban-store.js.map +1 -0
- package/dist/kanban/membership-store.d.ts +230 -0
- package/dist/kanban/membership-store.d.ts.map +1 -0
- package/dist/kanban/membership-store.js +384 -0
- package/dist/kanban/membership-store.js.map +1 -0
- package/dist/kanban/migration.d.ts +131 -0
- package/dist/kanban/migration.d.ts.map +1 -0
- package/dist/kanban/migration.js +275 -0
- package/dist/kanban/migration.js.map +1 -0
- package/dist/kanban/types.d.ts +314 -0
- package/dist/kanban/types.d.ts.map +1 -0
- package/dist/kanban/types.js +126 -0
- package/dist/kanban/types.js.map +1 -0
- package/dist/kanban/workspace-store.d.ts +193 -0
- package/dist/kanban/workspace-store.d.ts.map +1 -0
- package/dist/kanban/workspace-store.js +386 -0
- package/dist/kanban/workspace-store.js.map +1 -0
- package/dist/loci/graph-storage.d.ts +120 -0
- package/dist/loci/graph-storage.d.ts.map +1 -0
- package/dist/loci/graph-storage.js +489 -0
- package/dist/loci/graph-storage.js.map +1 -0
- package/dist/loci/graph-traversal.d.ts +56 -0
- package/dist/loci/graph-traversal.d.ts.map +1 -0
- package/dist/loci/graph-traversal.js +291 -0
- package/dist/loci/graph-traversal.js.map +1 -0
- package/dist/loci/index.d.ts +30 -0
- package/dist/loci/index.d.ts.map +1 -0
- package/dist/loci/index.js +27 -0
- package/dist/loci/index.js.map +1 -0
- package/dist/loci/loci-manager.d.ts +119 -0
- package/dist/loci/loci-manager.d.ts.map +1 -0
- package/dist/loci/loci-manager.js +435 -0
- package/dist/loci/loci-manager.js.map +1 -0
- package/dist/loci/sequence-tracker.d.ts +89 -0
- package/dist/loci/sequence-tracker.d.ts.map +1 -0
- package/dist/loci/sequence-tracker.js +311 -0
- package/dist/loci/sequence-tracker.js.map +1 -0
- package/dist/loci/types.d.ts +306 -0
- package/dist/loci/types.d.ts.map +1 -0
- package/dist/loci/types.js +143 -0
- package/dist/loci/types.js.map +1 -0
- package/dist/mpc/auth.d.ts +67 -0
- package/dist/mpc/auth.d.ts.map +1 -0
- package/dist/mpc/auth.js +173 -0
- package/dist/mpc/auth.js.map +1 -0
- package/dist/mpc/crypto.d.ts +139 -0
- package/dist/mpc/crypto.d.ts.map +1 -0
- package/dist/mpc/crypto.js +287 -0
- package/dist/mpc/crypto.js.map +1 -0
- package/dist/mpc/index.d.ts +30 -0
- package/dist/mpc/index.d.ts.map +1 -0
- package/dist/mpc/index.js +27 -0
- package/dist/mpc/index.js.map +1 -0
- package/dist/mpc/redis-store.d.ts +88 -0
- package/dist/mpc/redis-store.d.ts.map +1 -0
- package/dist/mpc/redis-store.js +337 -0
- package/dist/mpc/redis-store.js.map +1 -0
- package/dist/mpc/share-manager.d.ts +59 -0
- package/dist/mpc/share-manager.d.ts.map +1 -0
- package/dist/mpc/share-manager.js +254 -0
- package/dist/mpc/share-manager.js.map +1 -0
- package/dist/mpc/types.d.ts +213 -0
- package/dist/mpc/types.d.ts.map +1 -0
- package/dist/mpc/types.js +42 -0
- package/dist/mpc/types.js.map +1 -0
- package/dist/recursive/index.d.ts +27 -0
- package/dist/recursive/index.d.ts.map +1 -0
- package/dist/recursive/index.js +27 -0
- package/dist/recursive/index.js.map +1 -0
- package/dist/recursive/tool-invoker.d.ts +51 -0
- package/dist/recursive/tool-invoker.d.ts.map +1 -0
- package/dist/recursive/tool-invoker.js +293 -0
- package/dist/recursive/tool-invoker.js.map +1 -0
- package/dist/recursive/types.d.ts +110 -0
- package/dist/recursive/types.d.ts.map +1 -0
- package/dist/recursive/types.js +52 -0
- package/dist/recursive/types.js.map +1 -0
- package/dist/rl/dopamine.d.ts +96 -0
- package/dist/rl/dopamine.d.ts.map +1 -0
- package/dist/rl/dopamine.js +242 -0
- package/dist/rl/dopamine.js.map +1 -0
- package/dist/rl/index.d.ts +30 -0
- package/dist/rl/index.d.ts.map +1 -0
- package/dist/rl/index.js +27 -0
- package/dist/rl/index.js.map +1 -0
- package/dist/rl/potential.d.ts +78 -0
- package/dist/rl/potential.d.ts.map +1 -0
- package/dist/rl/potential.js +152 -0
- package/dist/rl/potential.js.map +1 -0
- package/dist/rl/rewards.d.ts +92 -0
- package/dist/rl/rewards.d.ts.map +1 -0
- package/dist/rl/rewards.js +278 -0
- package/dist/rl/rewards.js.map +1 -0
- package/dist/rl/state-tracker.d.ts +107 -0
- package/dist/rl/state-tracker.d.ts.map +1 -0
- package/dist/rl/state-tracker.js +285 -0
- package/dist/rl/state-tracker.js.map +1 -0
- package/dist/rl/types.d.ts +274 -0
- package/dist/rl/types.d.ts.map +1 -0
- package/dist/rl/types.js +145 -0
- package/dist/rl/types.js.map +1 -0
- package/dist/runtime/crypto.d.ts +87 -0
- package/dist/runtime/crypto.d.ts.map +1 -0
- package/dist/runtime/crypto.js +226 -0
- package/dist/runtime/crypto.js.map +1 -0
- package/dist/runtime/http.d.ts +111 -0
- package/dist/runtime/http.d.ts.map +1 -0
- package/dist/runtime/http.js +350 -0
- package/dist/runtime/http.js.map +1 -0
- package/dist/runtime/index.d.ts +48 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +43 -0
- package/dist/runtime/index.js.map +1 -0
- package/dist/runtime/net.d.ts +42 -0
- package/dist/runtime/net.d.ts.map +1 -0
- package/dist/runtime/net.js +108 -0
- package/dist/runtime/net.js.map +1 -0
- package/dist/runtime/process.d.ts +54 -0
- package/dist/runtime/process.d.ts.map +1 -0
- package/dist/runtime/process.js +247 -0
- package/dist/runtime/process.js.map +1 -0
- package/dist/runtime/types.d.ts +143 -0
- package/dist/runtime/types.d.ts.map +1 -0
- package/dist/runtime/types.js +19 -0
- package/dist/runtime/types.js.map +1 -0
- package/dist/server/http-server.d.ts +26 -0
- package/dist/server/http-server.d.ts.map +1 -0
- package/dist/server/http-server.js +290 -0
- package/dist/server/http-server.js.map +1 -0
- package/dist/server/index.d.ts +22 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +25 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/progress.d.ts +74 -0
- package/dist/server/progress.d.ts.map +1 -0
- package/dist/server/progress.js +174 -0
- package/dist/server/progress.js.map +1 -0
- package/dist/server/session-server.d.ts +76 -0
- package/dist/server/session-server.d.ts.map +1 -0
- package/dist/server/session-server.js +186 -0
- package/dist/server/session-server.js.map +1 -0
- package/dist/server/types.d.ts +82 -0
- package/dist/server/types.d.ts.map +1 -0
- package/dist/server/types.js +25 -0
- package/dist/server/types.js.map +1 -0
- package/dist/session/cwd-resolver.d.ts +136 -0
- package/dist/session/cwd-resolver.d.ts.map +1 -0
- package/dist/session/cwd-resolver.js +715 -0
- package/dist/session/cwd-resolver.js.map +1 -0
- package/dist/session/index.d.ts +27 -0
- package/dist/session/index.d.ts.map +1 -0
- package/dist/session/index.js +27 -0
- package/dist/session/index.js.map +1 -0
- package/dist/session/manager.d.ts +296 -0
- package/dist/session/manager.d.ts.map +1 -0
- package/dist/session/manager.js +605 -0
- package/dist/session/manager.js.map +1 -0
- package/dist/session/types.d.ts +152 -0
- package/dist/session/types.d.ts.map +1 -0
- package/dist/session/types.js +60 -0
- package/dist/session/types.js.map +1 -0
- package/dist/tools/agents/agent-alert.tool.d.ts +20 -0
- package/dist/tools/agents/agent-alert.tool.d.ts.map +1 -0
- package/dist/tools/agents/agent-alert.tool.js +103 -0
- package/dist/tools/agents/agent-alert.tool.js.map +1 -0
- package/dist/tools/agents/agent-history.tool.d.ts +20 -0
- package/dist/tools/agents/agent-history.tool.d.ts.map +1 -0
- package/dist/tools/agents/agent-history.tool.js +133 -0
- package/dist/tools/agents/agent-history.tool.js.map +1 -0
- package/dist/tools/agents/agent-inject.tool.d.ts +39 -0
- package/dist/tools/agents/agent-inject.tool.d.ts.map +1 -0
- package/dist/tools/agents/agent-inject.tool.js +121 -0
- package/dist/tools/agents/agent-inject.tool.js.map +1 -0
- package/dist/tools/agents/agent-list.tool.d.ts +20 -0
- package/dist/tools/agents/agent-list.tool.d.ts.map +1 -0
- package/dist/tools/agents/agent-list.tool.js +86 -0
- package/dist/tools/agents/agent-list.tool.js.map +1 -0
- package/dist/tools/agents/agent-register.tool.d.ts +20 -0
- package/dist/tools/agents/agent-register.tool.d.ts.map +1 -0
- package/dist/tools/agents/agent-register.tool.js +114 -0
- package/dist/tools/agents/agent-register.tool.js.map +1 -0
- package/dist/tools/agents/agent-summary.tool.d.ts +20 -0
- package/dist/tools/agents/agent-summary.tool.d.ts.map +1 -0
- package/dist/tools/agents/agent-summary.tool.js +99 -0
- package/dist/tools/agents/agent-summary.tool.js.map +1 -0
- package/dist/tools/agents/agent-watch.tool.d.ts +20 -0
- package/dist/tools/agents/agent-watch.tool.d.ts.map +1 -0
- package/dist/tools/agents/agent-watch.tool.js +56 -0
- package/dist/tools/agents/agent-watch.tool.js.map +1 -0
- package/dist/tools/agents/index.d.ts +41 -0
- package/dist/tools/agents/index.d.ts.map +1 -0
- package/dist/tools/agents/index.js +41 -0
- package/dist/tools/agents/index.js.map +1 -0
- package/dist/tools/agents/monitor.tool.d.ts +20 -0
- package/dist/tools/agents/monitor.tool.d.ts.map +1 -0
- package/dist/tools/agents/monitor.tool.js +314 -0
- package/dist/tools/agents/monitor.tool.js.map +1 -0
- package/dist/tools/agents/queue-message.tool.d.ts +20 -0
- package/dist/tools/agents/queue-message.tool.d.ts.map +1 -0
- package/dist/tools/agents/queue-message.tool.js +176 -0
- package/dist/tools/agents/queue-message.tool.js.map +1 -0
- package/dist/tools/ask-ai.tool.d.ts +20 -0
- package/dist/tools/ask-ai.tool.d.ts.map +1 -0
- package/dist/tools/ask-ai.tool.js +49 -0
- package/dist/tools/ask-ai.tool.js.map +1 -0
- package/dist/tools/batch.tool.d.ts +42 -0
- package/dist/tools/batch.tool.d.ts.map +1 -0
- package/dist/tools/batch.tool.js +146 -0
- package/dist/tools/batch.tool.js.map +1 -0
- package/dist/tools/brainstorm.tool.d.ts +20 -0
- package/dist/tools/brainstorm.tool.d.ts.map +1 -0
- package/dist/tools/brainstorm.tool.js +86 -0
- package/dist/tools/brainstorm.tool.js.map +1 -0
- package/dist/tools/code/code-outline.tool.d.ts +20 -0
- package/dist/tools/code/code-outline.tool.d.ts.map +1 -0
- package/dist/tools/code/code-outline.tool.js +803 -0
- package/dist/tools/code/code-outline.tool.js.map +1 -0
- package/dist/tools/code/find-definition.tool.d.ts +20 -0
- package/dist/tools/code/find-definition.tool.d.ts.map +1 -0
- package/dist/tools/code/find-definition.tool.js +218 -0
- package/dist/tools/code/find-definition.tool.js.map +1 -0
- package/dist/tools/code/find-references.tool.d.ts +20 -0
- package/dist/tools/code/find-references.tool.d.ts.map +1 -0
- package/dist/tools/code/find-references.tool.js +207 -0
- package/dist/tools/code/find-references.tool.js.map +1 -0
- package/dist/tools/code/find-symbols.tool.d.ts +20 -0
- package/dist/tools/code/find-symbols.tool.d.ts.map +1 -0
- package/dist/tools/code/find-symbols.tool.js +367 -0
- package/dist/tools/code/find-symbols.tool.js.map +1 -0
- package/dist/tools/code/index.d.ts +34 -0
- package/dist/tools/code/index.d.ts.map +1 -0
- package/dist/tools/code/index.js +35 -0
- package/dist/tools/code/index.js.map +1 -0
- package/dist/tools/code/insert-after-symbol.tool.d.ts +20 -0
- package/dist/tools/code/insert-after-symbol.tool.d.ts.map +1 -0
- package/dist/tools/code/insert-after-symbol.tool.js +224 -0
- package/dist/tools/code/insert-after-symbol.tool.js.map +1 -0
- package/dist/tools/code/insert-before-symbol.tool.d.ts +20 -0
- package/dist/tools/code/insert-before-symbol.tool.d.ts.map +1 -0
- package/dist/tools/code/insert-before-symbol.tool.js +136 -0
- package/dist/tools/code/insert-before-symbol.tool.js.map +1 -0
- package/dist/tools/code/rename-symbol.tool.d.ts +20 -0
- package/dist/tools/code/rename-symbol.tool.d.ts.map +1 -0
- package/dist/tools/code/rename-symbol.tool.js +255 -0
- package/dist/tools/code/rename-symbol.tool.js.map +1 -0
- package/dist/tools/code/semantic-search.tool.d.ts +20 -0
- package/dist/tools/code/semantic-search.tool.d.ts.map +1 -0
- package/dist/tools/code/semantic-search.tool.js +172 -0
- package/dist/tools/code/semantic-search.tool.js.map +1 -0
- package/dist/tools/code/symbol-search.d.ts +39 -0
- package/dist/tools/code/symbol-search.d.ts.map +1 -0
- package/dist/tools/code/symbol-search.js +118 -0
- package/dist/tools/code/symbol-search.js.map +1 -0
- package/dist/tools/context/feedback.tool.d.ts +20 -0
- package/dist/tools/context/feedback.tool.d.ts.map +1 -0
- package/dist/tools/context/feedback.tool.js +176 -0
- package/dist/tools/context/feedback.tool.js.map +1 -0
- package/dist/tools/context/get-shared-context.tool.d.ts +20 -0
- package/dist/tools/context/get-shared-context.tool.d.ts.map +1 -0
- package/dist/tools/context/get-shared-context.tool.js +83 -0
- package/dist/tools/context/get-shared-context.tool.js.map +1 -0
- package/dist/tools/context/index.d.ts +26 -0
- package/dist/tools/context/index.d.ts.map +1 -0
- package/dist/tools/context/index.js +26 -0
- package/dist/tools/context/index.js.map +1 -0
- package/dist/tools/context/shared-thoughts.tool.d.ts +20 -0
- package/dist/tools/context/shared-thoughts.tool.d.ts.map +1 -0
- package/dist/tools/context/shared-thoughts.tool.js +199 -0
- package/dist/tools/context/shared-thoughts.tool.js.map +1 -0
- package/dist/tools/edit/delete-lines.tool.d.ts +20 -0
- package/dist/tools/edit/delete-lines.tool.d.ts.map +1 -0
- package/dist/tools/edit/delete-lines.tool.js +88 -0
- package/dist/tools/edit/delete-lines.tool.js.map +1 -0
- package/dist/tools/edit/edit-shared.d.ts +55 -0
- package/dist/tools/edit/edit-shared.d.ts.map +1 -0
- package/dist/tools/edit/edit-shared.js +122 -0
- package/dist/tools/edit/edit-shared.js.map +1 -0
- package/dist/tools/edit/index.d.ts +29 -0
- package/dist/tools/edit/index.d.ts.map +1 -0
- package/dist/tools/edit/index.js +29 -0
- package/dist/tools/edit/index.js.map +1 -0
- package/dist/tools/edit/insert-at-line.tool.d.ts +20 -0
- package/dist/tools/edit/insert-at-line.tool.d.ts.map +1 -0
- package/dist/tools/edit/insert-at-line.tool.js +92 -0
- package/dist/tools/edit/insert-at-line.tool.js.map +1 -0
- package/dist/tools/edit/replace-content.tool.d.ts +20 -0
- package/dist/tools/edit/replace-content.tool.d.ts.map +1 -0
- package/dist/tools/edit/replace-content.tool.js +214 -0
- package/dist/tools/edit/replace-content.tool.js.map +1 -0
- package/dist/tools/edit/replace-lines.tool.d.ts +20 -0
- package/dist/tools/edit/replace-lines.tool.d.ts.map +1 -0
- package/dist/tools/edit/replace-lines.tool.js +97 -0
- package/dist/tools/edit/replace-lines.tool.js.map +1 -0
- package/dist/tools/file/file-diff.tool.d.ts +20 -0
- package/dist/tools/file/file-diff.tool.d.ts.map +1 -0
- package/dist/tools/file/file-diff.tool.js +359 -0
- package/dist/tools/file/file-diff.tool.js.map +1 -0
- package/dist/tools/file/file-read.tool.d.ts +20 -0
- package/dist/tools/file/file-read.tool.d.ts.map +1 -0
- package/dist/tools/file/file-read.tool.js +270 -0
- package/dist/tools/file/file-read.tool.js.map +1 -0
- package/dist/tools/file/file-search.tool.d.ts +20 -0
- package/dist/tools/file/file-search.tool.d.ts.map +1 -0
- package/dist/tools/file/file-search.tool.js +339 -0
- package/dist/tools/file/file-search.tool.js.map +1 -0
- package/dist/tools/file/file-tree.tool.d.ts +49 -0
- package/dist/tools/file/file-tree.tool.d.ts.map +1 -0
- package/dist/tools/file/file-tree.tool.js +398 -0
- package/dist/tools/file/file-tree.tool.js.map +1 -0
- package/dist/tools/file/file-write.tool.d.ts +20 -0
- package/dist/tools/file/file-write.tool.d.ts.map +1 -0
- package/dist/tools/file/file-write.tool.js +204 -0
- package/dist/tools/file/file-write.tool.js.map +1 -0
- package/dist/tools/file/index.d.ts +31 -0
- package/dist/tools/file/index.d.ts.map +1 -0
- package/dist/tools/file/index.js +31 -0
- package/dist/tools/file/index.js.map +1 -0
- package/dist/tools/git/git-blame.tool.d.ts +20 -0
- package/dist/tools/git/git-blame.tool.d.ts.map +1 -0
- package/dist/tools/git/git-blame.tool.js +138 -0
- package/dist/tools/git/git-blame.tool.js.map +1 -0
- package/dist/tools/git/git-branch.tool.d.ts +20 -0
- package/dist/tools/git/git-branch.tool.d.ts.map +1 -0
- package/dist/tools/git/git-branch.tool.js +158 -0
- package/dist/tools/git/git-branch.tool.js.map +1 -0
- package/dist/tools/git/git-diff.tool.d.ts +20 -0
- package/dist/tools/git/git-diff.tool.d.ts.map +1 -0
- package/dist/tools/git/git-diff.tool.js +117 -0
- package/dist/tools/git/git-diff.tool.js.map +1 -0
- package/dist/tools/git/git-log.tool.d.ts +20 -0
- package/dist/tools/git/git-log.tool.d.ts.map +1 -0
- package/dist/tools/git/git-log.tool.js +150 -0
- package/dist/tools/git/git-log.tool.js.map +1 -0
- package/dist/tools/git/git-status.tool.d.ts +20 -0
- package/dist/tools/git/git-status.tool.d.ts.map +1 -0
- package/dist/tools/git/git-status.tool.js +81 -0
- package/dist/tools/git/git-status.tool.js.map +1 -0
- package/dist/tools/git/index.d.ts +31 -0
- package/dist/tools/git/index.d.ts.map +1 -0
- package/dist/tools/git/index.js +32 -0
- package/dist/tools/git/index.js.map +1 -0
- package/dist/tools/index.d.ts +19 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +170 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/kanban/board-create.tool.d.ts +20 -0
- package/dist/tools/kanban/board-create.tool.d.ts.map +1 -0
- package/dist/tools/kanban/board-create.tool.js +92 -0
- package/dist/tools/kanban/board-create.tool.js.map +1 -0
- package/dist/tools/kanban/board-invite.tool.d.ts +20 -0
- package/dist/tools/kanban/board-invite.tool.d.ts.map +1 -0
- package/dist/tools/kanban/board-invite.tool.js +96 -0
- package/dist/tools/kanban/board-invite.tool.js.map +1 -0
- package/dist/tools/kanban/board-list.tool.d.ts +20 -0
- package/dist/tools/kanban/board-list.tool.d.ts.map +1 -0
- package/dist/tools/kanban/board-list.tool.js +94 -0
- package/dist/tools/kanban/board-list.tool.js.map +1 -0
- package/dist/tools/kanban/board-members.tool.d.ts +20 -0
- package/dist/tools/kanban/board-members.tool.d.ts.map +1 -0
- package/dist/tools/kanban/board-members.tool.js +153 -0
- package/dist/tools/kanban/board-members.tool.js.map +1 -0
- package/dist/tools/kanban/board-share.tool.d.ts +20 -0
- package/dist/tools/kanban/board-share.tool.d.ts.map +1 -0
- package/dist/tools/kanban/board-share.tool.js +91 -0
- package/dist/tools/kanban/board-share.tool.js.map +1 -0
- package/dist/tools/kanban/board-status.tool.d.ts +20 -0
- package/dist/tools/kanban/board-status.tool.d.ts.map +1 -0
- package/dist/tools/kanban/board-status.tool.js +79 -0
- package/dist/tools/kanban/board-status.tool.js.map +1 -0
- package/dist/tools/kanban/index.d.ts +42 -0
- package/dist/tools/kanban/index.d.ts.map +1 -0
- package/dist/tools/kanban/index.js +46 -0
- package/dist/tools/kanban/index.js.map +1 -0
- package/dist/tools/kanban/task-assign.tool.d.ts +20 -0
- package/dist/tools/kanban/task-assign.tool.d.ts.map +1 -0
- package/dist/tools/kanban/task-assign.tool.js +103 -0
- package/dist/tools/kanban/task-assign.tool.js.map +1 -0
- package/dist/tools/kanban/task-claim.tool.d.ts +20 -0
- package/dist/tools/kanban/task-claim.tool.d.ts.map +1 -0
- package/dist/tools/kanban/task-claim.tool.js +107 -0
- package/dist/tools/kanban/task-claim.tool.js.map +1 -0
- package/dist/tools/kanban/task-create.tool.d.ts +20 -0
- package/dist/tools/kanban/task-create.tool.d.ts.map +1 -0
- package/dist/tools/kanban/task-create.tool.js +123 -0
- package/dist/tools/kanban/task-create.tool.js.map +1 -0
- package/dist/tools/kanban/task-list.tool.d.ts +20 -0
- package/dist/tools/kanban/task-list.tool.d.ts.map +1 -0
- package/dist/tools/kanban/task-list.tool.js +95 -0
- package/dist/tools/kanban/task-list.tool.js.map +1 -0
- package/dist/tools/kanban/task-push-multi.tool.d.ts +20 -0
- package/dist/tools/kanban/task-push-multi.tool.d.ts.map +1 -0
- package/dist/tools/kanban/task-push-multi.tool.js +273 -0
- package/dist/tools/kanban/task-push-multi.tool.js.map +1 -0
- package/dist/tools/kanban/task-update.tool.d.ts +20 -0
- package/dist/tools/kanban/task-update.tool.d.ts.map +1 -0
- package/dist/tools/kanban/task-update.tool.js +173 -0
- package/dist/tools/kanban/task-update.tool.js.map +1 -0
- package/dist/tools/kanban/workspace-create.tool.d.ts +20 -0
- package/dist/tools/kanban/workspace-create.tool.d.ts.map +1 -0
- package/dist/tools/kanban/workspace-create.tool.js +84 -0
- package/dist/tools/kanban/workspace-create.tool.js.map +1 -0
- package/dist/tools/kanban/workspace-join.tool.d.ts +20 -0
- package/dist/tools/kanban/workspace-join.tool.d.ts.map +1 -0
- package/dist/tools/kanban/workspace-join.tool.js +76 -0
- package/dist/tools/kanban/workspace-join.tool.js.map +1 -0
- package/dist/tools/kanban/workspace-leave.tool.d.ts +20 -0
- package/dist/tools/kanban/workspace-leave.tool.d.ts.map +1 -0
- package/dist/tools/kanban/workspace-leave.tool.js +74 -0
- package/dist/tools/kanban/workspace-leave.tool.js.map +1 -0
- package/dist/tools/kanban/workspace-list.tool.d.ts +20 -0
- package/dist/tools/kanban/workspace-list.tool.d.ts.map +1 -0
- package/dist/tools/kanban/workspace-list.tool.js +75 -0
- package/dist/tools/kanban/workspace-list.tool.js.map +1 -0
- package/dist/tools/loci/graph-find-path.tool.d.ts +38 -0
- package/dist/tools/loci/graph-find-path.tool.d.ts.map +1 -0
- package/dist/tools/loci/graph-find-path.tool.js +133 -0
- package/dist/tools/loci/graph-find-path.tool.js.map +1 -0
- package/dist/tools/loci/graph-query.tool.d.ts +55 -0
- package/dist/tools/loci/graph-query.tool.d.ts.map +1 -0
- package/dist/tools/loci/graph-query.tool.js +98 -0
- package/dist/tools/loci/graph-query.tool.js.map +1 -0
- package/dist/tools/loci/index.d.ts +27 -0
- package/dist/tools/loci/index.d.ts.map +1 -0
- package/dist/tools/loci/index.js +27 -0
- package/dist/tools/loci/index.js.map +1 -0
- package/dist/tools/loci/loci-recall.tool.d.ts +33 -0
- package/dist/tools/loci/loci-recall.tool.d.ts.map +1 -0
- package/dist/tools/loci/loci-recall.tool.js +156 -0
- package/dist/tools/loci/loci-recall.tool.js.map +1 -0
- package/dist/tools/loci/sequence-recommend.tool.d.ts +33 -0
- package/dist/tools/loci/sequence-recommend.tool.d.ts.map +1 -0
- package/dist/tools/loci/sequence-recommend.tool.js +114 -0
- package/dist/tools/loci/sequence-recommend.tool.js.map +1 -0
- package/dist/tools/memory/delete-memory.tool.d.ts +20 -0
- package/dist/tools/memory/delete-memory.tool.d.ts.map +1 -0
- package/dist/tools/memory/delete-memory.tool.js +96 -0
- package/dist/tools/memory/delete-memory.tool.js.map +1 -0
- package/dist/tools/memory/edit-memory.tool.d.ts +20 -0
- package/dist/tools/memory/edit-memory.tool.d.ts.map +1 -0
- package/dist/tools/memory/edit-memory.tool.js +172 -0
- package/dist/tools/memory/edit-memory.tool.js.map +1 -0
- package/dist/tools/memory/index.d.ts +31 -0
- package/dist/tools/memory/index.d.ts.map +1 -0
- package/dist/tools/memory/index.js +31 -0
- package/dist/tools/memory/index.js.map +1 -0
- package/dist/tools/memory/list-memories.tool.d.ts +20 -0
- package/dist/tools/memory/list-memories.tool.d.ts.map +1 -0
- package/dist/tools/memory/list-memories.tool.js +142 -0
- package/dist/tools/memory/list-memories.tool.js.map +1 -0
- package/dist/tools/memory/read-memory.tool.d.ts +20 -0
- package/dist/tools/memory/read-memory.tool.d.ts.map +1 -0
- package/dist/tools/memory/read-memory.tool.js +98 -0
- package/dist/tools/memory/read-memory.tool.js.map +1 -0
- package/dist/tools/memory/write-memory.tool.d.ts +20 -0
- package/dist/tools/memory/write-memory.tool.d.ts.map +1 -0
- package/dist/tools/memory/write-memory.tool.js +162 -0
- package/dist/tools/memory/write-memory.tool.js.map +1 -0
- package/dist/tools/mpc/index.d.ts +27 -0
- package/dist/tools/mpc/index.d.ts.map +1 -0
- package/dist/tools/mpc/index.js +27 -0
- package/dist/tools/mpc/index.js.map +1 -0
- package/dist/tools/mpc/mpc-distribute.tool.d.ts +36 -0
- package/dist/tools/mpc/mpc-distribute.tool.d.ts.map +1 -0
- package/dist/tools/mpc/mpc-distribute.tool.js +129 -0
- package/dist/tools/mpc/mpc-distribute.tool.js.map +1 -0
- package/dist/tools/mpc/mpc-reconstruct.tool.d.ts +28 -0
- package/dist/tools/mpc/mpc-reconstruct.tool.d.ts.map +1 -0
- package/dist/tools/mpc/mpc-reconstruct.tool.js +125 -0
- package/dist/tools/mpc/mpc-reconstruct.tool.js.map +1 -0
- package/dist/tools/mpc/mpc-split.tool.d.ts +43 -0
- package/dist/tools/mpc/mpc-split.tool.d.ts.map +1 -0
- package/dist/tools/mpc/mpc-split.tool.js +120 -0
- package/dist/tools/mpc/mpc-split.tool.js.map +1 -0
- package/dist/tools/mpc/mpc-status.tool.d.ts +33 -0
- package/dist/tools/mpc/mpc-status.tool.d.ts.map +1 -0
- package/dist/tools/mpc/mpc-status.tool.js +129 -0
- package/dist/tools/mpc/mpc-status.tool.js.map +1 -0
- package/dist/tools/multi-llm/consensus-prompt.tool.d.ts +9 -0
- package/dist/tools/multi-llm/consensus-prompt.tool.d.ts.map +1 -0
- package/dist/tools/multi-llm/consensus-prompt.tool.js +165 -0
- package/dist/tools/multi-llm/consensus-prompt.tool.js.map +1 -0
- package/dist/tools/multi-llm/index.d.ts +8 -0
- package/dist/tools/multi-llm/index.d.ts.map +1 -0
- package/dist/tools/multi-llm/index.js +8 -0
- package/dist/tools/multi-llm/index.js.map +1 -0
- package/dist/tools/multi-llm/multi-prompt.tool.d.ts +9 -0
- package/dist/tools/multi-llm/multi-prompt.tool.d.ts.map +1 -0
- package/dist/tools/multi-llm/multi-prompt.tool.js +90 -0
- package/dist/tools/multi-llm/multi-prompt.tool.js.map +1 -0
- package/dist/tools/project/check-types.tool.d.ts +20 -0
- package/dist/tools/project/check-types.tool.d.ts.map +1 -0
- package/dist/tools/project/check-types.tool.js +254 -0
- package/dist/tools/project/check-types.tool.js.map +1 -0
- package/dist/tools/project/index.d.ts +35 -0
- package/dist/tools/project/index.d.ts.map +1 -0
- package/dist/tools/project/index.js +35 -0
- package/dist/tools/project/index.js.map +1 -0
- package/dist/tools/project/project-info.tool.d.ts +20 -0
- package/dist/tools/project/project-info.tool.d.ts.map +1 -0
- package/dist/tools/project/project-info.tool.js +364 -0
- package/dist/tools/project/project-info.tool.js.map +1 -0
- package/dist/tools/project/run-lint.tool.d.ts +20 -0
- package/dist/tools/project/run-lint.tool.d.ts.map +1 -0
- package/dist/tools/project/run-lint.tool.js +279 -0
- package/dist/tools/project/run-lint.tool.js.map +1 -0
- package/dist/tools/project/run-script.tool.d.ts +20 -0
- package/dist/tools/project/run-script.tool.d.ts.map +1 -0
- package/dist/tools/project/run-script.tool.js +141 -0
- package/dist/tools/project/run-script.tool.js.map +1 -0
- package/dist/tools/project/run-tests.tool.d.ts +20 -0
- package/dist/tools/project/run-tests.tool.d.ts.map +1 -0
- package/dist/tools/project/run-tests.tool.js +357 -0
- package/dist/tools/project/run-tests.tool.js.map +1 -0
- package/dist/tools/recursive/index.d.ts +28 -0
- package/dist/tools/recursive/index.d.ts.map +1 -0
- package/dist/tools/recursive/index.js +28 -0
- package/dist/tools/recursive/index.js.map +1 -0
- package/dist/tools/recursive/invocation-log.tool.d.ts +20 -0
- package/dist/tools/recursive/invocation-log.tool.d.ts.map +1 -0
- package/dist/tools/recursive/invocation-log.tool.js +110 -0
- package/dist/tools/recursive/invocation-log.tool.js.map +1 -0
- package/dist/tools/recursive/invoke-batch.tool.d.ts +20 -0
- package/dist/tools/recursive/invoke-batch.tool.d.ts.map +1 -0
- package/dist/tools/recursive/invoke-batch.tool.js +99 -0
- package/dist/tools/recursive/invoke-batch.tool.js.map +1 -0
- package/dist/tools/recursive/invoke-tool.tool.d.ts +20 -0
- package/dist/tools/recursive/invoke-tool.tool.d.ts.map +1 -0
- package/dist/tools/recursive/invoke-tool.tool.js +100 -0
- package/dist/tools/recursive/invoke-tool.tool.js.map +1 -0
- package/dist/tools/registry.d.ts +261 -0
- package/dist/tools/registry.d.ts.map +1 -0
- package/dist/tools/registry.js +462 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/tools/rl/index.d.ts +25 -0
- package/dist/tools/rl/index.d.ts.map +1 -0
- package/dist/tools/rl/index.js +25 -0
- package/dist/tools/rl/index.js.map +1 -0
- package/dist/tools/rl/rl-dopamine-log.tool.d.ts +32 -0
- package/dist/tools/rl/rl-dopamine-log.tool.d.ts.map +1 -0
- package/dist/tools/rl/rl-dopamine-log.tool.js +112 -0
- package/dist/tools/rl/rl-dopamine-log.tool.js.map +1 -0
- package/dist/tools/rl/rl-reward-stats.tool.d.ts +33 -0
- package/dist/tools/rl/rl-reward-stats.tool.d.ts.map +1 -0
- package/dist/tools/rl/rl-reward-stats.tool.js +100 -0
- package/dist/tools/rl/rl-reward-stats.tool.js.map +1 -0
- package/dist/tools/session/index.d.ts +28 -0
- package/dist/tools/session/index.d.ts.map +1 -0
- package/dist/tools/session/index.js +28 -0
- package/dist/tools/session/index.js.map +1 -0
- package/dist/tools/session/session-create.tool.d.ts +35 -0
- package/dist/tools/session/session-create.tool.d.ts.map +1 -0
- package/dist/tools/session/session-create.tool.js +74 -0
- package/dist/tools/session/session-create.tool.js.map +1 -0
- package/dist/tools/session/session-delete.tool.d.ts +32 -0
- package/dist/tools/session/session-delete.tool.d.ts.map +1 -0
- package/dist/tools/session/session-delete.tool.js +94 -0
- package/dist/tools/session/session-delete.tool.js.map +1 -0
- package/dist/tools/session/session-info.tool.d.ts +30 -0
- package/dist/tools/session/session-info.tool.d.ts.map +1 -0
- package/dist/tools/session/session-info.tool.js +89 -0
- package/dist/tools/session/session-info.tool.js.map +1 -0
- package/dist/tools/session/session-list.tool.d.ts +43 -0
- package/dist/tools/session/session-list.tool.d.ts.map +1 -0
- package/dist/tools/session/session-list.tool.js +85 -0
- package/dist/tools/session/session-list.tool.js.map +1 -0
- package/dist/tools/session/session-switch.tool.d.ts +32 -0
- package/dist/tools/session/session-switch.tool.d.ts.map +1 -0
- package/dist/tools/session/session-switch.tool.js +75 -0
- package/dist/tools/session/session-switch.tool.js.map +1 -0
- package/dist/tools/simple-tools.d.ts +23 -0
- package/dist/tools/simple-tools.d.ts.map +1 -0
- package/dist/tools/simple-tools.js +73 -0
- package/dist/tools/simple-tools.js.map +1 -0
- package/dist/tools/specialized/analyze-deps.tool.d.ts +20 -0
- package/dist/tools/specialized/analyze-deps.tool.d.ts.map +1 -0
- package/dist/tools/specialized/analyze-deps.tool.js +102 -0
- package/dist/tools/specialized/analyze-deps.tool.js.map +1 -0
- package/dist/tools/specialized/auto-fix-agent.tool.d.ts +12 -0
- package/dist/tools/specialized/auto-fix-agent.tool.d.ts.map +1 -0
- package/dist/tools/specialized/auto-fix-agent.tool.js +154 -0
- package/dist/tools/specialized/auto-fix-agent.tool.js.map +1 -0
- package/dist/tools/specialized/auto-fix.tool.d.ts +20 -0
- package/dist/tools/specialized/auto-fix.tool.d.ts.map +1 -0
- package/dist/tools/specialized/auto-fix.tool.js +264 -0
- package/dist/tools/specialized/auto-fix.tool.js.map +1 -0
- package/dist/tools/specialized/code-review.tool.d.ts +20 -0
- package/dist/tools/specialized/code-review.tool.d.ts.map +1 -0
- package/dist/tools/specialized/code-review.tool.js +140 -0
- package/dist/tools/specialized/code-review.tool.js.map +1 -0
- package/dist/tools/specialized/explain-code.tool.d.ts +20 -0
- package/dist/tools/specialized/explain-code.tool.d.ts.map +1 -0
- package/dist/tools/specialized/explain-code.tool.js +90 -0
- package/dist/tools/specialized/explain-code.tool.js.map +1 -0
- package/dist/tools/specialized/fix-bug.tool.d.ts +20 -0
- package/dist/tools/specialized/fix-bug.tool.d.ts.map +1 -0
- package/dist/tools/specialized/fix-bug.tool.js +107 -0
- package/dist/tools/specialized/fix-bug.tool.js.map +1 -0
- package/dist/tools/specialized/index.d.ts +26 -0
- package/dist/tools/specialized/index.d.ts.map +1 -0
- package/dist/tools/specialized/index.js +26 -0
- package/dist/tools/specialized/index.js.map +1 -0
- package/dist/tools/specialized/refactor.tool.d.ts +20 -0
- package/dist/tools/specialized/refactor.tool.d.ts.map +1 -0
- package/dist/tools/specialized/refactor.tool.js +115 -0
- package/dist/tools/specialized/refactor.tool.js.map +1 -0
- package/dist/tools/specialized/write-tests.tool.d.ts +20 -0
- package/dist/tools/specialized/write-tests.tool.d.ts.map +1 -0
- package/dist/tools/specialized/write-tests.tool.js +115 -0
- package/dist/tools/specialized/write-tests.tool.js.map +1 -0
- package/dist/tools/system/ai-config.tool.d.ts +13 -0
- package/dist/tools/system/ai-config.tool.d.ts.map +1 -0
- package/dist/tools/system/ai-config.tool.js +252 -0
- package/dist/tools/system/ai-config.tool.js.map +1 -0
- package/dist/tools/system/ai-models.tool.d.ts +45 -0
- package/dist/tools/system/ai-models.tool.d.ts.map +1 -0
- package/dist/tools/system/ai-models.tool.js +194 -0
- package/dist/tools/system/ai-models.tool.js.map +1 -0
- package/dist/tools/system/config.tool.d.ts +57 -0
- package/dist/tools/system/config.tool.d.ts.map +1 -0
- package/dist/tools/system/config.tool.js +320 -0
- package/dist/tools/system/config.tool.js.map +1 -0
- package/dist/tools/system/env-info.tool.d.ts +20 -0
- package/dist/tools/system/env-info.tool.d.ts.map +1 -0
- package/dist/tools/system/env-info.tool.js +228 -0
- package/dist/tools/system/env-info.tool.js.map +1 -0
- package/dist/tools/system/index.d.ts +37 -0
- package/dist/tools/system/index.d.ts.map +1 -0
- package/dist/tools/system/index.js +37 -0
- package/dist/tools/system/index.js.map +1 -0
- package/dist/tools/system/memory-usage.tool.d.ts +20 -0
- package/dist/tools/system/memory-usage.tool.d.ts.map +1 -0
- package/dist/tools/system/memory-usage.tool.js +223 -0
- package/dist/tools/system/memory-usage.tool.js.map +1 -0
- package/dist/tools/system/process-list.tool.d.ts +20 -0
- package/dist/tools/system/process-list.tool.d.ts.map +1 -0
- package/dist/tools/system/process-list.tool.js +202 -0
- package/dist/tools/system/process-list.tool.js.map +1 -0
- package/dist/tools/system/shell-exec.tool.d.ts +20 -0
- package/dist/tools/system/shell-exec.tool.d.ts.map +1 -0
- package/dist/tools/system/shell-exec.tool.js +293 -0
- package/dist/tools/system/shell-exec.tool.js.map +1 -0
- package/dist/tools/timeout-test.tool.d.ts +20 -0
- package/dist/tools/timeout-test.tool.d.ts.map +1 -0
- package/dist/tools/timeout-test.tool.js +46 -0
- package/dist/tools/timeout-test.tool.js.map +1 -0
- package/dist/tree-sitter/index.d.ts +27 -0
- package/dist/tree-sitter/index.d.ts.map +1 -0
- package/dist/tree-sitter/index.js +27 -0
- package/dist/tree-sitter/index.js.map +1 -0
- package/dist/tree-sitter/parser-manager.d.ts +83 -0
- package/dist/tree-sitter/parser-manager.d.ts.map +1 -0
- package/dist/tree-sitter/parser-manager.js +430 -0
- package/dist/tree-sitter/parser-manager.js.map +1 -0
- package/dist/tree-sitter/types.d.ts +117 -0
- package/dist/tree-sitter/types.d.ts.map +1 -0
- package/dist/tree-sitter/types.js +375 -0
- package/dist/tree-sitter/types.js.map +1 -0
- package/dist/types/file-types.d.ts +277 -0
- package/dist/types/file-types.d.ts.map +1 -0
- package/dist/types/file-types.js +75 -0
- package/dist/types/file-types.js.map +1 -0
- package/dist/types/git-types.d.ts +270 -0
- package/dist/types/git-types.d.ts.map +1 -0
- package/dist/types/git-types.js +26 -0
- package/dist/types/git-types.js.map +1 -0
- package/dist/types/index.d.ts +28 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +31 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/tool-types.d.ts +231 -0
- package/dist/types/tool-types.d.ts.map +1 -0
- package/dist/types/tool-types.js +30 -0
- package/dist/types/tool-types.js.map +1 -0
- package/dist/utils/bun-file.d.ts +99 -0
- package/dist/utils/bun-file.d.ts.map +1 -0
- package/dist/utils/bun-file.js +393 -0
- package/dist/utils/bun-file.js.map +1 -0
- package/dist/utils/cache.d.ts +124 -0
- package/dist/utils/cache.d.ts.map +1 -0
- package/dist/utils/cache.js +228 -0
- package/dist/utils/cache.js.map +1 -0
- package/dist/utils/commandExecutor.d.ts +54 -0
- package/dist/utils/commandExecutor.d.ts.map +1 -0
- package/dist/utils/commandExecutor.js +165 -0
- package/dist/utils/commandExecutor.js.map +1 -0
- package/dist/utils/edit-utils.d.ts +72 -0
- package/dist/utils/edit-utils.d.ts.map +1 -0
- package/dist/utils/edit-utils.js +129 -0
- package/dist/utils/edit-utils.js.map +1 -0
- package/dist/utils/errors.d.ts +170 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +304 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/file-utils.d.ts +195 -0
- package/dist/utils/file-utils.d.ts.map +1 -0
- package/dist/utils/file-utils.js +401 -0
- package/dist/utils/file-utils.js.map +1 -0
- package/dist/utils/git-utils.d.ts +204 -0
- package/dist/utils/git-utils.d.ts.map +1 -0
- package/dist/utils/git-utils.js +352 -0
- package/dist/utils/git-utils.js.map +1 -0
- package/dist/utils/languageDetection.d.ts +54 -0
- package/dist/utils/languageDetection.d.ts.map +1 -0
- package/dist/utils/languageDetection.js +340 -0
- package/dist/utils/languageDetection.js.map +1 -0
- package/dist/utils/logger.d.ts +207 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +484 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/process-utils.d.ts +196 -0
- package/dist/utils/process-utils.d.ts.map +1 -0
- package/dist/utils/process-utils.js +302 -0
- package/dist/utils/process-utils.js.map +1 -0
- package/dist/utils/projectContext.enhanced.d.ts +71 -0
- package/dist/utils/projectContext.enhanced.d.ts.map +1 -0
- package/dist/utils/projectContext.enhanced.js +816 -0
- package/dist/utils/projectContext.enhanced.js.map +1 -0
- package/dist/utils/security.d.ts +123 -0
- package/dist/utils/security.d.ts.map +1 -0
- package/dist/utils/security.js +337 -0
- package/dist/utils/security.js.map +1 -0
- package/dist/utils/validation.d.ts +163 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +558 -0
- package/dist/utils/validation.js.map +1 -0
- package/dist/version.d.ts +17 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +17 -0
- package/dist/version.js.map +1 -0
- package/kemdi-code-mcp-logo.png +0 -0
- package/package.json +136 -0
|
@@ -0,0 +1,715 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* KemdiCode MCP Server
|
|
3
|
+
* Copyright (C) 2025-2026 Kemdi Sp. z o.o.
|
|
4
|
+
*
|
|
5
|
+
* This program is free software: you can redistribute it and/or modify
|
|
6
|
+
* it under the terms of the GNU General Public License as published by
|
|
7
|
+
* the Free Software Foundation, either version 3 of the License, or
|
|
8
|
+
* (at your option) any later version.
|
|
9
|
+
*
|
|
10
|
+
* This program is distributed in the hope that it will be useful,
|
|
11
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
12
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
13
|
+
* GNU General Public License for more details.
|
|
14
|
+
*
|
|
15
|
+
* You should have received a copy of the GNU General Public License
|
|
16
|
+
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
17
|
+
*/
|
|
18
|
+
/**
|
|
19
|
+
* CWD Resolver Module
|
|
20
|
+
*
|
|
21
|
+
* Resolves the working directory for a session using multiple strategies
|
|
22
|
+
* with a priority-based fallback system. Also provides comprehensive project
|
|
23
|
+
* type detection from configuration files.
|
|
24
|
+
*
|
|
25
|
+
* Performance optimizations:
|
|
26
|
+
* - Caches git root detection results (git rev-parse is slow)
|
|
27
|
+
* - Caches project type detection results
|
|
28
|
+
* - Uses parallel file existence checks where possible
|
|
29
|
+
*
|
|
30
|
+
* @module session/cwd-resolver
|
|
31
|
+
*/
|
|
32
|
+
import { spawn } from 'child_process';
|
|
33
|
+
import { access, readFile } from 'fs/promises';
|
|
34
|
+
import { join, dirname, basename } from 'path';
|
|
35
|
+
import { Logger } from '../utils/logger.js';
|
|
36
|
+
import { gitCache, fsCache, projectCache } from '../utils/cache.js';
|
|
37
|
+
/**
|
|
38
|
+
* Project detection patterns
|
|
39
|
+
*
|
|
40
|
+
* @description Maps project types to their marker files and detection priority.
|
|
41
|
+
* Lower priority number = checked first.
|
|
42
|
+
* @constant
|
|
43
|
+
*/
|
|
44
|
+
const PROJECT_PATTERNS = {
|
|
45
|
+
node: {
|
|
46
|
+
files: ['package.json', 'package-lock.json', 'yarn.lock', 'pnpm-lock.yaml'],
|
|
47
|
+
priority: 1,
|
|
48
|
+
},
|
|
49
|
+
php: {
|
|
50
|
+
files: ['composer.json', 'composer.lock', 'artisan', 'index.php'],
|
|
51
|
+
priority: 2,
|
|
52
|
+
},
|
|
53
|
+
python: {
|
|
54
|
+
files: ['pyproject.toml', 'setup.py', 'requirements.txt', 'Pipfile', 'poetry.lock'],
|
|
55
|
+
priority: 3,
|
|
56
|
+
},
|
|
57
|
+
rust: {
|
|
58
|
+
files: ['Cargo.toml', 'Cargo.lock'],
|
|
59
|
+
priority: 4,
|
|
60
|
+
},
|
|
61
|
+
go: {
|
|
62
|
+
files: ['go.mod', 'go.sum'],
|
|
63
|
+
priority: 5,
|
|
64
|
+
},
|
|
65
|
+
ruby: {
|
|
66
|
+
files: ['Gemfile', 'Gemfile.lock', '.ruby-version'],
|
|
67
|
+
priority: 6,
|
|
68
|
+
},
|
|
69
|
+
java: {
|
|
70
|
+
files: ['pom.xml', 'build.gradle', 'build.gradle.kts', 'settings.gradle'],
|
|
71
|
+
priority: 7,
|
|
72
|
+
},
|
|
73
|
+
dotnet: {
|
|
74
|
+
files: ['*.csproj', '*.fsproj', '*.sln', 'global.json'],
|
|
75
|
+
priority: 8,
|
|
76
|
+
},
|
|
77
|
+
unknown: {
|
|
78
|
+
files: [],
|
|
79
|
+
priority: 99,
|
|
80
|
+
},
|
|
81
|
+
};
|
|
82
|
+
/**
|
|
83
|
+
* Framework detection patterns
|
|
84
|
+
*
|
|
85
|
+
* @description Maps framework names to their project type and marker files.
|
|
86
|
+
* Used for more specific framework detection within a project type.
|
|
87
|
+
* @constant
|
|
88
|
+
* @private
|
|
89
|
+
*/
|
|
90
|
+
const _FRAMEWORK_PATTERNS = {
|
|
91
|
+
laravel: { type: 'php', markers: ['artisan', 'bootstrap/app.php'] },
|
|
92
|
+
symfony: { type: 'php', markers: ['symfony.lock', 'config/bundles.php'] },
|
|
93
|
+
nextjs: { type: 'node', markers: ['next.config.js', 'next.config.mjs', 'next.config.ts'] },
|
|
94
|
+
nuxt: { type: 'node', markers: ['nuxt.config.js', 'nuxt.config.ts'] },
|
|
95
|
+
vite: { type: 'node', markers: ['vite.config.js', 'vite.config.ts'] },
|
|
96
|
+
express: { type: 'node', markers: ['express'] }, // Check in package.json
|
|
97
|
+
django: { type: 'python', markers: ['manage.py', 'django'] },
|
|
98
|
+
flask: { type: 'python', markers: ['flask'] },
|
|
99
|
+
rails: { type: 'ruby', markers: ['config/routes.rb', 'Gemfile'] },
|
|
100
|
+
spring: { type: 'java', markers: ['spring'] },
|
|
101
|
+
};
|
|
102
|
+
/**
|
|
103
|
+
* Execute a shell command and return stdout
|
|
104
|
+
*
|
|
105
|
+
* @description Spawns a process and captures stdout. Has a 5 second timeout.
|
|
106
|
+
* @param {string} command - Command to execute
|
|
107
|
+
* @param {string[]} args - Command arguments
|
|
108
|
+
* @param {string} [cwd] - Working directory for command
|
|
109
|
+
* @returns {Promise<string>} Trimmed stdout output
|
|
110
|
+
* @throws {Error} If command exits with non-zero code or times out
|
|
111
|
+
* @private
|
|
112
|
+
*/
|
|
113
|
+
async function execCommand(command, args, cwd) {
|
|
114
|
+
return new Promise((resolve, reject) => {
|
|
115
|
+
const proc = spawn(command, args, {
|
|
116
|
+
cwd,
|
|
117
|
+
shell: false,
|
|
118
|
+
timeout: 5000,
|
|
119
|
+
});
|
|
120
|
+
let stdout = '';
|
|
121
|
+
let stderr = '';
|
|
122
|
+
proc.stdout.on('data', (data) => {
|
|
123
|
+
stdout += data.toString();
|
|
124
|
+
});
|
|
125
|
+
proc.stderr.on('data', (data) => {
|
|
126
|
+
stderr += data.toString();
|
|
127
|
+
});
|
|
128
|
+
proc.on('close', (code) => {
|
|
129
|
+
if (code === 0) {
|
|
130
|
+
resolve(stdout.trim());
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
reject(new Error(stderr || `Command failed with code ${code}`));
|
|
134
|
+
}
|
|
135
|
+
});
|
|
136
|
+
proc.on('error', reject);
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Check if a file exists (cached)
|
|
141
|
+
*
|
|
142
|
+
* @description Checks file existence with result caching to avoid repeated fs calls.
|
|
143
|
+
* Cache key format: 'exists:{path}'
|
|
144
|
+
* @param {string} path - Absolute path to check
|
|
145
|
+
* @returns {Promise<boolean>} True if file/directory exists
|
|
146
|
+
* @private
|
|
147
|
+
*/
|
|
148
|
+
async function fileExists(path) {
|
|
149
|
+
// Check cache first
|
|
150
|
+
const cacheKey = `exists:${path}`;
|
|
151
|
+
const cached = fsCache.get(cacheKey);
|
|
152
|
+
if (cached !== undefined) {
|
|
153
|
+
return cached;
|
|
154
|
+
}
|
|
155
|
+
try {
|
|
156
|
+
await access(path);
|
|
157
|
+
fsCache.set(cacheKey, true);
|
|
158
|
+
return true;
|
|
159
|
+
}
|
|
160
|
+
catch {
|
|
161
|
+
fsCache.set(cacheKey, false);
|
|
162
|
+
return false;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Check multiple files exist in parallel
|
|
167
|
+
*
|
|
168
|
+
* @description Checks all paths concurrently and returns the first one that exists.
|
|
169
|
+
* Useful for finding project marker files efficiently.
|
|
170
|
+
* @param {string[]} paths - Array of absolute paths to check
|
|
171
|
+
* @returns {Promise<string | null>} First existing path or null if none found
|
|
172
|
+
* @private
|
|
173
|
+
*/
|
|
174
|
+
async function _findFirstExisting(paths) {
|
|
175
|
+
const results = await Promise.all(paths.map(async (p) => ({ path: p, exists: await fileExists(p) })));
|
|
176
|
+
const found = results.find((r) => r.exists);
|
|
177
|
+
return found ? found.path : null;
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Get git root directory (cached)
|
|
181
|
+
*
|
|
182
|
+
* @description Finds the root of the git repository containing startDir.
|
|
183
|
+
* Results are cached as git rev-parse is an expensive operation.
|
|
184
|
+
* @param {string} startDir - Directory to start search from
|
|
185
|
+
* @returns {Promise<string | null>} Git repository root path or null if not in a repo
|
|
186
|
+
* @private
|
|
187
|
+
*/
|
|
188
|
+
async function getGitRoot(startDir) {
|
|
189
|
+
const cacheKey = `gitroot:${startDir}`;
|
|
190
|
+
const cached = gitCache.get(cacheKey);
|
|
191
|
+
if (cached !== undefined) {
|
|
192
|
+
return cached;
|
|
193
|
+
}
|
|
194
|
+
try {
|
|
195
|
+
const gitRoot = await execCommand('git', ['rev-parse', '--show-toplevel'], startDir);
|
|
196
|
+
const result = gitRoot || null;
|
|
197
|
+
gitCache.set(cacheKey, result);
|
|
198
|
+
return result;
|
|
199
|
+
}
|
|
200
|
+
catch {
|
|
201
|
+
gitCache.set(cacheKey, null);
|
|
202
|
+
return null;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Check if directory is a git repository
|
|
207
|
+
*
|
|
208
|
+
* @description Checks if directory contains a .git folder (is a git root)
|
|
209
|
+
* @param {string} dir - Directory to check
|
|
210
|
+
* @returns {Promise<boolean>} True if directory is a git repository root
|
|
211
|
+
* @private
|
|
212
|
+
*/
|
|
213
|
+
async function isGitRepo(dir) {
|
|
214
|
+
const gitDir = join(dir, '.git');
|
|
215
|
+
return fileExists(gitDir);
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Detect project type from directory (cached)
|
|
219
|
+
*
|
|
220
|
+
* @description Identifies the project type by checking for marker files (package.json,
|
|
221
|
+
* Cargo.toml, etc). Uses parallel checks and caching for performance.
|
|
222
|
+
* @param {string} dir - Directory to analyze
|
|
223
|
+
* @returns {Promise<ProjectType>} Detected project type ('node', 'php', 'rust', etc.) or 'unknown'
|
|
224
|
+
* @example
|
|
225
|
+
* ```typescript
|
|
226
|
+
* const type = await detectProjectType('/path/to/project');
|
|
227
|
+
* // Returns: 'node', 'php', 'python', 'rust', 'go', 'ruby', 'java', 'dotnet', or 'unknown'
|
|
228
|
+
* ```
|
|
229
|
+
*/
|
|
230
|
+
export async function detectProjectType(dir) {
|
|
231
|
+
const cacheKey = `projtype:${dir}`;
|
|
232
|
+
const cached = projectCache.get(cacheKey);
|
|
233
|
+
if (cached !== undefined) {
|
|
234
|
+
return cached;
|
|
235
|
+
}
|
|
236
|
+
// Build list of all files to check across all project types
|
|
237
|
+
const allChecks = [];
|
|
238
|
+
for (const [type, config] of Object.entries(PROJECT_PATTERNS)) {
|
|
239
|
+
if (type === 'unknown')
|
|
240
|
+
continue;
|
|
241
|
+
for (const file of config.files) {
|
|
242
|
+
if (!file.includes('*')) {
|
|
243
|
+
allChecks.push({
|
|
244
|
+
type: type,
|
|
245
|
+
file,
|
|
246
|
+
path: join(dir, file),
|
|
247
|
+
});
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
// Check all files in parallel
|
|
252
|
+
const results = await Promise.all(allChecks.map(async (check) => ({
|
|
253
|
+
...check,
|
|
254
|
+
exists: await fileExists(check.path),
|
|
255
|
+
})));
|
|
256
|
+
// Find first existing file by priority order
|
|
257
|
+
const sortedTypes = Object.entries(PROJECT_PATTERNS)
|
|
258
|
+
.filter(([t]) => t !== 'unknown')
|
|
259
|
+
.sort((a, b) => a[1].priority - b[1].priority)
|
|
260
|
+
.map(([t]) => t);
|
|
261
|
+
for (const type of sortedTypes) {
|
|
262
|
+
const found = results.find((r) => r.type === type && r.exists);
|
|
263
|
+
if (found) {
|
|
264
|
+
projectCache.set(cacheKey, type);
|
|
265
|
+
return type;
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
// Handle glob patterns for dotnet (less common, check last)
|
|
269
|
+
try {
|
|
270
|
+
const { readdirSync } = await import('fs');
|
|
271
|
+
const files = readdirSync(dir);
|
|
272
|
+
const dotnetExts = ['.csproj', '.fsproj', '.sln'];
|
|
273
|
+
if (files.some((f) => dotnetExts.some((ext) => f.endsWith(ext)))) {
|
|
274
|
+
projectCache.set(cacheKey, 'dotnet');
|
|
275
|
+
return 'dotnet';
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
catch {
|
|
279
|
+
// Directory might not exist
|
|
280
|
+
}
|
|
281
|
+
projectCache.set(cacheKey, 'unknown');
|
|
282
|
+
return 'unknown';
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* Detect detailed project information
|
|
286
|
+
*
|
|
287
|
+
* @description Performs comprehensive project analysis including type, name, version,
|
|
288
|
+
* framework, package manager, and monorepo detection. Reads config files
|
|
289
|
+
* (package.json, Cargo.toml, etc.) to extract metadata.
|
|
290
|
+
* @param {string} dir - Directory to analyze
|
|
291
|
+
* @returns {Promise<ProjectInfo>} Detailed project information object
|
|
292
|
+
* @example
|
|
293
|
+
* ```typescript
|
|
294
|
+
* const info = await detectProjectInfo('/path/to/project');
|
|
295
|
+
* // Returns: { type: 'node', name: 'my-app', version: '1.0.0',
|
|
296
|
+
* // framework: 'nextjs', packageManager: 'pnpm', isMonorepo: false }
|
|
297
|
+
* ```
|
|
298
|
+
*/
|
|
299
|
+
export async function detectProjectInfo(dir) {
|
|
300
|
+
const type = await detectProjectType(dir);
|
|
301
|
+
const info = { type };
|
|
302
|
+
try {
|
|
303
|
+
switch (type) {
|
|
304
|
+
case 'node': {
|
|
305
|
+
const packageJsonPath = join(dir, 'package.json');
|
|
306
|
+
if (await fileExists(packageJsonPath)) {
|
|
307
|
+
const content = await readFile(packageJsonPath, 'utf-8');
|
|
308
|
+
const pkg = JSON.parse(content);
|
|
309
|
+
info.name = pkg.name;
|
|
310
|
+
info.version = pkg.version;
|
|
311
|
+
info.configFile = 'package.json';
|
|
312
|
+
// Detect package manager and monorepo in parallel
|
|
313
|
+
const [hasPnpm, hasYarn, hasNpm, hasLerna] = await Promise.all([
|
|
314
|
+
fileExists(join(dir, 'pnpm-lock.yaml')),
|
|
315
|
+
fileExists(join(dir, 'yarn.lock')),
|
|
316
|
+
fileExists(join(dir, 'package-lock.json')),
|
|
317
|
+
fileExists(join(dir, 'lerna.json')),
|
|
318
|
+
]);
|
|
319
|
+
if (hasPnpm)
|
|
320
|
+
info.packageManager = 'pnpm';
|
|
321
|
+
else if (hasYarn)
|
|
322
|
+
info.packageManager = 'yarn';
|
|
323
|
+
else if (hasNpm)
|
|
324
|
+
info.packageManager = 'npm';
|
|
325
|
+
// Detect monorepo
|
|
326
|
+
if (pkg.workspaces || hasLerna) {
|
|
327
|
+
info.isMonorepo = true;
|
|
328
|
+
}
|
|
329
|
+
// Detect framework from dependencies
|
|
330
|
+
const deps = { ...pkg.dependencies, ...pkg.devDependencies };
|
|
331
|
+
if (deps['next'])
|
|
332
|
+
info.framework = 'nextjs';
|
|
333
|
+
else if (deps['nuxt'])
|
|
334
|
+
info.framework = 'nuxt';
|
|
335
|
+
else if (deps['vite'])
|
|
336
|
+
info.framework = 'vite';
|
|
337
|
+
else if (deps['express'])
|
|
338
|
+
info.framework = 'express';
|
|
339
|
+
else if (deps['@angular/core'])
|
|
340
|
+
info.framework = 'angular';
|
|
341
|
+
else if (deps['react'] && !deps['next'])
|
|
342
|
+
info.framework = 'react';
|
|
343
|
+
else if (deps['vue'] && !deps['nuxt'])
|
|
344
|
+
info.framework = 'vue';
|
|
345
|
+
}
|
|
346
|
+
break;
|
|
347
|
+
}
|
|
348
|
+
case 'php': {
|
|
349
|
+
const composerPath = join(dir, 'composer.json');
|
|
350
|
+
if (await fileExists(composerPath)) {
|
|
351
|
+
const content = await readFile(composerPath, 'utf-8');
|
|
352
|
+
const composer = JSON.parse(content);
|
|
353
|
+
info.name = composer.name;
|
|
354
|
+
info.version = composer.version;
|
|
355
|
+
info.configFile = 'composer.json';
|
|
356
|
+
info.packageManager = 'composer';
|
|
357
|
+
// Detect framework in parallel
|
|
358
|
+
const [hasArtisan, hasSymfonyLock] = await Promise.all([
|
|
359
|
+
fileExists(join(dir, 'artisan')),
|
|
360
|
+
fileExists(join(dir, 'symfony.lock')),
|
|
361
|
+
]);
|
|
362
|
+
if (hasArtisan)
|
|
363
|
+
info.framework = 'laravel';
|
|
364
|
+
else if (hasSymfonyLock)
|
|
365
|
+
info.framework = 'symfony';
|
|
366
|
+
}
|
|
367
|
+
break;
|
|
368
|
+
}
|
|
369
|
+
case 'python': {
|
|
370
|
+
const pyprojectPath = join(dir, 'pyproject.toml');
|
|
371
|
+
const setupPyPath = join(dir, 'setup.py');
|
|
372
|
+
if (await fileExists(pyprojectPath)) {
|
|
373
|
+
info.configFile = 'pyproject.toml';
|
|
374
|
+
// Basic TOML parsing for name
|
|
375
|
+
const content = await readFile(pyprojectPath, 'utf-8');
|
|
376
|
+
const nameMatch = content.match(/name\s*=\s*["']([^"']+)["']/);
|
|
377
|
+
if (nameMatch)
|
|
378
|
+
info.name = nameMatch[1];
|
|
379
|
+
if (content.includes('[tool.poetry]')) {
|
|
380
|
+
info.packageManager = 'poetry';
|
|
381
|
+
}
|
|
382
|
+
else if (await fileExists(join(dir, 'Pipfile'))) {
|
|
383
|
+
info.packageManager = 'pipenv';
|
|
384
|
+
}
|
|
385
|
+
else {
|
|
386
|
+
info.packageManager = 'pip';
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
else if (await fileExists(setupPyPath)) {
|
|
390
|
+
info.configFile = 'setup.py';
|
|
391
|
+
info.packageManager = 'pip';
|
|
392
|
+
}
|
|
393
|
+
// Detect Django/Flask
|
|
394
|
+
if (await fileExists(join(dir, 'manage.py'))) {
|
|
395
|
+
info.framework = 'django';
|
|
396
|
+
}
|
|
397
|
+
break;
|
|
398
|
+
}
|
|
399
|
+
case 'rust': {
|
|
400
|
+
const cargoPath = join(dir, 'Cargo.toml');
|
|
401
|
+
if (await fileExists(cargoPath)) {
|
|
402
|
+
const content = await readFile(cargoPath, 'utf-8');
|
|
403
|
+
const nameMatch = content.match(/name\s*=\s*["']([^"']+)["']/);
|
|
404
|
+
const versionMatch = content.match(/version\s*=\s*["']([^"']+)["']/);
|
|
405
|
+
if (nameMatch)
|
|
406
|
+
info.name = nameMatch[1];
|
|
407
|
+
if (versionMatch)
|
|
408
|
+
info.version = versionMatch[1];
|
|
409
|
+
info.configFile = 'Cargo.toml';
|
|
410
|
+
info.packageManager = 'cargo';
|
|
411
|
+
// Check for workspace
|
|
412
|
+
if (content.includes('[workspace]')) {
|
|
413
|
+
info.isMonorepo = true;
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
break;
|
|
417
|
+
}
|
|
418
|
+
case 'go': {
|
|
419
|
+
const goModPath = join(dir, 'go.mod');
|
|
420
|
+
if (await fileExists(goModPath)) {
|
|
421
|
+
const content = await readFile(goModPath, 'utf-8');
|
|
422
|
+
const moduleMatch = content.match(/module\s+(\S+)/);
|
|
423
|
+
if (moduleMatch)
|
|
424
|
+
info.name = moduleMatch[1];
|
|
425
|
+
info.configFile = 'go.mod';
|
|
426
|
+
info.packageManager = 'go';
|
|
427
|
+
}
|
|
428
|
+
break;
|
|
429
|
+
}
|
|
430
|
+
case 'ruby': {
|
|
431
|
+
const gemfilePath = join(dir, 'Gemfile');
|
|
432
|
+
if (await fileExists(gemfilePath)) {
|
|
433
|
+
info.configFile = 'Gemfile';
|
|
434
|
+
info.packageManager = 'bundler';
|
|
435
|
+
// Check for Rails
|
|
436
|
+
const content = await readFile(gemfilePath, 'utf-8');
|
|
437
|
+
if (content.includes("gem 'rails'") || content.includes('gem "rails"')) {
|
|
438
|
+
info.framework = 'rails';
|
|
439
|
+
}
|
|
440
|
+
}
|
|
441
|
+
break;
|
|
442
|
+
}
|
|
443
|
+
case 'java': {
|
|
444
|
+
// Check all Java build files in parallel
|
|
445
|
+
const [hasPom, hasGradle, hasGradleKts] = await Promise.all([
|
|
446
|
+
fileExists(join(dir, 'pom.xml')),
|
|
447
|
+
fileExists(join(dir, 'build.gradle')),
|
|
448
|
+
fileExists(join(dir, 'build.gradle.kts')),
|
|
449
|
+
]);
|
|
450
|
+
if (hasPom) {
|
|
451
|
+
info.configFile = 'pom.xml';
|
|
452
|
+
info.packageManager = 'maven';
|
|
453
|
+
}
|
|
454
|
+
else if (hasGradle || hasGradleKts) {
|
|
455
|
+
info.configFile = 'build.gradle';
|
|
456
|
+
info.packageManager = 'gradle';
|
|
457
|
+
}
|
|
458
|
+
break;
|
|
459
|
+
}
|
|
460
|
+
case 'dotnet': {
|
|
461
|
+
// Find first .csproj or .sln file
|
|
462
|
+
try {
|
|
463
|
+
const { readdirSync } = await import('fs');
|
|
464
|
+
const files = readdirSync(dir);
|
|
465
|
+
const projectFile = files.find((f) => f.endsWith('.csproj') || f.endsWith('.sln'));
|
|
466
|
+
if (projectFile) {
|
|
467
|
+
info.configFile = projectFile;
|
|
468
|
+
info.name = basename(projectFile).replace(/\.(csproj|sln)$/, '');
|
|
469
|
+
}
|
|
470
|
+
info.packageManager = 'dotnet';
|
|
471
|
+
}
|
|
472
|
+
catch {
|
|
473
|
+
// Ignore
|
|
474
|
+
}
|
|
475
|
+
break;
|
|
476
|
+
}
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
catch (error) {
|
|
480
|
+
Logger.debug(`Failed to detect project info: ${error}`);
|
|
481
|
+
}
|
|
482
|
+
return info;
|
|
483
|
+
}
|
|
484
|
+
/**
|
|
485
|
+
* Resolve CWD using priority order
|
|
486
|
+
*
|
|
487
|
+
* @description Determines the working directory using a priority-based fallback system.
|
|
488
|
+
* Also detects project type and git information for the resolved directory.
|
|
489
|
+
*
|
|
490
|
+
* Priority order:
|
|
491
|
+
* 1. X-Project-Path header (from HTTP request)
|
|
492
|
+
* 2. cwd parameter in request body
|
|
493
|
+
* 3. explicitCwd option (programmatic override)
|
|
494
|
+
* 4. KEMDICODE_PROJECT_PATH environment variable
|
|
495
|
+
* 5. Auto-detect git root from process.cwd()
|
|
496
|
+
* 6. process.cwd() fallback
|
|
497
|
+
*
|
|
498
|
+
* @param {CwdResolutionOptions} [options] - Resolution options
|
|
499
|
+
* @returns {Promise<CwdResolutionResult>} Resolution result with cwd, source, and project info
|
|
500
|
+
* @example
|
|
501
|
+
* ```typescript
|
|
502
|
+
* const result = await resolveCwd({ headerPath: '/path/from/header' });
|
|
503
|
+
* // Returns: { cwd: '/path/from/header', source: 'header',
|
|
504
|
+
* // isGitRepo: true, projectType: 'node', projectName: 'my-app' }
|
|
505
|
+
* ```
|
|
506
|
+
*/
|
|
507
|
+
export async function resolveCwd(options = {}) {
|
|
508
|
+
let cwd;
|
|
509
|
+
let source;
|
|
510
|
+
// 1. Check X-Project-Path header
|
|
511
|
+
if (options.headerPath && (await validateDirectory(options.headerPath))) {
|
|
512
|
+
cwd = options.headerPath;
|
|
513
|
+
source = 'header';
|
|
514
|
+
}
|
|
515
|
+
// 2. Check cwd parameter
|
|
516
|
+
else if (options.parameterCwd && (await validateDirectory(options.parameterCwd))) {
|
|
517
|
+
cwd = options.parameterCwd;
|
|
518
|
+
source = 'parameter';
|
|
519
|
+
}
|
|
520
|
+
// 3. Check explicit CWD
|
|
521
|
+
else if (options.explicitCwd && (await validateDirectory(options.explicitCwd))) {
|
|
522
|
+
cwd = options.explicitCwd;
|
|
523
|
+
source = 'explicit';
|
|
524
|
+
}
|
|
525
|
+
// 4. Check KEMDICODE_PROJECT_PATH env
|
|
526
|
+
else if (process.env.KEMDICODE_PROJECT_PATH &&
|
|
527
|
+
(await validateDirectory(process.env.KEMDICODE_PROJECT_PATH))) {
|
|
528
|
+
cwd = process.env.KEMDICODE_PROJECT_PATH;
|
|
529
|
+
source = 'env';
|
|
530
|
+
}
|
|
531
|
+
// 5. Try to detect git root
|
|
532
|
+
else {
|
|
533
|
+
const gitRoot = await getGitRoot(process.cwd());
|
|
534
|
+
if (gitRoot && (await validateDirectory(gitRoot))) {
|
|
535
|
+
cwd = gitRoot;
|
|
536
|
+
source = 'git-root';
|
|
537
|
+
}
|
|
538
|
+
else {
|
|
539
|
+
// 6. Fallback to process.cwd()
|
|
540
|
+
cwd = process.cwd();
|
|
541
|
+
source = 'process-cwd';
|
|
542
|
+
}
|
|
543
|
+
}
|
|
544
|
+
// Detect project info
|
|
545
|
+
const projectInfo = await detectProjectInfo(cwd);
|
|
546
|
+
const isRepo = await isGitRepo(cwd);
|
|
547
|
+
const gitRoot = isRepo ? await getGitRoot(cwd) : undefined;
|
|
548
|
+
return {
|
|
549
|
+
cwd,
|
|
550
|
+
source,
|
|
551
|
+
isGitRepo: isRepo,
|
|
552
|
+
gitRoot: gitRoot || undefined,
|
|
553
|
+
projectType: projectInfo.type,
|
|
554
|
+
projectName: projectInfo.name,
|
|
555
|
+
};
|
|
556
|
+
}
|
|
557
|
+
/**
|
|
558
|
+
* Validate that a path is a valid directory
|
|
559
|
+
*
|
|
560
|
+
* @description Checks if path exists and is a directory (not a file)
|
|
561
|
+
* @param {string} path - Path to validate
|
|
562
|
+
* @returns {Promise<boolean>} True if path is a valid directory
|
|
563
|
+
* @private
|
|
564
|
+
*/
|
|
565
|
+
async function validateDirectory(path) {
|
|
566
|
+
try {
|
|
567
|
+
const { stat } = await import('fs/promises');
|
|
568
|
+
const stats = await stat(path);
|
|
569
|
+
return stats.isDirectory();
|
|
570
|
+
}
|
|
571
|
+
catch {
|
|
572
|
+
return false;
|
|
573
|
+
}
|
|
574
|
+
}
|
|
575
|
+
/**
|
|
576
|
+
* Find project root by walking up the directory tree
|
|
577
|
+
*
|
|
578
|
+
* @description Walks up the directory tree from startDir looking for project markers
|
|
579
|
+
* or git repository root. Stops at filesystem root if nothing found.
|
|
580
|
+
* @param {string} startDir - Directory to start searching from
|
|
581
|
+
* @returns {Promise<string | null>} Project root path or null if not found
|
|
582
|
+
* @example
|
|
583
|
+
* ```typescript
|
|
584
|
+
* const root = await findProjectRoot('/path/to/project/src/deep/folder');
|
|
585
|
+
* // Returns: '/path/to/project' (where package.json exists)
|
|
586
|
+
* ```
|
|
587
|
+
*/
|
|
588
|
+
export async function findProjectRoot(startDir) {
|
|
589
|
+
let currentDir = startDir;
|
|
590
|
+
const root = dirname(currentDir);
|
|
591
|
+
while (currentDir !== root) {
|
|
592
|
+
// Check for project markers
|
|
593
|
+
const type = await detectProjectType(currentDir);
|
|
594
|
+
if (type !== 'unknown') {
|
|
595
|
+
return currentDir;
|
|
596
|
+
}
|
|
597
|
+
// Check for git root
|
|
598
|
+
if (await isGitRepo(currentDir)) {
|
|
599
|
+
return currentDir;
|
|
600
|
+
}
|
|
601
|
+
currentDir = dirname(currentDir);
|
|
602
|
+
}
|
|
603
|
+
return null;
|
|
604
|
+
}
|
|
605
|
+
/**
|
|
606
|
+
* Get package manager command for a project type
|
|
607
|
+
*
|
|
608
|
+
* @description Maps the detected package manager to its CLI command name.
|
|
609
|
+
* Handles special cases like bundler -> bundle, maven -> mvn.
|
|
610
|
+
* @param {ProjectInfo} projectInfo - Project information with packageManager field
|
|
611
|
+
* @returns {string | null} Package manager command or null if unknown
|
|
612
|
+
* @example
|
|
613
|
+
* ```typescript
|
|
614
|
+
* const cmd = getPackageManagerCommand({ type: 'node', packageManager: 'pnpm' });
|
|
615
|
+
* // Returns: 'pnpm'
|
|
616
|
+
*
|
|
617
|
+
* const cmd2 = getPackageManagerCommand({ type: 'ruby', packageManager: 'bundler' });
|
|
618
|
+
* // Returns: 'bundle'
|
|
619
|
+
* ```
|
|
620
|
+
*/
|
|
621
|
+
export function getPackageManagerCommand(projectInfo) {
|
|
622
|
+
switch (projectInfo.packageManager) {
|
|
623
|
+
case 'npm':
|
|
624
|
+
return 'npm';
|
|
625
|
+
case 'yarn':
|
|
626
|
+
return 'yarn';
|
|
627
|
+
case 'pnpm':
|
|
628
|
+
return 'pnpm';
|
|
629
|
+
case 'composer':
|
|
630
|
+
return 'composer';
|
|
631
|
+
case 'cargo':
|
|
632
|
+
return 'cargo';
|
|
633
|
+
case 'go':
|
|
634
|
+
return 'go';
|
|
635
|
+
case 'pip':
|
|
636
|
+
return 'pip';
|
|
637
|
+
case 'poetry':
|
|
638
|
+
return 'poetry';
|
|
639
|
+
case 'pipenv':
|
|
640
|
+
return 'pipenv';
|
|
641
|
+
case 'bundler':
|
|
642
|
+
return 'bundle';
|
|
643
|
+
case 'maven':
|
|
644
|
+
return 'mvn';
|
|
645
|
+
case 'gradle':
|
|
646
|
+
return 'gradle';
|
|
647
|
+
case 'dotnet':
|
|
648
|
+
return 'dotnet';
|
|
649
|
+
default:
|
|
650
|
+
return null;
|
|
651
|
+
}
|
|
652
|
+
}
|
|
653
|
+
/**
|
|
654
|
+
* Get test command for a project
|
|
655
|
+
*
|
|
656
|
+
* @description Returns the appropriate test command based on framework first,
|
|
657
|
+
* then falls back to package manager test command. Framework-specific
|
|
658
|
+
* commands take priority (e.g., 'php artisan test' for Laravel).
|
|
659
|
+
* @param {ProjectInfo} projectInfo - Project information with framework and packageManager
|
|
660
|
+
* @returns {string | null} Test command string or null if unknown
|
|
661
|
+
* @example
|
|
662
|
+
* ```typescript
|
|
663
|
+
* const cmd = getTestCommand({ type: 'php', framework: 'laravel' });
|
|
664
|
+
* // Returns: 'php artisan test'
|
|
665
|
+
*
|
|
666
|
+
* const cmd2 = getTestCommand({ type: 'node', packageManager: 'pnpm' });
|
|
667
|
+
* // Returns: 'pnpm test'
|
|
668
|
+
* ```
|
|
669
|
+
*/
|
|
670
|
+
export function getTestCommand(projectInfo) {
|
|
671
|
+
switch (projectInfo.framework) {
|
|
672
|
+
case 'laravel':
|
|
673
|
+
return 'php artisan test';
|
|
674
|
+
case 'symfony':
|
|
675
|
+
return 'php bin/phpunit';
|
|
676
|
+
case 'django':
|
|
677
|
+
return 'python manage.py test';
|
|
678
|
+
case 'flask':
|
|
679
|
+
return 'pytest';
|
|
680
|
+
case 'rails':
|
|
681
|
+
return 'bundle exec rspec';
|
|
682
|
+
case 'spring':
|
|
683
|
+
return projectInfo.packageManager === 'maven' ? 'mvn test' : 'gradle test';
|
|
684
|
+
default:
|
|
685
|
+
break;
|
|
686
|
+
}
|
|
687
|
+
switch (projectInfo.packageManager) {
|
|
688
|
+
case 'npm':
|
|
689
|
+
case 'yarn':
|
|
690
|
+
case 'pnpm':
|
|
691
|
+
return `${projectInfo.packageManager} test`;
|
|
692
|
+
case 'composer':
|
|
693
|
+
return 'composer test';
|
|
694
|
+
case 'cargo':
|
|
695
|
+
return 'cargo test';
|
|
696
|
+
case 'go':
|
|
697
|
+
return 'go test ./...';
|
|
698
|
+
case 'poetry':
|
|
699
|
+
return 'poetry run pytest';
|
|
700
|
+
case 'pip':
|
|
701
|
+
case 'pipenv':
|
|
702
|
+
return 'pytest';
|
|
703
|
+
case 'bundler':
|
|
704
|
+
return 'bundle exec rspec';
|
|
705
|
+
case 'maven':
|
|
706
|
+
return 'mvn test';
|
|
707
|
+
case 'gradle':
|
|
708
|
+
return 'gradle test';
|
|
709
|
+
case 'dotnet':
|
|
710
|
+
return 'dotnet test';
|
|
711
|
+
default:
|
|
712
|
+
return null;
|
|
713
|
+
}
|
|
714
|
+
}
|
|
715
|
+
//# sourceMappingURL=cwd-resolver.js.map
|