@purveyors/cli 0.23.0 → 0.24.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.
package/README.md CHANGED
@@ -115,7 +115,6 @@ The npm package is both a binary and a shared TypeScript product surface. `coffe
115
115
  | `@purveyors/cli/tasting` | Tasting note and rating operations |
116
116
  | `@purveyors/cli/lib` | Shared library helpers |
117
117
  | `@purveyors/cli/manifest` | Stable machine-readable CLI manifest |
118
- | `@purveyors/cli/artisan` | Artisan `.alog` parsing and import utilities |
119
118
  | `@purveyors/cli/ai` | AI helper surface used by CLI workflows |
120
119
 
121
120
  Shell integrations should usually start with `purvey manifest`. In-process agent and website integrations should import the smallest relevant subpath instead of shelling out when they are already running in Node.js.
@@ -1,6 +1,6 @@
1
1
  import { z } from 'zod';
2
2
  import type { SupabaseClient } from '@supabase/supabase-js';
3
- import type { ArtisanImportResult } from './artisan/import.js';
3
+ import type { MilestoneData, ProcessedRoastData } from './artisan/types.js';
4
4
  export interface RoastProfile {
5
5
  roast_id: number;
6
6
  batch_name: string | null;
@@ -128,7 +128,15 @@ export declare const importRoastSchema: z.ZodObject<{
128
128
  roastTargets: z.ZodOptional<z.ZodString>;
129
129
  }, z.core.$strip>;
130
130
  export type ImportRoastInput = z.input<typeof importRoastSchema>;
131
- export interface ImportRoastResult extends ArtisanImportResult {
131
+ export interface ImportRoastResult {
132
+ success: boolean;
133
+ message: string;
134
+ milestones: MilestoneData;
135
+ phases: ProcessedRoastData['phases'];
136
+ total_time: number;
137
+ temperature_unit: 'F' | 'C';
138
+ milestone_events: number;
139
+ control_events: number;
132
140
  roast_id: number;
133
141
  batch_name: string;
134
142
  coffee_name: string;
@@ -1 +1 @@
1
- {"version":3,"file":"roast.d.ts","sourceRoot":"","sources":["../../src/lib/roast.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"roast.d.ts","sourceRoot":"","sources":["../../src/lib/roast.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"roast.js","sourceRoot":"","sources":["../../src/lib/roast.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"roast.js","sourceRoot":"","sources":["../../src/lib/roast.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@purveyors/cli",
3
- "version": "0.23.0",
3
+ "version": "0.24.0",
4
4
  "description": "The official CLI for purveyors.io — coffee intelligence from your terminal",
5
5
  "type": "module",
6
6
  "bin": {
@@ -15,7 +15,6 @@
15
15
  "./tasting": "./dist/lib/tasting.js",
16
16
  "./lib": "./dist/lib/index.js",
17
17
  "./manifest": "./dist/lib/manifest.js",
18
- "./artisan": "./dist/lib/artisan/index.js",
19
18
  "./ai": "./dist/lib/ai.js"
20
19
  },
21
20
  "files": [
@@ -1,37 +0,0 @@
1
- import type { SupabaseClient } from '@supabase/supabase-js';
2
- export interface TemperatureRow {
3
- roast_id: number;
4
- time_seconds: number;
5
- bean_temp?: number | null;
6
- environmental_temp?: number | null;
7
- ambient_temp?: number | null;
8
- ror_bean_temp?: number | null;
9
- data_source: string;
10
- }
11
- export interface EventRow {
12
- roast_id: number;
13
- time_seconds: number;
14
- event_type: number;
15
- event_value: string | null;
16
- event_string: string;
17
- category: string;
18
- subcategory: string;
19
- user_generated: boolean;
20
- automatic: boolean;
21
- notes?: string;
22
- }
23
- export declare const BATCH_SIZE = 100;
24
- /**
25
- * Clear existing roast data scoped to artisan_import source.
26
- * Deletes temperature rows by data_source and event rows by category.
27
- */
28
- export declare function clearRoastData(supabase: SupabaseClient, roastId: number, source: 'artisan_import' | 'live'): Promise<void>;
29
- /**
30
- * Batch-insert temperature rows into roast_temperatures.
31
- */
32
- export declare function insertTemperatures(supabase: SupabaseClient, entries: TemperatureRow[]): Promise<void>;
33
- /**
34
- * Batch-insert event rows into roast_events.
35
- */
36
- export declare function insertEvents(supabase: SupabaseClient, entries: EventRow[]): Promise<void>;
37
- //# sourceMappingURL=db.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../../src/lib/artisan/db.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAI5D,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,OAAO,CAAC;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAID,eAAO,MAAM,UAAU,MAAM,CAAC;AAI9B;;;GAGG;AACH,wBAAsB,cAAc,CAClC,QAAQ,EAAE,cAAc,EACxB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,gBAAgB,GAAG,MAAM,GAChC,OAAO,CAAC,IAAI,CAAC,CAgBf;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,cAAc,EACxB,OAAO,EAAE,cAAc,EAAE,GACxB,OAAO,CAAC,IAAI,CAAC,CASf;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,QAAQ,EAAE,cAAc,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAS/F"}
@@ -1,51 +0,0 @@
1
- // ── Constants ─────────────────────────────────────────────────────────────────
2
- export const BATCH_SIZE = 100;
3
- // ── Functions ─────────────────────────────────────────────────────────────────
4
- /**
5
- * Clear existing roast data scoped to artisan_import source.
6
- * Deletes temperature rows by data_source and event rows by category.
7
- */
8
- export async function clearRoastData(supabase, roastId, source) {
9
- await supabase
10
- .from('roast_temperatures')
11
- .delete()
12
- .eq('roast_id', roastId)
13
- .eq('data_source', source);
14
- if (source === 'artisan_import') {
15
- await supabase
16
- .from('roast_events')
17
- .delete()
18
- .eq('roast_id', roastId)
19
- .in('category', ['milestone', 'control', 'machine']);
20
- }
21
- else {
22
- await supabase.from('roast_events').delete().eq('roast_id', roastId);
23
- }
24
- }
25
- /**
26
- * Batch-insert temperature rows into roast_temperatures.
27
- */
28
- export async function insertTemperatures(supabase, entries) {
29
- for (let i = 0; i < entries.length; i += BATCH_SIZE) {
30
- const batch = entries.slice(i, i + BATCH_SIZE);
31
- const { error } = await supabase.from('roast_temperatures').insert(batch);
32
- if (error) {
33
- console.error('Error inserting temperature batch:', error);
34
- throw error;
35
- }
36
- }
37
- }
38
- /**
39
- * Batch-insert event rows into roast_events.
40
- */
41
- export async function insertEvents(supabase, entries) {
42
- for (let i = 0; i < entries.length; i += BATCH_SIZE) {
43
- const batch = entries.slice(i, i + BATCH_SIZE);
44
- const { error } = await supabase.from('roast_events').insert(batch);
45
- if (error) {
46
- console.error('Error inserting event batch:', error);
47
- throw error;
48
- }
49
- }
50
- }
51
- //# sourceMappingURL=db.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"db.js","sourceRoot":"","sources":["../../../src/lib/artisan/db.ts"],"names":[],"mappings":"AA2BA,iFAAiF;AAEjF,MAAM,CAAC,MAAM,UAAU,GAAG,GAAG,CAAC;AAE9B,iFAAiF;AAEjF;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,QAAwB,EACxB,OAAe,EACf,MAAiC;IAEjC,MAAM,QAAQ;SACX,IAAI,CAAC,oBAAoB,CAAC;SAC1B,MAAM,EAAE;SACR,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC;SACvB,EAAE,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IAE7B,IAAI,MAAM,KAAK,gBAAgB,EAAE,CAAC;QAChC,MAAM,QAAQ;aACX,IAAI,CAAC,cAAc,CAAC;aACpB,MAAM,EAAE;aACR,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC;aACvB,EAAE,CAAC,UAAU,EAAE,CAAC,WAAW,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;IACzD,CAAC;SAAM,CAAC;QACN,MAAM,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACvE,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,QAAwB,EACxB,OAAyB;IAEzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,UAAU,EAAE,CAAC;QACpD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC;QAC/C,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC1E,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,CAAC,KAAK,CAAC,oCAAoC,EAAE,KAAK,CAAC,CAAC;YAC3D,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,QAAwB,EAAE,OAAmB;IAC9E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,UAAU,EAAE,CAAC;QACpD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC;QAC/C,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACpE,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;YACrD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -1,16 +0,0 @@
1
- import type { SupabaseClient } from '@supabase/supabase-js';
2
- import type { ArtisanRoastData, MilestoneData, ProcessedRoastData } from './types.js';
3
- export interface ArtisanImportResult {
4
- success: boolean;
5
- message: string;
6
- milestones: MilestoneData;
7
- phases: ProcessedRoastData['phases'];
8
- total_time: number;
9
- temperature_unit: 'F' | 'C';
10
- milestone_events: number;
11
- control_events: number;
12
- }
13
- export declare function parseArtisanFile(fileContent: string, fileName: string): Promise<ArtisanRoastData>;
14
- export declare function transformArtisanData(parsedData: ArtisanRoastData, roastId: number): ProcessedRoastData;
15
- export declare function importArtisanData(supabase: SupabaseClient, roastId: number, userId: string, fileContent: string, fileName: string, fileSize?: number): Promise<ArtisanImportResult>;
16
- //# sourceMappingURL=import.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"import.d.ts","sourceRoot":"","sources":["../../../src/lib/artisan/import.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAMtF,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,aAAa,CAAC;IAC1B,MAAM,EAAE,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,GAAG,GAAG,GAAG,CAAC;IAC5B,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;CACxB;AAGD,wBAAsB,gBAAgB,CACpC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,gBAAgB,CAAC,CA8B3B;AAqCD,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,gBAAgB,EAC5B,OAAO,EAAE,MAAM,GACd,kBAAkB,CAkRpB;AAGD,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,cAAc,EACxB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,mBAAmB,CAAC,CA2J9B"}
@@ -1,447 +0,0 @@
1
- import { validateArtisanData, validateProcessedData } from './validator.js';
2
- import { normalizeArtisanTemperatures, artisanModeToUnit } from './temperature.js';
3
- import { processAlogFile } from './parser.js';
4
- import { clearRoastData, insertTemperatures, insertEvents } from './db.js';
5
- // Parse Artisan .alog or .alog.json data
6
- export async function parseArtisanFile(fileContent, fileName) {
7
- try {
8
- let data;
9
- if (fileName.toLowerCase().endsWith('.alog')) {
10
- // Parse Python literal syntax (.alog file)
11
- data = processAlogFile(fileContent);
12
- }
13
- else {
14
- // Parse standard JSON (.alog.json file)
15
- data = JSON.parse(fileContent);
16
- }
17
- // Validate the basic structure
18
- const validation = validateArtisanData(data);
19
- if (!validation.valid) {
20
- throw new Error(`Invalid Artisan file: ${validation.errors.join(', ')}`);
21
- }
22
- // Map 'mode' to 'temperature_unit' for consistency
23
- data.temperature_unit = artisanModeToUnit(data.mode);
24
- return data;
25
- }
26
- catch (error) {
27
- if (error instanceof Error) {
28
- throw error;
29
- }
30
- throw new Error('Failed to parse Artisan file');
31
- }
32
- }
33
- // Extract milestone events from Artisan timeindex array
34
- function extractMilestones(artisanData) {
35
- const milestones = {};
36
- const { timex, timeindex } = artisanData;
37
- // timeindex maps: [CHARGE, DRY_END, FC_START, FC_END, SC_START, SC_END, DROP, COOL]
38
- if (timeindex[0] > 0 && timeindex[0] < timex.length) {
39
- milestones.charge = timex[timeindex[0]];
40
- }
41
- if (timeindex[1] > 0 && timeindex[1] < timex.length) {
42
- milestones.dry_end = timex[timeindex[1]];
43
- }
44
- if (timeindex[2] > 0 && timeindex[2] < timex.length) {
45
- milestones.fc_start = timex[timeindex[2]];
46
- }
47
- if (timeindex[3] > 0 && timeindex[3] < timex.length) {
48
- milestones.fc_end = timex[timeindex[3]];
49
- }
50
- if (timeindex[4] > 0 && timeindex[4] < timex.length) {
51
- milestones.sc_start = timex[timeindex[4]];
52
- }
53
- if (timeindex[5] > 0 && timeindex[5] < timex.length) {
54
- milestones.sc_end = timex[timeindex[5]];
55
- }
56
- if (timeindex[6] > 0 && timeindex[6] < timex.length) {
57
- milestones.drop = timex[timeindex[6]];
58
- }
59
- if (timeindex[7] > 0 && timeindex[7] < timex.length) {
60
- milestones.cool = timex[timeindex[7]];
61
- }
62
- return milestones;
63
- }
64
- // Transform parsed Artisan data into database format
65
- export function transformArtisanData(parsedData, roastId) {
66
- const { timex, temp1, temp2, extratemp1, extratemp2 } = parsedData;
67
- // Extract milestones
68
- const milestones = extractMilestones(parsedData);
69
- // Extract computed data from Artisan
70
- const computedData = parsedData.computed || {};
71
- // Normalize temperatures to Fahrenheit for consistency
72
- const { beanTemps, envTemps } = normalizeArtisanTemperatures(temp1, temp2, parsedData.temperature_unit, 'F' // Store everything in Fahrenheit
73
- );
74
- // Extract control device data from extra devices with proper etypes mapping
75
- const extraDeviceData = [];
76
- // Map extratemp1 channels to their corresponding etype names
77
- if (extratemp1 && parsedData.extraname1) {
78
- extratemp1.forEach((channelData, channelIndex) => {
79
- if (channelData && channelData.length > 0 && parsedData.extraname1) {
80
- const deviceName = parsedData.extraname1[channelIndex];
81
- // Map device names to etypes if available
82
- let etypeName = deviceName;
83
- if (parsedData.etypes && parsedData.etypes.length > channelIndex) {
84
- const etype = parsedData.etypes[channelIndex];
85
- if (etype && etype !== '--') {
86
- etypeName = etype.toLowerCase();
87
- }
88
- }
89
- extraDeviceData.push({
90
- name: etypeName,
91
- data: channelData,
92
- });
93
- }
94
- });
95
- }
96
- // Map extratemp2 channels to their corresponding etype names
97
- if (extratemp2 && parsedData.extraname2) {
98
- extratemp2.forEach((channelData, channelIndex) => {
99
- if (channelData && channelData.length > 0 && parsedData.extraname2) {
100
- const deviceName = parsedData.extraname2[channelIndex];
101
- // Map device names to etypes if available, offset by extratemp1 length
102
- let etypeName = deviceName;
103
- const etypeIndex = channelIndex + (parsedData.extratemp1?.length || 0);
104
- if (parsedData.etypes && parsedData.etypes.length > etypeIndex) {
105
- const etype = parsedData.etypes[etypeIndex];
106
- if (etype && etype !== '--') {
107
- etypeName = etype.toLowerCase();
108
- }
109
- }
110
- extraDeviceData.push({
111
- name: etypeName,
112
- data: channelData,
113
- });
114
- }
115
- });
116
- }
117
- // Process special events if extra temp arrays are empty (fallback for newer Artisan files)
118
- const specialEvents = [];
119
- if (extraDeviceData.length === 0 && parsedData.specialevents && parsedData.specialeventsStrings) {
120
- parsedData.specialevents.forEach((eventIndex, index) => {
121
- const eventType = parsedData.specialeventstype?.[index];
122
- const valueString = parsedData.specialeventsStrings?.[index];
123
- // Resolve special event index -> absolute time in seconds
124
- let timeSeconds;
125
- if (typeof eventIndex === 'number' &&
126
- Number.isFinite(eventIndex) &&
127
- eventIndex >= 0 &&
128
- eventIndex < timex.length &&
129
- typeof timex[eventIndex] === 'number' &&
130
- Number.isFinite(timex[eventIndex])) {
131
- timeSeconds = timex[eventIndex];
132
- }
133
- else {
134
- console.warn(`Skipping special event with invalid index: index=${eventIndex}, timex.length=${timex.length}`);
135
- return;
136
- }
137
- // Process ALL events that have non-empty string values (keep "0" as valid)
138
- if (valueString && valueString !== '' && eventType !== undefined) {
139
- // Direct device mapping using etypes array
140
- const deviceName = parsedData.etypes?.[eventType];
141
- if (deviceName && deviceName !== '--') {
142
- specialEvents.push({
143
- time: timeSeconds,
144
- name: deviceName.toLowerCase(), // "air", "burner", "drum", "damper"
145
- value: valueString,
146
- });
147
- }
148
- }
149
- });
150
- }
151
- // Create temperature data for roast_temperatures table
152
- const temperatureData = [];
153
- // Add temperature data points (sample to avoid overwhelming database)
154
- const sampleRate = Math.max(1, Math.floor(timex.length / 1000)); // Limit to ~1000 points
155
- timex.forEach((timeSeconds, index) => {
156
- // Include every Nth point, or points with significant temperature changes
157
- if (index % sampleRate === 0 ||
158
- (index > 0 && Math.abs((beanTemps[index] || 0) - (beanTemps[index - 1] || 0)) > 5)) {
159
- temperatureData.push({
160
- roast_id: roastId,
161
- time_seconds: timeSeconds,
162
- bean_temp: beanTemps[index] ?? null,
163
- environmental_temp: envTemps[index] ?? null,
164
- ambient_temp: null, // Artisan doesn't typically have ambient temp
165
- data_source: 'artisan_import',
166
- });
167
- }
168
- });
169
- // Calculate phase percentages
170
- const chargeTime = milestones.charge || 0;
171
- const dropTime = milestones.drop || timex[timex.length - 1];
172
- const totalTime = dropTime - chargeTime;
173
- let dryingPercent = 0;
174
- let maillardPercent = 0;
175
- let developmentPercent = 0;
176
- if (totalTime > 0) {
177
- if (milestones.dry_end && milestones.dry_end > chargeTime) {
178
- dryingPercent = ((milestones.dry_end - chargeTime) / totalTime) * 100;
179
- }
180
- if (milestones.fc_start && milestones.dry_end && milestones.fc_start > milestones.dry_end) {
181
- maillardPercent = ((milestones.fc_start - milestones.dry_end) / totalTime) * 100;
182
- }
183
- if (milestones.fc_start && dropTime > milestones.fc_start) {
184
- developmentPercent = ((dropTime - milestones.fc_start) / totalTime) * 100;
185
- }
186
- }
187
- // Prepare profile data for roast_profiles table (matching schema columns)
188
- const profileData = {
189
- roaster_type: parsedData.roastertype || 'Unknown',
190
- roaster_size: parsedData.roastersize || 0,
191
- temperature_unit: 'F', // Always store as Fahrenheit after conversion
192
- roast_notes: `Imported from Artisan\nRoaster: ${parsedData.roastertype || 'Unknown'}\nOriginal temp unit: ${parsedData.mode}\nWeight unit: ${parsedData.weight?.[2] || 'g'}` +
193
- (parsedData.roastingnotes ? `\n\nNotes: ${parsedData.roastingnotes}` : ''),
194
- roast_uuid: crypto.randomUUID(), // Generate a unique identifier
195
- data_source: 'artisan_import',
196
- };
197
- // Create milestone events for roast_events table
198
- const milestoneEvents = [];
199
- Object.entries(milestones).forEach(([eventName, timeSeconds]) => {
200
- if (timeSeconds && timeSeconds > 0) {
201
- milestoneEvents.push({
202
- roast_id: roastId,
203
- time_seconds: timeSeconds,
204
- event_type: 10, // Milestone event type
205
- event_value: null, // Milestone events have NULL values
206
- event_string: eventName, // 'charge', 'dry_end', 'fc_start', etc.
207
- category: 'milestone',
208
- subcategory: 'roast_phase',
209
- user_generated: false,
210
- automatic: true,
211
- notes: `Imported from Artisan: ${eventName.replace('_', ' ')}`,
212
- });
213
- }
214
- });
215
- // Add turning point milestone if available from computed data
216
- if (computedData.TP_time && computedData.TP_time > 0) {
217
- milestoneEvents.push({
218
- roast_id: roastId,
219
- time_seconds: computedData.TP_time,
220
- event_type: 10, // Milestone event type
221
- event_value: null, // Milestone events have NULL values
222
- event_string: 'turning_point', // TP milestone
223
- category: 'milestone',
224
- subcategory: 'roast_phase',
225
- user_generated: false,
226
- automatic: true,
227
- notes: `Imported from Artisan: turning point at ${computedData.TP_time}s, ${computedData.TP_BT}°F`,
228
- });
229
- }
230
- // Create control events for all extra devices using actual etypes names
231
- const controlEvents = [];
232
- // Process extratemp device data if available
233
- timex.forEach((timeSeconds, index) => {
234
- // Sample control events to avoid overwhelming database
235
- if (index % sampleRate === 0) {
236
- extraDeviceData.forEach((device) => {
237
- const value = device.data[index];
238
- if (value !== null && value !== undefined && value !== 0) {
239
- controlEvents.push({
240
- roast_id: roastId,
241
- time_seconds: timeSeconds,
242
- event_type: 1, // Control event type
243
- event_value: value.toString(),
244
- event_string: device.name, // Use actual etype name from Artisan
245
- category: 'control',
246
- subcategory: 'machine_setting',
247
- user_generated: false,
248
- automatic: true,
249
- });
250
- }
251
- });
252
- }
253
- });
254
- // Add special events as control events if extratemp data was empty
255
- specialEvents.forEach((event) => {
256
- controlEvents.push({
257
- roast_id: roastId,
258
- time_seconds: event.time,
259
- event_type: 1, // Control event type
260
- event_value: event.value,
261
- event_string: event.name, // Use mapped etype name (air, drum, damper, burner)
262
- category: 'control',
263
- subcategory: 'machine_setting',
264
- user_generated: false,
265
- automatic: true,
266
- notes: `Imported from Artisan special events: ${event.name} set to ${event.value}`,
267
- });
268
- });
269
- // Note: roast_phases table no longer exists in normalized schema
270
- // Phase percentages are now stored directly in roast_profiles table
271
- return {
272
- profileData,
273
- temperatureData: temperatureData.sort((a, b) => a.time_seconds - b.time_seconds),
274
- milestones,
275
- phases: {
276
- drying_percent: dryingPercent,
277
- maillard_percent: maillardPercent,
278
- development_percent: developmentPercent,
279
- total_time_seconds: totalTime,
280
- },
281
- computed: {
282
- // Turning point data
283
- tp_time: computedData.TP_time ?? null,
284
- tp_temp: computedData.TP_BT ?? null,
285
- // Rate of rise metrics
286
- dry_phase_ror: computedData.dry_phase_ror ?? null,
287
- mid_phase_ror: computedData.mid_phase_ror ?? null,
288
- finish_phase_ror: computedData.finish_phase_ror ?? null,
289
- total_ror: computedData.total_ror ?? null,
290
- // Advanced metrics
291
- auc: computedData.AUC ?? null,
292
- dry_phase_delta_temp: computedData.dry_phase_delta_temp ?? null,
293
- // Temperature mappings to existing columns (use computed when available)
294
- charge_temp_computed: computedData.CHARGE_BT ?? null,
295
- dry_end_temp_computed: computedData.DRY_BT ?? null,
296
- drop_temp_computed: computedData.DROP_BT ?? null,
297
- cool_temp_computed: computedData.COOL_BT ?? null,
298
- // Time mappings to existing columns
299
- dry_end_time_computed: computedData.DRY_time ?? null,
300
- drop_time_computed: computedData.DROP_time ?? null,
301
- cool_time_computed: computedData.COOL_time ?? null,
302
- },
303
- milestoneEvents,
304
- controlEvents,
305
- };
306
- }
307
- // Full import: parse, transform, persist to DB, update profile
308
- export async function importArtisanData(supabase, roastId, userId, fileContent, fileName, fileSize // original file.size in bytes; falls back to content length if not provided
309
- ) {
310
- // Verify ownership and get existing roast profile data
311
- const { data: profile } = (await supabase
312
- .from('roast_profiles')
313
- .select('user, coffee_name, batch_name')
314
- .eq('roast_id', roastId)
315
- .single());
316
- if (!profile || profile.user !== userId) {
317
- throw new Error('Unauthorized');
318
- }
319
- // Parse file content
320
- const artisanData = await parseArtisanFile(fileContent, fileName);
321
- // Transform to database format
322
- const processedData = transformArtisanData(artisanData, roastId);
323
- // Validate processed data
324
- const validation = validateProcessedData(processedData);
325
- if (!validation.valid) {
326
- throw new Error(`Data processing failed: ${validation.errors.join(', ')}`);
327
- }
328
- // Update roast profile metadata (preserve original coffee_name + add chart ranges)
329
- const { error: updateError } = await supabase
330
- .from('roast_profiles')
331
- .update({
332
- // Keep original coffee_name and batch_name
333
- coffee_name: profile.coffee_name, // Preserve original coffee
334
- batch_name: profile.batch_name, // Preserve original batch name without modification
335
- roaster_type: artisanData.roastertype || 'Unknown',
336
- roaster_size: artisanData.roastersize || 0,
337
- temperature_unit: 'F', // Always store as Fahrenheit
338
- // Chart display settings from Artisan
339
- chart_x_min: artisanData.xmin ?? null,
340
- chart_x_max: artisanData.xmax ?? null,
341
- chart_y_min: artisanData.ymin ?? null,
342
- chart_y_max: artisanData.ymax ?? null,
343
- chart_z_min: artisanData.zmin ?? null,
344
- chart_z_max: artisanData.zmax ?? null,
345
- // Milestone data for quick access (use computed when available)
346
- charge_time: processedData.milestones.charge ?? null,
347
- dry_end_time: (processedData.computed.dry_end_time_computed || processedData.milestones.dry_end) ?? null,
348
- fc_start_time: processedData.milestones.fc_start ?? null,
349
- fc_end_time: processedData.milestones.fc_end ?? null,
350
- sc_start_time: processedData.milestones.sc_start ?? null,
351
- drop_time: (processedData.computed.drop_time_computed || processedData.milestones.drop) ?? null,
352
- cool_time: (processedData.computed.cool_time_computed || processedData.milestones.cool) ?? null,
353
- // Milestone temperatures (use computed when available)
354
- charge_temp: processedData.computed.charge_temp_computed ?? null,
355
- dry_end_temp: processedData.computed.dry_end_temp_computed ?? null,
356
- drop_temp: processedData.computed.drop_temp_computed ?? null,
357
- cool_temp: processedData.computed.cool_temp_computed ?? null,
358
- // Phase calculations
359
- dry_percent: processedData.phases.drying_percent ?? null,
360
- maillard_percent: processedData.phases.maillard_percent ?? null,
361
- development_percent: processedData.phases.development_percent ?? null,
362
- total_roast_time: processedData.phases.total_time_seconds ?? null,
363
- // New computed data fields
364
- tp_time: processedData.computed.tp_time ?? null,
365
- tp_temp: processedData.computed.tp_temp ?? null,
366
- dry_phase_ror: processedData.computed.dry_phase_ror ?? null,
367
- mid_phase_ror: processedData.computed.mid_phase_ror ?? null,
368
- finish_phase_ror: processedData.computed.finish_phase_ror ?? null,
369
- total_ror: processedData.computed.total_ror ?? null,
370
- auc: processedData.computed.auc ?? null,
371
- dry_phase_delta_temp: processedData.computed.dry_phase_delta_temp ?? null,
372
- roast_uuid: processedData.profileData.roast_uuid,
373
- data_source: 'artisan_import',
374
- })
375
- .eq('roast_id', roastId);
376
- if (updateError) {
377
- console.error('Error updating roast profile:', updateError);
378
- throw updateError;
379
- }
380
- // Write data: clear old → insert new.
381
- // If inserts fail, the cleared data is gone — Supabase doesn't support multi-table
382
- // transactions over the REST API. To minimize the corruption window, we clear only
383
- // after fully preparing the new data (already done above), and we attempt to surface
384
- // partial failure clearly so callers can retry.
385
- const allEvents = [...processedData.milestoneEvents, ...processedData.controlEvents];
386
- // 1. Clear existing imported data for this roast
387
- await clearRoastData(supabase, roastId, 'artisan_import');
388
- // 2. Insert temperature data
389
- try {
390
- await insertTemperatures(supabase, processedData.temperatureData);
391
- }
392
- catch (tempError) {
393
- // Temps failed — roast profile is updated but has no temperature data.
394
- // Log and rethrow; caller should surface this as a retriable error.
395
- console.error(`Temperature insert failed for roast ${roastId}:`, tempError);
396
- throw new Error(`Import partially failed: roast profile was updated but temperature data could not be saved. ` +
397
- `Re-running the import will restore the data. Original error: ${tempError instanceof Error ? tempError.message : String(tempError)}`);
398
- }
399
- // 3. Insert milestone + control events
400
- if (allEvents.length > 0) {
401
- try {
402
- await insertEvents(supabase, allEvents);
403
- }
404
- catch (eventError) {
405
- // Events failed — temps are saved, events are not. Non-fatal: temps are the core data.
406
- console.error(`Event insert failed for roast ${roastId}:`, eventError);
407
- // Continue — return a partial success result below
408
- }
409
- }
410
- // Create import log entry
411
- const { error: logError } = await supabase.from('artisan_import_log').insert({
412
- user_id: userId,
413
- roast_id: roastId,
414
- filename: fileName,
415
- file_size: fileSize ?? fileContent.length,
416
- artisan_version: artisanData.version || 'Unknown',
417
- total_data_points: processedData.temperatureData.length,
418
- processing_status: 'success',
419
- processing_messages: [
420
- `Imported ${processedData.temperatureData.length} temperature points`,
421
- `Created ${processedData.milestoneEvents.length} milestone events`,
422
- `Generated ${processedData.controlEvents.length} control events`,
423
- ],
424
- original_data: JSON.stringify({
425
- title: artisanData.title,
426
- roaster: artisanData.roastertype,
427
- weight: artisanData.weight,
428
- temperature_unit: artisanData.mode,
429
- timeindex: artisanData.timeindex,
430
- }),
431
- });
432
- if (logError) {
433
- console.error('Error creating import log:', logError);
434
- // Non-critical, continue
435
- }
436
- return {
437
- success: true,
438
- message: `Successfully imported ${processedData.temperatureData.length} data points from ${fileName}`,
439
- milestones: processedData.milestones,
440
- phases: processedData.phases,
441
- total_time: processedData.phases.total_time_seconds,
442
- temperature_unit: 'F',
443
- milestone_events: processedData.milestoneEvents.length,
444
- control_events: processedData.controlEvents.length,
445
- };
446
- }
447
- //# sourceMappingURL=import.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"import.js","sourceRoot":"","sources":["../../../src/lib/artisan/import.ts"],"names":[],"mappings":"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"}
@@ -1,9 +0,0 @@
1
- export { parseArtisanFile, transformArtisanData, importArtisanData } from './import.js';
2
- export type { ArtisanImportResult } from './import.js';
3
- export { parseAlogFile } from './parser.js';
4
- export { validateArtisanData, validateProcessedData } from './validator.js';
5
- export { convertTemperature, normalizeArtisanTemperatures, artisanModeToUnit, type TemperatureUnit, } from './temperature.js';
6
- export type { ArtisanRoastData, MilestoneData, ProcessedRoastData, ProcessedTemperaturePoint, ValidationResult, } from './types.js';
7
- export { clearRoastData, insertTemperatures, insertEvents } from './db.js';
8
- export type { TemperatureRow, EventRow } from './db.js';
9
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/artisan/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACxF,YAAY,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EACL,kBAAkB,EAClB,4BAA4B,EAC5B,iBAAiB,EACjB,KAAK,eAAe,GACrB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,gBAAgB,EAChB,aAAa,EACb,kBAAkB,EAClB,yBAAyB,EACzB,gBAAgB,GACjB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC3E,YAAY,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC"}
@@ -1,7 +0,0 @@
1
- // Public API
2
- export { parseArtisanFile, transformArtisanData, importArtisanData } from './import.js';
3
- export { parseAlogFile } from './parser.js'; // renamed from processAlogFile
4
- export { validateArtisanData, validateProcessedData } from './validator.js';
5
- export { convertTemperature, normalizeArtisanTemperatures, artisanModeToUnit, } from './temperature.js';
6
- export { clearRoastData, insertTemperatures, insertEvents } from './db.js';
7
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/artisan/index.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAExF,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC,CAAC,+BAA+B;AAC5E,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EACL,kBAAkB,EAClB,4BAA4B,EAC5B,iBAAiB,GAElB,MAAM,kBAAkB,CAAC;AAQ1B,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC"}