@untitled-devs/wasla 0.1.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 +21 -0
- package/README.md +431 -0
- package/dist/adapters/base.d.ts +27 -0
- package/dist/adapters/base.d.ts.map +1 -0
- package/dist/adapters/base.js +9 -0
- package/dist/adapters/base.js.map +1 -0
- package/dist/adapters/claude.d.ts +31 -0
- package/dist/adapters/claude.d.ts.map +1 -0
- package/dist/adapters/claude.js +96 -0
- package/dist/adapters/claude.js.map +1 -0
- package/dist/adapters/cursor.d.ts +30 -0
- package/dist/adapters/cursor.d.ts.map +1 -0
- package/dist/adapters/cursor.js +60 -0
- package/dist/adapters/cursor.js.map +1 -0
- package/dist/adapters/factory.d.ts +5 -0
- package/dist/adapters/factory.d.ts.map +1 -0
- package/dist/adapters/factory.js +40 -0
- package/dist/adapters/factory.js.map +1 -0
- package/dist/adapters/gemini.d.ts +31 -0
- package/dist/adapters/gemini.d.ts.map +1 -0
- package/dist/adapters/gemini.js +99 -0
- package/dist/adapters/gemini.js.map +1 -0
- package/dist/adapters/github-copilot-cli.d.ts +30 -0
- package/dist/adapters/github-copilot-cli.d.ts.map +1 -0
- package/dist/adapters/github-copilot-cli.js +65 -0
- package/dist/adapters/github-copilot-cli.js.map +1 -0
- package/dist/adapters/github-copilot.d.ts +32 -0
- package/dist/adapters/github-copilot.d.ts.map +1 -0
- package/dist/adapters/github-copilot.js +86 -0
- package/dist/adapters/github-copilot.js.map +1 -0
- package/dist/adapters/openclaw.d.ts +28 -0
- package/dist/adapters/openclaw.d.ts.map +1 -0
- package/dist/adapters/openclaw.js +62 -0
- package/dist/adapters/openclaw.js.map +1 -0
- package/dist/adapters/opencode.d.ts +32 -0
- package/dist/adapters/opencode.d.ts.map +1 -0
- package/dist/adapters/opencode.js +102 -0
- package/dist/adapters/opencode.js.map +1 -0
- package/dist/cli/commands/config.d.ts +7 -0
- package/dist/cli/commands/config.d.ts.map +1 -0
- package/dist/cli/commands/config.js +66 -0
- package/dist/cli/commands/config.js.map +1 -0
- package/dist/cli/commands/install.d.ts +2 -0
- package/dist/cli/commands/install.d.ts.map +1 -0
- package/dist/cli/commands/install.js +27 -0
- package/dist/cli/commands/install.js.map +1 -0
- package/dist/cli/commands/register.d.ts +6 -0
- package/dist/cli/commands/register.d.ts.map +1 -0
- package/dist/cli/commands/register.js +56 -0
- package/dist/cli/commands/register.js.map +1 -0
- package/dist/cli/commands/status.d.ts +6 -0
- package/dist/cli/commands/status.d.ts.map +1 -0
- package/dist/cli/commands/status.js +37 -0
- package/dist/cli/commands/status.js.map +1 -0
- package/dist/cli/commands/sync-to.d.ts +8 -0
- package/dist/cli/commands/sync-to.d.ts.map +1 -0
- package/dist/cli/commands/sync-to.js +35 -0
- package/dist/cli/commands/sync-to.js.map +1 -0
- package/dist/cli/commands/sync.d.ts +6 -0
- package/dist/cli/commands/sync.d.ts.map +1 -0
- package/dist/cli/commands/sync.js +27 -0
- package/dist/cli/commands/sync.js.map +1 -0
- package/dist/cli/commands/visualizer.d.ts +11 -0
- package/dist/cli/commands/visualizer.d.ts.map +1 -0
- package/dist/cli/commands/visualizer.js +241 -0
- package/dist/cli/commands/visualizer.js.map +1 -0
- package/dist/cli/commands/watch.d.ts +6 -0
- package/dist/cli/commands/watch.d.ts.map +1 -0
- package/dist/cli/commands/watch.js +86 -0
- package/dist/cli/commands/watch.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +59 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/core/registry.d.ts +20 -0
- package/dist/core/registry.d.ts.map +1 -0
- package/dist/core/registry.js +103 -0
- package/dist/core/registry.js.map +1 -0
- package/dist/core/scanner.d.ts +17 -0
- package/dist/core/scanner.d.ts.map +1 -0
- package/dist/core/scanner.js +227 -0
- package/dist/core/scanner.js.map +1 -0
- package/dist/core/types.d.ts +78 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +2 -0
- package/dist/core/types.js.map +1 -0
- package/dist/core/visualizer-types.d.ts +39 -0
- package/dist/core/visualizer-types.d.ts.map +1 -0
- package/dist/core/visualizer-types.js +2 -0
- package/dist/core/visualizer-types.js.map +1 -0
- package/dist/syncer/index.d.ts +31 -0
- package/dist/syncer/index.d.ts.map +1 -0
- package/dist/syncer/index.js +544 -0
- package/dist/syncer/index.js.map +1 -0
- package/dist/utils/cli-output.d.ts +12 -0
- package/dist/utils/cli-output.d.ts.map +1 -0
- package/dist/utils/cli-output.js +45 -0
- package/dist/utils/cli-output.js.map +1 -0
- package/dist/utils/fs.d.ts +14 -0
- package/dist/utils/fs.d.ts.map +1 -0
- package/dist/utils/fs.js +74 -0
- package/dist/utils/fs.js.map +1 -0
- package/dist/utils/paths.d.ts +7 -0
- package/dist/utils/paths.d.ts.map +1 -0
- package/dist/utils/paths.js +84 -0
- package/dist/utils/paths.js.map +1 -0
- package/package.json +122 -0
- package/src/visualizer/dist/assets/index-BRmeXR7T.js +144 -0
- package/src/visualizer/dist/index.html +12 -0
- package/src/visualizer/dist/logo.png +0 -0
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { BaseAdapter } from './base.js';
|
|
2
|
+
import { fileExists, writeText, ensureDir } from '../utils/fs.js';
|
|
3
|
+
import { dirname, join } from 'path';
|
|
4
|
+
import { getToolMarkers } from '../utils/paths.js';
|
|
5
|
+
export class CursorAdapter extends BaseAdapter {
|
|
6
|
+
constructor(scope = 'workspace') {
|
|
7
|
+
super();
|
|
8
|
+
this.name = 'cursor';
|
|
9
|
+
this.displayName = 'Cursor';
|
|
10
|
+
this.mcpKey = 'mcpServers';
|
|
11
|
+
this.contextFile = 'AGENTS.md';
|
|
12
|
+
this.formats = {
|
|
13
|
+
agent: 'md',
|
|
14
|
+
skill: 'md',
|
|
15
|
+
mcp: 'json',
|
|
16
|
+
context: 'md',
|
|
17
|
+
};
|
|
18
|
+
this.scope = scope;
|
|
19
|
+
}
|
|
20
|
+
get paths() {
|
|
21
|
+
const markers = getToolMarkers(this.scope);
|
|
22
|
+
const base = markers['cursor'];
|
|
23
|
+
return {
|
|
24
|
+
agent: join(base, 'agents'),
|
|
25
|
+
skill: join(base, 'skills'),
|
|
26
|
+
mcp: join(base, 'mcp.json'),
|
|
27
|
+
context: this.scope === 'workspace' ? join(dirname(base), 'AGENTS.md') : undefined,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
get skillDirs() {
|
|
31
|
+
return [this.paths.skill];
|
|
32
|
+
}
|
|
33
|
+
async isInstalled() {
|
|
34
|
+
const markers = getToolMarkers(this.scope);
|
|
35
|
+
return fileExists(markers['cursor']);
|
|
36
|
+
}
|
|
37
|
+
async writeStub(asset, content, targetPath) {
|
|
38
|
+
if (asset.type === 'agent') {
|
|
39
|
+
await this.writeAgentStub(targetPath, content);
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
await this.writeMcpStub(targetPath, content);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
async writeAgentStub(targetPath, content) {
|
|
46
|
+
await ensureDir(dirname(targetPath));
|
|
47
|
+
await writeText(targetPath, content);
|
|
48
|
+
}
|
|
49
|
+
async writeMcpStub(targetPath, content) {
|
|
50
|
+
await ensureDir(dirname(targetPath));
|
|
51
|
+
await writeText(targetPath, content);
|
|
52
|
+
}
|
|
53
|
+
async installSkill() {
|
|
54
|
+
// TBD
|
|
55
|
+
}
|
|
56
|
+
getRootConfigAppend() {
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=cursor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../src/adapters/cursor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,MAAM,OAAO,aAAc,SAAQ,WAAW;IAK5C,YAAY,QAA8B,WAAW;QACnD,KAAK,EAAE,CAAC;QALV,SAAI,GAAG,QAAQ,CAAC;QAChB,gBAAW,GAAG,QAAQ,CAAC;QAmBvB,WAAM,GAAG,YAAY,CAAC;QACtB,gBAAW,GAAG,WAAW,CAAC;QAM1B,YAAO,GAAG;YACR,KAAK,EAAE,IAAa;YACpB,KAAK,EAAE,IAAa;YACpB,GAAG,EAAE,MAAe;YACpB,OAAO,EAAE,IAAa;SACvB,CAAC;QA1BA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,IAAI,KAAK;QACP,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3C,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC/B,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC;YAC3B,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC;YAC3B,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC;YAC3B,OAAO,EAAE,IAAI,CAAC,KAAK,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS;SACnF,CAAC;IACJ,CAAC;IAKD,IAAI,SAAS;QACX,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAM,CAAC,CAAC;IAC7B,CAAC;IASD,KAAK,CAAC,WAAW;QACf,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3C,OAAO,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,KAAY,EAAE,OAAe,EAAE,UAAkB;QAC/D,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC3B,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACjD,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,UAAkB,EAAE,OAAe;QAC9D,MAAM,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;QACrC,MAAM,SAAS,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,UAAkB,EAAE,OAAe;QAC5D,MAAM,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;QACrC,MAAM,SAAS,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,MAAM;IACR,CAAC;IAED,mBAAmB;QACjB,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { WaslaGenieAdapter } from '../core/types.js';
|
|
2
|
+
export declare function getAdapter(toolName: string, scope?: 'user' | 'workspace'): WaslaGenieAdapter;
|
|
3
|
+
export declare function getInstalledAdapters(scope?: 'user' | 'workspace'): Promise<WaslaGenieAdapter[]>;
|
|
4
|
+
export declare function getAllAdapters(scope?: 'user' | 'workspace'): WaslaGenieAdapter[];
|
|
5
|
+
//# sourceMappingURL=factory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/adapters/factory.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAiBrD,wBAAgB,UAAU,CACxB,QAAQ,EAAE,MAAM,EAChB,KAAK,GAAE,MAAM,GAAG,WAAyB,GACxC,iBAAiB,CAOnB;AAED,wBAAsB,oBAAoB,CACxC,KAAK,GAAE,MAAM,GAAG,WAAyB,GACxC,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAW9B;AAED,wBAAgB,cAAc,CAAC,KAAK,GAAE,MAAM,GAAG,WAAyB,GAAG,iBAAiB,EAAE,CAE7F"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { OpenCodeAdapter } from './opencode.js';
|
|
2
|
+
import { CursorAdapter } from './cursor.js';
|
|
3
|
+
import { GithubCopilotAdapter } from './github-copilot.js';
|
|
4
|
+
import { GithubCopilotCliAdapter } from './github-copilot-cli.js';
|
|
5
|
+
import { ClaudeAdapter } from './claude.js';
|
|
6
|
+
import { GeminiAdapter } from './gemini.js';
|
|
7
|
+
import { OpenclawAdapter } from './openclaw.js';
|
|
8
|
+
function createAdapters(scope = 'user') {
|
|
9
|
+
return {
|
|
10
|
+
claude: new ClaudeAdapter(scope),
|
|
11
|
+
gemini: new GeminiAdapter(scope),
|
|
12
|
+
openclaw: new OpenclawAdapter(scope),
|
|
13
|
+
opencode: new OpenCodeAdapter(scope),
|
|
14
|
+
cursor: new CursorAdapter(scope),
|
|
15
|
+
'github-copilot': new GithubCopilotAdapter(scope),
|
|
16
|
+
'github-copilot-cli': new GithubCopilotCliAdapter(scope),
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
export function getAdapter(toolName, scope = 'workspace') {
|
|
20
|
+
const adapters = createAdapters(scope);
|
|
21
|
+
const adapter = adapters[toolName.toLowerCase()];
|
|
22
|
+
if (!adapter) {
|
|
23
|
+
throw new Error(`No adapter found for tool: ${toolName}`);
|
|
24
|
+
}
|
|
25
|
+
return adapter;
|
|
26
|
+
}
|
|
27
|
+
export async function getInstalledAdapters(scope = 'workspace') {
|
|
28
|
+
const adapters = Object.values(createAdapters(scope));
|
|
29
|
+
const installed = [];
|
|
30
|
+
for (const adapter of adapters) {
|
|
31
|
+
if (await adapter.isInstalled()) {
|
|
32
|
+
installed.push(adapter);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return installed;
|
|
36
|
+
}
|
|
37
|
+
export function getAllAdapters(scope = 'workspace') {
|
|
38
|
+
return Object.values(createAdapters(scope));
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=factory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/adapters/factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAElE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD,SAAS,cAAc,CAAC,QAA8B,MAAM;IAC1D,OAAO;QACL,MAAM,EAAE,IAAI,aAAa,CAAC,KAAK,CAAC;QAChC,MAAM,EAAE,IAAI,aAAa,CAAC,KAAK,CAAC;QAChC,QAAQ,EAAE,IAAI,eAAe,CAAC,KAAK,CAAC;QACpC,QAAQ,EAAE,IAAI,eAAe,CAAC,KAAK,CAAC;QACpC,MAAM,EAAE,IAAI,aAAa,CAAC,KAAK,CAAC;QAChC,gBAAgB,EAAE,IAAI,oBAAoB,CAAC,KAAK,CAAC;QACjD,oBAAoB,EAAE,IAAI,uBAAuB,CAAC,KAAK,CAAC;KACzD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,UAAU,CACxB,QAAgB,EAChB,QAA8B,WAAW;IAEzC,MAAM,QAAQ,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IACvC,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;IACjD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,8BAA8B,QAAQ,EAAE,CAAC,CAAC;IAC5D,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,QAA8B,WAAW;IAEzC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;IACtD,MAAM,SAAS,GAAwB,EAAE,CAAC;IAE1C,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,MAAM,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;YAChC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,QAA8B,WAAW;IACtE,OAAO,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9C,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { BaseAdapter } from './base.js';
|
|
2
|
+
import { Asset } from '../core/types.js';
|
|
3
|
+
export declare class GeminiAdapter extends BaseAdapter {
|
|
4
|
+
name: string;
|
|
5
|
+
displayName: string;
|
|
6
|
+
private scope;
|
|
7
|
+
constructor(scope?: 'user' | 'workspace');
|
|
8
|
+
get paths(): {
|
|
9
|
+
agent: string;
|
|
10
|
+
skill: string;
|
|
11
|
+
mcp: string;
|
|
12
|
+
context: string;
|
|
13
|
+
};
|
|
14
|
+
mcpKey: string;
|
|
15
|
+
contextFile: string;
|
|
16
|
+
formats: {
|
|
17
|
+
agent: "md";
|
|
18
|
+
skill: "md";
|
|
19
|
+
mcp: "json";
|
|
20
|
+
context: "md";
|
|
21
|
+
};
|
|
22
|
+
get skillDirs(): string[];
|
|
23
|
+
isInstalled(): Promise<boolean>;
|
|
24
|
+
mcpFromNative(server: Record<string, unknown>): Record<string, unknown>;
|
|
25
|
+
writeStub(asset: Asset, content: string, targetPath: string): Promise<void>;
|
|
26
|
+
private writeSkillStub;
|
|
27
|
+
private writeMcpStub;
|
|
28
|
+
installSkill(): Promise<void>;
|
|
29
|
+
getRootConfigAppend(): string | null;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=gemini.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../src/adapters/gemini.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAKzC,qBAAa,aAAc,SAAQ,WAAW;IAC5C,IAAI,SAAY;IAChB,WAAW,SAAgB;IAC3B,OAAO,CAAC,KAAK,CAAuB;gBAExB,KAAK,GAAE,MAAM,GAAG,WAAyB;IAKrD,IAAI,KAAK;;;;;MAYR;IAED,MAAM,SAAgB;IACtB,WAAW,SAAe;IAE1B,OAAO;;;;;MAKL;IAEF,IAAI,SAAS,aAEZ;IAEK,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAKrC,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAWjE,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAQnE,cAAc;YAKd,YAAY;IAKpB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAkCnC,mBAAmB,IAAI,MAAM,GAAG,IAAI;CAGrC"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { BaseAdapter } from './base.js';
|
|
2
|
+
import { fileExists, writeText, ensureDir } from '../utils/fs.js';
|
|
3
|
+
import { dirname, join } from 'path';
|
|
4
|
+
import { getToolMarkers } from '../utils/paths.js';
|
|
5
|
+
export class GeminiAdapter extends BaseAdapter {
|
|
6
|
+
constructor(scope = 'workspace') {
|
|
7
|
+
super();
|
|
8
|
+
this.name = 'gemini';
|
|
9
|
+
this.displayName = 'Gemini CLI';
|
|
10
|
+
this.mcpKey = 'mcpServers';
|
|
11
|
+
this.contextFile = 'GEMINI.md';
|
|
12
|
+
this.formats = {
|
|
13
|
+
agent: 'md',
|
|
14
|
+
skill: 'md',
|
|
15
|
+
mcp: 'json',
|
|
16
|
+
context: 'md',
|
|
17
|
+
};
|
|
18
|
+
this.scope = scope;
|
|
19
|
+
}
|
|
20
|
+
get paths() {
|
|
21
|
+
const markers = getToolMarkers(this.scope);
|
|
22
|
+
const workspaceRoot = dirname(markers.gemini);
|
|
23
|
+
return {
|
|
24
|
+
agent: join(markers.gemini, 'agents'),
|
|
25
|
+
skill: join(markers.gemini, 'skills'),
|
|
26
|
+
mcp: join(markers.gemini, 'settings.json'),
|
|
27
|
+
context: this.scope === 'workspace'
|
|
28
|
+
? join(workspaceRoot, 'GEMINI.md')
|
|
29
|
+
: join(markers.gemini, 'GEMINI.md'),
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
get skillDirs() {
|
|
33
|
+
return [this.paths.skill];
|
|
34
|
+
}
|
|
35
|
+
async isInstalled() {
|
|
36
|
+
const markers = getToolMarkers(this.scope);
|
|
37
|
+
return fileExists(markers.gemini);
|
|
38
|
+
}
|
|
39
|
+
mcpFromNative(server) {
|
|
40
|
+
if (typeof server.command === 'string') {
|
|
41
|
+
return {
|
|
42
|
+
command: server.command,
|
|
43
|
+
...(Array.isArray(server.args) ? { args: server.args } : {}),
|
|
44
|
+
...(server.env && typeof server.env === 'object' ? { env: server.env } : {}),
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
return server;
|
|
48
|
+
}
|
|
49
|
+
async writeStub(asset, content, targetPath) {
|
|
50
|
+
if (asset.type === 'agent' || asset.type === 'skill') {
|
|
51
|
+
await this.writeSkillStub(targetPath, content);
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
await this.writeMcpStub(targetPath, content);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
async writeSkillStub(targetPath, content) {
|
|
58
|
+
await ensureDir(dirname(targetPath));
|
|
59
|
+
await writeText(targetPath, content);
|
|
60
|
+
}
|
|
61
|
+
async writeMcpStub(targetPath, content) {
|
|
62
|
+
await ensureDir(dirname(targetPath));
|
|
63
|
+
await writeText(targetPath, content);
|
|
64
|
+
}
|
|
65
|
+
async installSkill() {
|
|
66
|
+
// Create the skills/ directory (Gemini CLI's native skill location) and
|
|
67
|
+
// write a WaslaGenie skill file so Gemini knows how to run sync commands.
|
|
68
|
+
// We do NOT touch GEMINI.md — that file belongs to the user.
|
|
69
|
+
const skillDir = join(this.paths.skill, 'waslagenie');
|
|
70
|
+
await ensureDir(skillDir);
|
|
71
|
+
const skillPath = join(skillDir, 'SKILL.md');
|
|
72
|
+
if (await fileExists(skillPath)) {
|
|
73
|
+
return; // already installed, idempotent
|
|
74
|
+
}
|
|
75
|
+
const skillContent = `---
|
|
76
|
+
name: waslagenie
|
|
77
|
+
description: >
|
|
78
|
+
Runs WaslaGenie CLI commands to sync, inspect, or manage agents and MCPs
|
|
79
|
+
across AI orchestrators. Use when asked to sync tools, check sync status,
|
|
80
|
+
install WaslaGenie, or troubleshoot why an agent isn't appearing in a tool.
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
# WaslaGenie Operator
|
|
84
|
+
|
|
85
|
+
Use the \`waslagenie\` CLI to sync agents and MCPs across all installed AI tools.
|
|
86
|
+
|
|
87
|
+
\`\`\`bash
|
|
88
|
+
waslagenie sync # Mirror agents across all tools
|
|
89
|
+
waslagenie status # Show registry state
|
|
90
|
+
waslagenie watch # Auto-sync on file changes
|
|
91
|
+
\`\`\`
|
|
92
|
+
`;
|
|
93
|
+
await writeText(skillPath, skillContent);
|
|
94
|
+
}
|
|
95
|
+
getRootConfigAppend() {
|
|
96
|
+
return null;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=gemini.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../src/adapters/gemini.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { BaseAdapter } from './base.js';
|
|
2
|
+
import { Asset } from '../core/types.js';
|
|
3
|
+
export declare class GithubCopilotCliAdapter extends BaseAdapter {
|
|
4
|
+
name: string;
|
|
5
|
+
displayName: string;
|
|
6
|
+
protected scope: 'user' | 'workspace';
|
|
7
|
+
constructor(scope?: 'user' | 'workspace');
|
|
8
|
+
get paths(): {
|
|
9
|
+
agent: string;
|
|
10
|
+
skill: string;
|
|
11
|
+
mcp: string;
|
|
12
|
+
context: string;
|
|
13
|
+
};
|
|
14
|
+
mcpKey: string;
|
|
15
|
+
contextFile: string;
|
|
16
|
+
get skillDirs(): string[];
|
|
17
|
+
formats: {
|
|
18
|
+
agent: "agent.md";
|
|
19
|
+
skill: "md";
|
|
20
|
+
mcp: "json";
|
|
21
|
+
context: "md";
|
|
22
|
+
};
|
|
23
|
+
isInstalled(): Promise<boolean>;
|
|
24
|
+
writeStub(asset: Asset, content: string, targetPath: string): Promise<void>;
|
|
25
|
+
private writeAgentStub;
|
|
26
|
+
private writeMcpStub;
|
|
27
|
+
installSkill(): Promise<void>;
|
|
28
|
+
getRootConfigAppend(): string | null;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=github-copilot-cli.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github-copilot-cli.d.ts","sourceRoot":"","sources":["../../src/adapters/github-copilot-cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAKzC,qBAAa,uBAAwB,SAAQ,WAAW;IACtD,IAAI,SAAwB;IAC5B,WAAW,SAAwB;IACnC,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAAC;gBAE1B,KAAK,GAAE,MAAM,GAAG,WAAyB;IAKrD,IAAI,KAAK;;;;;MASR;IAED,MAAM,SAAgB;IACtB,WAAW,SAAqC;IAEhD,IAAI,SAAS,aAEZ;IAED,OAAO;;;;;MAKL;IAEI,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAY/B,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAQnE,cAAc;YAKd,YAAY;IAKpB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAInC,mBAAmB,IAAI,MAAM,GAAG,IAAI;CAGrC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { BaseAdapter } from './base.js';
|
|
2
|
+
import { fileExists, writeText, ensureDir } from '../utils/fs.js';
|
|
3
|
+
import { dirname, join } from 'path';
|
|
4
|
+
import { getToolMarkers } from '../utils/paths.js';
|
|
5
|
+
export class GithubCopilotCliAdapter extends BaseAdapter {
|
|
6
|
+
constructor(scope = 'workspace') {
|
|
7
|
+
super();
|
|
8
|
+
this.name = 'github-copilot-cli';
|
|
9
|
+
this.displayName = 'GitHub Copilot CLI';
|
|
10
|
+
this.mcpKey = 'mcpServers';
|
|
11
|
+
this.contextFile = '.github/copilot-instructions.md';
|
|
12
|
+
this.formats = {
|
|
13
|
+
agent: 'agent.md',
|
|
14
|
+
skill: 'md',
|
|
15
|
+
mcp: 'json',
|
|
16
|
+
context: 'md',
|
|
17
|
+
};
|
|
18
|
+
this.scope = scope;
|
|
19
|
+
}
|
|
20
|
+
get paths() {
|
|
21
|
+
const markers = getToolMarkers(this.scope);
|
|
22
|
+
const base = markers['github-copilot-cli'];
|
|
23
|
+
return {
|
|
24
|
+
agent: join(base, 'agents'),
|
|
25
|
+
skill: join(base, 'skills'),
|
|
26
|
+
mcp: this.scope === 'user' ? join(base, 'mcp-config.json') : join(dirname(base), '.mcp.json'),
|
|
27
|
+
context: join(base, 'copilot-instructions.md'),
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
get skillDirs() {
|
|
31
|
+
return [this.paths.skill];
|
|
32
|
+
}
|
|
33
|
+
async isInstalled() {
|
|
34
|
+
const markers = getToolMarkers(this.scope);
|
|
35
|
+
const base = markers['github-copilot-cli'];
|
|
36
|
+
return ((await fileExists(join(base, 'copilot-instructions.md'))) ||
|
|
37
|
+
(await fileExists(join(base, 'agents'))) ||
|
|
38
|
+
(await fileExists(join(base, 'skills'))) ||
|
|
39
|
+
(this.scope === 'workspace' && (await fileExists(join(dirname(base), '.mcp.json')))) ||
|
|
40
|
+
(this.scope === 'user' && (await fileExists(join(base, 'mcp-config.json')))));
|
|
41
|
+
}
|
|
42
|
+
async writeStub(asset, content, targetPath) {
|
|
43
|
+
if (asset.type === 'agent') {
|
|
44
|
+
await this.writeAgentStub(targetPath, content);
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
await this.writeMcpStub(targetPath, content);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
async writeAgentStub(targetPath, content) {
|
|
51
|
+
await ensureDir(dirname(targetPath));
|
|
52
|
+
await writeText(targetPath, content);
|
|
53
|
+
}
|
|
54
|
+
async writeMcpStub(targetPath, content) {
|
|
55
|
+
await ensureDir(dirname(targetPath));
|
|
56
|
+
await writeText(targetPath, content);
|
|
57
|
+
}
|
|
58
|
+
async installSkill() {
|
|
59
|
+
// TBD
|
|
60
|
+
}
|
|
61
|
+
getRootConfigAppend() {
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=github-copilot-cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github-copilot-cli.js","sourceRoot":"","sources":["../../src/adapters/github-copilot-cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { BaseAdapter } from './base.js';
|
|
2
|
+
import { Asset } from '../core/types.js';
|
|
3
|
+
export declare class GithubCopilotAdapter extends BaseAdapter {
|
|
4
|
+
name: string;
|
|
5
|
+
displayName: string;
|
|
6
|
+
protected scope: 'user' | 'workspace';
|
|
7
|
+
constructor(scope?: 'user' | 'workspace');
|
|
8
|
+
get paths(): {
|
|
9
|
+
agent: string;
|
|
10
|
+
skill: string;
|
|
11
|
+
mcp: string;
|
|
12
|
+
context: string;
|
|
13
|
+
};
|
|
14
|
+
mcpKey: string;
|
|
15
|
+
contextFile: string;
|
|
16
|
+
get skillDirs(): string[];
|
|
17
|
+
formats: {
|
|
18
|
+
agent: "agent.md";
|
|
19
|
+
skill: "md";
|
|
20
|
+
mcp: "json";
|
|
21
|
+
context: "md";
|
|
22
|
+
};
|
|
23
|
+
isInstalled(): Promise<boolean>;
|
|
24
|
+
mcpFromNative(server: Record<string, unknown>): Record<string, unknown>;
|
|
25
|
+
mcpToNative(server: Record<string, unknown>): Record<string, unknown>;
|
|
26
|
+
writeStub(asset: Asset, content: string, targetPath: string): Promise<void>;
|
|
27
|
+
private writeAgentStub;
|
|
28
|
+
private writeMcpStub;
|
|
29
|
+
installSkill(): Promise<void>;
|
|
30
|
+
getRootConfigAppend(): string | null;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=github-copilot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github-copilot.d.ts","sourceRoot":"","sources":["../../src/adapters/github-copilot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAKzC,qBAAa,oBAAqB,SAAQ,WAAW;IACnD,IAAI,SAAoB;IACxB,WAAW,SAAoB;IAC/B,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAAC;gBAE1B,KAAK,GAAE,MAAM,GAAG,WAAyB;IAKrD,IAAI,KAAK;;;;;MAUR;IAED,MAAM,SAAa;IACnB,WAAW,SAAqC;IAEhD,IAAI,SAAS,aAEZ;IAED,OAAO;;;;;MAKL;IAEI,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAYrC,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAYvE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAU/D,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAQnE,cAAc;YAKd,YAAY;IAKpB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAInC,mBAAmB,IAAI,MAAM,GAAG,IAAI;CAGrC"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { BaseAdapter } from './base.js';
|
|
2
|
+
import { fileExists, writeText, ensureDir } from '../utils/fs.js';
|
|
3
|
+
import { dirname, join } from 'path';
|
|
4
|
+
import { getToolMarkers } from '../utils/paths.js';
|
|
5
|
+
export class GithubCopilotAdapter extends BaseAdapter {
|
|
6
|
+
constructor(scope = 'workspace') {
|
|
7
|
+
super();
|
|
8
|
+
this.name = 'github-copilot';
|
|
9
|
+
this.displayName = 'GitHub Copilot';
|
|
10
|
+
this.mcpKey = 'servers';
|
|
11
|
+
this.contextFile = '.github/copilot-instructions.md';
|
|
12
|
+
this.formats = {
|
|
13
|
+
agent: 'agent.md',
|
|
14
|
+
skill: 'md',
|
|
15
|
+
mcp: 'json',
|
|
16
|
+
context: 'md',
|
|
17
|
+
};
|
|
18
|
+
this.scope = scope;
|
|
19
|
+
}
|
|
20
|
+
get paths() {
|
|
21
|
+
const markers = getToolMarkers(this.scope);
|
|
22
|
+
const base = markers['github-copilot'];
|
|
23
|
+
const workspaceRoot = dirname(base);
|
|
24
|
+
return {
|
|
25
|
+
agent: join(workspaceRoot, '.github/agents'),
|
|
26
|
+
skill: join(workspaceRoot, '.github/skills'),
|
|
27
|
+
mcp: join(base, 'mcp.json'),
|
|
28
|
+
context: join(workspaceRoot, '.github/copilot-instructions.md'),
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
get skillDirs() {
|
|
32
|
+
return [this.paths.skill];
|
|
33
|
+
}
|
|
34
|
+
async isInstalled() {
|
|
35
|
+
const markers = getToolMarkers(this.scope);
|
|
36
|
+
const base = markers['github-copilot'];
|
|
37
|
+
const workspaceRoot = dirname(base);
|
|
38
|
+
return ((await fileExists(join(base, 'mcp.json'))) ||
|
|
39
|
+
(await fileExists(join(workspaceRoot, '.github/copilot-instructions.md'))) ||
|
|
40
|
+
(await fileExists(join(workspaceRoot, '.github/agents'))) ||
|
|
41
|
+
(await fileExists(join(workspaceRoot, '.github/skills'))));
|
|
42
|
+
}
|
|
43
|
+
mcpFromNative(server) {
|
|
44
|
+
if (server.type === 'stdio') {
|
|
45
|
+
const { type: _type, ...portable } = server;
|
|
46
|
+
return portable;
|
|
47
|
+
}
|
|
48
|
+
if (server.type === 'http' || server.type === 'sse') {
|
|
49
|
+
const { type: _type, ...portable } = server;
|
|
50
|
+
return portable;
|
|
51
|
+
}
|
|
52
|
+
return server;
|
|
53
|
+
}
|
|
54
|
+
mcpToNative(server) {
|
|
55
|
+
if (typeof server.command === 'string') {
|
|
56
|
+
return { type: 'stdio', ...server };
|
|
57
|
+
}
|
|
58
|
+
if (typeof server.url === 'string') {
|
|
59
|
+
return { type: 'http', ...server };
|
|
60
|
+
}
|
|
61
|
+
return server;
|
|
62
|
+
}
|
|
63
|
+
async writeStub(asset, content, targetPath) {
|
|
64
|
+
if (asset.type === 'agent') {
|
|
65
|
+
await this.writeAgentStub(targetPath, content);
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
await this.writeMcpStub(targetPath, content);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
async writeAgentStub(targetPath, content) {
|
|
72
|
+
await ensureDir(dirname(targetPath));
|
|
73
|
+
await writeText(targetPath, content);
|
|
74
|
+
}
|
|
75
|
+
async writeMcpStub(targetPath, content) {
|
|
76
|
+
await ensureDir(dirname(targetPath));
|
|
77
|
+
await writeText(targetPath, content);
|
|
78
|
+
}
|
|
79
|
+
async installSkill() {
|
|
80
|
+
// TBD
|
|
81
|
+
}
|
|
82
|
+
getRootConfigAppend() {
|
|
83
|
+
return null;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=github-copilot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github-copilot.js","sourceRoot":"","sources":["../../src/adapters/github-copilot.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { BaseAdapter } from './base.js';
|
|
2
|
+
import { Asset } from '../core/types.js';
|
|
3
|
+
export declare class OpenclawAdapter extends BaseAdapter {
|
|
4
|
+
name: string;
|
|
5
|
+
displayName: string;
|
|
6
|
+
private scope;
|
|
7
|
+
constructor(scope?: 'user' | 'workspace');
|
|
8
|
+
get paths(): {
|
|
9
|
+
skill: string;
|
|
10
|
+
mcp: string | undefined;
|
|
11
|
+
context: string;
|
|
12
|
+
};
|
|
13
|
+
mcpKey: string;
|
|
14
|
+
contextFile: string;
|
|
15
|
+
formats: {
|
|
16
|
+
skill: "md";
|
|
17
|
+
mcp: "json";
|
|
18
|
+
context: "md";
|
|
19
|
+
};
|
|
20
|
+
get skillDirs(): string[];
|
|
21
|
+
isInstalled(): Promise<boolean>;
|
|
22
|
+
writeStub(asset: Asset, content: string, targetPath: string): Promise<void>;
|
|
23
|
+
private writeAgentStub;
|
|
24
|
+
private writeMcpStub;
|
|
25
|
+
installSkill(): Promise<void>;
|
|
26
|
+
getRootConfigAppend(): string | null;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=openclaw.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openclaw.d.ts","sourceRoot":"","sources":["../../src/adapters/openclaw.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAKzC,qBAAa,eAAgB,SAAQ,WAAW;IAC9C,IAAI,SAAc;IAClB,WAAW,SAAc;IACzB,OAAO,CAAC,KAAK,CAAuB;gBAExB,KAAK,GAAE,MAAM,GAAG,WAAyB;IAKrD,IAAI,KAAK;;;;MAYR;IAED,MAAM,SAAiB;IACvB,WAAW,SAAe;IAE1B,OAAO;;;;MAIL;IAEF,IAAI,SAAS,aAEZ;IAEK,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAO/B,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAQnE,cAAc;YAKd,YAAY;IAKpB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAInC,mBAAmB,IAAI,MAAM,GAAG,IAAI;CAGrC"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { BaseAdapter } from './base.js';
|
|
2
|
+
import { fileExists, writeText, ensureDir } from '../utils/fs.js';
|
|
3
|
+
import { dirname, join } from 'path';
|
|
4
|
+
import { getToolMarkers } from '../utils/paths.js';
|
|
5
|
+
export class OpenclawAdapter extends BaseAdapter {
|
|
6
|
+
constructor(scope = 'workspace') {
|
|
7
|
+
super();
|
|
8
|
+
this.name = 'openclaw';
|
|
9
|
+
this.displayName = 'OpenClaw';
|
|
10
|
+
this.mcpKey = 'mcp.servers';
|
|
11
|
+
this.contextFile = 'AGENTS.md';
|
|
12
|
+
this.formats = {
|
|
13
|
+
skill: 'md',
|
|
14
|
+
mcp: 'json',
|
|
15
|
+
context: 'md',
|
|
16
|
+
};
|
|
17
|
+
this.scope = scope;
|
|
18
|
+
}
|
|
19
|
+
get paths() {
|
|
20
|
+
const markers = getToolMarkers(this.scope);
|
|
21
|
+
const workspaceRoot = this.scope === 'workspace' ? dirname(markers.openclaw) : join(markers.openclaw, 'workspace');
|
|
22
|
+
return {
|
|
23
|
+
skill: this.scope === 'workspace'
|
|
24
|
+
? join(workspaceRoot, 'skills')
|
|
25
|
+
: join(markers.openclaw, 'skills'),
|
|
26
|
+
mcp: this.scope === 'user' ? join(markers.openclaw, 'openclaw.json') : undefined,
|
|
27
|
+
context: join(workspaceRoot, 'AGENTS.md'),
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
get skillDirs() {
|
|
31
|
+
return [this.paths.skill];
|
|
32
|
+
}
|
|
33
|
+
async isInstalled() {
|
|
34
|
+
if (this.scope === 'user') {
|
|
35
|
+
return fileExists(getToolMarkers(this.scope).openclaw);
|
|
36
|
+
}
|
|
37
|
+
return (await fileExists(this.paths.context)) || (await fileExists(this.paths.skill));
|
|
38
|
+
}
|
|
39
|
+
async writeStub(asset, content, targetPath) {
|
|
40
|
+
if (asset.type === 'agent') {
|
|
41
|
+
await this.writeAgentStub(targetPath, content);
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
await this.writeMcpStub(targetPath, content);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
async writeAgentStub(targetPath, content) {
|
|
48
|
+
await ensureDir(dirname(targetPath));
|
|
49
|
+
await writeText(targetPath, content);
|
|
50
|
+
}
|
|
51
|
+
async writeMcpStub(targetPath, content) {
|
|
52
|
+
await ensureDir(dirname(targetPath));
|
|
53
|
+
await writeText(targetPath, content);
|
|
54
|
+
}
|
|
55
|
+
async installSkill() {
|
|
56
|
+
// OpenClaw skill installation would go here
|
|
57
|
+
}
|
|
58
|
+
getRootConfigAppend() {
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=openclaw.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openclaw.js","sourceRoot":"","sources":["../../src/adapters/openclaw.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { BaseAdapter } from './base.js';
|
|
2
|
+
import { Asset } from '../core/types.js';
|
|
3
|
+
export declare class OpenCodeAdapter extends BaseAdapter {
|
|
4
|
+
name: string;
|
|
5
|
+
displayName: string;
|
|
6
|
+
protected scope: 'user' | 'workspace';
|
|
7
|
+
constructor(scope?: 'user' | 'workspace');
|
|
8
|
+
get paths(): {
|
|
9
|
+
agent: string;
|
|
10
|
+
skill: string;
|
|
11
|
+
mcp: string;
|
|
12
|
+
context: string;
|
|
13
|
+
};
|
|
14
|
+
mcpKey: string;
|
|
15
|
+
contextFile: string;
|
|
16
|
+
get skillDirs(): string[];
|
|
17
|
+
formats: {
|
|
18
|
+
agent: "md";
|
|
19
|
+
skill: "md";
|
|
20
|
+
mcp: "json";
|
|
21
|
+
context: "md";
|
|
22
|
+
};
|
|
23
|
+
isInstalled(): Promise<boolean>;
|
|
24
|
+
mcpFromNative(server: Record<string, unknown>): Record<string, unknown>;
|
|
25
|
+
mcpToNative(server: Record<string, unknown>): Record<string, unknown>;
|
|
26
|
+
writeStub(asset: Asset, content: string, targetPath: string): Promise<void>;
|
|
27
|
+
private writeAgentStub;
|
|
28
|
+
private writeMcpStub;
|
|
29
|
+
installSkill(): Promise<void>;
|
|
30
|
+
getRootConfigAppend(): string | null;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=opencode.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"opencode.d.ts","sourceRoot":"","sources":["../../src/adapters/opencode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAKzC,qBAAa,eAAgB,SAAQ,WAAW;IAC9C,IAAI,SAAc;IAClB,WAAW,SAAc;IACzB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAAC;gBAE1B,KAAK,GAAE,MAAM,GAAG,WAAyB;IAKrD,IAAI,KAAK;;;;;MAcR;IAED,MAAM,SAAS;IACf,WAAW,SAAe;IAE1B,IAAI,SAAS,aAEZ;IAED,OAAO;;;;;MAKL;IAEI,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAUrC,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAkBvE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAoB/D,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAQnE,cAAc;YAKd,YAAY;IAKpB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAInC,mBAAmB,IAAI,MAAM,GAAG,IAAI;CAGrC"}
|