@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
@@ -1,216 +0,0 @@
1
- import { existsSync, mkdirSync, readdirSync, readFileSync, writeFileSync } from "node:fs";
2
- import { join, resolve } from "node:path";
3
- import { nowIso } from "../utils/clock.js";
4
- const VERSION_PREFIX = "v";
5
- const toNodeSnapshot = (node) => ({
6
- id: node.id,
7
- node_type: node.node_type,
8
- scope_id: node.scope_id,
9
- task_type: node.task_type,
10
- trigger_pattern: node.trigger_pattern,
11
- compact_hint: node.compact_hint,
12
- evidence_summary: node.evidence_summary,
13
- source_kind: node.source_kind,
14
- state: node.state,
15
- usage_count: node.usage_count,
16
- helped_count: node.helped_count,
17
- harmed_count: node.harmed_count,
18
- support_count: node.support_count,
19
- distillation_mode_used: node.distillation_mode_used,
20
- distillation_source: node.distillation_source,
21
- created_at: node.created_at,
22
- updated_at: node.updated_at
23
- });
24
- const buildEvidenceSummary = (nodes) => nodes
25
- .map((node) => node.evidence_summary)
26
- .filter((value, index, all) => value && all.indexOf(value) === index)
27
- .join(" | ");
28
- const parseVersionNumber = (value) => {
29
- const numeric = Number(value.replace(/^v/i, ""));
30
- return Number.isInteger(numeric) && numeric > 0 ? numeric : 0;
31
- };
32
- const nextVersionId = (versions) => `${VERSION_PREFIX}${Math.max(0, ...versions.map(parseVersionNumber)) + 1}`;
33
- export class ExperiencePackRegistry {
34
- packsDir;
35
- constructor(args) {
36
- this.packsDir = resolve(args.packsDir);
37
- }
38
- ensureRegistryRoot() {
39
- mkdirSync(this.packsDir, { recursive: true });
40
- }
41
- packDir(packId) {
42
- return join(this.packsDir, packId);
43
- }
44
- versionDir(packId, version) {
45
- return join(this.packDir(packId), "versions", version);
46
- }
47
- compiledRoot(packId) {
48
- return join(this.packDir(packId), "compiled");
49
- }
50
- readJson(path) {
51
- return JSON.parse(readFileSync(path, "utf8"));
52
- }
53
- listPacks() {
54
- this.ensureRegistryRoot();
55
- return readdirSync(this.packsDir, { withFileTypes: true })
56
- .filter((entry) => entry.isDirectory())
57
- .map((entry) => this.readPack(entry.name));
58
- }
59
- createDraft(input) {
60
- const now = nowIso();
61
- this.ensureRegistryRoot();
62
- const existing = existsSync(join(this.packDir(input.packId), "pack.json"))
63
- ? this.readPack(input.packId)
64
- : undefined;
65
- const existingVersions = existing ? this.listVersions(input.packId).map((entry) => entry.version) : [];
66
- const version = existing ? nextVersionId(existingVersions) : `${VERSION_PREFIX}1`;
67
- const packDir = this.packDir(input.packId);
68
- const versionDir = this.versionDir(input.packId, version);
69
- mkdirSync(versionDir, { recursive: true });
70
- const pack = {
71
- packId: input.packId,
72
- name: input.name || existing?.name || input.packId,
73
- description: input.description,
74
- owner: input.owner || existing?.owner || "unknown",
75
- status: "draft",
76
- currentVersion: version,
77
- createdAt: existing?.createdAt ?? now,
78
- updatedAt: now,
79
- publishedAt: existing?.publishedAt,
80
- rolledBackAt: undefined,
81
- scopeHints: input.scopeHints,
82
- taskFamilies: input.taskFamilies,
83
- hostCompatibility: input.hostCompatibility
84
- };
85
- const manifest = {
86
- packId: input.packId,
87
- version,
88
- statusSnapshot: "draft",
89
- sourceNodeIds: input.nodes.map((node) => node.id),
90
- evidenceSummary: buildEvidenceSummary(input.nodes),
91
- riskLevel: "medium",
92
- hostCompatibility: input.hostCompatibility,
93
- createdAt: now
94
- };
95
- const snapshots = input.nodes.map((node) => toNodeSnapshot(node));
96
- writeFileSync(join(packDir, "pack.json"), JSON.stringify(pack, null, 2));
97
- writeFileSync(join(versionDir, "manifest.json"), JSON.stringify(manifest, null, 2));
98
- writeFileSync(join(versionDir, "nodes.json"), JSON.stringify(snapshots, null, 2));
99
- return pack;
100
- }
101
- readPack(packId) {
102
- return this.readJson(join(this.packsDir, packId, "pack.json"));
103
- }
104
- readVersionManifest(packId, version) {
105
- return this.readJson(join(this.versionDir(packId, version), "manifest.json"));
106
- }
107
- listVersions(packId) {
108
- const versionsRoot = join(this.packDir(packId), "versions");
109
- if (!existsSync(versionsRoot)) {
110
- return [];
111
- }
112
- return readdirSync(versionsRoot, { withFileTypes: true })
113
- .filter((entry) => entry.isDirectory())
114
- .map((entry) => this.readVersionManifest(packId, entry.name))
115
- .sort((left, right) => parseVersionNumber(left.version) - parseVersionNumber(right.version));
116
- }
117
- readVersionNodes(packId, version) {
118
- return this.readJson(join(this.versionDir(packId, version), "nodes.json"));
119
- }
120
- listCompiledArtifacts(packId) {
121
- const compiledRoot = this.compiledRoot(packId);
122
- if (!existsSync(compiledRoot)) {
123
- return [];
124
- }
125
- const artifacts = [];
126
- for (const targetEntry of readdirSync(compiledRoot, { withFileTypes: true }).filter((entry) => entry.isDirectory())) {
127
- const targetRoot = join(compiledRoot, targetEntry.name);
128
- for (const versionEntry of readdirSync(targetRoot, { withFileTypes: true }).filter((entry) => entry.isDirectory())) {
129
- const reportPath = join(targetRoot, versionEntry.name, "compile-report.json");
130
- if (!existsSync(reportPath)) {
131
- continue;
132
- }
133
- const report = this.readJson(reportPath);
134
- artifacts.push({
135
- target: report.target,
136
- version: report.version,
137
- generatedAt: report.generatedAt,
138
- outputPath: report.outputPath,
139
- reportPath,
140
- renderedNodeCount: report.renderedNodeCount
141
- });
142
- }
143
- }
144
- return artifacts.sort((left, right) => right.generatedAt.localeCompare(left.generatedAt) ||
145
- left.target.localeCompare(right.target) ||
146
- left.version.localeCompare(right.version));
147
- }
148
- getCompileStatus(packId, currentVersion) {
149
- const artifacts = this.listCompiledArtifacts(packId);
150
- const currentVersionCompiledTargets = Array.from(new Set(artifacts
151
- .filter((artifact) => artifact.version === currentVersion)
152
- .map((artifact) => artifact.target))).sort();
153
- return {
154
- currentVersionCompiledTargets,
155
- latestArtifact: artifacts[0],
156
- stale: artifacts.length > 0 && currentVersionCompiledTargets.length === 0
157
- };
158
- }
159
- reviewPack(packId, updates) {
160
- const pack = this.readPack(packId);
161
- const manifest = this.readVersionManifest(packId, pack.currentVersion);
162
- const now = nowIso();
163
- const nextPack = {
164
- ...pack,
165
- description: updates.description ?? pack.description,
166
- status: "review",
167
- updatedAt: now
168
- };
169
- const nextManifest = {
170
- ...manifest,
171
- statusSnapshot: "review",
172
- evidenceSummary: updates.evidenceSummary ?? manifest.evidenceSummary,
173
- riskLevel: updates.riskLevel ?? manifest.riskLevel
174
- };
175
- writeFileSync(join(this.packDir(packId), "pack.json"), JSON.stringify(nextPack, null, 2));
176
- writeFileSync(join(this.versionDir(packId, pack.currentVersion), "manifest.json"), JSON.stringify(nextManifest, null, 2));
177
- return nextPack;
178
- }
179
- publishPack(packId) {
180
- const pack = this.readPack(packId);
181
- const manifest = this.readVersionManifest(packId, pack.currentVersion);
182
- const now = nowIso();
183
- const nextPack = {
184
- ...pack,
185
- status: "published",
186
- updatedAt: now,
187
- publishedAt: now
188
- };
189
- const nextManifest = {
190
- ...manifest,
191
- statusSnapshot: "published",
192
- publishedAt: now
193
- };
194
- writeFileSync(join(this.packDir(packId), "pack.json"), JSON.stringify(nextPack, null, 2));
195
- writeFileSync(join(this.versionDir(packId, pack.currentVersion), "manifest.json"), JSON.stringify(nextManifest, null, 2));
196
- return nextPack;
197
- }
198
- rollbackPack(packId, version) {
199
- const pack = this.readPack(packId);
200
- const versions = this.listVersions(packId);
201
- if (!versions.some((entry) => entry.version === version)) {
202
- throw new Error(`Unknown pack version: ${packId}@${version}`);
203
- }
204
- const now = nowIso();
205
- const nextPack = {
206
- ...pack,
207
- status: "rolled_back",
208
- currentVersion: version,
209
- updatedAt: now,
210
- rolledBackAt: now
211
- };
212
- writeFileSync(join(this.packDir(packId), "pack.json"), JSON.stringify(nextPack, null, 2));
213
- return nextPack;
214
- }
215
- }
216
- //# sourceMappingURL=fs-registry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fs-registry.js","sourceRoot":"","sources":["../../src/packs/fs-registry.ts"],"names":[],"mappings":"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"}
@@ -1,9 +0,0 @@
1
- import { ExperiencePackRegistry } from "./fs-registry.js";
2
- import { ExperiencePackRepository } from "../store/sqlite/repositories/pack-repo.js";
3
- export declare class ExperiencePackIndexSync {
4
- private readonly registry;
5
- private readonly repo;
6
- constructor(registry: ExperiencePackRegistry, repo: ExperiencePackRepository);
7
- syncPack(packId: string): void;
8
- syncAll(): void;
9
- }
@@ -1,54 +0,0 @@
1
- import { nowIso } from "../utils/clock.js";
2
- export class ExperiencePackIndexSync {
3
- registry;
4
- repo;
5
- constructor(registry, repo) {
6
- this.registry = registry;
7
- this.repo = repo;
8
- }
9
- syncPack(packId) {
10
- const pack = this.registry.readPack(packId);
11
- this.repo.upsertPack({
12
- pack_id: pack.packId,
13
- name: pack.name,
14
- description: pack.description,
15
- owner: pack.owner,
16
- status: pack.status,
17
- current_version: pack.currentVersion,
18
- scope_hints: pack.scopeHints,
19
- task_families: pack.taskFamilies,
20
- host_compatibility: pack.hostCompatibility,
21
- created_at: pack.createdAt,
22
- updated_at: pack.updatedAt,
23
- published_at: pack.publishedAt,
24
- rolled_back_at: pack.rolledBackAt
25
- });
26
- for (const version of this.registry.listVersions(packId)) {
27
- this.repo.upsertVersion({
28
- pack_id: version.packId,
29
- version: version.version,
30
- status_snapshot: version.statusSnapshot,
31
- evidence_summary: version.evidenceSummary,
32
- benchmark_summary: version.benchmarkSummary,
33
- risk_level: version.riskLevel,
34
- ttl: version.ttl,
35
- host_compatibility: version.hostCompatibility,
36
- created_at: version.createdAt,
37
- published_at: version.publishedAt,
38
- rolled_back_from: version.rolledBackFrom
39
- });
40
- this.repo.replaceMemberships(packId, version.version, this.registry.readVersionNodes(packId, version.version).map((node) => ({
41
- pack_id: packId,
42
- version: version.version,
43
- node_id: node.id,
44
- created_at: nowIso()
45
- })));
46
- }
47
- }
48
- syncAll() {
49
- for (const pack of this.registry.listPacks()) {
50
- this.syncPack(pack.packId);
51
- }
52
- }
53
- }
54
- //# sourceMappingURL=index-sync.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-sync.js","sourceRoot":"","sources":["../../src/packs/index-sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAI3C,MAAM,OAAO,uBAAuB;IAEf;IACA;IAFnB,YACmB,QAAgC,EAChC,IAA8B;QAD9B,aAAQ,GAAR,QAAQ,CAAwB;QAChC,SAAI,GAAJ,IAAI,CAA0B;IAC9C,CAAC;IAEJ,QAAQ,CAAC,MAAc;QACrB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;YACnB,OAAO,EAAE,IAAI,CAAC,MAAM;YACpB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,eAAe,EAAE,IAAI,CAAC,cAAc;YACpC,WAAW,EAAE,IAAI,CAAC,UAAU;YAC5B,aAAa,EAAE,IAAI,CAAC,YAAY;YAChC,kBAAkB,EAAE,IAAI,CAAC,iBAAiB;YAC1C,UAAU,EAAE,IAAI,CAAC,SAAS;YAC1B,UAAU,EAAE,IAAI,CAAC,SAAS;YAC1B,YAAY,EAAE,IAAI,CAAC,WAAW;YAC9B,cAAc,EAAE,IAAI,CAAC,YAAY;SAClC,CAAC,CAAC;QAEH,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;YACzD,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;gBACtB,OAAO,EAAE,OAAO,CAAC,MAAM;gBACvB,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,eAAe,EAAE,OAAO,CAAC,cAAc;gBACvC,gBAAgB,EAAE,OAAO,CAAC,eAAe;gBACzC,iBAAiB,EAAE,OAAO,CAAC,gBAAgB;gBAC3C,UAAU,EAAE,OAAO,CAAC,SAAS;gBAC7B,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,kBAAkB,EAAE,OAAO,CAAC,iBAAiB;gBAC7C,UAAU,EAAE,OAAO,CAAC,SAAS;gBAC7B,YAAY,EAAE,OAAO,CAAC,WAAW;gBACjC,gBAAgB,EAAE,OAAO,CAAC,cAAc;aACzC,CAAC,CAAC;YAEH,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAC1B,MAAM,EACN,OAAO,CAAC,OAAO,EACf,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBACrE,OAAO,EAAE,MAAM;gBACf,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,OAAO,EAAE,IAAI,CAAC,EAAE;gBAChB,UAAU,EAAE,MAAM,EAAE;aACrB,CAAC,CAAC,CACJ,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO;QACL,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC;YAC7C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;CACF"}
@@ -1,55 +0,0 @@
1
- import type { ExperienceNode, ExperiencePackHost, ExperiencePackRiskLevel, ExperiencePackStatus, TaskType } from "../types/domain.js";
2
- export type { ExperiencePackHost, ExperiencePackRiskLevel, ExperiencePackStatus };
3
- export type ExperiencePackSummary = {
4
- packId: string;
5
- name: string;
6
- description: string;
7
- owner: string;
8
- status: ExperiencePackStatus;
9
- currentVersion: string;
10
- createdAt: string;
11
- updatedAt: string;
12
- publishedAt?: string;
13
- rolledBackAt?: string;
14
- scopeHints: string[];
15
- taskFamilies: TaskType[];
16
- hostCompatibility: ExperiencePackHost[];
17
- };
18
- export type ExperiencePackVersionManifest = {
19
- packId: string;
20
- version: string;
21
- statusSnapshot: ExperiencePackStatus;
22
- sourceNodeIds: string[];
23
- evidenceSummary: string;
24
- benchmarkSummary?: string;
25
- riskLevel: ExperiencePackRiskLevel;
26
- ttl?: string;
27
- hostCompatibility: ExperiencePackHost[];
28
- createdAt: string;
29
- publishedAt?: string;
30
- rolledBackFrom?: string;
31
- };
32
- export type ExperiencePackNodeSnapshot = Pick<ExperienceNode, "id" | "node_type" | "scope_id" | "task_type" | "trigger_pattern" | "compact_hint" | "evidence_summary" | "source_kind" | "state" | "usage_count" | "helped_count" | "harmed_count" | "support_count" | "distillation_mode_used" | "distillation_source" | "created_at" | "updated_at">;
33
- export type ExperiencePackDraftCreateInput = {
34
- packId: string;
35
- name: string;
36
- description: string;
37
- owner: string;
38
- scopeHints: string[];
39
- taskFamilies: TaskType[];
40
- hostCompatibility: ExperiencePackHost[];
41
- nodes: ExperienceNode[];
42
- };
43
- export type ExperiencePackCompiledArtifact = {
44
- target: string;
45
- version: string;
46
- generatedAt: string;
47
- outputPath: string;
48
- reportPath: string;
49
- renderedNodeCount: number;
50
- };
51
- export type ExperiencePackCompileStatus = {
52
- currentVersionCompiledTargets: string[];
53
- latestArtifact?: ExperiencePackCompiledArtifact;
54
- stale: boolean;
55
- };
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/packs/types.ts"],"names":[],"mappings":""}
@@ -1,16 +0,0 @@
1
- import type { DatabaseSync } from "node:sqlite";
2
- import type { ExperiencePackActivation, ExperiencePackMembership, ExperiencePackSummaryRecord, ExperiencePackVersionRecord } from "../../../types/domain.js";
3
- export declare class ExperiencePackRepository {
4
- private readonly db;
5
- constructor(db: DatabaseSync);
6
- upsertPack(pack: ExperiencePackSummaryRecord): ExperiencePackSummaryRecord;
7
- getPack(packId: string): ExperiencePackSummaryRecord | undefined;
8
- listPacks(): ExperiencePackSummaryRecord[];
9
- upsertVersion(version: ExperiencePackVersionRecord): ExperiencePackVersionRecord;
10
- listVersions(packId: string): ExperiencePackVersionRecord[];
11
- replaceMemberships(packId: string, version: string, memberships: ExperiencePackMembership[]): void;
12
- listMemberships(packId: string, version: string): ExperiencePackMembership[];
13
- upsertActivation(activation: ExperiencePackActivation): ExperiencePackActivation;
14
- listActivations(scopeId: string): ExperiencePackActivation[];
15
- listActivationsByPack(packId: string): ExperiencePackActivation[];
16
- }
@@ -1,192 +0,0 @@
1
- export class ExperiencePackRepository {
2
- db;
3
- constructor(db) {
4
- this.db = db;
5
- }
6
- upsertPack(pack) {
7
- this.db
8
- .prepare(`INSERT INTO experience_packs
9
- (pack_id, name, description, owner, status, current_version, scope_hints_json, task_families_json,
10
- host_compatibility_json, created_at, updated_at, published_at, rolled_back_at)
11
- VALUES
12
- (@pack_id, @name, @description, @owner, @status, @current_version, @scope_hints_json, @task_families_json,
13
- @host_compatibility_json, @created_at, @updated_at, @published_at, @rolled_back_at)
14
- ON CONFLICT(pack_id) DO UPDATE SET
15
- name = excluded.name,
16
- description = excluded.description,
17
- owner = excluded.owner,
18
- status = excluded.status,
19
- current_version = excluded.current_version,
20
- scope_hints_json = excluded.scope_hints_json,
21
- task_families_json = excluded.task_families_json,
22
- host_compatibility_json = excluded.host_compatibility_json,
23
- updated_at = excluded.updated_at,
24
- published_at = excluded.published_at,
25
- rolled_back_at = excluded.rolled_back_at`)
26
- .run({
27
- pack_id: pack.pack_id,
28
- name: pack.name,
29
- description: pack.description,
30
- owner: pack.owner,
31
- status: pack.status,
32
- current_version: pack.current_version,
33
- scope_hints_json: JSON.stringify(pack.scope_hints),
34
- task_families_json: JSON.stringify(pack.task_families),
35
- host_compatibility_json: JSON.stringify(pack.host_compatibility),
36
- created_at: pack.created_at,
37
- updated_at: pack.updated_at,
38
- published_at: pack.published_at ?? null,
39
- rolled_back_at: pack.rolled_back_at ?? null
40
- });
41
- return pack;
42
- }
43
- getPack(packId) {
44
- const row = this.db.prepare("SELECT * FROM experience_packs WHERE pack_id = ? LIMIT 1").get(packId);
45
- if (!row) {
46
- return undefined;
47
- }
48
- return {
49
- pack_id: row.pack_id,
50
- name: row.name,
51
- description: row.description,
52
- owner: row.owner,
53
- status: row.status,
54
- current_version: row.current_version,
55
- scope_hints: JSON.parse(row.scope_hints_json),
56
- task_families: JSON.parse(row.task_families_json),
57
- host_compatibility: JSON.parse(row.host_compatibility_json),
58
- created_at: row.created_at,
59
- updated_at: row.updated_at,
60
- published_at: row.published_at ?? undefined,
61
- rolled_back_at: row.rolled_back_at ?? undefined
62
- };
63
- }
64
- listPacks() {
65
- return this.db
66
- .prepare("SELECT pack_id FROM experience_packs ORDER BY updated_at DESC")
67
- .all()
68
- .map((row) => this.getPack(row.pack_id))
69
- .filter(Boolean);
70
- }
71
- upsertVersion(version) {
72
- this.db
73
- .prepare(`INSERT INTO experience_pack_versions
74
- (pack_id, version, status_snapshot, evidence_summary, benchmark_summary, risk_level, ttl,
75
- host_compatibility_json, created_at, published_at, rolled_back_from)
76
- VALUES
77
- (@pack_id, @version, @status_snapshot, @evidence_summary, @benchmark_summary, @risk_level, @ttl,
78
- @host_compatibility_json, @created_at, @published_at, @rolled_back_from)
79
- ON CONFLICT(pack_id, version) DO UPDATE SET
80
- status_snapshot = excluded.status_snapshot,
81
- evidence_summary = excluded.evidence_summary,
82
- benchmark_summary = excluded.benchmark_summary,
83
- risk_level = excluded.risk_level,
84
- ttl = excluded.ttl,
85
- host_compatibility_json = excluded.host_compatibility_json,
86
- published_at = excluded.published_at,
87
- rolled_back_from = excluded.rolled_back_from`)
88
- .run({
89
- pack_id: version.pack_id,
90
- version: version.version,
91
- status_snapshot: version.status_snapshot,
92
- evidence_summary: version.evidence_summary,
93
- benchmark_summary: version.benchmark_summary ?? null,
94
- risk_level: version.risk_level,
95
- ttl: version.ttl ?? null,
96
- host_compatibility_json: JSON.stringify(version.host_compatibility),
97
- created_at: version.created_at,
98
- published_at: version.published_at ?? null,
99
- rolled_back_from: version.rolled_back_from ?? null
100
- });
101
- return version;
102
- }
103
- listVersions(packId) {
104
- return this.db
105
- .prepare("SELECT * FROM experience_pack_versions WHERE pack_id = ? ORDER BY created_at DESC")
106
- .all(packId)
107
- .map((row) => {
108
- const typed = row;
109
- return {
110
- pack_id: typed.pack_id,
111
- version: typed.version,
112
- status_snapshot: typed.status_snapshot,
113
- evidence_summary: typed.evidence_summary,
114
- benchmark_summary: typed.benchmark_summary ?? undefined,
115
- risk_level: typed.risk_level,
116
- ttl: typed.ttl ?? undefined,
117
- host_compatibility: JSON.parse(typed.host_compatibility_json),
118
- created_at: typed.created_at,
119
- published_at: typed.published_at ?? undefined,
120
- rolled_back_from: typed.rolled_back_from ?? undefined
121
- };
122
- });
123
- }
124
- replaceMemberships(packId, version, memberships) {
125
- this.db
126
- .prepare("DELETE FROM experience_pack_memberships WHERE pack_id = ? AND version = ?")
127
- .run(packId, version);
128
- const statement = this.db.prepare(`INSERT INTO experience_pack_memberships (pack_id, version, node_id, created_at)
129
- VALUES (@pack_id, @version, @node_id, @created_at)`);
130
- for (const membership of memberships) {
131
- statement.run(membership);
132
- }
133
- }
134
- listMemberships(packId, version) {
135
- return this.db
136
- .prepare("SELECT pack_id, version, node_id, created_at FROM experience_pack_memberships WHERE pack_id = ? AND version = ? ORDER BY node_id")
137
- .all(packId, version);
138
- }
139
- upsertActivation(activation) {
140
- this.db
141
- .prepare(`INSERT INTO experience_pack_activations
142
- (scope_id, pack_id, enabled, pinned_version, created_at, updated_at)
143
- VALUES
144
- (@scope_id, @pack_id, @enabled, @pinned_version, @created_at, @updated_at)
145
- ON CONFLICT(scope_id, pack_id) DO UPDATE SET
146
- enabled = excluded.enabled,
147
- pinned_version = excluded.pinned_version,
148
- updated_at = excluded.updated_at`)
149
- .run({
150
- scope_id: activation.scope_id,
151
- pack_id: activation.pack_id,
152
- enabled: activation.enabled ? 1 : 0,
153
- pinned_version: activation.pinned_version ?? null,
154
- created_at: activation.created_at,
155
- updated_at: activation.updated_at
156
- });
157
- return activation;
158
- }
159
- listActivations(scopeId) {
160
- return this.db
161
- .prepare("SELECT scope_id, pack_id, enabled, pinned_version, created_at, updated_at FROM experience_pack_activations WHERE scope_id = ? ORDER BY pack_id")
162
- .all(scopeId)
163
- .map((row) => {
164
- const typed = row;
165
- return {
166
- scope_id: typed.scope_id,
167
- pack_id: typed.pack_id,
168
- enabled: typed.enabled === 1,
169
- pinned_version: typed.pinned_version ?? undefined,
170
- created_at: typed.created_at,
171
- updated_at: typed.updated_at
172
- };
173
- });
174
- }
175
- listActivationsByPack(packId) {
176
- return this.db
177
- .prepare("SELECT scope_id, pack_id, enabled, pinned_version, created_at, updated_at FROM experience_pack_activations WHERE pack_id = ? ORDER BY scope_id")
178
- .all(packId)
179
- .map((row) => {
180
- const typed = row;
181
- return {
182
- scope_id: typed.scope_id,
183
- pack_id: typed.pack_id,
184
- enabled: typed.enabled === 1,
185
- pinned_version: typed.pinned_version ?? undefined,
186
- created_at: typed.created_at,
187
- updated_at: typed.updated_at
188
- };
189
- });
190
- }
191
- }
192
- //# sourceMappingURL=pack-repo.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pack-repo.js","sourceRoot":"","sources":["../../../../src/store/sqlite/repositories/pack-repo.ts"],"names":[],"mappings":"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"}