specweave 0.3.13 → 0.4.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.
- package/CLAUDE.md +506 -17
- package/README.md +100 -58
- package/bin/install-all.sh +9 -2
- package/bin/install-hooks.sh +57 -0
- package/bin/specweave.js +16 -0
- package/dist/adapters/adapter-base.d.ts +21 -0
- package/dist/adapters/adapter-base.d.ts.map +1 -1
- package/dist/adapters/adapter-base.js +28 -0
- package/dist/adapters/adapter-base.js.map +1 -1
- package/dist/adapters/adapter-interface.d.ts +41 -0
- package/dist/adapters/adapter-interface.d.ts.map +1 -1
- package/dist/adapters/claude/adapter.d.ts +36 -0
- package/dist/adapters/claude/adapter.d.ts.map +1 -1
- package/dist/adapters/claude/adapter.js +135 -0
- package/dist/adapters/claude/adapter.js.map +1 -1
- package/dist/adapters/copilot/adapter.d.ts +25 -0
- package/dist/adapters/copilot/adapter.d.ts.map +1 -1
- package/dist/adapters/copilot/adapter.js +112 -0
- package/dist/adapters/copilot/adapter.js.map +1 -1
- package/dist/adapters/cursor/adapter.d.ts +36 -0
- package/dist/adapters/cursor/adapter.d.ts.map +1 -1
- package/dist/adapters/cursor/adapter.js +140 -0
- package/dist/adapters/cursor/adapter.js.map +1 -1
- package/dist/adapters/generic/adapter.d.ts +25 -0
- package/dist/adapters/generic/adapter.d.ts.map +1 -1
- package/dist/adapters/generic/adapter.js +111 -0
- package/dist/adapters/generic/adapter.js.map +1 -1
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +103 -1
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/plugin.d.ts +37 -0
- package/dist/cli/commands/plugin.d.ts.map +1 -0
- package/dist/cli/commands/plugin.js +296 -0
- package/dist/cli/commands/plugin.js.map +1 -0
- package/dist/core/agent-model-manager.d.ts +52 -0
- package/dist/core/agent-model-manager.d.ts.map +1 -0
- package/dist/core/agent-model-manager.js +120 -0
- package/dist/core/agent-model-manager.js.map +1 -0
- package/dist/core/cost-tracker.d.ts +108 -0
- package/dist/core/cost-tracker.d.ts.map +1 -0
- package/dist/core/cost-tracker.js +281 -0
- package/dist/core/cost-tracker.js.map +1 -0
- package/dist/core/model-selector.d.ts +57 -0
- package/dist/core/model-selector.d.ts.map +1 -0
- package/dist/core/model-selector.js +115 -0
- package/dist/core/model-selector.js.map +1 -0
- package/dist/core/phase-detector.d.ts +62 -0
- package/dist/core/phase-detector.d.ts.map +1 -0
- package/dist/core/phase-detector.js +229 -0
- package/dist/core/phase-detector.js.map +1 -0
- package/dist/core/plugin-detector.d.ts +96 -0
- package/dist/core/plugin-detector.d.ts.map +1 -0
- package/dist/core/plugin-detector.js +349 -0
- package/dist/core/plugin-detector.js.map +1 -0
- package/dist/core/plugin-loader.d.ts +111 -0
- package/dist/core/plugin-loader.d.ts.map +1 -0
- package/dist/core/plugin-loader.js +319 -0
- package/dist/core/plugin-loader.js.map +1 -0
- package/dist/core/plugin-manager.d.ts +144 -0
- package/dist/core/plugin-manager.d.ts.map +1 -0
- package/dist/core/plugin-manager.js +393 -0
- package/dist/core/plugin-manager.js.map +1 -0
- package/dist/core/schemas/plugin-manifest.schema.json +253 -0
- package/dist/core/types/plugin.d.ts +252 -0
- package/dist/core/types/plugin.d.ts.map +1 -0
- package/dist/core/types/plugin.js +48 -0
- package/dist/core/types/plugin.js.map +1 -0
- package/dist/integrations/jira/jira-mapper.d.ts +2 -2
- package/dist/integrations/jira/jira-mapper.js +2 -2
- package/dist/types/cost-tracking.d.ts +43 -0
- package/dist/types/cost-tracking.d.ts.map +1 -0
- package/dist/types/cost-tracking.js +8 -0
- package/dist/types/cost-tracking.js.map +1 -0
- package/dist/types/model-selection.d.ts +53 -0
- package/dist/types/model-selection.d.ts.map +1 -0
- package/dist/types/model-selection.js +12 -0
- package/dist/types/model-selection.js.map +1 -0
- package/dist/utils/cost-reporter.d.ts +58 -0
- package/dist/utils/cost-reporter.d.ts.map +1 -0
- package/dist/utils/cost-reporter.js +224 -0
- package/dist/utils/cost-reporter.js.map +1 -0
- package/dist/utils/pricing-constants.d.ts +70 -0
- package/dist/utils/pricing-constants.d.ts.map +1 -0
- package/dist/utils/pricing-constants.js +71 -0
- package/dist/utils/pricing-constants.js.map +1 -0
- package/package.json +13 -9
- package/src/adapters/adapter-base.ts +33 -0
- package/src/adapters/adapter-interface.ts +46 -0
- package/src/adapters/claude/adapter.ts +164 -0
- package/src/adapters/copilot/adapter.ts +138 -0
- package/src/adapters/cursor/adapter.ts +170 -0
- package/src/adapters/generic/adapter.ts +137 -0
- package/src/agents/architect/AGENT.md +3 -0
- package/src/agents/code-reviewer.md +156 -0
- package/src/agents/data-scientist/AGENT.md +181 -0
- package/src/agents/database-optimizer/AGENT.md +147 -0
- package/src/agents/devops/AGENT.md +3 -0
- package/src/agents/diagrams-architect/AGENT.md +3 -0
- package/src/agents/docs-writer/AGENT.md +3 -0
- package/src/agents/kubernetes-architect/AGENT.md +142 -0
- package/src/agents/ml-engineer/AGENT.md +150 -0
- package/src/agents/mlops-engineer/AGENT.md +201 -0
- package/src/agents/network-engineer/AGENT.md +149 -0
- package/src/agents/observability-engineer/AGENT.md +213 -0
- package/src/agents/payment-integration/AGENT.md +35 -0
- package/src/agents/performance/AGENT.md +3 -0
- package/src/agents/performance-engineer/AGENT.md +153 -0
- package/src/agents/pm/AGENT.md +3 -0
- package/src/agents/qa-lead/AGENT.md +3 -0
- package/src/agents/security/AGENT.md +3 -0
- package/src/agents/sre/AGENT.md +3 -0
- package/src/agents/tdd-orchestrator/AGENT.md +169 -0
- package/src/agents/tech-lead/AGENT.md +3 -0
- package/src/commands/specweave.costs.md +261 -0
- package/src/commands/specweave.increment.md +48 -4
- package/src/commands/specweave.ml-pipeline.md +292 -0
- package/src/commands/specweave.monitor-setup.md +501 -0
- package/src/commands/specweave.slo-implement.md +1055 -0
- package/src/commands/specweave.sync-github.md +1 -1
- package/src/commands/specweave.tdd-cycle.md +199 -0
- package/src/commands/specweave.tdd-green.md +842 -0
- package/src/commands/specweave.tdd-red.md +135 -0
- package/src/commands/specweave.tdd-refactor.md +165 -0
- package/src/hooks/post-increment-plugin-detect.sh +142 -0
- package/src/hooks/post-task-completion.sh +53 -11
- package/src/hooks/pre-task-plugin-detect.sh +96 -0
- package/src/skills/SKILLS-INDEX.md +18 -10
- package/src/skills/billing-automation/SKILL.md +559 -0
- package/src/skills/distributed-tracing/SKILL.md +438 -0
- package/src/skills/e2e-playwright/README.md +1 -1
- package/src/skills/e2e-playwright/package.json +1 -1
- package/src/skills/gitops-workflow/SKILL.md +285 -0
- package/src/skills/gitops-workflow/references/argocd-setup.md +134 -0
- package/src/skills/gitops-workflow/references/sync-policies.md +131 -0
- package/src/skills/grafana-dashboards/SKILL.md +369 -0
- package/src/skills/helm-chart-scaffolding/SKILL.md +544 -0
- package/src/skills/helm-chart-scaffolding/assets/Chart.yaml.template +42 -0
- package/src/skills/helm-chart-scaffolding/assets/values.yaml.template +185 -0
- package/src/skills/helm-chart-scaffolding/references/chart-structure.md +500 -0
- package/src/skills/helm-chart-scaffolding/scripts/validate-chart.sh +244 -0
- package/src/skills/k8s-manifest-generator/SKILL.md +511 -0
- package/src/skills/k8s-manifest-generator/assets/configmap-template.yaml +296 -0
- package/src/skills/k8s-manifest-generator/assets/deployment-template.yaml +203 -0
- package/src/skills/k8s-manifest-generator/assets/service-template.yaml +171 -0
- package/src/skills/k8s-manifest-generator/references/deployment-spec.md +753 -0
- package/src/skills/k8s-manifest-generator/references/service-spec.md +724 -0
- package/src/skills/k8s-security-policies/SKILL.md +334 -0
- package/src/skills/k8s-security-policies/assets/network-policy-template.yaml +177 -0
- package/src/skills/k8s-security-policies/references/rbac-patterns.md +187 -0
- package/src/skills/ml-pipeline-workflow/SKILL.md +245 -0
- package/src/skills/paypal-integration/SKILL.md +467 -0
- package/src/skills/pci-compliance/SKILL.md +466 -0
- package/src/skills/prometheus-configuration/SKILL.md +392 -0
- package/src/skills/slo-implementation/SKILL.md +329 -0
- package/src/skills/stripe-integration/SKILL.md +442 -0
- package/src/skills/tdd-workflow/SKILL.md +378 -0
- package/src/templates/README.md.template +1 -1
- package/src/skills/bmad-method-expert/SKILL.md +0 -626
- package/src/skills/bmad-method-expert/scripts/analyze-project.js +0 -318
- package/src/skills/bmad-method-expert/scripts/check-setup.js +0 -208
- package/src/skills/bmad-method-expert/scripts/generate-template.js +0 -1149
- package/src/skills/bmad-method-expert/scripts/validate-documents.js +0 -340
- package/src/skills/context-optimizer/SKILL.md +0 -588
- package/src/skills/figma-designer/SKILL.md +0 -149
- package/src/skills/figma-implementer/SKILL.md +0 -148
- package/src/skills/figma-mcp-connector/SKILL.md +0 -136
- package/src/skills/figma-to-code/SKILL.md +0 -128
- package/src/skills/spec-kit-expert/SKILL.md +0 -1010
|
@@ -143,5 +143,140 @@ You're ready to build with SpecWeave on Claude Code!
|
|
|
143
143
|
For complete documentation, see: .claude/README.md
|
|
144
144
|
`;
|
|
145
145
|
}
|
|
146
|
+
/**
|
|
147
|
+
* Check if Claude adapter supports plugins
|
|
148
|
+
*
|
|
149
|
+
* Claude Code has FULL plugin support via native .claude/ directory
|
|
150
|
+
*
|
|
151
|
+
* @returns boolean Always true
|
|
152
|
+
*/
|
|
153
|
+
supportsPlugins() {
|
|
154
|
+
return true;
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Compile and install a plugin for Claude Code
|
|
158
|
+
*
|
|
159
|
+
* Claude uses native plugin installation:
|
|
160
|
+
* - Copy skills to .claude/skills/{plugin-name}/{skill-name}/
|
|
161
|
+
* - Copy agents to .claude/agents/{plugin-name}/{agent-name}/
|
|
162
|
+
* - Copy commands to .claude/commands/
|
|
163
|
+
*
|
|
164
|
+
* @param plugin Plugin to install
|
|
165
|
+
*/
|
|
166
|
+
async compilePlugin(plugin) {
|
|
167
|
+
const projectPath = process.cwd();
|
|
168
|
+
const claudeDir = path.join(projectPath, '.claude');
|
|
169
|
+
console.log(`\n📦 Installing plugin: ${plugin.manifest.name}`);
|
|
170
|
+
// Ensure base directories exist
|
|
171
|
+
await fs.ensureDir(path.join(claudeDir, 'skills'));
|
|
172
|
+
await fs.ensureDir(path.join(claudeDir, 'agents'));
|
|
173
|
+
await fs.ensureDir(path.join(claudeDir, 'commands'));
|
|
174
|
+
// Install skills
|
|
175
|
+
for (const skill of plugin.skills) {
|
|
176
|
+
const targetPath = path.join(claudeDir, 'skills', skill.name);
|
|
177
|
+
await fs.ensureDir(targetPath);
|
|
178
|
+
// Copy SKILL.md
|
|
179
|
+
const skillMdPath = path.join(skill.path, 'SKILL.md');
|
|
180
|
+
if (await fs.pathExists(skillMdPath)) {
|
|
181
|
+
await fs.copy(skillMdPath, path.join(targetPath, 'SKILL.md'));
|
|
182
|
+
}
|
|
183
|
+
// Copy test cases if they exist
|
|
184
|
+
const testCasesDir = path.join(skill.path, 'test-cases');
|
|
185
|
+
if (await fs.pathExists(testCasesDir)) {
|
|
186
|
+
await fs.copy(testCasesDir, path.join(targetPath, 'test-cases'));
|
|
187
|
+
}
|
|
188
|
+
console.log(` ✓ Skill: ${skill.name}`);
|
|
189
|
+
}
|
|
190
|
+
// Install agents
|
|
191
|
+
for (const agent of plugin.agents) {
|
|
192
|
+
const targetPath = path.join(claudeDir, 'agents', agent.name);
|
|
193
|
+
await fs.ensureDir(targetPath);
|
|
194
|
+
// Copy AGENT.md
|
|
195
|
+
const agentMdPath = path.join(agent.path, 'AGENT.md');
|
|
196
|
+
if (await fs.pathExists(agentMdPath)) {
|
|
197
|
+
await fs.copy(agentMdPath, path.join(targetPath, 'AGENT.md'));
|
|
198
|
+
}
|
|
199
|
+
console.log(` ✓ Agent: ${agent.name}`);
|
|
200
|
+
}
|
|
201
|
+
// Install commands
|
|
202
|
+
for (const command of plugin.commands) {
|
|
203
|
+
// Commands use their full name as filename
|
|
204
|
+
const fileName = command.name.replace(/\./g, '-') + '.md';
|
|
205
|
+
const targetPath = path.join(claudeDir, 'commands', fileName);
|
|
206
|
+
if (await fs.pathExists(command.path)) {
|
|
207
|
+
await fs.copy(command.path, targetPath);
|
|
208
|
+
}
|
|
209
|
+
console.log(` ✓ Command: /${command.name}`);
|
|
210
|
+
}
|
|
211
|
+
console.log(`\n✅ Plugin ${plugin.manifest.name} installed!`);
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Unload a plugin from Claude Code
|
|
215
|
+
*
|
|
216
|
+
* Removes plugin files from .claude/ directory
|
|
217
|
+
*
|
|
218
|
+
* @param pluginName Name of plugin to unload
|
|
219
|
+
*/
|
|
220
|
+
async unloadPlugin(pluginName) {
|
|
221
|
+
const projectPath = process.cwd();
|
|
222
|
+
const claudeDir = path.join(projectPath, '.claude');
|
|
223
|
+
console.log(`\n🗑️ Unloading plugin: ${pluginName}`);
|
|
224
|
+
// Read plugin manifest to know what to remove
|
|
225
|
+
const pluginsDir = path.join(projectPath, 'src', 'plugins');
|
|
226
|
+
const pluginPath = path.join(pluginsDir, pluginName);
|
|
227
|
+
if (!(await fs.pathExists(pluginPath))) {
|
|
228
|
+
console.warn(`⚠️ Plugin ${pluginName} not found`);
|
|
229
|
+
return;
|
|
230
|
+
}
|
|
231
|
+
// Load plugin to get its components
|
|
232
|
+
const { PluginLoader } = await import('../../core/plugin-loader.js');
|
|
233
|
+
const loader = new PluginLoader();
|
|
234
|
+
const plugin = await loader.loadFromDirectory(pluginPath);
|
|
235
|
+
// Remove skills
|
|
236
|
+
for (const skill of plugin.skills) {
|
|
237
|
+
const skillPath = path.join(claudeDir, 'skills', skill.name);
|
|
238
|
+
if (await fs.pathExists(skillPath)) {
|
|
239
|
+
await fs.remove(skillPath);
|
|
240
|
+
console.log(` ✓ Removed skill: ${skill.name}`);
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
// Remove agents
|
|
244
|
+
for (const agent of plugin.agents) {
|
|
245
|
+
const agentPath = path.join(claudeDir, 'agents', agent.name);
|
|
246
|
+
if (await fs.pathExists(agentPath)) {
|
|
247
|
+
await fs.remove(agentPath);
|
|
248
|
+
console.log(` ✓ Removed agent: ${agent.name}`);
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
// Remove commands
|
|
252
|
+
for (const command of plugin.commands) {
|
|
253
|
+
const fileName = command.name.replace(/\./g, '-') + '.md';
|
|
254
|
+
const commandPath = path.join(claudeDir, 'commands', fileName);
|
|
255
|
+
if (await fs.pathExists(commandPath)) {
|
|
256
|
+
await fs.remove(commandPath);
|
|
257
|
+
console.log(` ✓ Removed command: /${command.name}`);
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
console.log(`\n✅ Plugin ${pluginName} unloaded!`);
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Get list of installed plugins
|
|
264
|
+
*
|
|
265
|
+
* Returns plugin names that are currently installed in .claude/
|
|
266
|
+
*
|
|
267
|
+
* @returns Array of installed plugin names
|
|
268
|
+
*/
|
|
269
|
+
async getInstalledPlugins() {
|
|
270
|
+
const projectPath = process.cwd();
|
|
271
|
+
const configPath = path.join(projectPath, '.specweave', 'config.yaml');
|
|
272
|
+
if (!(await fs.pathExists(configPath))) {
|
|
273
|
+
return [];
|
|
274
|
+
}
|
|
275
|
+
// Read config to get enabled plugins
|
|
276
|
+
const yaml = await import('js-yaml');
|
|
277
|
+
const content = await fs.readFile(configPath, 'utf-8');
|
|
278
|
+
const config = yaml.load(content);
|
|
279
|
+
return config.plugins?.enabled || [];
|
|
280
|
+
}
|
|
146
281
|
}
|
|
147
282
|
//# sourceMappingURL=adapter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../src/adapters/claude/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../src/adapters/claude/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAIjD,MAAM,OAAO,aAAc,SAAQ,WAAW;IAA9C;;QACE,SAAI,GAAG,QAAQ,CAAC;QAChB,gBAAW,GAAG,sFAAsF,CAAC;QACrG,oBAAe,GAAG,MAAe,CAAC;IA6SpC,CAAC;IA3SC;;;;;;OAMG;IACH,KAAK,CAAC,MAAM;QACV,6BAA6B;QAC7B,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAExD,2DAA2D;QAC3D,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAEtD,OAAO,YAAY,IAAI,YAAY,CAAC;IACtC,CAAC;IAED;;;;;;;;OAQG;IACH,QAAQ;QACN,OAAO;YACL;gBACE,UAAU,EAAE,WAAW;gBACvB,UAAU,EAAE,mBAAmB;gBAC/B,WAAW,EAAE,8BAA8B;aAC5C;YACD,sEAAsE;YACtE,qDAAqD;SACtD,CAAC;IACJ,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,OAAO,CAAC,OAAuB;QACnC,OAAO,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC;QAEvE,kCAAkC;QAClC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QAC5D,MAAM,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAE9B,wBAAwB;QACxB,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;QACnD,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;QACnD,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;QACrD,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;QAElD,cAAc;QACd,MAAM,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAE7B,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;QAC5D,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;QAC5D,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;QAC7D,OAAO,CAAC,GAAG,CAAC,iEAAiE,CAAC,CAAC;IACjF,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,OAAuB;QACvC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACH,eAAe;QACb,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAmDN,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACH,eAAe;QACb,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,aAAa,CAAC,MAAc;QAChC,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAClC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QAEpD,OAAO,CAAC,GAAG,CAAC,2BAA2B,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;QAE/D,gCAAgC;QAChC,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;QACnD,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;QACnD,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;QAErD,iBAAiB;QACjB,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAC9D,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YAE/B,gBAAgB;YAChB,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YACtD,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;gBACrC,MAAM,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;YAChE,CAAC;YAED,gCAAgC;YAChC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;YACzD,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;gBACtC,MAAM,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC,CAAC;YACnE,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QAC3C,CAAC;QAED,iBAAiB;QACjB,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAC9D,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YAE/B,gBAAgB;YAChB,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YACtD,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;gBACrC,MAAM,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;YAChE,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QAC3C,CAAC;QAED,mBAAmB;QACnB,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACtC,2CAA2C;YAC3C,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;YAC1D,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;YAE9D,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBACtC,MAAM,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YAC1C,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,kBAAkB,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAChD,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,cAAc,MAAM,CAAC,QAAQ,CAAC,IAAI,aAAa,CAAC,CAAC;IAC/D,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,YAAY,CAAC,UAAkB;QACnC,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAClC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QAEpD,OAAO,CAAC,GAAG,CAAC,4BAA4B,UAAU,EAAE,CAAC,CAAC;QAEtD,8CAA8C;QAC9C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;QAC5D,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAErD,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;YACvC,OAAO,CAAC,IAAI,CAAC,cAAc,UAAU,YAAY,CAAC,CAAC;YACnD,OAAO;QACT,CAAC;QAED,oCAAoC;QACpC,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,6BAA6B,CAAC,CAAC;QACrE,MAAM,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;QAE1D,gBAAgB;QAChB,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAC7D,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBACnC,MAAM,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBAC3B,OAAO,CAAC,GAAG,CAAC,uBAAuB,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;QAED,gBAAgB;QAChB,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAC7D,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBACnC,MAAM,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBAC3B,OAAO,CAAC,GAAG,CAAC,uBAAuB,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;QAED,kBAAkB;QAClB,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACtC,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;YAC1D,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;YAC/D,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;gBACrC,MAAM,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;gBAC7B,OAAO,CAAC,GAAG,CAAC,0BAA0B,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;YACxD,CAAC;QACH,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,cAAc,UAAU,YAAY,CAAC,CAAC;IACpD,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,mBAAmB;QACvB,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAClC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC;QAEvE,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;YACvC,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,qCAAqC;QACrC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;QACrC,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACvD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAQ,CAAC;QAEzC,OAAO,MAAM,CAAC,OAAO,EAAE,OAAO,IAAI,EAAE,CAAC;IACvC,CAAC;CACF"}
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
*/
|
|
9
9
|
import { AdapterBase } from '../adapter-base.js';
|
|
10
10
|
import { AdapterOptions, AdapterFile } from '../adapter-interface.js';
|
|
11
|
+
import type { Plugin } from '../../core/types/plugin.js';
|
|
11
12
|
export declare class CopilotAdapter extends AdapterBase {
|
|
12
13
|
name: string;
|
|
13
14
|
description: string;
|
|
@@ -39,5 +40,29 @@ export declare class CopilotAdapter extends AdapterBase {
|
|
|
39
40
|
* Get usage instructions for Copilot adapter
|
|
40
41
|
*/
|
|
41
42
|
getInstructions(): string;
|
|
43
|
+
/**
|
|
44
|
+
* Check if Copilot adapter supports plugins
|
|
45
|
+
*
|
|
46
|
+
* Copilot has plugin support via AGENTS.md compilation (same as Cursor)
|
|
47
|
+
*
|
|
48
|
+
* @returns boolean True for Copilot
|
|
49
|
+
*/
|
|
50
|
+
supportsPlugins(): boolean;
|
|
51
|
+
/**
|
|
52
|
+
* Compile and install a plugin for Copilot
|
|
53
|
+
*
|
|
54
|
+
* Copilot uses AGENTS.md compilation (same as Cursor)
|
|
55
|
+
*
|
|
56
|
+
* @param plugin Plugin to install
|
|
57
|
+
*/
|
|
58
|
+
compilePlugin(plugin: Plugin): Promise<void>;
|
|
59
|
+
/**
|
|
60
|
+
* Unload a plugin from Copilot
|
|
61
|
+
*/
|
|
62
|
+
unloadPlugin(pluginName: string): Promise<void>;
|
|
63
|
+
/**
|
|
64
|
+
* Get list of installed plugins for Copilot
|
|
65
|
+
*/
|
|
66
|
+
getInstalledPlugins(): Promise<string[]>;
|
|
42
67
|
}
|
|
43
68
|
//# sourceMappingURL=adapter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/adapters/copilot/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/adapters/copilot/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAEzD,qBAAa,cAAe,SAAQ,WAAW;IAC7C,IAAI,SAAa;IACjB,WAAW,SAA8D;IACzE,eAAe,EAAG,OAAO,CAAU;IAEnC;;;;;;OAMG;IACG,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAMhC;;;;;OAKG;IACH,QAAQ,IAAI,WAAW,EAAE;IAIzB;;OAEG;IACG,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAOrD;;OAEG;IACG,WAAW,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzD;;OAEG;IACH,eAAe,IAAI,MAAM;IAuHzB;;;;;;OAMG;IACH,eAAe,IAAI,OAAO;IAI1B;;;;;;OAMG;IACG,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA0DlD;;OAEG;IACG,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmCrD;;OAEG;IACG,mBAAmB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;CAmB/C"}
|
|
@@ -6,6 +6,8 @@
|
|
|
6
6
|
*
|
|
7
7
|
* This adapter requires no additional files - Copilot reads AGENTS.md automatically.
|
|
8
8
|
*/
|
|
9
|
+
import * as path from 'path';
|
|
10
|
+
import fs from 'fs-extra';
|
|
9
11
|
import { AdapterBase } from '../adapter-base.js';
|
|
10
12
|
export class CopilotAdapter extends AdapterBase {
|
|
11
13
|
constructor() {
|
|
@@ -170,5 +172,115 @@ Note: For better automation, consider Claude Code (full) or Cursor (semi).
|
|
|
170
172
|
Copilot is best for simple projects or when already using VS Code + Copilot.
|
|
171
173
|
`;
|
|
172
174
|
}
|
|
175
|
+
/**
|
|
176
|
+
* Check if Copilot adapter supports plugins
|
|
177
|
+
*
|
|
178
|
+
* Copilot has plugin support via AGENTS.md compilation (same as Cursor)
|
|
179
|
+
*
|
|
180
|
+
* @returns boolean True for Copilot
|
|
181
|
+
*/
|
|
182
|
+
supportsPlugins() {
|
|
183
|
+
return true;
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Compile and install a plugin for Copilot
|
|
187
|
+
*
|
|
188
|
+
* Copilot uses AGENTS.md compilation (same as Cursor)
|
|
189
|
+
*
|
|
190
|
+
* @param plugin Plugin to install
|
|
191
|
+
*/
|
|
192
|
+
async compilePlugin(plugin) {
|
|
193
|
+
const projectPath = process.cwd();
|
|
194
|
+
const agentsMdPath = path.join(projectPath, 'AGENTS.md');
|
|
195
|
+
console.log(`\n📦 Compiling plugin for Copilot: ${plugin.manifest.name}`);
|
|
196
|
+
if (!(await fs.pathExists(agentsMdPath))) {
|
|
197
|
+
throw new Error('AGENTS.md not found. Run specweave init first.');
|
|
198
|
+
}
|
|
199
|
+
let agentsMd = await fs.readFile(agentsMdPath, 'utf-8');
|
|
200
|
+
const pluginMarker = `<!-- Plugin: ${plugin.manifest.name} -->`;
|
|
201
|
+
if (agentsMd.includes(pluginMarker)) {
|
|
202
|
+
console.log(` ℹ️ Plugin ${plugin.manifest.name} already compiled to AGENTS.md`);
|
|
203
|
+
return;
|
|
204
|
+
}
|
|
205
|
+
let pluginSection = `\n\n${pluginMarker}\n\n`;
|
|
206
|
+
pluginSection += `# Plugin: ${plugin.manifest.name}\n\n`;
|
|
207
|
+
pluginSection += `${plugin.manifest.description}\n\n`;
|
|
208
|
+
if (plugin.skills.length > 0) {
|
|
209
|
+
pluginSection += `## Skills\n\n`;
|
|
210
|
+
for (const skill of plugin.skills) {
|
|
211
|
+
const skillContent = await fs.readFile(path.join(skill.path, 'SKILL.md'), 'utf-8');
|
|
212
|
+
const contentWithoutFrontmatter = skillContent.replace(/^---\n[\s\S]+?\n---\n/, '');
|
|
213
|
+
pluginSection += `### ${skill.name}\n\n${contentWithoutFrontmatter}\n\n`;
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
if (plugin.agents.length > 0) {
|
|
217
|
+
pluginSection += `## Agents\n\n`;
|
|
218
|
+
for (const agent of plugin.agents) {
|
|
219
|
+
const agentContent = await fs.readFile(path.join(agent.path, 'AGENT.md'), 'utf-8');
|
|
220
|
+
pluginSection += `### ${agent.name}\n\n${agentContent}\n\n`;
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
if (plugin.commands.length > 0) {
|
|
224
|
+
pluginSection += `## Commands\n\n`;
|
|
225
|
+
for (const command of plugin.commands) {
|
|
226
|
+
const commandContent = await fs.readFile(command.path, 'utf-8');
|
|
227
|
+
const contentWithoutFrontmatter = commandContent.replace(/^---\n[\s\S]+?\n---\n/, '');
|
|
228
|
+
pluginSection += `### /${command.name}\n\n${contentWithoutFrontmatter}\n\n`;
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
pluginSection += `<!-- End Plugin: ${plugin.manifest.name} -->\n`;
|
|
232
|
+
agentsMd += pluginSection;
|
|
233
|
+
await fs.writeFile(agentsMdPath, agentsMd, 'utf-8');
|
|
234
|
+
console.log(` ✓ Compiled to AGENTS.md`);
|
|
235
|
+
console.log(` ✓ ${plugin.skills.length} skills, ${plugin.agents.length} agents, ${plugin.commands.length} commands`);
|
|
236
|
+
console.log(`\n✅ Plugin ${plugin.manifest.name} compiled for Copilot!`);
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Unload a plugin from Copilot
|
|
240
|
+
*/
|
|
241
|
+
async unloadPlugin(pluginName) {
|
|
242
|
+
const projectPath = process.cwd();
|
|
243
|
+
const agentsMdPath = path.join(projectPath, 'AGENTS.md');
|
|
244
|
+
console.log(`\n🗑️ Unloading plugin from Copilot: ${pluginName}`);
|
|
245
|
+
if (!(await fs.pathExists(agentsMdPath))) {
|
|
246
|
+
console.warn(`⚠️ AGENTS.md not found`);
|
|
247
|
+
return;
|
|
248
|
+
}
|
|
249
|
+
let agentsMd = await fs.readFile(agentsMdPath, 'utf-8');
|
|
250
|
+
const startMarker = `<!-- Plugin: ${pluginName} -->`;
|
|
251
|
+
const endMarker = `<!-- End Plugin: ${pluginName} -->`;
|
|
252
|
+
const startIndex = agentsMd.indexOf(startMarker);
|
|
253
|
+
if (startIndex === -1) {
|
|
254
|
+
console.warn(`⚠️ Plugin ${pluginName} not found in AGENTS.md`);
|
|
255
|
+
return;
|
|
256
|
+
}
|
|
257
|
+
const endIndex = agentsMd.indexOf(endMarker, startIndex);
|
|
258
|
+
if (endIndex === -1) {
|
|
259
|
+
console.warn(`⚠️ Plugin ${pluginName} section malformed`);
|
|
260
|
+
return;
|
|
261
|
+
}
|
|
262
|
+
agentsMd = agentsMd.slice(0, startIndex) + agentsMd.slice(endIndex + endMarker.length);
|
|
263
|
+
await fs.writeFile(agentsMdPath, agentsMd, 'utf-8');
|
|
264
|
+
console.log(` ✓ Removed from AGENTS.md`);
|
|
265
|
+
console.log(`\n✅ Plugin ${pluginName} unloaded!`);
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* Get list of installed plugins for Copilot
|
|
269
|
+
*/
|
|
270
|
+
async getInstalledPlugins() {
|
|
271
|
+
const projectPath = process.cwd();
|
|
272
|
+
const agentsMdPath = path.join(projectPath, 'AGENTS.md');
|
|
273
|
+
if (!(await fs.pathExists(agentsMdPath))) {
|
|
274
|
+
return [];
|
|
275
|
+
}
|
|
276
|
+
const agentsMd = await fs.readFile(agentsMdPath, 'utf-8');
|
|
277
|
+
const pluginMarkerRegex = /<!-- Plugin: (specweave-[a-z0-9-]+) -->/g;
|
|
278
|
+
const matches = agentsMd.matchAll(pluginMarkerRegex);
|
|
279
|
+
const plugins = [];
|
|
280
|
+
for (const match of matches) {
|
|
281
|
+
plugins.push(match[1]);
|
|
282
|
+
}
|
|
283
|
+
return plugins;
|
|
284
|
+
}
|
|
173
285
|
}
|
|
174
286
|
//# sourceMappingURL=adapter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../src/adapters/copilot/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../src/adapters/copilot/adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
*/
|
|
10
10
|
import { AdapterBase } from '../adapter-base.js';
|
|
11
11
|
import { AdapterOptions, AdapterFile } from '../adapter-interface.js';
|
|
12
|
+
import type { Plugin } from '../../core/types/plugin.js';
|
|
12
13
|
export declare class CursorAdapter extends AdapterBase {
|
|
13
14
|
name: string;
|
|
14
15
|
description: string;
|
|
@@ -40,5 +41,40 @@ export declare class CursorAdapter extends AdapterBase {
|
|
|
40
41
|
* Get usage instructions for Cursor adapter
|
|
41
42
|
*/
|
|
42
43
|
getInstructions(): string;
|
|
44
|
+
/**
|
|
45
|
+
* Check if Cursor adapter supports plugins
|
|
46
|
+
*
|
|
47
|
+
* Cursor has plugin support via AGENTS.md compilation
|
|
48
|
+
*
|
|
49
|
+
* @returns boolean True for Cursor
|
|
50
|
+
*/
|
|
51
|
+
supportsPlugins(): boolean;
|
|
52
|
+
/**
|
|
53
|
+
* Compile and install a plugin for Cursor
|
|
54
|
+
*
|
|
55
|
+
* Cursor uses AGENTS.md compilation:
|
|
56
|
+
* - Append skills to AGENTS.md
|
|
57
|
+
* - Append agents to AGENTS.md
|
|
58
|
+
* - Append commands to team commands JSON
|
|
59
|
+
*
|
|
60
|
+
* @param plugin Plugin to install
|
|
61
|
+
*/
|
|
62
|
+
compilePlugin(plugin: Plugin): Promise<void>;
|
|
63
|
+
/**
|
|
64
|
+
* Unload a plugin from Cursor
|
|
65
|
+
*
|
|
66
|
+
* Removes plugin section from AGENTS.md
|
|
67
|
+
*
|
|
68
|
+
* @param pluginName Name of plugin to unload
|
|
69
|
+
*/
|
|
70
|
+
unloadPlugin(pluginName: string): Promise<void>;
|
|
71
|
+
/**
|
|
72
|
+
* Get list of installed plugins for Cursor
|
|
73
|
+
*
|
|
74
|
+
* Parses AGENTS.md for plugin markers
|
|
75
|
+
*
|
|
76
|
+
* @returns Array of installed plugin names
|
|
77
|
+
*/
|
|
78
|
+
getInstalledPlugins(): Promise<string[]>;
|
|
43
79
|
}
|
|
44
80
|
//# sourceMappingURL=adapter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/adapters/cursor/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/adapters/cursor/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAEzD,qBAAa,aAAc,SAAQ,WAAW;IAC5C,IAAI,SAAY;IAChB,WAAW,SAA6E;IACxF,eAAe,EAAG,MAAM,CAAU;IAElC;;;;;;OAMG;IACG,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAOhC;;;;;OAKG;IACH,QAAQ,IAAI,WAAW,EAAE;IA8BzB;;OAEG;IACG,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBrD;;OAEG;IACG,WAAW,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzD;;OAEG;IACH,eAAe,IAAI,MAAM;IA2HzB;;;;;;OAMG;IACH,eAAe,IAAI,OAAO;IAI1B;;;;;;;;;OASG;IACG,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA0ElD;;;;;;OAMG;IACG,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAwCrD;;;;;;OAMG;IACG,mBAAmB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;CAmB/C"}
|
|
@@ -210,5 +210,145 @@ Pro tip: Say "act as [role]" to follow AGENTS.md patterns:
|
|
|
210
210
|
- "act as DevOps and create infrastructure" (AGENTS.md defines DevOps role)
|
|
211
211
|
`;
|
|
212
212
|
}
|
|
213
|
+
/**
|
|
214
|
+
* Check if Cursor adapter supports plugins
|
|
215
|
+
*
|
|
216
|
+
* Cursor has plugin support via AGENTS.md compilation
|
|
217
|
+
*
|
|
218
|
+
* @returns boolean True for Cursor
|
|
219
|
+
*/
|
|
220
|
+
supportsPlugins() {
|
|
221
|
+
return true;
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Compile and install a plugin for Cursor
|
|
225
|
+
*
|
|
226
|
+
* Cursor uses AGENTS.md compilation:
|
|
227
|
+
* - Append skills to AGENTS.md
|
|
228
|
+
* - Append agents to AGENTS.md
|
|
229
|
+
* - Append commands to team commands JSON
|
|
230
|
+
*
|
|
231
|
+
* @param plugin Plugin to install
|
|
232
|
+
*/
|
|
233
|
+
async compilePlugin(plugin) {
|
|
234
|
+
const projectPath = process.cwd();
|
|
235
|
+
const agentsMdPath = path.join(projectPath, 'AGENTS.md');
|
|
236
|
+
console.log(`\n📦 Compiling plugin for Cursor: ${plugin.manifest.name}`);
|
|
237
|
+
// Ensure AGENTS.md exists
|
|
238
|
+
if (!(await fs.pathExists(agentsMdPath))) {
|
|
239
|
+
throw new Error('AGENTS.md not found. Run specweave init first.');
|
|
240
|
+
}
|
|
241
|
+
// Read current AGENTS.md
|
|
242
|
+
let agentsMd = await fs.readFile(agentsMdPath, 'utf-8');
|
|
243
|
+
// Check if plugin already compiled
|
|
244
|
+
const pluginMarker = `<!-- Plugin: ${plugin.manifest.name} -->`;
|
|
245
|
+
if (agentsMd.includes(pluginMarker)) {
|
|
246
|
+
console.log(` ℹ️ Plugin ${plugin.manifest.name} already compiled to AGENTS.md`);
|
|
247
|
+
return;
|
|
248
|
+
}
|
|
249
|
+
// Generate plugin section for AGENTS.md
|
|
250
|
+
let pluginSection = `\n\n${pluginMarker}\n\n`;
|
|
251
|
+
pluginSection += `# Plugin: ${plugin.manifest.name}\n\n`;
|
|
252
|
+
pluginSection += `${plugin.manifest.description}\n\n`;
|
|
253
|
+
// Add skills
|
|
254
|
+
if (plugin.skills.length > 0) {
|
|
255
|
+
pluginSection += `## Skills\n\n`;
|
|
256
|
+
for (const skill of plugin.skills) {
|
|
257
|
+
const skillContent = await fs.readFile(path.join(skill.path, 'SKILL.md'), 'utf-8');
|
|
258
|
+
// Remove frontmatter for AGENTS.md
|
|
259
|
+
const contentWithoutFrontmatter = skillContent.replace(/^---\n[\s\S]+?\n---\n/, '');
|
|
260
|
+
pluginSection += `### ${skill.name}\n\n`;
|
|
261
|
+
pluginSection += `${contentWithoutFrontmatter}\n\n`;
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
// Add agents
|
|
265
|
+
if (plugin.agents.length > 0) {
|
|
266
|
+
pluginSection += `## Agents\n\n`;
|
|
267
|
+
for (const agent of plugin.agents) {
|
|
268
|
+
const agentContent = await fs.readFile(path.join(agent.path, 'AGENT.md'), 'utf-8');
|
|
269
|
+
pluginSection += `### ${agent.name}\n\n`;
|
|
270
|
+
pluginSection += `${agentContent}\n\n`;
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
// Add commands
|
|
274
|
+
if (plugin.commands.length > 0) {
|
|
275
|
+
pluginSection += `## Commands\n\n`;
|
|
276
|
+
for (const command of plugin.commands) {
|
|
277
|
+
const commandContent = await fs.readFile(command.path, 'utf-8');
|
|
278
|
+
// Remove frontmatter
|
|
279
|
+
const contentWithoutFrontmatter = commandContent.replace(/^---\n[\s\S]+?\n---\n/, '');
|
|
280
|
+
pluginSection += `### /${command.name}\n\n`;
|
|
281
|
+
pluginSection += `${contentWithoutFrontmatter}\n\n`;
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
pluginSection += `<!-- End Plugin: ${plugin.manifest.name} -->\n`;
|
|
285
|
+
// Append to AGENTS.md
|
|
286
|
+
agentsMd += pluginSection;
|
|
287
|
+
await fs.writeFile(agentsMdPath, agentsMd, 'utf-8');
|
|
288
|
+
console.log(` ✓ Compiled to AGENTS.md`);
|
|
289
|
+
console.log(` ✓ ${plugin.skills.length} skills added`);
|
|
290
|
+
console.log(` ✓ ${plugin.agents.length} agents added`);
|
|
291
|
+
console.log(` ✓ ${plugin.commands.length} commands added`);
|
|
292
|
+
console.log(`\n✅ Plugin ${plugin.manifest.name} compiled for Cursor!`);
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* Unload a plugin from Cursor
|
|
296
|
+
*
|
|
297
|
+
* Removes plugin section from AGENTS.md
|
|
298
|
+
*
|
|
299
|
+
* @param pluginName Name of plugin to unload
|
|
300
|
+
*/
|
|
301
|
+
async unloadPlugin(pluginName) {
|
|
302
|
+
const projectPath = process.cwd();
|
|
303
|
+
const agentsMdPath = path.join(projectPath, 'AGENTS.md');
|
|
304
|
+
console.log(`\n🗑️ Unloading plugin from Cursor: ${pluginName}`);
|
|
305
|
+
if (!(await fs.pathExists(agentsMdPath))) {
|
|
306
|
+
console.warn(`⚠️ AGENTS.md not found`);
|
|
307
|
+
return;
|
|
308
|
+
}
|
|
309
|
+
// Read AGENTS.md
|
|
310
|
+
let agentsMd = await fs.readFile(agentsMdPath, 'utf-8');
|
|
311
|
+
// Find plugin section
|
|
312
|
+
const startMarker = `<!-- Plugin: ${pluginName} -->`;
|
|
313
|
+
const endMarker = `<!-- End Plugin: ${pluginName} -->`;
|
|
314
|
+
const startIndex = agentsMd.indexOf(startMarker);
|
|
315
|
+
if (startIndex === -1) {
|
|
316
|
+
console.warn(`⚠️ Plugin ${pluginName} not found in AGENTS.md`);
|
|
317
|
+
return;
|
|
318
|
+
}
|
|
319
|
+
const endIndex = agentsMd.indexOf(endMarker, startIndex);
|
|
320
|
+
if (endIndex === -1) {
|
|
321
|
+
console.warn(`⚠️ Plugin ${pluginName} section malformed in AGENTS.md`);
|
|
322
|
+
return;
|
|
323
|
+
}
|
|
324
|
+
// Remove plugin section
|
|
325
|
+
agentsMd = agentsMd.slice(0, startIndex) + agentsMd.slice(endIndex + endMarker.length);
|
|
326
|
+
// Write back
|
|
327
|
+
await fs.writeFile(agentsMdPath, agentsMd, 'utf-8');
|
|
328
|
+
console.log(` ✓ Removed from AGENTS.md`);
|
|
329
|
+
console.log(`\n✅ Plugin ${pluginName} unloaded!`);
|
|
330
|
+
}
|
|
331
|
+
/**
|
|
332
|
+
* Get list of installed plugins for Cursor
|
|
333
|
+
*
|
|
334
|
+
* Parses AGENTS.md for plugin markers
|
|
335
|
+
*
|
|
336
|
+
* @returns Array of installed plugin names
|
|
337
|
+
*/
|
|
338
|
+
async getInstalledPlugins() {
|
|
339
|
+
const projectPath = process.cwd();
|
|
340
|
+
const agentsMdPath = path.join(projectPath, 'AGENTS.md');
|
|
341
|
+
if (!(await fs.pathExists(agentsMdPath))) {
|
|
342
|
+
return [];
|
|
343
|
+
}
|
|
344
|
+
const agentsMd = await fs.readFile(agentsMdPath, 'utf-8');
|
|
345
|
+
const pluginMarkerRegex = /<!-- Plugin: (specweave-[a-z0-9-]+) -->/g;
|
|
346
|
+
const matches = agentsMd.matchAll(pluginMarkerRegex);
|
|
347
|
+
const plugins = [];
|
|
348
|
+
for (const match of matches) {
|
|
349
|
+
plugins.push(match[1]);
|
|
350
|
+
}
|
|
351
|
+
return plugins;
|
|
352
|
+
}
|
|
213
353
|
}
|
|
214
354
|
//# sourceMappingURL=adapter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../src/adapters/cursor/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../src/adapters/cursor/adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
*/
|
|
10
10
|
import { AdapterBase } from '../adapter-base.js';
|
|
11
11
|
import { AdapterOptions, AdapterFile } from '../adapter-interface.js';
|
|
12
|
+
import type { Plugin } from '../../core/types/plugin.js';
|
|
12
13
|
export declare class GenericAdapter extends AdapterBase {
|
|
13
14
|
name: string;
|
|
14
15
|
description: string;
|
|
@@ -39,5 +40,29 @@ export declare class GenericAdapter extends AdapterBase {
|
|
|
39
40
|
* Get usage instructions for Generic adapter
|
|
40
41
|
*/
|
|
41
42
|
getInstructions(): string;
|
|
43
|
+
/**
|
|
44
|
+
* Check if Generic adapter supports plugins
|
|
45
|
+
*
|
|
46
|
+
* Generic has manual plugin support via AGENTS.md
|
|
47
|
+
*
|
|
48
|
+
* @returns boolean True
|
|
49
|
+
*/
|
|
50
|
+
supportsPlugins(): boolean;
|
|
51
|
+
/**
|
|
52
|
+
* Compile and install a plugin for Generic adapter
|
|
53
|
+
*
|
|
54
|
+
* Appends plugin content to AGENTS.md for manual copy-paste workflows
|
|
55
|
+
*
|
|
56
|
+
* @param plugin Plugin to install
|
|
57
|
+
*/
|
|
58
|
+
compilePlugin(plugin: Plugin): Promise<void>;
|
|
59
|
+
/**
|
|
60
|
+
* Unload a plugin from Generic adapter
|
|
61
|
+
*/
|
|
62
|
+
unloadPlugin(pluginName: string): Promise<void>;
|
|
63
|
+
/**
|
|
64
|
+
* Get list of installed plugins for Generic adapter
|
|
65
|
+
*/
|
|
66
|
+
getInstalledPlugins(): Promise<string[]>;
|
|
42
67
|
}
|
|
43
68
|
//# sourceMappingURL=adapter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/adapters/generic/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/adapters/generic/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAEzD,qBAAa,cAAe,SAAQ,WAAW;IAC7C,IAAI,SAAa;IACjB,WAAW,SAAgF;IAC3F,eAAe,EAAG,QAAQ,CAAU;IAEpC;;;;;OAKG;IACG,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAKhC;;;;;OAKG;IACH,QAAQ,IAAI,WAAW,EAAE;IAIzB;;OAEG;IACG,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAOrD;;OAEG;IACG,WAAW,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzD;;OAEG;IACH,eAAe,IAAI,MAAM;IAsGzB;;;;;;OAMG;IACH,eAAe,IAAI,OAAO;IAI1B;;;;;;OAMG;IACG,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAyDlD;;OAEG;IACG,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmCrD;;OAEG;IACG,mBAAmB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;CAmB/C"}
|