@poping/yome 0.0.10 → 0.0.12
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/dist/commands/mesh.js +2 -0
- package/dist/commands/mesh.js.map +1 -1
- package/dist/daemon/triggers/cron.js.map +1 -1
- package/dist/mesh/capabilities.js +1 -1
- package/dist/mesh/capabilities.js.map +1 -1
- package/dist/mesh/device-registrar.d.ts +3 -0
- package/dist/mesh/device-registrar.js +3 -0
- package/dist/mesh/device-registrar.js.map +1 -1
- package/dist/mesh/index.d.ts +2 -0
- package/dist/mesh/index.js +4 -1
- package/dist/mesh/index.js.map +1 -1
- package/dist/mesh/rpc-handler-path.test.js +36 -3
- package/dist/mesh/rpc-handler-path.test.js.map +1 -1
- package/dist/mesh/rpc-handler.d.ts +6 -3
- package/dist/mesh/rpc-handler.js +34 -32
- package/dist/mesh/rpc-handler.js.map +1 -1
- package/dist/mesh/thread-stream.d.ts +15 -0
- package/dist/mesh/thread-stream.js +12 -7
- package/dist/mesh/thread-stream.js.map +1 -1
- package/dist/mesh/types.d.ts +2 -0
- package/dist/ui/Banner.d.ts +1 -1
- package/dist/ui/Markdown.d.ts +2 -2
- package/dist/ui/MeshApp.js +123 -11
- package/dist/ui/MeshApp.js.map +1 -1
- package/dist/ui/MessageList.d.ts +1 -1
- package/dist/ui/ThreadPicker.d.ts +11 -0
- package/dist/ui/ThreadPicker.js +62 -0
- package/dist/ui/ThreadPicker.js.map +1 -0
- package/dist/ui/TodoPanel.d.ts +1 -1
- package/package.json +4 -4
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useMemo, useState } from 'react';
|
|
3
|
+
import { Box, Text, useInput } from 'ink';
|
|
4
|
+
const MAX_VISIBLE = 10;
|
|
5
|
+
function formatDate(ms) {
|
|
6
|
+
const diffMin = Math.floor((Date.now() - ms) / 60000);
|
|
7
|
+
if (diffMin < 1)
|
|
8
|
+
return 'just now';
|
|
9
|
+
if (diffMin < 60)
|
|
10
|
+
return `${diffMin}m ago`;
|
|
11
|
+
const diffHr = Math.floor(diffMin / 60);
|
|
12
|
+
if (diffHr < 24)
|
|
13
|
+
return `${diffHr}h ago`;
|
|
14
|
+
const diffDay = Math.floor(diffHr / 24);
|
|
15
|
+
if (diffDay < 7)
|
|
16
|
+
return `${diffDay}d ago`;
|
|
17
|
+
return new Date(ms).toLocaleDateString('en-US', { month: 'short', day: 'numeric' });
|
|
18
|
+
}
|
|
19
|
+
export function ThreadPicker({ threads, loading, error, onSelect, onRefresh, onCancel }) {
|
|
20
|
+
const [cursor, setCursor] = useState(0);
|
|
21
|
+
const items = useMemo(() => [{ id: '', title: 'New/default thread', updatedAt: Date.now(), isNew: true }, ...threads], [threads]);
|
|
22
|
+
useInput((input, key) => {
|
|
23
|
+
if (key.upArrow) {
|
|
24
|
+
setCursor((prev) => (prev > 0 ? prev - 1 : items.length - 1));
|
|
25
|
+
}
|
|
26
|
+
else if (key.downArrow) {
|
|
27
|
+
setCursor((prev) => (prev < items.length - 1 ? prev + 1 : 0));
|
|
28
|
+
}
|
|
29
|
+
else if (key.return) {
|
|
30
|
+
const item = items[cursor];
|
|
31
|
+
if (item)
|
|
32
|
+
onSelect(item.isNew ? undefined : item.id);
|
|
33
|
+
}
|
|
34
|
+
else if (input === 'r' || input === 'R') {
|
|
35
|
+
onRefresh();
|
|
36
|
+
}
|
|
37
|
+
else if (key.escape || (key.ctrl && (input === 'c' || input === 'C'))) {
|
|
38
|
+
onCancel();
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
const visibleStart = useMemo(() => {
|
|
42
|
+
if (items.length <= MAX_VISIBLE)
|
|
43
|
+
return 0;
|
|
44
|
+
const half = Math.floor(MAX_VISIBLE / 2);
|
|
45
|
+
let start = cursor - half;
|
|
46
|
+
if (start < 0)
|
|
47
|
+
start = 0;
|
|
48
|
+
if (start + MAX_VISIBLE > items.length)
|
|
49
|
+
start = items.length - MAX_VISIBLE;
|
|
50
|
+
return start;
|
|
51
|
+
}, [cursor, items.length]);
|
|
52
|
+
const visibleItems = items.slice(visibleStart, visibleStart + MAX_VISIBLE);
|
|
53
|
+
return (_jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: "gray", paddingX: 1, children: [_jsxs(Box, { marginBottom: 1, children: [_jsx(Text, { bold: true, color: "#E87B35", children: "Threads" }), _jsx(Text, { dimColor: true, children: " - choose where this terminal should attach" })] }), loading && _jsx(Text, { dimColor: true, children: "Loading threads..." }), error && _jsx(Text, { color: "red", children: error }), !loading && visibleStart > 0 && _jsx(Text, { dimColor: true, children: " ^ more" }), !loading && visibleItems.map((thread, vi) => {
|
|
54
|
+
const realIdx = visibleStart + vi;
|
|
55
|
+
const focused = realIdx === cursor;
|
|
56
|
+
const pointer = focused ? '>' : ' ';
|
|
57
|
+
const title = thread.title?.trim() || '(untitled)';
|
|
58
|
+
const clipped = title.length > 64 ? `${title.slice(0, 61)}...` : title;
|
|
59
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { children: [_jsxs(Text, { color: focused ? '#E87B35' : undefined, children: [pointer, " "] }), _jsx(Text, { bold: thread.isNew, color: focused ? '#E87B35' : undefined, children: clipped })] }), !thread.isNew && (_jsxs(Box, { children: [_jsx(Text, { children: ' ' }), _jsx(Text, { dimColor: true, children: formatDate(thread.updatedAt) }), _jsx(Text, { dimColor: true, children: ' - ' }), _jsx(Text, { dimColor: true, children: thread.id.slice(0, 12) })] }))] }, `${thread.id || 'new'}-${realIdx}`));
|
|
60
|
+
}), !loading && visibleStart + MAX_VISIBLE < items.length && _jsx(Text, { dimColor: true, children: " v more" }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { dimColor: true, children: "Up/Down navigate Enter attach r refresh Esc exit" }) })] }));
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=ThreadPicker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ThreadPicker.js","sourceRoot":"","sources":["../../src/ui/ThreadPicker.tsx"],"names":[],"mappings":"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"}
|
package/dist/ui/TodoPanel.d.ts
CHANGED
|
@@ -3,5 +3,5 @@ import type { TodoItem } from '../state/todos.js';
|
|
|
3
3
|
interface TodoPanelProps {
|
|
4
4
|
todos: TodoItem[];
|
|
5
5
|
}
|
|
6
|
-
export declare const TodoPanel: React.
|
|
6
|
+
export declare const TodoPanel: React.MemoExoticComponent<({ todos }: TodoPanelProps) => import("react/jsx-runtime").JSX.Element | null>;
|
|
7
7
|
export {};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@poping/yome",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.12",
|
|
4
4
|
"description": "Yome Agent — the open-source Empower Kernel CLI",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -47,17 +47,17 @@
|
|
|
47
47
|
"ink-text-input": "^6.0.0",
|
|
48
48
|
"marked": "^17.0.6",
|
|
49
49
|
"meow": "^13.0.0",
|
|
50
|
-
"node-cron": "^
|
|
50
|
+
"node-cron": "^4.2.1",
|
|
51
51
|
"react": "^18.3.1",
|
|
52
52
|
"ws": "^8.20.1"
|
|
53
53
|
},
|
|
54
54
|
"devDependencies": {
|
|
55
55
|
"@types/bun": "latest",
|
|
56
|
-
"@types/node": "^
|
|
56
|
+
"@types/node": "^25.9.1",
|
|
57
57
|
"@types/node-cron": "^3.0.11",
|
|
58
58
|
"@types/react": "^18.3.3",
|
|
59
59
|
"@types/ws": "^8.18.1",
|
|
60
|
-
"typescript": "^
|
|
60
|
+
"typescript": "^6.0.3",
|
|
61
61
|
"vitest": "^4.1.5"
|
|
62
62
|
}
|
|
63
63
|
}
|