luna-agents 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (290) hide show
  1. package/.claude-plugin/LICENSE +21 -0
  2. package/.claude-plugin/README.md +285 -0
  3. package/.claude-plugin/claude-plugin.json +106 -0
  4. package/.claude-plugin/index.js +318 -0
  5. package/.claude-plugin/lib/api-client.js +504 -0
  6. package/.claude-plugin/lib/rag-utils.js +442 -0
  7. package/.claude-plugin/package.json +418 -0
  8. package/LICENSE +21 -0
  9. package/README.md +350 -0
  10. package/agents/json/design-architect.json +57 -0
  11. package/agents/json/luna-auth.json +71 -0
  12. package/agents/json/luna-brand.json +66 -0
  13. package/agents/json/luna-cloudflare.json +261 -0
  14. package/agents/json/luna-code-review.json +63 -0
  15. package/agents/json/luna-deployment.json +68 -0
  16. package/agents/json/luna-documentation.json +85 -0
  17. package/agents/json/luna-hig.json +128 -0
  18. package/agents/json/luna-layout-designer.json +178 -0
  19. package/agents/json/luna-monitoring-observability.json +64 -0
  20. package/agents/json/luna-post-launch-review.json +68 -0
  21. package/agents/json/luna-requirements-analyzer.json +53 -0
  22. package/agents/json/luna-task-executor.json +63 -0
  23. package/agents/json/luna-task-planner.json +62 -0
  24. package/agents/json/luna-testing-validation.json +66 -0
  25. package/agents/luna-365-security.md +96 -0
  26. package/agents/luna-analytics.md +318 -0
  27. package/agents/luna-api-generator.md +654 -0
  28. package/agents/luna-auth.md +396 -0
  29. package/agents/luna-brand.md +248 -0
  30. package/agents/luna-cloudflare.md +728 -0
  31. package/agents/luna-code-review.md +487 -0
  32. package/agents/luna-database.md +453 -0
  33. package/agents/luna-deployment.md +202 -0
  34. package/agents/luna-design-architect.md +353 -0
  35. package/agents/luna-docker.md +615 -0
  36. package/agents/luna-documentation.md +177 -0
  37. package/agents/luna-full-test.md +910 -0
  38. package/agents/luna-glm-vision.md +211 -0
  39. package/agents/luna-hig.md +430 -0
  40. package/agents/luna-lemonsqueezy.md +441 -0
  41. package/agents/luna-monitoring-observability.md +199 -0
  42. package/agents/luna-openai-app.md +499 -0
  43. package/agents/luna-post-launch-review.md +191 -0
  44. package/agents/luna-rag-enhanced.md +1619 -0
  45. package/agents/luna-rag.md +1733 -0
  46. package/agents/luna-requirements-analyzer.md +189 -0
  47. package/agents/luna-run.md +620 -0
  48. package/agents/luna-seo.md +338 -0
  49. package/agents/luna-task-executor.md +371 -0
  50. package/agents/luna-task-planner.md +275 -0
  51. package/agents/luna-testing-validation.md +681 -0
  52. package/agents/luna-ui-fix.md +591 -0
  53. package/agents/luna-ui-test.md +600 -0
  54. package/agents/luna-user-guide.md +409 -0
  55. package/agents/site-auditor.md +83 -0
  56. package/commands/3d-mesh.md +12 -0
  57. package/commands/3d.md +12 -0
  58. package/commands/agent-boost.md +13 -0
  59. package/commands/ai-index.md +16 -0
  60. package/commands/api.md +12 -0
  61. package/commands/assert.md +17 -0
  62. package/commands/audience.md +12 -0
  63. package/commands/auth.md +17 -0
  64. package/commands/autopilot.md +12 -0
  65. package/commands/boost-finsavvy.md +10 -0
  66. package/commands/boost-org.md +10 -0
  67. package/commands/boost-project.md +12 -0
  68. package/commands/brand.md +17 -0
  69. package/commands/browser-test.md +18 -0
  70. package/commands/cf.md +26 -0
  71. package/commands/cfg.md +33 -0
  72. package/commands/chain.md +12 -0
  73. package/commands/challenge.md +13 -0
  74. package/commands/clone.md +12 -0
  75. package/commands/cmds.md +243 -0
  76. package/commands/collab.md +12 -0
  77. package/commands/compete.md +12 -0
  78. package/commands/config-rules.md +21 -0
  79. package/commands/connect-infra.md +10 -0
  80. package/commands/context-pack.md +13 -0
  81. package/commands/curb.md +12 -0
  82. package/commands/des.md +38 -0
  83. package/commands/devto.md +20 -0
  84. package/commands/dock.md +26 -0
  85. package/commands/docs.md +33 -0
  86. package/commands/e2e-flow.md +18 -0
  87. package/commands/email-routing.md +10 -0
  88. package/commands/feature.md +12 -0
  89. package/commands/figma.md +12 -0
  90. package/commands/fix.md +12 -0
  91. package/commands/flaky.md +12 -0
  92. package/commands/flow-record.md +12 -0
  93. package/commands/gamify.md +12 -0
  94. package/commands/ghost.md +12 -0
  95. package/commands/git-insights.md +12 -0
  96. package/commands/go-viral.md +16 -0
  97. package/commands/go.md +42 -0
  98. package/commands/graph-rag.md +13 -0
  99. package/commands/guard.md +12 -0
  100. package/commands/heal.md +17 -0
  101. package/commands/heygen.md +12 -0
  102. package/commands/hig.md +33 -0
  103. package/commands/idea.md +12 -0
  104. package/commands/imagine.md +12 -0
  105. package/commands/inbox.md +12 -0
  106. package/commands/lam.md +12 -0
  107. package/commands/landing.md +12 -0
  108. package/commands/launch.md +12 -0
  109. package/commands/learn.md +12 -0
  110. package/commands/leverage.md +12 -0
  111. package/commands/ll-365-secure.md +179 -0
  112. package/commands/ll-3d-mesh.md +94 -0
  113. package/commands/ll-3d.md +123 -0
  114. package/commands/ll-a11y-scan.md +143 -0
  115. package/commands/ll-a11y.md +71 -0
  116. package/commands/ll-agent-boost.md +92 -0
  117. package/commands/ll-agent-chain.md +104 -0
  118. package/commands/ll-ai-index.md +120 -0
  119. package/commands/ll-api-client.md +77 -0
  120. package/commands/ll-api.md +99 -0
  121. package/commands/ll-assert.md +73 -0
  122. package/commands/ll-audience.md +308 -0
  123. package/commands/ll-auth.md +145 -0
  124. package/commands/ll-autopilot.md +113 -0
  125. package/commands/ll-boost-finsavvy.md +106 -0
  126. package/commands/ll-boost-org.md +161 -0
  127. package/commands/ll-boost-project.md +118 -0
  128. package/commands/ll-brand.md +150 -0
  129. package/commands/ll-browser-test.md +203 -0
  130. package/commands/ll-challenge.md +124 -0
  131. package/commands/ll-changelog.md +80 -0
  132. package/commands/ll-ci.md +78 -0
  133. package/commands/ll-claude-instructions.md +80 -0
  134. package/commands/ll-clone.md +82 -0
  135. package/commands/ll-cloudflare.md +580 -0
  136. package/commands/ll-codemap.md +78 -0
  137. package/commands/ll-collab.md +87 -0
  138. package/commands/ll-compete.md +67 -0
  139. package/commands/ll-config-rules.md +255 -0
  140. package/commands/ll-config.md +434 -0
  141. package/commands/ll-connect-infra.md +123 -0
  142. package/commands/ll-context-pack.md +100 -0
  143. package/commands/ll-curb.md +164 -0
  144. package/commands/ll-debug.md +76 -0
  145. package/commands/ll-deploy.md +101 -0
  146. package/commands/ll-deps.md +70 -0
  147. package/commands/ll-design.md +86 -0
  148. package/commands/ll-devto-publish.md +172 -0
  149. package/commands/ll-dockerize.md +273 -0
  150. package/commands/ll-docs.md +123 -0
  151. package/commands/ll-e2e-flow.md +132 -0
  152. package/commands/ll-e2e-test.md +231 -0
  153. package/commands/ll-email-routing.md +130 -0
  154. package/commands/ll-env.md +70 -0
  155. package/commands/ll-execute.md +98 -0
  156. package/commands/ll-feature.md +80 -0
  157. package/commands/ll-figma.md +82 -0
  158. package/commands/ll-fix.md +76 -0
  159. package/commands/ll-flaky.md +151 -0
  160. package/commands/ll-flow-record.md +180 -0
  161. package/commands/ll-flowdocs.md +83 -0
  162. package/commands/ll-gamify.md +131 -0
  163. package/commands/ll-gemma4.md +84 -0
  164. package/commands/ll-ghost.md +79 -0
  165. package/commands/ll-git-insights.md +152 -0
  166. package/commands/ll-go-viral.md +171 -0
  167. package/commands/ll-graph-rag.md +113 -0
  168. package/commands/ll-guard.md +92 -0
  169. package/commands/ll-heal.md +135 -0
  170. package/commands/ll-heygen.md +203 -0
  171. package/commands/ll-hig.md +578 -0
  172. package/commands/ll-hld.md +84 -0
  173. package/commands/ll-i18n.md +74 -0
  174. package/commands/ll-idea.md +101 -0
  175. package/commands/ll-imagine.md +72 -0
  176. package/commands/ll-inbox.md +116 -0
  177. package/commands/ll-lam.md +93 -0
  178. package/commands/ll-landing.md +171 -0
  179. package/commands/ll-launch.md +100 -0
  180. package/commands/ll-learn.md +87 -0
  181. package/commands/ll-leverage.md +137 -0
  182. package/commands/ll-local-llm.md +131 -0
  183. package/commands/ll-ls-products.md +160 -0
  184. package/commands/ll-marketplace.md +130 -0
  185. package/commands/ll-mcp-publish.md +104 -0
  186. package/commands/ll-migrate.md +68 -0
  187. package/commands/ll-mock.md +79 -0
  188. package/commands/ll-money.md +87 -0
  189. package/commands/ll-monitor.md +120 -0
  190. package/commands/ll-morph.md +117 -0
  191. package/commands/ll-multi-agent.md +170 -0
  192. package/commands/ll-native.md +93 -0
  193. package/commands/ll-nexa.md +79 -0
  194. package/commands/ll-onboarding.md +84 -0
  195. package/commands/ll-openhands.md +78 -0
  196. package/commands/ll-organic-promote.md +260 -0
  197. package/commands/ll-parallel.md +74 -0
  198. package/commands/ll-payments.md +83 -0
  199. package/commands/ll-perf-trace.md +147 -0
  200. package/commands/ll-perf.md +65 -0
  201. package/commands/ll-persona.md +280 -0
  202. package/commands/ll-pipe.md +296 -0
  203. package/commands/ll-plan-impl.js +570 -0
  204. package/commands/ll-plan-v2.md +297 -0
  205. package/commands/ll-plan.md +87 -0
  206. package/commands/ll-postlaunch.md +109 -0
  207. package/commands/ll-pr.md +84 -0
  208. package/commands/ll-present.md +110 -0
  209. package/commands/ll-product-map.md +152 -0
  210. package/commands/ll-promote.md +352 -0
  211. package/commands/ll-publish.md +124 -0
  212. package/commands/ll-pulse.md +96 -0
  213. package/commands/ll-rag-guided.md +345 -0
  214. package/commands/ll-rag-upgrade.md +504 -0
  215. package/commands/ll-rag.md +343 -0
  216. package/commands/ll-record.md +114 -0
  217. package/commands/ll-refactor.md +71 -0
  218. package/commands/ll-requirements.md +71 -0
  219. package/commands/ll-review.md +92 -0
  220. package/commands/ll-rollback.md +66 -0
  221. package/commands/ll-routemap.md +79 -0
  222. package/commands/ll-rules.md +90 -0
  223. package/commands/ll-shortcuts.md +229 -0
  224. package/commands/ll-sing.md +99 -0
  225. package/commands/ll-site-audit.md +228 -0
  226. package/commands/ll-smart-route.md +92 -0
  227. package/commands/ll-smart-search.md +58 -0
  228. package/commands/ll-storybook.md +86 -0
  229. package/commands/ll-swarm.md +101 -0
  230. package/commands/ll-test.md +97 -0
  231. package/commands/ll-time-machine.md +72 -0
  232. package/commands/ll-ui-convert.md +433 -0
  233. package/commands/ll-video.md +108 -0
  234. package/commands/ll-vision-pipeline.md +247 -0
  235. package/commands/ll-vision.md +74 -0
  236. package/commands/ll-visual-diff.md +118 -0
  237. package/commands/ll-visual-qa.md +204 -0
  238. package/commands/ll-visual-regression.md +96 -0
  239. package/commands/ll-voice.md +138 -0
  240. package/commands/ll-watch.md +65 -0
  241. package/commands/ll-workflow.md +108 -0
  242. package/commands/ll-zen.md +98 -0
  243. package/commands/local-llm.md +12 -0
  244. package/commands/marketplace.md +13 -0
  245. package/commands/mcp-publish.md +16 -0
  246. package/commands/migrate.md +12 -0
  247. package/commands/money.md +12 -0
  248. package/commands/morph.md +12 -0
  249. package/commands/multi-agent.md +12 -0
  250. package/commands/native.md +12 -0
  251. package/commands/nexa.md +12 -0
  252. package/commands/oh.md +12 -0
  253. package/commands/organic-promote.md +16 -0
  254. package/commands/perf-trace.md +12 -0
  255. package/commands/perf.md +12 -0
  256. package/commands/persona.md +12 -0
  257. package/commands/pipe.md +21 -0
  258. package/commands/plan.md +38 -0
  259. package/commands/pr.md +12 -0
  260. package/commands/present.md +12 -0
  261. package/commands/product-map.md +13 -0
  262. package/commands/promote.md +16 -0
  263. package/commands/publish.md +12 -0
  264. package/commands/pulse.md +12 -0
  265. package/commands/q.md +35 -0
  266. package/commands/record.md +12 -0
  267. package/commands/refactor.md +12 -0
  268. package/commands/req.md +40 -0
  269. package/commands/retro.md +33 -0
  270. package/commands/rev.md +39 -0
  271. package/commands/rules.md +19 -0
  272. package/commands/search.md +12 -0
  273. package/commands/sec.md +34 -0
  274. package/commands/ship.md +39 -0
  275. package/commands/sing.md +12 -0
  276. package/commands/site-audit.md +12 -0
  277. package/commands/smart-route.md +13 -0
  278. package/commands/swarm.md +12 -0
  279. package/commands/test.md +39 -0
  280. package/commands/time-machine.md +12 -0
  281. package/commands/ui.md +33 -0
  282. package/commands/video.md +12 -0
  283. package/commands/vision.md +12 -0
  284. package/commands/voice.md +12 -0
  285. package/commands/vr.md +18 -0
  286. package/commands/watch.md +39 -0
  287. package/commands/workflow.md +19 -0
  288. package/commands/zen.md +12 -0
  289. package/package.json +76 -0
  290. package/setup.sh +382 -0
@@ -0,0 +1,318 @@
1
+ /**
2
+ * Luna Agents Plugin Entry Point
3
+ *
4
+ * This plugin provides comprehensive AI-powered development lifecycle management
5
+ * with backend API integration for enhanced capabilities.
6
+ */
7
+
8
+ const LunaAPIClient = require('./lib/api-client');
9
+ const RAGUtils = require('./lib/rag-utils');
10
+ const path = require('path');
11
+ const fs = require('fs');
12
+
13
+ class LunaAgentsPlugin {
14
+ constructor() {
15
+ this.apiClient = new LunaAPIClient();
16
+ this.ragUtils = null; // Will be initialized after API client
17
+ this.config = {};
18
+ this.initialized = false;
19
+ }
20
+
21
+ /**
22
+ * Initialize the plugin
23
+ */
24
+ async initialize(config = {}) {
25
+ try {
26
+ console.log('šŸŒ™ Luna Agents v2.1.0 plugin initializing...');
27
+ console.log('šŸ”— Connecting to Claude Agent Platform API...');
28
+
29
+ // Load configuration
30
+ this.config = this.loadConfiguration(config);
31
+
32
+ // Initialize API client
33
+ await this.apiClient.initialize(this.config.api);
34
+
35
+ // Initialize RAG utilities
36
+ this.ragUtils = new RAGUtils(this.apiClient);
37
+
38
+ // Setup plugin capabilities
39
+ this.setupCapabilities();
40
+
41
+ this.initialized = true;
42
+
43
+ console.log('āœ… Luna Agents plugin initialized successfully');
44
+ console.log(`šŸ  Active project: ${this.apiClient.projectId}`);
45
+ console.log('šŸš€ Ready for AI-powered development lifecycle management');
46
+
47
+ // Show status
48
+ await this.showStatus();
49
+
50
+ return true;
51
+ } catch (error) {
52
+ console.error('āŒ Failed to initialize Luna Agents plugin:', error.message);
53
+
54
+ // Fallback to offline mode
55
+ console.log('šŸ”„ Falling back to offline mode...');
56
+ return this.initializeOfflineMode();
57
+ }
58
+ }
59
+
60
+ /**
61
+ * Load plugin configuration
62
+ */
63
+ loadConfiguration(userConfig = {}) {
64
+ const defaultConfig = {
65
+ api: {
66
+ baseURL: process.env.LUNA_API_URL || 'http://localhost:3000/api/v1',
67
+ timeout: 30000,
68
+ retries: 3
69
+ },
70
+ features: {
71
+ enableAPI: true,
72
+ enableOfflineMode: true,
73
+ enableCaching: true,
74
+ autoDetectProject: true
75
+ },
76
+ auth: {
77
+ autoLogin: true,
78
+ storeCredentials: true
79
+ }
80
+ };
81
+
82
+ // Load from config file if exists
83
+ const configPath = path.join(process.cwd(), '.luna-config.json');
84
+ let fileConfig = {};
85
+
86
+ if (fs.existsSync(configPath)) {
87
+ try {
88
+ fileConfig = JSON.parse(fs.readFileSync(configPath, 'utf8'));
89
+ } catch (error) {
90
+ console.warn('āš ļø Could not load .luna-config.json:', error.message);
91
+ }
92
+ }
93
+
94
+ return this.mergeConfigs(defaultConfig, fileConfig, userConfig);
95
+ }
96
+
97
+ /**
98
+ * Merge configuration objects
99
+ */
100
+ mergeConfigs(...configs) {
101
+ return configs.reduce((merged, config) => {
102
+ return this.deepMerge(merged, config);
103
+ }, {});
104
+ }
105
+
106
+ deepMerge(target, source) {
107
+ const result = { ...target };
108
+
109
+ for (const key in source) {
110
+ if (source[key] && typeof source[key] === 'object' && !Array.isArray(source[key])) {
111
+ result[key] = this.deepMerge(result[key] || {}, source[key]);
112
+ } else {
113
+ result[key] = source[key];
114
+ }
115
+ }
116
+
117
+ return result;
118
+ }
119
+
120
+ /**
121
+ * Setup plugin capabilities
122
+ */
123
+ setupCapabilities() {
124
+ // API-based capabilities
125
+ this.capabilities = {
126
+ // Authentication
127
+ login: this.apiClient.login.bind(this.apiClient),
128
+ register: this.apiClient.register.bind(this.apiClient),
129
+
130
+ // Project management
131
+ createProject: this.apiClient.createProject.bind(this.apiClient),
132
+ getProjects: this.apiClient.getProjects.bind(this.apiClient),
133
+
134
+ // Agent management
135
+ getAgents: this.apiClient.getAgents.bind(this.apiClient),
136
+ startAgent: this.apiClient.startAgent.bind(this.apiClient),
137
+ stopAgent: this.apiClient.stopAgent.bind(this.apiClient),
138
+
139
+ // Task management
140
+ createTask: this.apiClient.createTask.bind(this.apiClient),
141
+ getTasks: this.apiClient.getTasks.bind(this.apiClient),
142
+
143
+ // Enhanced RAG and context management
144
+ indexProject: this.apiClient.indexProject.bind(this.apiClient),
145
+ indexRepository: this.apiClient.indexRepository.bind(this.apiClient),
146
+ indexFile: this.apiClient.indexFile.bind(this.apiClient),
147
+ queryRAG: this.apiClient.queryRAG.bind(this.apiClient),
148
+ searchDocuments: this.apiClient.searchDocuments.bind(this.apiClient),
149
+ getRAGStatus: this.apiClient.getRAGStatus.bind(this.apiClient),
150
+ getRAGStatistics: this.apiClient.getRAGStatistics.bind(this.apiClient),
151
+ deleteDocuments: this.apiClient.deleteDocuments.bind(this.apiClient),
152
+ getConversationHistory: this.apiClient.getConversationHistory.bind(this.apiClient),
153
+ clearConversationHistory: this.apiClient.clearConversationHistory.bind(this.apiClient),
154
+ getTokenUsage: this.apiClient.getTokenUsage.bind(this.apiClient),
155
+
156
+ // Enhanced RAG utilities
157
+ indexCurrentProject: this.ragUtils ? this.ragUtils.indexCurrentProject.bind(this.ragUtils) : null,
158
+ interactiveIndexing: this.ragUtils ? this.ragUtils.interactiveIndexing.bind(this.ragUtils) : null,
159
+ searchWithEnhancement: this.ragUtils ? this.ragUtils.searchWithEnhancement.bind(this.ragUtils) : null,
160
+ getSystemStatus: this.ragUtils ? this.ragUtils.getSystemStatus.bind(this.ragUtils) : null,
161
+ contextualQuery: this.ragUtils ? this.ragUtils.contextualQuery.bind(this.ragUtils) : null,
162
+
163
+ // AI generation
164
+ generateText: this.apiClient.generateText.bind(this.apiClient),
165
+ analyzeCode: this.apiClient.analyzeCode.bind(this.apiClient),
166
+
167
+ // Status and health
168
+ getStatus: this.apiClient.getStatus.bind(this.apiClient)
169
+ };
170
+ }
171
+
172
+ /**
173
+ * Initialize offline mode
174
+ */
175
+ initializeOfflineMode() {
176
+ console.log('šŸ“± Luna Agents running in offline mode');
177
+ console.log('šŸ“š Local skills reference available');
178
+
179
+ this.capabilities = {
180
+ // Limited offline capabilities
181
+ getLocalInfo: () => ({ mode: 'offline', skills: 'available' }),
182
+ checkLocalEnvironment: this.checkLocalEnvironment.bind(this)
183
+ };
184
+
185
+ this.initialized = true;
186
+ return true;
187
+ }
188
+
189
+ /**
190
+ * Show current status
191
+ */
192
+ async showStatus() {
193
+ try {
194
+ const status = await this.capabilities.getStatus();
195
+
196
+ console.log('\nšŸ“Š Luna Platform Status:');
197
+ console.log('==================');
198
+ console.log(`šŸ”— API Status: ${status.connected ? 'āœ… Connected' : 'āŒ Disconnected'}`);
199
+ console.log(`šŸ¤– Agents Available: ${status.agentsAvailable ? 'āœ… Yes' : 'āŒ No'}`);
200
+ console.log(`⚔ Tasks Active: ${status.tasksActive ? 'āœ… Yes' : 'āŒ No'}`);
201
+ console.log(`šŸ  Project: ${status.project || 'Not detected'}`);
202
+
203
+ if (status.error) {
204
+ console.log(`āš ļø Warning: ${status.error}`);
205
+ }
206
+
207
+ console.log('==================\n');
208
+ } catch (error) {
209
+ console.log('ā„¹ļø Status check failed, continuing...');
210
+ }
211
+ }
212
+
213
+ /**
214
+ * Check local environment
215
+ */
216
+ checkLocalEnvironment() {
217
+ const packagePath = path.join(process.cwd(), 'package.json');
218
+ const hasPackageJson = fs.existsSync(packagePath);
219
+
220
+ return {
221
+ hasProject: hasPackageJson,
222
+ projectType: hasPackageJson ? this.detectProjectType(packagePath) : 'unknown',
223
+ nodeVersion: process.version,
224
+ platform: process.platform,
225
+ workingDirectory: process.cwd()
226
+ };
227
+ }
228
+
229
+ /**
230
+ * Detect project type from package.json
231
+ */
232
+ detectProjectType(packagePath) {
233
+ try {
234
+ const packageJson = JSON.parse(fs.readFileSync(packagePath, 'utf8'));
235
+ const dependencies = { ...packageJson.dependencies, ...packageJson.devDependencies };
236
+
237
+ if (dependencies.react || dependencies['react-dom']) return 'react';
238
+ if (dependencies.vue) return 'vue';
239
+ if (dependencies.angular) return 'angular';
240
+ if (dependencies.express) return 'express';
241
+ if (dependencies.next) return 'next';
242
+ if (dependencies.gatsby) return 'gatsby';
243
+ if (dependencies.electron) return 'electron';
244
+
245
+ return 'unknown';
246
+ } catch (error) {
247
+ return 'unknown';
248
+ }
249
+ }
250
+
251
+ /**
252
+ * Plugin cleanup
253
+ */
254
+ async cleanup() {
255
+ try {
256
+ if (this.initialized && this.capabilities) {
257
+ // Clear API client cache if available
258
+ if (this.apiClient.clearCache) {
259
+ this.apiClient.clearCache();
260
+ }
261
+ }
262
+
263
+ console.log('šŸŒ™ Luna Agents plugin cleaned up');
264
+ } catch (error) {
265
+ console.error('āš ļø Error during cleanup:', error.message);
266
+ }
267
+ }
268
+
269
+ /**
270
+ * Get plugin capabilities
271
+ */
272
+ getCapabilities() {
273
+ return this.capabilities || {};
274
+ }
275
+
276
+ /**
277
+ * Check if plugin is initialized
278
+ */
279
+ isInitialized() {
280
+ return this.initialized;
281
+ }
282
+ }
283
+
284
+ // Create and export plugin instance
285
+ const plugin = new LunaAgentsPlugin();
286
+
287
+ // Export the plugin interface for Claude
288
+ module.exports = {
289
+ name: 'luna-agents',
290
+ version: '2.1.0',
291
+ description: 'šŸŒ™ Complete AI-powered development lifecycle management with API integration - From requirements to post-launch monitoring',
292
+
293
+ // Initialize plugin
294
+ initialize: async function(config) {
295
+ return await plugin.initialize(config);
296
+ },
297
+
298
+ // Cleanup plugin
299
+ cleanup: async function() {
300
+ return await plugin.cleanup();
301
+ },
302
+
303
+ // Get capabilities
304
+ getCapabilities: function() {
305
+ return plugin.getCapabilities();
306
+ },
307
+
308
+ // Check initialization status
309
+ isInitialized: function() {
310
+ return plugin.isInitialized();
311
+ },
312
+
313
+ // Direct access to API client for advanced usage
314
+ api: plugin.apiClient,
315
+
316
+ // Plugin configuration
317
+ config: plugin.config
318
+ };