agentfit 0.1.2 → 0.1.5
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.
- package/.github/workflows/release.yml +4 -0
- package/README.md +0 -2
- package/app/(dashboard)/ai-insights/page.tsx +271 -0
- package/app/(dashboard)/models/page.tsx +21 -0
- package/app/(dashboard)/page.tsx +2 -0
- package/app/(dashboard)/sessions/[id]/page.tsx +16 -2
- package/app/(dashboard)/settings/page.tsx +168 -0
- package/app/api/analyze/aggregate/route.ts +88 -0
- package/app/api/analyze/estimate/route.ts +62 -0
- package/app/api/analyze/route.ts +142 -0
- package/app/api/cc-versions/route.ts +84 -0
- package/app/api/config/route.ts +35 -0
- package/bin/agentfit.mjs +22 -13
- package/components/analyze-confirm-dialog.tsx +81 -0
- package/components/app-sidebar.tsx +14 -0
- package/components/data-provider.tsx +4 -2
- package/components/model-usage-chart.tsx +216 -0
- package/components/overview-cards.tsx +1 -1
- package/components/session-ai-analysis.tsx +318 -0
- package/components/sessions-table.tsx +169 -15
- package/components/version-lag-chart.tsx +284 -0
- package/electron/main.mjs +81 -59
- package/generated/prisma/browser.ts +5 -0
- package/generated/prisma/client.ts +5 -0
- package/generated/prisma/internal/class.ts +14 -4
- package/generated/prisma/internal/prismaNamespace.ts +95 -2
- package/generated/prisma/internal/prismaNamespaceBrowser.ts +19 -1
- package/generated/prisma/models/Session.ts +57 -1
- package/generated/prisma/models/SessionAnalysis.ts +1321 -0
- package/generated/prisma/models.ts +1 -0
- package/lib/config.ts +45 -0
- package/lib/db.ts +1 -1
- package/lib/openai.ts +253 -0
- package/lib/parse-codex.ts +2 -0
- package/lib/parse-logs.ts +21 -7
- package/lib/queries.ts +5 -1
- package/lib/sync.ts +17 -5
- package/package.json +2 -1
- package/prisma/migrations/20260404151230_add_session_analysis/migration.sql +18 -0
- package/prisma/migrations/20260405230736_add_cli_version/migration.sql +41 -0
- package/prisma/migrations/20260406205546_add_model_counts/migration.sql +42 -0
- package/prisma/schema.prisma +16 -0
- package/prisma/schema.sql +20 -0
- /package/prisma/migrations/{20260401144555_add_system_prompt_edits → 20260403214556_init}/migration.sql +0 -0
package/prisma/schema.prisma
CHANGED
|
@@ -34,6 +34,8 @@ model Session {
|
|
|
34
34
|
userInterruptions Int @default(0)
|
|
35
35
|
permissionModesJson String @default("{}") // JSON: {default:N, acceptEdits:N, bypassPermissions:N, plan:N}
|
|
36
36
|
systemPromptEdits Int @default(0) // Edits/writes to CLAUDE.md, AGENTS.md, agent.md
|
|
37
|
+
cliVersion String @default("unknown") // Claude Code CLI version from JSONL logs
|
|
38
|
+
modelCountsJson String @default("{}") // JSON: {model_name: message_count}
|
|
37
39
|
createdAt DateTime @default(now())
|
|
38
40
|
|
|
39
41
|
@@index([project])
|
|
@@ -73,3 +75,17 @@ model Report {
|
|
|
73
75
|
|
|
74
76
|
@@index([generatedAt])
|
|
75
77
|
}
|
|
78
|
+
|
|
79
|
+
model SessionAnalysis {
|
|
80
|
+
id String @id @default(cuid())
|
|
81
|
+
sessionId String @unique
|
|
82
|
+
model String
|
|
83
|
+
classifications String // JSON array of per-message classifications
|
|
84
|
+
totalMessages Int
|
|
85
|
+
inputTokens Int
|
|
86
|
+
outputTokens Int
|
|
87
|
+
costUSD Float
|
|
88
|
+
analyzedAt DateTime @default(now())
|
|
89
|
+
|
|
90
|
+
@@index([sessionId])
|
|
91
|
+
}
|
package/prisma/schema.sql
CHANGED
|
@@ -26,6 +26,8 @@ CREATE TABLE IF NOT EXISTS "Session" (
|
|
|
26
26
|
"userInterruptions" INTEGER NOT NULL DEFAULT 0,
|
|
27
27
|
"permissionModesJson" TEXT NOT NULL DEFAULT '{}',
|
|
28
28
|
"systemPromptEdits" INTEGER NOT NULL DEFAULT 0,
|
|
29
|
+
"cliVersion" TEXT NOT NULL DEFAULT 'unknown',
|
|
30
|
+
"modelCountsJson" TEXT NOT NULL DEFAULT '{}',
|
|
29
31
|
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
30
32
|
);
|
|
31
33
|
|
|
@@ -61,6 +63,19 @@ CREATE TABLE IF NOT EXISTS "Report" (
|
|
|
61
63
|
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
62
64
|
);
|
|
63
65
|
|
|
66
|
+
-- CreateTable
|
|
67
|
+
CREATE TABLE IF NOT EXISTS "SessionAnalysis" (
|
|
68
|
+
"id" TEXT NOT NULL PRIMARY KEY,
|
|
69
|
+
"sessionId" TEXT NOT NULL,
|
|
70
|
+
"model" TEXT NOT NULL,
|
|
71
|
+
"classifications" TEXT NOT NULL,
|
|
72
|
+
"totalMessages" INTEGER NOT NULL,
|
|
73
|
+
"inputTokens" INTEGER NOT NULL,
|
|
74
|
+
"outputTokens" INTEGER NOT NULL,
|
|
75
|
+
"costUSD" REAL NOT NULL,
|
|
76
|
+
"analyzedAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
77
|
+
);
|
|
78
|
+
|
|
64
79
|
-- CreateIndex
|
|
65
80
|
CREATE UNIQUE INDEX IF NOT EXISTS "Session_sessionId_key" ON "Session"("sessionId");
|
|
66
81
|
|
|
@@ -79,3 +94,8 @@ CREATE UNIQUE INDEX IF NOT EXISTS "Image_sessionId_messageId_filename_key" ON "I
|
|
|
79
94
|
-- CreateIndex
|
|
80
95
|
CREATE INDEX IF NOT EXISTS "Report_generatedAt_idx" ON "Report"("generatedAt");
|
|
81
96
|
|
|
97
|
+
-- CreateIndex
|
|
98
|
+
CREATE UNIQUE INDEX IF NOT EXISTS "SessionAnalysis_sessionId_key" ON "SessionAnalysis"("sessionId");
|
|
99
|
+
|
|
100
|
+
-- CreateIndex
|
|
101
|
+
CREATE INDEX IF NOT EXISTS "SessionAnalysis_sessionId_idx" ON "SessionAnalysis"("sessionId");
|
|
File without changes
|