selftune 0.1.4 → 0.2.1

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 (153) hide show
  1. package/.claude/agents/diagnosis-analyst.md +156 -0
  2. package/.claude/agents/evolution-reviewer.md +180 -0
  3. package/.claude/agents/integration-guide.md +212 -0
  4. package/.claude/agents/pattern-analyst.md +160 -0
  5. package/CHANGELOG.md +46 -1
  6. package/README.md +105 -257
  7. package/apps/local-dashboard/dist/assets/geist-cyrillic-wght-normal-CHSlOQsW.woff2 +0 -0
  8. package/apps/local-dashboard/dist/assets/geist-latin-ext-wght-normal-DMtmJ5ZE.woff2 +0 -0
  9. package/apps/local-dashboard/dist/assets/geist-latin-wght-normal-Dm3htQBi.woff2 +0 -0
  10. package/apps/local-dashboard/dist/assets/index-C4EOTFZ2.js +15 -0
  11. package/apps/local-dashboard/dist/assets/index-bl-Webyd.css +1 -0
  12. package/apps/local-dashboard/dist/assets/vendor-react-U7zYD9Rg.js +60 -0
  13. package/apps/local-dashboard/dist/assets/vendor-table-B7VF2Ipl.js +26 -0
  14. package/apps/local-dashboard/dist/assets/vendor-ui-D7_zX_qy.js +346 -0
  15. package/apps/local-dashboard/dist/favicon.png +0 -0
  16. package/apps/local-dashboard/dist/index.html +17 -0
  17. package/apps/local-dashboard/dist/logo.png +0 -0
  18. package/apps/local-dashboard/dist/logo.svg +9 -0
  19. package/assets/BeforeAfter.gif +0 -0
  20. package/assets/FeedbackLoop.gif +0 -0
  21. package/assets/logo.svg +9 -0
  22. package/assets/skill-health-badge.svg +20 -0
  23. package/cli/selftune/activation-rules.ts +171 -0
  24. package/cli/selftune/badge/badge-data.ts +108 -0
  25. package/cli/selftune/badge/badge-svg.ts +212 -0
  26. package/cli/selftune/badge/badge.ts +99 -0
  27. package/cli/selftune/canonical-export.ts +183 -0
  28. package/cli/selftune/constants.ts +103 -1
  29. package/cli/selftune/contribute/bundle.ts +314 -0
  30. package/cli/selftune/contribute/contribute.ts +214 -0
  31. package/cli/selftune/contribute/sanitize.ts +162 -0
  32. package/cli/selftune/cron/setup.ts +266 -0
  33. package/cli/selftune/dashboard-contract.ts +202 -0
  34. package/cli/selftune/dashboard-server.ts +1049 -0
  35. package/cli/selftune/dashboard.ts +43 -156
  36. package/cli/selftune/eval/baseline.ts +248 -0
  37. package/cli/selftune/eval/composability-v2.ts +273 -0
  38. package/cli/selftune/eval/composability.ts +117 -0
  39. package/cli/selftune/eval/generate-unit-tests.ts +143 -0
  40. package/cli/selftune/eval/hooks-to-evals.ts +101 -16
  41. package/cli/selftune/eval/import-skillsbench.ts +221 -0
  42. package/cli/selftune/eval/synthetic-evals.ts +172 -0
  43. package/cli/selftune/eval/unit-test-cli.ts +152 -0
  44. package/cli/selftune/eval/unit-test.ts +196 -0
  45. package/cli/selftune/evolution/deploy-proposal.ts +142 -1
  46. package/cli/selftune/evolution/evidence.ts +26 -0
  47. package/cli/selftune/evolution/evolve-body.ts +586 -0
  48. package/cli/selftune/evolution/evolve.ts +825 -116
  49. package/cli/selftune/evolution/extract-patterns.ts +105 -16
  50. package/cli/selftune/evolution/pareto.ts +314 -0
  51. package/cli/selftune/evolution/propose-body.ts +171 -0
  52. package/cli/selftune/evolution/propose-description.ts +100 -2
  53. package/cli/selftune/evolution/propose-routing.ts +166 -0
  54. package/cli/selftune/evolution/refine-body.ts +141 -0
  55. package/cli/selftune/evolution/rollback.ts +21 -4
  56. package/cli/selftune/evolution/validate-body.ts +254 -0
  57. package/cli/selftune/evolution/validate-proposal.ts +257 -35
  58. package/cli/selftune/evolution/validate-routing.ts +177 -0
  59. package/cli/selftune/grading/auto-grade.ts +200 -0
  60. package/cli/selftune/grading/grade-session.ts +513 -42
  61. package/cli/selftune/grading/pre-gates.ts +104 -0
  62. package/cli/selftune/grading/results.ts +42 -0
  63. package/cli/selftune/hooks/auto-activate.ts +185 -0
  64. package/cli/selftune/hooks/evolution-guard.ts +165 -0
  65. package/cli/selftune/hooks/prompt-log.ts +172 -2
  66. package/cli/selftune/hooks/session-stop.ts +123 -3
  67. package/cli/selftune/hooks/skill-change-guard.ts +112 -0
  68. package/cli/selftune/hooks/skill-eval.ts +119 -3
  69. package/cli/selftune/index.ts +415 -48
  70. package/cli/selftune/ingestors/claude-replay.ts +377 -0
  71. package/cli/selftune/ingestors/codex-rollout.ts +345 -46
  72. package/cli/selftune/ingestors/codex-wrapper.ts +207 -39
  73. package/cli/selftune/ingestors/openclaw-ingest.ts +573 -0
  74. package/cli/selftune/ingestors/opencode-ingest.ts +193 -17
  75. package/cli/selftune/init.ts +376 -16
  76. package/cli/selftune/last.ts +14 -5
  77. package/cli/selftune/localdb/db.ts +63 -0
  78. package/cli/selftune/localdb/materialize.ts +428 -0
  79. package/cli/selftune/localdb/queries.ts +376 -0
  80. package/cli/selftune/localdb/schema.ts +204 -0
  81. package/cli/selftune/memory/writer.ts +447 -0
  82. package/cli/selftune/monitoring/watch.ts +90 -16
  83. package/cli/selftune/normalization.ts +682 -0
  84. package/cli/selftune/observability.ts +19 -44
  85. package/cli/selftune/orchestrate.ts +1073 -0
  86. package/cli/selftune/quickstart.ts +203 -0
  87. package/cli/selftune/repair/skill-usage.ts +576 -0
  88. package/cli/selftune/schedule.ts +561 -0
  89. package/cli/selftune/status.ts +59 -33
  90. package/cli/selftune/sync.ts +627 -0
  91. package/cli/selftune/types.ts +525 -5
  92. package/cli/selftune/utils/canonical-log.ts +45 -0
  93. package/cli/selftune/utils/frontmatter.ts +217 -0
  94. package/cli/selftune/utils/hooks.ts +41 -0
  95. package/cli/selftune/utils/html.ts +27 -0
  96. package/cli/selftune/utils/llm-call.ts +103 -19
  97. package/cli/selftune/utils/math.ts +10 -0
  98. package/cli/selftune/utils/query-filter.ts +139 -0
  99. package/cli/selftune/utils/skill-discovery.ts +340 -0
  100. package/cli/selftune/utils/skill-log.ts +68 -0
  101. package/cli/selftune/utils/skill-usage-confidence.ts +18 -0
  102. package/cli/selftune/utils/transcript.ts +307 -26
  103. package/cli/selftune/utils/trigger-check.ts +89 -0
  104. package/cli/selftune/utils/tui.ts +156 -0
  105. package/cli/selftune/workflows/discover.ts +254 -0
  106. package/cli/selftune/workflows/skill-md-writer.ts +288 -0
  107. package/cli/selftune/workflows/workflows.ts +188 -0
  108. package/package.json +28 -11
  109. package/packages/telemetry-contract/README.md +11 -0
  110. package/packages/telemetry-contract/fixtures/golden.json +87 -0
  111. package/packages/telemetry-contract/fixtures/golden.test.ts +42 -0
  112. package/packages/telemetry-contract/index.ts +1 -0
  113. package/packages/telemetry-contract/package.json +19 -0
  114. package/packages/telemetry-contract/src/index.ts +2 -0
  115. package/packages/telemetry-contract/src/types.ts +163 -0
  116. package/packages/telemetry-contract/src/validators.ts +109 -0
  117. package/skill/SKILL.md +180 -33
  118. package/skill/Workflows/AutoActivation.md +145 -0
  119. package/skill/Workflows/Badge.md +124 -0
  120. package/skill/Workflows/Baseline.md +144 -0
  121. package/skill/Workflows/Composability.md +107 -0
  122. package/skill/Workflows/Contribute.md +94 -0
  123. package/skill/Workflows/Cron.md +132 -0
  124. package/skill/Workflows/Dashboard.md +214 -0
  125. package/skill/Workflows/Doctor.md +63 -14
  126. package/skill/Workflows/Evals.md +110 -18
  127. package/skill/Workflows/EvolutionMemory.md +154 -0
  128. package/skill/Workflows/Evolve.md +181 -21
  129. package/skill/Workflows/EvolveBody.md +159 -0
  130. package/skill/Workflows/Grade.md +36 -31
  131. package/skill/Workflows/ImportSkillsBench.md +117 -0
  132. package/skill/Workflows/Ingest.md +142 -21
  133. package/skill/Workflows/Initialize.md +91 -23
  134. package/skill/Workflows/Orchestrate.md +139 -0
  135. package/skill/Workflows/Replay.md +91 -0
  136. package/skill/Workflows/Rollback.md +23 -4
  137. package/skill/Workflows/Schedule.md +61 -0
  138. package/skill/Workflows/Sync.md +88 -0
  139. package/skill/Workflows/UnitTest.md +150 -0
  140. package/skill/Workflows/Watch.md +33 -1
  141. package/skill/Workflows/Workflows.md +129 -0
  142. package/skill/assets/activation-rules-default.json +26 -0
  143. package/skill/assets/multi-skill-settings.json +63 -0
  144. package/skill/assets/single-skill-settings.json +57 -0
  145. package/skill/references/invocation-taxonomy.md +2 -2
  146. package/skill/references/logs.md +164 -2
  147. package/skill/references/setup-patterns.md +65 -0
  148. package/skill/references/version-history.md +40 -0
  149. package/skill/settings_snippet.json +23 -0
  150. package/templates/activation-rules-default.json +27 -0
  151. package/templates/multi-skill-settings.json +64 -0
  152. package/templates/single-skill-settings.json +58 -0
  153. package/dashboard/index.html +0 -1119
@@ -0,0 +1,202 @@
1
+ export interface TelemetryRecord {
2
+ timestamp: string;
3
+ session_id: string;
4
+ skills_triggered: string[];
5
+ errors_encountered: number;
6
+ total_tool_calls: number;
7
+ }
8
+
9
+ export interface SkillUsageRecord {
10
+ timestamp: string;
11
+ session_id: string;
12
+ skill_name: string;
13
+ skill_path: string;
14
+ query: string;
15
+ triggered: boolean;
16
+ source: string | null;
17
+ }
18
+
19
+ export interface EvalSnapshot {
20
+ before_pass_rate?: number;
21
+ after_pass_rate?: number;
22
+ net_change?: number;
23
+ improved?: boolean;
24
+ regressions?: Array<Record<string, unknown>>;
25
+ new_passes?: Array<Record<string, unknown>>;
26
+ }
27
+
28
+ export interface EvolutionEntry {
29
+ timestamp: string;
30
+ proposal_id: string;
31
+ action: string;
32
+ details: string;
33
+ eval_snapshot?: EvalSnapshot | null;
34
+ }
35
+
36
+ export interface UnmatchedQuery {
37
+ timestamp: string;
38
+ session_id: string;
39
+ query: string;
40
+ }
41
+
42
+ export interface PendingProposal {
43
+ proposal_id: string;
44
+ action: string;
45
+ timestamp: string;
46
+ details: string;
47
+ skill_name?: string;
48
+ }
49
+
50
+ export interface SkillSummary {
51
+ skill_name: string;
52
+ skill_scope: string | null;
53
+ total_checks: number;
54
+ triggered_count: number;
55
+ pass_rate: number;
56
+ unique_sessions: number;
57
+ last_seen: string | null;
58
+ has_evidence: boolean;
59
+ }
60
+
61
+ export interface OverviewPayload {
62
+ telemetry: TelemetryRecord[];
63
+ skills: SkillUsageRecord[];
64
+ evolution: EvolutionEntry[];
65
+ counts: {
66
+ telemetry: number;
67
+ skills: number;
68
+ evolution: number;
69
+ evidence: number;
70
+ sessions: number;
71
+ prompts: number;
72
+ };
73
+ unmatched_queries: UnmatchedQuery[];
74
+ pending_proposals: PendingProposal[];
75
+ }
76
+
77
+ export interface OverviewResponse {
78
+ overview: OverviewPayload;
79
+ skills: SkillSummary[];
80
+ version?: string;
81
+ }
82
+
83
+ export interface EvidenceEntry {
84
+ proposal_id: string;
85
+ target: string;
86
+ stage: string;
87
+ timestamp: string;
88
+ rationale: string | null;
89
+ confidence: number | null;
90
+ original_text: string | null;
91
+ proposed_text: string | null;
92
+ validation: Record<string, unknown> | null;
93
+ details: string | null;
94
+ eval_set: Array<Record<string, unknown>>;
95
+ }
96
+
97
+ export interface CanonicalInvocation {
98
+ timestamp: string;
99
+ session_id: string;
100
+ skill_name: string;
101
+ invocation_mode: string | null;
102
+ triggered: boolean;
103
+ confidence: number | null;
104
+ tool_name: string | null;
105
+ }
106
+
107
+ export interface PromptSample {
108
+ prompt_text: string;
109
+ prompt_kind: string | null;
110
+ is_actionable: boolean;
111
+ occurred_at: string;
112
+ session_id: string;
113
+ }
114
+
115
+ export interface SessionMeta {
116
+ session_id: string;
117
+ platform: string | null;
118
+ model: string | null;
119
+ agent_cli: string | null;
120
+ branch: string | null;
121
+ workspace_path: string | null;
122
+ started_at: string | null;
123
+ ended_at: string | null;
124
+ completion_status: string | null;
125
+ }
126
+
127
+ export interface SkillReportPayload {
128
+ skill_name: string;
129
+ usage: {
130
+ total_checks: number;
131
+ triggered_count: number;
132
+ pass_rate: number;
133
+ };
134
+ recent_invocations: Array<{
135
+ timestamp: string;
136
+ session_id: string;
137
+ query: string;
138
+ triggered: boolean;
139
+ source: string | null;
140
+ }>;
141
+ evidence: EvidenceEntry[];
142
+ sessions_with_skill: number;
143
+ }
144
+
145
+ // -- Orchestrate run report types --------------------------------------------
146
+
147
+ export interface OrchestrateRunSkillAction {
148
+ skill: string;
149
+ action: "evolve" | "watch" | "skip";
150
+ reason: string;
151
+ deployed?: boolean;
152
+ rolledBack?: boolean;
153
+ alert?: string | null;
154
+ elapsed_ms?: number;
155
+ llm_calls?: number;
156
+ }
157
+
158
+ export interface OrchestrateRunReport {
159
+ run_id: string;
160
+ timestamp: string;
161
+ elapsed_ms: number;
162
+ dry_run: boolean;
163
+ approval_mode: "auto" | "review";
164
+ total_skills: number;
165
+ evaluated: number;
166
+ evolved: number;
167
+ deployed: number;
168
+ watched: number;
169
+ skipped: number;
170
+ skill_actions: OrchestrateRunSkillAction[];
171
+ }
172
+
173
+ export interface OrchestrateRunsResponse {
174
+ runs: OrchestrateRunReport[];
175
+ }
176
+
177
+ // -- Doctor / health check types ----------------------------------------------
178
+ export type { DoctorResult, HealthCheck, HealthStatus } from "./types.js";
179
+
180
+ export interface SkillReportResponse extends SkillReportPayload {
181
+ evolution: EvolutionEntry[];
182
+ pending_proposals: PendingProposal[];
183
+ token_usage: {
184
+ total_input_tokens: number;
185
+ total_output_tokens: number;
186
+ };
187
+ canonical_invocations: CanonicalInvocation[];
188
+ duration_stats: {
189
+ avg_duration_ms: number;
190
+ total_duration_ms: number;
191
+ execution_count: number;
192
+ total_errors: number;
193
+ };
194
+ selftune_stats: {
195
+ total_llm_calls: number;
196
+ total_elapsed_ms: number;
197
+ avg_elapsed_ms: number;
198
+ run_count: number;
199
+ };
200
+ prompt_samples: PromptSample[];
201
+ session_metadata: SessionMeta[];
202
+ }