@triedotdev/mcp 1.0.99 → 1.0.102
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/README.md +21 -59
- package/dist/{chunk-DIZFGLXE.js → chunk-AE2XLMZC.js} +15 -75
- package/dist/chunk-AE2XLMZC.js.map +1 -0
- package/dist/{chunk-HSNE46VE.js → chunk-CCI6LKXZ.js} +1 -431
- package/dist/chunk-CCI6LKXZ.js.map +1 -0
- package/dist/{chunk-FNCCZ3XB.js → chunk-M4JCQO5G.js} +443 -19
- package/dist/chunk-M4JCQO5G.js.map +1 -0
- package/dist/cli/main.js +3 -3
- package/dist/cli/yolo-daemon.js +2 -2
- package/dist/index.js +11 -5
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/chunk-DIZFGLXE.js.map +0 -1
- package/dist/chunk-FNCCZ3XB.js.map +0 -1
- package/dist/chunk-HSNE46VE.js.map +0 -1
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
|
-
detectStack,
|
|
3
2
|
runExecFile
|
|
4
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-CCI6LKXZ.js";
|
|
5
4
|
import {
|
|
6
5
|
ContextGraph
|
|
7
6
|
} from "./chunk-NIASHOAB.js";
|
|
@@ -1969,10 +1968,434 @@ async function reasonAboutChangesHumanReadable(projectPath, files, options = {})
|
|
|
1969
1968
|
return humanizeReasoning(reasoning);
|
|
1970
1969
|
}
|
|
1971
1970
|
|
|
1972
|
-
// src/bootstrap/
|
|
1973
|
-
import { readFile as readFile5
|
|
1971
|
+
// src/bootstrap/stack-detector.ts
|
|
1972
|
+
import { readFile as readFile5 } from "fs/promises";
|
|
1974
1973
|
import { existsSync as existsSync7 } from "fs";
|
|
1975
1974
|
import { join as join6 } from "path";
|
|
1975
|
+
var SKILL_MAPPINGS = {
|
|
1976
|
+
// Frontend Frameworks - React/Next.js
|
|
1977
|
+
"next": [
|
|
1978
|
+
"vercel-labs/agent-skills vercel-react-best-practices",
|
|
1979
|
+
"vercel-labs/agent-skills web-design-guidelines",
|
|
1980
|
+
"anthropics/skills frontend-design",
|
|
1981
|
+
"wshobson/agents nextjs-app-router-patterns"
|
|
1982
|
+
],
|
|
1983
|
+
"react": [
|
|
1984
|
+
"vercel-labs/agent-skills vercel-react-best-practices",
|
|
1985
|
+
"anthropics/skills frontend-design",
|
|
1986
|
+
"wshobson/agents react-state-management"
|
|
1987
|
+
],
|
|
1988
|
+
// Vue/Nuxt Ecosystem
|
|
1989
|
+
"vue": [
|
|
1990
|
+
"hyf0/vue-skills vue-best-practices",
|
|
1991
|
+
"hyf0/vue-skills pinia-best-practices",
|
|
1992
|
+
"hyf0/vue-skills vueuse-best-practices",
|
|
1993
|
+
"onmax/nuxt-skills vue"
|
|
1994
|
+
],
|
|
1995
|
+
"nuxt": [
|
|
1996
|
+
"onmax/nuxt-skills nuxt",
|
|
1997
|
+
"onmax/nuxt-skills nuxt-ui",
|
|
1998
|
+
"onmax/nuxt-skills nuxt-content",
|
|
1999
|
+
"onmax/nuxt-skills nuxt-modules",
|
|
2000
|
+
"onmax/nuxt-skills nuxt-better-auth",
|
|
2001
|
+
"onmax/nuxt-skills nuxthub"
|
|
2002
|
+
],
|
|
2003
|
+
"pinia": [
|
|
2004
|
+
"hyf0/vue-skills pinia-best-practices"
|
|
2005
|
+
],
|
|
2006
|
+
"@vueuse/core": [
|
|
2007
|
+
"hyf0/vue-skills vueuse-best-practices",
|
|
2008
|
+
"onmax/nuxt-skills vueuse"
|
|
2009
|
+
],
|
|
2010
|
+
// Mobile - Expo
|
|
2011
|
+
"expo": [
|
|
2012
|
+
"expo/skills building-native-ui",
|
|
2013
|
+
"expo/skills upgrading-expo",
|
|
2014
|
+
"expo/skills native-data-fetching",
|
|
2015
|
+
"expo/skills expo-dev-client",
|
|
2016
|
+
"expo/skills expo-deployment",
|
|
2017
|
+
"expo/skills expo-api-routes",
|
|
2018
|
+
"expo/skills expo-tailwind-setup",
|
|
2019
|
+
"expo/skills expo-cicd-workflows",
|
|
2020
|
+
"expo/skills use-dom"
|
|
2021
|
+
],
|
|
2022
|
+
// Mobile - React Native
|
|
2023
|
+
"react-native": [
|
|
2024
|
+
"callstackincubator/agent-skills react-native-best-practices",
|
|
2025
|
+
"wshobson/agents react-native-architecture"
|
|
2026
|
+
],
|
|
2027
|
+
// Backend Frameworks
|
|
2028
|
+
"@nestjs/core": [
|
|
2029
|
+
"kadajett/agent-nestjs-skills nestjs-best-practices"
|
|
2030
|
+
],
|
|
2031
|
+
"nestjs": [
|
|
2032
|
+
"kadajett/agent-nestjs-skills nestjs-best-practices"
|
|
2033
|
+
],
|
|
2034
|
+
"elysia": [
|
|
2035
|
+
"elysiajs/skills elysiajs"
|
|
2036
|
+
],
|
|
2037
|
+
"hono": [
|
|
2038
|
+
"elysiajs/skills elysiajs"
|
|
2039
|
+
],
|
|
2040
|
+
// Database/BaaS
|
|
2041
|
+
"@supabase/supabase-js": [
|
|
2042
|
+
"supabase/agent-skills supabase-postgres-best-practices"
|
|
2043
|
+
],
|
|
2044
|
+
"convex": [
|
|
2045
|
+
"waynesutton/convexskills convex-best-practices"
|
|
2046
|
+
],
|
|
2047
|
+
"pg": [
|
|
2048
|
+
"wshobson/agents postgresql-table-design"
|
|
2049
|
+
],
|
|
2050
|
+
"postgres": [
|
|
2051
|
+
"wshobson/agents postgresql-table-design"
|
|
2052
|
+
],
|
|
2053
|
+
// Auth
|
|
2054
|
+
"better-auth": [
|
|
2055
|
+
"better-auth/skills better-auth-best-practices",
|
|
2056
|
+
"better-auth/skills create-auth-skill"
|
|
2057
|
+
],
|
|
2058
|
+
// Payments
|
|
2059
|
+
"stripe": [
|
|
2060
|
+
"stripe/ai stripe-best-practices"
|
|
2061
|
+
],
|
|
2062
|
+
"@stripe/stripe-js": [
|
|
2063
|
+
"stripe/ai stripe-best-practices"
|
|
2064
|
+
],
|
|
2065
|
+
// Media/Graphics
|
|
2066
|
+
"remotion": [
|
|
2067
|
+
"remotion-dev/skills remotion-best-practices"
|
|
2068
|
+
],
|
|
2069
|
+
"three": [
|
|
2070
|
+
"cloudai-x/threejs-skills threejs-fundamentals",
|
|
2071
|
+
"cloudai-x/threejs-skills threejs-animation",
|
|
2072
|
+
"cloudai-x/threejs-skills threejs-materials",
|
|
2073
|
+
"cloudai-x/threejs-skills threejs-shaders",
|
|
2074
|
+
"cloudai-x/threejs-skills threejs-lighting",
|
|
2075
|
+
"cloudai-x/threejs-skills threejs-geometry",
|
|
2076
|
+
"cloudai-x/threejs-skills threejs-textures",
|
|
2077
|
+
"cloudai-x/threejs-skills threejs-loaders",
|
|
2078
|
+
"cloudai-x/threejs-skills threejs-interaction",
|
|
2079
|
+
"cloudai-x/threejs-skills threejs-postprocessing"
|
|
2080
|
+
],
|
|
2081
|
+
// UI Libraries
|
|
2082
|
+
"tailwindcss": [
|
|
2083
|
+
"wshobson/agents tailwind-design-system",
|
|
2084
|
+
"jezweb/claude-skills tailwind-v4-shadcn",
|
|
2085
|
+
"wshobson/agents responsive-design"
|
|
2086
|
+
],
|
|
2087
|
+
"@shadcn/ui": [
|
|
2088
|
+
"giuseppe-trisciuoglio/developer-kit shadcn-ui"
|
|
2089
|
+
],
|
|
2090
|
+
"shadcn": [
|
|
2091
|
+
"giuseppe-trisciuoglio/developer-kit shadcn-ui"
|
|
2092
|
+
],
|
|
2093
|
+
"@radix-ui/react-slot": [
|
|
2094
|
+
"onmax/nuxt-skills reka-ui"
|
|
2095
|
+
],
|
|
2096
|
+
// State Management
|
|
2097
|
+
"@tanstack/react-query": [
|
|
2098
|
+
"jezweb/claude-skills tanstack-query"
|
|
2099
|
+
],
|
|
2100
|
+
// Testing
|
|
2101
|
+
"playwright": [
|
|
2102
|
+
"anthropics/skills webapp-testing",
|
|
2103
|
+
"wshobson/agents e2e-testing-patterns"
|
|
2104
|
+
],
|
|
2105
|
+
"puppeteer": [
|
|
2106
|
+
"anthropics/skills webapp-testing"
|
|
2107
|
+
],
|
|
2108
|
+
"vitest": [
|
|
2109
|
+
"wshobson/agents e2e-testing-patterns"
|
|
2110
|
+
],
|
|
2111
|
+
"jest": [
|
|
2112
|
+
"wshobson/agents e2e-testing-patterns"
|
|
2113
|
+
],
|
|
2114
|
+
// DevTools/MCP
|
|
2115
|
+
"@modelcontextprotocol/sdk": [
|
|
2116
|
+
"anthropics/skills mcp-builder"
|
|
2117
|
+
],
|
|
2118
|
+
// Security
|
|
2119
|
+
"semgrep": [
|
|
2120
|
+
"trailofbits/skills semgrep"
|
|
2121
|
+
],
|
|
2122
|
+
// Monorepos
|
|
2123
|
+
"turbo": [
|
|
2124
|
+
"wshobson/agents monorepo-management"
|
|
2125
|
+
],
|
|
2126
|
+
"nx": [
|
|
2127
|
+
"wshobson/agents monorepo-management"
|
|
2128
|
+
],
|
|
2129
|
+
"lerna": [
|
|
2130
|
+
"wshobson/agents monorepo-management"
|
|
2131
|
+
],
|
|
2132
|
+
// TypeScript (handled separately based on tsconfig.json)
|
|
2133
|
+
"typescript": [
|
|
2134
|
+
"wshobson/agents typescript-advanced-types"
|
|
2135
|
+
]
|
|
2136
|
+
};
|
|
2137
|
+
var SKILL_CATEGORIES = {
|
|
2138
|
+
documents: [
|
|
2139
|
+
"anthropics/skills pdf",
|
|
2140
|
+
"anthropics/skills xlsx",
|
|
2141
|
+
"anthropics/skills pptx",
|
|
2142
|
+
"anthropics/skills docx",
|
|
2143
|
+
"anthropics/skills doc-coauthoring"
|
|
2144
|
+
],
|
|
2145
|
+
design: [
|
|
2146
|
+
"anthropics/skills canvas-design",
|
|
2147
|
+
"anthropics/skills theme-factory",
|
|
2148
|
+
"anthropics/skills web-artifacts-builder",
|
|
2149
|
+
"anthropics/skills algorithmic-art",
|
|
2150
|
+
"anthropics/skills brand-guidelines",
|
|
2151
|
+
"anthropics/skills slack-gif-creator",
|
|
2152
|
+
"nextlevelbuilder/ui-ux-pro-max ui-ux-pro-max",
|
|
2153
|
+
"superdesigndev/superdesign-skill superdesign",
|
|
2154
|
+
"wshobson/agents design-system-patterns"
|
|
2155
|
+
],
|
|
2156
|
+
marketing: [
|
|
2157
|
+
"coreyhaines31/marketingskills seo-audit",
|
|
2158
|
+
"coreyhaines31/marketingskills copywriting",
|
|
2159
|
+
"coreyhaines31/marketingskills marketing-psychology",
|
|
2160
|
+
"coreyhaines31/marketingskills programmatic-seo",
|
|
2161
|
+
"coreyhaines31/marketingskills marketing-ideas",
|
|
2162
|
+
"coreyhaines31/marketingskills copy-editing",
|
|
2163
|
+
"coreyhaines31/marketingskills pricing-strategy",
|
|
2164
|
+
"coreyhaines31/marketingskills social-content",
|
|
2165
|
+
"coreyhaines31/marketingskills launch-strategy",
|
|
2166
|
+
"coreyhaines31/marketingskills page-cro",
|
|
2167
|
+
"coreyhaines31/marketingskills competitor-alternatives",
|
|
2168
|
+
"coreyhaines31/marketingskills analytics-tracking",
|
|
2169
|
+
"coreyhaines31/marketingskills schema-markup",
|
|
2170
|
+
"coreyhaines31/marketingskills onboarding-cro",
|
|
2171
|
+
"coreyhaines31/marketingskills email-sequence",
|
|
2172
|
+
"coreyhaines31/marketingskills paid-ads",
|
|
2173
|
+
"coreyhaines31/marketingskills signup-flow-cro",
|
|
2174
|
+
"coreyhaines31/marketingskills free-tool-strategy",
|
|
2175
|
+
"coreyhaines31/marketingskills form-cro",
|
|
2176
|
+
"coreyhaines31/marketingskills paywall-upgrade-cro",
|
|
2177
|
+
"coreyhaines31/marketingskills referral-program",
|
|
2178
|
+
"coreyhaines31/marketingskills popup-cro",
|
|
2179
|
+
"coreyhaines31/marketingskills ab-test-setup"
|
|
2180
|
+
],
|
|
2181
|
+
development: [
|
|
2182
|
+
"obra/superpowers brainstorming",
|
|
2183
|
+
"obra/superpowers test-driven-development",
|
|
2184
|
+
"obra/superpowers systematic-debugging",
|
|
2185
|
+
"obra/superpowers writing-plans",
|
|
2186
|
+
"obra/superpowers executing-plans",
|
|
2187
|
+
"obra/superpowers verification-before-completion",
|
|
2188
|
+
"obra/superpowers using-superpowers",
|
|
2189
|
+
"obra/superpowers subagent-driven-development",
|
|
2190
|
+
"obra/superpowers requesting-code-review",
|
|
2191
|
+
"obra/superpowers writing-skills",
|
|
2192
|
+
"obra/superpowers dispatching-parallel-agents",
|
|
2193
|
+
"obra/superpowers receiving-code-review",
|
|
2194
|
+
"obra/superpowers using-git-worktrees",
|
|
2195
|
+
"obra/superpowers finishing-a-development-branch",
|
|
2196
|
+
"wshobson/agents code-review-excellence",
|
|
2197
|
+
"wshobson/agents api-design-principles",
|
|
2198
|
+
"wshobson/agents architecture-patterns",
|
|
2199
|
+
"wshobson/agents error-handling-patterns",
|
|
2200
|
+
"wshobson/agents nodejs-backend-patterns",
|
|
2201
|
+
"wshobson/agents microservices-patterns",
|
|
2202
|
+
"wshobson/agents modern-javascript-patterns",
|
|
2203
|
+
"wshobson/agents web-component-design",
|
|
2204
|
+
"wshobson/agents async-python-patterns",
|
|
2205
|
+
"wshobson/agents python-testing-patterns",
|
|
2206
|
+
"boristane/agent-skills logging-best-practices"
|
|
2207
|
+
],
|
|
2208
|
+
productivity: [
|
|
2209
|
+
"softaworks/agent-toolkit daily-meeting-update",
|
|
2210
|
+
"softaworks/agent-toolkit agent-md-refactor",
|
|
2211
|
+
"softaworks/agent-toolkit session-handoff",
|
|
2212
|
+
"softaworks/agent-toolkit meme-factory",
|
|
2213
|
+
"softaworks/agent-toolkit qa-test-planner",
|
|
2214
|
+
"softaworks/agent-toolkit writing-clearly-and-concisely",
|
|
2215
|
+
"softaworks/agent-toolkit commit-work",
|
|
2216
|
+
"softaworks/agent-toolkit mermaid-diagrams",
|
|
2217
|
+
"softaworks/agent-toolkit dependency-updater",
|
|
2218
|
+
"softaworks/agent-toolkit crafting-effective-readmes",
|
|
2219
|
+
"softaworks/agent-toolkit reducing-entropy",
|
|
2220
|
+
"softaworks/agent-toolkit feedback-mastery",
|
|
2221
|
+
"softaworks/agent-toolkit marp-slide",
|
|
2222
|
+
"softaworks/agent-toolkit professional-communication",
|
|
2223
|
+
"softaworks/agent-toolkit difficult-workplace-conversations",
|
|
2224
|
+
"anthropics/skills internal-comms",
|
|
2225
|
+
"othmanadi/planning-with-files planning-with-files"
|
|
2226
|
+
],
|
|
2227
|
+
security: [
|
|
2228
|
+
"trailofbits/skills semgrep",
|
|
2229
|
+
"trailofbits/skills secure-workflow-guide",
|
|
2230
|
+
"trailofbits/skills codeql",
|
|
2231
|
+
"trailofbits/skills property-based-testing",
|
|
2232
|
+
"trailofbits/skills variant-analysis",
|
|
2233
|
+
"trailofbits/skills guidelines-advisor",
|
|
2234
|
+
"trailofbits/skills sharp-edges",
|
|
2235
|
+
"trailofbits/skills differential-review",
|
|
2236
|
+
"trailofbits/skills ask-questions-if-underspecified",
|
|
2237
|
+
"squirrelscan/skills audit-website"
|
|
2238
|
+
],
|
|
2239
|
+
mobile: [
|
|
2240
|
+
"wshobson/agents mobile-ios-design",
|
|
2241
|
+
"wshobson/agents mobile-android-design",
|
|
2242
|
+
"dimillian/skills swiftui-ui-patterns",
|
|
2243
|
+
"dimillian/skills swiftui-liquid-glass"
|
|
2244
|
+
],
|
|
2245
|
+
obsidian: [
|
|
2246
|
+
"kepano/obsidian-skills obsidian-markdown",
|
|
2247
|
+
"kepano/obsidian-skills obsidian-bases",
|
|
2248
|
+
"kepano/obsidian-skills json-canvas"
|
|
2249
|
+
],
|
|
2250
|
+
prompts: [
|
|
2251
|
+
"f/awesome-chatgpt-prompts skill-lookup",
|
|
2252
|
+
"f/awesome-chatgpt-prompts prompt-lookup",
|
|
2253
|
+
"wshobson/agents prompt-engineering-patterns"
|
|
2254
|
+
],
|
|
2255
|
+
browser: [
|
|
2256
|
+
"vercel-labs/agent-browser agent-browser"
|
|
2257
|
+
],
|
|
2258
|
+
content: [
|
|
2259
|
+
"op7418/humanizer-zh humanizer-zh",
|
|
2260
|
+
"blader/humanizer humanizer",
|
|
2261
|
+
"op7418/youtube-clipper-skill youtube-clipper",
|
|
2262
|
+
"jimliu/baoyu-skills baoyu-slide-deck",
|
|
2263
|
+
"jimliu/baoyu-skills baoyu-article-illustrator",
|
|
2264
|
+
"jimliu/baoyu-skills baoyu-cover-image",
|
|
2265
|
+
"jimliu/baoyu-skills baoyu-comic",
|
|
2266
|
+
"jimliu/baoyu-skills baoyu-infographic",
|
|
2267
|
+
"jimliu/baoyu-skills baoyu-image-gen"
|
|
2268
|
+
],
|
|
2269
|
+
integrations: [
|
|
2270
|
+
"intellectronica/agent-skills context7",
|
|
2271
|
+
"softaworks/agent-toolkit gemini",
|
|
2272
|
+
"softaworks/agent-toolkit codex"
|
|
2273
|
+
]
|
|
2274
|
+
};
|
|
2275
|
+
async function detectStack(projectDir) {
|
|
2276
|
+
const stack = {
|
|
2277
|
+
suggestedSkills: [],
|
|
2278
|
+
suggestedAgents: ["security", "bugs"],
|
|
2279
|
+
dependencies: /* @__PURE__ */ new Set()
|
|
2280
|
+
};
|
|
2281
|
+
if (existsSync7(join6(projectDir, "tsconfig.json"))) {
|
|
2282
|
+
stack.language = "TypeScript";
|
|
2283
|
+
stack.suggestedAgents.push("typecheck");
|
|
2284
|
+
stack.suggestedSkills.push("wshobson/agents typescript-advanced-types");
|
|
2285
|
+
} else if (existsSync7(join6(projectDir, "package.json"))) {
|
|
2286
|
+
stack.language = "JavaScript";
|
|
2287
|
+
} else if (existsSync7(join6(projectDir, "requirements.txt")) || existsSync7(join6(projectDir, "pyproject.toml"))) {
|
|
2288
|
+
stack.language = "Python";
|
|
2289
|
+
} else if (existsSync7(join6(projectDir, "go.mod"))) {
|
|
2290
|
+
stack.language = "Go";
|
|
2291
|
+
} else if (existsSync7(join6(projectDir, "Cargo.toml"))) {
|
|
2292
|
+
stack.language = "Rust";
|
|
2293
|
+
}
|
|
2294
|
+
if (existsSync7(join6(projectDir, "Package.swift")) || existsSync7(join6(projectDir, "project.pbxproj")) || existsSync7(join6(projectDir, "*.xcodeproj"))) {
|
|
2295
|
+
stack.language = "Swift";
|
|
2296
|
+
stack.suggestedSkills.push("dimillian/skills swiftui-ui-patterns");
|
|
2297
|
+
stack.suggestedSkills.push("dimillian/skills swiftui-liquid-glass");
|
|
2298
|
+
}
|
|
2299
|
+
if (existsSync7(join6(projectDir, "pnpm-lock.yaml"))) {
|
|
2300
|
+
stack.packageManager = "pnpm";
|
|
2301
|
+
} else if (existsSync7(join6(projectDir, "yarn.lock"))) {
|
|
2302
|
+
stack.packageManager = "yarn";
|
|
2303
|
+
} else if (existsSync7(join6(projectDir, "bun.lockb"))) {
|
|
2304
|
+
stack.packageManager = "bun";
|
|
2305
|
+
} else if (existsSync7(join6(projectDir, "package-lock.json"))) {
|
|
2306
|
+
stack.packageManager = "npm";
|
|
2307
|
+
}
|
|
2308
|
+
if (existsSync7(join6(projectDir, ".github", "workflows"))) {
|
|
2309
|
+
stack.suggestedSkills.push("wshobson/agents github-actions-templates");
|
|
2310
|
+
}
|
|
2311
|
+
try {
|
|
2312
|
+
const pkgPath = join6(projectDir, "package.json");
|
|
2313
|
+
if (existsSync7(pkgPath)) {
|
|
2314
|
+
const pkgContent = await readFile5(pkgPath, "utf-8");
|
|
2315
|
+
const pkg = JSON.parse(pkgContent);
|
|
2316
|
+
const deps = { ...pkg.dependencies, ...pkg.devDependencies };
|
|
2317
|
+
for (const dep of Object.keys(deps)) {
|
|
2318
|
+
stack.dependencies.add(dep);
|
|
2319
|
+
}
|
|
2320
|
+
for (const dep of Object.keys(deps)) {
|
|
2321
|
+
const skills = SKILL_MAPPINGS[dep];
|
|
2322
|
+
if (skills) {
|
|
2323
|
+
stack.suggestedSkills.push(...skills);
|
|
2324
|
+
}
|
|
2325
|
+
}
|
|
2326
|
+
if (deps["next"]) {
|
|
2327
|
+
stack.framework = `Next.js ${deps["next"].replace("^", "")}`;
|
|
2328
|
+
stack.suggestedAgents.push("accessibility", "design");
|
|
2329
|
+
} else if (deps["react"]) {
|
|
2330
|
+
stack.framework = `React ${deps["react"].replace("^", "")}`;
|
|
2331
|
+
stack.suggestedAgents.push("accessibility");
|
|
2332
|
+
} else if (deps["vue"]) {
|
|
2333
|
+
stack.framework = `Vue ${deps["vue"].replace("^", "")}`;
|
|
2334
|
+
} else if (deps["nuxt"]) {
|
|
2335
|
+
stack.framework = `Nuxt ${deps["nuxt"].replace("^", "")}`;
|
|
2336
|
+
} else if (deps["svelte"]) {
|
|
2337
|
+
stack.framework = "Svelte";
|
|
2338
|
+
} else if (deps["express"]) {
|
|
2339
|
+
stack.framework = "Express.js";
|
|
2340
|
+
} else if (deps["fastify"]) {
|
|
2341
|
+
stack.framework = "Fastify";
|
|
2342
|
+
} else if (deps["hono"]) {
|
|
2343
|
+
stack.framework = "Hono";
|
|
2344
|
+
} else if (deps["elysia"]) {
|
|
2345
|
+
stack.framework = "Elysia";
|
|
2346
|
+
} else if (deps["@nestjs/core"]) {
|
|
2347
|
+
stack.framework = "NestJS";
|
|
2348
|
+
}
|
|
2349
|
+
if (deps["next-auth"] || deps["@auth/core"]) {
|
|
2350
|
+
stack.auth = "NextAuth.js";
|
|
2351
|
+
} else if (deps["passport"]) {
|
|
2352
|
+
stack.auth = "Passport.js";
|
|
2353
|
+
} else if (deps["@clerk/nextjs"] || deps["@clerk/clerk-react"]) {
|
|
2354
|
+
stack.auth = "Clerk";
|
|
2355
|
+
} else if (deps["better-auth"]) {
|
|
2356
|
+
stack.auth = "Better Auth";
|
|
2357
|
+
}
|
|
2358
|
+
if (deps["prisma"] || deps["@prisma/client"]) {
|
|
2359
|
+
stack.database = "Prisma ORM";
|
|
2360
|
+
} else if (deps["drizzle-orm"]) {
|
|
2361
|
+
stack.database = "Drizzle ORM";
|
|
2362
|
+
} else if (deps["@supabase/supabase-js"]) {
|
|
2363
|
+
stack.database = "Supabase";
|
|
2364
|
+
} else if (deps["mongoose"]) {
|
|
2365
|
+
stack.database = "MongoDB (Mongoose)";
|
|
2366
|
+
} else if (deps["pg"]) {
|
|
2367
|
+
stack.database = "PostgreSQL";
|
|
2368
|
+
} else if (deps["convex"]) {
|
|
2369
|
+
stack.database = "Convex";
|
|
2370
|
+
}
|
|
2371
|
+
if (deps["stripe"] || deps["@stripe/stripe-js"]) {
|
|
2372
|
+
stack.suggestedAgents.push("moneybags");
|
|
2373
|
+
}
|
|
2374
|
+
}
|
|
2375
|
+
} catch {
|
|
2376
|
+
}
|
|
2377
|
+
if (!stack.database) {
|
|
2378
|
+
if (existsSync7(join6(projectDir, "prisma", "schema.prisma"))) {
|
|
2379
|
+
stack.database = "Prisma ORM";
|
|
2380
|
+
} else if (existsSync7(join6(projectDir, "drizzle.config.ts"))) {
|
|
2381
|
+
stack.database = "Drizzle ORM";
|
|
2382
|
+
}
|
|
2383
|
+
}
|
|
2384
|
+
stack.suggestedSkills = [...new Set(stack.suggestedSkills)];
|
|
2385
|
+
stack.suggestedAgents = [...new Set(stack.suggestedAgents)];
|
|
2386
|
+
return stack;
|
|
2387
|
+
}
|
|
2388
|
+
function getSkillCategories() {
|
|
2389
|
+
return Object.entries(SKILL_CATEGORIES).map(([name, skills]) => ({
|
|
2390
|
+
name,
|
|
2391
|
+
count: skills.length
|
|
2392
|
+
}));
|
|
2393
|
+
}
|
|
2394
|
+
|
|
2395
|
+
// src/bootstrap/files.ts
|
|
2396
|
+
import { readFile as readFile6, writeFile as writeFile5, unlink, mkdir as mkdir5 } from "fs/promises";
|
|
2397
|
+
import { existsSync as existsSync8 } from "fs";
|
|
2398
|
+
import { join as join7 } from "path";
|
|
1976
2399
|
var BOOTSTRAP_FILES = [
|
|
1977
2400
|
{ name: "PROJECT.md", type: "user", description: "Project overview and conventions" },
|
|
1978
2401
|
{ name: "RULES.md", type: "user", description: "Coding standards agents enforce" },
|
|
@@ -1987,15 +2410,15 @@ async function loadBootstrapContext(workDir) {
|
|
|
1987
2410
|
const contentParts = [];
|
|
1988
2411
|
let needsBootstrap2 = false;
|
|
1989
2412
|
for (const file of BOOTSTRAP_FILES) {
|
|
1990
|
-
const filePath =
|
|
1991
|
-
const exists =
|
|
2413
|
+
const filePath = join7(trieDir, file.name);
|
|
2414
|
+
const exists = existsSync8(filePath);
|
|
1992
2415
|
if (file.name === "BOOTSTRAP.md" && exists) {
|
|
1993
2416
|
needsBootstrap2 = true;
|
|
1994
2417
|
}
|
|
1995
2418
|
let content;
|
|
1996
2419
|
if (exists) {
|
|
1997
2420
|
try {
|
|
1998
|
-
content = await
|
|
2421
|
+
content = await readFile6(filePath, "utf-8");
|
|
1999
2422
|
if (content.trim() && file.type !== "one-time") {
|
|
2000
2423
|
contentParts.push(`<!-- ${file.name} -->
|
|
2001
2424
|
${content}`);
|
|
@@ -2026,8 +2449,8 @@ async function initializeBootstrapFiles(options = {}) {
|
|
|
2026
2449
|
const skipped = [];
|
|
2027
2450
|
const stack = await detectStack(projectDir);
|
|
2028
2451
|
for (const file of BOOTSTRAP_FILES) {
|
|
2029
|
-
const filePath =
|
|
2030
|
-
const exists =
|
|
2452
|
+
const filePath = join7(trieDir, file.name);
|
|
2453
|
+
const exists = existsSync8(filePath);
|
|
2031
2454
|
if (exists && !options.force) {
|
|
2032
2455
|
skipped.push(file.name);
|
|
2033
2456
|
continue;
|
|
@@ -2050,7 +2473,7 @@ async function initializeBootstrapFiles(options = {}) {
|
|
|
2050
2473
|
}
|
|
2051
2474
|
async function completeBootstrap(workDir) {
|
|
2052
2475
|
const projectDir = workDir || getWorkingDirectory(void 0, true);
|
|
2053
|
-
const bootstrapPath =
|
|
2476
|
+
const bootstrapPath = join7(getTrieDirectory(projectDir), "BOOTSTRAP.md");
|
|
2054
2477
|
try {
|
|
2055
2478
|
await unlink(bootstrapPath);
|
|
2056
2479
|
return true;
|
|
@@ -2060,15 +2483,15 @@ async function completeBootstrap(workDir) {
|
|
|
2060
2483
|
}
|
|
2061
2484
|
function needsBootstrap(workDir) {
|
|
2062
2485
|
const projectDir = workDir || getWorkingDirectory(void 0, true);
|
|
2063
|
-
const bootstrapPath =
|
|
2064
|
-
return
|
|
2486
|
+
const bootstrapPath = join7(getTrieDirectory(projectDir), "BOOTSTRAP.md");
|
|
2487
|
+
return existsSync8(bootstrapPath);
|
|
2065
2488
|
}
|
|
2066
2489
|
async function loadRules(workDir) {
|
|
2067
2490
|
const projectDir = workDir || getWorkingDirectory(void 0, true);
|
|
2068
|
-
const rulesPath =
|
|
2491
|
+
const rulesPath = join7(getTrieDirectory(projectDir), "RULES.md");
|
|
2069
2492
|
try {
|
|
2070
|
-
if (
|
|
2071
|
-
return await
|
|
2493
|
+
if (existsSync8(rulesPath)) {
|
|
2494
|
+
return await readFile6(rulesPath, "utf-8");
|
|
2072
2495
|
}
|
|
2073
2496
|
} catch {
|
|
2074
2497
|
}
|
|
@@ -2076,10 +2499,10 @@ async function loadRules(workDir) {
|
|
|
2076
2499
|
}
|
|
2077
2500
|
async function loadTeamInfo(workDir) {
|
|
2078
2501
|
const projectDir = workDir || getWorkingDirectory(void 0, true);
|
|
2079
|
-
const teamPath =
|
|
2502
|
+
const teamPath = join7(getTrieDirectory(projectDir), "TEAM.md");
|
|
2080
2503
|
try {
|
|
2081
|
-
if (
|
|
2082
|
-
return await
|
|
2504
|
+
if (existsSync8(teamPath)) {
|
|
2505
|
+
return await readFile6(teamPath, "utf-8");
|
|
2083
2506
|
}
|
|
2084
2507
|
} catch {
|
|
2085
2508
|
}
|
|
@@ -2820,6 +3243,7 @@ export {
|
|
|
2820
3243
|
getUncommittedChanges,
|
|
2821
3244
|
perceiveCurrentChanges,
|
|
2822
3245
|
reasonAboutChangesHumanReadable,
|
|
3246
|
+
getSkillCategories,
|
|
2823
3247
|
loadBootstrapContext,
|
|
2824
3248
|
initializeBootstrapFiles,
|
|
2825
3249
|
completeBootstrap,
|
|
@@ -2837,4 +3261,4 @@ export {
|
|
|
2837
3261
|
LearningEngine,
|
|
2838
3262
|
LinearIngester
|
|
2839
3263
|
};
|
|
2840
|
-
//# sourceMappingURL=chunk-
|
|
3264
|
+
//# sourceMappingURL=chunk-M4JCQO5G.js.map
|