@inferhub/helper 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 +112 -0
- package/dist/adapters/claude.d.ts +3 -0
- package/dist/adapters/claude.d.ts.map +1 -0
- package/dist/adapters/claude.js +127 -0
- package/dist/adapters/claude.js.map +1 -0
- package/dist/adapters/cline.d.ts +3 -0
- package/dist/adapters/cline.d.ts.map +1 -0
- package/dist/adapters/cline.js +114 -0
- package/dist/adapters/cline.js.map +1 -0
- package/dist/adapters/codex.d.ts +3 -0
- package/dist/adapters/codex.d.ts.map +1 -0
- package/dist/adapters/codex.js +126 -0
- package/dist/adapters/codex.js.map +1 -0
- package/dist/adapters/hermes.d.ts +3 -0
- package/dist/adapters/hermes.d.ts.map +1 -0
- package/dist/adapters/hermes.js +143 -0
- package/dist/adapters/hermes.js.map +1 -0
- package/dist/adapters/index.d.ts +13 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js +30 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/adapters/openclaw.d.ts +3 -0
- package/dist/adapters/openclaw.d.ts.map +1 -0
- package/dist/adapters/openclaw.js +195 -0
- package/dist/adapters/openclaw.js.map +1 -0
- package/dist/adapters/opencode.d.ts +3 -0
- package/dist/adapters/opencode.d.ts.map +1 -0
- package/dist/adapters/opencode.js +143 -0
- package/dist/adapters/opencode.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +368 -0
- package/dist/cli.js.map +1 -0
- package/dist/constants.d.ts +14 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +24 -0
- package/dist/constants.js.map +1 -0
- package/dist/fsutil.d.ts +41 -0
- package/dist/fsutil.d.ts.map +1 -0
- package/dist/fsutil.js +174 -0
- package/dist/fsutil.js.map +1 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +38 -0
- package/dist/index.js.map +1 -0
- package/dist/paths.d.ts +15 -0
- package/dist/paths.d.ts.map +1 -0
- package/dist/paths.js +58 -0
- package/dist/paths.js.map +1 -0
- package/dist/types.d.ts +79 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/validate.d.ts +15 -0
- package/dist/validate.d.ts.map +1 -0
- package/dist/validate.js +68 -0
- package/dist/validate.js.map +1 -0
- package/package.json +58 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fsutil.js","sourceRoot":"","sources":["../src/fsutil.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export { DEFAULT_BASE_URL, PROVIDER_ID, PROVIDER_NAME } from "./constants.js";
|
|
2
|
+
export { validateApiKey } from "./validate.js";
|
|
3
|
+
export { adapters, adapterById, listAdapters, getAdapter, claudeAdapter, codexAdapter, opencodeAdapter, hermesAdapter, openclawAdapter, clineAdapter, } from "./adapters/index.js";
|
|
4
|
+
export type { AgentId, AgentAdapter, AgentStatus, ApplyOptions, ApplyResult, ResetResult, ModelInfo, ValidateResult, } from "./types.js";
|
|
5
|
+
export { normalizeBaseUrl } from "./fsutil.js";
|
|
6
|
+
import type { AgentId, ApplyOptions, ApplyResult, AgentStatus, ResetResult } from "./types.js";
|
|
7
|
+
/** Status of every known agent. */
|
|
8
|
+
export declare function statusAll(opts?: {
|
|
9
|
+
homeDir?: string;
|
|
10
|
+
}): Promise<AgentStatus[]>;
|
|
11
|
+
/** Apply InferHub settings to selected agents (default: all installed). */
|
|
12
|
+
export declare function applyToAgents(agentIds: AgentId[] | "all" | "installed", opts: ApplyOptions): Promise<ApplyResult[]>;
|
|
13
|
+
/** Reset InferHub settings on selected agents. */
|
|
14
|
+
export declare function resetAgents(agentIds: AgentId[] | "all", opts?: {
|
|
15
|
+
homeDir?: string;
|
|
16
|
+
dryRun?: boolean;
|
|
17
|
+
}): Promise<ResetResult[]>;
|
|
18
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EACL,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,UAAU,EACV,aAAa,EACb,YAAY,EACZ,eAAe,EACf,aAAa,EACb,eAAe,EACf,YAAY,GACb,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACV,OAAO,EACP,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,WAAW,EACX,WAAW,EACX,SAAS,EACT,cAAc,GACf,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAG/F,mCAAmC;AACnC,wBAAsB,SAAS,CAAC,IAAI,CAAC,EAAE;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAEzB;AAED,2EAA2E;AAC3E,wBAAsB,aAAa,CACjC,QAAQ,EAAE,OAAO,EAAE,GAAG,KAAK,GAAG,WAAW,EACzC,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,WAAW,EAAE,CAAC,CAkBxB;AAED,kDAAkD;AAClD,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,OAAO,EAAE,GAAG,KAAK,EAC3B,IAAI,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAC5C,OAAO,CAAC,WAAW,EAAE,CAAC,CAQxB"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
export { DEFAULT_BASE_URL, PROVIDER_ID, PROVIDER_NAME } from "./constants.js";
|
|
2
|
+
export { validateApiKey } from "./validate.js";
|
|
3
|
+
export { adapters, adapterById, listAdapters, getAdapter, claudeAdapter, codexAdapter, opencodeAdapter, hermesAdapter, openclawAdapter, clineAdapter, } from "./adapters/index.js";
|
|
4
|
+
export { normalizeBaseUrl } from "./fsutil.js";
|
|
5
|
+
import { adapters, getAdapter } from "./adapters/index.js";
|
|
6
|
+
/** Status of every known agent. */
|
|
7
|
+
export async function statusAll(opts) {
|
|
8
|
+
return Promise.all(adapters.map((a) => a.status(opts)));
|
|
9
|
+
}
|
|
10
|
+
/** Apply InferHub settings to selected agents (default: all installed). */
|
|
11
|
+
export async function applyToAgents(agentIds, opts) {
|
|
12
|
+
let targets = adapters;
|
|
13
|
+
if (agentIds === "installed") {
|
|
14
|
+
const statuses = await statusAll({ homeDir: opts.homeDir });
|
|
15
|
+
const installed = new Set(statuses.filter((s) => s.installed).map((s) => s.id));
|
|
16
|
+
targets = adapters.filter((a) => installed.has(a.id));
|
|
17
|
+
}
|
|
18
|
+
else if (agentIds !== "all") {
|
|
19
|
+
targets = agentIds
|
|
20
|
+
.map((id) => getAdapter(id))
|
|
21
|
+
.filter((a) => !!a);
|
|
22
|
+
}
|
|
23
|
+
const results = [];
|
|
24
|
+
for (const a of targets) {
|
|
25
|
+
results.push(await a.apply(opts));
|
|
26
|
+
}
|
|
27
|
+
return results;
|
|
28
|
+
}
|
|
29
|
+
/** Reset InferHub settings on selected agents. */
|
|
30
|
+
export async function resetAgents(agentIds, opts) {
|
|
31
|
+
const targets = agentIds === "all"
|
|
32
|
+
? adapters
|
|
33
|
+
: agentIds
|
|
34
|
+
.map((id) => getAdapter(id))
|
|
35
|
+
.filter((a) => !!a);
|
|
36
|
+
return Promise.all(targets.map((a) => a.reset(opts)));
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EACL,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,UAAU,EACV,aAAa,EACb,YAAY,EACZ,eAAe,EACf,aAAa,EACb,eAAe,EACf,YAAY,GACb,MAAM,qBAAqB,CAAC;AAW7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAG/C,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE3D,mCAAmC;AACnC,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAE/B;IACC,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED,2EAA2E;AAC3E,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,QAAyC,EACzC,IAAkB;IAElB,IAAI,OAAO,GAAG,QAAQ,CAAC;IACvB,IAAI,QAAQ,KAAK,WAAW,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QAC5D,MAAM,SAAS,GAAG,IAAI,GAAG,CACvB,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CACrD,CAAC;QACF,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACxD,CAAC;SAAM,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;QAC9B,OAAO,GAAG,QAAQ;aACf,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;aAC3B,MAAM,CAAC,CAAC,CAAC,EAA8B,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpD,CAAC;IACD,MAAM,OAAO,GAAkB,EAAE,CAAC;IAClC,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,kDAAkD;AAClD,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,QAA2B,EAC3B,IAA6C;IAE7C,MAAM,OAAO,GACX,QAAQ,KAAK,KAAK;QAChB,CAAC,CAAC,QAAQ;QACV,CAAC,CAAC,QAAQ;aACL,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;aAC3B,MAAM,CAAC,CAAC,CAAC,EAA8B,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACxD,OAAO,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACxD,CAAC"}
|
package/dist/paths.d.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export declare function resolveHome(homeDir?: string): string;
|
|
2
|
+
export declare function claudeSettingsPath(homeDir?: string): string;
|
|
3
|
+
export declare function codexDir(homeDir?: string): string;
|
|
4
|
+
export declare function codexConfigPath(homeDir?: string): string;
|
|
5
|
+
export declare function codexAuthPath(homeDir?: string): string;
|
|
6
|
+
export declare function opencodeConfigPath(homeDir?: string): string;
|
|
7
|
+
export declare function hermesDir(homeDir?: string): string;
|
|
8
|
+
export declare function hermesConfigPath(homeDir?: string): string;
|
|
9
|
+
export declare function hermesEnvPath(homeDir?: string): string;
|
|
10
|
+
export declare function openclawDir(homeDir?: string): string;
|
|
11
|
+
export declare function openclawSettingsPath(homeDir?: string): string;
|
|
12
|
+
export declare function clineDataDir(homeDir?: string): string;
|
|
13
|
+
export declare function clineGlobalStatePath(homeDir?: string): string;
|
|
14
|
+
export declare function clineSecretsPath(homeDir?: string): string;
|
|
15
|
+
//# sourceMappingURL=paths.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAGA,wBAAgB,WAAW,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED,wBAAgB,kBAAkB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED,wBAAgB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAMjD;AAED,wBAAgB,eAAe,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAExD;AAED,wBAAgB,aAAa,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED,wBAAgB,kBAAkB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAI3D;AAED,wBAAgB,SAAS,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAQlD;AAED,wBAAgB,gBAAgB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED,wBAAgB,aAAa,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED,wBAAgB,WAAW,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED,wBAAgB,oBAAoB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAE7D;AAED,wBAAgB,YAAY,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,wBAAgB,oBAAoB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAE7D;AAED,wBAAgB,gBAAgB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAEzD"}
|
package/dist/paths.js
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import os from "node:os";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
export function resolveHome(homeDir) {
|
|
4
|
+
return homeDir ?? os.homedir();
|
|
5
|
+
}
|
|
6
|
+
export function claudeSettingsPath(homeDir) {
|
|
7
|
+
return path.join(resolveHome(homeDir), ".claude", "settings.json");
|
|
8
|
+
}
|
|
9
|
+
export function codexDir(homeDir) {
|
|
10
|
+
// CODEX_HOME overrides default ~/.codex
|
|
11
|
+
if (!homeDir && process.env.CODEX_HOME) {
|
|
12
|
+
return process.env.CODEX_HOME;
|
|
13
|
+
}
|
|
14
|
+
return path.join(resolveHome(homeDir), ".codex");
|
|
15
|
+
}
|
|
16
|
+
export function codexConfigPath(homeDir) {
|
|
17
|
+
return path.join(codexDir(homeDir), "config.toml");
|
|
18
|
+
}
|
|
19
|
+
export function codexAuthPath(homeDir) {
|
|
20
|
+
return path.join(codexDir(homeDir), "auth.json");
|
|
21
|
+
}
|
|
22
|
+
export function opencodeConfigPath(homeDir) {
|
|
23
|
+
// OpenCode uses XDG on Linux/macOS: ~/.config/opencode/opencode.json
|
|
24
|
+
// On Windows, still ~/.config/opencode (same as 9router / opencode docs).
|
|
25
|
+
return path.join(resolveHome(homeDir), ".config", "opencode", "opencode.json");
|
|
26
|
+
}
|
|
27
|
+
export function hermesDir(homeDir) {
|
|
28
|
+
// Native Windows install can use %LOCALAPPDATA%\hermes; prefer that when present
|
|
29
|
+
// is handled at runtime by the adapter (status checks both). Default write target:
|
|
30
|
+
if (process.platform === "win32" && !homeDir) {
|
|
31
|
+
const local = process.env.LOCALAPPDATA;
|
|
32
|
+
if (local)
|
|
33
|
+
return path.join(local, "hermes");
|
|
34
|
+
}
|
|
35
|
+
return path.join(resolveHome(homeDir), ".hermes");
|
|
36
|
+
}
|
|
37
|
+
export function hermesConfigPath(homeDir) {
|
|
38
|
+
return path.join(hermesDir(homeDir), "config.yaml");
|
|
39
|
+
}
|
|
40
|
+
export function hermesEnvPath(homeDir) {
|
|
41
|
+
return path.join(hermesDir(homeDir), ".env");
|
|
42
|
+
}
|
|
43
|
+
export function openclawDir(homeDir) {
|
|
44
|
+
return path.join(resolveHome(homeDir), ".openclaw");
|
|
45
|
+
}
|
|
46
|
+
export function openclawSettingsPath(homeDir) {
|
|
47
|
+
return path.join(openclawDir(homeDir), "openclaw.json");
|
|
48
|
+
}
|
|
49
|
+
export function clineDataDir(homeDir) {
|
|
50
|
+
return path.join(resolveHome(homeDir), ".cline", "data");
|
|
51
|
+
}
|
|
52
|
+
export function clineGlobalStatePath(homeDir) {
|
|
53
|
+
return path.join(clineDataDir(homeDir), "globalState.json");
|
|
54
|
+
}
|
|
55
|
+
export function clineSecretsPath(homeDir) {
|
|
56
|
+
return path.join(clineDataDir(homeDir), "secrets.json");
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=paths.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
export type AgentId = "claude" | "codex" | "opencode" | "hermes" | "openclaw" | "cline";
|
|
2
|
+
export type ApplyOptions = {
|
|
3
|
+
/** InferHub API key (sk-airo-…). */
|
|
4
|
+
apiKey: string;
|
|
5
|
+
/** Default: https://api.inferhub.dev/v1 */
|
|
6
|
+
baseUrl?: string;
|
|
7
|
+
/** Primary model id from /v1/models (e.g. grok-4.5, deepseek-v4-pro). */
|
|
8
|
+
model?: string;
|
|
9
|
+
/** Optional secondary model for subagents / explorer. */
|
|
10
|
+
subagentModel?: string;
|
|
11
|
+
/**
|
|
12
|
+
* Extra model ids to register where multi-model is supported
|
|
13
|
+
* (OpenCode, OpenClaw). Primary `model` is always included.
|
|
14
|
+
*/
|
|
15
|
+
models?: string[];
|
|
16
|
+
/** Claude-only: map of role → model id. */
|
|
17
|
+
claudeModels?: {
|
|
18
|
+
sonnet?: string;
|
|
19
|
+
opus?: string;
|
|
20
|
+
haiku?: string;
|
|
21
|
+
fable?: string;
|
|
22
|
+
};
|
|
23
|
+
/** When true, do not write files. */
|
|
24
|
+
dryRun?: boolean;
|
|
25
|
+
/** Override home directory (tests). */
|
|
26
|
+
homeDir?: string;
|
|
27
|
+
};
|
|
28
|
+
export type AgentStatus = {
|
|
29
|
+
id: AgentId;
|
|
30
|
+
name: string;
|
|
31
|
+
installed: boolean;
|
|
32
|
+
configured: boolean;
|
|
33
|
+
configPath: string | null;
|
|
34
|
+
details: Record<string, unknown>;
|
|
35
|
+
message?: string;
|
|
36
|
+
};
|
|
37
|
+
export type ApplyResult = {
|
|
38
|
+
id: AgentId;
|
|
39
|
+
name: string;
|
|
40
|
+
success: boolean;
|
|
41
|
+
configPath?: string;
|
|
42
|
+
message: string;
|
|
43
|
+
dryRun?: boolean;
|
|
44
|
+
skipped?: boolean;
|
|
45
|
+
};
|
|
46
|
+
export type ResetResult = {
|
|
47
|
+
id: AgentId;
|
|
48
|
+
name: string;
|
|
49
|
+
success: boolean;
|
|
50
|
+
message: string;
|
|
51
|
+
};
|
|
52
|
+
export type ModelInfo = {
|
|
53
|
+
id: string;
|
|
54
|
+
ownedBy?: string;
|
|
55
|
+
};
|
|
56
|
+
export type ValidateResult = {
|
|
57
|
+
ok: boolean;
|
|
58
|
+
baseUrl: string;
|
|
59
|
+
models: ModelInfo[];
|
|
60
|
+
error?: string;
|
|
61
|
+
status?: number;
|
|
62
|
+
};
|
|
63
|
+
export type AgentAdapter = {
|
|
64
|
+
id: AgentId;
|
|
65
|
+
name: string;
|
|
66
|
+
description: string;
|
|
67
|
+
/** Detect install / existing config. */
|
|
68
|
+
status(opts?: {
|
|
69
|
+
homeDir?: string;
|
|
70
|
+
}): Promise<AgentStatus>;
|
|
71
|
+
/** Write InferHub settings. */
|
|
72
|
+
apply(opts: ApplyOptions): Promise<ApplyResult>;
|
|
73
|
+
/** Remove InferHub settings only. */
|
|
74
|
+
reset(opts?: {
|
|
75
|
+
homeDir?: string;
|
|
76
|
+
dryRun?: boolean;
|
|
77
|
+
}): Promise<ResetResult>;
|
|
78
|
+
};
|
|
79
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,OAAO,GACf,QAAQ,GACR,OAAO,GACP,UAAU,GACV,QAAQ,GACR,UAAU,GACV,OAAO,CAAC;AAEZ,MAAM,MAAM,YAAY,GAAG;IACzB,oCAAoC;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,2CAA2C;IAC3C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yEAAyE;IACzE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yDAAyD;IACzD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,2CAA2C;IAC3C,YAAY,CAAC,EAAE;QACb,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,qCAAqC;IACrC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,uCAAuC;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,EAAE,EAAE,OAAO,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,EAAE,EAAE,OAAO,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,EAAE,EAAE,OAAO,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,EAAE,EAAE,OAAO,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,wCAAwC;IACxC,MAAM,CAAC,IAAI,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAC1D,+BAA+B;IAC/B,KAAK,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAChD,qCAAqC;IACrC,KAAK,CAAC,IAAI,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;CAC5E,CAAC"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { ValidateResult } from "./types.js";
|
|
2
|
+
export type ValidateOptions = {
|
|
3
|
+
apiKey: string;
|
|
4
|
+
baseUrl?: string;
|
|
5
|
+
/** Abort after ms (default 20000). */
|
|
6
|
+
timeoutMs?: number;
|
|
7
|
+
/** Inject fetch for tests. */
|
|
8
|
+
fetchImpl?: typeof fetch;
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Validate an InferHub API key by calling GET /v1/models.
|
|
12
|
+
* Returns the model list on success so the CLI can offer a picker.
|
|
13
|
+
*/
|
|
14
|
+
export declare function validateApiKey(opts: ValidateOptions): Promise<ValidateResult>;
|
|
15
|
+
//# sourceMappingURL=validate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAa,cAAc,EAAE,MAAM,YAAY,CAAC;AAG5D,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sCAAsC;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8BAA8B;IAC9B,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B,CAAC;AAEF;;;GAGG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC,CAkEnF"}
|
package/dist/validate.js
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { DEFAULT_BASE_URL } from "./constants.js";
|
|
2
|
+
import { normalizeBaseUrl } from "./fsutil.js";
|
|
3
|
+
/**
|
|
4
|
+
* Validate an InferHub API key by calling GET /v1/models.
|
|
5
|
+
* Returns the model list on success so the CLI can offer a picker.
|
|
6
|
+
*/
|
|
7
|
+
export async function validateApiKey(opts) {
|
|
8
|
+
const baseUrl = normalizeBaseUrl(opts.baseUrl ?? DEFAULT_BASE_URL);
|
|
9
|
+
const url = `${baseUrl}/models`;
|
|
10
|
+
const fetchFn = opts.fetchImpl ?? fetch;
|
|
11
|
+
const timeoutMs = opts.timeoutMs ?? 20_000;
|
|
12
|
+
const controller = new AbortController();
|
|
13
|
+
const timer = setTimeout(() => controller.abort(), timeoutMs);
|
|
14
|
+
try {
|
|
15
|
+
const resp = await fetchFn(url, {
|
|
16
|
+
method: "GET",
|
|
17
|
+
headers: {
|
|
18
|
+
Authorization: `Bearer ${opts.apiKey}`,
|
|
19
|
+
Accept: "application/json",
|
|
20
|
+
},
|
|
21
|
+
signal: controller.signal,
|
|
22
|
+
});
|
|
23
|
+
if (!resp.ok) {
|
|
24
|
+
let detail = "";
|
|
25
|
+
try {
|
|
26
|
+
detail = (await resp.text()).slice(0, 300);
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
/* ignore */
|
|
30
|
+
}
|
|
31
|
+
return {
|
|
32
|
+
ok: false,
|
|
33
|
+
baseUrl,
|
|
34
|
+
models: [],
|
|
35
|
+
status: resp.status,
|
|
36
|
+
error: resp.status === 401 || resp.status === 403
|
|
37
|
+
? `invalid API key (${resp.status})`
|
|
38
|
+
: `GET /v1/models failed: HTTP ${resp.status}${detail ? ` — ${detail}` : ""}`,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
const body = (await resp.json());
|
|
42
|
+
const models = (body.data ?? [])
|
|
43
|
+
.filter((m) => typeof m.id === "string" && m.id.length > 0)
|
|
44
|
+
.map((m) => ({ id: m.id, ownedBy: m.owned_by }));
|
|
45
|
+
if (models.length === 0) {
|
|
46
|
+
return {
|
|
47
|
+
ok: false,
|
|
48
|
+
baseUrl,
|
|
49
|
+
models: [],
|
|
50
|
+
status: resp.status,
|
|
51
|
+
error: "key accepted but /v1/models returned no models",
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
return { ok: true, baseUrl, models, status: resp.status };
|
|
55
|
+
}
|
|
56
|
+
catch (err) {
|
|
57
|
+
const msg = err instanceof Error
|
|
58
|
+
? err.name === "AbortError"
|
|
59
|
+
? `timeout after ${timeoutMs}ms reaching ${url}`
|
|
60
|
+
: err.message
|
|
61
|
+
: String(err);
|
|
62
|
+
return { ok: false, baseUrl, models: [], error: msg };
|
|
63
|
+
}
|
|
64
|
+
finally {
|
|
65
|
+
clearTimeout(timer);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=validate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@inferhub/helper",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Point coding agents and IDEs at InferHub — Claude Code, Codex, OpenCode, Hermes, OpenClaw, and more.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"import": "./dist/index.js"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"bin": {
|
|
15
|
+
"inferhub-helper": "./dist/cli.js",
|
|
16
|
+
"ih-helper": "./dist/cli.js"
|
|
17
|
+
},
|
|
18
|
+
"files": [
|
|
19
|
+
"dist",
|
|
20
|
+
"README.md",
|
|
21
|
+
"LICENSE"
|
|
22
|
+
],
|
|
23
|
+
"scripts": {
|
|
24
|
+
"build": "tsc -p tsconfig.json",
|
|
25
|
+
"dev": "tsc -p tsconfig.json --watch",
|
|
26
|
+
"test": "node --import tsx --test tests/**/*.test.ts",
|
|
27
|
+
"prepublishOnly": "npm run build",
|
|
28
|
+
"start": "node dist/cli.js"
|
|
29
|
+
},
|
|
30
|
+
"engines": {
|
|
31
|
+
"node": ">=18.0.0"
|
|
32
|
+
},
|
|
33
|
+
"keywords": [
|
|
34
|
+
"inferhub",
|
|
35
|
+
"ai",
|
|
36
|
+
"claude",
|
|
37
|
+
"codex",
|
|
38
|
+
"opencode",
|
|
39
|
+
"hermes",
|
|
40
|
+
"openclaw",
|
|
41
|
+
"openai-compatible",
|
|
42
|
+
"cli"
|
|
43
|
+
],
|
|
44
|
+
"license": "MIT",
|
|
45
|
+
"repository": {
|
|
46
|
+
"type": "git",
|
|
47
|
+
"url": "https://github.com/inferhub/helper.git"
|
|
48
|
+
},
|
|
49
|
+
"homepage": "https://inferhub.dev",
|
|
50
|
+
"publishConfig": {
|
|
51
|
+
"access": "public"
|
|
52
|
+
},
|
|
53
|
+
"devDependencies": {
|
|
54
|
+
"@types/node": "^22.15.0",
|
|
55
|
+
"tsx": "^4.19.0",
|
|
56
|
+
"typescript": "^5.8.0"
|
|
57
|
+
}
|
|
58
|
+
}
|