hoomanjs 1.47.0 → 1.55.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/README.md +42 -18
- package/dist/acp/acp-agent.d.ts +3 -3
- package/dist/acp/acp-agent.js +16 -11
- package/dist/acp/acp-agent.js.map +1 -1
- package/dist/acp/approvals.js +11 -10
- package/dist/acp/approvals.js.map +1 -1
- package/dist/acp/browser.d.ts +9 -0
- package/dist/acp/browser.js +23 -0
- package/dist/acp/browser.js.map +1 -0
- package/dist/acp/meta/vscode.d.ts +8 -7
- package/dist/acp/meta/vscode.js +10 -11
- package/dist/acp/meta/vscode.js.map +1 -1
- package/dist/acp/sessions/store.d.ts +3 -3
- package/dist/acp/utils/tool-kind.js +6 -6
- package/dist/acp/utils/tool-kind.js.map +1 -1
- package/dist/chat/app.js +16 -9
- package/dist/chat/app.js.map +1 -1
- package/dist/chat/approvals.js +3 -0
- package/dist/chat/approvals.js.map +1 -1
- package/dist/chat/components/ApprovalPrompt.js +11 -22
- package/dist/chat/components/ApprovalPrompt.js.map +1 -1
- package/dist/chat/components/StatusBar.js +3 -0
- package/dist/chat/components/StatusBar.js.map +1 -1
- package/dist/chat/types.d.ts +3 -0
- package/dist/cli.js +162 -44
- package/dist/cli.js.map +1 -1
- package/dist/configure/app.js +46 -29
- package/dist/configure/app.js.map +1 -1
- package/dist/core/agent/default-retry-strategy.js +46 -12
- package/dist/core/agent/default-retry-strategy.js.map +1 -1
- package/dist/core/agent/gitignore-guard-plugin.js +17 -2
- package/dist/core/agent/gitignore-guard-plugin.js.map +1 -1
- package/dist/core/agent/index.js +37 -7
- package/dist/core/agent/index.js.map +1 -1
- package/dist/core/approvals/allowlist.js +1 -0
- package/dist/core/approvals/allowlist.js.map +1 -1
- package/dist/core/approvals/intervention.d.ts +10 -2
- package/dist/core/approvals/intervention.js +46 -8
- package/dist/core/approvals/intervention.js.map +1 -1
- package/dist/core/config.d.ts +9 -2
- package/dist/core/config.js +8 -4
- package/dist/core/config.js.map +1 -1
- package/dist/core/index.d.ts +2 -2
- package/dist/core/mcp/oauth/service.js +2 -2
- package/dist/core/mcp/oauth/service.js.map +1 -1
- package/dist/core/models/bedrock.js +6 -0
- package/dist/core/models/bedrock.js.map +1 -1
- package/dist/core/models/groq.js +34 -14
- package/dist/core/models/groq.js.map +1 -1
- package/dist/core/models/minimax.js +1 -1
- package/dist/core/models/minimax.js.map +1 -1
- package/dist/core/models/types.d.ts +10 -2
- package/dist/core/models/types.js +1 -0
- package/dist/core/models/types.js.map +1 -1
- package/dist/core/modes/definitions.d.ts +4 -2
- package/dist/core/modes/definitions.js +73 -9
- package/dist/core/modes/definitions.js.map +1 -1
- package/dist/core/modes/index.d.ts +1 -1
- package/dist/core/modes/index.js +1 -1
- package/dist/core/modes/index.js.map +1 -1
- package/dist/core/modes/registry.js +4 -9
- package/dist/core/modes/registry.js.map +1 -1
- package/dist/core/modes/schema.d.ts +1 -1
- package/dist/core/modes/schema.js +1 -1
- package/dist/core/modes/schema.js.map +1 -1
- package/dist/core/prompts/agents/{review.md → code-review.md} +2 -2
- package/dist/core/prompts/agents/design-review.md +35 -0
- package/dist/core/prompts/agents/{test-investigator.md → quality-analyst.md} +2 -2
- package/dist/core/prompts/modes/agent.md +2 -0
- package/dist/core/prompts/modes/ask.md +2 -2
- package/dist/core/prompts/modes/design.md +37 -0
- package/dist/core/prompts/modes/plan.md +5 -5
- package/dist/core/prompts/{runtime.js → runtime/agents.js} +2 -2
- package/dist/core/prompts/runtime/agents.js.map +1 -0
- package/dist/core/prompts/runtime/design.d.ts +11 -0
- package/dist/core/prompts/runtime/design.js +78 -0
- package/dist/core/prompts/runtime/design.js.map +1 -0
- package/dist/core/prompts/{session-mode-appendix.js → session-mode.js} +1 -1
- package/dist/core/prompts/session-mode.js.map +1 -0
- package/dist/core/prompts/static/ask-user.md +3 -2
- package/dist/core/prompts/static/fetch.md +2 -1
- package/dist/core/prompts/static/filesystem.md +2 -1
- package/dist/core/prompts/static/subagents.md +2 -1
- package/dist/core/prompts/static/switch-mode.md +10 -0
- package/dist/core/prompts/system.d.ts +1 -0
- package/dist/core/prompts/system.js +11 -3
- package/dist/core/prompts/system.js.map +1 -1
- package/dist/core/shell/index.d.ts +1 -1
- package/dist/core/shell/index.js +1 -1
- package/dist/core/shell/{shell.js → tools.js} +1 -1
- package/dist/core/shell/{shell.js.map → tools.js.map} +1 -1
- package/dist/core/skills/built-in/hooman-config/SKILL.md +30 -35
- package/dist/core/skills/built-in/hooman-config/search.md +5 -3
- package/dist/core/skills/built-in/hooman-design/SKILL.md +97 -0
- package/dist/core/skills/built-in/hooman-design/assets/article-shell.html +87 -0
- package/dist/core/skills/built-in/hooman-design/assets/auth-shell.html +143 -0
- package/dist/core/skills/built-in/hooman-design/assets/business-card-shell.html +112 -0
- package/dist/core/skills/built-in/hooman-design/assets/contact-shell.html +181 -0
- package/dist/core/skills/built-in/hooman-design/assets/dashboard-shell.html +90 -0
- package/dist/core/skills/built-in/hooman-design/assets/data-table-shell.html +114 -0
- package/dist/core/skills/built-in/hooman-design/assets/deck-shell.html +187 -0
- package/dist/core/skills/built-in/hooman-design/assets/dialog-shell.html +98 -0
- package/dist/core/skills/built-in/hooman-design/assets/email-shell.html +101 -0
- package/dist/core/skills/built-in/hooman-design/assets/empty-state-shell.html +92 -0
- package/dist/core/skills/built-in/hooman-design/assets/flyer-shell.html +168 -0
- package/dist/core/skills/built-in/hooman-design/assets/invite-shell.html +167 -0
- package/dist/core/skills/built-in/hooman-design/assets/landing-shell.html +184 -0
- package/dist/core/skills/built-in/hooman-design/assets/mobile-frame-shell.html +109 -0
- package/dist/core/skills/built-in/hooman-design/assets/newsletter-shell.html +141 -0
- package/dist/core/skills/built-in/hooman-design/assets/onboarding-shell.html +131 -0
- package/dist/core/skills/built-in/hooman-design/assets/pricing-shell.html +160 -0
- package/dist/core/skills/built-in/hooman-design/assets/prototype-shell.html +83 -0
- package/dist/core/skills/built-in/hooman-design/assets/resume-shell.html +228 -0
- package/dist/core/skills/built-in/hooman-design/assets/settings-shell.html +196 -0
- package/dist/core/skills/built-in/hooman-design/assets/tokens/botanical-calm.css +34 -0
- package/dist/core/skills/built-in/hooman-design/assets/tokens/copper-ledger.css +34 -0
- package/dist/core/skills/built-in/hooman-design/assets/tokens/editorial-ink.css +34 -0
- package/dist/core/skills/built-in/hooman-design/assets/tokens/fintech-clear.css +34 -0
- package/dist/core/skills/built-in/hooman-design/assets/tokens/harbor-navy.css +35 -0
- package/dist/core/skills/built-in/hooman-design/assets/tokens/midnight-editorial.css +34 -0
- package/dist/core/skills/built-in/hooman-design/assets/tokens/night-console.css +34 -0
- package/dist/core/skills/built-in/hooman-design/assets/tokens/paper-mono.css +35 -0
- package/dist/core/skills/built-in/hooman-design/assets/tokens/signal-mono.css +34 -0
- package/dist/core/skills/built-in/hooman-design/assets/tokens/soft-product.css +34 -0
- package/dist/core/skills/built-in/hooman-design/assets/tokens/swiss-grid.css +34 -0
- package/dist/core/skills/built-in/hooman-design/assets/tokens/warm-atelier.css +34 -0
- package/dist/core/skills/built-in/hooman-design/assets/waitlist-shell.html +139 -0
- package/dist/core/skills/built-in/hooman-design/craft/accessibility-baseline.md +32 -0
- package/dist/core/skills/built-in/hooman-design/craft/anti-ai-slop.md +27 -0
- package/dist/core/skills/built-in/hooman-design/craft/color-surfaces.md +45 -0
- package/dist/core/skills/built-in/hooman-design/craft/data-viz.md +24 -0
- package/dist/core/skills/built-in/hooman-design/craft/deck-slides.md +46 -0
- package/dist/core/skills/built-in/hooman-design/craft/forms-validation.md +35 -0
- package/dist/core/skills/built-in/hooman-design/craft/iconography.md +19 -0
- package/dist/core/skills/built-in/hooman-design/craft/layout-overflow.md +31 -0
- package/dist/core/skills/built-in/hooman-design/craft/motion.md +41 -0
- package/dist/core/skills/built-in/hooman-design/craft/print.md +37 -0
- package/dist/core/skills/built-in/hooman-design/craft/responsive.md +30 -0
- package/dist/core/skills/built-in/hooman-design/craft/spacing-density.md +46 -0
- package/dist/core/skills/built-in/hooman-design/craft/state-coverage.md +21 -0
- package/dist/core/skills/built-in/hooman-design/craft/typography.md +73 -0
- package/dist/core/skills/built-in/hooman-design/directions.md +115 -0
- package/dist/core/skills/built-in/hooman-design/references/artifact-layout.md +15 -0
- package/dist/core/skills/built-in/hooman-design/references/export.md +47 -0
- package/dist/core/skills/built-in/hooman-design/references/workflow.md +80 -0
- package/dist/core/skills/built-in/hooman-mcp/SKILL.md +2 -2
- package/dist/core/state/llm-modality.d.ts +13 -0
- package/dist/core/state/llm-modality.js +19 -0
- package/dist/core/state/llm-modality.js.map +1 -0
- package/dist/core/state/plan.d.ts +1 -1
- package/dist/core/state/plan.js +1 -1
- package/dist/core/state/tool-approvals.d.ts +12 -9
- package/dist/core/state/tool-approvals.js +91 -52
- package/dist/core/state/tool-approvals.js.map +1 -1
- package/dist/core/state/turn-boundaries.d.ts +1 -1
- package/dist/core/state/turn-boundaries.js +1 -1
- package/dist/core/subagents/index.d.ts +1 -1
- package/dist/core/subagents/index.js +1 -1
- package/dist/core/subagents/registry.js +15 -6
- package/dist/core/subagents/registry.js.map +1 -1
- package/dist/core/subagents/tool.d.ts +8 -2
- package/dist/core/subagents/tool.js +93 -44
- package/dist/core/subagents/tool.js.map +1 -1
- package/dist/core/tools/ask-user.d.ts +1 -1
- package/dist/core/tools/ask-user.js +1 -1
- package/dist/core/tools/export.d.ts +8 -0
- package/dist/core/tools/export.js +202 -0
- package/dist/core/tools/export.js.map +1 -0
- package/dist/core/tools/fetch.d.ts +2 -0
- package/dist/core/tools/fetch.js +92 -55
- package/dist/core/tools/fetch.js.map +1 -1
- package/dist/core/tools/filesystem.d.ts +2 -1
- package/dist/core/tools/filesystem.js +38 -4
- package/dist/core/tools/filesystem.js.map +1 -1
- package/dist/core/tools/index.d.ts +3 -1
- package/dist/core/tools/index.js +3 -1
- package/dist/core/tools/index.js.map +1 -1
- package/dist/core/tools/preview.d.ts +10 -0
- package/dist/core/tools/preview.js +147 -0
- package/dist/core/tools/preview.js.map +1 -0
- package/dist/core/tools/switch-mode.d.ts +6 -0
- package/dist/core/tools/switch-mode.js +188 -0
- package/dist/core/tools/switch-mode.js.map +1 -0
- package/dist/core/tools/web-search.js +176 -0
- package/dist/core/tools/web-search.js.map +1 -1
- package/dist/core/utils/browser.d.ts +8 -1
- package/dist/core/utils/browser.js +17 -1
- package/dist/core/utils/browser.js.map +1 -1
- package/dist/core/utils/export-design.d.ts +40 -0
- package/dist/core/utils/export-design.js +188 -0
- package/dist/core/utils/export-design.js.map +1 -0
- package/dist/core/utils/export-figma.d.ts +17 -0
- package/dist/core/utils/export-figma.js +189 -0
- package/dist/core/utils/export-figma.js.map +1 -0
- package/dist/core/utils/export-sketch.d.ts +11 -0
- package/dist/core/utils/export-sketch.js +456 -0
- package/dist/core/utils/export-sketch.js.map +1 -0
- package/dist/core/utils/fig-archive.d.ts +47 -0
- package/dist/core/utils/fig-archive.js +181 -0
- package/dist/core/utils/fig-archive.js.map +1 -0
- package/dist/core/utils/metadata.d.ts +30 -0
- package/dist/core/utils/metadata.js +122 -0
- package/dist/core/utils/metadata.js.map +1 -1
- package/dist/core/utils/models-prefetch.d.ts +53 -0
- package/dist/core/utils/models-prefetch.js +469 -0
- package/dist/core/utils/models-prefetch.js.map +1 -0
- package/dist/core/utils/onboarding-config.d.ts +48 -0
- package/dist/core/utils/onboarding-config.js +373 -0
- package/dist/core/utils/onboarding-config.js.map +1 -0
- package/dist/core/utils/paths.d.ts +9 -7
- package/dist/core/utils/paths.js +12 -10
- package/dist/core/utils/paths.js.map +1 -1
- package/dist/core/utils/preview-server.d.ts +20 -0
- package/dist/core/utils/preview-server.js +212 -0
- package/dist/core/utils/preview-server.js.map +1 -0
- package/dist/core/utils/search-probe.d.ts +19 -0
- package/dist/core/utils/search-probe.js +165 -0
- package/dist/core/utils/search-probe.js.map +1 -0
- package/dist/core/utils/seeds/empty-slides.deck +0 -0
- package/dist/core/utils/url-safety.d.ts +2 -0
- package/dist/core/utils/url-safety.js +47 -0
- package/dist/core/utils/url-safety.js.map +1 -0
- package/dist/core/utils/zstd.d.ts +6 -0
- package/dist/core/utils/zstd.js +39 -0
- package/dist/core/utils/zstd.js.map +1 -0
- package/dist/exec/approvals.js +5 -5
- package/dist/exec/approvals.js.map +1 -1
- package/dist/index.d.ts +9 -3
- package/dist/index.js +6 -3
- package/dist/index.js.map +1 -1
- package/dist/onboarding/app.d.ts +5 -0
- package/dist/onboarding/app.js +255 -0
- package/dist/onboarding/app.js.map +1 -0
- package/dist/onboarding/index.d.ts +5 -0
- package/dist/onboarding/index.js +27 -0
- package/dist/onboarding/index.js.map +1 -0
- package/package.json +16 -3
- package/dist/core/prompts/runtime.js.map +0 -1
- package/dist/core/prompts/session-mode-appendix.js.map +0 -1
- package/dist/core/prompts/static/planning.md +0 -3
- package/dist/core/tools/plan.d.ts +0 -5
- package/dist/core/tools/plan.js +0 -150
- package/dist/core/tools/plan.js.map +0 -1
- /package/dist/core/prompts/{runtime.d.ts → runtime/agents.d.ts} +0 -0
- /package/dist/core/prompts/{session-mode-appendix.d.ts → session-mode.d.ts} +0 -0
- /package/dist/core/shell/{shell.d.ts → tools.d.ts} +0 -0
|
@@ -0,0 +1,373 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared first-run onboarding: validate inference + search credentials and
|
|
3
|
+
* write `~/.hooman/config.json`. Used by the CLI Ink flow and the VS Code
|
|
4
|
+
* webview onboarding.
|
|
5
|
+
*/
|
|
6
|
+
import { existsSync, mkdirSync, writeFileSync } from "node:fs";
|
|
7
|
+
import { dirname } from "node:path";
|
|
8
|
+
import { DEFAULT_PREFETCH_MODEL_BY_PROVIDER, resolvePrefetchModels, } from "./models-prefetch.js";
|
|
9
|
+
import { probeSearchProvider, } from "./search-probe.js";
|
|
10
|
+
import { configJsonPath } from "./paths.js";
|
|
11
|
+
export const ONBOARDING_PROVIDER_LABELS = {
|
|
12
|
+
anthropic: "Anthropic",
|
|
13
|
+
azure: "Azure OpenAI",
|
|
14
|
+
bedrock: "Bedrock",
|
|
15
|
+
google: "Google",
|
|
16
|
+
groq: "Groq",
|
|
17
|
+
"llama-cpp": "llama.cpp",
|
|
18
|
+
minimax: "MiniMax",
|
|
19
|
+
mlx: "mlx",
|
|
20
|
+
moonshot: "Moonshot",
|
|
21
|
+
ollama: "Ollama",
|
|
22
|
+
openai: "OpenAI",
|
|
23
|
+
openrouter: "OpenRouter",
|
|
24
|
+
xai: "xAI",
|
|
25
|
+
};
|
|
26
|
+
export const ONBOARDING_SEARCH_LABELS = {
|
|
27
|
+
brave: "Brave",
|
|
28
|
+
duckduckgo: "DuckDuckGo",
|
|
29
|
+
exa: "Exa",
|
|
30
|
+
firecrawl: "Firecrawl",
|
|
31
|
+
litellm: "LiteLLM",
|
|
32
|
+
serper: "Serper",
|
|
33
|
+
tavily: "Tavily",
|
|
34
|
+
};
|
|
35
|
+
/** Inference providers offered during first-run onboarding. */
|
|
36
|
+
export const ONBOARDING_PROVIDERS = [
|
|
37
|
+
"llama-cpp",
|
|
38
|
+
"mlx",
|
|
39
|
+
"ollama",
|
|
40
|
+
"anthropic",
|
|
41
|
+
"openai",
|
|
42
|
+
"google",
|
|
43
|
+
"azure",
|
|
44
|
+
"bedrock",
|
|
45
|
+
"groq",
|
|
46
|
+
"minimax",
|
|
47
|
+
"moonshot",
|
|
48
|
+
"openrouter",
|
|
49
|
+
"xai",
|
|
50
|
+
];
|
|
51
|
+
/** Search providers offered during first-run onboarding. */
|
|
52
|
+
export const ONBOARDING_SEARCH_PROVIDERS = [
|
|
53
|
+
"duckduckgo",
|
|
54
|
+
"brave",
|
|
55
|
+
"exa",
|
|
56
|
+
"firecrawl",
|
|
57
|
+
"litellm",
|
|
58
|
+
"serper",
|
|
59
|
+
"tavily",
|
|
60
|
+
];
|
|
61
|
+
/** True when `~/.hooman/config.json` (or `HOOMAN_HOME`) already exists. */
|
|
62
|
+
export function hasOnboardingConfig(path = configJsonPath()) {
|
|
63
|
+
return existsSync(path);
|
|
64
|
+
}
|
|
65
|
+
export function onboardingProviderFields(provider) {
|
|
66
|
+
switch (provider) {
|
|
67
|
+
case "llama-cpp":
|
|
68
|
+
case "mlx":
|
|
69
|
+
return [];
|
|
70
|
+
case "ollama":
|
|
71
|
+
return [
|
|
72
|
+
{
|
|
73
|
+
key: "baseURL",
|
|
74
|
+
label: "Base URL",
|
|
75
|
+
placeholder: "http://127.0.0.1:11434",
|
|
76
|
+
},
|
|
77
|
+
];
|
|
78
|
+
case "azure":
|
|
79
|
+
return [
|
|
80
|
+
{
|
|
81
|
+
key: "baseURL",
|
|
82
|
+
label: "Base URL",
|
|
83
|
+
placeholder: "https://your-resource.openai.azure.com/openai",
|
|
84
|
+
required: true,
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
key: "apiKey",
|
|
88
|
+
label: "API key",
|
|
89
|
+
placeholder: "...",
|
|
90
|
+
sensitive: true,
|
|
91
|
+
required: true,
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
key: "deployment",
|
|
95
|
+
label: "Deployment name",
|
|
96
|
+
placeholder: "gpt-5.4-mini",
|
|
97
|
+
required: true,
|
|
98
|
+
},
|
|
99
|
+
];
|
|
100
|
+
case "bedrock":
|
|
101
|
+
return [
|
|
102
|
+
{
|
|
103
|
+
key: "region",
|
|
104
|
+
label: "Region",
|
|
105
|
+
placeholder: "us-west-2",
|
|
106
|
+
required: true,
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
key: "profile",
|
|
110
|
+
label: "AWS profile",
|
|
111
|
+
placeholder: "default",
|
|
112
|
+
required: true,
|
|
113
|
+
},
|
|
114
|
+
];
|
|
115
|
+
default:
|
|
116
|
+
return [
|
|
117
|
+
{
|
|
118
|
+
key: "apiKey",
|
|
119
|
+
label: "API key",
|
|
120
|
+
placeholder: "...",
|
|
121
|
+
sensitive: true,
|
|
122
|
+
required: true,
|
|
123
|
+
},
|
|
124
|
+
];
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
export function onboardingSearchFields(provider) {
|
|
128
|
+
if (provider === "duckduckgo") {
|
|
129
|
+
return [];
|
|
130
|
+
}
|
|
131
|
+
if (provider === "litellm") {
|
|
132
|
+
return [
|
|
133
|
+
{
|
|
134
|
+
key: "baseURL",
|
|
135
|
+
label: "Base URL",
|
|
136
|
+
placeholder: "http://localhost:4000",
|
|
137
|
+
required: true,
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
key: "apiKey",
|
|
141
|
+
label: "API key",
|
|
142
|
+
placeholder: "...",
|
|
143
|
+
sensitive: true,
|
|
144
|
+
required: true,
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
key: "tool",
|
|
148
|
+
label: "Tool",
|
|
149
|
+
placeholder: "perplexity-search",
|
|
150
|
+
required: true,
|
|
151
|
+
},
|
|
152
|
+
];
|
|
153
|
+
}
|
|
154
|
+
return [
|
|
155
|
+
{
|
|
156
|
+
key: "apiKey",
|
|
157
|
+
label: "API key",
|
|
158
|
+
placeholder: "...",
|
|
159
|
+
sensitive: true,
|
|
160
|
+
required: true,
|
|
161
|
+
},
|
|
162
|
+
];
|
|
163
|
+
}
|
|
164
|
+
export function initialOnboardingProviderValues(provider) {
|
|
165
|
+
if (provider === "bedrock") {
|
|
166
|
+
return { region: "us-west-2", profile: "default" };
|
|
167
|
+
}
|
|
168
|
+
return {};
|
|
169
|
+
}
|
|
170
|
+
/** Validate provider credentials via the list endpoint (throws on failure). */
|
|
171
|
+
export async function validateOnboardingProvider(input) {
|
|
172
|
+
await resolvePrefetchModels({
|
|
173
|
+
provider: input.provider,
|
|
174
|
+
apiKey: input.providerOptions.apiKey,
|
|
175
|
+
baseURL: input.providerOptions.baseURL,
|
|
176
|
+
region: input.providerOptions.region,
|
|
177
|
+
accessKeyId: input.providerOptions.accessKeyId,
|
|
178
|
+
secretAccessKey: input.providerOptions.secretAccessKey,
|
|
179
|
+
azureDeployment: input.azureDeployment?.trim(),
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
/** Probe the selected search provider with a one-result test query. */
|
|
183
|
+
export async function validateOnboardingSearch(provider, options) {
|
|
184
|
+
await probeSearchProvider({
|
|
185
|
+
provider,
|
|
186
|
+
apiKey: options.apiKey,
|
|
187
|
+
baseURL: options.baseURL,
|
|
188
|
+
tool: options.tool,
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Validate inference + search credentials, then write config.json.
|
|
193
|
+
* `configPath` defaults to {@link configJsonPath}.
|
|
194
|
+
*/
|
|
195
|
+
export async function completeOnboardingConfig(input, onStatus, configPath = configJsonPath()) {
|
|
196
|
+
onStatus?.("listing", "Validating credentials…");
|
|
197
|
+
const azureDeployment = input.azureDeployment?.trim();
|
|
198
|
+
let models;
|
|
199
|
+
try {
|
|
200
|
+
models = await resolvePrefetchModels({
|
|
201
|
+
provider: input.provider,
|
|
202
|
+
apiKey: input.providerOptions.apiKey,
|
|
203
|
+
baseURL: input.providerOptions.baseURL,
|
|
204
|
+
region: input.providerOptions.region,
|
|
205
|
+
accessKeyId: input.providerOptions.accessKeyId,
|
|
206
|
+
secretAccessKey: input.providerOptions.secretAccessKey,
|
|
207
|
+
azureDeployment,
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
catch (error) {
|
|
211
|
+
const detail = error instanceof Error ? error.message : String(error);
|
|
212
|
+
throw new Error(`Could not validate credentials for ${ONBOARDING_PROVIDER_LABELS[input.provider]}: ${detail}`);
|
|
213
|
+
}
|
|
214
|
+
onStatus?.("listing", "Validating search…");
|
|
215
|
+
try {
|
|
216
|
+
await validateOnboardingSearch(input.searchProvider, input.searchOptions);
|
|
217
|
+
}
|
|
218
|
+
catch (error) {
|
|
219
|
+
const detail = error instanceof Error ? error.message : String(error);
|
|
220
|
+
throw new Error(`Could not validate ${ONBOARDING_SEARCH_LABELS[input.searchProvider]} search: ${detail}`);
|
|
221
|
+
}
|
|
222
|
+
onStatus?.("writing", "Writing config…");
|
|
223
|
+
const config = buildHomeConfig(input, models);
|
|
224
|
+
mkdirSync(dirname(configPath), { recursive: true });
|
|
225
|
+
writeFileSync(configPath, `${JSON.stringify(config, null, 2)}\n`, "utf8");
|
|
226
|
+
}
|
|
227
|
+
function buildHomeConfig(input, models) {
|
|
228
|
+
const displayName = ONBOARDING_PROVIDER_LABELS[input.provider];
|
|
229
|
+
const providerOptions = buildProviderOptions(input);
|
|
230
|
+
const search = buildSearchBlock(input.searchProvider, input.searchOptions);
|
|
231
|
+
const fallback = {
|
|
232
|
+
id: DEFAULT_PREFETCH_MODEL_BY_PROVIDER[input.provider],
|
|
233
|
+
displayName: DEFAULT_PREFETCH_MODEL_BY_PROVIDER[input.provider],
|
|
234
|
+
};
|
|
235
|
+
const list = models.length > 0 ? models : [fallback];
|
|
236
|
+
const usedNames = new Set();
|
|
237
|
+
const llms = list.map((model, index) => {
|
|
238
|
+
const entry = {
|
|
239
|
+
name: uniqueLlmName(model.displayName, model.id, usedNames),
|
|
240
|
+
provider: displayName,
|
|
241
|
+
options: { model: model.id },
|
|
242
|
+
metadata: { name: model.id },
|
|
243
|
+
default: index === 0,
|
|
244
|
+
};
|
|
245
|
+
if (input.provider === "llama-cpp" || input.provider === "mlx") {
|
|
246
|
+
const context = model.id.toLowerCase().includes("qwen") ? 262144 : 131072;
|
|
247
|
+
entry.options.context = context;
|
|
248
|
+
}
|
|
249
|
+
return entry;
|
|
250
|
+
});
|
|
251
|
+
return {
|
|
252
|
+
name: "Hooman",
|
|
253
|
+
providers: [
|
|
254
|
+
{
|
|
255
|
+
name: displayName,
|
|
256
|
+
provider: input.provider,
|
|
257
|
+
options: providerOptions,
|
|
258
|
+
},
|
|
259
|
+
],
|
|
260
|
+
llms,
|
|
261
|
+
search,
|
|
262
|
+
prompts: {
|
|
263
|
+
behaviour: true,
|
|
264
|
+
communication: true,
|
|
265
|
+
execution: true,
|
|
266
|
+
guardrails: true,
|
|
267
|
+
},
|
|
268
|
+
tools: {
|
|
269
|
+
todo: { enabled: true },
|
|
270
|
+
fetch: { enabled: true },
|
|
271
|
+
filesystem: { enabled: true },
|
|
272
|
+
shell: { enabled: true },
|
|
273
|
+
sleep: { enabled: true },
|
|
274
|
+
browser: { enabled: true },
|
|
275
|
+
subagents: { enabled: true },
|
|
276
|
+
},
|
|
277
|
+
compaction: { ratio: 0.75, keep: 5 },
|
|
278
|
+
reasoning: "collapsed",
|
|
279
|
+
};
|
|
280
|
+
}
|
|
281
|
+
function uniqueLlmName(displayName, id, used) {
|
|
282
|
+
const base = displayName.trim() || id;
|
|
283
|
+
if (!used.has(base)) {
|
|
284
|
+
used.add(base);
|
|
285
|
+
return base;
|
|
286
|
+
}
|
|
287
|
+
const withId = `${base} (${id})`;
|
|
288
|
+
if (!used.has(withId)) {
|
|
289
|
+
used.add(withId);
|
|
290
|
+
return withId;
|
|
291
|
+
}
|
|
292
|
+
let n = 2;
|
|
293
|
+
while (used.has(`${base} (${n})`)) {
|
|
294
|
+
n += 1;
|
|
295
|
+
}
|
|
296
|
+
const name = `${base} (${n})`;
|
|
297
|
+
used.add(name);
|
|
298
|
+
return name;
|
|
299
|
+
}
|
|
300
|
+
function buildProviderOptions(input) {
|
|
301
|
+
const opts = {};
|
|
302
|
+
const raw = input.providerOptions;
|
|
303
|
+
switch (input.provider) {
|
|
304
|
+
case "llama-cpp":
|
|
305
|
+
break;
|
|
306
|
+
case "mlx":
|
|
307
|
+
opts.promptCache = {};
|
|
308
|
+
break;
|
|
309
|
+
case "ollama": {
|
|
310
|
+
const baseURL = raw.baseURL?.trim();
|
|
311
|
+
if (baseURL) {
|
|
312
|
+
opts.baseURL = baseURL;
|
|
313
|
+
}
|
|
314
|
+
break;
|
|
315
|
+
}
|
|
316
|
+
case "azure": {
|
|
317
|
+
const baseURL = raw.baseURL?.trim();
|
|
318
|
+
const apiKey = raw.apiKey?.trim();
|
|
319
|
+
if (baseURL) {
|
|
320
|
+
opts.baseURL = baseURL;
|
|
321
|
+
}
|
|
322
|
+
if (apiKey) {
|
|
323
|
+
opts.apiKey = apiKey;
|
|
324
|
+
}
|
|
325
|
+
break;
|
|
326
|
+
}
|
|
327
|
+
case "bedrock": {
|
|
328
|
+
const region = raw.region?.trim() || "us-west-2";
|
|
329
|
+
const profile = raw.profile?.trim() || "default";
|
|
330
|
+
opts.region = region;
|
|
331
|
+
opts.profile = profile;
|
|
332
|
+
break;
|
|
333
|
+
}
|
|
334
|
+
default: {
|
|
335
|
+
const apiKey = raw.apiKey?.trim();
|
|
336
|
+
if (apiKey) {
|
|
337
|
+
opts.apiKey = apiKey;
|
|
338
|
+
}
|
|
339
|
+
break;
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
return opts;
|
|
343
|
+
}
|
|
344
|
+
function buildSearchBlock(provider, options) {
|
|
345
|
+
const block = {
|
|
346
|
+
enabled: true,
|
|
347
|
+
provider,
|
|
348
|
+
brave: {},
|
|
349
|
+
duckduckgo: {},
|
|
350
|
+
exa: {},
|
|
351
|
+
firecrawl: {},
|
|
352
|
+
litellm: {},
|
|
353
|
+
serper: {},
|
|
354
|
+
tavily: {},
|
|
355
|
+
};
|
|
356
|
+
if (provider === "duckduckgo") {
|
|
357
|
+
return block;
|
|
358
|
+
}
|
|
359
|
+
if (provider === "litellm") {
|
|
360
|
+
block.litellm = {
|
|
361
|
+
...(options.baseURL?.trim() ? { baseURL: options.baseURL.trim() } : {}),
|
|
362
|
+
...(options.apiKey?.trim() ? { apiKey: options.apiKey.trim() } : {}),
|
|
363
|
+
...(options.tool?.trim() ? { tool: options.tool.trim() } : {}),
|
|
364
|
+
};
|
|
365
|
+
return block;
|
|
366
|
+
}
|
|
367
|
+
const apiKey = options.apiKey?.trim();
|
|
368
|
+
if (apiKey) {
|
|
369
|
+
block[provider] = { apiKey };
|
|
370
|
+
}
|
|
371
|
+
return block;
|
|
372
|
+
}
|
|
373
|
+
//# sourceMappingURL=onboarding-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"onboarding-config.js","sourceRoot":"","sources":["../../../src/core/utils/onboarding-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
export declare const APP_FOLDER = ".hooman";
|
|
2
|
+
export declare const allowlistJsonPath: () => string;
|
|
3
|
+
export declare const attachmentsPath: () => string;
|
|
2
4
|
export declare const basePath: () => string;
|
|
5
|
+
export declare const binPath: () => string;
|
|
6
|
+
export declare const cachePath: () => string;
|
|
3
7
|
export declare const configJsonPath: () => string;
|
|
8
|
+
/** Workspace-local design artifacts: `<cwd>/.hooman/design/<slug>/`. */
|
|
9
|
+
export declare const designArtifactsPath: (cwd?: string) => string;
|
|
4
10
|
export declare const instructionsMdPath: () => string;
|
|
11
|
+
export declare const localSkillsPath: (cwd?: string) => string;
|
|
5
12
|
export declare const mcpJsonPath: () => string;
|
|
6
13
|
export declare const mcpOauthJsonPath: () => string;
|
|
7
|
-
export declare const allowlistJsonPath: () => string;
|
|
8
|
-
export declare const sessionsPath: () => string;
|
|
9
14
|
export declare const memoryPath: () => string;
|
|
10
15
|
export declare const offloadedContentPath: () => string;
|
|
11
|
-
export declare const attachmentsPath: () => string;
|
|
12
16
|
export declare const plansPath: () => string;
|
|
13
|
-
export declare const skillsPath: () => string;
|
|
14
|
-
export declare const localSkillsPath: (cwd?: string) => string;
|
|
15
|
-
export declare const cachePath: () => string;
|
|
16
|
-
export declare const binPath: () => string;
|
|
17
17
|
export declare const ripgrepPath: () => string;
|
|
18
|
+
export declare const sessionsPath: () => string;
|
|
19
|
+
export declare const skillsPath: () => string;
|
package/dist/core/utils/paths.js
CHANGED
|
@@ -4,6 +4,11 @@ import { getCwd } from "./cwd-context.js";
|
|
|
4
4
|
import { projectPath } from "./project-registry.js";
|
|
5
5
|
export const APP_FOLDER = ".hooman";
|
|
6
6
|
const HOOMAN_HOME_ENV = "HOOMAN_HOME";
|
|
7
|
+
export const allowlistJsonPath = () => join(basePath(), "allowlist.json");
|
|
8
|
+
// Per-project storage: scoped to the current working directory's project via a
|
|
9
|
+
// UUID registry (see ./project-registry.ts), so sessions, memory, attachments,
|
|
10
|
+
// and plans do not bleed across unrelated projects.
|
|
11
|
+
export const attachmentsPath = () => join(projectPath(), "attachments");
|
|
7
12
|
export const basePath = () => {
|
|
8
13
|
const override = process.env[HOOMAN_HOME_ENV]?.trim();
|
|
9
14
|
if (override) {
|
|
@@ -11,22 +16,19 @@ export const basePath = () => {
|
|
|
11
16
|
}
|
|
12
17
|
return join(homedir(), APP_FOLDER);
|
|
13
18
|
};
|
|
19
|
+
export const binPath = () => join(basePath(), "bin");
|
|
20
|
+
export const cachePath = () => join(basePath(), "cache");
|
|
14
21
|
export const configJsonPath = () => join(basePath(), "config.json");
|
|
22
|
+
/** Workspace-local design artifacts: `<cwd>/.hooman/design/<slug>/`. */
|
|
23
|
+
export const designArtifactsPath = (cwd = getCwd()) => join(cwd, APP_FOLDER, "design");
|
|
15
24
|
export const instructionsMdPath = () => join(basePath(), "instructions.md");
|
|
25
|
+
export const localSkillsPath = (cwd = getCwd()) => join(cwd, APP_FOLDER, "skills");
|
|
16
26
|
export const mcpJsonPath = () => join(basePath(), "mcp.json");
|
|
17
27
|
export const mcpOauthJsonPath = () => join(basePath(), "mcp-oauth.json");
|
|
18
|
-
export const allowlistJsonPath = () => join(basePath(), "allowlist.json");
|
|
19
|
-
// Per-project storage: scoped to the current working directory's project via a
|
|
20
|
-
// UUID registry (see ./project-registry.ts), so sessions, memory, attachments,
|
|
21
|
-
// and plans do not bleed across unrelated projects.
|
|
22
|
-
export const sessionsPath = () => join(projectPath(), "sessions");
|
|
23
28
|
export const memoryPath = () => join(projectPath(), "memory");
|
|
24
29
|
export const offloadedContentPath = () => join(projectPath(), "offloaded-content");
|
|
25
|
-
export const attachmentsPath = () => join(projectPath(), "attachments");
|
|
26
30
|
export const plansPath = () => join(projectPath(), "plans");
|
|
27
|
-
export const skillsPath = () => join(basePath(), "skills");
|
|
28
|
-
export const localSkillsPath = (cwd = getCwd()) => join(cwd, APP_FOLDER, "skills");
|
|
29
|
-
export const cachePath = () => join(basePath(), "cache");
|
|
30
|
-
export const binPath = () => join(basePath(), "bin");
|
|
31
31
|
export const ripgrepPath = () => join(binPath(), process.platform === "win32" ? "rg.exe" : "rg");
|
|
32
|
+
export const sessionsPath = () => join(projectPath(), "sessions");
|
|
33
|
+
export const skillsPath = () => join(basePath(), "skills");
|
|
32
34
|
//# sourceMappingURL=paths.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../../src/core/utils/paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,MAAM,CAAC,MAAM,UAAU,GAAG,SAAS,CAAC;AACpC,MAAM,eAAe,GAAG,aAAa,CAAC;AAEtC,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAG,EAAE;IAC3B,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,CAAC;IACtD,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,CAAC;AACrC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../../src/core/utils/paths.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export type PreviewServer = {
|
|
2
|
+
rootDir: string;
|
|
3
|
+
port: number;
|
|
4
|
+
baseUrl: string;
|
|
5
|
+
/** Absolute URL for a file under the server root. */
|
|
6
|
+
urlFor(filePath: string): string;
|
|
7
|
+
close(): Promise<void>;
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Start a localhost static file server with SSE live-reload.
|
|
11
|
+
* Servers are keyed by absolute `rootDir`; calling again for the same root
|
|
12
|
+
* returns the existing server.
|
|
13
|
+
*
|
|
14
|
+
* @param rootDir Absolute directory to serve.
|
|
15
|
+
* @param port Bind port; `0` (default) picks an ephemeral free port.
|
|
16
|
+
*/
|
|
17
|
+
export declare function createPreviewServer(rootDirRaw: string, port?: number): Promise<PreviewServer>;
|
|
18
|
+
export declare function getPreviewServer(rootDirRaw: string): PreviewServer | undefined;
|
|
19
|
+
export declare function stopPreviewServer(rootDirRaw: string): Promise<boolean>;
|
|
20
|
+
export declare function listPreviewServerRoots(): string[];
|