bashbros 0.1.3 → 0.1.4
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/README.md +727 -265
- package/dist/adapters-JAZGGNVP.js +9 -0
- package/dist/chunk-4XZ64P4V.js +47 -0
- package/dist/chunk-4XZ64P4V.js.map +1 -0
- package/dist/{chunk-2RPTM6EQ.js → chunk-7OEWYFN3.js} +745 -629
- package/dist/chunk-7OEWYFN3.js.map +1 -0
- package/dist/{chunk-WPJJZLT6.js → chunk-CG6VEHJM.js} +3 -2
- package/dist/chunk-CG6VEHJM.js.map +1 -0
- package/dist/{chunk-DLP2O6PN.js → chunk-EMLEJVJZ.js} +102 -1
- package/dist/chunk-EMLEJVJZ.js.map +1 -0
- package/dist/chunk-IUUBCPMV.js +166 -0
- package/dist/chunk-IUUBCPMV.js.map +1 -0
- package/dist/chunk-J6ONXY6N.js +146 -0
- package/dist/chunk-J6ONXY6N.js.map +1 -0
- package/dist/{chunk-EYO44OMN.js → chunk-KYDMPE4N.js} +60 -17
- package/dist/chunk-KYDMPE4N.js.map +1 -0
- package/dist/chunk-LJE4EPIU.js +56 -0
- package/dist/chunk-LJE4EPIU.js.map +1 -0
- package/dist/chunk-LZYW7XQO.js +339 -0
- package/dist/chunk-LZYW7XQO.js.map +1 -0
- package/dist/{chunk-JYWQT2B4.js → chunk-RDNSS3ME.js} +489 -14
- package/dist/chunk-RDNSS3ME.js.map +1 -0
- package/dist/{chunk-A535VV7N.js → chunk-RTZ4QWG2.js} +5 -4
- package/dist/chunk-RTZ4QWG2.js.map +1 -0
- package/dist/chunk-SDN6TAGD.js +157 -0
- package/dist/chunk-SDN6TAGD.js.map +1 -0
- package/dist/chunk-T5ONCUHZ.js +198 -0
- package/dist/chunk-T5ONCUHZ.js.map +1 -0
- package/dist/cli.js +1069 -88
- package/dist/cli.js.map +1 -1
- package/dist/{config-43SK6SFI.js → config-I5NCK3RJ.js} +2 -2
- package/dist/copilot-cli-5WJWK5YT.js +9 -0
- package/dist/{db-SWJUUSFX.js → db-ETWTBXAE.js} +2 -2
- package/dist/db-checks-2YOVECD4.js +133 -0
- package/dist/db-checks-2YOVECD4.js.map +1 -0
- package/dist/{display-HFIFXOOL.js → display-UH7KEHOW.js} +3 -3
- package/dist/gemini-cli-3563EELZ.js +9 -0
- package/dist/gemini-cli-3563EELZ.js.map +1 -0
- package/dist/index.d.ts +176 -72
- package/dist/index.js +119 -398
- package/dist/index.js.map +1 -1
- package/dist/{ollama-HY35OHW4.js → ollama-5JVKNFOV.js} +2 -2
- package/dist/ollama-5JVKNFOV.js.map +1 -0
- package/dist/opencode-DRCY275R.js +9 -0
- package/dist/opencode-DRCY275R.js.map +1 -0
- package/dist/profiles-7CLN6TAT.js +9 -0
- package/dist/profiles-7CLN6TAT.js.map +1 -0
- package/dist/setup-YS27MOPE.js +124 -0
- package/dist/setup-YS27MOPE.js.map +1 -0
- package/dist/static/index.html +4815 -2007
- package/dist/store-WJ5Y7MOE.js +9 -0
- package/dist/store-WJ5Y7MOE.js.map +1 -0
- package/dist/{writer-4ZEAKUFD.js → writer-3NAVABN6.js} +3 -3
- package/dist/writer-3NAVABN6.js.map +1 -0
- package/package.json +77 -68
- package/dist/chunk-2RPTM6EQ.js.map +0 -1
- package/dist/chunk-A535VV7N.js.map +0 -1
- package/dist/chunk-DLP2O6PN.js.map +0 -1
- package/dist/chunk-EYO44OMN.js.map +0 -1
- package/dist/chunk-JYWQT2B4.js.map +0 -1
- package/dist/chunk-WPJJZLT6.js.map +0 -1
- /package/dist/{config-43SK6SFI.js.map → adapters-JAZGGNVP.js.map} +0 -0
- /package/dist/{db-SWJUUSFX.js.map → config-I5NCK3RJ.js.map} +0 -0
- /package/dist/{display-HFIFXOOL.js.map → copilot-cli-5WJWK5YT.js.map} +0 -0
- /package/dist/{ollama-HY35OHW4.js.map → db-ETWTBXAE.js.map} +0 -0
- /package/dist/{writer-4ZEAKUFD.js.map → display-UH7KEHOW.js.map} +0 -0
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
// src/bro/adapters.ts
|
|
4
|
+
import { existsSync, readdirSync, readFileSync } from "fs";
|
|
5
|
+
import { join } from "path";
|
|
6
|
+
import { homedir } from "os";
|
|
7
|
+
var DEFAULT_ADAPTERS_DIR = join(homedir(), ".bashgym", "integration", "models", "adapters");
|
|
8
|
+
var AdapterRegistry = class {
|
|
9
|
+
adaptersDir;
|
|
10
|
+
constructor(adaptersDir) {
|
|
11
|
+
this.adaptersDir = adaptersDir || DEFAULT_ADAPTERS_DIR;
|
|
12
|
+
}
|
|
13
|
+
discover() {
|
|
14
|
+
if (!existsSync(this.adaptersDir)) return [];
|
|
15
|
+
const entries = [];
|
|
16
|
+
try {
|
|
17
|
+
const dirs = readdirSync(this.adaptersDir, { withFileTypes: true }).filter((d) => d.isDirectory());
|
|
18
|
+
for (const dir of dirs) {
|
|
19
|
+
const manifestPath = join(this.adaptersDir, dir.name, "manifest.json");
|
|
20
|
+
const adapterPath = join(this.adaptersDir, dir.name, "adapter.gguf");
|
|
21
|
+
if (!existsSync(manifestPath) || !existsSync(adapterPath)) continue;
|
|
22
|
+
try {
|
|
23
|
+
const manifest = JSON.parse(readFileSync(manifestPath, "utf-8"));
|
|
24
|
+
entries.push({ ...manifest, adapterPath });
|
|
25
|
+
} catch {
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
} catch {
|
|
29
|
+
}
|
|
30
|
+
return entries;
|
|
31
|
+
}
|
|
32
|
+
generateModelfile(adapter) {
|
|
33
|
+
return `FROM ${adapter.baseModel}
|
|
34
|
+
ADAPTER ${adapter.adapterPath}`;
|
|
35
|
+
}
|
|
36
|
+
ollamaModelName(adapterName) {
|
|
37
|
+
return `bashbros/${adapterName}`;
|
|
38
|
+
}
|
|
39
|
+
getAdaptersDir() {
|
|
40
|
+
return this.adaptersDir;
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
export {
|
|
45
|
+
AdapterRegistry
|
|
46
|
+
};
|
|
47
|
+
//# sourceMappingURL=chunk-4XZ64P4V.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/bro/adapters.ts"],"sourcesContent":["// src/bro/adapters.ts\nimport { existsSync, readdirSync, readFileSync } from 'fs'\nimport { join } from 'path'\nimport { homedir } from 'os'\n\nexport type AdapterPurpose = 'suggest' | 'safety' | 'route' | 'explain' | 'fix' | 'script' | 'general'\n\nexport interface AdapterEntry {\n name: string\n baseModel: string\n purpose: AdapterPurpose\n adapterPath: string\n trainedAt: string\n tracesUsed: number\n qualityScore: number\n}\n\ninterface AdapterManifest {\n name: string\n baseModel: string\n purpose: AdapterPurpose\n trainedAt: string\n tracesUsed: number\n qualityScore: number\n}\n\nconst DEFAULT_ADAPTERS_DIR = join(homedir(), '.bashgym', 'integration', 'models', 'adapters')\n\nexport class AdapterRegistry {\n private adaptersDir: string\n\n constructor(adaptersDir?: string) {\n this.adaptersDir = adaptersDir || DEFAULT_ADAPTERS_DIR\n }\n\n discover(): AdapterEntry[] {\n if (!existsSync(this.adaptersDir)) return []\n const entries: AdapterEntry[] = []\n try {\n const dirs = readdirSync(this.adaptersDir, { withFileTypes: true }).filter(d => d.isDirectory())\n for (const dir of dirs) {\n const manifestPath = join(this.adaptersDir, dir.name, 'manifest.json')\n const adapterPath = join(this.adaptersDir, dir.name, 'adapter.gguf')\n if (!existsSync(manifestPath) || !existsSync(adapterPath)) continue\n try {\n const manifest = JSON.parse(readFileSync(manifestPath, 'utf-8')) as AdapterManifest\n entries.push({ ...manifest, adapterPath })\n } catch { /* skip malformed */ }\n }\n } catch { /* dir read error */ }\n return entries\n }\n\n generateModelfile(adapter: AdapterEntry): string {\n return `FROM ${adapter.baseModel}\\nADAPTER ${adapter.adapterPath}`\n }\n\n ollamaModelName(adapterName: string): string {\n return `bashbros/${adapterName}`\n }\n\n getAdaptersDir(): string {\n return this.adaptersDir\n }\n}\n"],"mappings":";;;AACA,SAAS,YAAY,aAAa,oBAAoB;AACtD,SAAS,YAAY;AACrB,SAAS,eAAe;AAuBxB,IAAM,uBAAuB,KAAK,QAAQ,GAAG,YAAY,eAAe,UAAU,UAAU;AAErF,IAAM,kBAAN,MAAsB;AAAA,EACnB;AAAA,EAER,YAAY,aAAsB;AAChC,SAAK,cAAc,eAAe;AAAA,EACpC;AAAA,EAEA,WAA2B;AACzB,QAAI,CAAC,WAAW,KAAK,WAAW,EAAG,QAAO,CAAC;AAC3C,UAAM,UAA0B,CAAC;AACjC,QAAI;AACF,YAAM,OAAO,YAAY,KAAK,aAAa,EAAE,eAAe,KAAK,CAAC,EAAE,OAAO,OAAK,EAAE,YAAY,CAAC;AAC/F,iBAAW,OAAO,MAAM;AACtB,cAAM,eAAe,KAAK,KAAK,aAAa,IAAI,MAAM,eAAe;AACrE,cAAM,cAAc,KAAK,KAAK,aAAa,IAAI,MAAM,cAAc;AACnE,YAAI,CAAC,WAAW,YAAY,KAAK,CAAC,WAAW,WAAW,EAAG;AAC3D,YAAI;AACF,gBAAM,WAAW,KAAK,MAAM,aAAa,cAAc,OAAO,CAAC;AAC/D,kBAAQ,KAAK,EAAE,GAAG,UAAU,YAAY,CAAC;AAAA,QAC3C,QAAQ;AAAA,QAAuB;AAAA,MACjC;AAAA,IACF,QAAQ;AAAA,IAAuB;AAC/B,WAAO;AAAA,EACT;AAAA,EAEA,kBAAkB,SAA+B;AAC/C,WAAO,QAAQ,QAAQ,SAAS;AAAA,UAAa,QAAQ,WAAW;AAAA,EAClE;AAAA,EAEA,gBAAgB,aAA6B;AAC3C,WAAO,YAAY,WAAW;AAAA,EAChC;AAAA,EAEA,iBAAyB;AACvB,WAAO,KAAK;AAAA,EACd;AACF;","names":[]}
|