@alan512/experienceengine 0.1.2 → 0.1.3

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 (215) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/.mcp.json +4 -8
  3. package/LICENSE +21 -0
  4. package/README.md +158 -47
  5. package/README.zh-CN.md +178 -57
  6. package/dist/adapters/codex/instruction-template.d.ts +3 -0
  7. package/dist/adapters/codex/instruction-template.js +12 -0
  8. package/dist/adapters/codex/instruction-template.js.map +1 -0
  9. package/dist/adapters/codex/mcp-server.d.ts +38 -41
  10. package/dist/adapters/codex/mcp-server.js +107 -338
  11. package/dist/adapters/codex/mcp-server.js.map +1 -1
  12. package/dist/analyzer/llm-learning-gate.js +39 -0
  13. package/dist/analyzer/llm-learning-gate.js.map +1 -1
  14. package/dist/cli/commands/claude-hook.js +12 -3
  15. package/dist/cli/commands/claude-hook.js.map +1 -1
  16. package/dist/cli/commands/config.js +88 -2
  17. package/dist/cli/commands/config.js.map +1 -1
  18. package/dist/cli/commands/doctor.d.ts +4 -28
  19. package/dist/cli/commands/doctor.js +136 -68
  20. package/dist/cli/commands/doctor.js.map +1 -1
  21. package/dist/cli/commands/feedback.js +4 -0
  22. package/dist/cli/commands/feedback.js.map +1 -1
  23. package/dist/cli/commands/init.d.ts +28 -0
  24. package/dist/cli/commands/init.js +419 -0
  25. package/dist/cli/commands/init.js.map +1 -0
  26. package/dist/cli/commands/inspect.js +203 -37
  27. package/dist/cli/commands/inspect.js.map +1 -1
  28. package/dist/cli/commands/install.js +9 -0
  29. package/dist/cli/commands/install.js.map +1 -1
  30. package/dist/cli/commands/maintenance.js +1 -1
  31. package/dist/cli/commands/maintenance.js.map +1 -1
  32. package/dist/cli/commands/mcp-server.js +4 -0
  33. package/dist/cli/commands/mcp-server.js.map +1 -1
  34. package/dist/cli/commands/status.js +57 -7
  35. package/dist/cli/commands/status.js.map +1 -1
  36. package/dist/cli/dispatch.js +22 -7
  37. package/dist/cli/dispatch.js.map +1 -1
  38. package/dist/cli/state-model.d.ts +14 -0
  39. package/dist/cli/state-model.js +23 -0
  40. package/dist/cli/state-model.js.map +1 -0
  41. package/dist/config/config-schema.d.ts +32 -0
  42. package/dist/config/config-schema.js +26 -0
  43. package/dist/config/config-schema.js.map +1 -1
  44. package/dist/config/default-config.js +3 -0
  45. package/dist/config/default-config.js.map +1 -1
  46. package/dist/config/load-config.js +19 -1
  47. package/dist/config/load-config.js.map +1 -1
  48. package/dist/config/path-resolver.d.ts +0 -1
  49. package/dist/config/path-resolver.js +0 -2
  50. package/dist/config/path-resolver.js.map +1 -1
  51. package/dist/config/runtime-env.d.ts +8 -0
  52. package/dist/config/runtime-env.js +14 -0
  53. package/dist/config/runtime-env.js.map +1 -0
  54. package/dist/config/secrets-store.d.ts +15 -0
  55. package/dist/config/secrets-store.js +56 -0
  56. package/dist/config/secrets-store.js.map +1 -0
  57. package/dist/config/settings-store.d.ts +10 -0
  58. package/dist/config/settings-store.js +44 -0
  59. package/dist/config/settings-store.js.map +1 -1
  60. package/dist/controller/candidate-retriever.d.ts +35 -2
  61. package/dist/controller/candidate-retriever.js +189 -10
  62. package/dist/controller/candidate-retriever.js.map +1 -1
  63. package/dist/controller/injection-renderer.js +52 -1
  64. package/dist/controller/injection-renderer.js.map +1 -1
  65. package/dist/controller/injection-scorecard.d.ts +14 -2
  66. package/dist/controller/injection-scorecard.js +18 -1
  67. package/dist/controller/injection-scorecard.js.map +1 -1
  68. package/dist/controller/intervention-controller.d.ts +15 -2
  69. package/dist/controller/intervention-controller.js +173 -11
  70. package/dist/controller/intervention-controller.js.map +1 -1
  71. package/dist/controller/lexical-retriever.d.ts +14 -0
  72. package/dist/controller/lexical-retriever.js +117 -0
  73. package/dist/controller/lexical-retriever.js.map +1 -0
  74. package/dist/controller/model-reranker.d.ts +20 -0
  75. package/dist/controller/model-reranker.js +187 -0
  76. package/dist/controller/model-reranker.js.map +1 -0
  77. package/dist/controller/node-ranker.js +1 -0
  78. package/dist/controller/node-ranker.js.map +1 -1
  79. package/dist/controller/query-rewrite.d.ts +8 -0
  80. package/dist/controller/query-rewrite.js +69 -0
  81. package/dist/controller/query-rewrite.js.map +1 -0
  82. package/dist/controller/trigger-evaluator.d.ts +23 -2
  83. package/dist/controller/trigger-evaluator.js +57 -3
  84. package/dist/controller/trigger-evaluator.js.map +1 -1
  85. package/dist/distillation/experience-family.d.ts +4 -0
  86. package/dist/distillation/experience-family.js +14 -0
  87. package/dist/distillation/experience-family.js.map +1 -0
  88. package/dist/distillation/host-llm.d.ts +1 -0
  89. package/dist/distillation/host-llm.js +5 -1
  90. package/dist/distillation/host-llm.js.map +1 -1
  91. package/dist/distillation/llm-distiller.js +4 -0
  92. package/dist/distillation/llm-distiller.js.map +1 -1
  93. package/dist/distillation/merge-decider.js +4 -0
  94. package/dist/distillation/merge-decider.js.map +1 -1
  95. package/dist/distillation/prompt-contract.d.ts +1 -1
  96. package/dist/distillation/prompt-contract.js +3 -0
  97. package/dist/distillation/prompt-contract.js.map +1 -1
  98. package/dist/distillation/queue-worker.js +57 -7
  99. package/dist/distillation/queue-worker.js.map +1 -1
  100. package/dist/feedback/state-transition.js +9 -0
  101. package/dist/feedback/state-transition.js.map +1 -1
  102. package/dist/input/input-adapter.js +2 -1
  103. package/dist/input/input-adapter.js.map +1 -1
  104. package/dist/input/outcome-resolver.js +5 -5
  105. package/dist/input/outcome-resolver.js.map +1 -1
  106. package/dist/input/tasktype-resolver.js +2 -0
  107. package/dist/input/tasktype-resolver.js.map +1 -1
  108. package/dist/input/tool-event-significance.d.ts +5 -0
  109. package/dist/input/tool-event-significance.js +7 -0
  110. package/dist/input/tool-event-significance.js.map +1 -0
  111. package/dist/install/claude-code-doctor.d.ts +7 -2
  112. package/dist/install/claude-code-doctor.js +38 -9
  113. package/dist/install/claude-code-doctor.js.map +1 -1
  114. package/dist/install/claude-marketplace-state.d.ts +14 -0
  115. package/dist/install/claude-marketplace-state.js +47 -0
  116. package/dist/install/claude-marketplace-state.js.map +1 -0
  117. package/dist/install/codex-installer.d.ts +18 -0
  118. package/dist/install/codex-installer.js +91 -1
  119. package/dist/install/codex-installer.js.map +1 -1
  120. package/dist/install/openclaw-installer.d.ts +7 -0
  121. package/dist/install/openclaw-installer.js +16 -0
  122. package/dist/install/openclaw-installer.js.map +1 -1
  123. package/dist/install/public-install.d.ts +14 -4
  124. package/dist/install/public-install.js +20 -7
  125. package/dist/install/public-install.js.map +1 -1
  126. package/dist/interaction/repo-summary.d.ts +3 -17
  127. package/dist/interaction/repo-summary.js +10 -27
  128. package/dist/interaction/repo-summary.js.map +1 -1
  129. package/dist/interaction/service.d.ts +44 -95
  130. package/dist/interaction/service.js +333 -248
  131. package/dist/interaction/service.js.map +1 -1
  132. package/dist/maintenance/scope-merge.d.ts +0 -1
  133. package/dist/maintenance/scope-merge.js +0 -20
  134. package/dist/maintenance/scope-merge.js.map +1 -1
  135. package/dist/plugin/openclaw-plugin.d.ts +23 -0
  136. package/dist/plugin/openclaw-plugin.js +86 -6
  137. package/dist/plugin/openclaw-plugin.js.map +1 -1
  138. package/dist/plugin/openclaw-routine-interaction.d.ts +6 -0
  139. package/dist/plugin/openclaw-routine-interaction.js +296 -0
  140. package/dist/plugin/openclaw-routine-interaction.js.map +1 -0
  141. package/dist/runtime/service.d.ts +0 -1
  142. package/dist/runtime/service.js +20 -29
  143. package/dist/runtime/service.js.map +1 -1
  144. package/dist/store/sqlite/db.js +9 -0
  145. package/dist/store/sqlite/db.js.map +1 -1
  146. package/dist/store/sqlite/repositories/candidate-repo.js +8 -2
  147. package/dist/store/sqlite/repositories/candidate-repo.js.map +1 -1
  148. package/dist/store/sqlite/repositories/injection-repo.d.ts +1 -0
  149. package/dist/store/sqlite/repositories/injection-repo.js +11 -0
  150. package/dist/store/sqlite/repositories/injection-repo.js.map +1 -1
  151. package/dist/store/sqlite/repositories/input-record-repo.d.ts +2 -0
  152. package/dist/store/sqlite/repositories/input-record-repo.js +22 -0
  153. package/dist/store/sqlite/repositories/input-record-repo.js.map +1 -1
  154. package/dist/store/sqlite/repositories/node-repo.js +17 -2
  155. package/dist/store/sqlite/repositories/node-repo.js.map +1 -1
  156. package/dist/store/sqlite/repositories/task-run-repo.d.ts +2 -0
  157. package/dist/store/sqlite/repositories/task-run-repo.js +18 -2
  158. package/dist/store/sqlite/repositories/task-run-repo.js.map +1 -1
  159. package/dist/store/sqlite/schema.sql +9 -49
  160. package/dist/store/vector/api-embedding-provider.d.ts +2 -0
  161. package/dist/store/vector/api-embedding-provider.js +23 -19
  162. package/dist/store/vector/api-embedding-provider.js.map +1 -1
  163. package/dist/store/vector/embeddings.d.ts +1 -1
  164. package/dist/store/vector/embeddings.js +4 -1
  165. package/dist/store/vector/embeddings.js.map +1 -1
  166. package/dist/types/domain.d.ts +30 -46
  167. package/dist/types/plugin.d.ts +2 -1
  168. package/docs/releases/v0.1.2.md +3 -3
  169. package/docs/releases/v0.1.3.md +94 -0
  170. package/docs/user-guide.md +226 -123
  171. package/openclaw.plugin.json +1 -1
  172. package/package.json +3 -2
  173. package/plugins/claude-code-experienceengine/.claude-plugin/plugin.json +1 -1
  174. package/plugins/claude-code-experienceengine/.mcp.json +4 -3
  175. package/plugins/claude-code-experienceengine/scripts/claude-hook.sh +30 -1
  176. package/plugins/claude-code-experienceengine/scripts/install-deps.sh +41 -6
  177. package/dist/cli/commands/pack.d.ts +0 -1
  178. package/dist/cli/commands/pack.js +0 -321
  179. package/dist/cli/commands/pack.js.map +0 -1
  180. package/dist/compiler/agents-renderer.d.ts +0 -4
  181. package/dist/compiler/agents-renderer.js +0 -105
  182. package/dist/compiler/agents-renderer.js.map +0 -1
  183. package/dist/compiler/claude-renderer.d.ts +0 -2
  184. package/dist/compiler/claude-renderer.js +0 -40
  185. package/dist/compiler/claude-renderer.js.map +0 -1
  186. package/dist/compiler/codex-renderer.d.ts +0 -2
  187. package/dist/compiler/codex-renderer.js +0 -40
  188. package/dist/compiler/codex-renderer.js.map +0 -1
  189. package/dist/compiler/compiler.d.ts +0 -4
  190. package/dist/compiler/compiler.js +0 -87
  191. package/dist/compiler/compiler.js.map +0 -1
  192. package/dist/compiler/deployer.d.ts +0 -21
  193. package/dist/compiler/deployer.js +0 -64
  194. package/dist/compiler/deployer.js.map +0 -1
  195. package/dist/compiler/github-renderer.d.ts +0 -2
  196. package/dist/compiler/github-renderer.js +0 -63
  197. package/dist/compiler/github-renderer.js.map +0 -1
  198. package/dist/compiler/types.d.ts +0 -45
  199. package/dist/compiler/types.js +0 -2
  200. package/dist/compiler/types.js.map +0 -1
  201. package/dist/interaction/pack-actions-service.d.ts +0 -59
  202. package/dist/interaction/pack-actions-service.js +0 -172
  203. package/dist/interaction/pack-actions-service.js.map +0 -1
  204. package/dist/packs/fs-registry.d.ts +0 -27
  205. package/dist/packs/fs-registry.js +0 -216
  206. package/dist/packs/fs-registry.js.map +0 -1
  207. package/dist/packs/index-sync.d.ts +0 -9
  208. package/dist/packs/index-sync.js +0 -54
  209. package/dist/packs/index-sync.js.map +0 -1
  210. package/dist/packs/types.d.ts +0 -55
  211. package/dist/packs/types.js +0 -2
  212. package/dist/packs/types.js.map +0 -1
  213. package/dist/store/sqlite/repositories/pack-repo.d.ts +0 -16
  214. package/dist/store/sqlite/repositories/pack-repo.js +0 -192
  215. package/dist/store/sqlite/repositories/pack-repo.js.map +0 -1
@@ -0,0 +1,419 @@
1
+ import { createInterface } from "node:readline/promises";
2
+ import { defaultConfig } from "../../config/default-config.js";
3
+ import { isSupportedSecretKey, readExperienceEngineSecrets, setExperienceEngineSecret } from "../../config/secrets-store.js";
4
+ import { readExperienceEngineSettings, setDistillationAuthMode, setDistillationModel, setDistillationProvider, setEmbeddingApiProvider, setEmbeddingDtype, setEmbeddingModel, setEmbeddingProvider } from "../../config/settings-store.js";
5
+ import { resolveModelCatalog } from "../../distillation/model-catalog.js";
6
+ import { DISTILLER_PROVIDERS } from "../../distillation/providers/types.js";
7
+ const DISTILLATION_USAGE = "Usage: ee init distillation --provider <provider> --model <modelId> [--auth-mode api_key|google_adc]";
8
+ const EMBEDDING_USAGE = "Usage: ee init embedding --mode <api|local|legacy> [--api-provider auto|openai|gemini|jina] [--model <modelId>] [--dtype q8|fp32]";
9
+ const SECRET_USAGE = "Usage: ee init secret <ENV_KEY> <value>";
10
+ const SHOW_USAGE = "Usage: ee init show";
11
+ const EXPAND_ALL_PROVIDERS_VALUE = "__all_providers__";
12
+ const RECOMMENDED_PROVIDER_VALUES = [
13
+ "openai",
14
+ "anthropic",
15
+ "gemini",
16
+ "openrouter",
17
+ "openai_compatible"
18
+ ];
19
+ const parseFlag = (args, flag) => {
20
+ const index = args.indexOf(flag);
21
+ if (index === -1) {
22
+ return undefined;
23
+ }
24
+ return args[index + 1];
25
+ };
26
+ export const runInitCommand = async (action, args = [], deps = {}) => {
27
+ if (!action) {
28
+ const ui = deps.ui ?? createDefaultInitWizardUI();
29
+ if (!ui.isInteractive()) {
30
+ logInitGuide();
31
+ return;
32
+ }
33
+ try {
34
+ await runInitWizard(ui, deps);
35
+ }
36
+ finally {
37
+ await ui.close?.();
38
+ }
39
+ return;
40
+ }
41
+ if (action === "distillation") {
42
+ const provider = parseFlag(args, "--provider");
43
+ const model = parseFlag(args, "--model");
44
+ const authMode = parseFlag(args, "--auth-mode") ?? "api_key";
45
+ if (!provider || !model || (authMode !== "api_key" && authMode !== "google_adc")) {
46
+ console.log(DISTILLATION_USAGE);
47
+ return;
48
+ }
49
+ const catalog = await (deps.resolveModelCatalog ?? resolveModelCatalog)(provider);
50
+ const found = catalog.models.find((entry) => entry.id === model);
51
+ if (!found) {
52
+ console.log(`[ExperienceEngine] ${model} is not in the ${provider} model catalog. Use \`ee models list ${provider}\` first.`);
53
+ return;
54
+ }
55
+ setDistillationProvider(provider);
56
+ setDistillationAuthMode(authMode);
57
+ setDistillationModel(provider, model);
58
+ console.log(`[ExperienceEngine] Distillation initialized: provider=${provider} auth_mode=${authMode} model=${model}.`);
59
+ return;
60
+ }
61
+ if (action === "secret") {
62
+ const secretKey = args[0];
63
+ const secretValue = args[1];
64
+ if (!secretKey || !secretValue || !isSupportedSecretKey(secretKey)) {
65
+ console.log(SECRET_USAGE);
66
+ return;
67
+ }
68
+ setExperienceEngineSecret(secretKey, secretValue);
69
+ console.log(`[ExperienceEngine] Stored shared secret ${secretKey}.`);
70
+ return;
71
+ }
72
+ if (action === "embedding") {
73
+ const mode = parseFlag(args, "--mode");
74
+ const apiProvider = parseFlag(args, "--api-provider") ?? "auto";
75
+ const model = parseFlag(args, "--model") ?? defaultConfig.embeddingModel;
76
+ const dtype = parseFlag(args, "--dtype") ?? defaultConfig.embeddingDtype;
77
+ if (!mode ||
78
+ (mode !== "api" && mode !== "local" && mode !== "legacy") ||
79
+ (apiProvider !== "auto" && apiProvider !== "openai" && apiProvider !== "gemini" && apiProvider !== "jina") ||
80
+ (dtype !== "q8" && dtype !== "fp32")) {
81
+ console.log(EMBEDDING_USAGE);
82
+ return;
83
+ }
84
+ setEmbeddingProvider(mode);
85
+ setEmbeddingApiProvider(mode === "api" ? apiProvider : "auto");
86
+ setEmbeddingModel(model);
87
+ setEmbeddingDtype(dtype);
88
+ console.log(`[ExperienceEngine] Embedding initialized: mode=${mode} api_provider=${mode === "api" ? apiProvider : "auto"} model=${model} dtype=${dtype}.`);
89
+ return;
90
+ }
91
+ if (action === "show") {
92
+ if (args.length > 0) {
93
+ console.log(SHOW_USAGE);
94
+ return;
95
+ }
96
+ const settings = readExperienceEngineSettings();
97
+ const secretKeys = Object.keys(readExperienceEngineSecrets()).sort();
98
+ console.log("ExperienceEngine init state:");
99
+ console.log(`- Distillation provider: ${settings.distillation?.provider ?? "<unset>"}`);
100
+ console.log(`- Distillation auth mode: ${settings.distillation?.auth_mode ?? "api_key"}`);
101
+ console.log(`- Distillation model: ${settings.distillation?.model ?? "<unset>"}`);
102
+ console.log(`- Embedding mode: ${settings.embedding?.provider ?? defaultConfig.embeddingProvider}`);
103
+ console.log(`- Embedding API provider: ${settings.embedding?.api_provider ?? defaultConfig.embeddingApiProvider}`);
104
+ console.log(`- Embedding model: ${settings.embedding?.model ?? defaultConfig.embeddingModel}`);
105
+ console.log(`- Embedding dtype: ${settings.embedding?.dtype ?? defaultConfig.embeddingDtype}`);
106
+ if (secretKeys.length === 0) {
107
+ console.log("- Shared secrets: none");
108
+ return;
109
+ }
110
+ for (const key of secretKeys) {
111
+ console.log(`- Shared secret ${key}: <set>`);
112
+ }
113
+ return;
114
+ }
115
+ console.log("Usage: ee init <distillation|embedding|secret|show> [...]");
116
+ };
117
+ const logInitGuide = () => {
118
+ const settings = readExperienceEngineSettings();
119
+ const secretKeys = Object.keys(readExperienceEngineSecrets()).sort();
120
+ const distillationReady = Boolean(settings.distillation?.provider && settings.distillation?.model);
121
+ console.log("ExperienceEngine initialization guide:");
122
+ console.log("Step 1. Configure distillation provider and model.");
123
+ console.log(`- Current distillation provider: ${settings.distillation?.provider ?? "<unset>"}`);
124
+ console.log(`- Current distillation model: ${settings.distillation?.model ?? "<unset>"}`);
125
+ if (!distillationReady) {
126
+ console.log(`- Next command: ${DISTILLATION_USAGE.replace("Usage: ", "")}`);
127
+ }
128
+ else {
129
+ console.log("- Distillation is configured.");
130
+ }
131
+ console.log("Step 2. Configure embedding mode and provider.");
132
+ console.log(`- Current embedding mode: ${settings.embedding?.provider ?? defaultConfig.embeddingProvider}`);
133
+ console.log(`- Current embedding API provider: ${settings.embedding?.api_provider ?? defaultConfig.embeddingApiProvider}`);
134
+ console.log(`- Current embedding model: ${settings.embedding?.model ?? defaultConfig.embeddingModel}`);
135
+ console.log(`- Next command: ${EMBEDDING_USAGE.replace("Usage: ", "")}`);
136
+ console.log("Step 3. Store any shared provider secrets once for all hosts.");
137
+ if (secretKeys.length === 0) {
138
+ console.log("- Shared secrets: none");
139
+ console.log(`- Next command: ${SECRET_USAGE.replace("Usage: ", "")}`);
140
+ }
141
+ else {
142
+ console.log(`- Shared secrets already configured: ${secretKeys.join(", ")}`);
143
+ }
144
+ console.log("Step 4. Move shared ExperienceEngine state to Initialized, then verify each host can become Ready.");
145
+ console.log("- Validation commands: ee doctor openclaw | ee doctor claude-code | ee doctor codex");
146
+ console.log("- Product language: Installed -> Initialized -> Ready");
147
+ console.log("- Next step after initialization: use `ee status` for day-to-day progress and `ee doctor <host>` for explicit validation.");
148
+ if (distillationReady && secretKeys.length > 0) {
149
+ console.log("- Next step: install another host if needed, then run `ee doctor <host>` to verify it reuses this shared state.");
150
+ }
151
+ };
152
+ const runInitWizard = async (ui, deps) => {
153
+ const currentSettings = readExperienceEngineSettings();
154
+ const currentSecrets = readExperienceEngineSecrets();
155
+ ui.log("ExperienceEngine initialization");
156
+ const provider = await chooseDistillationProvider(ui, currentSettings.distillation?.provider);
157
+ if (!provider) {
158
+ ui.log("Initialization cancelled.");
159
+ return;
160
+ }
161
+ let authMode = "api_key";
162
+ const requiresAuthModeStep = provider === "gemini";
163
+ const modelStepTitle = requiresAuthModeStep ? "Step 3: Distillation model" : "Step 2: Distillation model";
164
+ const embeddingStepTitle = requiresAuthModeStep ? "Step 4: Embedding mode" : "Step 3: Embedding mode";
165
+ const secretsStepTitle = requiresAuthModeStep ? "Step 5: Shared provider secrets" : "Step 4: Shared provider secrets";
166
+ const summaryStepTitle = requiresAuthModeStep ? "Step 6: Summary" : "Step 5: Summary";
167
+ if (provider === "gemini") {
168
+ const selectedAuthMode = await ui.choose({
169
+ title: "Step 2: Distillation auth mode",
170
+ message: `Current: ${currentSettings.distillation?.auth_mode ?? "api_key"}`,
171
+ options: [
172
+ { label: "API key", value: "api_key" },
173
+ { label: "Google ADC", value: "google_adc" }
174
+ ]
175
+ });
176
+ if (!selectedAuthMode || (selectedAuthMode !== "api_key" && selectedAuthMode !== "google_adc")) {
177
+ ui.log("Initialization cancelled.");
178
+ return;
179
+ }
180
+ authMode = selectedAuthMode;
181
+ }
182
+ const catalog = await (deps.resolveModelCatalog ?? resolveModelCatalog)(provider);
183
+ const suggestedModels = pickSuggestedModels(catalog, currentSettings.distillation?.model);
184
+ const model = await ui.choose({
185
+ title: modelStepTitle,
186
+ message: `Provider: ${provider}`,
187
+ options: suggestedModels.map((entry) => ({
188
+ label: entry.name,
189
+ value: entry.id,
190
+ detail: entry.summary
191
+ }))
192
+ });
193
+ if (!model) {
194
+ ui.log("Initialization cancelled.");
195
+ return;
196
+ }
197
+ setDistillationProvider(provider);
198
+ setDistillationAuthMode(authMode);
199
+ setDistillationModel(provider, model);
200
+ const embeddingSelection = await ui.choose({
201
+ title: embeddingStepTitle,
202
+ message: `Current: ${currentSettings.embedding?.provider ?? defaultConfig.embeddingProvider} (${currentSettings.embedding?.api_provider ?? defaultConfig.embeddingApiProvider})`,
203
+ options: [
204
+ { label: "API auto (recommended)", value: "api:auto", detail: "Use the best available API provider, then fall back local." },
205
+ { label: "API via Gemini", value: "api:gemini", detail: "gemini-embedding-001" },
206
+ { label: "API via OpenAI", value: "api:openai", detail: "text-embedding-3-small" },
207
+ { label: "API via Jina", value: "api:jina", detail: "jina-embeddings-v3" },
208
+ { label: "Local only", value: "local:auto", detail: defaultConfig.embeddingModel },
209
+ { label: "Legacy only", value: "legacy:auto", detail: "hashed fallback only" }
210
+ ]
211
+ });
212
+ if (!embeddingSelection) {
213
+ ui.log("Initialization cancelled.");
214
+ return;
215
+ }
216
+ const [embeddingMode, embeddingApiProvider = "auto"] = embeddingSelection.split(":");
217
+ setEmbeddingProvider(embeddingMode);
218
+ setEmbeddingApiProvider(embeddingMode === "api" ? embeddingApiProvider : "auto");
219
+ setEmbeddingModel(defaultConfig.embeddingModel);
220
+ setEmbeddingDtype(defaultConfig.embeddingDtype);
221
+ const requiredSecretKeys = Array.from(new Set([
222
+ resolvePrimarySecretKey(provider, authMode),
223
+ resolveEmbeddingSecretKey(embeddingMode, embeddingApiProvider)
224
+ ].filter((value) => Boolean(value))));
225
+ if (requiredSecretKeys.length === 0) {
226
+ ui.log(secretsStepTitle);
227
+ ui.log("- No shared API keys are required for the current configuration.");
228
+ }
229
+ else {
230
+ ui.log(secretsStepTitle);
231
+ for (const secretKey of requiredSecretKeys) {
232
+ const existing = currentSecrets[secretKey];
233
+ const secretValue = await ui.input({
234
+ title: `- ${secretKey}`,
235
+ message: existing
236
+ ? `${secretKey} is already configured. Enter a new value to replace it, or press ENTER to keep the current secret.`
237
+ : `Enter ${secretKey}. This value will be shared by all installed hosts.`,
238
+ secret: true
239
+ });
240
+ if (secretValue && secretValue.trim()) {
241
+ setExperienceEngineSecret(secretKey, secretValue.trim());
242
+ }
243
+ }
244
+ }
245
+ const finalSecrets = readExperienceEngineSecrets();
246
+ ui.log(summaryStepTitle);
247
+ ui.log("Initialization complete.");
248
+ ui.log(`- Distillation provider: ${provider}`);
249
+ ui.log(`- Distillation model: ${model}`);
250
+ ui.log(`- Embedding mode: ${embeddingMode}`);
251
+ ui.log(`- Embedding API provider: ${embeddingMode === "api" ? embeddingApiProvider : "auto"}`);
252
+ ui.log(`- Embedding model: ${defaultConfig.embeddingModel}`);
253
+ for (const secretKey of requiredSecretKeys) {
254
+ ui.log(`- Shared secret ${secretKey}: ${finalSecrets[secretKey] ? "<set>" : "<unset>"}`);
255
+ }
256
+ ui.log("- Next step: run `ee doctor <host>` to verify your installed host reuses this shared state.");
257
+ };
258
+ const buildProviderChoice = (provider, currentProvider) => ({
259
+ label: provider,
260
+ value: provider,
261
+ detail: provider === currentProvider ? "current" : undefined
262
+ });
263
+ const chooseDistillationProvider = async (ui, currentProvider) => {
264
+ const recommendedOptions = RECOMMENDED_PROVIDER_VALUES.map((provider) => buildProviderChoice(provider, currentProvider));
265
+ const shortlist = [...recommendedOptions];
266
+ if (currentProvider && !RECOMMENDED_PROVIDER_VALUES.includes(currentProvider)) {
267
+ shortlist.unshift(buildProviderChoice(currentProvider, currentProvider));
268
+ }
269
+ const firstSelection = await ui.choose({
270
+ title: "Step 1: Distillation provider",
271
+ message: `Current: ${currentProvider ?? "<unset>"}`,
272
+ options: [
273
+ ...shortlist,
274
+ {
275
+ label: "More providers",
276
+ value: EXPAND_ALL_PROVIDERS_VALUE,
277
+ detail: "Show the full provider catalog"
278
+ }
279
+ ]
280
+ });
281
+ if (!firstSelection) {
282
+ return undefined;
283
+ }
284
+ if (firstSelection !== EXPAND_ALL_PROVIDERS_VALUE) {
285
+ return firstSelection;
286
+ }
287
+ const fullSelection = await ui.choose({
288
+ title: "Step 1: Distillation provider",
289
+ message: "All providers",
290
+ options: DISTILLER_PROVIDERS.map((provider) => buildProviderChoice(provider, currentProvider))
291
+ });
292
+ return fullSelection;
293
+ };
294
+ const pickSuggestedModels = (catalog, currentModel) => {
295
+ const prioritized = [...catalog.models].sort((left, right) => {
296
+ const leftScore = rankModelId(left.id, currentModel);
297
+ const rightScore = rankModelId(right.id, currentModel);
298
+ return rightScore - leftScore || left.id.localeCompare(right.id);
299
+ });
300
+ return prioritized.slice(0, 8);
301
+ };
302
+ const rankModelId = (modelId, currentModel) => {
303
+ if (currentModel && modelId === currentModel) {
304
+ return 100;
305
+ }
306
+ const normalized = modelId.toLowerCase();
307
+ let score = 0;
308
+ if (normalized.includes("flash"))
309
+ score += 20;
310
+ if (normalized.includes("lite"))
311
+ score += 15;
312
+ if (normalized.includes("mini"))
313
+ score += 12;
314
+ if (normalized.includes("small"))
315
+ score += 10;
316
+ if (normalized.includes("nano"))
317
+ score += 8;
318
+ if (normalized.includes("turbo"))
319
+ score += 6;
320
+ if (normalized.includes("free"))
321
+ score += 4;
322
+ return score;
323
+ };
324
+ const resolvePrimarySecretKey = (provider, authMode) => {
325
+ if (provider === "gemini") {
326
+ return authMode === "api_key" ? "GEMINI_API_KEY" : null;
327
+ }
328
+ switch (provider) {
329
+ case "openai":
330
+ return "OPENAI_API_KEY";
331
+ case "anthropic":
332
+ return "ANTHROPIC_API_KEY";
333
+ case "openrouter":
334
+ return "OPENROUTER_API_KEY";
335
+ case "azure_openai":
336
+ return "AZURE_OPENAI_API_KEY";
337
+ case "deepseek":
338
+ return "DEEPSEEK_API_KEY";
339
+ case "moonshot":
340
+ return "MOONSHOT_API_KEY";
341
+ case "dashscope":
342
+ return "DASHSCOPE_API_KEY";
343
+ case "zhipu":
344
+ return "ZHIPU_API_KEY";
345
+ case "siliconflow":
346
+ return "SILICONFLOW_API_KEY";
347
+ case "minimax":
348
+ return "MINIMAX_API_KEY";
349
+ case "volcengine_ark":
350
+ return "VOLCENGINE_ARK_API_KEY";
351
+ case "tencent_hunyuan":
352
+ return "TENCENT_HUNYUAN_API_KEY";
353
+ case "baidu_qianfan":
354
+ return "BAIDU_QIANFAN_API_KEY";
355
+ case "openai_compatible":
356
+ case "bedrock":
357
+ return null;
358
+ }
359
+ };
360
+ const resolveEmbeddingSecretKey = (mode, apiProvider) => {
361
+ if (mode !== "api") {
362
+ return null;
363
+ }
364
+ switch (apiProvider) {
365
+ case "openai":
366
+ return "OPENAI_API_KEY";
367
+ case "gemini":
368
+ return "GEMINI_API_KEY";
369
+ case "jina":
370
+ return "JINA_API_KEY";
371
+ case "auto":
372
+ return null;
373
+ }
374
+ };
375
+ const createDefaultInitWizardUI = () => {
376
+ const interactive = Boolean(process.stdin.isTTY && process.stdout.isTTY);
377
+ const readline = interactive
378
+ ? createInterface({
379
+ input: process.stdin,
380
+ output: process.stdout
381
+ })
382
+ : null;
383
+ return {
384
+ isInteractive: () => interactive,
385
+ log: (line) => console.log(line),
386
+ choose: async ({ title, message, options }) => {
387
+ if (!readline) {
388
+ return undefined;
389
+ }
390
+ console.log(title);
391
+ if (message) {
392
+ console.log(message);
393
+ }
394
+ options.forEach((option, index) => {
395
+ console.log(` ${index + 1}. ${option.label}${option.detail ? ` (${option.detail})` : ""}`);
396
+ });
397
+ const answer = (await readline.question("> ")).trim();
398
+ const selectedIndex = Number.parseInt(answer, 10);
399
+ if (!Number.isFinite(selectedIndex) || selectedIndex < 1 || selectedIndex > options.length) {
400
+ return undefined;
401
+ }
402
+ return options[selectedIndex - 1]?.value;
403
+ },
404
+ input: async ({ title, message }) => {
405
+ if (!readline) {
406
+ return undefined;
407
+ }
408
+ console.log(title);
409
+ if (message) {
410
+ console.log(message);
411
+ }
412
+ return (await readline.question("> ")).trim();
413
+ },
414
+ close: async () => {
415
+ readline?.close();
416
+ }
417
+ };
418
+ };
419
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"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"}