agent-dj 0.1.0 → 0.1.2

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/dist/cli.js CHANGED
@@ -124,6 +124,18 @@ var init_defaults = __esm({
124
124
  ollama: {
125
125
  default: "llama3.2",
126
126
  options: ["llama3.2", "mistral", "codellama", "phi3"]
127
+ },
128
+ deepseek: {
129
+ default: "deepseek-chat",
130
+ options: ["deepseek-chat", "deepseek-reasoner"]
131
+ },
132
+ xai: {
133
+ default: "grok-3",
134
+ options: ["grok-3", "grok-3-mini", "grok-2", "grok-2-mini"]
135
+ },
136
+ mistral: {
137
+ default: "mistral-large-latest",
138
+ options: ["mistral-large-latest", "codestral-latest", "mistral-small-latest"]
127
139
  }
128
140
  };
129
141
  }
@@ -519,14 +531,20 @@ var init_setup = __esm({
519
531
  openai: "OpenAI (GPT)",
520
532
  google: "Google (Gemini)",
521
533
  groq: "Groq (fast inference)",
522
- ollama: "Ollama (local, free)"
534
+ ollama: "Ollama (local, free)",
535
+ deepseek: "DeepSeek (cheap & strong)",
536
+ xai: "xAI (Grok)",
537
+ mistral: "Mistral AI"
523
538
  };
524
539
  API_KEY_HINTS = {
525
540
  anthropic: "Get key at console.anthropic.com",
526
541
  openai: "Get key at platform.openai.com",
527
542
  google: "Get key at aistudio.google.com",
528
543
  groq: "Get key at console.groq.com (free tier available)",
529
- ollama: "No key needed \u2014 runs locally"
544
+ ollama: "No key needed \u2014 runs locally",
545
+ deepseek: "Get key at platform.deepseek.com",
546
+ xai: "Get key at console.x.ai",
547
+ mistral: "Get key at console.mistral.ai"
530
548
  };
531
549
  }
532
550
  });
@@ -272727,6 +272745,24 @@ async function getOrCreateProvider(config) {
272727
272745
  baseURL: config.baseUrl ?? "http://localhost:11434/v1"
272728
272746
  });
272729
272747
  break;
272748
+ case "deepseek":
272749
+ instance = createOpenAI({
272750
+ apiKey: config.apiKey,
272751
+ baseURL: "https://api.deepseek.com/v1"
272752
+ });
272753
+ break;
272754
+ case "xai":
272755
+ instance = createOpenAI({
272756
+ apiKey: config.apiKey,
272757
+ baseURL: "https://api.x.ai/v1"
272758
+ });
272759
+ break;
272760
+ case "mistral":
272761
+ instance = createOpenAI({
272762
+ apiKey: config.apiKey,
272763
+ baseURL: "https://api.mistral.ai/v1"
272764
+ });
272765
+ break;
272730
272766
  default:
272731
272767
  throw new Error(`Unsupported provider: ${config.provider}`);
272732
272768
  }
@@ -272734,7 +272770,7 @@ async function getOrCreateProvider(config) {
272734
272770
  return instance;
272735
272771
  }
272736
272772
  function getLanguageModel(config, modelId) {
272737
- const model = modelId ?? config.model ?? getDefaultModel(config.provider);
272773
+ const model = modelId || config.model || getDefaultModel(config.provider);
272738
272774
  if (config.provider === "anthropic" && config.authType === "session_token") {
272739
272775
  _lastSessionTokenSupportsTools = false;
272740
272776
  if (isClaudeCliAvailable()) {
@@ -272770,7 +272806,10 @@ function getDefaultModel(provider) {
272770
272806
  openai: "gpt-4o",
272771
272807
  google: "gemini-2.0-flash",
272772
272808
  groq: "llama-3.3-70b-versatile",
272773
- ollama: "llama3.2"
272809
+ ollama: "llama3.2",
272810
+ deepseek: "deepseek-chat",
272811
+ xai: "grok-3",
272812
+ mistral: "mistral-large-latest"
272774
272813
  };
272775
272814
  return defaults[provider];
272776
272815
  }
@@ -273275,7 +273314,19 @@ var init_models = __esm({
273275
273314
  { id: "llama-3.1-8b-instant", name: "Llama 3.1 8B", provider: "groq", contextWindow: 128e3, costTier: "cheap", supportsTools: true, supportsVision: false },
273276
273315
  // Ollama
273277
273316
  { id: "llama3.2", name: "Llama 3.2", provider: "ollama", contextWindow: 128e3, costTier: "cheap", supportsTools: true, supportsVision: false },
273278
- { id: "mistral", name: "Mistral", provider: "ollama", contextWindow: 32e3, costTier: "cheap", supportsTools: true, supportsVision: false }
273317
+ { id: "mistral", name: "Mistral", provider: "ollama", contextWindow: 32e3, costTier: "cheap", supportsTools: true, supportsVision: false },
273318
+ // DeepSeek
273319
+ { id: "deepseek-chat", name: "DeepSeek Chat", provider: "deepseek", contextWindow: 128e3, costTier: "cheap", supportsTools: true, supportsVision: true },
273320
+ { id: "deepseek-reasoner", name: "DeepSeek Reasoner", provider: "deepseek", contextWindow: 128e3, costTier: "standard", supportsTools: false, supportsVision: false },
273321
+ // xAI
273322
+ { id: "grok-3", name: "Grok 3", provider: "xai", contextWindow: 131072, costTier: "premium", supportsTools: true, supportsVision: true },
273323
+ { id: "grok-3-mini", name: "Grok 3 Mini", provider: "xai", contextWindow: 131072, costTier: "standard", supportsTools: true, supportsVision: true },
273324
+ { id: "grok-2", name: "Grok 2", provider: "xai", contextWindow: 131072, costTier: "standard", supportsTools: true, supportsVision: true },
273325
+ { id: "grok-2-mini", name: "Grok 2 Mini", provider: "xai", contextWindow: 131072, costTier: "cheap", supportsTools: true, supportsVision: false },
273326
+ // Mistral
273327
+ { id: "mistral-large-latest", name: "Mistral Large", provider: "mistral", contextWindow: 128e3, costTier: "standard", supportsTools: true, supportsVision: false },
273328
+ { id: "codestral-latest", name: "Codestral", provider: "mistral", contextWindow: 256e3, costTier: "cheap", supportsTools: true, supportsVision: false },
273329
+ { id: "mistral-small-latest", name: "Mistral Small", provider: "mistral", contextWindow: 128e3, costTier: "cheap", supportsTools: true, supportsVision: false }
273279
273330
  ];
273280
273331
  }
273281
273332
  });
@@ -274389,6 +274440,18 @@ var init_settings = __esm({
274389
274440
  saveConfig(updated);
274390
274441
  return c.json({ ok: true });
274391
274442
  });
274443
+ settingsRoutes.delete("/providers/:name", (c) => {
274444
+ const name = c.req.param("name");
274445
+ const config = loadConfig();
274446
+ const idx = config.providers.findIndex((p2) => p2.provider === name);
274447
+ if (idx < 0) return c.json({ error: "Provider not found" }, 404);
274448
+ if (config.defaultProvider === name) {
274449
+ return c.json({ error: "Cannot delete the default provider. Set another as default first." }, 400);
274450
+ }
274451
+ config.providers.splice(idx, 1);
274452
+ saveConfig(config);
274453
+ return c.json({ ok: true });
274454
+ });
274392
274455
  settingsRoutes.get("/system", (c) => {
274393
274456
  const stats = getSystemStats();
274394
274457
  return c.json(stats);
@@ -274465,214 +274528,109 @@ var init_catalog_default = __esm({
274465
274528
  lastUpdated: (/* @__PURE__ */ new Date()).toISOString(),
274466
274529
  apps: [
274467
274530
  {
274468
- id: "signlang",
274469
- name: "SignLang",
274470
- bundleId: "com.bakyt.signlang",
274471
- version: "1.2.0",
274472
- category: "education",
274473
- description: "Learn American Sign Language with AI-powered camera practice. Point your camera at your hands and get real-time feedback on your sign accuracy. Includes 500+ signs, quizzes, and daily practice goals.",
274474
- shortDescription: "AI-powered sign language learning",
274531
+ id: "tryonai",
274532
+ name: "Dressy - TryOnAI",
274533
+ bundleId: "com.tryonai.dzhumabaevs.app",
274534
+ version: "1.0.0",
274535
+ category: "lifestyle",
274536
+ description: "Virtual try-on powered by AI. Upload a photo and see how different outfits look on you before buying. Uses advanced AI to realistically overlay clothing onto your body with accurate fit and drape.",
274537
+ shortDescription: "AI-powered virtual clothing try-on",
274475
274538
  developer: "Bakyt",
274476
- iconUrl: "/api/apps/icon/signlang",
274539
+ iconUrl: "http://65.109.4.13/store/icons/tryonai.png",
274477
274540
  screenshots: [],
274478
- sizeMb: 45,
274479
- minIosVersion: "16.0",
274480
- releaseDate: "2024-06-15",
274541
+ sizeMb: 35,
274542
+ minIosVersion: "17.0",
274543
+ releaseDate: "2025-01-15",
274481
274544
  lastUpdated: "2025-03-10",
274482
- changelog: "Added 50 new signs, improved hand detection accuracy",
274545
+ changelog: "Initial release",
274483
274546
  installMethods: ["quick_install", "altstore"],
274484
- downloadUrl: "",
274547
+ downloadUrl: "http://65.109.4.13/store/ipas/tryonai-latest.ipa",
274485
274548
  status: "available",
274486
- tags: ["ai", "accessibility", "camera", "asl"]
274549
+ tags: ["ai", "fashion", "camera", "ar"]
274487
274550
  },
274488
274551
  {
274489
- id: "caloriessnap",
274490
- name: "CaloriesSnap",
274491
- bundleId: "com.bakyt.caloriessnap",
274492
- version: "2.0.1",
274493
- category: "health",
274494
- description: "Snap a photo of your meal and instantly get calorie counts and macro breakdowns. Uses on-device AI to identify foods, portion sizes, and nutritional information. Track your daily intake with beautiful charts.",
274495
- shortDescription: "AI calorie tracking from photos",
274496
- developer: "Bakyt",
274497
- iconUrl: "/api/apps/icon/caloriessnap",
274498
- screenshots: [],
274499
- sizeMb: 38,
274500
- minIosVersion: "16.0",
274501
- releaseDate: "2024-04-20",
274502
- lastUpdated: "2025-02-28",
274503
- changelog: "Improved food recognition, added meal history export",
274504
- installMethods: ["quick_install", "altstore", "testflight"],
274505
- downloadUrl: "",
274506
- status: "available",
274507
- tags: ["ai", "health", "nutrition", "camera"]
274508
- },
274509
- {
274510
- id: "vibelens",
274511
- name: "VibeLens",
274512
- bundleId: "com.bakyt.vibelens",
274513
- version: "1.5.0",
274514
- category: "photography",
274515
- description: "Transform your photos with AI-powered mood filters. VibeLens analyzes the emotional tone of your image and applies cinematic color grading to match. Choose from 30+ vibe presets or let AI pick the perfect one.",
274516
- shortDescription: "AI mood-based photo filters",
274517
- developer: "Bakyt",
274518
- iconUrl: "/api/apps/icon/vibelens",
274519
- screenshots: [],
274520
- sizeMb: 52,
274521
- minIosVersion: "16.0",
274522
- releaseDate: "2024-08-01",
274523
- lastUpdated: "2025-01-15",
274524
- changelog: "New film grain presets, batch processing support",
274525
- installMethods: ["quick_install", "altstore"],
274526
- downloadUrl: "",
274527
- status: "available",
274528
- tags: ["ai", "photos", "filters", "creative"]
274529
- },
274530
- {
274531
- id: "posescope",
274532
- name: "PoseScope",
274533
- bundleId: "com.bakyt.posescope",
274534
- version: "1.1.0",
274535
- category: "health",
274536
- description: "Real-time pose analysis for yoga, workouts, and physical therapy. Uses your camera to track body position and provides instant feedback on form. Includes guided routines and progress tracking.",
274537
- shortDescription: "AI pose analysis for fitness",
274538
- developer: "Bakyt",
274539
- iconUrl: "/api/apps/icon/posescope",
274540
- screenshots: [],
274541
- sizeMb: 41,
274542
- minIosVersion: "16.0",
274543
- releaseDate: "2024-09-12",
274544
- lastUpdated: "2025-02-05",
274545
- changelog: "Added 20 new yoga poses, improved joint detection",
274546
- installMethods: ["quick_install", "altstore"],
274547
- downloadUrl: "",
274548
- status: "available",
274549
- tags: ["ai", "fitness", "yoga", "camera", "health"]
274550
- },
274551
- {
274552
- id: "soundsig",
274553
- name: "SoundSig",
274554
- bundleId: "com.bakyt.soundsig",
274555
- version: "1.0.3",
274552
+ id: "fakecall",
274553
+ name: "Alibi",
274554
+ bundleId: "com.dzhumabaevs.fakecall",
274555
+ version: "1.2",
274556
274556
  category: "utilities",
274557
- description: "Identify any sound around you. SoundSig listens and classifies ambient sounds \u2014 bird species, musical instruments, machinery, alarms, and more. Build a personal sound library and get notifications for specific sounds.",
274558
- shortDescription: "AI sound identification",
274557
+ description: "Schedule realistic fake phone calls to get out of awkward situations. Customize caller name, photo, ringtone, and timing. The call screen looks exactly like a real incoming call \u2014 nobody will know the difference.",
274558
+ shortDescription: "Realistic fake incoming calls on demand",
274559
274559
  developer: "Bakyt",
274560
- iconUrl: "/api/apps/icon/soundsig",
274560
+ iconUrl: "http://65.109.4.13/store/icons/fakecall.png",
274561
274561
  screenshots: [],
274562
- sizeMb: 29,
274563
- minIosVersion: "16.0",
274562
+ sizeMb: 15,
274563
+ minIosVersion: "17.0",
274564
274564
  releaseDate: "2024-11-01",
274565
- lastUpdated: "2025-01-20",
274566
- changelog: "Added 200+ new sound categories",
274567
- installMethods: ["quick_install", "altstore"],
274568
- downloadUrl: "",
274569
- status: "available",
274570
- tags: ["ai", "audio", "identification", "accessibility"]
274571
- },
274572
- {
274573
- id: "aura",
274574
- name: "Aura",
274575
- bundleId: "com.bakyt.aura",
274576
- version: "2.1.0",
274577
- category: "lifestyle",
274578
- description: "Your personal mood and energy tracker. Aura uses AI to analyze your daily patterns \u2014 sleep, activity, weather, and screen time \u2014 to predict your energy levels and suggest optimal times for focus, exercise, and rest.",
274579
- shortDescription: "AI-powered mood & energy tracker",
274580
- developer: "Bakyt",
274581
- iconUrl: "/api/apps/icon/aura",
274582
- screenshots: [],
274583
- sizeMb: 22,
274584
- minIosVersion: "16.0",
274585
- releaseDate: "2024-03-05",
274586
- lastUpdated: "2025-03-01",
274587
- changelog: "New sleep quality insights, widget support",
274588
- installMethods: ["quick_install", "altstore", "testflight"],
274589
- downloadUrl: "",
274590
- status: "available",
274591
- tags: ["ai", "wellness", "mood", "tracking"]
274592
- },
274593
- {
274594
- id: "sightx",
274595
- name: "SightX",
274596
- bundleId: "com.bakyt.sightx",
274597
- version: "1.3.0",
274598
- category: "utilities",
274599
- description: "Point your camera at any object and get instant information. SightX identifies plants, animals, landmarks, products, and text in 40+ languages. Save discoveries to your personal visual encyclopedia.",
274600
- shortDescription: "Visual search & object identification",
274601
- developer: "Bakyt",
274602
- iconUrl: "/api/apps/icon/sightx",
274603
- screenshots: [],
274604
- sizeMb: 56,
274605
- minIosVersion: "16.0",
274606
- releaseDate: "2024-05-18",
274607
274565
  lastUpdated: "2025-02-20",
274608
- changelog: "Added plant disease detection, improved OCR",
274566
+ changelog: "v1.2: Added custom ringtones and contact photos",
274609
274567
  installMethods: ["quick_install", "altstore"],
274610
- downloadUrl: "",
274568
+ downloadUrl: "http://65.109.4.13/store/ipas/fakecall-latest.ipa",
274611
274569
  status: "available",
274612
- tags: ["ai", "camera", "identification", "ar"]
274570
+ tags: ["utility", "prank", "social"]
274613
274571
  },
274614
274572
  {
274615
- id: "tamakpet",
274616
- name: "TamakPet",
274617
- bundleId: "com.bakyt.tamakpet",
274618
- version: "1.0.0",
274573
+ id: "soundvault",
274574
+ name: "SoundVault",
274575
+ bundleId: "com.dzhumabaevs.soundvault",
274576
+ version: "1.0.2",
274619
274577
  category: "entertainment",
274620
- description: "A modern AI-powered virtual pet that lives on your phone. Feed, play, and train your TamakPet. It learns your schedule and sends you messages. Each pet develops a unique personality based on how you interact.",
274621
- shortDescription: "AI virtual pet companion",
274578
+ description: "Your personal sound library and audio manager. Record, organize, and play back sounds with a beautiful interface. Create soundboards, tag your recordings, and access them instantly. Perfect for musicians, content creators, and sound enthusiasts.",
274579
+ shortDescription: "Personal sound library and audio manager",
274622
274580
  developer: "Bakyt",
274623
- iconUrl: "/api/apps/icon/tamakpet",
274581
+ iconUrl: "http://65.109.4.13/store/icons/soundvault.png",
274624
274582
  screenshots: [],
274625
- sizeMb: 34,
274626
- minIosVersion: "16.0",
274627
- releaseDate: "2025-01-10",
274628
- lastUpdated: "2025-03-05",
274629
- changelog: "Initial release with 5 pet types",
274583
+ sizeMb: 20,
274584
+ minIosVersion: "17.0",
274585
+ releaseDate: "2024-12-01",
274586
+ lastUpdated: "2025-01-15",
274587
+ changelog: "v1.0.2: Bug fixes and performance improvements",
274630
274588
  installMethods: ["quick_install", "altstore"],
274631
- downloadUrl: "",
274589
+ downloadUrl: "http://65.109.4.13/store/ipas/soundvault-latest.ipa",
274632
274590
  status: "available",
274633
- tags: ["ai", "game", "virtual-pet", "fun"]
274591
+ tags: ["audio", "music", "recording", "creative"]
274634
274592
  },
274635
274593
  {
274636
- id: "archaman",
274637
- name: "Archaman",
274638
- bundleId: "com.bakyt.archaman",
274639
- version: "1.4.0",
274594
+ id: "pianomaster",
274595
+ name: "PianoMaster",
274596
+ bundleId: "com.dzhumabaevs.pianomaster",
274597
+ version: "1.0",
274640
274598
  category: "education",
274641
- description: "Explore historical architecture through AR. Point your camera at any building and Archaman overlays historical information, architectural style analysis, and 3D reconstructions of how the building looked in different eras.",
274642
- shortDescription: "AR architecture explorer",
274599
+ description: "Learn to play piano with interactive lessons and real-time feedback. Follow along with guided tutorials, practice scales and chords, and track your progress. Features a beautiful on-screen keyboard with realistic sound.",
274600
+ shortDescription: "Interactive piano learning app",
274643
274601
  developer: "Bakyt",
274644
- iconUrl: "/api/apps/icon/archaman",
274602
+ iconUrl: "http://65.109.4.13/store/icons/pianomaster.png",
274645
274603
  screenshots: [],
274646
- sizeMb: 78,
274647
- minIosVersion: "16.0",
274648
- releaseDate: "2024-07-22",
274649
- lastUpdated: "2025-02-15",
274650
- changelog: "Added 500+ new buildings, improved AR stability",
274604
+ sizeMb: 25,
274605
+ minIosVersion: "17.0",
274606
+ releaseDate: "2025-02-01",
274607
+ lastUpdated: "2025-03-01",
274608
+ changelog: "Initial release",
274651
274609
  installMethods: ["quick_install", "altstore"],
274652
- downloadUrl: "",
274610
+ downloadUrl: "http://65.109.4.13/store/ipas/pianomaster-latest.ipa",
274653
274611
  status: "available",
274654
- tags: ["ai", "ar", "architecture", "history", "camera"]
274612
+ tags: ["music", "piano", "education", "learning"]
274655
274613
  },
274656
274614
  {
274657
- id: "focusflow",
274658
- name: "FocusFlow",
274659
- bundleId: "com.bakyt.focusflow",
274660
- version: "1.2.0",
274661
- category: "productivity",
274662
- description: "AI-powered focus sessions that adapt to your work patterns. FocusFlow learns when you are most productive and suggests optimal work/break intervals. Integrates with your calendar and blocks distracting apps during focus time.",
274663
- shortDescription: "Adaptive AI focus timer",
274615
+ id: "metaminor",
274616
+ name: "MetaMinor",
274617
+ bundleId: "com.dzhumabaevsz.metaminor",
274618
+ version: "1.0",
274619
+ category: "utilities",
274620
+ description: "View and edit metadata for your photos, videos, and files. MetaMinor lets you inspect EXIF data, GPS coordinates, timestamps, camera settings, and more. Batch edit metadata, strip location data for privacy, and export clean files.",
274621
+ shortDescription: "Photo & file metadata viewer and editor",
274664
274622
  developer: "Bakyt",
274665
- iconUrl: "/api/apps/icon/focusflow",
274623
+ iconUrl: "http://65.109.4.13/store/icons/metaminor.png",
274666
274624
  screenshots: [],
274667
- sizeMb: 18,
274668
- minIosVersion: "16.0",
274669
- releaseDate: "2024-10-05",
274670
- lastUpdated: "2025-03-08",
274671
- changelog: "Calendar sync, new ambient sounds",
274672
- installMethods: ["quick_install", "altstore", "testflight"],
274673
- downloadUrl: "",
274625
+ sizeMb: 12,
274626
+ minIosVersion: "17.0",
274627
+ releaseDate: "2025-01-20",
274628
+ lastUpdated: "2025-02-10",
274629
+ changelog: "Initial release",
274630
+ installMethods: ["quick_install", "altstore"],
274631
+ downloadUrl: "http://65.109.4.13/store/ipas/metaminor-latest.ipa",
274674
274632
  status: "available",
274675
- tags: ["ai", "productivity", "focus", "timer"]
274633
+ tags: ["utility", "metadata", "photos", "privacy"]
274676
274634
  }
274677
274635
  ]
274678
274636
  };
@@ -274717,7 +274675,7 @@ var init_apps = __esm({
274717
274675
  "use strict";
274718
274676
  init_catalog_default();
274719
274677
  appsRoutes = new Hono8();
274720
- CATALOG_URL = process.env.DJAGENT_CATALOG_URL || "";
274678
+ CATALOG_URL = process.env.DJAGENT_CATALOG_URL || "http://65.109.4.13/store/catalog.json";
274721
274679
  LOCAL_CATALOG_PATH = join8(homedir4(), ".agent-dj", "catalog.json");
274722
274680
  cachedCatalog = DEFAULT_CATALOG;
274723
274681
  lastFetchTime = 0;