@buildlog/openclaw-skill 1.0.0 → 2.0.0

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.
@@ -1,4 +1,7 @@
1
- import type { Buildlog, BuildlogMetadata, FileChange, TerminalCommand } from './types.js';
1
+ import type { BuildlogFile, BuildlogMetadata } from './types.js';
2
+ export declare const BUILDLOG_VERSION = "2.0.0";
3
+ export declare const DEFAULT_FORMAT = "slim";
4
+ export declare const MAX_SLIM_SIZE_BYTES: number;
2
5
  export interface SessionMessage {
3
6
  role: 'user' | 'assistant' | 'system';
4
7
  content: string;
@@ -14,10 +17,24 @@ export interface SessionMessage {
14
17
  type?: string;
15
18
  }>;
16
19
  }
20
+ export interface FileChangeInfo {
21
+ path: string;
22
+ changeType: 'created' | 'modified' | 'deleted';
23
+ timestamp?: number;
24
+ content?: string;
25
+ previousContent?: string;
26
+ }
27
+ export interface TerminalCommandInfo {
28
+ command: string;
29
+ cwd?: string;
30
+ exitCode?: number;
31
+ output?: string;
32
+ timestamp?: number;
33
+ }
17
34
  export interface SessionHistory {
18
35
  messages: SessionMessage[];
19
- fileChanges?: FileChange[];
20
- terminalCommands?: TerminalCommand[];
36
+ fileChanges?: FileChangeInfo[];
37
+ terminalCommands?: TerminalCommandInfo[];
21
38
  metadata?: Partial<BuildlogMetadata>;
22
39
  }
23
40
  export interface ExportOptions {
@@ -25,47 +42,53 @@ export interface ExportOptions {
25
42
  description?: string;
26
43
  tags?: string[];
27
44
  includeSystemMessages?: boolean;
28
- includeFileContents?: boolean;
29
- maxFileSizeKb?: number;
45
+ format?: 'slim' | 'full';
30
46
  lastN?: number;
31
47
  author?: string;
48
+ aiProvider?: string;
49
+ editor?: string;
32
50
  }
33
51
  /**
34
- * BuildlogExporter - Convert session history to buildlog format
52
+ * BuildlogExporter - Convert session history to v2 buildlog format
35
53
  *
36
- * Supports retroactive export from session_history
54
+ * Exports workflow recipes focused on prompts as artifacts.
55
+ * Supports both slim (default, 2-50KB) and full (with responses) formats.
37
56
  */
38
57
  export declare class BuildlogExporter {
39
58
  private options;
40
59
  constructor(options?: Partial<ExportOptions>);
41
60
  /**
42
- * Export a session history to buildlog format
61
+ * Export a session history to v2 buildlog format
43
62
  */
44
- export(history: SessionHistory): Buildlog;
63
+ export(history: SessionHistory): BuildlogFile;
45
64
  /**
46
65
  * Export only the last N messages
47
66
  */
48
- exportLastN(history: SessionHistory, n: number): Buildlog;
67
+ exportLastN(history: SessionHistory, n: number): BuildlogFile;
49
68
  /**
50
69
  * Export a range of messages
51
70
  */
52
- exportRange(history: SessionHistory, start: number, end: number): Buildlog;
71
+ exportRange(history: SessionHistory, start: number, end: number): BuildlogFile;
72
+ /**
73
+ * Convert to slim format (strip full data)
74
+ */
75
+ toSlim(buildlog: BuildlogFile): BuildlogFile;
53
76
  /**
54
- * Merge file changes and terminal commands into the timeline
77
+ * Merge file changes and terminal commands into the timeline as steps
55
78
  */
56
- private convertToEntries;
79
+ private convertToSteps;
57
80
  /**
58
- * Convert a session message to a buildlog entry
81
+ * Convert a user message to a prompt step
59
82
  */
60
- private messageToEntry;
83
+ private messageToPromptStep;
61
84
  /**
62
- * Convert a file change to a buildlog entry
85
+ * Convert a file change to an action step
63
86
  */
64
- private fileChangeToEntry;
87
+ private fileChangeToActionStep;
65
88
  /**
66
- * Convert a terminal command to a buildlog entry
89
+ * Convert a terminal command to a terminal step
67
90
  */
68
- private terminalToEntry;
91
+ private terminalToStep;
69
92
  /**
70
93
  * Filter messages based on options
71
94
  */
@@ -79,7 +102,7 @@ export declare class BuildlogExporter {
79
102
  */
80
103
  private inferTitle;
81
104
  /**
82
- * Try to infer a description from the session
105
+ * Try to infer a description from the steps
83
106
  */
84
107
  private inferDescription;
85
108
  /**
@@ -87,24 +110,20 @@ export declare class BuildlogExporter {
87
110
  */
88
111
  private inferTags;
89
112
  /**
90
- * Detect natural chapter breaks in the content
113
+ * Try to infer outcome from the session
91
114
  */
92
- private detectChapters;
93
- /**
94
- * Extract a chapter title from a message
95
- */
96
- private extractChapterTitle;
97
- /**
98
- * Truncate content to max size
99
- */
100
- private truncateContent;
115
+ private inferOutcome;
101
116
  /**
102
117
  * Generate a unique ID
103
118
  */
104
119
  private generateId;
120
+ /**
121
+ * Capitalize first letter
122
+ */
123
+ private capitalizeFirst;
105
124
  }
106
125
  /**
107
126
  * Convenience function to export a session
108
127
  */
109
- export declare function exportSession(history: SessionHistory, options?: ExportOptions): Buildlog;
128
+ export declare function exportSession(history: SessionHistory, options?: ExportOptions): BuildlogFile;
110
129
  //# sourceMappingURL=exporter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"exporter.d.ts","sourceRoot":"","sources":["../src/exporter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,EAER,gBAAgB,EAChB,UAAU,EACV,eAAe,EAChB,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,KAAK,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACnC,MAAM,CAAC,EAAE,OAAO,CAAC;KAClB,CAAC,CAAC;IACH,WAAW,CAAC,EAAE,KAAK,CAAC;QAClB,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;IAC3B,gBAAgB,CAAC,EAAE,eAAe,EAAE,CAAC;IACrC,QAAQ,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAQD;;;;GAIG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,OAAO,CAAgB;gBAEnB,OAAO,GAAE,OAAO,CAAC,aAAa,CAAM;IAIhD;;OAEG;IACH,MAAM,CAAC,OAAO,EAAE,cAAc,GAAG,QAAQ;IAazC;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,cAAc,EAAE,CAAC,EAAE,MAAM,GAAG,QAAQ;IAQzD;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,QAAQ;IAQ1E;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAiExB;;OAEG;IACH,OAAO,CAAC,cAAc;IA4BtB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAsBzB;;OAEG;IACH,OAAO,CAAC,eAAe;IAWvB;;OAEG;IACH,OAAO,CAAC,cAAc;IAgBtB;;OAEG;IACH,OAAO,CAAC,aAAa;IAuBrB;;OAEG;IACH,OAAO,CAAC,UAAU;IAqBlB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAaxB;;OAEG;IACH,OAAO,CAAC,SAAS;IA+CjB;;OAEG;IACH,OAAO,CAAC,cAAc;IA8BtB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAQ3B;;OAEG;IACH,OAAO,CAAC,eAAe;IAQvB;;OAEG;IACH,OAAO,CAAC,UAAU;CAGnB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,cAAc,EACvB,OAAO,GAAE,aAAkB,GAC1B,QAAQ,CAGV"}
1
+ {"version":3,"file":"exporter.d.ts","sourceRoot":"","sources":["../src/exporter.ts"],"names":[],"mappings":"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"}
package/dist/exporter.js CHANGED
@@ -1,16 +1,20 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.BuildlogExporter = void 0;
3
+ exports.BuildlogExporter = exports.MAX_SLIM_SIZE_BYTES = exports.DEFAULT_FORMAT = exports.BUILDLOG_VERSION = void 0;
4
4
  exports.exportSession = exportSession;
5
+ // Re-export constants
6
+ exports.BUILDLOG_VERSION = '2.0.0';
7
+ exports.DEFAULT_FORMAT = 'slim';
8
+ exports.MAX_SLIM_SIZE_BYTES = 100 * 1024; // 100KB
5
9
  const DEFAULT_OPTIONS = {
6
10
  includeSystemMessages: false,
7
- includeFileContents: true,
8
- maxFileSizeKb: 100,
11
+ format: 'slim',
9
12
  };
10
13
  /**
11
- * BuildlogExporter - Convert session history to buildlog format
14
+ * BuildlogExporter - Convert session history to v2 buildlog format
12
15
  *
13
- * Supports retroactive export from session_history
16
+ * Exports workflow recipes focused on prompts as artifacts.
17
+ * Supports both slim (default, 2-50KB) and full (with responses) formats.
14
18
  */
15
19
  class BuildlogExporter {
16
20
  options;
@@ -18,18 +22,24 @@ class BuildlogExporter {
18
22
  this.options = { ...DEFAULT_OPTIONS, ...options };
19
23
  }
20
24
  /**
21
- * Export a session history to buildlog format
25
+ * Export a session history to v2 buildlog format
22
26
  */
23
27
  export(history) {
24
28
  const messages = this.filterMessages(history.messages);
25
- const entries = this.convertToEntries(messages, history);
26
- const metadata = this.buildMetadata(history, entries);
27
- return {
28
- version: '1.0.0',
29
+ const steps = this.convertToSteps(messages, history);
30
+ const metadata = this.buildMetadata(history, steps);
31
+ const buildlog = {
32
+ version: exports.BUILDLOG_VERSION,
33
+ format: this.options.format ?? 'slim',
29
34
  metadata,
30
- entries,
31
- chapters: this.detectChapters(entries),
35
+ steps,
32
36
  };
37
+ // Add outcome if we can infer it
38
+ const outcome = this.inferOutcome(history);
39
+ if (outcome) {
40
+ buildlog.outcome = outcome;
41
+ }
42
+ return buildlog;
33
43
  }
34
44
  /**
35
45
  * Export only the last N messages
@@ -52,31 +62,57 @@ class BuildlogExporter {
52
62
  return this.export(limitedHistory);
53
63
  }
54
64
  /**
55
- * Merge file changes and terminal commands into the timeline
65
+ * Convert to slim format (strip full data)
56
66
  */
57
- convertToEntries(messages, history) {
58
- const entries = [];
67
+ toSlim(buildlog) {
68
+ if (buildlog.format === 'slim') {
69
+ return buildlog;
70
+ }
71
+ const slim = {
72
+ ...buildlog,
73
+ format: 'slim',
74
+ steps: buildlog.steps.map((step) => {
75
+ if (step.type === 'prompt' && 'response' in step) {
76
+ const { response, ...rest } = step;
77
+ return rest;
78
+ }
79
+ if (step.type === 'action' && 'diff' in step) {
80
+ const { diff, ...rest } = step;
81
+ return rest;
82
+ }
83
+ return step;
84
+ }),
85
+ };
86
+ return slim;
87
+ }
88
+ /**
89
+ * Merge file changes and terminal commands into the timeline as steps
90
+ */
91
+ convertToSteps(messages, history) {
92
+ const steps = [];
59
93
  // Create a timeline of all events
60
94
  const timeline = [];
61
- // Add messages to timeline
95
+ // Add user messages as prompts
62
96
  for (const msg of messages) {
63
- timeline.push({
64
- timestamp: msg.timestamp ?? Date.now(),
65
- type: 'message',
66
- data: msg,
67
- });
97
+ if (msg.role === 'user') {
98
+ timeline.push({
99
+ timestamp: msg.timestamp ?? Date.now(),
100
+ type: 'prompt',
101
+ data: msg,
102
+ });
103
+ }
68
104
  }
69
- // Add file changes to timeline
105
+ // Add file changes as actions
70
106
  if (history.fileChanges) {
71
107
  for (const fc of history.fileChanges) {
72
108
  timeline.push({
73
109
  timestamp: fc.timestamp ?? Date.now(),
74
- type: 'file',
110
+ type: 'action',
75
111
  data: fc,
76
112
  });
77
113
  }
78
114
  }
79
- // Add terminal commands to timeline
115
+ // Add terminal commands
80
116
  if (history.terminalCommands) {
81
117
  for (const cmd of history.terminalCommands) {
82
118
  timeline.push({
@@ -88,84 +124,78 @@ class BuildlogExporter {
88
124
  }
89
125
  // Sort by timestamp
90
126
  timeline.sort((a, b) => a.timestamp - b.timestamp);
91
- // Convert to entries
127
+ // Convert to steps
128
+ let stepIndex = 0;
92
129
  for (const event of timeline) {
93
130
  switch (event.type) {
94
- case 'message':
95
- entries.push(this.messageToEntry(event.data, event.timestamp));
131
+ case 'prompt':
132
+ steps.push(this.messageToPromptStep(event.data, event.timestamp, stepIndex++));
96
133
  break;
97
- case 'file':
98
- entries.push(this.fileChangeToEntry(event.data, event.timestamp));
134
+ case 'action':
135
+ steps.push(this.fileChangeToActionStep(event.data, event.timestamp, stepIndex++));
99
136
  break;
100
137
  case 'terminal':
101
- entries.push(this.terminalToEntry(event.data, event.timestamp));
138
+ steps.push(this.terminalToStep(event.data, event.timestamp, stepIndex++));
102
139
  break;
103
140
  }
104
141
  }
105
- return entries;
142
+ return steps;
106
143
  }
107
144
  /**
108
- * Convert a session message to a buildlog entry
145
+ * Convert a user message to a prompt step
109
146
  */
110
- messageToEntry(message, timestamp) {
111
- const entry = {
112
- type: message.role === 'user' ? 'user' : 'assistant',
147
+ messageToPromptStep(message, timestamp, index) {
148
+ const step = {
149
+ type: 'prompt',
113
150
  timestamp,
151
+ index,
114
152
  content: message.content,
115
153
  };
116
- if (message.toolCalls && message.toolCalls.length > 0) {
117
- entry.toolCalls = message.toolCalls.map((tc) => ({
118
- name: tc.name,
119
- arguments: tc.arguments,
120
- result: tc.result,
121
- }));
122
- }
154
+ // Add context if there are attachments
123
155
  if (message.attachments && message.attachments.length > 0) {
124
- entry.attachments = message.attachments.map((a) => ({
125
- type: a.type ?? 'file',
126
- name: a.name,
127
- content: this.options.includeFileContents
128
- ? this.truncateContent(a.content)
129
- : undefined,
130
- }));
156
+ step.context = message.attachments.map((a) => a.name);
131
157
  }
132
- return entry;
158
+ return step;
133
159
  }
134
160
  /**
135
- * Convert a file change to a buildlog entry
161
+ * Convert a file change to an action step
136
162
  */
137
- fileChangeToEntry(fileChange, timestamp) {
138
- const fc = { ...fileChange };
139
- if (!this.options.includeFileContents) {
140
- delete fc.content;
141
- delete fc.previousContent;
142
- }
143
- else {
144
- if (fc.content) {
145
- fc.content = this.truncateContent(fc.content);
146
- }
147
- if (fc.previousContent) {
148
- fc.previousContent = this.truncateContent(fc.previousContent);
149
- }
150
- }
151
- return {
152
- type: 'file_change',
163
+ fileChangeToActionStep(fileChange, timestamp, index) {
164
+ const step = {
165
+ type: 'action',
153
166
  timestamp,
154
- fileChange: fc,
167
+ index,
168
+ summary: `${this.capitalizeFirst(fileChange.changeType)} ${fileChange.path}`,
169
+ files: [fileChange.path],
170
+ changeType: fileChange.changeType,
155
171
  };
172
+ // Only include diff in full format
173
+ if (this.options.format === 'full' && fileChange.content) {
174
+ step.diff = fileChange.content;
175
+ }
176
+ return step;
156
177
  }
157
178
  /**
158
- * Convert a terminal command to a buildlog entry
179
+ * Convert a terminal command to a terminal step
159
180
  */
160
- terminalToEntry(command, timestamp) {
161
- return {
181
+ terminalToStep(command, timestamp, index) {
182
+ const step = {
162
183
  type: 'terminal',
163
184
  timestamp,
164
- command: {
165
- ...command,
166
- output: command.output ? this.truncateContent(command.output) : undefined,
167
- },
185
+ index,
186
+ command: command.command,
168
187
  };
188
+ if (command.cwd) {
189
+ step.cwd = command.cwd;
190
+ }
191
+ if (command.exitCode !== undefined) {
192
+ step.exitCode = command.exitCode;
193
+ }
194
+ // Only include output in full format
195
+ if (this.options.format === 'full' && command.output) {
196
+ step.output = command.output;
197
+ }
198
+ return step;
169
199
  }
170
200
  /**
171
201
  * Filter messages based on options
@@ -185,23 +215,49 @@ class BuildlogExporter {
185
215
  /**
186
216
  * Build metadata for the buildlog
187
217
  */
188
- buildMetadata(history, entries) {
218
+ buildMetadata(history, steps) {
189
219
  const now = new Date().toISOString();
190
- const timestamps = entries.map((e) => e.timestamp).filter(Boolean);
220
+ const timestamps = steps.map((s) => s.timestamp).filter(Boolean);
191
221
  const duration = timestamps.length >= 2
192
222
  ? Math.max(...timestamps) - Math.min(...timestamps)
193
223
  : 0;
194
- return {
224
+ const promptCount = steps.filter((s) => s.type === 'prompt').length;
225
+ const metadata = {
195
226
  id: this.generateId(),
196
- title: this.options.title ?? this.inferTitle(history) ?? 'Untitled Session',
197
- description: this.options.description ?? this.inferDescription(history),
227
+ title: this.options.title ?? this.inferTitle(history) ?? 'Untitled Workflow',
198
228
  createdAt: now,
199
- duration,
200
- entryCount: entries.length,
201
- tags: this.options.tags ?? this.inferTags(history),
202
- author: this.options.author,
203
- ...history.metadata,
204
229
  };
230
+ if (this.options.description) {
231
+ metadata.description = this.options.description;
232
+ }
233
+ else {
234
+ const inferred = this.inferDescription(steps);
235
+ if (inferred)
236
+ metadata.description = inferred;
237
+ }
238
+ if (duration > 0)
239
+ metadata.duration = duration;
240
+ if (this.options.author)
241
+ metadata.author = { name: this.options.author };
242
+ if (this.options.tags && this.options.tags.length > 0) {
243
+ metadata.tags = this.options.tags;
244
+ }
245
+ else {
246
+ const inferredTags = this.inferTags(history);
247
+ if (inferredTags.length > 0)
248
+ metadata.tags = inferredTags;
249
+ }
250
+ metadata.stepCount = steps.length;
251
+ metadata.promptCount = promptCount;
252
+ if (this.options.aiProvider)
253
+ metadata.aiProvider = this.options.aiProvider;
254
+ if (this.options.editor)
255
+ metadata.editor = this.options.editor;
256
+ // Merge with session metadata
257
+ if (history.metadata) {
258
+ Object.assign(metadata, history.metadata);
259
+ }
260
+ return metadata;
205
261
  }
206
262
  /**
207
263
  * Try to infer a title from the session content
@@ -221,20 +277,20 @@ class BuildlogExporter {
221
277
  return firstLine.slice(0, 57) + '...';
222
278
  }
223
279
  /**
224
- * Try to infer a description from the session
280
+ * Try to infer a description from the steps
225
281
  */
226
- inferDescription(history) {
227
- const messageCount = history.messages.filter((m) => m.role !== 'system').length;
228
- const fileCount = history.fileChanges?.length ?? 0;
229
- const cmdCount = history.terminalCommands?.length ?? 0;
282
+ inferDescription(steps) {
283
+ const promptCount = steps.filter((s) => s.type === 'prompt').length;
284
+ const actionCount = steps.filter((s) => s.type === 'action').length;
285
+ const terminalCount = steps.filter((s) => s.type === 'terminal').length;
230
286
  const parts = [];
231
- if (messageCount > 0)
232
- parts.push(`${messageCount} messages`);
233
- if (fileCount > 0)
234
- parts.push(`${fileCount} file changes`);
235
- if (cmdCount > 0)
236
- parts.push(`${cmdCount} commands`);
237
- return parts.length > 0 ? `Session with ${parts.join(', ')}` : undefined;
287
+ if (promptCount > 0)
288
+ parts.push(`${promptCount} prompt${promptCount > 1 ? 's' : ''}`);
289
+ if (actionCount > 0)
290
+ parts.push(`${actionCount} action${actionCount > 1 ? 's' : ''}`);
291
+ if (terminalCount > 0)
292
+ parts.push(`${terminalCount} command${terminalCount > 1 ? 's' : ''}`);
293
+ return parts.length > 0 ? `Workflow with ${parts.join(', ')}` : undefined;
238
294
  }
239
295
  /**
240
296
  * Try to infer tags from file extensions and content
@@ -282,51 +338,32 @@ class BuildlogExporter {
282
338
  return Array.from(tags).slice(0, 10);
283
339
  }
284
340
  /**
285
- * Detect natural chapter breaks in the content
286
- */
287
- detectChapters(entries) {
288
- const chapters = [];
289
- for (let i = 0; i < entries.length; i++) {
290
- const entry = entries[i];
291
- // Look for user messages that start a new topic
292
- if (entry.type === 'user' && entry.content) {
293
- const content = entry.content.toLowerCase();
294
- // Check for chapter-like phrases
295
- const chapterPatterns = [
296
- /^(now|next|let's|let us|can you|please)\s+(create|build|add|implement|fix|update|refactor)/i,
297
- /^(step|part|phase)\s+\d+/i,
298
- /^(first|second|third|finally|lastly)/i,
299
- ];
300
- for (const pattern of chapterPatterns) {
301
- if (pattern.test(content)) {
302
- const title = this.extractChapterTitle(entry.content);
303
- chapters.push({ title, startIndex: i });
304
- break;
305
- }
306
- }
307
- }
308
- }
309
- return chapters;
310
- }
311
- /**
312
- * Extract a chapter title from a message
341
+ * Try to infer outcome from the session
313
342
  */
314
- extractChapterTitle(content) {
315
- const firstLine = content.split('\n')[0];
316
- if (firstLine.length <= 50) {
317
- return firstLine;
343
+ inferOutcome(history) {
344
+ const lastMessage = history.messages.findLast((m) => m.role === 'assistant');
345
+ if (!lastMessage)
346
+ return undefined;
347
+ const content = lastMessage.content.toLowerCase();
348
+ // Look for success indicators
349
+ const successIndicators = ['done', 'complete', 'finished', 'works', 'success'];
350
+ const hasSuccess = successIndicators.some((i) => content.includes(i));
351
+ // Look for failure indicators
352
+ const failureIndicators = ['error', 'failed', 'doesn\'t work', 'issue', 'problem'];
353
+ const hasFailure = failureIndicators.some((i) => content.includes(i));
354
+ if (hasSuccess && !hasFailure) {
355
+ return {
356
+ status: 'completed',
357
+ summary: 'Workflow completed successfully',
358
+ };
318
359
  }
319
- return firstLine.slice(0, 47) + '...';
320
- }
321
- /**
322
- * Truncate content to max size
323
- */
324
- truncateContent(content) {
325
- const maxBytes = (this.options.maxFileSizeKb ?? 100) * 1024;
326
- if (content.length <= maxBytes) {
327
- return content;
360
+ else if (hasFailure && !hasSuccess) {
361
+ return {
362
+ status: 'failed',
363
+ summary: 'Workflow encountered issues',
364
+ };
328
365
  }
329
- return content.slice(0, maxBytes) + '\n... [truncated]';
366
+ return undefined;
330
367
  }
331
368
  /**
332
369
  * Generate a unique ID
@@ -334,6 +371,12 @@ class BuildlogExporter {
334
371
  generateId() {
335
372
  return `bl_${Date.now()}_${Math.random().toString(36).slice(2, 9)}`;
336
373
  }
374
+ /**
375
+ * Capitalize first letter
376
+ */
377
+ capitalizeFirst(str) {
378
+ return str.charAt(0).toUpperCase() + str.slice(1);
379
+ }
337
380
  }
338
381
  exports.BuildlogExporter = BuildlogExporter;
339
382
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"exporter.js","sourceRoot":"","sources":["../src/exporter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"exporter.js","sourceRoot":"","sources":["../src/exporter.ts"],"names":[],"mappings":"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"}