deuk-agent-flow 5.0.2 → 5.0.7

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 (102) hide show
  1. package/CHANGELOG.ko.md +45 -0
  2. package/CHANGELOG.md +48 -0
  3. package/bundled/deuk-agent-flow.vsix +0 -0
  4. package/core-rules/AGENTS.md +5 -5
  5. package/package.json +20 -2
  6. package/scripts/bundle-vscode-vsix.ts +1 -1
  7. package/scripts/cli-args.ts +46 -1
  8. package/scripts/cli-context-commands.ts +35 -0
  9. package/scripts/cli-init-claude.ts +179 -0
  10. package/scripts/cli-init-commands.ts +21 -8
  11. package/scripts/cli-init-core.ts +89 -0
  12. package/scripts/cli-init-instructions.ts +489 -0
  13. package/scripts/cli-init-migrate.ts +504 -0
  14. package/scripts/cli-init-workspace.ts +63 -0
  15. package/scripts/cli-locales.ts +85 -0
  16. package/scripts/cli-skill-commands.ts +3 -1
  17. package/scripts/cli-ticket-commands.ts +68 -2
  18. package/scripts/cli-ticket-docmeta.ts +103 -0
  19. package/scripts/cli-ticket-document.ts +153 -0
  20. package/scripts/cli-ticket-evidence.ts +312 -0
  21. package/scripts/cli-ticket-home.ts +449 -0
  22. package/scripts/cli-ticket-index.ts +8 -0
  23. package/scripts/cli-ticket-scan.ts +102 -0
  24. package/scripts/cli-ticket-surface.ts +56 -0
  25. package/scripts/cli.ts +10 -1
  26. package/scripts/oss-prepack.js +32 -0
  27. package/scripts/out/scripts/bundle-vscode-vsix.js +68 -0
  28. package/scripts/out/scripts/bundle-vscode-vsix.js.map +1 -0
  29. package/scripts/out/scripts/cli-args.js +411 -0
  30. package/scripts/out/scripts/cli-args.js.map +1 -0
  31. package/scripts/out/scripts/cli-context-commands.js +31 -0
  32. package/scripts/out/scripts/cli-context-commands.js.map +1 -0
  33. package/scripts/out/scripts/cli-init-claude.js +176 -0
  34. package/scripts/out/scripts/cli-init-claude.js.map +1 -0
  35. package/scripts/out/scripts/cli-init-commands.js +98 -0
  36. package/scripts/out/scripts/cli-init-commands.js.map +1 -0
  37. package/scripts/out/scripts/cli-init-core.js +89 -0
  38. package/scripts/out/scripts/cli-init-core.js.map +1 -0
  39. package/scripts/out/scripts/cli-init-instructions.js +460 -0
  40. package/scripts/out/scripts/cli-init-instructions.js.map +1 -0
  41. package/scripts/out/scripts/cli-init-logic.js +41 -0
  42. package/scripts/out/scripts/cli-init-logic.js.map +1 -0
  43. package/scripts/out/scripts/cli-init-migrate.js +497 -0
  44. package/scripts/out/scripts/cli-init-migrate.js.map +1 -0
  45. package/scripts/out/scripts/cli-init-workspace.js +57 -0
  46. package/scripts/out/scripts/cli-init-workspace.js.map +1 -0
  47. package/scripts/out/scripts/cli-locales.js +83 -0
  48. package/scripts/out/scripts/cli-locales.js.map +1 -0
  49. package/scripts/out/scripts/cli-prompts.js +101 -0
  50. package/scripts/out/scripts/cli-prompts.js.map +1 -0
  51. package/scripts/out/scripts/cli-rule-compiler.js +121 -0
  52. package/scripts/out/scripts/cli-rule-compiler.js.map +1 -0
  53. package/scripts/out/scripts/cli-skill-commands.js +708 -0
  54. package/scripts/out/scripts/cli-skill-commands.js.map +1 -0
  55. package/scripts/out/scripts/cli-telemetry-commands.js +604 -0
  56. package/scripts/out/scripts/cli-telemetry-commands.js.map +1 -0
  57. package/scripts/out/scripts/cli-ticket-command-shared.js +2 -0
  58. package/scripts/out/scripts/cli-ticket-command-shared.js.map +1 -0
  59. package/scripts/out/scripts/cli-ticket-commands.js +3538 -0
  60. package/scripts/out/scripts/cli-ticket-commands.js.map +1 -0
  61. package/scripts/out/scripts/cli-ticket-docmeta.js +90 -0
  62. package/scripts/out/scripts/cli-ticket-docmeta.js.map +1 -0
  63. package/scripts/out/scripts/cli-ticket-document.js +121 -0
  64. package/scripts/out/scripts/cli-ticket-document.js.map +1 -0
  65. package/scripts/out/scripts/cli-ticket-evidence.js +286 -0
  66. package/scripts/out/scripts/cli-ticket-evidence.js.map +1 -0
  67. package/scripts/out/scripts/cli-ticket-home.js +440 -0
  68. package/scripts/out/scripts/cli-ticket-home.js.map +1 -0
  69. package/scripts/out/scripts/cli-ticket-index.js +280 -0
  70. package/scripts/out/scripts/cli-ticket-index.js.map +1 -0
  71. package/scripts/out/scripts/cli-ticket-migration.js +261 -0
  72. package/scripts/out/scripts/cli-ticket-migration.js.map +1 -0
  73. package/scripts/out/scripts/cli-ticket-parser.js +90 -0
  74. package/scripts/out/scripts/cli-ticket-parser.js.map +1 -0
  75. package/scripts/out/scripts/cli-ticket-scan.js +93 -0
  76. package/scripts/out/scripts/cli-ticket-scan.js.map +1 -0
  77. package/scripts/out/scripts/cli-ticket-surface.js +53 -0
  78. package/scripts/out/scripts/cli-ticket-surface.js.map +1 -0
  79. package/scripts/out/scripts/cli-usage-commands.js +310 -0
  80. package/scripts/out/scripts/cli-usage-commands.js.map +1 -0
  81. package/scripts/out/scripts/cli-utils.js +1544 -0
  82. package/scripts/out/scripts/cli-utils.js.map +1 -0
  83. package/scripts/out/scripts/cli.js +705 -0
  84. package/scripts/out/scripts/cli.js.map +1 -0
  85. package/scripts/out/scripts/lint-md.js +238 -0
  86. package/scripts/out/scripts/lint-md.js.map +1 -0
  87. package/scripts/out/scripts/lint-rules.js +193 -0
  88. package/scripts/out/scripts/lint-rules.js.map +1 -0
  89. package/scripts/out/scripts/merge-logic.js +38 -0
  90. package/scripts/out/scripts/merge-logic.js.map +1 -0
  91. package/scripts/out/scripts/plan-parser.js +52 -0
  92. package/scripts/out/scripts/plan-parser.js.map +1 -0
  93. package/scripts/out/scripts/ticket-machine.js +94 -0
  94. package/scripts/out/scripts/ticket-machine.js.map +1 -0
  95. package/scripts/out/scripts/ticket-workflow.js +498 -0
  96. package/scripts/out/scripts/ticket-workflow.js.map +1 -0
  97. package/scripts/ticket-machine.ts +99 -0
  98. package/scripts/ticket-workflow.ts +544 -0
  99. package/templates/skills/role-closer/SKILL.md +27 -0
  100. package/templates/skills/role-implementer/SKILL.md +30 -0
  101. package/templates/skills/role-planner/SKILL.md +29 -0
  102. package/templates/skills/role-qa-verifier/SKILL.md +30 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-skill-commands.js","sourceRoot":"","sources":["../../cli-skill-commands.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,604 @@
1
+ import { existsSync, mkdirSync, readFileSync, writeFileSync, appendFileSync } from "fs";
2
+ import { SPOKE_REGISTRY, loadInitConfig, makePath, toSlug } from "./cli-utils.js";
3
+ import { resolveHomeTicketDirForWorkspace } from "./cli-ticket-home.js";
4
+ const RAG_RESULTS = new Set(["hit", "weak-hit", "miss", "stale"]);
5
+ const KNOWLEDGE_ACTIONS = new Set(["none", "add_knowledge", "refresh_document"]);
6
+ const TOKEN_QUALITIES = new Set(["useful", "waste", "rework", "saved"]);
7
+ const SESSION_MODES = new Set(["guided", "unguided", "mixed"]);
8
+ const OUTCOMES = new Set(["success", "failure", "partial", "blocked"]);
9
+ const INTERNAL_SOURCE = "internal";
10
+ const WORKFLOW_EVENT_KIND = "workflow_event";
11
+ const CLIENT_LABELS = new Map([
12
+ ["antigravity", "Antigravity"],
13
+ ["claudecode", "ClaudeCode"],
14
+ ["copilot", "Copilot"],
15
+ ["cursor", "Cursor"],
16
+ ["codex", "Codex"],
17
+ ["deukagentflow", "DeukAgentFlow"],
18
+ ["jetbrains", "JetBrains"],
19
+ ["windsurf", "Windsurf"]
20
+ ]);
21
+ function normalizeDimensionValue(value) {
22
+ return String(value || "").trim().replace(/\s+/g, " ");
23
+ }
24
+ function normalizeModelLabel(value) {
25
+ const normalized = normalizeDimensionValue(value);
26
+ if (!normalized)
27
+ return "";
28
+ return normalized.toLowerCase();
29
+ }
30
+ function normalizeClientLabel(value) {
31
+ const normalized = normalizeDimensionValue(value);
32
+ if (!normalized)
33
+ return "";
34
+ const collapsed = toSlug(normalized).replace(/-/g, "");
35
+ return CLIENT_LABELS.get(collapsed) || normalized;
36
+ }
37
+ function accumulateTotals(logs, keySelector) {
38
+ return logs.reduce((acc, entry) => {
39
+ const key = keySelector(entry);
40
+ if (!key)
41
+ return acc;
42
+ acc[key] = (acc[key] || 0) + Number(entry.tokens || 0);
43
+ return acc;
44
+ }, {});
45
+ }
46
+ function resolveTelemetryPath(cwd) {
47
+ return makePath(resolveHomeTicketDirForWorkspace(cwd), "telemetry.jsonl");
48
+ }
49
+ function loadTelemetryEntries(cwd) {
50
+ const absPath = resolveTelemetryPath(cwd);
51
+ if (!existsSync(absPath))
52
+ return null;
53
+ const lines = readFileSync(absPath, "utf8").split("\n").filter(l => l.trim());
54
+ return lines.map(l => JSON.parse(l));
55
+ }
56
+ export function buildTelemetrySummary(cwd) {
57
+ const logs = loadTelemetryEntries(cwd);
58
+ if (!logs || logs.length === 0)
59
+ return null;
60
+ const workflowEvents = logs.filter(isInternalWorkflowEvent);
61
+ const workLogs = logs.filter(l => !isInternalWorkflowEvent(l));
62
+ const missingEventCount = logs.filter(l => !String(l.event || "").trim()).length;
63
+ const eventCoverageRate = rate(logs.length - missingEventCount, logs.length);
64
+ const totalTokens = workLogs.reduce((sum, l) => sum + l.tokens, 0);
65
+ const totalTdwTokens = workLogs.reduce((sum, l) => sum + Number(l.tdw || 0), 0);
66
+ const totalSavedTokens = workLogs.reduce((sum, l) => sum + Number(l.savedTokens || 0), 0);
67
+ const byModel = accumulateTotals(workLogs, l => normalizeModelLabel(l.model));
68
+ const byClient = accumulateTotals(workLogs, l => normalizeClientLabel(l.client));
69
+ const byAgent = accumulateTotals(workLogs, l => normalizeDimensionValue(l.agentId) || normalizeClientLabel(l.client));
70
+ const tdwEntryCount = workLogs.filter(l => Number(l.tdw || 0) > 0).length;
71
+ const tdwAverageTokensPerEntry = tdwEntryCount > 0 ? totalTdwTokens / tdwEntryCount : 0;
72
+ const byRagResult = countBy(workLogs, "ragResult");
73
+ const byTokenQuality = countBy(workLogs, "tokenQuality");
74
+ const byKnowledgeAction = countBy(workLogs, "knowledgeAction");
75
+ const byKnowledgeSourceKind = countBy(workflowEvents, "knowledgeSourceKind");
76
+ const byKnowledgeIngestionCategory = countBy(workflowEvents, "knowledgeIngestionCategory");
77
+ const byKnowledgeCorpus = countBy(workflowEvents, "knowledgeCorpus");
78
+ const byKnowledgeOriginTool = countBy(workflowEvents, "knowledgeOriginTool");
79
+ const localFallbackCount = workLogs.filter(l => l.localFallback).length;
80
+ const ragCalls = Object.values(byRagResult).reduce((sum, n) => sum + n, 0);
81
+ const ragHits = (byRagResult.hit || 0) + (byRagResult["weak-hit"] || 0);
82
+ const ragMisses = byRagResult.miss || 0;
83
+ const staleKnowledge = byRagResult.stale || 0;
84
+ const workflowSummary = summarizeWorkflowEvents(workflowEvents);
85
+ const sessionModeComparison = summarizeSessionModes(workLogs);
86
+ return {
87
+ cwd,
88
+ totalTokens,
89
+ totalTdwTokens,
90
+ totalSavedTokens,
91
+ logEntries: workLogs.length,
92
+ totalLogEntries: logs.length,
93
+ missingEventCount,
94
+ eventCoverageRate,
95
+ byModel,
96
+ byClient,
97
+ byAgent,
98
+ tdwEntryCount,
99
+ tdwCoverageRate: rate(tdwEntryCount, workLogs.length),
100
+ tdwTokenShare: rate(totalTdwTokens, totalTokens),
101
+ tdwAverageTokensPerEntry,
102
+ ragCalls,
103
+ ragHitRate: rate(ragHits, ragCalls),
104
+ ragMissRate: rate(ragMisses, ragCalls),
105
+ staleKnowledgeRate: rate(staleKnowledge, ragCalls),
106
+ localFallbackRate: rate(localFallbackCount, workLogs.length),
107
+ byRagResult,
108
+ byTokenQuality,
109
+ byKnowledgeAction,
110
+ byKnowledgeSourceKind,
111
+ byKnowledgeIngestionCategory,
112
+ byKnowledgeCorpus,
113
+ byKnowledgeOriginTool,
114
+ sessionModeComparison,
115
+ workflowEvents: workflowSummary
116
+ };
117
+ }
118
+ export function getTelemetryCompactSummary(cwd) {
119
+ const summary = buildTelemetrySummary(cwd);
120
+ if (!summary)
121
+ return "";
122
+ return `telemetry logs ${summary.logEntries}, coverage ${formatRate(summary.totalLogEntries - summary.missingEventCount, summary.totalLogEntries)}, tdw ${formatRate(summary.tdwEntryCount, summary.logEntries)}`;
123
+ }
124
+ export async function runTelemetry(opts) {
125
+ const argv = process.argv.slice(3); // skip 'telemetry' and 'log/sync/summary'
126
+ const action = process.argv[3];
127
+ if (action === "log") {
128
+ await logAction(opts);
129
+ }
130
+ else if (action === "sync") {
131
+ await syncAction(opts);
132
+ }
133
+ else if (action === "summary") {
134
+ await summaryAction(opts);
135
+ }
136
+ else if (action === "migrate") {
137
+ await migrateAction(opts);
138
+ }
139
+ else {
140
+ console.error("Unknown telemetry action: " + action);
141
+ console.log("Usage: npx deuk-agent-flow telemetry <log|sync|summary|migrate> [options]");
142
+ }
143
+ }
144
+ async function logAction(opts) {
145
+ let resolvedClient = opts.client;
146
+ const lowerModel = (opts.model || "").toLowerCase();
147
+ if (!resolvedClient) {
148
+ if (lowerModel.includes("codex"))
149
+ resolvedClient = "Codex";
150
+ else if (lowerModel.includes("copilot"))
151
+ resolvedClient = "Copilot";
152
+ else if (lowerModel.includes("claude"))
153
+ resolvedClient = "ClaudeCode";
154
+ else {
155
+ const config = loadInitConfig(opts.cwd);
156
+ const tools = config?.agentTools || [];
157
+ if (tools.includes("codex"))
158
+ resolvedClient = "Codex";
159
+ else if (tools.includes("copilot"))
160
+ resolvedClient = "Copilot";
161
+ else if (tools.includes("cursor"))
162
+ resolvedClient = "Cursor";
163
+ else if (tools.includes("claude"))
164
+ resolvedClient = "ClaudeCode";
165
+ else {
166
+ for (const spoke of SPOKE_REGISTRY) {
167
+ if (spoke.id !== "antigravity" && spoke.detect(opts.cwd, tools)) {
168
+ if (spoke.id === "copilot") {
169
+ resolvedClient = "Copilot";
170
+ break;
171
+ }
172
+ if (spoke.id === "codex") {
173
+ resolvedClient = "Codex";
174
+ break;
175
+ }
176
+ if (spoke.id === "cursor") {
177
+ resolvedClient = "Cursor";
178
+ break;
179
+ }
180
+ if (spoke.id === "claude") {
181
+ resolvedClient = "ClaudeCode";
182
+ break;
183
+ }
184
+ if (spoke.id === "windsurf") {
185
+ resolvedClient = "Windsurf";
186
+ break;
187
+ }
188
+ if (spoke.id === "jetbrains") {
189
+ resolvedClient = "JetBrains";
190
+ break;
191
+ }
192
+ }
193
+ }
194
+ }
195
+ }
196
+ if (!resolvedClient)
197
+ resolvedClient = "Antigravity";
198
+ }
199
+ const entry = appendTelemetryRecord(opts.cwd, {
200
+ source: opts.source || "manual",
201
+ kind: opts.kind || "work",
202
+ event: opts.event || "",
203
+ tokens: Number(opts.tokens || 0),
204
+ tdw: Number(opts.tdw || 0),
205
+ model: opts.model || "UNKNOWN",
206
+ client: resolvedClient,
207
+ agentId: opts.agentId || "",
208
+ ticket: opts.ticket || "",
209
+ action: opts.action || "work",
210
+ file: opts.file || "",
211
+ ragResult: normalizeEnum(opts.ragResult, RAG_RESULTS),
212
+ localFallback: Boolean(opts.localFallback),
213
+ knowledgeAction: normalizeEnum(opts.knowledgeAction, KNOWLEDGE_ACTIONS) || "none",
214
+ tokenQuality: normalizeEnum(opts.tokenQuality, TOKEN_QUALITIES),
215
+ savedTokens: Number(opts.savedTokens || 0),
216
+ sessionMode: normalizeEnum(opts.sessionMode, SESSION_MODES),
217
+ retryCount: Number(opts.retryCount || 0),
218
+ turnCount: Number(opts.turnCount || 0),
219
+ failureCount: Number(opts.failureCount || 0),
220
+ phaseTransitionCount: Number(opts.phaseTransitionCount || 0),
221
+ outcome: normalizeEnum(opts.outcome, OUTCOMES),
222
+ qualityScore: normalizeQualityScore(opts.qualityScore),
223
+ occurredAt: opts.occurredAt || ""
224
+ });
225
+ console.log(`[TELEMETRY] Logged ${entry.tokens} tokens for ticket ${entry.ticket}`);
226
+ }
227
+ async function syncAction(opts) {
228
+ const absPath = resolveTelemetryPath(opts.cwd);
229
+ if (!existsSync(absPath)) {
230
+ console.log("[TELEMETRY] No local logs to sync.");
231
+ return;
232
+ }
233
+ const config = loadInitConfig(opts.cwd);
234
+ const pipelineUrl = opts.remote || config?.pipelineUrl || "http://localhost:8001/api/telemetry/ingest";
235
+ const lines = readFileSync(absPath, "utf8").split("\n").filter(l => l.trim());
236
+ const entries = lines.map(l => JSON.parse(l));
237
+ const unsynced = entries.filter(e => !e.synced);
238
+ if (unsynced.length === 0) {
239
+ console.log("[TELEMETRY] All logs already synced.");
240
+ return;
241
+ }
242
+ console.log(`[TELEMETRY] Syncing ${unsynced.length} entries to ${pipelineUrl}...`);
243
+ try {
244
+ // In a real environment, we'd use fetch or a pipeline sync tool.
245
+ // For now, we simulate the sync success and mark them as synced.
246
+ // We try to use the built-in fetch if available.
247
+ if (typeof fetch === "function") {
248
+ const res = await fetch(pipelineUrl, {
249
+ method: "POST",
250
+ headers: { "Content-Type": "application/json" },
251
+ body: JSON.stringify({ logs: unsynced })
252
+ });
253
+ if (!res.ok)
254
+ throw new Error(`HTTP error ${res.status}`);
255
+ }
256
+ else {
257
+ console.warn("[TELEMETRY] fetch not available, simulating sync...");
258
+ }
259
+ const updatedLines = entries.map(e => {
260
+ if (!e.synced)
261
+ e.synced = true;
262
+ return JSON.stringify(e);
263
+ }).join("\n") + "\n";
264
+ writeFileSync(absPath, updatedLines, "utf8");
265
+ console.log(`[TELEMETRY] Successfully synced ${unsynced.length} entries.`);
266
+ }
267
+ catch (err) {
268
+ console.error(`[TELEMETRY] Sync failed: ${err.message}`);
269
+ process.exitCode = 1;
270
+ }
271
+ }
272
+ async function summaryAction(opts) {
273
+ const summary = buildTelemetrySummary(opts.cwd);
274
+ if (!summary) {
275
+ console.log("[TELEMETRY] No logs found.");
276
+ return;
277
+ }
278
+ if (opts.json) {
279
+ console.log(JSON.stringify(summary, null, 2));
280
+ return;
281
+ }
282
+ console.log(`\n--- Local Telemetry Summary (${opts.cwd}) ---`);
283
+ console.log(`Total Tokens: ${summary.totalTokens}`);
284
+ console.log(`TDW Tokens: ${summary.totalTdwTokens}`);
285
+ console.log(`Saved Tokens: ${summary.totalSavedTokens}`);
286
+ console.log(`Log Entries: ${summary.logEntries}`);
287
+ console.log(`Total Entries: ${summary.totalLogEntries}`);
288
+ console.log(`Event Coverage:`);
289
+ console.log(` - Missing Event Count: ${summary.missingEventCount}`);
290
+ console.log(` - Coverage Rate: ${formatRate(summary.totalLogEntries - summary.missingEventCount, summary.totalLogEntries)}`);
291
+ console.log(`By Model:`);
292
+ Object.entries(summary.byModel).forEach(([m, t]) => {
293
+ console.log(` - ${m}: ${t}`);
294
+ });
295
+ printCounts("By Client", summary.byClient);
296
+ printCounts("By Agent", summary.byAgent);
297
+ console.log(`TDW:`);
298
+ console.log(` - Entries: ${summary.tdwEntryCount}`);
299
+ console.log(` - Coverage Rate: ${formatRate(summary.tdwEntryCount, summary.logEntries)}`);
300
+ console.log(` - Token Share: ${formatRate(summary.totalTdwTokens, summary.totalTokens)}`);
301
+ console.log(` - Average Tokens/Entry: ${summary.tdwAverageTokensPerEntry.toFixed(1)}`);
302
+ console.log(`RAG Quality:`);
303
+ console.log(` - Calls: ${summary.ragCalls}`);
304
+ console.log(` - Hit Rate: ${formatRate((summary.byRagResult.hit || 0) + (summary.byRagResult["weak-hit"] || 0), summary.ragCalls)}`);
305
+ console.log(` - Miss Rate: ${formatRate(summary.byRagResult.miss || 0, summary.ragCalls)}`);
306
+ console.log(` - Stale Rate: ${formatRate(summary.byRagResult.stale || 0, summary.ragCalls)}`);
307
+ console.log(` - Local Fallback Rate: ${formatRate(summary.localFallbackRate * summary.logEntries, summary.logEntries)}`);
308
+ printCounts("By RAG Result", summary.byRagResult);
309
+ printCounts("By Token Quality", summary.byTokenQuality);
310
+ printCounts("By Knowledge Action", summary.byKnowledgeAction);
311
+ printCounts("By Knowledge Source Kind", summary.byKnowledgeSourceKind);
312
+ printCounts("By Knowledge Ingestion Category", summary.byKnowledgeIngestionCategory);
313
+ printCounts("By Knowledge Corpus", summary.byKnowledgeCorpus);
314
+ printCounts("By Knowledge Origin Tool", summary.byKnowledgeOriginTool);
315
+ printSessionModeComparison(summary.sessionModeComparison);
316
+ console.log(`Internal Workflow Events:`);
317
+ console.log(` - Events: ${summary.workflowEvents.eventCount}`);
318
+ console.log(` - Tickets: ${summary.workflowEvents.ticketCount}`);
319
+ console.log(` - Average Time To Phase Move: ${formatDuration(summary.workflowEvents.averageTimeToPhaseMoveMs)}`);
320
+ console.log(` - Average Time To Close: ${formatDuration(summary.workflowEvents.averageTimeToCloseMs)}`);
321
+ console.log(` - Average Time To Archive: ${formatDuration(summary.workflowEvents.averageTimeToArchiveMs)}`);
322
+ printCounts("By Workflow Event", summary.workflowEvents.byEvent);
323
+ console.log("-------------------------------------------\n");
324
+ }
325
+ async function migrateAction(opts) {
326
+ const absPath = resolveTelemetryPath(opts.cwd);
327
+ if (!existsSync(absPath)) {
328
+ console.log("[TELEMETRY] No logs found.");
329
+ return;
330
+ }
331
+ const lines = readFileSync(absPath, "utf8").split("\n").filter(l => l.trim());
332
+ const entries = lines.map(l => JSON.parse(l));
333
+ const migrated = entries.map(entry => normalizeTelemetryRecord(entry));
334
+ const changedCount = migrated.filter((entry, index) => JSON.stringify(entry) !== JSON.stringify(entries[index])).length;
335
+ if (changedCount === 0) {
336
+ console.log("[TELEMETRY] Telemetry logs already normalized.");
337
+ return;
338
+ }
339
+ writeFileSync(absPath, migrated.map(entry => JSON.stringify(entry)).join("\n") + "\n", "utf8");
340
+ console.log(`[TELEMETRY] Migrated ${changedCount} telemetry entries.`);
341
+ }
342
+ export function appendTelemetryRecord(cwd, entry = {}) {
343
+ const telemetryPath = resolveTelemetryPath(cwd);
344
+ const telemetryDir = makePath(resolveHomeTicketDirForWorkspace(cwd));
345
+ if (!existsSync(telemetryDir))
346
+ mkdirSync(telemetryDir, { recursive: true });
347
+ const occurredAt = entry.occurredAt || new Date().toISOString();
348
+ const event = resolveTelemetryEvent(entry);
349
+ const payload = {
350
+ ts: Math.floor(new Date(occurredAt).getTime() / 1000) || Math.floor(Date.now() / 1000),
351
+ occurredAt,
352
+ source: entry.source || "manual",
353
+ kind: entry.kind || "work",
354
+ event,
355
+ tokens: Number(entry.tokens || 0),
356
+ tdw: Number(entry.tdw || 0),
357
+ model: entry.model || "UNKNOWN",
358
+ client: entry.client || "",
359
+ agentId: entry.agentId || "",
360
+ ticket: entry.ticket || "",
361
+ action: entry.action || "work",
362
+ file: entry.file || "",
363
+ phase: entry.phase ?? "",
364
+ status: entry.status || "",
365
+ ragResult: normalizeEnum(entry.ragResult, RAG_RESULTS),
366
+ localFallback: Boolean(entry.localFallback),
367
+ knowledgeAction: normalizeEnum(entry.knowledgeAction, KNOWLEDGE_ACTIONS) || "",
368
+ knowledgeSourceKind: normalizeText(entry.knowledgeSourceKind),
369
+ knowledgeIngestionCategory: normalizeText(entry.knowledgeIngestionCategory),
370
+ knowledgeCorpus: normalizeText(entry.knowledgeCorpus),
371
+ knowledgeOriginTool: normalizeText(entry.knowledgeOriginTool),
372
+ knowledgeFreshness: normalizeText(entry.knowledgeFreshness),
373
+ tokenQuality: normalizeEnum(entry.tokenQuality, TOKEN_QUALITIES),
374
+ savedTokens: Number(entry.savedTokens || 0),
375
+ sessionMode: normalizeEnum(entry.sessionMode, SESSION_MODES),
376
+ retryCount: Number(entry.retryCount || 0),
377
+ turnCount: Number(entry.turnCount || 0),
378
+ failureCount: Number(entry.failureCount || 0),
379
+ phaseTransitionCount: Number(entry.phaseTransitionCount || 0),
380
+ outcome: normalizeEnum(entry.outcome, OUTCOMES),
381
+ qualityScore: normalizeQualityScore(entry.qualityScore),
382
+ synced: false
383
+ };
384
+ appendFileSync(telemetryPath, JSON.stringify(payload) + "\n", "utf8");
385
+ return payload;
386
+ }
387
+ export function appendInternalWorkflowEvent(cwd, event = {}) {
388
+ return appendTelemetryRecord(cwd, {
389
+ ...event,
390
+ source: INTERNAL_SOURCE,
391
+ kind: WORKFLOW_EVENT_KIND,
392
+ model: event.model || "workflow",
393
+ client: event.client || "DeukAgentFlow",
394
+ tokens: 0,
395
+ tdw: 0,
396
+ action: event.action || event.event || "workflow-event"
397
+ });
398
+ }
399
+ function resolveTelemetryEvent(entry = {}) {
400
+ const explicitEvent = normalizeText(entry.event);
401
+ if (explicitEvent)
402
+ return explicitEvent;
403
+ if (isInternalWorkflowEvent({
404
+ source: entry.source || INTERNAL_SOURCE,
405
+ kind: entry.kind || WORKFLOW_EVENT_KIND
406
+ })) {
407
+ return normalizeText(entry.action) || normalizeText(entry.kind) || "workflow-event";
408
+ }
409
+ return normalizeText(entry.kind) || "work";
410
+ }
411
+ function normalizeTelemetryRecord(entry = {}) {
412
+ const cloned = { ...entry };
413
+ cloned.source = cloned.source || "manual";
414
+ cloned.kind = cloned.kind || "work";
415
+ cloned.action = cloned.action || "work";
416
+ cloned.event = resolveTelemetryEvent(cloned);
417
+ cloned.synced = normalizeSyncedState(cloned.synced);
418
+ return cloned;
419
+ }
420
+ function normalizeEnum(value, allowed) {
421
+ const normalized = String(value || "").trim().toLowerCase();
422
+ return allowed.has(normalized) ? normalized : "";
423
+ }
424
+ function normalizeText(value) {
425
+ return String(value || "").trim();
426
+ }
427
+ function normalizeQualityScore(value) {
428
+ const score = Number(value || 0);
429
+ if (!Number.isFinite(score) || score <= 0)
430
+ return 0;
431
+ if (score > 5)
432
+ return 5;
433
+ return score;
434
+ }
435
+ function normalizeSyncedState(value) {
436
+ return value === true || value === "true";
437
+ }
438
+ function countBy(logs, key) {
439
+ return logs.reduce((acc, log) => {
440
+ const value = log[key];
441
+ if (value)
442
+ acc[value] = (acc[value] || 0) + 1;
443
+ return acc;
444
+ }, {});
445
+ }
446
+ function isInternalWorkflowEvent(log) {
447
+ return log?.source === INTERNAL_SOURCE && log?.kind === WORKFLOW_EVENT_KIND;
448
+ }
449
+ function summarizeWorkflowEvents(events) {
450
+ const sorted = [...events].sort((a, b) => eventTime(a) - eventTime(b));
451
+ const byTicket = new Map();
452
+ for (const event of sorted) {
453
+ const ticket = event.ticket || "";
454
+ if (!ticket)
455
+ continue;
456
+ const rows = byTicket.get(ticket) || [];
457
+ rows.push(event);
458
+ byTicket.set(ticket, rows);
459
+ }
460
+ const closeDurations = [];
461
+ const archiveDurations = [];
462
+ const phaseMoveDurations = [];
463
+ for (const rows of byTicket.values()) {
464
+ const created = rows.find(e => e.event === "ticket_created");
465
+ const closed = rows.find(e => e.event === "ticket_closed");
466
+ const archived = rows.find(e => e.event === "ticket_archived");
467
+ const firstPhaseMove = rows.find(e => e.event === "ticket_phase_moved");
468
+ if (created && closed)
469
+ closeDurations.push(eventTime(closed) - eventTime(created));
470
+ if (created && archived)
471
+ archiveDurations.push(eventTime(archived) - eventTime(created));
472
+ if (created && firstPhaseMove)
473
+ phaseMoveDurations.push(eventTime(firstPhaseMove) - eventTime(created));
474
+ }
475
+ return {
476
+ eventCount: events.length,
477
+ ticketCount: byTicket.size,
478
+ byEvent: countBy(events, "event"),
479
+ averageTimeToCloseMs: average(closeDurations),
480
+ averageTimeToArchiveMs: average(archiveDurations),
481
+ averageTimeToPhaseMoveMs: average(phaseMoveDurations)
482
+ };
483
+ }
484
+ function summarizeSessionModes(logs) {
485
+ const grouped = {};
486
+ for (const log of logs) {
487
+ const mode = normalizeEnum(log.sessionMode, SESSION_MODES);
488
+ if (!mode)
489
+ continue;
490
+ const row = grouped[mode] || {
491
+ entries: 0,
492
+ tokens: 0,
493
+ tdwTokens: 0,
494
+ savedTokens: 0,
495
+ retries: 0,
496
+ turns: 0,
497
+ failures: 0,
498
+ phaseTransitions: 0,
499
+ successCount: 0,
500
+ outcomeFailureCount: 0,
501
+ blockedCount: 0,
502
+ qualityScoreTotal: 0,
503
+ qualityScoreEntries: 0,
504
+ byOutcome: {},
505
+ byTokenQuality: {}
506
+ };
507
+ row.entries += 1;
508
+ row.tokens += Number(log.tokens || 0);
509
+ row.tdwTokens += Number(log.tdw || 0);
510
+ row.savedTokens += Number(log.savedTokens || 0);
511
+ row.retries += Number(log.retryCount || 0);
512
+ row.turns += Number(log.turnCount || 0);
513
+ row.failures += Number(log.failureCount || 0);
514
+ row.phaseTransitions += Number(log.phaseTransitionCount || 0);
515
+ const outcome = normalizeEnum(log.outcome, OUTCOMES);
516
+ if (outcome) {
517
+ row.byOutcome[outcome] = (row.byOutcome[outcome] || 0) + 1;
518
+ if (outcome === "success")
519
+ row.successCount += 1;
520
+ if (outcome === "failure")
521
+ row.outcomeFailureCount += 1;
522
+ if (outcome === "blocked")
523
+ row.blockedCount += 1;
524
+ }
525
+ const tokenQuality = normalizeEnum(log.tokenQuality, TOKEN_QUALITIES);
526
+ if (tokenQuality)
527
+ row.byTokenQuality[tokenQuality] = (row.byTokenQuality[tokenQuality] || 0) + 1;
528
+ const qualityScore = normalizeQualityScore(log.qualityScore);
529
+ if (qualityScore > 0) {
530
+ row.qualityScoreTotal += qualityScore;
531
+ row.qualityScoreEntries += 1;
532
+ }
533
+ grouped[mode] = row;
534
+ }
535
+ return Object.fromEntries(Object.entries(grouped).map(([mode, row]) => [mode, {
536
+ entries: row.entries,
537
+ tokens: row.tokens,
538
+ tdwTokens: row.tdwTokens,
539
+ savedTokens: row.savedTokens,
540
+ retries: row.retries,
541
+ turns: row.turns,
542
+ failures: row.failures,
543
+ phaseTransitions: row.phaseTransitions,
544
+ successCount: row.successCount,
545
+ outcomeFailureCount: row.outcomeFailureCount,
546
+ blockedCount: row.blockedCount,
547
+ successRate: rate(row.successCount, row.entries),
548
+ outcomeFailureRate: rate(row.outcomeFailureCount, row.entries),
549
+ averageRetriesPerEntry: rate(row.retries, row.entries),
550
+ averageFailuresPerEntry: rate(row.failures, row.entries),
551
+ averageTokensPerEntry: rate(row.tokens, row.entries),
552
+ averageTurnsPerEntry: rate(row.turns, row.entries),
553
+ averagePhaseTransitionsPerEntry: rate(row.phaseTransitions, row.entries),
554
+ averageQualityScore: rate(row.qualityScoreTotal, row.qualityScoreEntries),
555
+ byOutcome: row.byOutcome,
556
+ byTokenQuality: row.byTokenQuality
557
+ }]));
558
+ }
559
+ function eventTime(event) {
560
+ const fromOccurredAt = Date.parse(event?.occurredAt || "");
561
+ if (Number.isFinite(fromOccurredAt))
562
+ return fromOccurredAt;
563
+ return Number(event?.ts || 0) * 1000;
564
+ }
565
+ function average(values) {
566
+ return values.length > 0 ? values.reduce((sum, n) => sum + n, 0) / values.length : 0;
567
+ }
568
+ function formatDuration(ms) {
569
+ if (!ms)
570
+ return "0ms";
571
+ if (ms < 1000)
572
+ return `${ms.toFixed(0)}ms`;
573
+ if (ms < 60000)
574
+ return `${(ms / 1000).toFixed(1)}s`;
575
+ if (ms < 3600000)
576
+ return `${(ms / 60000).toFixed(1)}m`;
577
+ return `${(ms / 3600000).toFixed(1)}h`;
578
+ }
579
+ function rate(value, total) {
580
+ return total > 0 ? value / total : 0;
581
+ }
582
+ function formatRate(value, total) {
583
+ return `${(rate(value, total) * 100).toFixed(1)}%`;
584
+ }
585
+ function printCounts(label, counts) {
586
+ const entries = Object.entries(counts);
587
+ if (entries.length === 0)
588
+ return;
589
+ console.log(`${label}:`);
590
+ entries.forEach(([name, count]) => {
591
+ console.log(` - ${name}: ${count}`);
592
+ });
593
+ }
594
+ function printSessionModeComparison(summary) {
595
+ const entries = Object.entries(summary);
596
+ if (entries.length === 0)
597
+ return;
598
+ console.log(`Session Mode Comparison:`);
599
+ for (const [mode, row] of entries) {
600
+ const r = row;
601
+ console.log(` - ${mode}: entries=${r.entries}, tokens=${r.tokens}, retries=${r.retries}, turns=${r.turns}, failures=${r.failures}, success=${formatRate(r.successCount, r.entries)}, quality=${r.averageQualityScore.toFixed(1)}`);
602
+ }
603
+ }
604
+ //# sourceMappingURL=cli-telemetry-commands.js.map