clavix 1.3.0 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/README.md +35 -8
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +82 -28
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/core/adapters/agents-md-generator.d.ts +26 -0
- package/dist/core/adapters/agents-md-generator.d.ts.map +1 -0
- package/dist/core/adapters/agents-md-generator.js +102 -0
- package/dist/core/adapters/agents-md-generator.js.map +1 -0
- package/dist/core/adapters/amp-adapter.d.ts +26 -0
- package/dist/core/adapters/amp-adapter.d.ts.map +1 -0
- package/dist/core/adapters/amp-adapter.js +39 -0
- package/dist/core/adapters/amp-adapter.js.map +1 -0
- package/dist/core/adapters/base-adapter.d.ts +40 -0
- package/dist/core/adapters/base-adapter.d.ts.map +1 -0
- package/dist/core/adapters/base-adapter.js +125 -0
- package/dist/core/adapters/base-adapter.js.map +1 -0
- package/dist/core/adapters/claude-code-adapter.d.ts +9 -10
- package/dist/core/adapters/claude-code-adapter.d.ts.map +1 -1
- package/dist/core/adapters/claude-code-adapter.js +12 -26
- package/dist/core/adapters/claude-code-adapter.js.map +1 -1
- package/dist/core/adapters/cursor-adapter.d.ts +24 -0
- package/dist/core/adapters/cursor-adapter.d.ts.map +1 -0
- package/dist/core/adapters/cursor-adapter.js +37 -0
- package/dist/core/adapters/cursor-adapter.js.map +1 -0
- package/dist/core/adapters/droid-adapter.d.ts +32 -0
- package/dist/core/adapters/droid-adapter.d.ts.map +1 -0
- package/dist/core/adapters/droid-adapter.js +54 -0
- package/dist/core/adapters/droid-adapter.js.map +1 -0
- package/dist/core/adapters/opencode-adapter.d.ts +32 -0
- package/dist/core/adapters/opencode-adapter.d.ts.map +1 -0
- package/dist/core/adapters/opencode-adapter.js +53 -0
- package/dist/core/adapters/opencode-adapter.js.map +1 -0
- package/dist/core/agent-manager.d.ts +15 -1
- package/dist/core/agent-manager.d.ts.map +1 -1
- package/dist/core/agent-manager.js +38 -1
- package/dist/core/agent-manager.js.map +1 -1
- package/dist/templates/agents/agents.md +173 -0
- package/dist/templates/slash-commands/amp/deep.md +147 -0
- package/dist/templates/slash-commands/amp/fast.md +136 -0
- package/dist/templates/slash-commands/amp/prd.md +90 -0
- package/dist/templates/slash-commands/amp/start.md +66 -0
- package/dist/templates/slash-commands/amp/summarize.md +99 -0
- package/dist/templates/slash-commands/claude-code/deep.md +1 -1
- package/dist/templates/slash-commands/claude-code/fast.md +1 -1
- package/dist/templates/slash-commands/cursor/deep.md +147 -0
- package/dist/templates/slash-commands/cursor/fast.md +136 -0
- package/dist/templates/slash-commands/cursor/prd.md +90 -0
- package/dist/templates/slash-commands/cursor/start.md +66 -0
- package/dist/templates/slash-commands/cursor/summarize.md +99 -0
- package/dist/templates/slash-commands/droid/deep.md +147 -0
- package/dist/templates/slash-commands/droid/fast.md +136 -0
- package/dist/templates/slash-commands/droid/prd.md +90 -0
- package/dist/templates/slash-commands/droid/start.md +66 -0
- package/dist/templates/slash-commands/droid/summarize.md +99 -0
- package/dist/templates/slash-commands/opencode/deep.md +147 -0
- package/dist/templates/slash-commands/opencode/fast.md +136 -0
- package/dist/templates/slash-commands/opencode/prd.md +90 -0
- package/dist/templates/slash-commands/opencode/start.md +66 -0
- package/dist/templates/slash-commands/opencode/summarize.md +99 -0
- package/dist/types/agent.d.ts +17 -1
- package/dist/types/agent.d.ts.map +1 -1
- package/dist/types/config.d.ts +19 -0
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/config.js +27 -2
- package/dist/types/config.js.map +1 -1
- package/package.json +1 -1
package/LICENSE
CHANGED
package/README.md
CHANGED
|
@@ -60,11 +60,26 @@ Lo, L. S. (2023). "The CLEAR Path: A Framework for Enhancing Information Literac
|
|
|
60
60
|
- **CLEAR Extraction** - Extract and optimize prompts using CLEAR framework, display both raw and CLEAR-enhanced versions
|
|
61
61
|
- **Search & Filter** - Find sessions by project, agent, status, tags, keywords, or date range
|
|
62
62
|
|
|
63
|
-
### 🤖 AI Agent Integration
|
|
63
|
+
### 🤖 Multi-Provider AI Agent Integration
|
|
64
64
|
|
|
65
|
-
|
|
65
|
+
**Supported Tools:**
|
|
66
|
+
|
|
67
|
+
| Tool | Slash Commands | Directory | Status |
|
|
68
|
+
|------|----------------|-----------|--------|
|
|
69
|
+
| **Claude Code** | ✅ | `.claude/commands/clavix/` | Fully Supported |
|
|
70
|
+
| **Cursor** | ✅ | `.cursor/commands/` | Fully Supported |
|
|
71
|
+
| **Droid CLI** | ✅ | `.factory/commands/` | Fully Supported |
|
|
72
|
+
| **OpenCode** | ✅ | `.opencode/command/` | Fully Supported |
|
|
73
|
+
| **Amp** | ✅ | `.agents/commands/` | Fully Supported |
|
|
74
|
+
| **Universal (agents.md)** | ⚡ No slash commands | `AGENTS.md` | Fully Supported |
|
|
75
|
+
|
|
76
|
+
**Features:**
|
|
77
|
+
- **Multi-Select Support** - Choose multiple tools during `clavix init` (Space to select, Enter to confirm)
|
|
78
|
+
- **Provider-Specific Formatting** - Automatically generates commands in each tool's native format
|
|
79
|
+
- **Universal Fallback** - `agents.md` provides workflow instructions for tools without slash command support
|
|
80
|
+
- **Slash Commands** - `/clavix:fast`, `/clavix:deep`, `/clavix:prd`, `/clavix:start`, `/clavix:summarize` available in all supported tools
|
|
66
81
|
- **Managed Documentation** - Auto-inject and update instructions in `AGENTS.md` and `CLAUDE.md` with safe managed blocks
|
|
67
|
-
- **Extensible Architecture** -
|
|
82
|
+
- **Extensible Architecture** - Plugin-based adapter pattern for easy addition of new providers
|
|
68
83
|
|
|
69
84
|
### ⚙️ Configuration & Management
|
|
70
85
|
|
|
@@ -82,7 +97,7 @@ Lo, L. S. (2023). "The CLEAR Path: A Framework for Enhancing Information Literac
|
|
|
82
97
|
|
|
83
98
|
### 🔧 CLI Commands
|
|
84
99
|
|
|
85
|
-
- `clavix init` - Initialize Clavix in your project with
|
|
100
|
+
- `clavix init` - Initialize Clavix in your project with multi-provider selection (checkbox UI)
|
|
86
101
|
- `clavix fast <prompt>` - CLEAR-guided quick improvements (C, L, E components)
|
|
87
102
|
- `--clear-only` - Show only CLEAR scores without improved prompt
|
|
88
103
|
- `--framework-info` - Display CLEAR framework information
|
|
@@ -120,10 +135,22 @@ cd your-project
|
|
|
120
135
|
clavix init
|
|
121
136
|
```
|
|
122
137
|
|
|
138
|
+
You'll be prompted to select which AI tools to support:
|
|
139
|
+
```
|
|
140
|
+
? Which AI tools are you using? (Space to select, Enter to confirm)
|
|
141
|
+
◉ Claude Code (.claude/commands/clavix/)
|
|
142
|
+
◉ Cursor (.cursor/commands/)
|
|
143
|
+
◯ Droid CLI (.factory/commands/)
|
|
144
|
+
◉ OpenCode (.opencode/command/)
|
|
145
|
+
◯ Amp (.agents/commands/)
|
|
146
|
+
◉ agents.md (Universal)
|
|
147
|
+
```
|
|
148
|
+
|
|
123
149
|
This will:
|
|
124
150
|
- Create `.clavix/` directory with configuration
|
|
125
|
-
- Generate slash commands for
|
|
126
|
-
-
|
|
151
|
+
- Generate slash commands for all selected providers
|
|
152
|
+
- Create universal `AGENTS.md` for tools without slash commands
|
|
153
|
+
- Inject managed blocks into documentation files
|
|
127
154
|
|
|
128
155
|
### 2. Improve a Prompt with CLEAR Framework
|
|
129
156
|
|
|
@@ -150,9 +177,9 @@ Output:
|
|
|
150
177
|
- **Adaptive Variations** - Alternative phrasings and structures (deep mode)
|
|
151
178
|
- **Reflection Checklist** - Validation steps and edge cases (deep mode)
|
|
152
179
|
|
|
153
|
-
### 3. Use Slash Commands (
|
|
180
|
+
### 3. Use Slash Commands (All Providers)
|
|
154
181
|
|
|
155
|
-
After initialization, use these CLEAR-enhanced commands in
|
|
182
|
+
After initialization, use these CLEAR-enhanced commands in your AI tool:
|
|
156
183
|
|
|
157
184
|
- `/clavix:fast [prompt]` - CLEAR-guided quick improvements (C, L, E)
|
|
158
185
|
- `/clavix:deep [prompt]` - Full CLEAR framework analysis (C, L, E, A, R)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAYtC,MAAM,CAAC,OAAO,OAAO,IAAK,SAAQ,OAAO;IACvC,MAAM,CAAC,WAAW,SAA8C;IAEhE,MAAM,CAAC,QAAQ,WAEb;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;YAoKZ,wBAAwB;YAaxB,cAAc;YAWd,oBAAoB;YAqDpB,qBAAqB;YAoBrB,mBAAmB;YAYnB,kBAAkB;IAoChC,OAAO,CAAC,kBAAkB;IAK1B,OAAO,CAAC,kBAAkB;CAI3B"}
|
|
@@ -43,6 +43,7 @@ const path = __importStar(require("path"));
|
|
|
43
43
|
const json5_1 = __importDefault(require("json5"));
|
|
44
44
|
const agent_manager_1 = require("../../core/agent-manager");
|
|
45
45
|
const doc_injector_1 = require("../../core/doc-injector");
|
|
46
|
+
const agents_md_generator_1 = require("../../core/adapters/agents-md-generator");
|
|
46
47
|
const file_system_1 = require("../../utils/file-system");
|
|
47
48
|
const config_1 = require("../../types/config");
|
|
48
49
|
class Init extends core_1.Command {
|
|
@@ -64,35 +65,54 @@ class Init extends core_1.Command {
|
|
|
64
65
|
return;
|
|
65
66
|
}
|
|
66
67
|
}
|
|
67
|
-
// Select
|
|
68
|
+
// Select providers (multi-select)
|
|
68
69
|
const agentManager = new agent_manager_1.AgentManager();
|
|
69
|
-
|
|
70
|
-
console.log(chalk_1.default.gray('
|
|
71
|
-
const {
|
|
70
|
+
console.log(chalk_1.default.gray('Select AI development tools to support:\n'));
|
|
71
|
+
console.log(chalk_1.default.gray('(Space to select, Enter to confirm)\n'));
|
|
72
|
+
const { selectedProviders } = await inquirer_1.default.prompt([
|
|
72
73
|
{
|
|
73
|
-
type: '
|
|
74
|
-
name: '
|
|
75
|
-
message: 'Which AI
|
|
74
|
+
type: 'checkbox',
|
|
75
|
+
name: 'selectedProviders',
|
|
76
|
+
message: 'Which AI tools are you using?',
|
|
76
77
|
choices: [
|
|
77
78
|
{
|
|
78
|
-
name: 'Claude Code
|
|
79
|
+
name: 'Claude Code (.claude/commands/clavix/)',
|
|
79
80
|
value: 'claude-code',
|
|
81
|
+
checked: true,
|
|
80
82
|
},
|
|
81
83
|
{
|
|
82
|
-
name:
|
|
83
|
-
value:
|
|
84
|
-
disabled: true,
|
|
84
|
+
name: 'Cursor (.cursor/commands/)',
|
|
85
|
+
value: 'cursor',
|
|
85
86
|
},
|
|
86
87
|
{
|
|
87
|
-
name:
|
|
88
|
-
value:
|
|
89
|
-
|
|
88
|
+
name: 'Droid CLI (.factory/commands/)',
|
|
89
|
+
value: 'droid',
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
name: 'OpenCode (.opencode/command/)',
|
|
93
|
+
value: 'opencode',
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
name: 'Amp (.agents/commands/)',
|
|
97
|
+
value: 'amp',
|
|
98
|
+
},
|
|
99
|
+
new inquirer_1.default.Separator(),
|
|
100
|
+
{
|
|
101
|
+
name: 'agents.md (Universal - for tools without slash commands)',
|
|
102
|
+
value: 'agents-md',
|
|
103
|
+
checked: true,
|
|
90
104
|
},
|
|
91
105
|
],
|
|
106
|
+
validate: (answer) => {
|
|
107
|
+
if (answer.length === 0) {
|
|
108
|
+
return 'You must select at least one provider.';
|
|
109
|
+
}
|
|
110
|
+
return true;
|
|
111
|
+
},
|
|
92
112
|
},
|
|
93
113
|
]);
|
|
94
|
-
if (!
|
|
95
|
-
console.log(chalk_1.default.red('\n✗ No
|
|
114
|
+
if (!selectedProviders || selectedProviders.length === 0) {
|
|
115
|
+
console.log(chalk_1.default.red('\n✗ No providers selected\n'));
|
|
96
116
|
return;
|
|
97
117
|
}
|
|
98
118
|
// Create .clavix directory structure
|
|
@@ -100,18 +120,52 @@ class Init extends core_1.Command {
|
|
|
100
120
|
await this.createDirectoryStructure();
|
|
101
121
|
// Generate config
|
|
102
122
|
console.log(chalk_1.default.cyan('⚙️ Generating configuration...'));
|
|
103
|
-
await this.generateConfig(
|
|
123
|
+
await this.generateConfig(selectedProviders);
|
|
104
124
|
// Generate INSTRUCTIONS.md
|
|
105
125
|
await this.generateInstructions();
|
|
106
|
-
//
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
126
|
+
// Generate commands for each selected provider
|
|
127
|
+
console.log(chalk_1.default.cyan(`\n📝 Generating commands for ${selectedProviders.length} provider(s)...\n`));
|
|
128
|
+
for (const providerName of selectedProviders) {
|
|
129
|
+
// Handle agents-md separately (it's not an adapter)
|
|
130
|
+
if (providerName === 'agents-md') {
|
|
131
|
+
console.log(chalk_1.default.gray(' ✓ Generating AGENTS.md...'));
|
|
132
|
+
await agents_md_generator_1.AgentsMdGenerator.generate();
|
|
133
|
+
continue;
|
|
134
|
+
}
|
|
135
|
+
const adapter = agentManager.requireAdapter(providerName);
|
|
136
|
+
console.log(chalk_1.default.gray(` ✓ Generating ${adapter.displayName} commands...`));
|
|
137
|
+
// Validate before generating
|
|
138
|
+
if (adapter.validate) {
|
|
139
|
+
const validation = await adapter.validate();
|
|
140
|
+
if (!validation.valid) {
|
|
141
|
+
console.log(chalk_1.default.yellow(` ⚠ Validation warnings for ${adapter.displayName}:`));
|
|
142
|
+
validation.errors?.forEach((err) => console.log(chalk_1.default.yellow(` - ${err}`)));
|
|
143
|
+
const { continueAnyway } = await inquirer_1.default.prompt([
|
|
144
|
+
{
|
|
145
|
+
type: 'confirm',
|
|
146
|
+
name: 'continueAnyway',
|
|
147
|
+
message: 'Continue anyway?',
|
|
148
|
+
default: false,
|
|
149
|
+
},
|
|
150
|
+
]);
|
|
151
|
+
if (!continueAnyway) {
|
|
152
|
+
console.log(chalk_1.default.yellow(` ⊗ Skipped ${adapter.displayName}`));
|
|
153
|
+
continue;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
// Migrate from old command structure if needed (Claude Code only)
|
|
158
|
+
if (providerName === 'claude-code') {
|
|
159
|
+
await this.migrateOldCommands(adapter);
|
|
160
|
+
}
|
|
161
|
+
// Generate slash commands
|
|
162
|
+
await this.generateSlashCommands(adapter);
|
|
163
|
+
// Inject documentation blocks (Claude Code only)
|
|
164
|
+
if (providerName === 'claude-code') {
|
|
165
|
+
console.log(chalk_1.default.gray(' ✓ Injecting CLAUDE.md documentation...'));
|
|
166
|
+
await this.injectDocumentation(adapter);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
115
169
|
// Success message
|
|
116
170
|
console.log(chalk_1.default.bold.green('\n✅ Clavix initialized successfully!\n'));
|
|
117
171
|
console.log(chalk_1.default.gray('Next steps:'));
|
|
@@ -140,10 +194,10 @@ class Init extends core_1.Command {
|
|
|
140
194
|
await file_system_1.FileSystem.ensureDir(dir);
|
|
141
195
|
}
|
|
142
196
|
}
|
|
143
|
-
async generateConfig(
|
|
197
|
+
async generateConfig(providers) {
|
|
144
198
|
const config = {
|
|
145
199
|
...config_1.DEFAULT_CONFIG,
|
|
146
|
-
|
|
200
|
+
providers,
|
|
147
201
|
};
|
|
148
202
|
const configPath = '.clavix/config.json';
|
|
149
203
|
const configContent = json5_1.default.stringify(config, null, 2);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,sCAAsC;AACtC,wDAAgC;AAChC,kDAA0B;AAC1B,2CAA6B;AAC7B,kDAA0B;AAC1B,4DAAwD;AACxD,0DAAsD;AACtD,yDAAqD;AACrD,+CAAkE;AAGlE,MAAqB,IAAK,SAAQ,cAAO;IAOvC,KAAK,CAAC,GAAG;QACP,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC,CAAC;QAE7D,IAAI,CAAC;YACH,+BAA+B;YAC/B,IAAI,MAAM,wBAAU,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;gBACvC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;oBACvC;wBACE,IAAI,EAAE,SAAS;wBACf,IAAI,EAAE,QAAQ;wBACd,OAAO,EAAE,8CAA8C;wBACvD,OAAO,EAAE,KAAK;qBACf;iBACF,CAAC,CAAC;gBAEH,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,gCAAgC,CAAC,CAAC,CAAC;oBAC5D,OAAO;gBACT,CAAC;YACH,CAAC;YAED,
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generator for universal AGENTS.md file
|
|
3
|
+
* Provides workflow instructions for AI tools without slash command support
|
|
4
|
+
*/
|
|
5
|
+
export declare class AgentsMdGenerator {
|
|
6
|
+
static readonly TARGET_FILE = "AGENTS.md";
|
|
7
|
+
static readonly START_MARKER = "<!-- CLAVIX:START -->";
|
|
8
|
+
static readonly END_MARKER = "<!-- CLAVIX:END -->";
|
|
9
|
+
/**
|
|
10
|
+
* Generate or update AGENTS.md with Clavix workflows
|
|
11
|
+
*/
|
|
12
|
+
static generate(): Promise<void>;
|
|
13
|
+
/**
|
|
14
|
+
* Inject or update managed block in AGENTS.md
|
|
15
|
+
*/
|
|
16
|
+
private static injectManagedBlock;
|
|
17
|
+
/**
|
|
18
|
+
* Escape special regex characters
|
|
19
|
+
*/
|
|
20
|
+
private static escapeRegex;
|
|
21
|
+
/**
|
|
22
|
+
* Check if AGENTS.md has Clavix block
|
|
23
|
+
*/
|
|
24
|
+
static hasClavixBlock(): Promise<boolean>;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=agents-md-generator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agents-md-generator.d.ts","sourceRoot":"","sources":["../../../src/core/adapters/agents-md-generator.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,qBAAa,iBAAiB;IAC5B,MAAM,CAAC,QAAQ,CAAC,WAAW,eAAe;IAC1C,MAAM,CAAC,QAAQ,CAAC,YAAY,2BAA2B;IACvD,MAAM,CAAC,QAAQ,CAAC,UAAU,yBAAyB;IAEnD;;OAEG;WACU,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAmBtC;;OAEG;mBACkB,kBAAkB;IAkCvC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,WAAW;IAI1B;;OAEG;WACU,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;CAQhD"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.AgentsMdGenerator = void 0;
|
|
37
|
+
const file_system_1 = require("../../utils/file-system");
|
|
38
|
+
const path = __importStar(require("path"));
|
|
39
|
+
/**
|
|
40
|
+
* Generator for universal AGENTS.md file
|
|
41
|
+
* Provides workflow instructions for AI tools without slash command support
|
|
42
|
+
*/
|
|
43
|
+
class AgentsMdGenerator {
|
|
44
|
+
/**
|
|
45
|
+
* Generate or update AGENTS.md with Clavix workflows
|
|
46
|
+
*/
|
|
47
|
+
static async generate() {
|
|
48
|
+
const templatePath = path.join(__dirname, '../../templates/agents/agents.md');
|
|
49
|
+
// Check if template exists
|
|
50
|
+
if (!(await file_system_1.FileSystem.exists(templatePath))) {
|
|
51
|
+
throw new Error(`AGENTS.md template not found at ${templatePath}`);
|
|
52
|
+
}
|
|
53
|
+
const template = await file_system_1.FileSystem.readFile(templatePath);
|
|
54
|
+
// Inject into AGENTS.md using managed blocks
|
|
55
|
+
await this.injectManagedBlock(this.TARGET_FILE, template);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Inject or update managed block in AGENTS.md
|
|
59
|
+
*/
|
|
60
|
+
static async injectManagedBlock(filePath, content) {
|
|
61
|
+
let fileContent = '';
|
|
62
|
+
// Read existing file or start with empty content
|
|
63
|
+
if (await file_system_1.FileSystem.exists(filePath)) {
|
|
64
|
+
fileContent = await file_system_1.FileSystem.readFile(filePath);
|
|
65
|
+
}
|
|
66
|
+
const blockRegex = new RegExp(`${this.escapeRegex(this.START_MARKER)}[\\s\\S]*?${this.escapeRegex(this.END_MARKER)}`, 'g');
|
|
67
|
+
const wrappedContent = `${this.START_MARKER}\n${content}\n${this.END_MARKER}`;
|
|
68
|
+
if (blockRegex.test(fileContent)) {
|
|
69
|
+
// Replace existing block
|
|
70
|
+
fileContent = fileContent.replace(blockRegex, wrappedContent);
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
// Append new block
|
|
74
|
+
if (fileContent && !fileContent.endsWith('\n\n')) {
|
|
75
|
+
fileContent += '\n\n';
|
|
76
|
+
}
|
|
77
|
+
fileContent += wrappedContent + '\n';
|
|
78
|
+
}
|
|
79
|
+
await file_system_1.FileSystem.writeFileAtomic(filePath, fileContent);
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Escape special regex characters
|
|
83
|
+
*/
|
|
84
|
+
static escapeRegex(str) {
|
|
85
|
+
return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Check if AGENTS.md has Clavix block
|
|
89
|
+
*/
|
|
90
|
+
static async hasClavixBlock() {
|
|
91
|
+
if (!(await file_system_1.FileSystem.exists(this.TARGET_FILE))) {
|
|
92
|
+
return false;
|
|
93
|
+
}
|
|
94
|
+
const content = await file_system_1.FileSystem.readFile(this.TARGET_FILE);
|
|
95
|
+
return content.includes(this.START_MARKER);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
exports.AgentsMdGenerator = AgentsMdGenerator;
|
|
99
|
+
AgentsMdGenerator.TARGET_FILE = 'AGENTS.md';
|
|
100
|
+
AgentsMdGenerator.START_MARKER = '<!-- CLAVIX:START -->';
|
|
101
|
+
AgentsMdGenerator.END_MARKER = '<!-- CLAVIX:END -->';
|
|
102
|
+
//# sourceMappingURL=agents-md-generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agents-md-generator.js","sourceRoot":"","sources":["../../../src/core/adapters/agents-md-generator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yDAAqD;AACrD,2CAA6B;AAE7B;;;GAGG;AACH,MAAa,iBAAiB;IAK5B;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,QAAQ;QACnB,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAC5B,SAAS,EACT,kCAAkC,CACnC,CAAC;QAEF,2BAA2B;QAC3B,IAAI,CAAC,CAAC,MAAM,wBAAU,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC;YAC7C,MAAM,IAAI,KAAK,CACb,mCAAmC,YAAY,EAAE,CAClD,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,wBAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QAEzD,6CAA6C;QAC7C,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IAC5D,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,KAAK,CAAC,kBAAkB,CACrC,QAAgB,EAChB,OAAe;QAEf,IAAI,WAAW,GAAG,EAAE,CAAC;QAErB,iDAAiD;QACjD,IAAI,MAAM,wBAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;YACtC,WAAW,GAAG,MAAM,wBAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACpD,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,MAAM,CAC3B,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,IAAI,CAAC,WAAW,CACjE,IAAI,CAAC,UAAU,CAChB,EAAE,EACH,GAAG,CACJ,CAAC;QAEF,MAAM,cAAc,GAAG,GAAG,IAAI,CAAC,YAAY,KAAK,OAAO,KAAK,IAAI,CAAC,UAAU,EAAE,CAAC;QAE9E,IAAI,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YACjC,yBAAyB;YACzB,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;QAChE,CAAC;aAAM,CAAC;YACN,mBAAmB;YACnB,IAAI,WAAW,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBACjD,WAAW,IAAI,MAAM,CAAC;YACxB,CAAC;YACD,WAAW,IAAI,cAAc,GAAG,IAAI,CAAC;QACvC,CAAC;QAED,MAAM,wBAAU,CAAC,eAAe,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IAC1D,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,WAAW,CAAC,GAAW;QACpC,OAAO,GAAG,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;IACpD,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,cAAc;QACzB,IAAI,CAAC,CAAC,MAAM,wBAAU,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC;YACjD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,wBAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC5D,OAAO,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC7C,CAAC;;AAjFH,8CAkFC;AAjFiB,6BAAW,GAAG,WAAW,CAAC;AAC1B,8BAAY,GAAG,uBAAuB,CAAC;AACvC,4BAAU,GAAG,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { BaseAdapter } from './base-adapter';
|
|
2
|
+
/**
|
|
3
|
+
* Amp adapter
|
|
4
|
+
* Commands stored in .agents/commands/ (simple markdown, no frontmatter)
|
|
5
|
+
* Supports executable commands (experimental)
|
|
6
|
+
*/
|
|
7
|
+
export declare class AmpAdapter extends BaseAdapter {
|
|
8
|
+
readonly name = "amp";
|
|
9
|
+
readonly displayName = "Amp";
|
|
10
|
+
readonly directory = ".agents/commands";
|
|
11
|
+
readonly fileExtension = ".md";
|
|
12
|
+
readonly features: {
|
|
13
|
+
supportsSubdirectories: boolean;
|
|
14
|
+
supportsFrontmatter: boolean;
|
|
15
|
+
supportsExecutableCommands: boolean;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Detect if Amp is available in the project
|
|
19
|
+
*/
|
|
20
|
+
detectProject(): Promise<boolean>;
|
|
21
|
+
/**
|
|
22
|
+
* Get command path for Amp
|
|
23
|
+
*/
|
|
24
|
+
getCommandPath(): string;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=amp-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"amp-adapter.d.ts","sourceRoot":"","sources":["../../../src/core/adapters/amp-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG7C;;;;GAIG;AACH,qBAAa,UAAW,SAAQ,WAAW;IACzC,QAAQ,CAAC,IAAI,SAAS;IACtB,QAAQ,CAAC,WAAW,SAAS;IAC7B,QAAQ,CAAC,SAAS,sBAAsB;IACxC,QAAQ,CAAC,aAAa,SAAS;IAC/B,QAAQ,CAAC,QAAQ;;;;MAIf;IAEF;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC;IAIvC;;OAEG;IACH,cAAc,IAAI,MAAM;CAKzB"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AmpAdapter = void 0;
|
|
4
|
+
const base_adapter_1 = require("./base-adapter");
|
|
5
|
+
const file_system_1 = require("../../utils/file-system");
|
|
6
|
+
/**
|
|
7
|
+
* Amp adapter
|
|
8
|
+
* Commands stored in .agents/commands/ (simple markdown, no frontmatter)
|
|
9
|
+
* Supports executable commands (experimental)
|
|
10
|
+
*/
|
|
11
|
+
class AmpAdapter extends base_adapter_1.BaseAdapter {
|
|
12
|
+
constructor() {
|
|
13
|
+
super(...arguments);
|
|
14
|
+
this.name = 'amp';
|
|
15
|
+
this.displayName = 'Amp';
|
|
16
|
+
this.directory = '.agents/commands';
|
|
17
|
+
this.fileExtension = '.md';
|
|
18
|
+
this.features = {
|
|
19
|
+
supportsSubdirectories: false,
|
|
20
|
+
supportsFrontmatter: false,
|
|
21
|
+
supportsExecutableCommands: true,
|
|
22
|
+
};
|
|
23
|
+
// Uses default formatCommand from BaseAdapter (no special formatting)
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Detect if Amp is available in the project
|
|
27
|
+
*/
|
|
28
|
+
async detectProject() {
|
|
29
|
+
return await file_system_1.FileSystem.exists('.agents');
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Get command path for Amp
|
|
33
|
+
*/
|
|
34
|
+
getCommandPath() {
|
|
35
|
+
return this.directory;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
exports.AmpAdapter = AmpAdapter;
|
|
39
|
+
//# sourceMappingURL=amp-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"amp-adapter.js","sourceRoot":"","sources":["../../../src/core/adapters/amp-adapter.ts"],"names":[],"mappings":";;;AAAA,iDAA6C;AAC7C,yDAAqD;AAErD;;;;GAIG;AACH,MAAa,UAAW,SAAQ,0BAAW;IAA3C;;QACW,SAAI,GAAG,KAAK,CAAC;QACb,gBAAW,GAAG,KAAK,CAAC;QACpB,cAAS,GAAG,kBAAkB,CAAC;QAC/B,kBAAa,GAAG,KAAK,CAAC;QACtB,aAAQ,GAAG;YAClB,sBAAsB,EAAE,KAAK;YAC7B,mBAAmB,EAAE,KAAK;YAC1B,0BAA0B,EAAE,IAAI;SACjC,CAAC;QAgBF,sEAAsE;IACxE,CAAC;IAfC;;OAEG;IACH,KAAK,CAAC,aAAa;QACjB,OAAO,MAAM,wBAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC5C,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;CAGF;AA1BD,gCA0BC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { AgentAdapter, CommandTemplate, ManagedBlock, ProviderFeatures, ValidationResult } from '../../types/agent';
|
|
2
|
+
/**
|
|
3
|
+
* Base adapter class with shared logic for all providers
|
|
4
|
+
* Ensures consistency and reduces code duplication
|
|
5
|
+
*/
|
|
6
|
+
export declare abstract class BaseAdapter implements AgentAdapter {
|
|
7
|
+
abstract readonly name: string;
|
|
8
|
+
abstract readonly displayName: string;
|
|
9
|
+
abstract readonly directory: string;
|
|
10
|
+
abstract readonly fileExtension: string;
|
|
11
|
+
readonly features?: ProviderFeatures;
|
|
12
|
+
abstract detectProject(): Promise<boolean>;
|
|
13
|
+
abstract getCommandPath(): string;
|
|
14
|
+
/**
|
|
15
|
+
* Default validation logic - can be overridden
|
|
16
|
+
* Checks if directory can be created and is writable
|
|
17
|
+
*/
|
|
18
|
+
validate(): Promise<ValidationResult>;
|
|
19
|
+
/**
|
|
20
|
+
* Generate commands - default implementation
|
|
21
|
+
* Creates command files in the provider's directory
|
|
22
|
+
*/
|
|
23
|
+
generateCommands(templates: CommandTemplate[]): Promise<void>;
|
|
24
|
+
/**
|
|
25
|
+
* Format command content for this provider
|
|
26
|
+
* Default: return content as-is
|
|
27
|
+
* Override for provider-specific formatting (frontmatter, placeholders, etc.)
|
|
28
|
+
*/
|
|
29
|
+
protected formatCommand(template: CommandTemplate): string;
|
|
30
|
+
/**
|
|
31
|
+
* Default documentation injection - no-op
|
|
32
|
+
* Override if provider needs doc injection (like Claude Code)
|
|
33
|
+
*/
|
|
34
|
+
injectDocumentation(_blocks: ManagedBlock[]): Promise<void>;
|
|
35
|
+
/**
|
|
36
|
+
* Escape special regex characters
|
|
37
|
+
*/
|
|
38
|
+
protected escapeRegex(str: string): string;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=base-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-adapter.d.ts","sourceRoot":"","sources":["../../../src/core/adapters/base-adapter.ts"],"names":[],"mappings":"AACA,OAAO,EACL,YAAY,EACZ,eAAe,EACf,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,mBAAmB,CAAC;AAI3B;;;GAGG;AACH,8BAAsB,WAAY,YAAW,YAAY;IACvD,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IACxC,QAAQ,CAAC,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAErC,QAAQ,CAAC,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC;IAC1C,QAAQ,CAAC,cAAc,IAAI,MAAM;IAEjC;;;OAGG;IACG,QAAQ,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAsC3C;;;OAGG;IACG,gBAAgB,CAAC,SAAS,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBnE;;;;OAIG;IACH,SAAS,CAAC,aAAa,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM;IAI1D;;;OAGG;IACG,mBAAmB,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAKjE;;OAEG;IACH,SAAS,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;CAG3C"}
|