@alan512/experienceengine 0.1.0 → 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
@@ -1,7 +1,9 @@
1
1
  export type TaskType = "bug_fix" | "build_debug" | "config_debug" | "test_debug" | "integration_fix" | "feature_add" | "refactor" | "performance" | "general";
2
2
  export type ResolvedTaskType = TaskType | "unknown";
3
- export type ExperienceState = "candidate" | "active" | "cooling" | "retired";
3
+ export type ExperienceState = "candidate" | "priority_candidate" | "active" | "cooling" | "retired";
4
4
  export type ExperienceNodeType = "strategy" | "warning";
5
+ export type PromotionSignal = "normal" | "high_value";
6
+ export type MergeAction = "ADD" | "UPDATE" | "NONE";
5
7
  export type ExperienceKind = "execution_pattern" | "config_troubleshooting" | "verification_loop" | "warning" | "expectation_correction";
6
8
  export type ConfidenceSignal = "confirmed_by_user" | "supported_by_objective_success" | "unconfirmed";
7
9
  export type ValidationState = "pending_reuse_validation" | "validated_by_reuse" | "invalidated";
@@ -18,9 +20,6 @@ export type DistillationMode = "auto" | "llm" | "rule" | "disabled";
18
20
  export type ResolvedDistillationMode = Exclude<DistillationMode, "auto">;
19
21
  export type DistillationSource = "explicit_provider" | "rule" | "disabled";
20
22
  export type FeedbackAttributionReason = "success_outcome" | "relevant_failure" | "environmental_failure" | "exploratory_failure" | "no_relevant_failure" | "suppressed_delivery" | "unknown_outcome";
21
- export type ExperiencePackStatus = "draft" | "review" | "published" | "rolled_back";
22
- export type ExperiencePackHost = "openclaw" | "claude-code" | "codex";
23
- export type ExperiencePackRiskLevel = "low" | "medium" | "high";
24
23
  export type Scope = {
25
24
  scope_id: string;
26
25
  scope_type: "workspace" | "repo";
@@ -75,6 +74,8 @@ export type TaskRun = {
75
74
  ended_at?: string;
76
75
  final_status: "success" | "failure" | "cancelled" | "unknown";
77
76
  failure_signature?: string;
77
+ learning_status?: "captured" | "rejected" | "not_applicable";
78
+ learning_reason?: string;
78
79
  created_at: string;
79
80
  updated_at: string;
80
81
  };
@@ -127,6 +128,11 @@ export type ExperienceNode = {
127
128
  distillation_mode_used?: ResolvedDistillationMode;
128
129
  distillation_source?: DistillationSource;
129
130
  redistilled_from?: DistillationSource;
131
+ promotion_signal?: PromotionSignal;
132
+ promotion_reason?: string;
133
+ merge_decision?: MergeAction;
134
+ merge_reason?: string;
135
+ priority_promotion_applied?: boolean;
130
136
  source_kind: "system_derived" | "user_authored_candidate_promoted";
131
137
  origin_record_ids: string[];
132
138
  helped_record_ids: string[];
@@ -174,6 +180,15 @@ export type InjectionScorecardNode = {
174
180
  riskLevel: InjectionRiskLevel;
175
181
  whyMatched: string[];
176
182
  };
183
+ export type InjectionScorecardCandidate = {
184
+ id: string;
185
+ semanticScore?: number;
186
+ lexicalScore?: number;
187
+ fusedScore?: number;
188
+ rerankScore?: number;
189
+ rerankSource?: "heuristic" | "model";
190
+ taskFamilyMatch: boolean;
191
+ };
177
192
  export type InjectionScorecard = {
178
193
  sessionId?: string;
179
194
  scopeId: string;
@@ -183,6 +198,17 @@ export type InjectionScorecard = {
183
198
  riskLevel: InjectionRiskLevel;
184
199
  recommendation: string;
185
200
  reasons: string[];
201
+ topCandidates?: InjectionScorecardCandidate[];
202
+ topCandidateScore?: number;
203
+ scoreMargin?: number;
204
+ fastPathApplied?: boolean;
205
+ queryRewriteApplied?: boolean;
206
+ mergeDecision?: MergeAction;
207
+ mergeReason?: string;
208
+ promotionSignal?: PromotionSignal;
209
+ priorityPromotionApplied?: boolean;
210
+ gateReason?: string;
211
+ decisionReason?: string;
186
212
  nodes: InjectionScorecardNode[];
187
213
  createdAt: string;
188
214
  };
@@ -197,48 +223,6 @@ export type ScopeTaskStats = {
197
223
  injected_success_tasks: number;
198
224
  updated_at: string;
199
225
  };
200
- export type ExperiencePackSummaryRecord = {
201
- pack_id: string;
202
- name: string;
203
- description: string;
204
- owner: string;
205
- status: ExperiencePackStatus;
206
- current_version: string;
207
- scope_hints: string[];
208
- task_families: TaskType[];
209
- host_compatibility: ExperiencePackHost[];
210
- created_at: string;
211
- updated_at: string;
212
- published_at?: string;
213
- rolled_back_at?: string;
214
- };
215
- export type ExperiencePackVersionRecord = {
216
- pack_id: string;
217
- version: string;
218
- status_snapshot: ExperiencePackStatus;
219
- evidence_summary: string;
220
- benchmark_summary?: string;
221
- risk_level: ExperiencePackRiskLevel;
222
- ttl?: string;
223
- host_compatibility: ExperiencePackHost[];
224
- created_at: string;
225
- published_at?: string;
226
- rolled_back_from?: string;
227
- };
228
- export type ExperiencePackMembership = {
229
- pack_id: string;
230
- version: string;
231
- node_id: string;
232
- created_at: string;
233
- };
234
- export type ExperiencePackActivation = {
235
- scope_id: string;
236
- pack_id: string;
237
- enabled: boolean;
238
- pinned_version?: string;
239
- created_at: string;
240
- updated_at: string;
241
- };
242
226
  export type ExperienceCandidateDraft = Omit<ExperienceNode, "id" | "state" | "usage_count" | "helped_count" | "harmed_count" | "support_count" | "origin_record_ids" | "helped_record_ids" | "harmed_record_ids" | "last_used_at" | "last_helped_at" | "last_harmed_at" | "created_at" | "updated_at">;
243
227
  export type CandidateSourceSignal = {
244
228
  task_summary: string;
@@ -1,6 +1,7 @@
1
- import type { EvaluationMode, ExperienceInput, InjectionMode, InjectionScorecard, ToolEvent } from "./domain.js";
1
+ import type { EvaluationMode, ExperienceInput, InjectionMode, InjectionScorecard, TaskRun, ToolEvent } from "./domain.js";
2
2
  import type { ExperienceEngineConfig } from "../config/config-schema.js";
3
3
  export type HostPromptContext = {
4
+ host?: TaskRun["host"];
4
5
  sessionId?: string;
5
6
  cwd?: string;
6
7
  userMessage: string;
@@ -25,10 +25,10 @@ Host wiring remains host-specific:
25
25
 
26
26
  The shared `ee` CLI is now the operational surface after installation, not the public installation surface itself.
27
27
 
28
- Current planned host-native surfaces now documented:
28
+ Current host-native install surfaces now documented:
29
29
 
30
- - `openclaw plugins install @alan512/experienceengine` (blocked until the public npm package is published)
31
- - `codex mcp add experienceengine --env EXPERIENCE_ENGINE_HOME=$HOME/.experienceengine -- npx -y @alan512/experienceengine codex-mcp-server` (blocked until the public npm package is published)
30
+ - `openclaw plugins install @alan512/experienceengine`
31
+ - `codex mcp add experienceengine --env EXPERIENCE_ENGINE_HOME=$HOME/.experienceengine -- npx -y @alan512/experienceengine codex-mcp-server`
32
32
 
33
33
  Current Claude-native distribution surface now documented:
34
34
 
@@ -0,0 +1,94 @@
1
+ # ExperienceEngine v0.1.3
2
+
3
+ Release date: 2026-03-29
4
+
5
+ ## Summary
6
+
7
+ `v0.1.3` tightens the product surface around three things:
8
+
9
+ - a more complete host-native daily workflow for `OpenClaw`
10
+ - a cleaner onboarding and inspection experience across hosts
11
+ - a smaller Codex MCP schema surface with less duplicated public schema
12
+
13
+ This release is mainly about productization and day-to-day usability, not a new learning core.
14
+
15
+ ## Included In This Release
16
+
17
+ ### OpenClaw Daily Interaction Loop
18
+
19
+ `OpenClaw` now has a complete daily host-native routine interaction track for common ExperienceEngine questions.
20
+
21
+ Users can now ask in-session about:
22
+
23
+ - what ExperienceEngine just injected
24
+ - why a hint matched
25
+ - whether the last intervention helped or harmed
26
+ - whether ExperienceEngine is ready in the current repo
27
+ - whether the repo is still warming up
28
+ - why ExperienceEngine stayed quiet on the latest turn
29
+ - a compact repo-level ExperienceEngine summary
30
+
31
+ This completes the intended daily host-native interaction loop for `OpenClaw`, while keeping deeper diagnostics and operator workflows in CLI.
32
+
33
+ ### Onboarding And First-Value Guidance
34
+
35
+ The onboarding model is now clearer and more product-facing:
36
+
37
+ - `Setup state`
38
+ - `Installed`
39
+ - `Initialized`
40
+ - `Ready`
41
+ - `Value state`
42
+ - `Warming up`
43
+ - `First value reached`
44
+
45
+ This release aligns those states across:
46
+
47
+ - `ee install`
48
+ - `ee init`
49
+ - `ee status`
50
+ - `ee doctor`
51
+ - `README`
52
+ - `User Guide`
53
+
54
+ It also makes first value stricter: generic warm-up text does not count as value unless a real task produced visible ExperienceEngine output.
55
+
56
+ ### Better Explanation Surfaces
57
+
58
+ ExperienceEngine now explains its behavior more clearly in the places users actually look:
59
+
60
+ - `inspect --last`
61
+ - node and repo inspection summaries
62
+ - `status`
63
+ - `doctor`
64
+ - Codex MCP summary payloads
65
+
66
+ The default path now favors short product-facing explanations, while deeper inspection still retains the more exact system details where needed.
67
+
68
+ ### Codex MCP Schema Slimming
69
+
70
+ This release trims duplicated public MCP schema in the Codex adapter without changing the current agent-first workflow:
71
+
72
+ - merged duplicate feedback, scope-state, and node-lifecycle tools
73
+ - shortened high-traffic prompt text
74
+ - kept repo summary as a resource-only read surface
75
+
76
+ The result is a smaller public schema footprint with no change to the resource-first review flow.
77
+
78
+ ### Marketplace-Facing Metadata
79
+
80
+ This release also improves public discovery packaging:
81
+
82
+ - npm package description is now product-facing instead of internal MVP wording
83
+ - README now explicitly calls out:
84
+ - OpenClaw compatibility expectations
85
+ - Node.js `>=20`
86
+ - a minimal shared `ee init` example
87
+
88
+ These changes are aimed at making the GitHub + npm landing page easier to understand before official directory approval lands.
89
+
90
+ ## Notes
91
+
92
+ - The OpenClaw community-plugin PR can still be merged independently of this release.
93
+ - `OpenClaw` daily host-native interaction is now considered complete for the current product boundary.
94
+ - CLI remains the explicit operator path for deep inspection, repair, lifecycle control, backup, rollback, and other advanced workflows.