@operator-labs/darwin 0.2.0 → 0.4.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.
Files changed (41) hide show
  1. package/README.md +1 -2
  2. package/dist/app.js +69 -11
  3. package/dist/app.js.map +1 -1
  4. package/dist/lib/collaboration-mode.d.ts +5 -0
  5. package/dist/lib/collaboration-mode.js +65 -0
  6. package/dist/lib/collaboration-mode.js.map +1 -0
  7. package/dist/lib/command-surface.d.ts +3 -0
  8. package/dist/lib/command-surface.js +9 -0
  9. package/dist/lib/command-surface.js.map +1 -1
  10. package/dist/lib/operator-harness.d.ts +6 -3
  11. package/dist/lib/operator-harness.js +97 -19
  12. package/dist/lib/operator-harness.js.map +1 -1
  13. package/dist/lib/package-version.d.ts +1 -0
  14. package/dist/lib/package-version.js +7 -0
  15. package/dist/lib/package-version.js.map +1 -0
  16. package/dist/lib/pi-tools.d.ts +2 -1
  17. package/dist/lib/pi-tools.js +27 -1
  18. package/dist/lib/pi-tools.js.map +1 -1
  19. package/dist/ui/components/answer-box.js +4 -5
  20. package/dist/ui/components/answer-box.js.map +1 -1
  21. package/dist/ui/components/footer.d.ts +2 -0
  22. package/dist/ui/components/footer.js +6 -2
  23. package/dist/ui/components/footer.js.map +1 -1
  24. package/dist/ui/components/intro.d.ts +2 -1
  25. package/dist/ui/components/intro.js +5 -2
  26. package/dist/ui/components/intro.js.map +1 -1
  27. package/dist/ui/components/note-box.js +1 -2
  28. package/dist/ui/components/note-box.js.map +1 -1
  29. package/dist/ui/components/response-content.d.ts +9 -0
  30. package/dist/ui/components/response-content.js +47 -0
  31. package/dist/ui/components/response-content.js.map +1 -0
  32. package/dist/ui/components/timeline-chart.d.ts +11 -0
  33. package/dist/ui/components/timeline-chart.js +181 -0
  34. package/dist/ui/components/timeline-chart.js.map +1 -0
  35. package/dist/utils/response-blocks.d.ts +24 -0
  36. package/dist/utils/response-blocks.js +147 -0
  37. package/dist/utils/response-blocks.js.map +1 -0
  38. package/package.json +2 -2
  39. package/dist/utils/markdown-table.d.ts +0 -8
  40. package/dist/utils/markdown-table.js +0 -123
  41. package/dist/utils/markdown-table.js.map +0 -1
@@ -0,0 +1,147 @@
1
+ function parseNumber(value) {
2
+ const normalized = value.trim().replace(/,/g, "");
3
+ if (!normalized) {
4
+ return null;
5
+ }
6
+ const parsed = Number(normalized);
7
+ return Number.isFinite(parsed) ? parsed : null;
8
+ }
9
+ function parseTimestamp(value) {
10
+ const numeric = parseNumber(value);
11
+ if (numeric !== null) {
12
+ return numeric;
13
+ }
14
+ const parsed = Date.parse(value.trim());
15
+ return Number.isFinite(parsed) ? parsed : null;
16
+ }
17
+ function parsePoint(value) {
18
+ const parts = (value.includes("|") ? value.split("|") : value.split(",")).map((part) => part.trim());
19
+ if (parts.length < 2) {
20
+ return null;
21
+ }
22
+ const time = parseTimestamp(parts[0] || "");
23
+ const numericValue = parseNumber(parts[1] || "");
24
+ if (time === null || numericValue === null) {
25
+ return null;
26
+ }
27
+ const series = parts[2] || "default";
28
+ const label = parts[3] || undefined;
29
+ const emphasisValue = (parts[4] || "").toLowerCase();
30
+ return {
31
+ time,
32
+ value: numericValue,
33
+ series,
34
+ label,
35
+ emphasis: emphasisValue === "true" || emphasisValue === "yes" || emphasisValue === "highlight",
36
+ };
37
+ }
38
+ export function parseChartBlock(chartText) {
39
+ const lines = chartText
40
+ .replace(/\r\n/g, "\n")
41
+ .split("\n")
42
+ .map((line) => line.trim())
43
+ .filter(Boolean);
44
+ if (lines.length === 0) {
45
+ return null;
46
+ }
47
+ const points = [];
48
+ let title;
49
+ let yLabel;
50
+ let yMin;
51
+ let yMax;
52
+ let explicitSeriesOrder = [];
53
+ for (const line of lines) {
54
+ const separatorIndex = line.indexOf(":");
55
+ if (separatorIndex === -1) {
56
+ continue;
57
+ }
58
+ const key = line.slice(0, separatorIndex).trim().toLowerCase();
59
+ const value = line.slice(separatorIndex + 1).trim();
60
+ if (!value) {
61
+ continue;
62
+ }
63
+ switch (key) {
64
+ case "title":
65
+ title = value;
66
+ break;
67
+ case "y":
68
+ case "ylabel":
69
+ case "y_label":
70
+ yLabel = value;
71
+ break;
72
+ case "ymin":
73
+ case "y_min": {
74
+ const parsed = parseNumber(value);
75
+ if (parsed !== null) {
76
+ yMin = parsed;
77
+ }
78
+ break;
79
+ }
80
+ case "ymax":
81
+ case "y_max": {
82
+ const parsed = parseNumber(value);
83
+ if (parsed !== null) {
84
+ yMax = parsed;
85
+ }
86
+ break;
87
+ }
88
+ case "series":
89
+ explicitSeriesOrder = value
90
+ .split(",")
91
+ .map((item) => item.trim())
92
+ .filter(Boolean);
93
+ break;
94
+ case "point": {
95
+ const point = parsePoint(value);
96
+ if (point) {
97
+ points.push(point);
98
+ }
99
+ break;
100
+ }
101
+ }
102
+ }
103
+ if (points.length === 0) {
104
+ return null;
105
+ }
106
+ points.sort((a, b) => a.time - b.time);
107
+ const derivedSeries = points.map((point) => point.series).filter((series, index, array) => array.indexOf(series) === index);
108
+ const seriesOrder = explicitSeriesOrder.length > 0 ? explicitSeriesOrder : derivedSeries;
109
+ return {
110
+ title,
111
+ yLabel,
112
+ yMin,
113
+ yMax,
114
+ seriesOrder,
115
+ points,
116
+ };
117
+ }
118
+ export function splitResponseBlocks(text) {
119
+ const blocks = [];
120
+ const regex = /```chart\s*\n([\s\S]*?)```/g;
121
+ let lastIndex = 0;
122
+ for (const match of text.matchAll(regex)) {
123
+ const matchIndex = match.index ?? 0;
124
+ const before = text.slice(lastIndex, matchIndex).trim();
125
+ if (before) {
126
+ blocks.push({ type: "markdown", text: before });
127
+ }
128
+ const chartBody = match[1] ?? "";
129
+ const parsedChart = parseChartBlock(chartBody);
130
+ if (parsedChart) {
131
+ blocks.push({ type: "chart", spec: parsedChart });
132
+ }
133
+ else {
134
+ const rawChart = match[0]?.trim();
135
+ if (rawChart) {
136
+ blocks.push({ type: "markdown", text: rawChart });
137
+ }
138
+ }
139
+ lastIndex = matchIndex + match[0].length;
140
+ }
141
+ const trailing = text.slice(lastIndex).trim();
142
+ if (trailing) {
143
+ blocks.push({ type: "markdown", text: trailing });
144
+ }
145
+ return blocks.length > 0 ? blocks : [{ type: "markdown", text: text.trim() }];
146
+ }
147
+ //# sourceMappingURL=response-blocks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"response-blocks.js","sourceRoot":"","sources":["../../src/utils/response-blocks.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@operator-labs/darwin",
3
- "version": "0.2.0",
3
+ "version": "0.4.0",
4
4
  "description": "Darwin implements natural selection for OpenClaw agents on Operator.io",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -30,7 +30,7 @@
30
30
  "@mariozechner/pi-ai": "^0.58.3",
31
31
  "@mariozechner/pi-coding-agent": "^0.58.3",
32
32
  "@mariozechner/pi-tui": "^0.58.3",
33
- "@operator-labs/sdk": "^0.1.9",
33
+ "@operator-labs/sdk": "0.2.0",
34
34
  "chalk": "^5.6.2",
35
35
  "open": "^10.2.0"
36
36
  },
@@ -1,8 +0,0 @@
1
- export declare function parseMarkdownTable(tableText: string): {
2
- headers: string[];
3
- rows: string[][];
4
- } | null;
5
- export declare function renderBoxTable(headers: string[], rows: string[][]): string;
6
- export declare function transformMarkdownTables(content: string): string;
7
- export declare function transformBold(content: string): string;
8
- export declare function formatResponse(content: string): string;
@@ -1,123 +0,0 @@
1
- import chalk from "chalk";
2
- const BOX = {
3
- topLeft: "┌",
4
- topRight: "┐",
5
- bottomLeft: "└",
6
- bottomRight: "┘",
7
- horizontal: "─",
8
- vertical: "│",
9
- topT: "┬",
10
- bottomT: "┴",
11
- leftT: "├",
12
- rightT: "┤",
13
- cross: "┼",
14
- };
15
- function isNumeric(value) {
16
- const trimmed = value.trim();
17
- return /^[$]?[-+]?[\d,]+\.?\d*[%BMK]?$/.test(trimmed);
18
- }
19
- export function parseMarkdownTable(tableText) {
20
- const lines = tableText.trim().split("\n").map((line) => line.trim());
21
- if (lines.length < 2) {
22
- return null;
23
- }
24
- const headerLine = lines[0];
25
- if (!headerLine.includes("|")) {
26
- return null;
27
- }
28
- const headers = headerLine
29
- .split("|")
30
- .map((cell) => cell.trim())
31
- .filter((_, index, array) => (index > 0 && index < array.length - 1) || array.length === 1);
32
- if (headers.length === 0) {
33
- headers.push(...headerLine.split("|").map((cell) => cell.trim()));
34
- }
35
- const separatorLine = lines[1];
36
- if (!separatorLine || !/^[\s|:-]+$/.test(separatorLine)) {
37
- return null;
38
- }
39
- const rows = [];
40
- for (let index = 2; index < lines.length; index += 1) {
41
- const line = lines[index];
42
- if (!line.includes("|")) {
43
- continue;
44
- }
45
- const cells = line.split("|").map((cell) => cell.trim());
46
- if (cells[0] === "") {
47
- cells.shift();
48
- }
49
- if (cells[cells.length - 1] === "") {
50
- cells.pop();
51
- }
52
- if (cells.length > 0) {
53
- rows.push(cells);
54
- }
55
- }
56
- return headers.length > 0 ? { headers, rows } : null;
57
- }
58
- export function renderBoxTable(headers, rows) {
59
- const widths = headers.map((header) => header.length);
60
- for (const row of rows) {
61
- for (let index = 0; index < row.length; index += 1) {
62
- if (index < widths.length) {
63
- widths[index] = Math.max(widths[index], row[index].length);
64
- }
65
- }
66
- }
67
- const alignRight = headers.map((_, index) => {
68
- let numericCount = 0;
69
- for (const row of rows) {
70
- if (row[index] && isNumeric(row[index])) {
71
- numericCount += 1;
72
- }
73
- }
74
- return numericCount > rows.length / 2;
75
- });
76
- const pad = (value, width, right) => right ? value.padStart(width) : value.padEnd(width);
77
- const lines = [];
78
- lines.push(BOX.topLeft + widths.map((width) => BOX.horizontal.repeat(width + 2)).join(BOX.topT) + BOX.topRight);
79
- lines.push(BOX.vertical +
80
- headers.map((header, index) => ` ${pad(header, widths[index], false)} `).join(BOX.vertical) +
81
- BOX.vertical);
82
- lines.push(BOX.leftT + widths.map((width) => BOX.horizontal.repeat(width + 2)).join(BOX.cross) + BOX.rightT);
83
- for (const row of rows) {
84
- lines.push(BOX.vertical +
85
- widths
86
- .map((width, index) => ` ${pad(row[index] || "", width, alignRight[index])} `)
87
- .join(BOX.vertical) +
88
- BOX.vertical);
89
- }
90
- lines.push(BOX.bottomLeft +
91
- widths.map((width) => BOX.horizontal.repeat(width + 2)).join(BOX.bottomT) +
92
- BOX.bottomRight);
93
- return lines.join("\n");
94
- }
95
- export function transformMarkdownTables(content) {
96
- const normalized = content
97
- .replace(/\r\n/g, "\n")
98
- .split("\n")
99
- .map((line) => line.trimEnd())
100
- .join("\n");
101
- const tableRegex = /^(\|[^\n]+\|\n\|[-:| \t]+\|(?:\n\|[^\n]+\|)*)/gm;
102
- const tableRegex2 = /^([^\n|]*\|[^\n]+\n[-:| \t]+(?:\n[^\n|]*\|[^\n]+)*)/gm;
103
- let result = normalized;
104
- result = result.replace(tableRegex, (match) => {
105
- const parsed = parseMarkdownTable(match);
106
- return parsed && parsed.rows.length > 0 ? renderBoxTable(parsed.headers, parsed.rows) : match;
107
- });
108
- result = result.replace(tableRegex2, (match) => {
109
- if (match.includes(BOX.topLeft)) {
110
- return match;
111
- }
112
- const parsed = parseMarkdownTable(match);
113
- return parsed && parsed.rows.length > 0 ? renderBoxTable(parsed.headers, parsed.rows) : match;
114
- });
115
- return result;
116
- }
117
- export function transformBold(content) {
118
- return content.replace(/\*\*([^*]+)\*\*/g, (_, text) => chalk.bold(text));
119
- }
120
- export function formatResponse(content) {
121
- return transformBold(transformMarkdownTables(content));
122
- }
123
- //# sourceMappingURL=markdown-table.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"markdown-table.js","sourceRoot":"","sources":["../../src/utils/markdown-table.ts"],"names":[],"mappings":"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"}