@zhive/cli 0.6.5 → 0.6.7

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 (57) hide show
  1. package/dist/commands/agent/commands/profile.js +0 -6
  2. package/dist/commands/agent/commands/profile.test.js +2 -23
  3. package/dist/commands/create/presets/index.js +1 -1
  4. package/dist/commands/create/presets/options.js +18 -15
  5. package/dist/commands/create/ui/steps/IdentityStep.js +3 -2
  6. package/dist/commands/doctor/commands/index.js +5 -11
  7. package/dist/commands/megathread/commands/create-comment.js +2 -7
  8. package/dist/commands/megathread/commands/create-comment.test.js +3 -30
  9. package/dist/commands/megathread/commands/create-comments.js +2 -7
  10. package/dist/commands/megathread/commands/list.js +5 -10
  11. package/dist/commands/megathread/commands/list.test.js +3 -21
  12. package/dist/commands/migrate-templates/ui/MigrateApp.js +1 -1
  13. package/dist/commands/start/commands/prediction.js +1 -1
  14. package/dist/commands/start/commands/skills.test.js +1 -2
  15. package/dist/components/MultiSelectPrompt.js +3 -3
  16. package/dist/shared/config/agent.js +12 -6
  17. package/dist/shared/config/agent.test.js +0 -5
  18. package/package.json +2 -2
  19. package/dist/CLAUDE.md +0 -7
  20. package/dist/backtest/CLAUDE.md +0 -7
  21. package/dist/cli.js +0 -20
  22. package/dist/commands/create/presets.js +0 -613
  23. package/dist/commands/start/ui/AsciiTicker.js +0 -81
  24. package/dist/services/agent/analysis.js +0 -160
  25. package/dist/services/agent/config.js +0 -75
  26. package/dist/services/agent/env.js +0 -30
  27. package/dist/services/agent/helpers/model.js +0 -92
  28. package/dist/services/agent/helpers.js +0 -22
  29. package/dist/services/agent/prompts/chat-prompt.js +0 -65
  30. package/dist/services/agent/prompts/memory-prompt.js +0 -45
  31. package/dist/services/agent/prompts/prompt.js +0 -379
  32. package/dist/services/agent/skills/index.js +0 -2
  33. package/dist/services/agent/skills/skill-parser.js +0 -149
  34. package/dist/services/agent/skills/types.js +0 -1
  35. package/dist/services/agent/tools/edit-section.js +0 -59
  36. package/dist/services/agent/tools/fetch-rules.js +0 -21
  37. package/dist/services/agent/tools/index.js +0 -76
  38. package/dist/services/agent/tools/market/client.js +0 -41
  39. package/dist/services/agent/tools/market/index.js +0 -3
  40. package/dist/services/agent/tools/market/tools.js +0 -518
  41. package/dist/services/agent/tools/mindshare/client.js +0 -124
  42. package/dist/services/agent/tools/mindshare/index.js +0 -3
  43. package/dist/services/agent/tools/mindshare/tools.js +0 -563
  44. package/dist/services/agent/tools/read-skill-tool.js +0 -30
  45. package/dist/services/agent/tools/ta/index.js +0 -1
  46. package/dist/services/agent/tools/ta/indicators.js +0 -201
  47. package/dist/services/agent/types.js +0 -1
  48. package/dist/services/ai-providers.js +0 -66
  49. package/dist/services/config/agent.js +0 -110
  50. package/dist/services/config/config.js +0 -22
  51. package/dist/services/config/constant.js +0 -8
  52. package/dist/shared/agent/agent-runtime.js +0 -144
  53. package/dist/shared/agent/config.js +0 -75
  54. package/dist/shared/agent/env.js +0 -30
  55. package/dist/shared/agent/helpers/model.js +0 -92
  56. package/dist/shared/agent/types.js +0 -1
  57. package/dist/shared/ai-providers.js +0 -66
@@ -1,30 +0,0 @@
1
- import { readFileSync } from 'fs';
2
- import { AI_PROVIDER_ENV_VARS } from '../ai-providers.js';
3
- let _agentProviderKeys = new Set();
4
- /**
5
- * Provider env-var names declared in the agent's .env file.
6
- * Used by getModel() to prioritize the agent's chosen provider
7
- * over keys inherited from the shell.
8
- */
9
- export function getAgentProviderKeys() {
10
- return _agentProviderKeys;
11
- }
12
- /**
13
- * Load the agent's .env with provider-key priority.
14
- *
15
- * 1. Parse .env to discover which provider keys the agent declared.
16
- * 2. Load .env with override so the agent's values win for the same key.
17
- * 3. getModel() uses getAgentProviderKeys() to check those providers first,
18
- * falling back to shell-inherited keys if the agent has none.
19
- */
20
- export async function loadAgentEnv() {
21
- try {
22
- const content = readFileSync('.env', 'utf-8');
23
- _agentProviderKeys = new Set(AI_PROVIDER_ENV_VARS.filter((key) => new RegExp(`^${key}=`, 'm').test(content)));
24
- }
25
- catch {
26
- _agentProviderKeys = new Set();
27
- }
28
- const { config } = await import('dotenv');
29
- config({ override: true });
30
- }
@@ -1,92 +0,0 @@
1
- import { AI_PROVIDERS } from '../../ai-providers.js';
2
- import { getAgentProviderKeys } from '../../config/env-loader.js';
3
- const PROVIDERS = [
4
- {
5
- label: 'Anthropic',
6
- envVar: 'ANTHROPIC_API_KEY',
7
- load: async (modelId) => {
8
- const { anthropic } = await import('@ai-sdk/anthropic');
9
- return anthropic(modelId);
10
- },
11
- },
12
- {
13
- label: 'OpenAI',
14
- envVar: 'OPENAI_API_KEY',
15
- load: async (modelId) => {
16
- const { openai } = await import('@ai-sdk/openai');
17
- return openai(modelId);
18
- },
19
- },
20
- {
21
- label: 'Google',
22
- envVar: 'GOOGLE_GENERATIVE_AI_API_KEY',
23
- load: async (modelId) => {
24
- const { google } = await import('@ai-sdk/google');
25
- return google(modelId);
26
- },
27
- },
28
- {
29
- label: 'xAI',
30
- envVar: 'XAI_API_KEY',
31
- load: async (modelId) => {
32
- const { xai } = await import('@ai-sdk/xai');
33
- return xai(modelId);
34
- },
35
- },
36
- {
37
- label: 'OpenRouter',
38
- envVar: 'OPENROUTER_API_KEY',
39
- load: async (modelId) => {
40
- const { createOpenRouter } = await import('@openrouter/ai-sdk-provider');
41
- const openrouter = createOpenRouter({ apiKey: process.env.OPENROUTER_API_KEY });
42
- return openrouter.chat(modelId);
43
- },
44
- },
45
- ];
46
- export function resolveModelInfo() {
47
- const overrideModel = process.env.HIVE_MODEL;
48
- const agentKeys = getAgentProviderKeys();
49
- const sortedProviders = [
50
- ...PROVIDERS.filter((p) => agentKeys.has(p.envVar)),
51
- ...PROVIDERS.filter((p) => !agentKeys.has(p.envVar)),
52
- ];
53
- for (const provider of sortedProviders) {
54
- const keyValue = process.env[provider.envVar];
55
- if (keyValue && keyValue.trim().length > 0) {
56
- const centralProvider = AI_PROVIDERS.find((p) => p.envVar === provider.envVar);
57
- const runtimeModel = centralProvider?.models.runtime ?? 'unknown';
58
- const modelId = overrideModel ?? runtimeModel;
59
- const source = agentKeys.has(provider.envVar) ? '.env' : 'shell';
60
- return { provider: provider.label, modelId, source };
61
- }
62
- }
63
- return { provider: 'unknown', modelId: 'unknown', source: 'unknown' };
64
- }
65
- let _modelPromise = null;
66
- export function getModel() {
67
- if (_modelPromise) {
68
- return _modelPromise;
69
- }
70
- _modelPromise = (async () => {
71
- const info = resolveModelInfo();
72
- if (info.provider === 'unknown') {
73
- throw new Error('No AI provider API key found in environment. ' +
74
- 'Set one of: ANTHROPIC_API_KEY, OPENAI_API_KEY, GOOGLE_GENERATIVE_AI_API_KEY, XAI_API_KEY, OPENROUTER_API_KEY');
75
- }
76
- const agentKeys = getAgentProviderKeys();
77
- const sortedProviders = [
78
- ...PROVIDERS.filter((p) => agentKeys.has(p.envVar)),
79
- ...PROVIDERS.filter((p) => !agentKeys.has(p.envVar)),
80
- ];
81
- for (const provider of sortedProviders) {
82
- const keyValue = process.env[provider.envVar];
83
- if (keyValue && keyValue.trim().length > 0) {
84
- const modelId = info.modelId;
85
- const model = await provider.load(modelId);
86
- return model;
87
- }
88
- }
89
- throw new Error('Unreachable: resolveModelInfo succeeded but no provider found');
90
- })();
91
- return _modelPromise;
92
- }
@@ -1 +0,0 @@
1
- export {};
@@ -1,66 +0,0 @@
1
- export const AI_PROVIDERS = [
2
- {
3
- id: 'openai',
4
- label: 'OpenAI',
5
- package: '@ai-sdk/openai',
6
- envVar: 'OPENAI_API_KEY',
7
- models: { validation: 'gpt-4o-mini', generation: 'gpt-5-mini', runtime: 'gpt-5-mini' },
8
- },
9
- {
10
- id: 'anthropic',
11
- label: 'Anthropic',
12
- package: '@ai-sdk/anthropic',
13
- envVar: 'ANTHROPIC_API_KEY',
14
- models: {
15
- validation: 'claude-haiku-4-5-20251001',
16
- generation: 'claude-haiku-4-5',
17
- runtime: 'claude-haiku-4-5',
18
- },
19
- },
20
- {
21
- id: 'google',
22
- label: 'Google',
23
- package: '@ai-sdk/google',
24
- envVar: 'GOOGLE_GENERATIVE_AI_API_KEY',
25
- models: {
26
- validation: 'gemini-2.0-flash',
27
- generation: 'gemini-3-flash-preview',
28
- runtime: 'gemini-3-flash-preview',
29
- },
30
- },
31
- {
32
- id: 'xai',
33
- label: 'xAI',
34
- package: '@ai-sdk/xai',
35
- envVar: 'XAI_API_KEY',
36
- models: {
37
- validation: 'grok-2',
38
- generation: 'grok-4-1-fast-reasoning',
39
- runtime: 'grok-4-1-fast-reasoning',
40
- },
41
- },
42
- {
43
- id: 'openrouter',
44
- label: 'OpenRouter',
45
- package: '@openrouter/ai-sdk-provider',
46
- envVar: 'OPENROUTER_API_KEY',
47
- models: {
48
- validation: 'openai/gpt-4o-mini',
49
- generation: 'openai/gpt-5.1-mini',
50
- runtime: 'openai/gpt-5.1-mini',
51
- },
52
- },
53
- ];
54
- /**
55
- * All env-var names used by AI providers.
56
- * Used to clear shell-inherited keys before loading an agent's .env,
57
- * so only the agent's chosen provider is active.
58
- */
59
- export const AI_PROVIDER_ENV_VARS = AI_PROVIDERS.map((p) => p.envVar);
60
- export function getProvider(id) {
61
- const provider = AI_PROVIDERS.find((p) => p.id === id);
62
- if (!provider) {
63
- throw new Error(`Unknown AI provider: ${id}`);
64
- }
65
- return provider;
66
- }