@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.
@@ -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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"}
@@ -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.NamedExoticComponent<TodoPanelProps>;
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.10",
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": "^3.0.3",
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": "^20.14.0",
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": "^5.5.0",
60
+ "typescript": "^6.0.3",
61
61
  "vitest": "^4.1.5"
62
62
  }
63
63
  }