specweave 0.1.9 → 0.3.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 +600 -0
- package/README.md +263 -81
- package/bin/install-all.sh +1 -1
- package/bin/install-commands.sh +3 -3
- package/bin/specweave.js +39 -9
- package/dist/adapters/adapter-base.d.ts +1 -1
- package/dist/adapters/adapter-base.d.ts.map +1 -1
- package/dist/adapters/adapter-base.js +6 -41
- package/dist/adapters/adapter-base.js.map +1 -1
- package/dist/adapters/adapter-interface.js +1 -2
- package/dist/adapters/adapter-interface.js.map +1 -1
- package/dist/adapters/adapter-loader.d.ts +86 -0
- package/dist/adapters/adapter-loader.d.ts.map +1 -0
- package/dist/adapters/adapter-loader.js +216 -0
- package/dist/adapters/adapter-loader.js.map +1 -0
- package/dist/adapters/agents-md-generator.d.ts +48 -0
- package/dist/adapters/agents-md-generator.d.ts.map +1 -0
- package/dist/adapters/agents-md-generator.js +132 -0
- package/dist/adapters/agents-md-generator.js.map +1 -0
- package/dist/adapters/claude/adapter.d.ts +2 -2
- package/dist/adapters/claude/adapter.d.ts.map +1 -1
- package/dist/adapters/claude/adapter.js +5 -42
- package/dist/adapters/claude/adapter.js.map +1 -1
- package/dist/adapters/claude-md-generator.d.ts +78 -0
- package/dist/adapters/claude-md-generator.d.ts.map +1 -0
- package/dist/adapters/claude-md-generator.js +246 -0
- package/dist/adapters/claude-md-generator.js.map +1 -0
- package/dist/adapters/codex/adapter.d.ts +50 -0
- package/dist/adapters/codex/adapter.d.ts.map +1 -0
- package/dist/adapters/codex/adapter.js +316 -0
- package/dist/adapters/codex/adapter.js.map +1 -0
- package/dist/adapters/copilot/adapter.d.ts +10 -9
- package/dist/adapters/copilot/adapter.d.ts.map +1 -1
- package/dist/adapters/copilot/adapter.js +35 -100
- package/dist/adapters/copilot/adapter.js.map +1 -1
- package/dist/adapters/cursor/adapter.d.ts +8 -6
- package/dist/adapters/cursor/adapter.d.ts.map +1 -1
- package/dist/adapters/cursor/adapter.js +47 -130
- package/dist/adapters/cursor/adapter.js.map +1 -1
- package/dist/adapters/doc-generator.d.ts +69 -0
- package/dist/adapters/doc-generator.d.ts.map +1 -0
- package/dist/adapters/doc-generator.js +247 -0
- package/dist/adapters/doc-generator.js.map +1 -0
- package/dist/adapters/gemini/adapter.d.ts +50 -0
- package/dist/adapters/gemini/adapter.d.ts.map +1 -0
- package/dist/adapters/gemini/adapter.js +281 -0
- package/dist/adapters/gemini/adapter.js.map +1 -0
- package/dist/adapters/generic/adapter.d.ts +7 -4
- package/dist/adapters/generic/adapter.d.ts.map +1 -1
- package/dist/adapters/generic/adapter.js +60 -59
- package/dist/adapters/generic/adapter.js.map +1 -1
- package/dist/cli/commands/init.d.ts +3 -1
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +327 -177
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/install.d.ts.map +1 -1
- package/dist/cli/commands/install.js +22 -58
- package/dist/cli/commands/install.js.map +1 -1
- package/dist/cli/commands/list.d.ts.map +1 -1
- package/dist/cli/commands/list.js +27 -64
- package/dist/cli/commands/list.js.map +1 -1
- package/dist/core/credentials-manager.d.ts +90 -0
- package/dist/core/credentials-manager.d.ts.map +1 -0
- package/dist/core/credentials-manager.js +271 -0
- package/dist/core/credentials-manager.js.map +1 -0
- package/dist/core/project-structure-detector.d.ts +92 -0
- package/dist/core/project-structure-detector.d.ts.map +1 -0
- package/dist/core/project-structure-detector.js +289 -0
- package/dist/core/project-structure-detector.js.map +1 -0
- package/dist/core/rfc-generator-v2.d.ts +149 -0
- package/dist/core/rfc-generator-v2.d.ts.map +1 -0
- package/dist/core/rfc-generator-v2.js +399 -0
- package/dist/core/rfc-generator-v2.js.map +1 -0
- package/dist/core/rfc-generator.d.ts +147 -0
- package/dist/core/rfc-generator.d.ts.map +1 -0
- package/dist/core/rfc-generator.js +434 -0
- package/dist/core/rfc-generator.js.map +1 -0
- package/dist/integrations/ado/ado-client.d.ts +123 -0
- package/dist/integrations/ado/ado-client.d.ts.map +1 -0
- package/dist/integrations/ado/ado-client.js +398 -0
- package/dist/integrations/ado/ado-client.js.map +1 -0
- package/dist/integrations/jira/jira-client.d.ts +139 -0
- package/dist/integrations/jira/jira-client.d.ts.map +1 -0
- package/dist/integrations/jira/jira-client.js +386 -0
- package/dist/integrations/jira/jira-client.js.map +1 -0
- package/dist/integrations/jira/jira-incremental-mapper.d.ts +75 -0
- package/dist/integrations/jira/jira-incremental-mapper.d.ts.map +1 -0
- package/dist/integrations/jira/jira-incremental-mapper.js +474 -0
- package/dist/integrations/jira/jira-incremental-mapper.js.map +1 -0
- package/dist/integrations/jira/jira-mapper.d.ts +105 -0
- package/dist/integrations/jira/jira-mapper.d.ts.map +1 -0
- package/dist/integrations/jira/jira-mapper.js +494 -0
- package/dist/integrations/jira/jira-mapper.js.map +1 -0
- package/dist/testing/test-generator.d.ts +117 -0
- package/dist/testing/test-generator.d.ts.map +1 -0
- package/dist/testing/test-generator.js +370 -0
- package/dist/testing/test-generator.js.map +1 -0
- package/dist/utils/auto-install.d.ts +3 -0
- package/dist/utils/auto-install.d.ts.map +1 -1
- package/dist/utils/auto-install.js +16 -82
- package/dist/utils/auto-install.js.map +1 -1
- package/dist/utils/esm-helpers.d.ts +50 -0
- package/dist/utils/esm-helpers.d.ts.map +1 -0
- package/dist/utils/esm-helpers.js +57 -0
- package/dist/utils/esm-helpers.js.map +1 -0
- package/package.json +16 -7
- package/src/adapters/README.md +1 -2
- package/src/adapters/adapter-base.ts +6 -3
- package/src/adapters/adapter-loader.ts +261 -0
- package/src/adapters/agents-md-generator.ts +162 -0
- package/src/adapters/claude/README.md +6 -14
- package/src/adapters/claude/adapter.ts +4 -4
- package/src/adapters/claude-md-generator.ts +311 -0
- package/src/adapters/codex/README.md +105 -0
- package/src/adapters/codex/adapter.ts +333 -0
- package/src/adapters/copilot/adapter.ts +36 -65
- package/src/adapters/cursor/README.md +0 -2
- package/src/adapters/cursor/adapter.ts +46 -92
- package/src/adapters/doc-generator.ts +331 -0
- package/src/adapters/gemini/README.md +97 -0
- package/src/adapters/gemini/adapter.ts +298 -0
- package/src/adapters/generic/adapter.ts +61 -57
- package/src/adapters/registry.yaml +86 -25
- package/src/agents/devops/AGENT.md +16 -18
- package/src/agents/docs-writer/AGENT.md +2 -2
- package/src/agents/pm/AGENT.md +1 -50
- package/src/commands/README.md +134 -111
- package/src/commands/{build.md → specweave.do.md} +141 -69
- package/src/commands/{done.md → specweave.done.md} +3 -3
- package/src/commands/{inc.md → specweave.inc.md} +4 -4
- package/src/commands/{increment.md → specweave.increment.md} +143 -76
- package/src/commands/specweave.md +430 -0
- package/src/commands/specweave.next.md +495 -0
- package/src/commands/{progress.md → specweave.progress.md} +12 -12
- package/src/commands/specweave.sync-docs.md +665 -0
- package/src/commands/specweave.sync-github.md +269 -0
- package/src/commands/specweave.sync-jira.md +197 -0
- package/src/commands/{validate.md → specweave.validate.md} +4 -4
- package/src/hooks/README.md +19 -29
- package/src/hooks/post-task-completion.sh +25 -30
- package/src/skills/ado-sync/README.md +1 -36
- package/src/skills/bmad-method-expert/SKILL.md +1 -3
- package/src/skills/brownfield-analyzer/SKILL.md +429 -23
- package/src/skills/brownfield-onboarder/SKILL.md +221 -8
- package/src/skills/context-loader/SKILL.md +239 -617
- package/src/skills/context-optimizer/SKILL.md +0 -30
- package/src/skills/github-sync/SKILL.md +1 -19
- package/src/skills/increment-planner/SKILL.md +64 -18
- package/src/skills/increment-quality-judge/SKILL.md +1 -36
- package/src/skills/jira-sync/README.md +1 -38
- package/src/skills/role-orchestrator/README.md +1 -22
- package/src/skills/role-orchestrator/SKILL.md +1 -59
- package/src/skills/skill-router/SKILL.md +0 -18
- package/src/skills/spec-kit-expert/SKILL.md +1 -3
- package/src/skills/specweave-detector/SKILL.md +225 -275
- package/src/skills/task-builder/README.md +1 -7
- package/src/templates/AGENTS.md.template +334 -0
- package/src/templates/CLAUDE.md.template +131 -298
- package/src/templates/README.md.template +115 -23
- package/src/templates/environments/minimal/README.md +0 -1
- package/INSTALL.md +0 -848
- package/SPECWEAVE.md +0 -743
- package/src/adapters/copilot/.github/copilot/instructions.md +0 -376
- package/src/adapters/cursor/.cursorrules +0 -325
- package/src/adapters/generic/SPECWEAVE-MANUAL.md +0 -676
- package/src/commands/create-project.md +0 -528
- package/src/commands/generate-docs.md +0 -623
- package/src/commands/review-docs.md +0 -331
- package/src/commands/sync-github.md +0 -115
- package/src/skills/ado-sync/test-cases/test-1.yaml +0 -9
- package/src/skills/ado-sync/test-cases/test-2.yaml +0 -8
- package/src/skills/ado-sync/test-cases/test-3.yaml +0 -9
- package/src/skills/bmad-method-expert/test-cases/test-1-placeholder.yaml +0 -12
- package/src/skills/bmad-method-expert/test-cases/test-2-placeholder.yaml +0 -12
- package/src/skills/bmad-method-expert/test-cases/test-3-placeholder.yaml +0 -12
- package/src/skills/brownfield-analyzer/test-cases/test-1-basic-analysis.yaml +0 -48
- package/src/skills/brownfield-analyzer/test-cases/test-2-placeholder.yaml +0 -12
- package/src/skills/brownfield-analyzer/test-cases/test-3-placeholder.yaml +0 -12
- package/src/skills/brownfield-onboarder/test-cases/test-1-placeholder.yaml +0 -12
- package/src/skills/brownfield-onboarder/test-cases/test-2-placeholder.yaml +0 -12
- package/src/skills/brownfield-onboarder/test-cases/test-3-placeholder.yaml +0 -12
- package/src/skills/calendar-system/test-cases/test-1-placeholder.yaml +0 -12
- package/src/skills/calendar-system/test-cases/test-2-placeholder.yaml +0 -12
- package/src/skills/calendar-system/test-cases/test-3-placeholder.yaml +0 -12
- package/src/skills/context-loader/test-cases/test-1-basic-loading.yaml +0 -39
- package/src/skills/context-loader/test-cases/test-2-token-budget-exceeded.yaml +0 -44
- package/src/skills/context-loader/test-cases/test-3-section-anchors.yaml +0 -45
- package/src/skills/context-optimizer/test-cases/test-1-bug-fix-narrow.yaml +0 -97
- package/src/skills/context-optimizer/test-cases/test-2-feature-focused.yaml +0 -109
- package/src/skills/context-optimizer/test-cases/test-3-architecture-broad.yaml +0 -98
- package/src/skills/cost-optimizer/test-cases/test-1-basic-comparison.yaml +0 -75
- package/src/skills/cost-optimizer/test-cases/test-2-budget-constraint.yaml +0 -52
- package/src/skills/cost-optimizer/test-cases/test-3-scale-requirement.yaml +0 -63
- package/src/skills/cost-optimizer/test-results/README.md +0 -46
- package/src/skills/design-system-architect/test-cases/test-1-token-structure.yaml +0 -23
- package/src/skills/design-system-architect/test-cases/test-2-component-hierarchy.yaml +0 -24
- package/src/skills/design-system-architect/test-cases/test-3-accessibility-checklist.yaml +0 -23
- package/src/skills/diagrams-architect/test-cases/test-1-c4-context.yaml +0 -13
- package/src/skills/diagrams-architect/test-cases/test-2-sequence-diagram.yaml +0 -13
- package/src/skills/diagrams-architect/test-cases/test-3-er-diagram.yaml +0 -13
- package/src/skills/diagrams-generator/test-cases/test-1.yaml +0 -9
- package/src/skills/diagrams-generator/test-cases/test-2.yaml +0 -9
- package/src/skills/diagrams-generator/test-cases/test-3.yaml +0 -8
- package/src/skills/docs-updater/test-cases/test-1-placeholder.yaml +0 -12
- package/src/skills/docs-updater/test-cases/test-2-placeholder.yaml +0 -12
- package/src/skills/docs-updater/test-cases/test-3-placeholder.yaml +0 -12
- package/src/skills/dotnet-backend/test-cases/test-1-rest-api.yaml +0 -14
- package/src/skills/dotnet-backend/test-cases/test-2-authentication.yaml +0 -13
- package/src/skills/dotnet-backend/test-cases/test-3-minimal-api.yaml +0 -13
- package/src/skills/e2e-playwright/test-cases/TC-001-basic-navigation.yaml +0 -54
- package/src/skills/e2e-playwright/test-cases/TC-002-form-interaction.yaml +0 -64
- package/src/skills/e2e-playwright/test-cases/TC-003-specweave-integration.yaml +0 -74
- package/src/skills/e2e-playwright/test-cases/TC-004-accessibility-check.yaml +0 -98
- package/src/skills/figma-designer/test-cases/test-1-design-system.yaml +0 -13
- package/src/skills/figma-designer/test-cases/test-2-component-library.yaml +0 -13
- package/src/skills/figma-designer/test-cases/test-3-responsive-layout.yaml +0 -13
- package/src/skills/figma-implementer/test-cases/test-1-design-to-react.yaml +0 -13
- package/src/skills/figma-implementer/test-cases/test-2-storybook.yaml +0 -13
- package/src/skills/figma-implementer/test-cases/test-3-design-tokens.yaml +0 -13
- package/src/skills/figma-mcp-connector/test-cases/test-1-read-file-desktop.yaml +0 -22
- package/src/skills/figma-mcp-connector/test-cases/test-2-read-file-framelink.yaml +0 -21
- package/src/skills/figma-mcp-connector/test-cases/test-3-error-handling.yaml +0 -18
- package/src/skills/figma-to-code/test-cases/test-1-token-generation.yaml +0 -29
- package/src/skills/figma-to-code/test-cases/test-2-component-generation.yaml +0 -27
- package/src/skills/figma-to-code/test-cases/test-3-typescript-generation.yaml +0 -28
- package/src/skills/frontend/test-cases/test-1-react-component.yaml +0 -13
- package/src/skills/frontend/test-cases/test-2-form-validation.yaml +0 -13
- package/src/skills/frontend/test-cases/test-3-state-management.yaml +0 -13
- package/src/skills/github-sync/test-cases/test-1-placeholder.yaml +0 -12
- package/src/skills/github-sync/test-cases/test-2-placeholder.yaml +0 -12
- package/src/skills/github-sync/test-cases/test-3-placeholder.yaml +0 -12
- package/src/skills/hetzner-provisioner/test-cases/test-1-basic-provision.yaml +0 -71
- package/src/skills/hetzner-provisioner/test-cases/test-2-postgres-provision.yaml +0 -85
- package/src/skills/hetzner-provisioner/test-cases/test-3-ssl-config.yaml +0 -126
- package/src/skills/hetzner-provisioner/test-results/README.md +0 -259
- package/src/skills/increment-planner/test-cases/test-1-basic-feature.yaml +0 -27
- package/src/skills/increment-planner/test-cases/test-2-complex-feature.yaml +0 -30
- package/src/skills/increment-planner/test-cases/test-3-auto-numbering.yaml +0 -24
- package/src/skills/increment-quality-judge/test-cases/test-1-good-spec.yaml +0 -95
- package/src/skills/increment-quality-judge/test-cases/test-2-poor-spec.yaml +0 -108
- package/src/skills/increment-quality-judge/test-cases/test-3-export-suggestions.yaml +0 -87
- package/src/skills/jira-sync/test-cases/test-1.yaml +0 -9
- package/src/skills/jira-sync/test-cases/test-2.yaml +0 -9
- package/src/skills/jira-sync/test-cases/test-3.yaml +0 -10
- package/src/skills/nextjs/test-cases/test-1-app-router.yaml +0 -13
- package/src/skills/nextjs/test-cases/test-2-server-actions.yaml +0 -13
- package/src/skills/nextjs/test-cases/test-3-api-routes.yaml +0 -13
- package/src/skills/nodejs-backend/test-cases/test-1-express-api.yaml +0 -13
- package/src/skills/nodejs-backend/test-cases/test-2-prisma-orm.yaml +0 -13
- package/src/skills/nodejs-backend/test-cases/test-3-authentication.yaml +0 -13
- package/src/skills/notification-system/test-cases/test-1-placeholder.yaml +0 -12
- package/src/skills/notification-system/test-cases/test-2-placeholder.yaml +0 -12
- package/src/skills/notification-system/test-cases/test-3-placeholder.yaml +0 -12
- package/src/skills/python-backend/test-cases/test-1-fastapi-crud.yaml +0 -13
- package/src/skills/python-backend/test-cases/test-2-sqlalchemy.yaml +0 -13
- package/src/skills/python-backend/test-cases/test-3-authentication.yaml +0 -13
- package/src/skills/role-orchestrator/test-cases/test-1-simple-product.yaml +0 -98
- package/src/skills/role-orchestrator/test-cases/test-2-quality-gate-failure.yaml +0 -73
- package/src/skills/role-orchestrator/test-cases/test-3-security-workflow.yaml +0 -121
- package/src/skills/role-orchestrator/test-cases/test-4-parallel-execution.yaml +0 -145
- package/src/skills/role-orchestrator/test-cases/test-5-feedback-loops.yaml +0 -149
- package/src/skills/skill-creator/test-cases/test-1-placeholder.yaml +0 -12
- package/src/skills/skill-creator/test-cases/test-2-placeholder.yaml +0 -12
- package/src/skills/skill-creator/test-cases/test-3-placeholder.yaml +0 -12
- package/src/skills/skill-router/test-cases/test-1-basic-routing.yaml +0 -33
- package/src/skills/skill-router/test-cases/test-2-ambiguous-request.yaml +0 -42
- package/src/skills/skill-router/test-cases/test-3-nested-orchestration.yaml +0 -50
- package/src/skills/spec-driven-brainstorming/test-cases/TC-001-simple-idea-to-design.yaml +0 -148
- package/src/skills/spec-driven-brainstorming/test-cases/TC-002-complex-ultrathink-design.yaml +0 -190
- package/src/skills/spec-driven-brainstorming/test-cases/TC-003-unclear-requirements-socratic.yaml +0 -233
- package/src/skills/spec-driven-debugging/test-cases/TC-001-simple-auth-bug.yaml +0 -212
- package/src/skills/spec-driven-debugging/test-cases/TC-002-race-condition-ultrathink.yaml +0 -461
- package/src/skills/spec-driven-debugging/test-cases/TC-003-brownfield-missing-spec.yaml +0 -366
- package/src/skills/spec-kit-expert/test-cases/test-1-placeholder.yaml +0 -12
- package/src/skills/spec-kit-expert/test-cases/test-2-placeholder.yaml +0 -12
- package/src/skills/spec-kit-expert/test-cases/test-3-placeholder.yaml +0 -12
- package/src/skills/specweave-ado-mapper/test-cases/test-1-export-to-ado.yaml +0 -13
- package/src/skills/specweave-ado-mapper/test-cases/test-2-import-from-ado.yaml +0 -13
- package/src/skills/specweave-ado-mapper/test-cases/test-3-bidirectional-sync.yaml +0 -13
- package/src/skills/specweave-detector/test-cases/test-1-basic-detection.yaml +0 -37
- package/src/skills/specweave-detector/test-cases/test-2-missing-config.yaml +0 -37
- package/src/skills/specweave-detector/test-cases/test-3-non-specweave-project.yaml +0 -34
- package/src/skills/specweave-jira-mapper/test-cases/test-1-export-to-jira.yaml +0 -13
- package/src/skills/specweave-jira-mapper/test-cases/test-2-import-from-jira.yaml +0 -13
- package/src/skills/specweave-jira-mapper/test-cases/test-3-sync-status.yaml +0 -13
- package/src/skills/stripe-integrator/test-cases/test-1-placeholder.yaml +0 -12
- package/src/skills/stripe-integrator/test-cases/test-2-placeholder.yaml +0 -12
- package/src/skills/stripe-integrator/test-cases/test-3-placeholder.yaml +0 -12
- package/src/skills/task-builder/test-cases/test-1-placeholder.yaml +0 -12
- package/src/skills/task-builder/test-cases/test-2-placeholder.yaml +0 -12
- package/src/skills/task-builder/test-cases/test-3-placeholder.yaml +0 -12
- package/src/templates/config.yaml +0 -351
- /package/src/commands/{list-increments.md → specweave.list-increments.md} +0 -0
|
@@ -1,48 +1,15 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* Base Adapter Class
|
|
4
3
|
*
|
|
5
4
|
* Provides common functionality for all adapters.
|
|
6
5
|
* Concrete adapters extend this class and implement tool-specific logic.
|
|
7
6
|
*/
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
Object.defineProperty(o, k2, desc);
|
|
15
|
-
}) : (function(o, m, k, k2) {
|
|
16
|
-
if (k2 === undefined) k2 = k;
|
|
17
|
-
o[k2] = m[k];
|
|
18
|
-
}));
|
|
19
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
20
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
21
|
-
}) : function(o, v) {
|
|
22
|
-
o["default"] = v;
|
|
23
|
-
});
|
|
24
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
25
|
-
var ownKeys = function(o) {
|
|
26
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
27
|
-
var ar = [];
|
|
28
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
29
|
-
return ar;
|
|
30
|
-
};
|
|
31
|
-
return ownKeys(o);
|
|
32
|
-
};
|
|
33
|
-
return function (mod) {
|
|
34
|
-
if (mod && mod.__esModule) return mod;
|
|
35
|
-
var result = {};
|
|
36
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
37
|
-
__setModuleDefault(result, mod);
|
|
38
|
-
return result;
|
|
39
|
-
};
|
|
40
|
-
})();
|
|
41
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
-
exports.AdapterBase = void 0;
|
|
43
|
-
const fs = __importStar(require("fs-extra"));
|
|
44
|
-
const path = __importStar(require("path"));
|
|
45
|
-
class AdapterBase {
|
|
7
|
+
import fs from 'fs-extra';
|
|
8
|
+
import * as path from 'path';
|
|
9
|
+
import { execSync } from 'child_process';
|
|
10
|
+
import { getDirname } from '../utils/esm-helpers.js';
|
|
11
|
+
const __dirname = getDirname(import.meta.url);
|
|
12
|
+
export class AdapterBase {
|
|
46
13
|
/**
|
|
47
14
|
* Default detection - override in concrete adapters
|
|
48
15
|
*/
|
|
@@ -68,7 +35,6 @@ class AdapterBase {
|
|
|
68
35
|
}
|
|
69
36
|
// Check Git
|
|
70
37
|
try {
|
|
71
|
-
const { execSync } = require('child_process');
|
|
72
38
|
execSync('git --version', { stdio: 'ignore' });
|
|
73
39
|
}
|
|
74
40
|
catch (error) {
|
|
@@ -142,5 +108,4 @@ class AdapterBase {
|
|
|
142
108
|
return content;
|
|
143
109
|
}
|
|
144
110
|
}
|
|
145
|
-
exports.AdapterBase = AdapterBase;
|
|
146
111
|
//# sourceMappingURL=adapter-base.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter-base.js","sourceRoot":"","sources":["../../src/adapters/adapter-base.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"adapter-base.js","sourceRoot":"","sources":["../../src/adapters/adapter-base.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* Adapter Interface for Multi-Tool Support
|
|
4
3
|
*
|
|
5
4
|
* Defines the contract that all SpecWeave adapters must implement.
|
|
6
5
|
* Enables SpecWeave to work with ANY AI coding tool (Claude, Cursor, Copilot, etc.)
|
|
7
6
|
*/
|
|
8
|
-
|
|
7
|
+
export {};
|
|
9
8
|
//# sourceMappingURL=adapter-interface.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter-interface.js","sourceRoot":"","sources":["../../src/adapters/adapter-interface.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"adapter-interface.js","sourceRoot":"","sources":["../../src/adapters/adapter-interface.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Adapter Loader
|
|
3
|
+
*
|
|
4
|
+
* Loads adapters from registry, detects tools, and provides API for init command.
|
|
5
|
+
* Enables SpecWeave to work with ANY AI coding tool.
|
|
6
|
+
*/
|
|
7
|
+
import { IAdapter } from './adapter-interface.js';
|
|
8
|
+
export interface AdapterRegistry {
|
|
9
|
+
version: number;
|
|
10
|
+
last_updated: string;
|
|
11
|
+
adapters: Array<{
|
|
12
|
+
name: string;
|
|
13
|
+
description: string;
|
|
14
|
+
automation_level: string;
|
|
15
|
+
status: string;
|
|
16
|
+
directory: string;
|
|
17
|
+
market_share: string;
|
|
18
|
+
priority: string;
|
|
19
|
+
}>;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Adapter Loader - Main API for working with adapters
|
|
23
|
+
*/
|
|
24
|
+
export declare class AdapterLoader {
|
|
25
|
+
private adapters;
|
|
26
|
+
private registry;
|
|
27
|
+
constructor();
|
|
28
|
+
/**
|
|
29
|
+
* Initialize all adapters
|
|
30
|
+
*
|
|
31
|
+
* NOTE: Claude Code is NOT an adapter - it's the native/default experience!
|
|
32
|
+
* Adapters only exist for tools that need to APPROXIMATE Claude's native capabilities.
|
|
33
|
+
*/
|
|
34
|
+
private initializeAdapters;
|
|
35
|
+
/**
|
|
36
|
+
* Load registry.yaml
|
|
37
|
+
*/
|
|
38
|
+
loadRegistry(): Promise<AdapterRegistry>;
|
|
39
|
+
/**
|
|
40
|
+
* Get all available adapters
|
|
41
|
+
*/
|
|
42
|
+
getAllAdapters(): IAdapter[];
|
|
43
|
+
/**
|
|
44
|
+
* Get adapter by name
|
|
45
|
+
*/
|
|
46
|
+
getAdapter(name: string): IAdapter | undefined;
|
|
47
|
+
/**
|
|
48
|
+
* Auto-detect which tool is being used
|
|
49
|
+
*
|
|
50
|
+
* Detection priority (based on market share and probability):
|
|
51
|
+
* 1. Claude Code (if .claude/ exists or claude CLI found) - NATIVE, no adapter needed
|
|
52
|
+
* 2. Cursor (if cursor CLI or .cursor/ or .cursorrules exists)
|
|
53
|
+
* 3. Gemini CLI (if gemini CLI found)
|
|
54
|
+
* 4. Codex (if codex CLI found)
|
|
55
|
+
* 5. Copilot (if .github/copilot/ exists)
|
|
56
|
+
* 6. Generic (fallback - always returns true)
|
|
57
|
+
*
|
|
58
|
+
* @returns Promise<string> Detected tool name (not adapter - Claude has no adapter!)
|
|
59
|
+
*/
|
|
60
|
+
detectTool(): Promise<string>;
|
|
61
|
+
/**
|
|
62
|
+
* Helper: Check if a command exists in PATH
|
|
63
|
+
*/
|
|
64
|
+
private commandExists;
|
|
65
|
+
/**
|
|
66
|
+
* Helper: Check if a file exists
|
|
67
|
+
*/
|
|
68
|
+
private fileExists;
|
|
69
|
+
/**
|
|
70
|
+
* Check requirements for a specific adapter
|
|
71
|
+
*/
|
|
72
|
+
checkRequirements(adapterName: string): Promise<void>;
|
|
73
|
+
/**
|
|
74
|
+
* List all available adapters with details
|
|
75
|
+
*/
|
|
76
|
+
listAdapters(): Promise<void>;
|
|
77
|
+
/**
|
|
78
|
+
* Get icon for automation level
|
|
79
|
+
*/
|
|
80
|
+
private getAutomationIcon;
|
|
81
|
+
/**
|
|
82
|
+
* Get recommended adapter based on detection and user preference
|
|
83
|
+
*/
|
|
84
|
+
getRecommendedAdapter(explicitChoice?: string): Promise<IAdapter>;
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=adapter-loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter-loader.d.ts","sourceRoot":"","sources":["../../src/adapters/adapter-loader.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAUlD,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,KAAK,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,gBAAgB,EAAE,MAAM,CAAC;QACzB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,EAAE,MAAM,CAAC;QACrB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC,CAAC;CACJ;AAED;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAoC;IACpD,OAAO,CAAC,QAAQ,CAAgC;;IAMhD;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB;IAS1B;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,eAAe,CAAC;IAiB9C;;OAEG;IACH,cAAc,IAAI,QAAQ,EAAE;IAI5B;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAI9C;;;;;;;;;;;;OAYG;IACG,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IA4BnC;;OAEG;YACW,aAAa;IAS3B;;OAEG;YACW,UAAU;IASxB;;OAEG;IACG,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoB3D;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAsCnC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAUzB;;OAEG;IACG,qBAAqB,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;CAoBxE"}
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Adapter Loader
|
|
3
|
+
*
|
|
4
|
+
* Loads adapters from registry, detects tools, and provides API for init command.
|
|
5
|
+
* Enables SpecWeave to work with ANY AI coding tool.
|
|
6
|
+
*/
|
|
7
|
+
import fs from 'fs-extra';
|
|
8
|
+
import * as path from 'path';
|
|
9
|
+
import * as YAML from 'yaml';
|
|
10
|
+
import { execSync } from 'child_process';
|
|
11
|
+
import { CursorAdapter } from './cursor/adapter.js';
|
|
12
|
+
import { CopilotAdapter } from './copilot/adapter.js';
|
|
13
|
+
import { GeminiAdapter } from './gemini/adapter.js';
|
|
14
|
+
import { CodexAdapter } from './codex/adapter.js';
|
|
15
|
+
import { GenericAdapter } from './generic/adapter.js';
|
|
16
|
+
import { getDirname } from '../utils/esm-helpers.js';
|
|
17
|
+
const __dirname = getDirname(import.meta.url);
|
|
18
|
+
/**
|
|
19
|
+
* Adapter Loader - Main API for working with adapters
|
|
20
|
+
*/
|
|
21
|
+
export class AdapterLoader {
|
|
22
|
+
constructor() {
|
|
23
|
+
this.adapters = new Map();
|
|
24
|
+
this.registry = null;
|
|
25
|
+
this.initializeAdapters();
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Initialize all adapters
|
|
29
|
+
*
|
|
30
|
+
* NOTE: Claude Code is NOT an adapter - it's the native/default experience!
|
|
31
|
+
* Adapters only exist for tools that need to APPROXIMATE Claude's native capabilities.
|
|
32
|
+
*/
|
|
33
|
+
initializeAdapters() {
|
|
34
|
+
// Note: No ClaudeAdapter - Claude is the baseline, not an adaptation!
|
|
35
|
+
this.adapters.set('cursor', new CursorAdapter());
|
|
36
|
+
this.adapters.set('copilot', new CopilotAdapter());
|
|
37
|
+
this.adapters.set('gemini', new GeminiAdapter());
|
|
38
|
+
this.adapters.set('codex', new CodexAdapter());
|
|
39
|
+
this.adapters.set('generic', new GenericAdapter());
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Load registry.yaml
|
|
43
|
+
*/
|
|
44
|
+
async loadRegistry() {
|
|
45
|
+
if (this.registry) {
|
|
46
|
+
return this.registry;
|
|
47
|
+
}
|
|
48
|
+
// Try dist first, then fall back to src (for development)
|
|
49
|
+
let registryPath = path.join(__dirname, 'registry.yaml');
|
|
50
|
+
if (!await fs.pathExists(registryPath)) {
|
|
51
|
+
registryPath = path.join(__dirname, '../../src/adapters/registry.yaml');
|
|
52
|
+
}
|
|
53
|
+
const content = await fs.readFile(registryPath, 'utf-8');
|
|
54
|
+
this.registry = YAML.parse(content);
|
|
55
|
+
return this.registry;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Get all available adapters
|
|
59
|
+
*/
|
|
60
|
+
getAllAdapters() {
|
|
61
|
+
return Array.from(this.adapters.values());
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Get adapter by name
|
|
65
|
+
*/
|
|
66
|
+
getAdapter(name) {
|
|
67
|
+
return this.adapters.get(name);
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Auto-detect which tool is being used
|
|
71
|
+
*
|
|
72
|
+
* Detection priority (based on market share and probability):
|
|
73
|
+
* 1. Claude Code (if .claude/ exists or claude CLI found) - NATIVE, no adapter needed
|
|
74
|
+
* 2. Cursor (if cursor CLI or .cursor/ or .cursorrules exists)
|
|
75
|
+
* 3. Gemini CLI (if gemini CLI found)
|
|
76
|
+
* 4. Codex (if codex CLI found)
|
|
77
|
+
* 5. Copilot (if .github/copilot/ exists)
|
|
78
|
+
* 6. Generic (fallback - always returns true)
|
|
79
|
+
*
|
|
80
|
+
* @returns Promise<string> Detected tool name (not adapter - Claude has no adapter!)
|
|
81
|
+
*/
|
|
82
|
+
async detectTool() {
|
|
83
|
+
console.log('🔍 Detecting AI coding tool...\n');
|
|
84
|
+
// Check for Claude first (native, no adapter)
|
|
85
|
+
if (await this.commandExists('claude') || await this.fileExists('.claude')) {
|
|
86
|
+
console.log(`✅ Detected: Claude Code (native - full automation)`);
|
|
87
|
+
return 'claude';
|
|
88
|
+
}
|
|
89
|
+
// Check other tools (need adapters)
|
|
90
|
+
const detectionOrder = ['cursor', 'gemini', 'codex', 'copilot', 'generic'];
|
|
91
|
+
for (const adapterName of detectionOrder) {
|
|
92
|
+
const adapter = this.adapters.get(adapterName);
|
|
93
|
+
if (!adapter)
|
|
94
|
+
continue;
|
|
95
|
+
const detected = await adapter.detect();
|
|
96
|
+
if (detected) {
|
|
97
|
+
console.log(`✅ Detected: ${adapter.name} (${adapter.automationLevel} automation)`);
|
|
98
|
+
return adapterName;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
// Fallback to generic (should never reach here since generic always returns true)
|
|
102
|
+
console.log('ℹ️ Using generic adapter (manual workflow)');
|
|
103
|
+
return 'generic';
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Helper: Check if a command exists in PATH
|
|
107
|
+
*/
|
|
108
|
+
async commandExists(command) {
|
|
109
|
+
try {
|
|
110
|
+
execSync(`which ${command}`, { stdio: 'ignore' });
|
|
111
|
+
return true;
|
|
112
|
+
}
|
|
113
|
+
catch (error) {
|
|
114
|
+
return false;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Helper: Check if a file exists
|
|
119
|
+
*/
|
|
120
|
+
async fileExists(filePath) {
|
|
121
|
+
try {
|
|
122
|
+
await fs.access(filePath);
|
|
123
|
+
return true;
|
|
124
|
+
}
|
|
125
|
+
catch (error) {
|
|
126
|
+
return false;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Check requirements for a specific adapter
|
|
131
|
+
*/
|
|
132
|
+
async checkRequirements(adapterName) {
|
|
133
|
+
const adapter = this.adapters.get(adapterName);
|
|
134
|
+
if (!adapter) {
|
|
135
|
+
throw new Error(`Adapter not found: ${adapterName}`);
|
|
136
|
+
}
|
|
137
|
+
const result = await adapter.checkRequirements();
|
|
138
|
+
if (!result.met) {
|
|
139
|
+
console.error('\n❌ Requirements not met:\n');
|
|
140
|
+
result.missing.forEach(req => console.error(` - ${req}`));
|
|
141
|
+
throw new Error('System requirements not met');
|
|
142
|
+
}
|
|
143
|
+
if (result.warnings.length > 0) {
|
|
144
|
+
console.warn('\n⚠️ Warnings:\n');
|
|
145
|
+
result.warnings.forEach(warning => console.warn(` - ${warning}`));
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* List all available adapters with details
|
|
150
|
+
*/
|
|
151
|
+
async listAdapters() {
|
|
152
|
+
const registry = await this.loadRegistry();
|
|
153
|
+
console.log('\n📋 SpecWeave Tool Support:\n');
|
|
154
|
+
console.log('━'.repeat(70));
|
|
155
|
+
console.log('');
|
|
156
|
+
// Show Claude first (baseline, not an adapter)
|
|
157
|
+
const claudeInfo = registry.adapters.find(a => a.name === 'claude');
|
|
158
|
+
if (claudeInfo) {
|
|
159
|
+
console.log(`🚀 CLAUDE CODE (Baseline - No Adapter Needed)`);
|
|
160
|
+
console.log(` ${claudeInfo.description}`);
|
|
161
|
+
console.log(` Native: skills, agents, hooks, slash commands | Market: ${claudeInfo.market_share}`);
|
|
162
|
+
console.log('');
|
|
163
|
+
}
|
|
164
|
+
console.log('📦 Adapters (For Other Tools):\n');
|
|
165
|
+
// Show other adapters
|
|
166
|
+
for (const adapterInfo of registry.adapters) {
|
|
167
|
+
if (adapterInfo.name === 'claude')
|
|
168
|
+
continue; // Skip Claude, already shown
|
|
169
|
+
const adapter = this.adapters.get(adapterInfo.name);
|
|
170
|
+
if (!adapter)
|
|
171
|
+
continue;
|
|
172
|
+
console.log(`${this.getAutomationIcon(adapter.automationLevel)} ${adapter.name.toUpperCase()}`);
|
|
173
|
+
console.log(` ${adapter.description}`);
|
|
174
|
+
console.log(` Automation: ${adapter.automationLevel} | Market: ${adapterInfo.market_share}`);
|
|
175
|
+
console.log('');
|
|
176
|
+
}
|
|
177
|
+
console.log('━'.repeat(70));
|
|
178
|
+
console.log('\nTotal Market Coverage: 100%');
|
|
179
|
+
console.log('SpecWeave works with ANY AI coding tool!');
|
|
180
|
+
console.log('\n💡 Claude Code = Native experience (no adapter)');
|
|
181
|
+
console.log(' Other tools = Adapters approximate Claude\'s capabilities\n');
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Get icon for automation level
|
|
185
|
+
*/
|
|
186
|
+
getAutomationIcon(level) {
|
|
187
|
+
switch (level) {
|
|
188
|
+
case 'full': return '🚀';
|
|
189
|
+
case 'semi': return '⚡';
|
|
190
|
+
case 'basic': return '📝';
|
|
191
|
+
case 'manual': return '📖';
|
|
192
|
+
default: return '❓';
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Get recommended adapter based on detection and user preference
|
|
197
|
+
*/
|
|
198
|
+
async getRecommendedAdapter(explicitChoice) {
|
|
199
|
+
// If user explicitly chose an adapter, use it
|
|
200
|
+
if (explicitChoice) {
|
|
201
|
+
const adapter = this.adapters.get(explicitChoice);
|
|
202
|
+
if (!adapter) {
|
|
203
|
+
throw new Error(`Invalid adapter: ${explicitChoice}. Use 'claude', 'cursor', 'copilot', or 'generic'`);
|
|
204
|
+
}
|
|
205
|
+
return adapter;
|
|
206
|
+
}
|
|
207
|
+
// Otherwise, auto-detect
|
|
208
|
+
const detectedName = await this.detectTool();
|
|
209
|
+
const adapter = this.adapters.get(detectedName);
|
|
210
|
+
if (!adapter) {
|
|
211
|
+
throw new Error(`Detected adapter not found: ${detectedName}`);
|
|
212
|
+
}
|
|
213
|
+
return adapter;
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
//# sourceMappingURL=adapter-loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter-loader.js","sourceRoot":"","sources":["../../src/adapters/adapter-loader.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErD,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAgB9C;;GAEG;AACH,MAAM,OAAO,aAAa;IAIxB;QAHQ,aAAQ,GAA0B,IAAI,GAAG,EAAE,CAAC;QAC5C,aAAQ,GAA2B,IAAI,CAAC;QAG9C,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC5B,CAAC;IAED;;;;;OAKG;IACK,kBAAkB;QACxB,sEAAsE;QACtE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,aAAa,EAAE,CAAC,CAAC;QACjD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,cAAc,EAAE,CAAC,CAAC;QACnD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,aAAa,EAAE,CAAC,CAAC;QACjD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,YAAY,EAAE,CAAC,CAAC;QAC/C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,cAAc,EAAE,CAAC,CAAC;IACrD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY;QAChB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,OAAO,IAAI,CAAC,QAAQ,CAAC;QACvB,CAAC;QAED,0DAA0D;QAC1D,IAAI,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;QACzD,IAAI,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YACvC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,kCAAkC,CAAC,CAAC;QAC1E,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QACzD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAoB,CAAC;QAEvD,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,IAAY;QACrB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,UAAU;QACd,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;QAEhD,8CAA8C;QAC9C,IAAI,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC3E,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;YAClE,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,oCAAoC;QACpC,MAAM,cAAc,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;QAE3E,KAAK,MAAM,WAAW,IAAI,cAAc,EAAE,CAAC;YACzC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YAC/C,IAAI,CAAC,OAAO;gBAAE,SAAS;YAEvB,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC;YACxC,IAAI,QAAQ,EAAE,CAAC;gBACb,OAAO,CAAC,GAAG,CAAC,eAAe,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,eAAe,cAAc,CAAC,CAAC;gBACnF,OAAO,WAAW,CAAC;YACrB,CAAC;QACH,CAAC;QAED,kFAAkF;QAClF,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;QAC3D,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,aAAa,CAAC,OAAe;QACzC,IAAI,CAAC;YACH,QAAQ,CAAC,SAAS,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;YAClD,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,UAAU,CAAC,QAAgB;QACvC,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC1B,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iBAAiB,CAAC,WAAmB;QACzC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC/C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,sBAAsB,WAAW,EAAE,CAAC,CAAC;QACvD,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,iBAAiB,EAAE,CAAC;QAEjD,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;YAChB,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;YAC7C,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC;YAC3D,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;QACjD,CAAC;QAED,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;YAClC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,OAAO,EAAE,CAAC,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY;QAChB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAE3C,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;QAC9C,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEhB,+CAA+C;QAC/C,MAAM,UAAU,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;QACpE,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;YAC7D,OAAO,CAAC,GAAG,CAAC,MAAM,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;YAC5C,OAAO,CAAC,GAAG,CAAC,8DAA8D,UAAU,CAAC,YAAY,EAAE,CAAC,CAAC;YACrG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClB,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;QAEhD,sBAAsB;QACtB,KAAK,MAAM,WAAW,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;YAC5C,IAAI,WAAW,CAAC,IAAI,KAAK,QAAQ;gBAAE,SAAS,CAAC,6BAA6B;YAE1E,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YACpD,IAAI,CAAC,OAAO;gBAAE,SAAS;YAEvB,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;YAChG,OAAO,CAAC,GAAG,CAAC,MAAM,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;YACzC,OAAO,CAAC,GAAG,CAAC,kBAAkB,OAAO,CAAC,eAAe,cAAc,WAAW,CAAC,YAAY,EAAE,CAAC,CAAC;YAC/F,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClB,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;QACxD,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;QACjE,OAAO,CAAC,GAAG,CAAC,gEAAgE,CAAC,CAAC;IAChF,CAAC;IAED;;OAEG;IACK,iBAAiB,CAAC,KAAa;QACrC,QAAQ,KAAK,EAAE,CAAC;YACd,KAAK,MAAM,CAAC,CAAC,OAAO,IAAI,CAAC;YACzB,KAAK,MAAM,CAAC,CAAC,OAAO,GAAG,CAAC;YACxB,KAAK,OAAO,CAAC,CAAC,OAAO,IAAI,CAAC;YAC1B,KAAK,QAAQ,CAAC,CAAC,OAAO,IAAI,CAAC;YAC3B,OAAO,CAAC,CAAC,OAAO,GAAG,CAAC;QACtB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,qBAAqB,CAAC,cAAuB;QACjD,8CAA8C;QAC9C,IAAI,cAAc,EAAE,CAAC;YACnB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YAClD,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,IAAI,KAAK,CAAC,oBAAoB,cAAc,mDAAmD,CAAC,CAAC;YACzG,CAAC;YACD,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,yBAAyB;QACzB,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAEhD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,+BAA+B,YAAY,EAAE,CAAC,CAAC;QACjE,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;CACF"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AGENTS.md Generator
|
|
3
|
+
*
|
|
4
|
+
* Generates a universal AGENTS.md file for ALL AI coding tools EXCEPT Claude Code.
|
|
5
|
+
* Follows the agents.md standard: https://agents.md/
|
|
6
|
+
*
|
|
7
|
+
* IMPORTANT:
|
|
8
|
+
* - Claude Code does NOT read this file - it only reads CLAUDE.md
|
|
9
|
+
* - This file is for: Cursor, Gemini CLI, Codex, GitHub Copilot, and ANY other AI tool
|
|
10
|
+
*
|
|
11
|
+
* This ONE file replaces:
|
|
12
|
+
* - .cursorrules (Cursor)
|
|
13
|
+
* - .github/copilot/instructions.md (Copilot)
|
|
14
|
+
* - Any other tool-specific configuration files
|
|
15
|
+
*/
|
|
16
|
+
export interface AgentsMdOptions {
|
|
17
|
+
projectName: string;
|
|
18
|
+
projectPath: string;
|
|
19
|
+
templatePath?: string;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Generate universal AGENTS.md file
|
|
23
|
+
*/
|
|
24
|
+
export declare class AgentsMdGenerator {
|
|
25
|
+
private docGen;
|
|
26
|
+
constructor(skillsDir?: string, agentsDir?: string, commandsDir?: string);
|
|
27
|
+
/**
|
|
28
|
+
* Generate complete AGENTS.md content
|
|
29
|
+
*/
|
|
30
|
+
generate(options: AgentsMdOptions): Promise<string>;
|
|
31
|
+
/**
|
|
32
|
+
* Generate agents section as simple Markdown
|
|
33
|
+
*/
|
|
34
|
+
private generateAgentsSection;
|
|
35
|
+
/**
|
|
36
|
+
* Get agent activation guidance
|
|
37
|
+
*/
|
|
38
|
+
private getAgentActivation;
|
|
39
|
+
/**
|
|
40
|
+
* Generate skills section as simple Markdown
|
|
41
|
+
*/
|
|
42
|
+
private generateSkillsSection;
|
|
43
|
+
/**
|
|
44
|
+
* Get skill activation guidance
|
|
45
|
+
*/
|
|
46
|
+
private getSkillActivation;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=agents-md-generator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agents-md-generator.d.ts","sourceRoot":"","sources":["../../src/adapters/agents-md-generator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AASH,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAe;gBAG3B,SAAS,CAAC,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,MAAM,EAClB,WAAW,CAAC,EAAE,MAAM;IAKtB;;OAEG;IACG,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC;IAwBzD;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAa7B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAqB1B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAa7B;;OAEG;IACH,OAAO,CAAC,kBAAkB;CAgC3B"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AGENTS.md Generator
|
|
3
|
+
*
|
|
4
|
+
* Generates a universal AGENTS.md file for ALL AI coding tools EXCEPT Claude Code.
|
|
5
|
+
* Follows the agents.md standard: https://agents.md/
|
|
6
|
+
*
|
|
7
|
+
* IMPORTANT:
|
|
8
|
+
* - Claude Code does NOT read this file - it only reads CLAUDE.md
|
|
9
|
+
* - This file is for: Cursor, Gemini CLI, Codex, GitHub Copilot, and ANY other AI tool
|
|
10
|
+
*
|
|
11
|
+
* This ONE file replaces:
|
|
12
|
+
* - .cursorrules (Cursor)
|
|
13
|
+
* - .github/copilot/instructions.md (Copilot)
|
|
14
|
+
* - Any other tool-specific configuration files
|
|
15
|
+
*/
|
|
16
|
+
import { DocGenerator } from './doc-generator.js';
|
|
17
|
+
import * as path from 'path';
|
|
18
|
+
import fs from 'fs-extra';
|
|
19
|
+
import { getDirname } from '../utils/esm-helpers.js';
|
|
20
|
+
const __dirname = getDirname(import.meta.url);
|
|
21
|
+
/**
|
|
22
|
+
* Generate universal AGENTS.md file
|
|
23
|
+
*/
|
|
24
|
+
export class AgentsMdGenerator {
|
|
25
|
+
constructor(skillsDir, agentsDir, commandsDir) {
|
|
26
|
+
this.docGen = new DocGenerator(skillsDir, agentsDir, commandsDir);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Generate complete AGENTS.md content
|
|
30
|
+
*/
|
|
31
|
+
async generate(options) {
|
|
32
|
+
// Read template
|
|
33
|
+
const templatePath = options.templatePath ||
|
|
34
|
+
path.join(__dirname, '../templates/AGENTS.md.template');
|
|
35
|
+
if (!await fs.pathExists(templatePath)) {
|
|
36
|
+
throw new Error(`AGENTS.md template not found at: ${templatePath}`);
|
|
37
|
+
}
|
|
38
|
+
let content = await fs.readFile(templatePath, 'utf-8');
|
|
39
|
+
// Extract agents and skills
|
|
40
|
+
const skills = await this.docGen.extractSkills();
|
|
41
|
+
const agents = await this.docGen.extractAgents();
|
|
42
|
+
// Replace placeholders
|
|
43
|
+
content = content.replace(/\{PROJECT_NAME\}/g, options.projectName);
|
|
44
|
+
content = content.replace('{AGENTS_SECTION}', this.generateAgentsSection(agents));
|
|
45
|
+
content = content.replace('{SKILLS_SECTION}', this.generateSkillsSection(skills));
|
|
46
|
+
content = content.replace('{TIMESTAMP}', new Date().toISOString().split('T')[0]);
|
|
47
|
+
return content;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Generate agents section as simple Markdown
|
|
51
|
+
*/
|
|
52
|
+
generateAgentsSection(agents) {
|
|
53
|
+
let section = '';
|
|
54
|
+
for (const agent of agents) {
|
|
55
|
+
section += `### ${agent.role}\n`;
|
|
56
|
+
section += `**Purpose**: ${agent.description}\n`;
|
|
57
|
+
section += `**When to use**: ${this.getAgentActivation(agent.name)}\n`;
|
|
58
|
+
section += `**Location**: \`.claude/agents/${agent.name}/AGENT.md\`\n\n`;
|
|
59
|
+
}
|
|
60
|
+
return section;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Get agent activation guidance
|
|
64
|
+
*/
|
|
65
|
+
getAgentActivation(agentName) {
|
|
66
|
+
const activations = {
|
|
67
|
+
'pm': 'Creating requirements, user stories, product specs (WHAT/WHY)',
|
|
68
|
+
'architect': 'System design, architecture decisions, technical plans (HOW)',
|
|
69
|
+
'devops': 'Infrastructure, deployment, CI/CD pipelines',
|
|
70
|
+
'qa-lead': 'Test strategy, test cases, quality assurance',
|
|
71
|
+
'security': 'Threat modeling, security review, vulnerability assessment',
|
|
72
|
+
'tech-lead': 'Code review, best practices, refactoring',
|
|
73
|
+
'frontend': 'UI components, React/Vue/Angular implementation',
|
|
74
|
+
'nodejs-backend': 'Node.js/Express/NestJS backend APIs',
|
|
75
|
+
'python-backend': 'FastAPI/Django backend APIs',
|
|
76
|
+
'nextjs': 'Next.js App Router applications',
|
|
77
|
+
'dotnet-backend': 'ASP.NET Core backend APIs',
|
|
78
|
+
'sre': 'Incident response, troubleshooting, runbooks',
|
|
79
|
+
'docs-writer': 'Technical documentation, API docs, guides',
|
|
80
|
+
'performance': 'Performance optimization, profiling, benchmarking'
|
|
81
|
+
};
|
|
82
|
+
return activations[agentName] || 'Specialized tasks requiring this expertise';
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Generate skills section as simple Markdown
|
|
86
|
+
*/
|
|
87
|
+
generateSkillsSection(skills) {
|
|
88
|
+
let section = '';
|
|
89
|
+
for (const skill of skills) {
|
|
90
|
+
section += `### ${skill.name}\n`;
|
|
91
|
+
section += `**Purpose**: ${skill.description}\n`;
|
|
92
|
+
section += `**When to use**: ${this.getSkillActivation(skill.name)}\n`;
|
|
93
|
+
section += `**Location**: \`.claude/skills/${skill.name}/SKILL.md\`\n\n`;
|
|
94
|
+
}
|
|
95
|
+
return section;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Get skill activation guidance
|
|
99
|
+
*/
|
|
100
|
+
getSkillActivation(skillName) {
|
|
101
|
+
const activations = {
|
|
102
|
+
'specweave-detector': 'User asks about SpecWeave commands or workflows',
|
|
103
|
+
'increment-planner': 'Creating new feature increments (/inc command)',
|
|
104
|
+
'context-loader': 'Working on increments, need to load relevant context',
|
|
105
|
+
'skill-router': 'Ambiguous requests that need routing to specific skills',
|
|
106
|
+
'spec-driven-debugging': 'Bug investigation, test failures, unexpected behavior',
|
|
107
|
+
'spec-driven-brainstorming': 'Brainstorming ideas, refining concepts, design thinking',
|
|
108
|
+
'brownfield-analyzer': 'Analyzing existing projects for SpecWeave migration',
|
|
109
|
+
'brownfield-onboarder': 'Onboarding existing projects to SpecWeave',
|
|
110
|
+
'nodejs-backend': 'Node.js/Express/NestJS backend development',
|
|
111
|
+
'python-backend': 'Python/FastAPI/Django backend development',
|
|
112
|
+
'nextjs': 'Next.js App Router application development',
|
|
113
|
+
'frontend': 'React/Vue/Angular frontend development',
|
|
114
|
+
'dotnet-backend': 'ASP.NET Core backend development',
|
|
115
|
+
'e2e-playwright': 'End-to-end testing with Playwright',
|
|
116
|
+
'jira-sync': 'JIRA integration and synchronization',
|
|
117
|
+
'github-sync': 'GitHub issues/milestones synchronization',
|
|
118
|
+
'ado-sync': 'Azure DevOps synchronization',
|
|
119
|
+
'hetzner-provisioner': 'Hetzner Cloud infrastructure provisioning',
|
|
120
|
+
'cost-optimizer': 'Cloud cost optimization and platform comparison',
|
|
121
|
+
'figma-mcp-connector': 'Figma design integration via MCP',
|
|
122
|
+
'design-system-architect': 'Design system and Atomic Design methodology',
|
|
123
|
+
'figma-designer': 'Figma design creation and design tokens',
|
|
124
|
+
'figma-implementer': 'Converting Figma designs to code',
|
|
125
|
+
'figma-to-code': 'Figma to React/Angular code generation',
|
|
126
|
+
'role-orchestrator': 'Multi-agent orchestration for complex tasks',
|
|
127
|
+
'increment-quality-judge': 'AI-powered quality assessment of specs and plans'
|
|
128
|
+
};
|
|
129
|
+
return activations[skillName] || 'Specialized tasks';
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
//# sourceMappingURL=agents-md-generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agents-md-generator.js","sourceRoot":"","sources":["../../src/adapters/agents-md-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
* This is the BASELINE adapter - all other adapters try to approximate this experience
|
|
8
8
|
* within their tool's capabilities.
|
|
9
9
|
*/
|
|
10
|
-
import { AdapterBase } from '../adapter-base';
|
|
11
|
-
import { AdapterOptions, AdapterFile } from '../adapter-interface';
|
|
10
|
+
import { AdapterBase } from '../adapter-base.js';
|
|
11
|
+
import { AdapterOptions, AdapterFile } from '../adapter-interface.js';
|
|
12
12
|
export declare class ClaudeAdapter extends AdapterBase {
|
|
13
13
|
name: string;
|
|
14
14
|
description: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/adapters/claude/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EAAE,WAAW,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/adapters/claude/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtE,qBAAa,aAAc,SAAQ,WAAW;IAC5C,IAAI,SAAY;IAChB,WAAW,SAA0F;IACrG,eAAe,EAAG,MAAM,CAAU;IAElC;;;;;;OAMG;IACG,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAUhC;;;;;;;;OAQG;IACH,QAAQ,IAAI,WAAW,EAAE;IAYzB;;;;;;;;;OASG;IACG,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAwBrD;;OAEG;IACG,WAAW,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzD;;OAEG;IACH,eAAe,IAAI,MAAM;CAsD1B"}
|