@nex-ai/nex 0.1.21 → 0.1.23
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 +11 -2
- package/dist/agent/adoption.d.ts +23 -0
- package/dist/agent/adoption.js +87 -0
- package/dist/agent/adoption.js.map +1 -0
- package/dist/agent/gossip.d.ts +17 -0
- package/dist/agent/gossip.js +48 -0
- package/dist/agent/gossip.js.map +1 -0
- package/dist/agent/loop.d.ts +59 -0
- package/dist/agent/loop.js +389 -0
- package/dist/agent/loop.js.map +1 -0
- package/dist/agent/queues.d.ts +16 -0
- package/dist/agent/queues.js +44 -0
- package/dist/agent/queues.js.map +1 -0
- package/dist/agent/session-store.d.ts +21 -0
- package/dist/agent/session-store.js +96 -0
- package/dist/agent/session-store.js.map +1 -0
- package/dist/agent/templates.d.ts +5 -0
- package/dist/agent/templates.js +48 -0
- package/dist/agent/templates.js.map +1 -0
- package/dist/agent/tools.d.ts +25 -0
- package/dist/agent/tools.js +238 -0
- package/dist/agent/tools.js.map +1 -0
- package/dist/agent/types.d.ts +59 -0
- package/dist/agent/types.js +5 -0
- package/dist/agent/types.js.map +1 -0
- package/dist/calendar/scheduler.d.ts +32 -0
- package/dist/calendar/scheduler.js +178 -0
- package/dist/calendar/scheduler.js.map +1 -0
- package/dist/calendar/store.d.ts +15 -0
- package/dist/calendar/store.js +50 -0
- package/dist/calendar/store.js.map +1 -0
- package/dist/calendar/types.d.ts +17 -0
- package/dist/calendar/types.js +5 -0
- package/dist/calendar/types.js.map +1 -0
- package/dist/chat/channel.d.ts +20 -0
- package/dist/chat/channel.js +84 -0
- package/dist/chat/channel.js.map +1 -0
- package/dist/chat/message-store.d.ts +18 -0
- package/dist/chat/message-store.js +82 -0
- package/dist/chat/message-store.js.map +1 -0
- package/dist/chat/router.d.ts +17 -0
- package/dist/chat/router.js +65 -0
- package/dist/chat/router.js.map +1 -0
- package/dist/chat/suggested-responses.d.ts +6 -0
- package/dist/chat/suggested-responses.js +99 -0
- package/dist/chat/suggested-responses.js.map +1 -0
- package/dist/chat/types.d.ts +28 -0
- package/dist/chat/types.js +5 -0
- package/dist/chat/types.js.map +1 -0
- package/dist/cli.js +3 -1
- package/dist/cli.js.map +1 -1
- package/dist/commands/dispatch.d.ts +39 -0
- package/dist/commands/dispatch.js +1293 -0
- package/dist/commands/dispatch.js.map +1 -0
- package/dist/commands/init.d.ts +49 -0
- package/dist/commands/init.js +315 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/parse-input.d.ts +5 -0
- package/dist/commands/parse-input.js +37 -0
- package/dist/commands/parse-input.js.map +1 -0
- package/dist/index.d.ts +6 -23
- package/dist/index.js +118 -50
- package/dist/index.js.map +1 -1
- package/dist/lib/client.js +1 -1
- package/dist/lib/client.js.map +1 -1
- package/dist/lib/errors.js +1 -1
- package/dist/lib/errors.js.map +1 -1
- package/dist/lib/graph-html.d.ts +1 -0
- package/dist/lib/graph-html.js +16 -3
- package/dist/lib/graph-html.js.map +1 -1
- package/dist/lib/integrations.d.ts +23 -0
- package/dist/lib/integrations.js +25 -0
- package/dist/lib/integrations.js.map +1 -0
- package/dist/lib/nex-mcp-config.d.ts +14 -0
- package/dist/lib/nex-mcp-config.js +26 -0
- package/dist/lib/nex-mcp-config.js.map +1 -0
- package/dist/orchestration/budget.d.ts +32 -0
- package/dist/orchestration/budget.js +72 -0
- package/dist/orchestration/budget.js.map +1 -0
- package/dist/orchestration/executor.d.ts +59 -0
- package/dist/orchestration/executor.js +197 -0
- package/dist/orchestration/executor.js.map +1 -0
- package/dist/orchestration/router.d.ts +30 -0
- package/dist/orchestration/router.js +98 -0
- package/dist/orchestration/router.js.map +1 -0
- package/dist/orchestration/templates.d.ts +11 -0
- package/dist/orchestration/templates.js +99 -0
- package/dist/orchestration/templates.js.map +1 -0
- package/dist/orchestration/types.d.ts +58 -0
- package/dist/orchestration/types.js +7 -0
- package/dist/orchestration/types.js.map +1 -0
- package/dist/plugin/shared.js +1 -1
- package/dist/plugin/shared.js.map +1 -1
- package/dist/tui/agent-colors.d.ts +19 -0
- package/dist/tui/agent-colors.js +34 -0
- package/dist/tui/agent-colors.js.map +1 -0
- package/dist/tui/app.d.ts +14 -0
- package/dist/tui/app.js +267 -0
- package/dist/tui/app.js.map +1 -0
- package/dist/tui/channel-colors.d.ts +16 -0
- package/dist/tui/channel-colors.js +43 -0
- package/dist/tui/channel-colors.js.map +1 -0
- package/dist/tui/components/agent-card.d.ts +11 -0
- package/dist/tui/components/agent-card.js +40 -0
- package/dist/tui/components/agent-card.js.map +1 -0
- package/dist/tui/components/banner.d.ts +44 -0
- package/dist/tui/components/banner.js +130 -0
- package/dist/tui/components/banner.js.map +1 -0
- package/dist/tui/components/channel-colors.d.ts +21 -0
- package/dist/tui/components/channel-colors.js +53 -0
- package/dist/tui/components/channel-colors.js.map +1 -0
- package/dist/tui/components/channel-message.d.ts +53 -0
- package/dist/tui/components/channel-message.js +66 -0
- package/dist/tui/components/channel-message.js.map +1 -0
- package/dist/tui/components/chat-input.d.ts +11 -0
- package/dist/tui/components/chat-input.js +19 -0
- package/dist/tui/components/chat-input.js.map +1 -0
- package/dist/tui/components/data-table.d.ts +11 -0
- package/dist/tui/components/data-table.js +47 -0
- package/dist/tui/components/data-table.js.map +1 -0
- package/dist/tui/components/error-box.d.ts +11 -0
- package/dist/tui/components/error-box.js +59 -0
- package/dist/tui/components/error-box.js.map +1 -0
- package/dist/tui/components/help-screen.d.ts +3 -0
- package/dist/tui/components/help-screen.js +63 -0
- package/dist/tui/components/help-screen.js.map +1 -0
- package/dist/tui/components/index.d.ts +17 -0
- package/dist/tui/components/index.js +10 -0
- package/dist/tui/components/index.js.map +1 -0
- package/dist/tui/components/inline-confirm.d.ts +14 -0
- package/dist/tui/components/inline-confirm.js +13 -0
- package/dist/tui/components/inline-confirm.js.map +1 -0
- package/dist/tui/components/inline-select.d.ts +21 -0
- package/dist/tui/components/inline-select.js +20 -0
- package/dist/tui/components/inline-select.js.map +1 -0
- package/dist/tui/components/markdown.d.ts +6 -0
- package/dist/tui/components/markdown.js +179 -0
- package/dist/tui/components/markdown.js.map +1 -0
- package/dist/tui/components/mention-autocomplete.d.ts +77 -0
- package/dist/tui/components/mention-autocomplete.js +235 -0
- package/dist/tui/components/mention-autocomplete.js.map +1 -0
- package/dist/tui/components/message-list.d.ts +18 -0
- package/dist/tui/components/message-list.js +29 -0
- package/dist/tui/components/message-list.js.map +1 -0
- package/dist/tui/components/picker.d.ts +16 -0
- package/dist/tui/components/picker.js +32 -0
- package/dist/tui/components/picker.js.map +1 -0
- package/dist/tui/components/progress-steps.d.ts +13 -0
- package/dist/tui/components/progress-steps.js +21 -0
- package/dist/tui/components/progress-steps.js.map +1 -0
- package/dist/tui/components/slack/compose.d.ts +27 -0
- package/dist/tui/components/slack/compose.js +123 -0
- package/dist/tui/components/slack/compose.js.map +1 -0
- package/dist/tui/components/slack/layout.d.ts +36 -0
- package/dist/tui/components/slack/layout.js +96 -0
- package/dist/tui/components/slack/layout.js.map +1 -0
- package/dist/tui/components/slack/messages.d.ts +72 -0
- package/dist/tui/components/slack/messages.js +177 -0
- package/dist/tui/components/slack/messages.js.map +1 -0
- package/dist/tui/components/slack/quick-switcher.d.ts +33 -0
- package/dist/tui/components/slack/quick-switcher.js +98 -0
- package/dist/tui/components/slack/quick-switcher.js.map +1 -0
- package/dist/tui/components/slack/sidebar-types.d.ts +65 -0
- package/dist/tui/components/slack/sidebar-types.js +7 -0
- package/dist/tui/components/slack/sidebar-types.js.map +1 -0
- package/dist/tui/components/slack/sidebar.d.ts +46 -0
- package/dist/tui/components/slack/sidebar.js +52 -0
- package/dist/tui/components/slack/sidebar.js.map +1 -0
- package/dist/tui/components/slack/thread-panel.d.ts +45 -0
- package/dist/tui/components/slack/thread-panel.js +47 -0
- package/dist/tui/components/slack/thread-panel.js.map +1 -0
- package/dist/tui/components/slash-autocomplete.d.ts +81 -0
- package/dist/tui/components/slash-autocomplete.js +218 -0
- package/dist/tui/components/slash-autocomplete.js.map +1 -0
- package/dist/tui/components/spinner.d.ts +17 -0
- package/dist/tui/components/spinner.js +30 -0
- package/dist/tui/components/spinner.js.map +1 -0
- package/dist/tui/components/status-bar.d.ts +23 -0
- package/dist/tui/components/status-bar.js +55 -0
- package/dist/tui/components/status-bar.js.map +1 -0
- package/dist/tui/components/success-box.d.ts +7 -0
- package/dist/tui/components/success-box.js +10 -0
- package/dist/tui/components/success-box.js.map +1 -0
- package/dist/tui/components/tool-indicator.d.ts +12 -0
- package/dist/tui/components/tool-indicator.js +18 -0
- package/dist/tui/components/tool-indicator.js.map +1 -0
- package/dist/tui/components/viewport.d.ts +9 -0
- package/dist/tui/components/viewport.js +24 -0
- package/dist/tui/components/viewport.js.map +1 -0
- package/dist/tui/generative/bindings.d.ts +27 -0
- package/dist/tui/generative/bindings.js +152 -0
- package/dist/tui/generative/bindings.js.map +1 -0
- package/dist/tui/generative/registry.d.ts +19 -0
- package/dist/tui/generative/registry.js +31 -0
- package/dist/tui/generative/registry.js.map +1 -0
- package/dist/tui/generative/renderer.d.ts +24 -0
- package/dist/tui/generative/renderer.js +160 -0
- package/dist/tui/generative/renderer.js.map +1 -0
- package/dist/tui/generative/types.d.ts +68 -0
- package/dist/tui/generative/types.js +7 -0
- package/dist/tui/generative/types.js.map +1 -0
- package/dist/tui/hooks/use-cancellable.d.ts +28 -0
- package/dist/tui/hooks/use-cancellable.js +51 -0
- package/dist/tui/hooks/use-cancellable.js.map +1 -0
- package/dist/tui/hooks/use-streaming.d.ts +44 -0
- package/dist/tui/hooks/use-streaming.js +105 -0
- package/dist/tui/hooks/use-streaming.js.map +1 -0
- package/dist/tui/index.d.ts +4 -0
- package/dist/tui/index.js +7 -0
- package/dist/tui/index.js.map +1 -0
- package/dist/tui/keybindings.d.ts +25 -0
- package/dist/tui/keybindings.js +277 -0
- package/dist/tui/keybindings.js.map +1 -0
- package/dist/tui/register-views.d.ts +8 -0
- package/dist/tui/register-views.js +116 -0
- package/dist/tui/register-views.js.map +1 -0
- package/dist/tui/router.d.ts +29 -0
- package/dist/tui/router.js +87 -0
- package/dist/tui/router.js.map +1 -0
- package/dist/tui/services/agent-service.d.ts +58 -0
- package/dist/tui/services/agent-service.js +197 -0
- package/dist/tui/services/agent-service.js.map +1 -0
- package/dist/tui/services/calendar-service.d.ts +31 -0
- package/dist/tui/services/calendar-service.js +133 -0
- package/dist/tui/services/calendar-service.js.map +1 -0
- package/dist/tui/services/chat-service.d.ts +28 -0
- package/dist/tui/services/chat-service.js +91 -0
- package/dist/tui/services/chat-service.js.map +1 -0
- package/dist/tui/services/orchestration-service.d.ts +42 -0
- package/dist/tui/services/orchestration-service.js +153 -0
- package/dist/tui/services/orchestration-service.js.map +1 -0
- package/dist/tui/slash-commands.d.ts +106 -0
- package/dist/tui/slash-commands.js +1421 -0
- package/dist/tui/slash-commands.js.map +1 -0
- package/dist/tui/store.d.ts +96 -0
- package/dist/tui/store.js +120 -0
- package/dist/tui/store.js.map +1 -0
- package/dist/tui/theme.d.ts +40 -0
- package/dist/tui/theme.js +39 -0
- package/dist/tui/theme.js.map +1 -0
- package/dist/tui/tui-context.d.ts +22 -0
- package/dist/tui/tui-context.js +17 -0
- package/dist/tui/tui-context.js.map +1 -0
- package/dist/tui/views/agent-list.d.ts +8 -0
- package/dist/tui/views/agent-list.js +11 -0
- package/dist/tui/views/agent-list.js.map +1 -0
- package/dist/tui/views/ask-chat.d.ts +9 -0
- package/dist/tui/views/ask-chat.js +40 -0
- package/dist/tui/views/ask-chat.js.map +1 -0
- package/dist/tui/views/calendar.d.ts +15 -0
- package/dist/tui/views/calendar.js +29 -0
- package/dist/tui/views/calendar.js.map +1 -0
- package/dist/tui/views/chat.d.ts +18 -0
- package/dist/tui/views/chat.js +28 -0
- package/dist/tui/views/chat.js.map +1 -0
- package/dist/tui/views/generative.d.ts +14 -0
- package/dist/tui/views/generative.js +37 -0
- package/dist/tui/views/generative.js.map +1 -0
- package/dist/tui/views/help.d.ts +6 -0
- package/dist/tui/views/help.js +9 -0
- package/dist/tui/views/help.js.map +1 -0
- package/dist/tui/views/home-screen.d.ts +67 -0
- package/dist/tui/views/home-screen.js +192 -0
- package/dist/tui/views/home-screen.js.map +1 -0
- package/dist/tui/views/home.d.ts +33 -0
- package/dist/tui/views/home.js +60 -0
- package/dist/tui/views/home.js.map +1 -0
- package/dist/tui/views/index.d.ts +20 -0
- package/dist/tui/views/index.js +11 -0
- package/dist/tui/views/index.js.map +1 -0
- package/dist/tui/views/insights.d.ts +19 -0
- package/dist/tui/views/insights.js +46 -0
- package/dist/tui/views/insights.js.map +1 -0
- package/dist/tui/views/orchestration.d.ts +18 -0
- package/dist/tui/views/orchestration.js +73 -0
- package/dist/tui/views/orchestration.js.map +1 -0
- package/dist/tui/views/record-detail.d.ts +10 -0
- package/dist/tui/views/record-detail.js +22 -0
- package/dist/tui/views/record-detail.js.map +1 -0
- package/dist/tui/views/record-list.d.ts +15 -0
- package/dist/tui/views/record-list.js +22 -0
- package/dist/tui/views/record-list.js.map +1 -0
- package/dist/tui/views/slack-channel-header.d.ts +15 -0
- package/dist/tui/views/slack-channel-header.js +16 -0
- package/dist/tui/views/slack-channel-header.js.map +1 -0
- package/dist/tui/views/slack-home.d.ts +21 -0
- package/dist/tui/views/slack-home.js +572 -0
- package/dist/tui/views/slack-home.js.map +1 -0
- package/dist/tui/views/task-board.d.ts +21 -0
- package/dist/tui/views/task-board.js +33 -0
- package/dist/tui/views/task-board.js.map +1 -0
- package/dist/tui/views/timeline.d.ts +17 -0
- package/dist/tui/views/timeline.js +24 -0
- package/dist/tui/views/timeline.js.map +1 -0
- package/package.json +8 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"insights.js","sourceRoot":"","sources":["../../../src/tui/views/insights.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Orchestration dashboard view.
|
|
3
|
+
* Shows active goals, task pool, per-agent budgets, and global budget.
|
|
4
|
+
*/
|
|
5
|
+
import React from 'react';
|
|
6
|
+
import type { GoalDefinition, TaskDefinition, BudgetSnapshot } from '../../orchestration/types.js';
|
|
7
|
+
export interface OrchestrationViewProps {
|
|
8
|
+
goals: GoalDefinition[];
|
|
9
|
+
tasks: TaskDefinition[];
|
|
10
|
+
budgets: BudgetSnapshot[];
|
|
11
|
+
globalBudget: {
|
|
12
|
+
tokens: number;
|
|
13
|
+
cost: number;
|
|
14
|
+
percentTokens: number;
|
|
15
|
+
percentCost: number;
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
export declare function OrchestrationView({ goals, tasks, budgets, globalBudget, }: OrchestrationViewProps): React.JSX.Element;
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Box, Text } from 'ink';
|
|
3
|
+
// ── Helpers ──
|
|
4
|
+
function statusIcon(status) {
|
|
5
|
+
switch (status) {
|
|
6
|
+
case 'completed':
|
|
7
|
+
return '\u25CF'; // filled circle
|
|
8
|
+
case 'in_progress':
|
|
9
|
+
case 'locked':
|
|
10
|
+
return '\u25D0'; // half circle
|
|
11
|
+
case 'failed':
|
|
12
|
+
return '\u2716'; // cross
|
|
13
|
+
case 'active':
|
|
14
|
+
return '\u25D0';
|
|
15
|
+
case 'paused':
|
|
16
|
+
return '\u25CB'; // open circle
|
|
17
|
+
default:
|
|
18
|
+
return '\u25CB';
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
function statusColor(status) {
|
|
22
|
+
switch (status) {
|
|
23
|
+
case 'completed':
|
|
24
|
+
return 'green';
|
|
25
|
+
case 'in_progress':
|
|
26
|
+
case 'locked':
|
|
27
|
+
case 'active':
|
|
28
|
+
return 'yellow';
|
|
29
|
+
case 'failed':
|
|
30
|
+
return 'red';
|
|
31
|
+
default:
|
|
32
|
+
return 'gray';
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
function budgetBar(percent, width = 10) {
|
|
36
|
+
const clamped = Math.max(0, Math.min(100, percent));
|
|
37
|
+
const filled = Math.round((clamped / 100) * width);
|
|
38
|
+
const empty = width - filled;
|
|
39
|
+
return '\u2588'.repeat(filled) + '\u2591'.repeat(empty);
|
|
40
|
+
}
|
|
41
|
+
function countByStatus(tasks, status) {
|
|
42
|
+
return tasks.filter((t) => t.status === status).length;
|
|
43
|
+
}
|
|
44
|
+
// ── Sub-components ──
|
|
45
|
+
function GoalRow({ goal, tasks, }) {
|
|
46
|
+
const goalTasks = tasks.filter((t) => t.parentGoalId === goal.id);
|
|
47
|
+
const completed = goalTasks.filter((t) => t.status === 'completed').length;
|
|
48
|
+
const total = goalTasks.length;
|
|
49
|
+
return (_jsxs(Box, { children: [_jsxs(Text, { color: "gray", children: [goal === undefined ? '\u2514' : '\u251C', " "] }), _jsxs(Text, { children: [goal.title, " "] }), _jsxs(Text, { color: "gray", children: ["[", completed, "/", total, " tasks] "] }), _jsxs(Text, { color: statusColor(goal.status), children: [statusIcon(goal.status), " ", goal.status] })] }));
|
|
50
|
+
}
|
|
51
|
+
function GoalSection({ goals, tasks, }) {
|
|
52
|
+
if (goals.length === 0) {
|
|
53
|
+
return (_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsx(Text, { bold: true, children: "Goals" }), _jsx(Text, { color: "gray", children: " No goals defined yet." })] }));
|
|
54
|
+
}
|
|
55
|
+
const active = goals.filter((g) => g.status === 'active').length;
|
|
56
|
+
return (_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsxs(Text, { bold: true, children: ["Goals (", active, " active)"] }), goals.map((goal, i) => (_jsx(GoalRow, { goal: goal, tasks: tasks }, goal.id ?? i)))] }));
|
|
57
|
+
}
|
|
58
|
+
function TaskPoolSection({ tasks, }) {
|
|
59
|
+
const completed = countByStatus(tasks, 'completed');
|
|
60
|
+
const inProgress = countByStatus(tasks, 'in_progress') + countByStatus(tasks, 'locked');
|
|
61
|
+
const pending = countByStatus(tasks, 'pending');
|
|
62
|
+
const failed = countByStatus(tasks, 'failed');
|
|
63
|
+
return (_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsx(Text, { bold: true, children: "Task Pool" }), _jsxs(Box, { gap: 2, children: [_jsxs(Text, { color: "green", children: ['\u25CF', " ", completed, " completed"] }), _jsxs(Text, { color: "yellow", children: ['\u25D0', " ", inProgress, " in progress"] }), _jsxs(Text, { color: "gray", children: ['\u25CB', " ", pending, " pending"] }), failed > 0 && (_jsxs(Text, { color: "red", children: ['\u2716', " ", failed, " failed"] }))] })] }));
|
|
64
|
+
}
|
|
65
|
+
function BudgetSection({ budgets, globalBudget, }) {
|
|
66
|
+
const globalPercent = Math.max(globalBudget.percentTokens, globalBudget.percentCost);
|
|
67
|
+
return (_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsx(Text, { bold: true, children: "Budget" }), budgets.map((b) => (_jsxs(Box, { gap: 1, children: [_jsx(Text, { children: b.agentSlug.padEnd(14) }), _jsx(Text, { color: b.warning ? 'red' : b.percentUsed > 50 ? 'yellow' : 'green', children: budgetBar(b.percentUsed) }), _jsxs(Text, { children: [" ", Math.round(b.percentUsed), "%"] }), _jsxs(Text, { color: "gray", children: [" $", b.costUsd.toFixed(2)] })] }, b.agentSlug))), _jsxs(Box, { gap: 1, children: [_jsx(Text, { children: 'Global'.padEnd(14) }), _jsx(Text, { color: globalPercent > 80 ? 'red' : globalPercent > 50 ? 'yellow' : 'green', children: budgetBar(globalPercent) }), _jsxs(Text, { children: [" ", Math.round(globalPercent), "%"] }), _jsxs(Text, { color: "gray", children: [" $", globalBudget.cost.toFixed(2)] })] })] }));
|
|
68
|
+
}
|
|
69
|
+
// ── Main view ──
|
|
70
|
+
export function OrchestrationView({ goals, tasks, budgets, globalBudget, }) {
|
|
71
|
+
return (_jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: "cyan", paddingX: 1, paddingY: 0, children: [_jsx(Text, { bold: true, color: "cyan", children: "Orchestration" }), _jsx(Box, { height: 1 }), _jsx(GoalSection, { goals: goals, tasks: tasks }), _jsx(TaskPoolSection, { tasks: tasks }), _jsx(BudgetSection, { budgets: budgets, globalBudget: globalBudget }), _jsx(Text, { color: "gray", children: "[Esc=back t=tasks g=goals w=workflows]" })] }));
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=orchestration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orchestration.js","sourceRoot":"","sources":["../../../src/tui/views/orchestration.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
export interface RecordDetailViewProps {
|
|
3
|
+
objectType: string;
|
|
4
|
+
recordId: string;
|
|
5
|
+
recordLabel: string;
|
|
6
|
+
attributes: Record<string, string>;
|
|
7
|
+
onBack?: () => void;
|
|
8
|
+
}
|
|
9
|
+
export declare function RecordDetailView({ objectType, recordId, recordLabel, attributes, onBack: _onBack, }: RecordDetailViewProps): React.JSX.Element;
|
|
10
|
+
export default RecordDetailView;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState } from "react";
|
|
3
|
+
import { Box, Text } from "ink";
|
|
4
|
+
import { Viewport } from "../components/viewport.js";
|
|
5
|
+
// --- Helpers ---
|
|
6
|
+
function formatAttributes(attrs) {
|
|
7
|
+
const maxKeyLen = Math.max(...Object.keys(attrs).map((k) => k.length), 0);
|
|
8
|
+
return Object.entries(attrs)
|
|
9
|
+
.map(([key, val]) => {
|
|
10
|
+
const padded = key.padEnd(maxKeyLen);
|
|
11
|
+
return ` ${padded} ${val}`;
|
|
12
|
+
})
|
|
13
|
+
.join("\n");
|
|
14
|
+
}
|
|
15
|
+
// --- Component ---
|
|
16
|
+
export function RecordDetailView({ objectType, recordId, recordLabel, attributes, onBack: _onBack, }) {
|
|
17
|
+
const [scrollOffset, setScrollOffset] = useState(0);
|
|
18
|
+
const content = formatAttributes(attributes);
|
|
19
|
+
return (_jsxs(Box, { flexDirection: "column", width: "100%", children: [_jsxs(Box, { paddingX: 2, marginBottom: 1, flexDirection: "column", children: [_jsx(Box, { children: _jsx(Text, { bold: true, color: "cyan", children: recordLabel }) }), _jsx(Box, { children: _jsx(Text, { dimColor: true, children: `${objectType} \u2502 ${recordId}` }) })] }), _jsx(Box, { paddingX: 1, children: _jsx(Viewport, { content: content, scrollOffset: scrollOffset, onScroll: setScrollOffset }) }), _jsxs(Box, { paddingX: 2, marginTop: 1, children: [_jsx(Text, { dimColor: true, children: "Tip: run " }), _jsx(Text, { color: "cyan", children: `nex record timeline ${recordId}` }), _jsx(Text, { dimColor: true, children: " to see activity" })] })] }));
|
|
20
|
+
}
|
|
21
|
+
export default RecordDetailView;
|
|
22
|
+
//# sourceMappingURL=record-detail.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"record-detail.js","sourceRoot":"","sources":["../../../src/tui/views/record-detail.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAYrD,kBAAkB;AAElB,SAAS,gBAAgB,CAAC,KAA6B;IACrD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CACxB,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAC1C,CAAC,CACF,CAAC;IAEF,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;SACzB,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE;QAClB,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACrC,OAAO,KAAK,MAAM,KAAK,GAAG,EAAE,CAAC;IAC/B,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED,oBAAoB;AAEpB,MAAM,UAAU,gBAAgB,CAAC,EAC/B,UAAU,EACV,QAAQ,EACR,WAAW,EACX,UAAU,EACV,MAAM,EAAE,OAAO,GACO;IACtB,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACpD,MAAM,OAAO,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAE7C,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,KAAK,EAAC,MAAM,aAEtC,MAAC,GAAG,IAAC,QAAQ,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,aAAa,EAAC,QAAQ,aACvD,KAAC,GAAG,cACF,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,MAAM,YACpB,WAAW,GACP,GACH,EACN,KAAC,GAAG,cACF,KAAC,IAAI,IAAC,QAAQ,kBAAE,GAAG,UAAU,WAAW,QAAQ,EAAE,GAAQ,GACtD,IACF,EAGN,KAAC,GAAG,IAAC,QAAQ,EAAE,CAAC,YACd,KAAC,QAAQ,IACP,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,YAAY,EAC1B,QAAQ,EAAE,eAAe,GACzB,GACE,EAGN,MAAC,GAAG,IAAC,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,aAC5B,KAAC,IAAI,IAAC,QAAQ,kBACX,WAAW,GACP,EACP,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,YAAE,uBAAuB,QAAQ,EAAE,GAAQ,EAC7D,KAAC,IAAI,IAAC,QAAQ,kBAAE,kBAAkB,GAAQ,IACtC,IACF,CACP,CAAC;AACJ,CAAC;AAED,eAAe,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
export interface RecordRow {
|
|
3
|
+
id: string;
|
|
4
|
+
label: string;
|
|
5
|
+
attributes: Record<string, string>;
|
|
6
|
+
}
|
|
7
|
+
export interface RecordListViewProps {
|
|
8
|
+
objectType: string;
|
|
9
|
+
records: RecordRow[];
|
|
10
|
+
columns: string[];
|
|
11
|
+
onSelect?: (record: RecordRow) => void;
|
|
12
|
+
onBack?: () => void;
|
|
13
|
+
}
|
|
14
|
+
export declare function RecordListView({ objectType, records, columns, onSelect, onBack: _onBack, }: RecordListViewProps): React.JSX.Element;
|
|
15
|
+
export default RecordListView;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState } from "react";
|
|
3
|
+
import { Box, Text } from "ink";
|
|
4
|
+
import { Picker } from "../components/picker.js";
|
|
5
|
+
// --- Component ---
|
|
6
|
+
export function RecordListView({ objectType, records, columns, onSelect, onBack: _onBack, }) {
|
|
7
|
+
const [cursor, setCursor] = useState(0);
|
|
8
|
+
// Build picker items from records
|
|
9
|
+
const items = records.map((r) => ({
|
|
10
|
+
command: r.id,
|
|
11
|
+
label: r.label,
|
|
12
|
+
detail: columns.map((col) => r.attributes[col] ?? "").join(" | "),
|
|
13
|
+
}));
|
|
14
|
+
const handleSelect = (item) => {
|
|
15
|
+
const record = records.find((r) => r.id === item.command);
|
|
16
|
+
if (record)
|
|
17
|
+
onSelect?.(record);
|
|
18
|
+
};
|
|
19
|
+
return (_jsxs(Box, { flexDirection: "column", width: "100%", children: [_jsxs(Box, { paddingX: 2, marginBottom: 1, children: [_jsx(Text, { bold: true, color: "cyan", children: objectType }), _jsx(Text, { dimColor: true, children: ` (${records.length} records)` })] }), _jsxs(Box, { paddingX: 3, children: [_jsx(Box, { minWidth: 4, children: _jsx(Text, { bold: true, dimColor: true, children: "#" }) }), _jsx(Box, { minWidth: 20, children: _jsx(Text, { bold: true, children: "Name" }) }), columns.map((col) => (_jsx(Box, { minWidth: 16, children: _jsx(Text, { bold: true, dimColor: true, children: col }) }, col)))] }), _jsx(Picker, { items: items, cursor: cursor, onSelect: handleSelect, onCursorChange: setCursor, quickSelect: true })] }));
|
|
20
|
+
}
|
|
21
|
+
export default RecordListView;
|
|
22
|
+
//# sourceMappingURL=record-list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"record-list.js","sourceRoot":"","sources":["../../../src/tui/views/record-list.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAmBjD,oBAAoB;AAEpB,MAAM,UAAU,cAAc,CAAC,EAC7B,UAAU,EACV,OAAO,EACP,OAAO,EACP,QAAQ,EACR,MAAM,EAAE,OAAO,GACK;IACpB,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAExC,kCAAkC;IAClC,MAAM,KAAK,GAAiB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC9C,OAAO,EAAE,CAAC,CAAC,EAAE;QACb,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;KAClE,CAAC,CAAC,CAAC;IAEJ,MAAM,YAAY,GAAG,CAAC,IAAgB,EAAE,EAAE;QACxC,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1D,IAAI,MAAM;YAAE,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC,CAAC;IAEF,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,KAAK,EAAC,MAAM,aAEtC,MAAC,GAAG,IAAC,QAAQ,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,aAC/B,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,MAAM,YACpB,UAAU,GACN,EACP,KAAC,IAAI,IAAC,QAAQ,kBAAE,KAAK,OAAO,CAAC,MAAM,WAAW,GAAQ,IAClD,EAGN,MAAC,GAAG,IAAC,QAAQ,EAAE,CAAC,aACd,KAAC,GAAG,IAAC,QAAQ,EAAE,CAAC,YACd,KAAC,IAAI,IAAC,IAAI,QAAC,QAAQ,kBAAE,GAAG,GAAQ,GAC5B,EACN,KAAC,GAAG,IAAC,QAAQ,EAAE,EAAE,YACf,KAAC,IAAI,IAAC,IAAI,kBAAE,MAAM,GAAQ,GACtB,EACL,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CACpB,KAAC,GAAG,IAAW,QAAQ,EAAE,EAAE,YACzB,KAAC,IAAI,IAAC,IAAI,QAAC,QAAQ,kBAAE,GAAG,GAAQ,IADxB,GAAG,CAEP,CACP,CAAC,IACE,EAGN,KAAC,MAAM,IACL,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,YAAY,EACtB,cAAc,EAAE,SAAS,EACzB,WAAW,SACX,IACE,CACP,CAAC;AACJ,CAAC;AAED,eAAe,cAAc,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Slack-style channel header bar.
|
|
3
|
+
*
|
|
4
|
+
* Shows channel name (with # prefix for channels, presence dot for DMs),
|
|
5
|
+
* topic line, and action hints. Sits at the top of the main panel.
|
|
6
|
+
*/
|
|
7
|
+
import React from "react";
|
|
8
|
+
export interface ChannelHeaderProps {
|
|
9
|
+
name: string;
|
|
10
|
+
type: "channel" | "dm" | "group-dm";
|
|
11
|
+
online?: boolean;
|
|
12
|
+
focused: boolean;
|
|
13
|
+
}
|
|
14
|
+
export declare function ChannelHeader({ name, type, online, focused, }: ChannelHeaderProps): React.JSX.Element;
|
|
15
|
+
export default ChannelHeader;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Box, Text } from "ink";
|
|
3
|
+
export function ChannelHeader({ name, type, online, focused, }) {
|
|
4
|
+
let prefix;
|
|
5
|
+
if (type === "channel") {
|
|
6
|
+
prefix = _jsx(Text, { color: focused ? "cyan" : "gray", children: "# " });
|
|
7
|
+
}
|
|
8
|
+
else {
|
|
9
|
+
const dotColor = online ? "green" : "gray";
|
|
10
|
+
const dot = online ? "●" : "○";
|
|
11
|
+
prefix = _jsxs(Text, { color: dotColor, children: [dot, " "] });
|
|
12
|
+
}
|
|
13
|
+
return (_jsxs(Box, { paddingX: 1, justifyContent: "space-between", children: [_jsxs(Box, { gap: 1, children: [focused && _jsx(Text, { color: "black", backgroundColor: "cyan", bold: true, children: " MESSAGES " }), prefix, _jsx(Text, { bold: true, color: focused ? "cyan" : "white", children: name })] }), _jsxs(Box, { gap: 2, children: [focused && _jsx(Text, { color: "cyan", children: "↑↓ scroll" }), _jsx(Text, { color: "gray", children: "Ctrl+K search" }), _jsx(Text, { color: "gray", children: "Tab focus" })] })] }));
|
|
14
|
+
}
|
|
15
|
+
export default ChannelHeader;
|
|
16
|
+
//# sourceMappingURL=slack-channel-header.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slack-channel-header.js","sourceRoot":"","sources":["../../../src/tui/views/slack-channel-header.tsx"],"names":[],"mappings":";AAQA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAShC,MAAM,UAAU,aAAa,CAAC,EAC5B,IAAI,EACJ,IAAI,EACJ,MAAM,EACN,OAAO,GACY;IACnB,IAAI,MAAyB,CAAC;IAC9B,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,MAAM,GAAG,KAAC,IAAI,IAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,mBAAW,CAAC;IAC7D,CAAC;SAAM,CAAC;QACN,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;QAC3C,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QAC/B,MAAM,GAAG,MAAC,IAAI,IAAC,KAAK,EAAE,QAAQ,aAAG,GAAG,SAAS,CAAC;IAChD,CAAC;IAED,OAAO,CACL,MAAC,GAAG,IACF,QAAQ,EAAE,CAAC,EACX,cAAc,EAAC,eAAe,aAE9B,MAAC,GAAG,IAAC,GAAG,EAAE,CAAC,aACR,OAAO,IAAI,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,EAAC,eAAe,EAAC,MAAM,EAAC,IAAI,kBAAE,YAAY,GAAQ,EAChF,MAAM,EACP,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,YACzC,IAAI,GACA,IACH,EACN,MAAC,GAAG,IAAC,GAAG,EAAE,CAAC,aACR,OAAO,IAAI,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,YAAE,WAAW,GAAQ,EACnD,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,8BAAqB,EACvC,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,0BAAiB,IAC/B,IACF,CACP,CAAC;AACJ,CAAC;AAED,eAAe,aAAa,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SlackHome — the main Slack-style home view.
|
|
3
|
+
*
|
|
4
|
+
* Connects all Slack components to services:
|
|
5
|
+
* - Sidebar with DMs (agents) and channels from ChatService
|
|
6
|
+
* - Message list with grouping from ChatService
|
|
7
|
+
* - Thread panel for in-thread replies
|
|
8
|
+
* - Quick switcher overlay (Ctrl+K)
|
|
9
|
+
* - Compose area with slash commands and @mentions
|
|
10
|
+
* - Agent routing: DM → steer(), channel → broadcast
|
|
11
|
+
*/
|
|
12
|
+
import React from "react";
|
|
13
|
+
export interface SlackHomeProps {
|
|
14
|
+
/** Router push function for navigating to other views */
|
|
15
|
+
push: (view: {
|
|
16
|
+
name: string;
|
|
17
|
+
props?: Record<string, unknown>;
|
|
18
|
+
}) => void;
|
|
19
|
+
}
|
|
20
|
+
export declare function SlackHome({ push }: SlackHomeProps): React.JSX.Element;
|
|
21
|
+
export default SlackHome;
|