@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,86 @@
1
+ /**
2
+ * `adit show <id>` — Show full event details.
3
+ */
4
+ import { loadConfig, openDatabase, closeDatabase, parseLabels, parseDiffStats, parseError, } from "@varveai/adit-core";
5
+ import { createTimelineManager } from "@varveai/adit-engine";
6
+ export async function showCommand(eventId) {
7
+ const config = loadConfig();
8
+ const db = openDatabase(config.dbPath);
9
+ const timeline = createTimelineManager(db, config);
10
+ try {
11
+ const event = await timeline.get(eventId);
12
+ if (!event) {
13
+ // Try prefix match
14
+ const { queryEvents } = await import("@varveai/adit-core");
15
+ const all = queryEvents(db, { limit: 500 });
16
+ const match = all.find((e) => e.id.startsWith(eventId));
17
+ if (!match) {
18
+ console.error(`Event not found: ${eventId}`);
19
+ process.exit(1);
20
+ }
21
+ return showCommand(match.id);
22
+ }
23
+ console.log(`Event: ${event.id}`);
24
+ console.log(` Type: ${event.eventType}`);
25
+ console.log(` Actor: ${event.actor}`);
26
+ console.log(` Sequence: ${event.sequence}`);
27
+ console.log(` Session: ${event.sessionId}`);
28
+ console.log(` Started: ${event.startedAt}`);
29
+ console.log(` Ended: ${event.endedAt ?? "-"}`);
30
+ console.log(` Status: ${event.status}`);
31
+ console.log(` Branch: ${event.gitBranch ?? "-"}`);
32
+ console.log(` HEAD: ${event.gitHeadSha ?? "-"}`);
33
+ if (event.checkpointSha) {
34
+ console.log(` Checkpoint: ${event.checkpointSha}`);
35
+ console.log(` Ref: ${event.checkpointRef}`);
36
+ }
37
+ const labels = parseLabels(event.labelsJson);
38
+ if (labels.length > 0) {
39
+ console.log(` Labels: ${labels.join(", ")}`);
40
+ }
41
+ const error = parseError(event.errorJson);
42
+ if (error) {
43
+ console.log(` Error: [${error.category}] ${error.message}`);
44
+ }
45
+ if (event.promptText) {
46
+ console.log(`\n--- Prompt ---`);
47
+ console.log(event.promptText);
48
+ }
49
+ if (event.cotText) {
50
+ console.log(`\n--- Chain of Thought ---`);
51
+ console.log(event.cotText);
52
+ }
53
+ if (event.responseText) {
54
+ console.log(`\n--- Response ---`);
55
+ console.log(event.responseText);
56
+ }
57
+ if (event.toolName) {
58
+ console.log(`\n--- Tool: ${event.toolName} ---`);
59
+ if (event.toolInputJson) {
60
+ console.log("Input:", event.toolInputJson);
61
+ }
62
+ if (event.toolOutputJson) {
63
+ console.log("Output:", event.toolOutputJson);
64
+ }
65
+ }
66
+ const stats = parseDiffStats(event.diffStatJson);
67
+ if (stats.length > 0) {
68
+ console.log(`\n--- Files Changed (${stats.length}) ---`);
69
+ for (const f of stats) {
70
+ const adds = f.additions !== undefined ? `+${f.additions}` : "";
71
+ const dels = f.deletions !== undefined ? `-${f.deletions}` : "";
72
+ console.log(` ${f.status} ${f.path} ${adds} ${dels}`);
73
+ }
74
+ }
75
+ // Show diff if available
76
+ const diff = await timeline.getDiff(event.id, 50);
77
+ if (diff) {
78
+ console.log(`\n--- Diff (first 50 lines) ---`);
79
+ console.log(diff);
80
+ }
81
+ }
82
+ finally {
83
+ closeDatabase(db);
84
+ }
85
+ }
86
+ //# sourceMappingURL=show.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"show.js","sourceRoot":"","sources":["../../src/commands/show.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * `adit status` — Show ADIT status for the current project.
3
+ *
4
+ * Displays a styled overview with session cards, git state, sync info,
5
+ * and hook configuration. Inspired by Entire CLI's v0.4.6 session card
6
+ * format but adapted for ADIT's richer event model.
7
+ */
8
+ export declare function statusCommand(opts?: {
9
+ json?: boolean;
10
+ }): Promise<void>;
11
+ //# sourceMappingURL=status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAiCH,wBAAsB,aAAa,CAAC,IAAI,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAgQ5E"}
@@ -0,0 +1,237 @@
1
+ /**
2
+ * `adit status` — Show ADIT status for the current project.
3
+ *
4
+ * Displays a styled overview with session cards, git state, sync info,
5
+ * and hook configuration. Inspired by Entire CLI's v0.4.6 session card
6
+ * format but adapted for ADIT's richer event model.
7
+ */
8
+ import { existsSync } from "node:fs";
9
+ import pc from "picocolors";
10
+ import { loadConfig, openDatabase, closeDatabase, getActiveSession, countEvents, queryEvents, getLatestCheckpointEvent, getSyncState, findGitRoot, } from "@varveai/adit-core";
11
+ import { hasUncommittedChanges, getCurrentBranch, getHeadSha, } from "@varveai/adit-engine";
12
+ import { detectPlatform, getAdapter, listAdapters } from "@varveai/adit-hooks/adapters";
13
+ import { statusDot, joinDim, sectionHeader, horizontalRule, timeAgo } from "../utils/format.js";
14
+ import { truncate } from "../utils/summary.js";
15
+ /** Display-name map for platforms (matches adapter displayName but avoids import) */
16
+ const platformLabel = {
17
+ "claude-code": "Claude Code",
18
+ cursor: "Cursor",
19
+ copilot: "Copilot",
20
+ opencode: "OpenCode",
21
+ codex: "Codex",
22
+ };
23
+ export async function statusCommand(opts) {
24
+ const config = loadConfig();
25
+ const gitRoot = findGitRoot() ?? config.projectRoot;
26
+ // Gather status info
27
+ const status = {};
28
+ // 1. Check if ADIT is initialized
29
+ const dataExists = existsSync(config.dataDir);
30
+ const dbExists = existsSync(config.dbPath);
31
+ status.initialized = dataExists && dbExists;
32
+ if (!status.initialized) {
33
+ if (opts?.json) {
34
+ console.log(JSON.stringify({ initialized: false }, null, 2));
35
+ }
36
+ else {
37
+ console.log();
38
+ console.log(`${statusDot(false)} ${pc.bold("Not initialized")}`);
39
+ console.log();
40
+ console.log(pc.dim("Run 'adit init' to get started."));
41
+ console.log();
42
+ }
43
+ return;
44
+ }
45
+ // 2. Check hook configuration via platform adapters
46
+ // Validate all implemented adapters (skip stubs with no hook mappings)
47
+ const implementedAdapters = listAdapters().filter((a) => a.hookMappings.length > 0);
48
+ const installedPlatforms = [];
49
+ const missingPlatforms = [];
50
+ for (const adapter of implementedAdapters) {
51
+ const result = await adapter.validateInstallation(gitRoot);
52
+ if (result.valid) {
53
+ installedPlatforms.push(adapter.displayName);
54
+ }
55
+ else if (result.checks.some((c) => c.ok)) {
56
+ // Partially installed — platform directory exists but hooks incomplete
57
+ missingPlatforms.push(adapter.displayName);
58
+ }
59
+ }
60
+ // Fall back to env-detected platform if nothing found
61
+ if (installedPlatforms.length === 0 && missingPlatforms.length === 0) {
62
+ const platform = detectPlatform();
63
+ const adapter = getAdapter(platform);
64
+ if (adapter.hookMappings.length > 0) {
65
+ missingPlatforms.push(adapter.displayName);
66
+ }
67
+ }
68
+ status.hooks = {
69
+ installed: installedPlatforms,
70
+ missing: missingPlatforms,
71
+ allInstalled: missingPlatforms.length === 0 && installedPlatforms.length > 0,
72
+ };
73
+ // 3. Database + session info
74
+ const db = openDatabase(config.dbPath);
75
+ let latestPromptText = null;
76
+ try {
77
+ // Active session
78
+ const session = getActiveSession(db, config.projectId, config.clientId);
79
+ status.session = session
80
+ ? {
81
+ id: session.id,
82
+ platform: session.platform,
83
+ startedAt: session.startedAt,
84
+ status: session.status,
85
+ }
86
+ : null;
87
+ // Fetch latest prompt text for the session card
88
+ if (session) {
89
+ const latestPrompts = queryEvents(db, {
90
+ sessionId: session.id,
91
+ eventType: "prompt_submit",
92
+ limit: 1,
93
+ });
94
+ latestPromptText = latestPrompts[0]?.promptText ?? null;
95
+ }
96
+ // Event counts — use countEvents() for accurate total
97
+ const totalEvents = countEvents(db, config.projectId);
98
+ const checkpointEvents = queryEvents(db, { hasCheckpoint: true, limit: 10000 });
99
+ status.events = {
100
+ total: totalEvents,
101
+ checkpoints: checkpointEvents.length,
102
+ };
103
+ // Unsynced events — count events after the last sync cursor.
104
+ // Resolve server URL the same way auto-sync does: env var → credentials.
105
+ let syncServerUrl = process.env.ADIT_CLOUD_URL ?? null;
106
+ if (!syncServerUrl) {
107
+ try {
108
+ const { loadCredentials } = await import("@varveai/adit-cloud");
109
+ syncServerUrl = loadCredentials()?.serverUrl ?? null;
110
+ }
111
+ catch {
112
+ // @varveai/adit-cloud not available
113
+ }
114
+ }
115
+ const syncState = getSyncState(db, syncServerUrl ?? "");
116
+ if (syncState?.lastSyncedEventId) {
117
+ const row = db.prepare(`SELECT COUNT(*) as cnt FROM events e
118
+ JOIN sessions s ON e.session_id = s.id
119
+ WHERE e.id > ? AND s.project_id = ?`).get(syncState.lastSyncedEventId, config.projectId);
120
+ status.events.unsynced = row.cnt;
121
+ }
122
+ else {
123
+ // Never synced — all events are unsynced
124
+ status.events.unsynced = totalEvents;
125
+ }
126
+ // Latest checkpoint
127
+ const latest = getLatestCheckpointEvent(db);
128
+ status.latestCheckpoint = latest
129
+ ? {
130
+ eventId: latest.id,
131
+ sha: latest.checkpointSha?.substring(0, 8),
132
+ at: latest.startedAt,
133
+ }
134
+ : null;
135
+ }
136
+ finally {
137
+ closeDatabase(db);
138
+ }
139
+ // 4. Git info
140
+ const [branch, headSha, dirty] = await Promise.all([
141
+ getCurrentBranch(config.projectRoot),
142
+ getHeadSha(config.projectRoot),
143
+ hasUncommittedChanges(config.projectRoot),
144
+ ]);
145
+ status.git = {
146
+ branch,
147
+ head: headSha?.substring(0, 8) ?? null,
148
+ dirty,
149
+ };
150
+ // ──────────────────────────────────────────────
151
+ // Output
152
+ // ──────────────────────────────────────────────
153
+ if (opts?.json) {
154
+ console.log(JSON.stringify(status, null, 2));
155
+ return;
156
+ }
157
+ const ruleWidth = 50;
158
+ const hooksStatus = status.hooks;
159
+ const session = status.session;
160
+ const events = status.events;
161
+ const latestCp = status.latestCheckpoint;
162
+ const git = status.git;
163
+ // ── Status line ──────────────────────────────
164
+ console.log();
165
+ const isActive = session !== null;
166
+ const hooksList = hooksStatus.installed.length > 0
167
+ ? hooksStatus.installed.join(", ")
168
+ : null;
169
+ const branchLabel = git.branch ? pc.cyan(git.branch) : pc.yellow("detached");
170
+ console.log(joinDim([
171
+ `${statusDot(isActive)} ${pc.bold(isActive ? "Active" : "Idle")}`,
172
+ hooksList,
173
+ `branch ${branchLabel}`,
174
+ ]));
175
+ // ── Session card ─────────────────────────────
176
+ console.log();
177
+ console.log(sectionHeader("Session", ruleWidth));
178
+ console.log();
179
+ if (session) {
180
+ const label = platformLabel[session.platform] ?? session.platform;
181
+ const shortId = session.id.substring(0, 12);
182
+ console.log(joinDim([pc.bold(label), pc.dim(shortId)]));
183
+ // Latest prompt (Entire-style quoted line)
184
+ if (latestPromptText) {
185
+ const cleaned = latestPromptText.replace(/\n/g, " ").trim();
186
+ console.log(pc.dim("> ") + `"${truncate(cleaned, 60)}"`);
187
+ }
188
+ // Stats line
189
+ const statsLine = joinDim([
190
+ `started ${timeAgo(session.startedAt)}`,
191
+ `${events.total} events`,
192
+ `${events.checkpoints} checkpoints`,
193
+ ]);
194
+ console.log(pc.dim(statsLine));
195
+ }
196
+ else {
197
+ console.log(pc.dim("No active session"));
198
+ }
199
+ // ── Git ──────────────────────────────────────
200
+ console.log();
201
+ console.log(sectionHeader("Git", ruleWidth));
202
+ console.log();
203
+ const headShort = git.head ?? "unknown";
204
+ const treeStatus = git.dirty
205
+ ? pc.yellow("dirty")
206
+ : pc.green("clean");
207
+ console.log(joinDim([
208
+ `branch ${branchLabel}`,
209
+ headShort,
210
+ treeStatus,
211
+ ]));
212
+ if (latestCp) {
213
+ console.log(pc.dim(`last checkpoint ${latestCp.sha} ${timeAgo(latestCp.at)}`));
214
+ }
215
+ // ── Sync ─────────────────────────────────────
216
+ console.log();
217
+ console.log(sectionHeader("Sync", ruleWidth));
218
+ console.log();
219
+ if (events.unsynced === 0) {
220
+ console.log(pc.green("all events synced"));
221
+ }
222
+ else {
223
+ console.log(pc.yellow(`${events.unsynced} events unsynced`));
224
+ }
225
+ // ── Hooks warnings (only if issues) ──────────
226
+ if (missingPlatforms.length > 0) {
227
+ console.log();
228
+ console.log(sectionHeader("Warnings", ruleWidth));
229
+ console.log();
230
+ console.log(pc.yellow(`hooks incomplete: ${missingPlatforms.join(", ")}`));
231
+ }
232
+ // ── Footer ───────────────────────────────────
233
+ console.log();
234
+ console.log(horizontalRule(ruleWidth));
235
+ console.log();
236
+ }
237
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * CLI handlers for `adit cloud task`.
3
+ *
4
+ * Implements the task status update command for updating
5
+ * task statuses in an intent using the /api/task-slices/bulk endpoint.
6
+ */
7
+ /**
8
+ * `adit cloud task` — Update task statuses in an intent.
9
+ */
10
+ export declare function taskCliHandler(intentId: string, opts: {
11
+ status?: string;
12
+ taskId?: string[];
13
+ phase?: number;
14
+ featureTag?: string;
15
+ wave?: number;
16
+ json?: boolean;
17
+ }): Promise<void>;
18
+ //# sourceMappingURL=task.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../../src/commands/task.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAYH;;GAEG;AACH,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE;IAC3D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoHhB"}
@@ -0,0 +1,131 @@
1
+ /**
2
+ * CLI handlers for `adit cloud task`.
3
+ *
4
+ * Implements the task status update command for updating
5
+ * task statuses in an intent using the /api/task-slices/bulk endpoint.
6
+ */
7
+ import { loadConfig } from "@varveai/adit-core";
8
+ import { loadCloudConfig, loadCredentials, CloudClient, bulkTaskUpdateCommand, } from "@varveai/adit-cloud";
9
+ import { CloudAuthError, CloudNetworkError, CloudApiError } from "@varveai/adit-cloud";
10
+ /**
11
+ * `adit cloud task` — Update task statuses in an intent.
12
+ */
13
+ export async function taskCliHandler(intentId, opts) {
14
+ const config = loadConfig();
15
+ // Prerequisite: credentials
16
+ const credentials = loadCredentials();
17
+ if (!credentials) {
18
+ console.error("Not logged in to adit-cloud.");
19
+ console.error("Run 'adit cloud login' to authenticate, or 'adit cloud auth-token <token>' for token auth.");
20
+ process.exitCode = 1;
21
+ return;
22
+ }
23
+ if (credentials.authType !== "token" && credentials.authType !== undefined) {
24
+ // CloudClient will attempt auto-refresh — just warn
25
+ console.log("Token expired — will attempt auto-refresh...");
26
+ }
27
+ // Resolve server URL and project ID
28
+ const cloudConfig = loadCloudConfig();
29
+ const serverUrl = cloudConfig.serverUrl ?? credentials.serverUrl ?? "https://adit.cloud";
30
+ const projectId = config.projectId;
31
+ if (!projectId) {
32
+ console.error("No project ID configured. Run 'adit init' first.");
33
+ process.exitCode = 1;
34
+ return;
35
+ }
36
+ // Verify connectivity
37
+ const client = new CloudClient(serverUrl, credentials);
38
+ try {
39
+ await client.get("/api/sync/health");
40
+ }
41
+ catch (error) {
42
+ if (error instanceof CloudNetworkError) {
43
+ console.error(`Cannot reach adit-cloud at ${serverUrl}. Check your network connection.`);
44
+ }
45
+ else if (error instanceof CloudAuthError) {
46
+ console.error(`Authentication failed: ${error.message}`);
47
+ console.error("Run 'adit cloud login' to re-authenticate.");
48
+ }
49
+ else {
50
+ console.error(`Connection check failed: ${error instanceof Error ? error.message : String(error)}`);
51
+ }
52
+ process.exitCode = 1;
53
+ return;
54
+ }
55
+ // Prepare options
56
+ const options = {
57
+ intentId,
58
+ status: opts.status,
59
+ taskId: opts.taskId,
60
+ json: opts.json,
61
+ };
62
+ // Add filters if provided
63
+ if (opts.phase !== undefined || opts.featureTag !== undefined || opts.wave !== undefined) {
64
+ options.filters = {
65
+ phase: opts.phase,
66
+ featureTag: opts.featureTag,
67
+ wave: opts.wave,
68
+ };
69
+ }
70
+ // Execute the command
71
+ try {
72
+ const result = await bulkTaskUpdateCommand(client, projectId, options);
73
+ if (opts.json) {
74
+ console.log(JSON.stringify(result, null, 2));
75
+ }
76
+ else {
77
+ console.log(result.message);
78
+ if (result.failed.length > 0) {
79
+ console.error("\nFailed tasks:");
80
+ result.failed.forEach((failed) => {
81
+ console.error(` ${failed.taskId}: ${failed.error}`);
82
+ });
83
+ }
84
+ }
85
+ }
86
+ catch (error) {
87
+ if (error instanceof CloudApiError && error.status === 404) {
88
+ console.error("Intent not found or access denied. Check the intent ID and your permissions.");
89
+ }
90
+ else if (error instanceof CloudApiError) {
91
+ if (error.status === 302 ||
92
+ (typeof error.body === "string" && error.body.includes("/auth/signin"))) {
93
+ console.error("Authentication required. The server is redirecting to the login page.");
94
+ console.error("\nPlease try one of the following:");
95
+ console.error("1. Run 'adit cloud login' to authenticate with device code");
96
+ console.error("2. Set ADIT_AUTH_TOKEN environment variable with a valid token");
97
+ console.error("3. Check if your authentication has expired");
98
+ }
99
+ else {
100
+ console.error(`Server error: ${error.status} — ${error.message}`);
101
+ if (error.body) {
102
+ const bodyStr = typeof error.body === "string"
103
+ ? error.body
104
+ : JSON.stringify(error.body, null, 2);
105
+ console.error(` Response: ${bodyStr}`);
106
+ }
107
+ }
108
+ }
109
+ else if (error instanceof CloudNetworkError) {
110
+ if (error.message.includes("redirect") || error.message.includes("Too many redirects")) {
111
+ console.error("Authentication redirect detected. The server is redirecting requests.");
112
+ console.error("\nPlease try one of the following:");
113
+ console.error("1. Run 'adit cloud login' to authenticate with device code");
114
+ console.error("2. Set ADIT_AUTH_TOKEN environment variable with a valid token");
115
+ console.error("3. Check if your authentication has expired");
116
+ }
117
+ else {
118
+ console.error(`Network error: ${error.message}`);
119
+ }
120
+ }
121
+ else if (error instanceof CloudAuthError) {
122
+ console.error(`Authentication failed: ${error.message}`);
123
+ console.error("Run 'adit cloud login' to re-authenticate.");
124
+ }
125
+ else {
126
+ console.error(`Task update failed: ${error instanceof Error ? error.message : String(error)}`);
127
+ }
128
+ process.exitCode = 1;
129
+ }
130
+ }
131
+ //# sourceMappingURL=task.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task.js","sourceRoot":"","sources":["../../src/commands/task.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * `adit transcript` — Transcript upload management commands.
3
+ *
4
+ * Subcommands:
5
+ * enable — Enable automatic transcript upload (default)
6
+ * disable — Disable automatic transcript upload
7
+ * status — Show transcript upload status
8
+ * upload — Manually trigger transcript uploads
9
+ * reset — Reset a failed transcript for re-upload
10
+ */
11
+ /**
12
+ * `adit transcript enable` — Enable transcript upload.
13
+ *
14
+ * Sets the ADIT_TRANSCRIPT_UPLOAD env hint and prints guidance.
15
+ * The actual toggle is environment-based (ADIT_TRANSCRIPT_UPLOAD).
16
+ */
17
+ export declare function transcriptEnableCommand(): Promise<void>;
18
+ /**
19
+ * `adit transcript disable` — Disable transcript upload.
20
+ */
21
+ export declare function transcriptDisableCommand(): Promise<void>;
22
+ /**
23
+ * `adit transcript status` — Show transcript upload state.
24
+ */
25
+ export declare function transcriptStatusCommand(opts?: {
26
+ json?: boolean;
27
+ }): Promise<void>;
28
+ /**
29
+ * `adit transcript upload` — Manually trigger transcript uploads.
30
+ */
31
+ export declare function transcriptUploadCommand(opts?: {
32
+ json?: boolean;
33
+ }): Promise<void>;
34
+ /**
35
+ * `adit transcript reset <id>` — Reset a failed transcript for re-upload.
36
+ */
37
+ export declare function transcriptResetCommand(id: string, opts?: {
38
+ json?: boolean;
39
+ }): Promise<void>;
40
+ //# sourceMappingURL=transcript.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transcript.d.ts","sourceRoot":"","sources":["../../src/commands/transcript.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAcH;;;;;GAKG;AACH,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC,CA2B7D;AAED;;GAEG;AACH,wBAAsB,wBAAwB,IAAI,OAAO,CAAC,IAAI,CAAC,CAY9D;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAAC,IAAI,CAAC,EAAE;IACnD,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6HhB;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAAC,IAAI,CAAC,EAAE;IACnD,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,GAAG,OAAO,CAAC,IAAI,CAAC,CAwEhB;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,EAAE,EAAE,MAAM,EACV,IAAI,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GACxB,OAAO,CAAC,IAAI,CAAC,CAuDf"}