@digital-lake/lognexus 1.0.0-alpha.0 → 1.0.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/README.md +56 -65
  2. package/dist/cli.js +68 -89
  3. package/dist/cli.js.map +1 -1
  4. package/dist/doctor.d.ts +10 -0
  5. package/dist/doctor.d.ts.map +1 -0
  6. package/dist/doctor.js +109 -0
  7. package/dist/doctor.js.map +1 -0
  8. package/dist/index.d.ts +3 -7
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/index.js +3 -7
  11. package/dist/index.js.map +1 -1
  12. package/dist/scaffold.d.ts +6 -0
  13. package/dist/scaffold.d.ts.map +1 -0
  14. package/dist/scaffold.js +33 -0
  15. package/dist/scaffold.js.map +1 -0
  16. package/dist/status.d.ts +9 -0
  17. package/dist/status.d.ts.map +1 -0
  18. package/dist/status.js +52 -0
  19. package/dist/status.js.map +1 -0
  20. package/package.json +7 -4
  21. package/dist/config/loadConfig.d.ts +0 -36
  22. package/dist/config/loadConfig.d.ts.map +0 -1
  23. package/dist/config/loadConfig.js +0 -65
  24. package/dist/config/loadConfig.js.map +0 -1
  25. package/dist/providers/deepseek.d.ts +0 -10
  26. package/dist/providers/deepseek.d.ts.map +0 -1
  27. package/dist/providers/deepseek.js +0 -13
  28. package/dist/providers/deepseek.js.map +0 -1
  29. package/dist/providers/factory.d.ts +0 -4
  30. package/dist/providers/factory.d.ts.map +0 -1
  31. package/dist/providers/factory.js +0 -23
  32. package/dist/providers/factory.js.map +0 -1
  33. package/dist/providers/gemini.d.ts +0 -17
  34. package/dist/providers/gemini.d.ts.map +0 -1
  35. package/dist/providers/gemini.js +0 -105
  36. package/dist/providers/gemini.js.map +0 -1
  37. package/dist/providers/openaiCompatible.d.ts +0 -17
  38. package/dist/providers/openaiCompatible.d.ts.map +0 -1
  39. package/dist/providers/openaiCompatible.js +0 -100
  40. package/dist/providers/openaiCompatible.js.map +0 -1
  41. package/dist/providers/types.d.ts +0 -35
  42. package/dist/providers/types.d.ts.map +0 -1
  43. package/dist/providers/types.js +0 -2
  44. package/dist/providers/types.js.map +0 -1
  45. package/dist/routing/tierRouter.d.ts +0 -11
  46. package/dist/routing/tierRouter.d.ts.map +0 -1
  47. package/dist/routing/tierRouter.js +0 -42
  48. package/dist/routing/tierRouter.js.map +0 -1
@@ -0,0 +1,9 @@
1
+ export interface ProjectStatus {
2
+ branch: string;
3
+ isInsideGit: boolean;
4
+ activeIssue: string | null;
5
+ routingMode: string;
6
+ recommendedTier: string;
7
+ }
8
+ export declare function getProjectStatus(targetDir?: string): ProjectStatus;
9
+ //# sourceMappingURL=status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../src/status.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,wBAAgB,gBAAgB,CAAC,SAAS,GAAE,MAAsB,GAAG,aAAa,CAoDjF"}
package/dist/status.js ADDED
@@ -0,0 +1,52 @@
1
+ import { execSync } from "node:child_process";
2
+ import { existsSync, readFileSync } from "node:fs";
3
+ import { join } from "node:path";
4
+ export function getProjectStatus(targetDir = process.cwd()) {
5
+ let isInsideGit = false;
6
+ let branch = "detached";
7
+ try {
8
+ const inside = execSync("git rev-parse --is-inside-work-tree", {
9
+ cwd: targetDir,
10
+ encoding: "utf8",
11
+ stdio: ["pipe", "pipe", "pipe"],
12
+ }).trim();
13
+ isInsideGit = inside === "true";
14
+ if (isInsideGit) {
15
+ branch =
16
+ execSync("git branch --show-current", {
17
+ cwd: targetDir,
18
+ encoding: "utf8",
19
+ stdio: ["pipe", "pipe", "pipe"],
20
+ }).trim() || "detached";
21
+ }
22
+ }
23
+ catch {
24
+ isInsideGit = false;
25
+ }
26
+ let activeIssue = null;
27
+ const match = branch.match(/issue\/(\d+)/i);
28
+ if (match) {
29
+ activeIssue = `#${match[1]}`;
30
+ }
31
+ let routingMode = "not configured";
32
+ const routingFile = join(targetDir, ".lognexus", "routing.md");
33
+ if (existsSync(routingFile)) {
34
+ const content = readFileSync(routingFile, "utf8");
35
+ const m = content.match(/routing:\s*(confirm|warn|off)/i);
36
+ if (m)
37
+ routingMode = m[1].toLowerCase();
38
+ }
39
+ let recommendedTier = "tier-1 (Reasoning / Planning: Claude Opus, OpenAI o3, Gemini Pro, DeepSeek R1)";
40
+ if (activeIssue) {
41
+ recommendedTier =
42
+ "tier-3 (Scoped Execution: Claude Haiku, GPT-4o-mini, DeepSeek Chat, Gemini Flash)";
43
+ }
44
+ return {
45
+ branch,
46
+ isInsideGit,
47
+ activeIssue,
48
+ routingMode,
49
+ recommendedTier,
50
+ };
51
+ }
52
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../src/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAUjC,MAAM,UAAU,gBAAgB,CAAC,SAAS,GAAW,OAAO,CAAC,GAAG,EAAE;IAChE,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,IAAI,MAAM,GAAG,UAAU,CAAC;IAExB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,QAAQ,CAAC,qCAAqC,EAAE;YAC7D,GAAG,EAAE,SAAS;YACd,QAAQ,EAAE,MAAM;YAChB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAChC,CAAC,CAAC,IAAI,EAAE,CAAC;QACV,WAAW,GAAG,MAAM,KAAK,MAAM,CAAC;QAEhC,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM;gBACJ,QAAQ,CAAC,2BAA2B,EAAE;oBACpC,GAAG,EAAE,SAAS;oBACd,QAAQ,EAAE,MAAM;oBAChB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;iBAChC,CAAC,CAAC,IAAI,EAAE,IAAI,UAAU,CAAC;QAC5B,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,WAAW,GAAG,KAAK,CAAC;IACtB,CAAC;IAED,IAAI,WAAW,GAAkB,IAAI,CAAC;IACtC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IAC5C,IAAI,KAAK,EAAE,CAAC;QACV,WAAW,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/B,CAAC;IAED,IAAI,WAAW,GAAG,gBAAgB,CAAC;IACnC,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;IAC/D,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QAClD,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;QAC1D,IAAI,CAAC;YAAE,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAC1C,CAAC;IAED,IAAI,eAAe,GACjB,gFAAgF,CAAC;IACnF,IAAI,WAAW,EAAE,CAAC;QAChB,eAAe;YACb,mFAAmF,CAAC;IACxF,CAAC;IAED,OAAO;QACL,MAAM;QACN,WAAW;QACX,WAAW;QACX,WAAW;QACX,eAAe;KAChB,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@digital-lake/lognexus",
3
- "version": "1.0.0-alpha.0",
4
- "description": "The Git-powered memory nexus for AI agents. Multi-model routing, durable cognitive logs, and traceable pull requests.",
3
+ "version": "1.0.0-alpha.1",
4
+ "description": "The Universal, Git-powered context & rules framework for native AI agents (Claude, OpenAI, Gemini, DeepSeek). Scaffolding CLI and repository governance.",
5
5
  "type": "module",
6
6
  "bin": {
7
7
  "lognexus": "dist/cli.js"
@@ -18,10 +18,13 @@
18
18
  "git",
19
19
  "ai",
20
20
  "agents",
21
- "orchestrator",
21
+ "claude",
22
+ "openai",
22
23
  "gemini",
23
24
  "deepseek",
24
- "claude",
25
+ "cursor",
26
+ "antigravity",
27
+ "orchestrator",
25
28
  "memory",
26
29
  "traceability",
27
30
  "knowledge-graph"
@@ -1,36 +0,0 @@
1
- import { z } from "zod";
2
- export declare const ProviderTypeSchema: z.ZodEnum<{
3
- deepseek: "deepseek";
4
- gemini: "gemini";
5
- }>;
6
- export type ProviderType = z.infer<typeof ProviderTypeSchema>;
7
- export declare const GeminiConfigSchema: z.ZodObject<{
8
- apiKey: z.ZodOptional<z.ZodString>;
9
- model: z.ZodDefault<z.ZodString>;
10
- apiBaseUrl: z.ZodDefault<z.ZodString>;
11
- }, z.core.$strip>;
12
- export declare const DeepSeekConfigSchema: z.ZodObject<{
13
- apiKey: z.ZodOptional<z.ZodString>;
14
- model: z.ZodDefault<z.ZodString>;
15
- apiBaseUrl: z.ZodDefault<z.ZodString>;
16
- }, z.core.$strip>;
17
- export declare const LogNexusConfigSchema: z.ZodObject<{
18
- provider: z.ZodDefault<z.ZodEnum<{
19
- deepseek: "deepseek";
20
- gemini: "gemini";
21
- }>>;
22
- gemini: z.ZodDefault<z.ZodObject<{
23
- apiKey: z.ZodOptional<z.ZodString>;
24
- model: z.ZodDefault<z.ZodString>;
25
- apiBaseUrl: z.ZodDefault<z.ZodString>;
26
- }, z.core.$strip>>;
27
- deepseek: z.ZodDefault<z.ZodObject<{
28
- apiKey: z.ZodOptional<z.ZodString>;
29
- model: z.ZodDefault<z.ZodString>;
30
- apiBaseUrl: z.ZodDefault<z.ZodString>;
31
- }, z.core.$strip>>;
32
- }, z.core.$strip>;
33
- export type LogNexusConfig = z.infer<typeof LogNexusConfigSchema>;
34
- export declare function loadConfigFile(customPath?: string): Partial<LogNexusConfig>;
35
- export declare function loadConfig(customConfigPath?: string, env?: NodeJS.ProcessEnv): LogNexusConfig;
36
- //# sourceMappingURL=loadConfig.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"loadConfig.d.ts","sourceRoot":"","sources":["../../src/config/loadConfig.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,kBAAkB;;;EAAiC,CAAC;AACjE,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D,eAAO,MAAM,kBAAkB;;;;iBAI7B,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;iBAI/B,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;iBAU/B,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE,wBAAgB,cAAc,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAoB3E;AAED,wBAAgB,UAAU,CACxB,gBAAgB,CAAC,EAAE,MAAM,EACzB,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,cAAc,CAsBhB"}
@@ -1,65 +0,0 @@
1
- import fs from "node:fs";
2
- import path from "node:path";
3
- import { z } from "zod";
4
- export const ProviderTypeSchema = z.enum(["gemini", "deepseek"]);
5
- export const GeminiConfigSchema = z.object({
6
- apiKey: z.string().optional(),
7
- model: z.string().default("gemini-3.8-flash"),
8
- apiBaseUrl: z.string().default("https://generativelanguage.googleapis.com/v1beta"),
9
- });
10
- export const DeepSeekConfigSchema = z.object({
11
- apiKey: z.string().optional(),
12
- model: z.string().default("deepseek-chat"),
13
- apiBaseUrl: z.string().default("https://api.deepseek.com"),
14
- });
15
- export const LogNexusConfigSchema = z.object({
16
- provider: ProviderTypeSchema.default("gemini"),
17
- gemini: GeminiConfigSchema.default({
18
- model: "gemini-3.8-flash",
19
- apiBaseUrl: "https://generativelanguage.googleapis.com/v1beta",
20
- }),
21
- deepseek: DeepSeekConfigSchema.default({
22
- model: "deepseek-chat",
23
- apiBaseUrl: "https://api.deepseek.com",
24
- }),
25
- });
26
- export function loadConfigFile(customPath) {
27
- const candidates = customPath
28
- ? [customPath]
29
- : [
30
- path.resolve(process.cwd(), ".lognexus/config.json"),
31
- path.resolve(process.cwd(), ".shiplog/config.json"),
32
- ];
33
- for (const candidate of candidates) {
34
- if (fs.existsSync(candidate)) {
35
- try {
36
- const raw = fs.readFileSync(candidate, "utf-8");
37
- return JSON.parse(raw);
38
- }
39
- catch {
40
- // ignore parse errors and proceed to next/defaults
41
- }
42
- }
43
- }
44
- return {};
45
- }
46
- export function loadConfig(customConfigPath, env = process.env) {
47
- const fileConfig = loadConfigFile(customConfigPath);
48
- const merged = {
49
- provider: env.LOGNEXUS_PROVIDER || fileConfig.provider || "gemini",
50
- gemini: {
51
- apiKey: env.GEMINI_API_KEY || fileConfig.gemini?.apiKey,
52
- model: env.GEMINI_MODEL || fileConfig.gemini?.model || "gemini-3.8-flash",
53
- apiBaseUrl: env.GEMINI_BASE_URL ||
54
- fileConfig.gemini?.apiBaseUrl ||
55
- "https://generativelanguage.googleapis.com/v1beta",
56
- },
57
- deepseek: {
58
- apiKey: env.DEEPSEEK_API_KEY || fileConfig.deepseek?.apiKey,
59
- model: env.DEEPSEEK_MODEL || fileConfig.deepseek?.model || "deepseek-chat",
60
- apiBaseUrl: env.DEEPSEEK_BASE_URL || fileConfig.deepseek?.apiBaseUrl || "https://api.deepseek.com",
61
- },
62
- };
63
- return LogNexusConfigSchema.parse(merged);
64
- }
65
- //# sourceMappingURL=loadConfig.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"loadConfig.js","sourceRoot":"","sources":["../../src/config/loadConfig.ts"],"names":[],"mappings":"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"}
@@ -1,10 +0,0 @@
1
- import { OpenAICompatibleProvider } from "./openaiCompatible.js";
2
- export interface DeepSeekProviderOptions {
3
- apiKey?: string;
4
- model?: string;
5
- apiBaseUrl?: string;
6
- }
7
- export declare class DeepSeekProvider extends OpenAICompatibleProvider {
8
- constructor(options?: DeepSeekProviderOptions);
9
- }
10
- //# sourceMappingURL=deepseek.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"deepseek.d.ts","sourceRoot":"","sources":["../../src/providers/deepseek.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgC,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAE/F,MAAM,WAAW,uBAAuB;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,gBAAiB,SAAQ,wBAAwB;IAC5D,YAAY,OAAO,GAAE,uBAA4B,EAQhD;CACF"}
@@ -1,13 +0,0 @@
1
- import { OpenAICompatibleProvider } from "./openaiCompatible.js";
2
- export class DeepSeekProvider extends OpenAICompatibleProvider {
3
- constructor(options = {}) {
4
- const opts = {
5
- id: "deepseek",
6
- apiKey: options.apiKey,
7
- model: options.model || "deepseek-chat",
8
- apiBaseUrl: options.apiBaseUrl || "https://api.deepseek.com",
9
- };
10
- super(opts);
11
- }
12
- }
13
- //# sourceMappingURL=deepseek.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"deepseek.js","sourceRoot":"","sources":["../../src/providers/deepseek.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgC,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAQ/F,MAAM,OAAO,gBAAiB,SAAQ,wBAAwB;IAC5D,YAAY,OAAO,GAA4B,EAAE;QAC/C,MAAM,IAAI,GAA4B;YACpC,EAAE,EAAE,UAAU;YACd,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,eAAe;YACvC,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,0BAA0B;SAC7D,CAAC;QACF,KAAK,CAAC,IAAI,CAAC,CAAC;IACd,CAAC;CACF"}
@@ -1,4 +0,0 @@
1
- import type { LogNexusConfig, ProviderType } from "../config/loadConfig.js";
2
- import type { LLMProvider } from "./types.js";
3
- export declare function createProvider(type: ProviderType, config: LogNexusConfig): LLMProvider;
4
- //# sourceMappingURL=factory.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/providers/factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAG5E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,wBAAgB,cAAc,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,cAAc,GAAG,WAAW,CAmBtF"}
@@ -1,23 +0,0 @@
1
- import { DeepSeekProvider } from "./deepseek.js";
2
- import { GeminiProvider } from "./gemini.js";
3
- export function createProvider(type, config) {
4
- switch (type) {
5
- case "gemini":
6
- return new GeminiProvider({
7
- apiKey: config.gemini.apiKey,
8
- model: config.gemini.model,
9
- apiBaseUrl: config.gemini.apiBaseUrl,
10
- });
11
- case "deepseek":
12
- return new DeepSeekProvider({
13
- apiKey: config.deepseek.apiKey,
14
- model: config.deepseek.model,
15
- apiBaseUrl: config.deepseek.apiBaseUrl,
16
- });
17
- default: {
18
- const exhaustiveCheck = type;
19
- throw new Error(`Unsupported provider: ${exhaustiveCheck}`);
20
- }
21
- }
22
- }
23
- //# sourceMappingURL=factory.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/providers/factory.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAG7C,MAAM,UAAU,cAAc,CAAC,IAAkB,EAAE,MAAsB;IACvE,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,QAAQ;YACX,OAAO,IAAI,cAAc,CAAC;gBACxB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM;gBAC5B,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK;gBAC1B,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU;aACrC,CAAC,CAAC;QACL,KAAK,UAAU;YACb,OAAO,IAAI,gBAAgB,CAAC;gBAC1B,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM;gBAC9B,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK;gBAC5B,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,UAAU;aACvC,CAAC,CAAC;QACL,SAAS,CAAC;YACR,MAAM,eAAe,GAAU,IAAI,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,yBAAyB,eAAe,EAAE,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -1,17 +0,0 @@
1
- import type { GenerateRequest, LLMProvider, LLMResponse, ProviderHealth } from "./types.js";
2
- export interface GeminiProviderOptions {
3
- apiKey?: string;
4
- model?: string;
5
- apiBaseUrl?: string;
6
- }
7
- export declare class GeminiProvider implements LLMProvider {
8
- readonly id = "gemini";
9
- private apiKey?;
10
- private defaultModel;
11
- private apiBaseUrl;
12
- constructor(options?: GeminiProviderOptions);
13
- private mapRole;
14
- generate(req: GenerateRequest): Promise<LLMResponse>;
15
- healthCheck(): Promise<ProviderHealth>;
16
- }
17
- //# sourceMappingURL=gemini.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../src/providers/gemini.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EAEf,WAAW,EACX,WAAW,EACX,cAAc,EACf,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,qBAAqB;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,cAAe,YAAW,WAAW;IAChD,SAAgB,EAAE,YAAY;IAC9B,OAAO,CAAC,MAAM,CAAC,CAAS;IACxB,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,UAAU,CAAS;IAE3B,YAAY,OAAO,GAAE,qBAA0B,EAI9C;IAED,OAAO,CAAC,OAAO;IAIF,QAAQ,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC,CAuFhE;IAEY,WAAW,IAAI,OAAO,CAAC,cAAc,CAAC,CAyBlD;CACF"}
@@ -1,105 +0,0 @@
1
- export class GeminiProvider {
2
- id = "gemini";
3
- apiKey;
4
- defaultModel;
5
- apiBaseUrl;
6
- constructor(options = {}) {
7
- this.apiKey = options.apiKey;
8
- this.defaultModel = options.model || "gemini-3.8-flash";
9
- this.apiBaseUrl = options.apiBaseUrl || "https://generativelanguage.googleapis.com/v1beta";
10
- }
11
- mapRole(role) {
12
- return role === "assistant" ? "model" : "user";
13
- }
14
- async generate(req) {
15
- if (!this.apiKey) {
16
- throw new Error("Gemini API key is required. Set GEMINI_API_KEY in your environment or .lognexus/config.json");
17
- }
18
- const model = req.model || this.defaultModel;
19
- const url = `${this.apiBaseUrl}/models/${encodeURIComponent(model)}:generateContent`;
20
- const systemMessages = req.messages.filter((m) => m.role === "system");
21
- const nonSystemMessages = req.messages.filter((m) => m.role !== "system");
22
- const contents = nonSystemMessages.map((msg) => ({
23
- role: this.mapRole(msg.role),
24
- parts: [{ text: msg.content }],
25
- }));
26
- const payload = {
27
- contents,
28
- };
29
- if (systemMessages.length > 0) {
30
- payload.systemInstruction = {
31
- parts: [{ text: systemMessages.map((m) => m.content).join("\n\n") }],
32
- };
33
- }
34
- if (req.temperature !== undefined || req.maxTokens !== undefined) {
35
- payload.generationConfig = {
36
- ...(req.temperature !== undefined ? { temperature: req.temperature } : {}),
37
- ...(req.maxTokens !== undefined ? { maxOutputTokens: req.maxTokens } : {}),
38
- };
39
- }
40
- const res = await fetch(url, {
41
- method: "POST",
42
- headers: {
43
- "Content-Type": "application/json",
44
- "x-goog-api-key": this.apiKey,
45
- },
46
- body: JSON.stringify(payload),
47
- });
48
- if (!res.ok) {
49
- let errorDetails = `HTTP ${res.status} ${res.statusText}`;
50
- try {
51
- const errorJson = (await res.json());
52
- if (errorJson.error?.message) {
53
- errorDetails = errorJson.error.message;
54
- }
55
- }
56
- catch {
57
- // Fallback to status text
58
- }
59
- throw new Error(`Gemini API Error: ${errorDetails}`);
60
- }
61
- const data = (await res.json());
62
- const text = data.candidates?.[0]?.content?.parts?.[0]?.text ?? "";
63
- const usage = data.usageMetadata
64
- ? {
65
- promptTokens: data.usageMetadata.promptTokenCount ?? 0,
66
- completionTokens: data.usageMetadata.candidatesTokenCount ?? 0,
67
- totalTokens: data.usageMetadata.totalTokenCount ?? 0,
68
- }
69
- : undefined;
70
- return {
71
- text,
72
- usage,
73
- model,
74
- provider: this.id,
75
- raw: data,
76
- };
77
- }
78
- async healthCheck() {
79
- if (!this.apiKey) {
80
- return {
81
- ok: false,
82
- message: "Missing GEMINI_API_KEY in environment or configuration",
83
- };
84
- }
85
- const start = Date.now();
86
- try {
87
- await this.generate({
88
- messages: [{ role: "user", content: "Ping" }],
89
- maxTokens: 1,
90
- });
91
- return {
92
- ok: true,
93
- message: `Connected successfully to Gemini (${this.defaultModel})`,
94
- latencyMs: Date.now() - start,
95
- };
96
- }
97
- catch (err) {
98
- return {
99
- ok: false,
100
- message: err instanceof Error ? err.message : String(err),
101
- };
102
- }
103
- }
104
- }
105
- //# sourceMappingURL=gemini.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../src/providers/gemini.ts"],"names":[],"mappings":"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"}
@@ -1,17 +0,0 @@
1
- import type { GenerateRequest, LLMProvider, LLMResponse, ProviderHealth } from "./types.js";
2
- export interface OpenAICompatibleOptions {
3
- id?: string;
4
- apiKey?: string;
5
- model: string;
6
- apiBaseUrl: string;
7
- }
8
- export declare class OpenAICompatibleProvider implements LLMProvider {
9
- readonly id: string;
10
- protected apiKey?: string;
11
- protected defaultModel: string;
12
- protected apiBaseUrl: string;
13
- constructor(options: OpenAICompatibleOptions);
14
- generate(req: GenerateRequest): Promise<LLMResponse>;
15
- healthCheck(): Promise<ProviderHealth>;
16
- }
17
- //# sourceMappingURL=openaiCompatible.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"openaiCompatible.d.ts","sourceRoot":"","sources":["../../src/providers/openaiCompatible.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5F,MAAM,WAAW,uBAAuB;IACtC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,wBAAyB,YAAW,WAAW;IAC1D,SAAgB,EAAE,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC;IAC/B,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC;IAE7B,YAAY,OAAO,EAAE,uBAAuB,EAK3C;IAEY,QAAQ,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC,CAmFhE;IAEY,WAAW,IAAI,OAAO,CAAC,cAAc,CAAC,CAyBlD;CACF"}
@@ -1,100 +0,0 @@
1
- export class OpenAICompatibleProvider {
2
- id;
3
- apiKey;
4
- defaultModel;
5
- apiBaseUrl;
6
- constructor(options) {
7
- this.id = options.id || "openai-compatible";
8
- this.apiKey = options.apiKey;
9
- this.defaultModel = options.model;
10
- this.apiBaseUrl = options.apiBaseUrl.replace(/\/+$/, "");
11
- }
12
- async generate(req) {
13
- if (!this.apiKey) {
14
- throw new Error(`API key is required for provider "${this.id}". Set appropriate environment variable or .lognexus/config.json`);
15
- }
16
- const model = req.model || this.defaultModel;
17
- const url = `${this.apiBaseUrl}/chat/completions`;
18
- const payload = {
19
- model,
20
- messages: req.messages.map((m) => ({
21
- role: m.role,
22
- content: m.content,
23
- })),
24
- };
25
- if (req.temperature !== undefined) {
26
- payload.temperature = req.temperature;
27
- }
28
- if (req.maxTokens !== undefined) {
29
- payload.max_tokens = req.maxTokens;
30
- }
31
- if (req.responseFormat === "json") {
32
- payload.response_format = { type: "json_object" };
33
- }
34
- const headers = {
35
- "Content-Type": "application/json",
36
- Authorization: `Bearer ${this.apiKey}`,
37
- };
38
- const res = await fetch(url, {
39
- method: "POST",
40
- headers,
41
- body: JSON.stringify(payload),
42
- });
43
- if (!res.ok) {
44
- let errorDetails = `HTTP ${res.status} ${res.statusText}`;
45
- try {
46
- const errorJson = (await res.json());
47
- if (errorJson.error?.message) {
48
- errorDetails = errorJson.error.message;
49
- }
50
- }
51
- catch {
52
- // Fallback
53
- }
54
- throw new Error(`${this.id} API Error: ${errorDetails}`);
55
- }
56
- const data = (await res.json());
57
- const text = data.choices?.[0]?.message?.content ?? "";
58
- const usage = data.usage
59
- ? {
60
- promptTokens: data.usage.prompt_tokens ?? 0,
61
- completionTokens: data.usage.completion_tokens ?? 0,
62
- totalTokens: data.usage.total_tokens ?? 0,
63
- }
64
- : undefined;
65
- return {
66
- text,
67
- usage,
68
- model,
69
- provider: this.id,
70
- raw: data,
71
- };
72
- }
73
- async healthCheck() {
74
- if (!this.apiKey) {
75
- return {
76
- ok: false,
77
- message: `Missing API key for provider "${this.id}"`,
78
- };
79
- }
80
- const start = Date.now();
81
- try {
82
- await this.generate({
83
- messages: [{ role: "user", content: "Ping" }],
84
- maxTokens: 1,
85
- });
86
- return {
87
- ok: true,
88
- message: `Connected successfully to ${this.id} (${this.defaultModel})`,
89
- latencyMs: Date.now() - start,
90
- };
91
- }
92
- catch (err) {
93
- return {
94
- ok: false,
95
- message: err instanceof Error ? err.message : String(err),
96
- };
97
- }
98
- }
99
- }
100
- //# sourceMappingURL=openaiCompatible.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"openaiCompatible.js","sourceRoot":"","sources":["../../src/providers/openaiCompatible.ts"],"names":[],"mappings":"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"}
@@ -1,35 +0,0 @@
1
- export type MessageRole = "system" | "user" | "assistant";
2
- export interface LLMMessage {
3
- role: MessageRole;
4
- content: string;
5
- }
6
- export interface GenerateRequest {
7
- messages: LLMMessage[];
8
- model?: string;
9
- temperature?: number;
10
- maxTokens?: number;
11
- responseFormat?: "text" | "json";
12
- }
13
- export interface TokenUsage {
14
- promptTokens: number;
15
- completionTokens: number;
16
- totalTokens: number;
17
- }
18
- export interface LLMResponse {
19
- text: string;
20
- usage?: TokenUsage;
21
- model: string;
22
- provider: string;
23
- raw?: unknown;
24
- }
25
- export interface ProviderHealth {
26
- ok: boolean;
27
- message: string;
28
- latencyMs?: number;
29
- }
30
- export interface LLMProvider {
31
- readonly id: string;
32
- generate(req: GenerateRequest): Promise<LLMResponse>;
33
- healthCheck(): Promise<ProviderHealth>;
34
- }
35
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/providers/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;AAE1D,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAClC;AAED,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACrD,WAAW,IAAI,OAAO,CAAC,cAAc,CAAC,CAAC;CACxC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/providers/types.ts"],"names":[],"mappings":""}
@@ -1,11 +0,0 @@
1
- import type { LogNexusConfig } from "../config/loadConfig.js";
2
- import type { LLMProvider } from "../providers/types.js";
3
- export type OperationTier = "tier-1" | "tier-2" | "tier-3";
4
- export interface TierAssignment {
5
- tier: OperationTier;
6
- provider: LLMProvider;
7
- model: string;
8
- description: string;
9
- }
10
- export declare function resolveTier(tier: OperationTier, config: LogNexusConfig): TierAssignment;
11
- //# sourceMappingURL=tierRouter.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tierRouter.d.ts","sourceRoot":"","sources":["../../src/routing/tierRouter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE3D,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,aAAa,CAAC;IACpB,QAAQ,EAAE,WAAW,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,cAAc,GAAG,cAAc,CAuCvF"}