selftune 0.2.21 → 0.2.23

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 (108) hide show
  1. package/README.md +15 -8
  2. package/apps/local-dashboard/dist/assets/index-CwOtTrUS.css +1 -0
  3. package/apps/local-dashboard/dist/assets/index-f1HQpbeH.js +59 -0
  4. package/apps/local-dashboard/dist/assets/vendor-ui-jVSaIZey.js +12 -0
  5. package/apps/local-dashboard/dist/index.html +3 -3
  6. package/cli/selftune/adapters/cline/hook.ts +167 -0
  7. package/cli/selftune/adapters/cline/install.ts +197 -0
  8. package/cli/selftune/adapters/codex/hook.ts +296 -0
  9. package/cli/selftune/adapters/codex/install.ts +289 -0
  10. package/cli/selftune/adapters/opencode/hook.ts +222 -0
  11. package/cli/selftune/adapters/opencode/install.ts +543 -0
  12. package/cli/selftune/adapters/pi/hook.ts +273 -0
  13. package/cli/selftune/adapters/pi/install.ts +207 -0
  14. package/cli/selftune/constants.ts +10 -1
  15. package/cli/selftune/dashboard-contract.ts +14 -0
  16. package/cli/selftune/evolution/engines/judge-engine.ts +96 -0
  17. package/cli/selftune/evolution/engines/replay-engine.ts +158 -0
  18. package/cli/selftune/evolution/evidence.ts +2 -6
  19. package/cli/selftune/evolution/evolve-body.ts +73 -20
  20. package/cli/selftune/evolution/validate-body.ts +78 -42
  21. package/cli/selftune/evolution/validate-routing.ts +45 -104
  22. package/cli/selftune/hooks/auto-activate.ts +43 -37
  23. package/cli/selftune/hooks/skill-eval.ts +2 -1
  24. package/cli/selftune/hooks-shared/git-metadata.ts +149 -0
  25. package/cli/selftune/hooks-shared/hook-output.ts +105 -0
  26. package/cli/selftune/hooks-shared/normalize.ts +196 -0
  27. package/cli/selftune/hooks-shared/session-state.ts +76 -0
  28. package/cli/selftune/hooks-shared/skill-paths.ts +50 -0
  29. package/cli/selftune/hooks-shared/stdin-dispatch.ts +59 -0
  30. package/cli/selftune/hooks-shared/types.ts +91 -0
  31. package/cli/selftune/index.ts +76 -6
  32. package/cli/selftune/ingestors/pi-ingest.ts +726 -0
  33. package/cli/selftune/init.ts +11 -1
  34. package/cli/selftune/localdb/direct-write.ts +85 -0
  35. package/cli/selftune/localdb/materialize.ts +6 -7
  36. package/cli/selftune/localdb/queries.ts +126 -0
  37. package/cli/selftune/localdb/schema.ts +38 -0
  38. package/cli/selftune/observability.ts +8 -1
  39. package/cli/selftune/orchestrate.ts +43 -0
  40. package/cli/selftune/registry/client.ts +74 -0
  41. package/cli/selftune/registry/history.ts +54 -0
  42. package/cli/selftune/registry/index.ts +90 -0
  43. package/cli/selftune/registry/install.ts +141 -0
  44. package/cli/selftune/registry/list.ts +44 -0
  45. package/cli/selftune/registry/push.ts +171 -0
  46. package/cli/selftune/registry/rollback.ts +49 -0
  47. package/cli/selftune/registry/status.ts +62 -0
  48. package/cli/selftune/registry/sync.ts +125 -0
  49. package/cli/selftune/repair/skill-usage.ts +4 -1
  50. package/cli/selftune/status.ts +31 -0
  51. package/cli/selftune/sync.ts +127 -23
  52. package/cli/selftune/types.ts +2 -1
  53. package/cli/selftune/utils/jsonl.ts +1 -30
  54. package/cli/selftune/utils/llm-call.ts +99 -34
  55. package/cli/selftune/utils/skill-discovery.ts +22 -0
  56. package/node_modules/@selftune/telemetry-contract/fixtures/evidence-only-push.ts +1 -1
  57. package/node_modules/@selftune/telemetry-contract/fixtures/golden.test.ts +0 -1
  58. package/node_modules/@selftune/telemetry-contract/fixtures/partial-push-unresolved-parents.ts +1 -1
  59. package/node_modules/@selftune/telemetry-contract/package.json +1 -1
  60. package/node_modules/@selftune/telemetry-contract/src/index.ts +1 -0
  61. package/node_modules/@selftune/telemetry-contract/src/schemas.ts +22 -4
  62. package/node_modules/@selftune/telemetry-contract/src/types.ts +1 -12
  63. package/node_modules/@selftune/telemetry-contract/tests/compatibility.test.ts +0 -1
  64. package/package.json +1 -1
  65. package/packages/telemetry-contract/fixtures/evidence-only-push.ts +1 -1
  66. package/packages/telemetry-contract/fixtures/golden.test.ts +0 -1
  67. package/packages/telemetry-contract/fixtures/partial-push-unresolved-parents.ts +1 -1
  68. package/packages/telemetry-contract/package.json +1 -1
  69. package/packages/telemetry-contract/src/index.ts +1 -0
  70. package/packages/telemetry-contract/src/schemas.ts +22 -4
  71. package/packages/telemetry-contract/src/types.ts +1 -12
  72. package/packages/telemetry-contract/tests/compatibility.test.ts +0 -1
  73. package/packages/ui/AGENTS.md +16 -0
  74. package/packages/ui/README.md +1 -1
  75. package/packages/ui/package.json +1 -1
  76. package/packages/ui/src/components/ActivityTimeline.tsx +152 -168
  77. package/packages/ui/src/components/AnalyticsCharts.tsx +344 -0
  78. package/packages/ui/src/components/EvidenceViewer.tsx +153 -443
  79. package/packages/ui/src/components/EvolutionTimeline.tsx +34 -87
  80. package/packages/ui/src/components/InfoTip.tsx +1 -2
  81. package/packages/ui/src/components/InvocationsPanel.tsx +413 -0
  82. package/packages/ui/src/components/JobHistoryTimeline.tsx +156 -0
  83. package/packages/ui/src/components/OrchestrateRunsPanel.tsx +18 -36
  84. package/packages/ui/src/components/OverviewPanels.tsx +652 -0
  85. package/packages/ui/src/components/PipelineStatusBar.tsx +65 -0
  86. package/packages/ui/src/components/SkillReportGuide.tsx +215 -0
  87. package/packages/ui/src/components/SkillReportPanels.tsx +919 -0
  88. package/packages/ui/src/components/SkillsLibrary.tsx +437 -0
  89. package/packages/ui/src/components/index.ts +56 -1
  90. package/packages/ui/src/components/section-cards.tsx +18 -35
  91. package/packages/ui/src/components/skill-health-grid.tsx +47 -37
  92. package/packages/ui/src/lib/constants.tsx +0 -1
  93. package/packages/ui/src/primitives/card.tsx +1 -1
  94. package/packages/ui/src/primitives/checkbox.tsx +1 -1
  95. package/packages/ui/src/primitives/dropdown-menu.tsx +2 -2
  96. package/packages/ui/src/primitives/select.tsx +2 -2
  97. package/packages/ui/src/types.ts +172 -4
  98. package/skill/SKILL.md +26 -2
  99. package/skill/Workflows/Ingest.md +60 -2
  100. package/skill/Workflows/Initialize.md +54 -9
  101. package/skill/Workflows/PlatformHooks.md +109 -0
  102. package/skill/Workflows/Registry.md +99 -0
  103. package/skill/Workflows/Sync.md +3 -1
  104. package/apps/local-dashboard/dist/assets/index-D8O-RG1I.js +0 -60
  105. package/apps/local-dashboard/dist/assets/index-_EcLywDg.css +0 -1
  106. package/apps/local-dashboard/dist/assets/vendor-ui-CGEmUayx.js +0 -12
  107. package/cli/selftune/utils/html.ts +0 -27
  108. package/packages/ui/src/components/RecentActivityFeed.tsx +0 -117
@@ -1,117 +0,0 @@
1
- import { ZapIcon, CircleDotIcon } from "lucide-react";
2
-
3
- import { timeAgo } from "../lib/format";
4
- import { Badge } from "../primitives/badge";
5
- import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "../primitives/card";
6
-
7
- export interface RecentActivityItem {
8
- timestamp: string;
9
- session_id: string;
10
- skill_name: string;
11
- query: string;
12
- triggered: boolean;
13
- is_live: boolean;
14
- }
15
-
16
- export function RecentActivityFeed({
17
- items,
18
- embedded = false,
19
- }: {
20
- items: RecentActivityItem[];
21
- embedded?: boolean;
22
- }) {
23
- const content =
24
- items.length === 0 ? (
25
- <p className="py-6 text-center text-sm text-muted-foreground">No recent skill invocations</p>
26
- ) : (
27
- <div className="space-y-2.5">
28
- {items.slice(0, 20).map((item, i) => (
29
- <div
30
- key={`${item.session_id}-${item.skill_name}-${i}`}
31
- className="flex gap-3 rounded-md p-1.5"
32
- >
33
- <div
34
- className={`mt-0.5 w-10 h-10 shrink-0 rounded-xl bg-input flex items-center justify-center`}
35
- >
36
- <div
37
- className={`size-2 rounded-full ${
38
- item.triggered
39
- ? "bg-primary shadow-[0_0_8px_rgba(79,242,255,0.6)]"
40
- : "bg-muted-foreground/40"
41
- }`}
42
- />
43
- </div>
44
- <div className="flex-1 min-w-0 space-y-0.5">
45
- <div className="flex flex-wrap items-center gap-2">
46
- <span className="truncate font-bold text-sm">{item.skill_name}</span>
47
- {item.is_live && (
48
- <Badge variant="outline" className="h-4 gap-1 px-1 text-[10px]">
49
- <CircleDotIcon className="size-2.5 text-primary" />
50
- live
51
- </Badge>
52
- )}
53
- {item.triggered ? (
54
- <Badge
55
- variant="default"
56
- className="h-4 px-1 text-[10px] font-bold uppercase tracking-tighter bg-primary/10 text-primary"
57
- >
58
- triggered
59
- </Badge>
60
- ) : (
61
- <Badge
62
- variant="secondary"
63
- className="h-4 px-1 text-[10px] font-bold uppercase tracking-tighter"
64
- >
65
- checked
66
- </Badge>
67
- )}
68
- <span className="ml-auto shrink-0 font-mono text-[10px] text-slate-500">
69
- {timeAgo(item.timestamp)}
70
- </span>
71
- </div>
72
- {item.query && (
73
- <p className="line-clamp-1 text-sm text-card-foreground leading-relaxed">
74
- {item.query}
75
- </p>
76
- )}
77
- </div>
78
- </div>
79
- ))}
80
- </div>
81
- );
82
-
83
- if (embedded) {
84
- return <div>{content}</div>;
85
- }
86
-
87
- if (items.length === 0) {
88
- return (
89
- <Card>
90
- <CardHeader>
91
- <CardTitle className="flex items-center gap-2 text-sm">
92
- <ZapIcon className="size-4" />
93
- Recent Activity
94
- </CardTitle>
95
- </CardHeader>
96
- <CardContent>
97
- <p className="text-sm text-muted-foreground text-center py-8">
98
- No recent skill invocations
99
- </p>
100
- </CardContent>
101
- </Card>
102
- );
103
- }
104
-
105
- return (
106
- <Card>
107
- <CardHeader>
108
- <CardTitle className="flex items-center gap-2 text-sm">
109
- <ZapIcon className="size-4" />
110
- Recent Activity
111
- </CardTitle>
112
- <CardDescription>Latest skill invocations across sessions</CardDescription>
113
- </CardHeader>
114
- <CardContent>{content}</CardContent>
115
- </Card>
116
- );
117
- }