@varveai/adit-cli 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 (146) hide show
  1. package/LICENSE +21 -0
  2. package/dist/commands/cloud.d.ts +51 -0
  3. package/dist/commands/cloud.d.ts.map +1 -0
  4. package/dist/commands/cloud.js +430 -0
  5. package/dist/commands/cloud.js.map +1 -0
  6. package/dist/commands/config.d.ts +8 -0
  7. package/dist/commands/config.d.ts.map +1 -0
  8. package/dist/commands/config.js +30 -0
  9. package/dist/commands/config.js.map +1 -0
  10. package/dist/commands/db.d.ts +17 -0
  11. package/dist/commands/db.d.ts.map +1 -0
  12. package/dist/commands/db.js +48 -0
  13. package/dist/commands/db.js.map +1 -0
  14. package/dist/commands/diff.d.ts +30 -0
  15. package/dist/commands/diff.d.ts.map +1 -0
  16. package/dist/commands/diff.js +265 -0
  17. package/dist/commands/diff.js.map +1 -0
  18. package/dist/commands/doctor.d.ts +15 -0
  19. package/dist/commands/doctor.d.ts.map +1 -0
  20. package/dist/commands/doctor.js +265 -0
  21. package/dist/commands/doctor.js.map +1 -0
  22. package/dist/commands/export.d.ts +24 -0
  23. package/dist/commands/export.d.ts.map +1 -0
  24. package/dist/commands/export.js +219 -0
  25. package/dist/commands/export.js.map +1 -0
  26. package/dist/commands/init.d.ts +12 -0
  27. package/dist/commands/init.d.ts.map +1 -0
  28. package/dist/commands/init.js +137 -0
  29. package/dist/commands/init.js.map +1 -0
  30. package/dist/commands/list.d.ts +20 -0
  31. package/dist/commands/list.d.ts.map +1 -0
  32. package/dist/commands/list.js +110 -0
  33. package/dist/commands/list.js.map +1 -0
  34. package/dist/commands/perf.d.ts +19 -0
  35. package/dist/commands/perf.d.ts.map +1 -0
  36. package/dist/commands/perf.js +102 -0
  37. package/dist/commands/perf.js.map +1 -0
  38. package/dist/commands/plugin.d.ts +28 -0
  39. package/dist/commands/plugin.d.ts.map +1 -0
  40. package/dist/commands/plugin.js +516 -0
  41. package/dist/commands/plugin.js.map +1 -0
  42. package/dist/commands/project-link.d.ts +16 -0
  43. package/dist/commands/project-link.d.ts.map +1 -0
  44. package/dist/commands/project-link.js +143 -0
  45. package/dist/commands/project-link.js.map +1 -0
  46. package/dist/commands/resume.d.ts +28 -0
  47. package/dist/commands/resume.d.ts.map +1 -0
  48. package/dist/commands/resume.js +229 -0
  49. package/dist/commands/resume.js.map +1 -0
  50. package/dist/commands/revert.d.ts +30 -0
  51. package/dist/commands/revert.d.ts.map +1 -0
  52. package/dist/commands/revert.js +271 -0
  53. package/dist/commands/revert.js.map +1 -0
  54. package/dist/commands/search.d.ts +16 -0
  55. package/dist/commands/search.d.ts.map +1 -0
  56. package/dist/commands/search.js +72 -0
  57. package/dist/commands/search.js.map +1 -0
  58. package/dist/commands/self-update.d.ts +12 -0
  59. package/dist/commands/self-update.d.ts.map +1 -0
  60. package/dist/commands/self-update.js +161 -0
  61. package/dist/commands/self-update.js.map +1 -0
  62. package/dist/commands/show.d.ts +5 -0
  63. package/dist/commands/show.d.ts.map +1 -0
  64. package/dist/commands/show.js +86 -0
  65. package/dist/commands/show.js.map +1 -0
  66. package/dist/commands/status.d.ts +11 -0
  67. package/dist/commands/status.d.ts.map +1 -0
  68. package/dist/commands/status.js +237 -0
  69. package/dist/commands/status.js.map +1 -0
  70. package/dist/commands/task.d.ts +18 -0
  71. package/dist/commands/task.d.ts.map +1 -0
  72. package/dist/commands/task.js +131 -0
  73. package/dist/commands/task.js.map +1 -0
  74. package/dist/commands/transcript.d.ts +40 -0
  75. package/dist/commands/transcript.d.ts.map +1 -0
  76. package/dist/commands/transcript.js +275 -0
  77. package/dist/commands/transcript.js.map +1 -0
  78. package/dist/index.d.ts +9 -0
  79. package/dist/index.d.ts.map +1 -0
  80. package/dist/index.js +385 -0
  81. package/dist/index.js.map +1 -0
  82. package/dist/tui/App.d.ts +8 -0
  83. package/dist/tui/App.d.ts.map +1 -0
  84. package/dist/tui/App.js +132 -0
  85. package/dist/tui/App.js.map +1 -0
  86. package/dist/tui/components/DiffView.d.ts +11 -0
  87. package/dist/tui/components/DiffView.d.ts.map +1 -0
  88. package/dist/tui/components/DiffView.js +29 -0
  89. package/dist/tui/components/DiffView.js.map +1 -0
  90. package/dist/tui/components/EventDetail.d.ts +11 -0
  91. package/dist/tui/components/EventDetail.d.ts.map +1 -0
  92. package/dist/tui/components/EventDetail.js +36 -0
  93. package/dist/tui/components/EventDetail.js.map +1 -0
  94. package/dist/tui/components/EventList.d.ts +15 -0
  95. package/dist/tui/components/EventList.d.ts.map +1 -0
  96. package/dist/tui/components/EventList.js +77 -0
  97. package/dist/tui/components/EventList.js.map +1 -0
  98. package/dist/tui/components/FilterBar.d.ts +12 -0
  99. package/dist/tui/components/FilterBar.d.ts.map +1 -0
  100. package/dist/tui/components/FilterBar.js +20 -0
  101. package/dist/tui/components/FilterBar.js.map +1 -0
  102. package/dist/tui/components/StatusBar.d.ts +16 -0
  103. package/dist/tui/components/StatusBar.d.ts.map +1 -0
  104. package/dist/tui/components/StatusBar.js +13 -0
  105. package/dist/tui/components/StatusBar.js.map +1 -0
  106. package/dist/tui/hooks/useKeyboard.d.ts +22 -0
  107. package/dist/tui/hooks/useKeyboard.d.ts.map +1 -0
  108. package/dist/tui/hooks/useKeyboard.js +64 -0
  109. package/dist/tui/hooks/useKeyboard.js.map +1 -0
  110. package/dist/tui/hooks/useTimeline.d.ts +31 -0
  111. package/dist/tui/hooks/useTimeline.d.ts.map +1 -0
  112. package/dist/tui/hooks/useTimeline.js +136 -0
  113. package/dist/tui/hooks/useTimeline.js.map +1 -0
  114. package/dist/tui/index.d.ts +5 -0
  115. package/dist/tui/index.d.ts.map +1 -0
  116. package/dist/tui/index.js +10 -0
  117. package/dist/tui/index.js.map +1 -0
  118. package/dist/tui/screens/DiffScreen.d.ts +12 -0
  119. package/dist/tui/screens/DiffScreen.d.ts.map +1 -0
  120. package/dist/tui/screens/DiffScreen.js +25 -0
  121. package/dist/tui/screens/DiffScreen.js.map +1 -0
  122. package/dist/tui/screens/EnvScreen.d.ts +11 -0
  123. package/dist/tui/screens/EnvScreen.d.ts.map +1 -0
  124. package/dist/tui/screens/EnvScreen.js +25 -0
  125. package/dist/tui/screens/EnvScreen.js.map +1 -0
  126. package/dist/tui/screens/SearchScreen.d.ts +13 -0
  127. package/dist/tui/screens/SearchScreen.d.ts.map +1 -0
  128. package/dist/tui/screens/SearchScreen.js +56 -0
  129. package/dist/tui/screens/SearchScreen.js.map +1 -0
  130. package/dist/tui/screens/TimelineScreen.d.ts +19 -0
  131. package/dist/tui/screens/TimelineScreen.d.ts.map +1 -0
  132. package/dist/tui/screens/TimelineScreen.js +10 -0
  133. package/dist/tui/screens/TimelineScreen.js.map +1 -0
  134. package/dist/utils/format.d.ts +23 -0
  135. package/dist/utils/format.d.ts.map +1 -0
  136. package/dist/utils/format.js +65 -0
  137. package/dist/utils/format.js.map +1 -0
  138. package/dist/utils/summary.d.ts +26 -0
  139. package/dist/utils/summary.d.ts.map +1 -0
  140. package/dist/utils/summary.js +87 -0
  141. package/dist/utils/summary.js.map +1 -0
  142. package/dist/version.d.ts +8 -0
  143. package/dist/version.d.ts.map +1 -0
  144. package/dist/version.js +11 -0
  145. package/dist/version.js.map +1 -0
  146. package/package.json +48 -0
@@ -0,0 +1,219 @@
1
+ /**
2
+ * `adit export` — Export event data in various formats.
3
+ *
4
+ * Supports single-event bundles, full session exports,
5
+ * JSONL streaming, markdown reports, and gzip compression.
6
+ */
7
+ import { writeFileSync } from "node:fs";
8
+ import { createWriteStream } from "node:fs";
9
+ import { createGzip } from "node:zlib";
10
+ import { pipeline } from "node:stream/promises";
11
+ import { Readable } from "node:stream";
12
+ import { loadConfig, openDatabase, closeDatabase, getEnvSnapshotById, getEventsBySession, getActiveSession, getSessionById, parseLabels, parseDiffStats, } from "@varveai/adit-core";
13
+ import { createTimelineManager } from "@varveai/adit-engine";
14
+ /** `adit export <id>` — export a single event bundle */
15
+ export async function exportCommand(eventId, opts) {
16
+ const config = loadConfig();
17
+ const db = openDatabase(config.dbPath);
18
+ const timeline = createTimelineManager(db, config);
19
+ try {
20
+ const event = await timeline.get(eventId);
21
+ if (!event) {
22
+ console.error(`Event not found: ${eventId}`);
23
+ process.exit(1);
24
+ }
25
+ const diff = await timeline.getDiff(eventId);
26
+ const envSnapshot = event.envSnapshotId
27
+ ? getEnvSnapshotById(db, event.envSnapshotId)
28
+ : null;
29
+ const bundle = buildEventBundle(event, diff, envSnapshot);
30
+ const output = JSON.stringify(bundle, null, 2);
31
+ if (opts.output) {
32
+ writeFileSync(opts.output, output);
33
+ console.log(`Exported to ${opts.output}`);
34
+ }
35
+ else {
36
+ console.log(output);
37
+ }
38
+ }
39
+ finally {
40
+ closeDatabase(db);
41
+ }
42
+ }
43
+ /** `adit export session [session-id]` — export entire session */
44
+ export async function exportSessionCommand(sessionId, opts) {
45
+ const config = loadConfig();
46
+ const db = openDatabase(config.dbPath);
47
+ const timeline = createTimelineManager(db, config);
48
+ try {
49
+ let sid = sessionId;
50
+ if (!sid) {
51
+ const session = getActiveSession(db, config.projectId, config.clientId);
52
+ if (!session) {
53
+ console.error("No active session. Provide a session ID.");
54
+ process.exit(1);
55
+ }
56
+ sid = session.id;
57
+ }
58
+ const session = getSessionById(db, sid);
59
+ if (!session) {
60
+ console.error(`Session not found: ${sid}`);
61
+ process.exit(1);
62
+ }
63
+ let events = getEventsBySession(db, sid);
64
+ // Date range filter
65
+ if (opts?.from) {
66
+ const fromDate = new Date(opts.from).toISOString();
67
+ events = events.filter((e) => e.startedAt >= fromDate);
68
+ }
69
+ if (opts?.to) {
70
+ const toDate = new Date(opts.to).toISOString();
71
+ events = events.filter((e) => e.startedAt <= toDate);
72
+ }
73
+ const format = opts?.format ?? "json";
74
+ if (format === "markdown") {
75
+ const md = generateMarkdownReport(session, events, timeline, db, opts);
76
+ await outputResult(md, opts?.output, opts?.gzip);
77
+ }
78
+ else if (format === "jsonl") {
79
+ const lines = [];
80
+ // Header line
81
+ lines.push(JSON.stringify({
82
+ type: "session",
83
+ id: session.id,
84
+ platform: session.platform,
85
+ startedAt: session.startedAt,
86
+ endedAt: session.endedAt,
87
+ status: session.status,
88
+ }));
89
+ for (const event of events) {
90
+ const diff = opts?.includeDiffs ? await timeline.getDiff(event.id) : null;
91
+ const env = opts?.includeEnv && event.envSnapshotId
92
+ ? getEnvSnapshotById(db, event.envSnapshotId)
93
+ : null;
94
+ lines.push(JSON.stringify({
95
+ type: "event",
96
+ ...buildEventBundle(event, diff ?? undefined, env),
97
+ }));
98
+ }
99
+ await outputResult(lines.join("\n") + "\n", opts?.output, opts?.gzip);
100
+ }
101
+ else {
102
+ // JSON
103
+ const bundle = {
104
+ version: "1.0",
105
+ exportedAt: new Date().toISOString(),
106
+ session: {
107
+ id: session.id,
108
+ platform: session.platform,
109
+ startedAt: session.startedAt,
110
+ endedAt: session.endedAt,
111
+ status: session.status,
112
+ },
113
+ events: events.map((e) => buildEventBundle(e, undefined, null)),
114
+ eventCount: events.length,
115
+ };
116
+ await outputResult(JSON.stringify(bundle, null, 2), opts?.output, opts?.gzip);
117
+ }
118
+ if (opts?.output) {
119
+ console.log(`Exported ${events.length} events to ${opts.output}${opts?.gzip ? ".gz" : ""}`);
120
+ }
121
+ }
122
+ finally {
123
+ closeDatabase(db);
124
+ }
125
+ }
126
+ function buildEventBundle(event, diff, envSnapshot) {
127
+ return {
128
+ version: "1.0",
129
+ exportedAt: new Date().toISOString(),
130
+ event: {
131
+ id: event.id,
132
+ sessionId: event.sessionId,
133
+ sequence: event.sequence,
134
+ eventType: event.eventType,
135
+ actor: event.actor,
136
+ startedAt: event.startedAt,
137
+ endedAt: event.endedAt,
138
+ status: event.status,
139
+ gitBranch: event.gitBranch,
140
+ gitHeadSha: event.gitHeadSha,
141
+ checkpointSha: event.checkpointSha,
142
+ labels: parseLabels(event.labelsJson),
143
+ fileStats: parseDiffStats(event.diffStatJson),
144
+ },
145
+ prompt: event.promptText ?? null,
146
+ chainOfThought: event.cotText ?? null,
147
+ response: event.responseText ?? null,
148
+ tool: event.toolName
149
+ ? {
150
+ name: event.toolName,
151
+ input: event.toolInputJson ? JSON.parse(event.toolInputJson) : null,
152
+ output: event.toolOutputJson ? JSON.parse(event.toolOutputJson) : null,
153
+ }
154
+ : null,
155
+ diff: diff ?? null,
156
+ environment: envSnapshot
157
+ ? {
158
+ gitBranch: envSnapshot.gitBranch,
159
+ gitHeadSha: envSnapshot.gitHeadSha,
160
+ nodeVersion: envSnapshot.nodeVersion,
161
+ pythonVersion: envSnapshot.pythonVersion,
162
+ osInfo: envSnapshot.osInfo,
163
+ depLockPath: envSnapshot.depLockPath,
164
+ depLockHash: envSnapshot.depLockHash,
165
+ }
166
+ : null,
167
+ };
168
+ }
169
+ function generateMarkdownReport(session, events, _timeline, _db, _opts) {
170
+ const lines = [];
171
+ lines.push(`# ADIT Session Export`);
172
+ lines.push("");
173
+ lines.push(`- **Session**: ${session.id}`);
174
+ lines.push(`- **Platform**: ${session.platform}`);
175
+ lines.push(`- **Started**: ${session.startedAt}`);
176
+ lines.push(`- **Ended**: ${session.endedAt ?? "(active)"}`);
177
+ lines.push(`- **Status**: ${session.status}`);
178
+ lines.push(`- **Events**: ${events.length}`);
179
+ lines.push("");
180
+ lines.push("## Timeline");
181
+ lines.push("");
182
+ for (const event of events) {
183
+ const time = event.startedAt.substring(5, 19).replace("T", " ");
184
+ const actor = event.actor[0].toUpperCase();
185
+ const checkpoint = event.checkpointSha ? " [checkpoint]" : "";
186
+ lines.push(`### ${time} [${actor}] ${event.eventType}${checkpoint}`);
187
+ lines.push("");
188
+ if (event.promptText) {
189
+ lines.push(`> ${event.promptText.substring(0, 500)}`);
190
+ lines.push("");
191
+ }
192
+ if (event.toolName) {
193
+ lines.push(`**Tool**: ${event.toolName}`);
194
+ lines.push("");
195
+ }
196
+ if (event.responseText) {
197
+ lines.push(`${event.responseText.substring(0, 500)}`);
198
+ lines.push("");
199
+ }
200
+ }
201
+ return lines.join("\n");
202
+ }
203
+ async function outputResult(content, outputPath, gzip) {
204
+ if (!outputPath) {
205
+ console.log(content);
206
+ return;
207
+ }
208
+ if (gzip) {
209
+ const gzipPath = outputPath.endsWith(".gz") ? outputPath : `${outputPath}.gz`;
210
+ const readable = Readable.from([content]);
211
+ const gzipStream = createGzip();
212
+ const writable = createWriteStream(gzipPath);
213
+ await pipeline(readable, gzipStream, writable);
214
+ }
215
+ else {
216
+ writeFileSync(outputPath, content);
217
+ }
218
+ }
219
+ //# sourceMappingURL=export.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export.js","sourceRoot":"","sources":["../../src/commands/export.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * `adit init` — Initialize ADIT in the current project.
3
+ *
4
+ * Creates the .adit/ data directory, initializes the database,
5
+ * and installs hooks for detected (or specified) AI platforms via adapters.
6
+ */
7
+ export declare function initCommand(opts: {
8
+ cwd?: string;
9
+ platform?: string;
10
+ force?: boolean;
11
+ }): Promise<void>;
12
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAcH,wBAAsB,WAAW,CAAC,IAAI,EAAE;IACtC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,GAAG,OAAO,CAAC,IAAI,CAAC,CA+HhB"}
@@ -0,0 +1,137 @@
1
+ /**
2
+ * `adit init` — Initialize ADIT in the current project.
3
+ *
4
+ * Creates the .adit/ data directory, initializes the database,
5
+ * and installs hooks for detected (or specified) AI platforms via adapters.
6
+ */
7
+ import { mkdirSync, readFileSync, writeFileSync, existsSync } from "node:fs";
8
+ import { join } from "node:path";
9
+ import { loadConfig, openDatabase, closeDatabase, findGitRoot } from "@varveai/adit-core";
10
+ import { isGitRepo } from "@varveai/adit-engine";
11
+ import { getAdapter, listAdapters, detectPlatforms, resolveAditHookBinary, } from "@varveai/adit-hooks/adapters";
12
+ export async function initCommand(opts) {
13
+ const cwd = opts.cwd ?? process.cwd();
14
+ console.log();
15
+ console.log(" ADIT — AI Development Intent Tracker");
16
+ console.log(" =====================================");
17
+ console.log();
18
+ // Verify we're in a git repo
19
+ if (!(await isGitRepo(cwd))) {
20
+ console.error(" [x] Not a git repository. Run 'git init' first.");
21
+ process.exit(1);
22
+ }
23
+ const config = loadConfig(cwd);
24
+ const gitRoot = findGitRoot(cwd) ?? cwd;
25
+ // --- Step 1: Clean up if --force ---
26
+ if (opts.force) {
27
+ console.log(" Removing existing hooks (--force)...");
28
+ for (const adapter of listAdapters()) {
29
+ if (adapter.hookMappings.length === 0)
30
+ continue;
31
+ try {
32
+ const result = await adapter.validateInstallation(gitRoot);
33
+ if (result.valid) {
34
+ await adapter.uninstallHooks(gitRoot);
35
+ console.log(` [~] Removed ${adapter.displayName} hooks`);
36
+ }
37
+ }
38
+ catch {
39
+ // best-effort cleanup
40
+ }
41
+ }
42
+ console.log();
43
+ }
44
+ // --- Step 2: Data directory & database ---
45
+ console.log(" Setup");
46
+ console.log(" -----");
47
+ mkdirSync(config.dataDir, { recursive: true });
48
+ console.log(` [+] Data directory: ${config.dataDir}`);
49
+ const db = openDatabase(config.dbPath);
50
+ closeDatabase(db);
51
+ console.log(` [+] Database: ${config.dbPath}`);
52
+ // Add .adit/ to .gitignore if not already there
53
+ const gitignorePath = join(gitRoot, ".gitignore");
54
+ if (existsSync(gitignorePath)) {
55
+ const content = readFileSync(gitignorePath, "utf-8");
56
+ if (!content.includes(".adit/")) {
57
+ writeFileSync(gitignorePath, content.trimEnd() + "\n.adit/\n");
58
+ console.log(" [+] Added .adit/ to .gitignore");
59
+ }
60
+ else {
61
+ console.log(" [+] .gitignore already includes .adit/");
62
+ }
63
+ }
64
+ else {
65
+ writeFileSync(gitignorePath, ".adit/\n");
66
+ console.log(" [+] Created .gitignore with .adit/");
67
+ }
68
+ // --- Step 3: Platform detection & hook installation ---
69
+ console.log();
70
+ console.log(" Platforms");
71
+ console.log(" ---------");
72
+ const aditBinaryPath = resolveAditHookBinary();
73
+ const installed = [];
74
+ const skipped = [];
75
+ if (opts.platform) {
76
+ // Explicit platform specified
77
+ const platform = opts.platform;
78
+ try {
79
+ const adapter = getAdapter(platform);
80
+ await adapter.installHooks(gitRoot, aditBinaryPath);
81
+ installed.push(adapter.displayName);
82
+ console.log(` [+] ${adapter.displayName} — ${adapter.hookMappings.length} hook events installed`);
83
+ }
84
+ catch (err) {
85
+ skipped.push(platform);
86
+ console.log(` [x] ${platform} — install failed: ${err.message}`);
87
+ }
88
+ }
89
+ else {
90
+ // Auto-detect: install hooks for all detected platforms
91
+ const platforms = detectPlatforms(gitRoot);
92
+ if (platforms.length === 0) {
93
+ console.log(" [ ] No AI platforms detected in this project.");
94
+ console.log(" Supported: Claude Code (.claude/), OpenCode (.opencode/)");
95
+ console.log(" Run 'adit plugin install <platform>' to add one manually.");
96
+ }
97
+ else {
98
+ for (const platform of platforms) {
99
+ try {
100
+ const adapter = getAdapter(platform);
101
+ // Skip stub adapters (no hook mappings)
102
+ if (adapter.hookMappings.length === 0) {
103
+ skipped.push(adapter.displayName);
104
+ console.log(` [-] ${adapter.displayName} — detected but not yet supported`);
105
+ continue;
106
+ }
107
+ await adapter.installHooks(gitRoot, aditBinaryPath);
108
+ installed.push(adapter.displayName);
109
+ console.log(` [+] ${adapter.displayName} — ${adapter.hookMappings.length} hook events installed`);
110
+ }
111
+ catch (err) {
112
+ skipped.push(platform);
113
+ console.log(` [x] ${platform} — install failed: ${err.message}`);
114
+ }
115
+ }
116
+ }
117
+ }
118
+ // --- Summary ---
119
+ console.log();
120
+ if (installed.length > 0) {
121
+ console.log(" Done! ADIT is ready.");
122
+ console.log();
123
+ console.log(` Installed for: ${installed.join(", ")}`);
124
+ console.log(" Run 'adit list' to view the timeline after your first prompt.");
125
+ }
126
+ else {
127
+ console.log(" Done! ADIT data directory is ready.");
128
+ console.log();
129
+ console.log(" No platform hooks were installed.");
130
+ console.log(" Run 'adit plugin install <platform>' when you're ready to add one.");
131
+ }
132
+ if (skipped.length > 0) {
133
+ console.log(` Skipped: ${skipped.join(", ")}`);
134
+ }
135
+ console.log();
136
+ }
137
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * `adit list` — Show timeline entries.
3
+ *
4
+ * Displays a compact, token-efficient table of recent events.
5
+ */
6
+ import { type AditEvent } from "@varveai/adit-core";
7
+ export type SortField = "ACTOR" | "TIME";
8
+ export interface ListCommandOptions {
9
+ limit?: number;
10
+ actor?: string;
11
+ type?: string;
12
+ checkpoints?: boolean;
13
+ query?: string;
14
+ expand?: boolean;
15
+ sort?: SortField;
16
+ json?: boolean;
17
+ }
18
+ export declare function listCommand(opts: ListCommandOptions): Promise<void>;
19
+ export declare function sortEvents(events: AditEvent[], field: SortField): AditEvent[];
20
+ //# sourceMappingURL=list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAA2C,KAAK,SAAS,EAA8B,MAAM,oBAAoB,CAAC;AAMzH,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;AAEzC,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAmEzE;AAoCD,wBAAgB,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,SAAS,GAAG,SAAS,EAAE,CAY7E"}
@@ -0,0 +1,110 @@
1
+ /**
2
+ * `adit list` — Show timeline entries.
3
+ *
4
+ * Displays a compact, token-efficient table of recent events.
5
+ */
6
+ import { loadConfig, openDatabase, closeDatabase } from "@varveai/adit-core";
7
+ import { getEventSummary } from "../utils/summary.js";
8
+ import { padRight, formatDateTime } from "../utils/format.js";
9
+ import { createTimelineManager } from "@varveai/adit-engine";
10
+ import pc from "picocolors";
11
+ export async function listCommand(opts) {
12
+ const config = loadConfig();
13
+ const db = openDatabase(config.dbPath);
14
+ const timeline = createTimelineManager(db, config);
15
+ try {
16
+ let events;
17
+ if (opts.query) {
18
+ events = await timeline.search(opts.query, opts.limit ?? 20);
19
+ }
20
+ else {
21
+ events = await timeline.list({
22
+ actor: opts.actor,
23
+ eventType: opts.type,
24
+ hasCheckpoint: opts.checkpoints,
25
+ limit: opts.limit ?? 50,
26
+ });
27
+ }
28
+ if (events.length === 0) {
29
+ console.log("No events found.");
30
+ return;
31
+ }
32
+ // Sort events — default is TIME (descending, most recent first)
33
+ const sortField = opts.sort ?? "TIME";
34
+ events = sortEvents(events, sortField);
35
+ // JSON output
36
+ if (opts.json) {
37
+ console.log(JSON.stringify(events, null, 2));
38
+ return;
39
+ }
40
+ // Print header
41
+ console.log(pc.bold(padRight("ID", 12) +
42
+ padRight("ACTOR", 6) +
43
+ padRight("TYPE", 20) +
44
+ padRight("TIME", 20) +
45
+ "SUMMARY"));
46
+ console.log(pc.dim("-".repeat(85)));
47
+ for (const event of events) {
48
+ const actor = actorSymbol(event.actor);
49
+ const time = formatDateTime(event.startedAt);
50
+ const summary = getSummary(event, opts.expand);
51
+ const idShort = event.id.substring(0, 10);
52
+ const checkpoint = event.checkpointSha ? " " + pc.green("*") : "";
53
+ console.log(pc.dim(padRight(idShort, 12)) +
54
+ colorActor(padRight(actor, 6), event.actor) +
55
+ padRight(event.eventType, 20) +
56
+ pc.dim(padRight(time, 20)) +
57
+ summary +
58
+ checkpoint);
59
+ }
60
+ console.log(pc.dim(`\n${events.length} events shown (sorted by ${sortField}).`));
61
+ }
62
+ finally {
63
+ closeDatabase(db);
64
+ }
65
+ }
66
+ function actorSymbol(actor) {
67
+ switch (actor) {
68
+ case "assistant":
69
+ return "[A]";
70
+ case "user":
71
+ return "[U]";
72
+ case "tool":
73
+ return "[T]";
74
+ case "system":
75
+ return "[S]";
76
+ default:
77
+ return "[?]";
78
+ }
79
+ }
80
+ function colorActor(text, actor) {
81
+ switch (actor) {
82
+ case "assistant":
83
+ return pc.green(text);
84
+ case "user":
85
+ return pc.cyan(text);
86
+ case "tool":
87
+ return pc.yellow(text);
88
+ case "system":
89
+ return pc.magenta(text);
90
+ default:
91
+ return text;
92
+ }
93
+ }
94
+ function getSummary(event, expand) {
95
+ return getEventSummary(event, expand ? 200 : 60);
96
+ }
97
+ export function sortEvents(events, field) {
98
+ const sorted = [...events];
99
+ switch (field) {
100
+ case "ACTOR":
101
+ sorted.sort((a, b) => a.actor.localeCompare(b.actor));
102
+ break;
103
+ case "TIME":
104
+ default:
105
+ sorted.sort((a, b) => b.startedAt.localeCompare(a.startedAt));
106
+ break;
107
+ }
108
+ return sorted;
109
+ }
110
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * `adit perf` — Performance stats for time-sensitive operations.
3
+ *
4
+ * Reads daily JSONL perf logs from .adit/perf-logs/ and generates
5
+ * an aggregated stats report showing call counts, timing distributions,
6
+ * and failure rates.
7
+ */
8
+ /** Show performance stats report */
9
+ export declare function perfCommand(opts?: {
10
+ from?: string;
11
+ to?: string;
12
+ category?: string;
13
+ json?: boolean;
14
+ }): void;
15
+ /** Clear all performance logs */
16
+ export declare function perfClearCommand(opts?: {
17
+ json?: boolean;
18
+ }): void;
19
+ //# sourceMappingURL=perf.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"perf.d.ts","sourceRoot":"","sources":["../../src/commands/perf.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAUH,oCAAoC;AACpC,wBAAgB,WAAW,CAAC,IAAI,CAAC,EAAE;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,GAAG,IAAI,CAiBP;AAED,iCAAiC;AACjC,wBAAgB,gBAAgB,CAAC,IAAI,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,CAchE"}