cohvu 2.1.0 → 2.2.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 (102) hide show
  1. package/dist/api.d.ts +44 -26
  2. package/dist/api.js +43 -59
  3. package/dist/api.js.map +1 -1
  4. package/dist/auth.d.ts +2 -13
  5. package/dist/auth.js +41 -105
  6. package/dist/auth.js.map +1 -1
  7. package/dist/constants.d.ts +1 -0
  8. package/dist/constants.js +2 -0
  9. package/dist/constants.js.map +1 -0
  10. package/dist/index.js +59 -103
  11. package/dist/index.js.map +1 -1
  12. package/dist/instructions.d.ts +2 -2
  13. package/dist/instructions.js +22 -26
  14. package/dist/instructions.js.map +1 -1
  15. package/dist/platforms.js +22 -25
  16. package/dist/platforms.js.map +1 -1
  17. package/dist/proxy.js +26 -14
  18. package/dist/proxy.js.map +1 -1
  19. package/dist/setup.d.ts +0 -1
  20. package/dist/setup.js +43 -75
  21. package/dist/setup.js.map +1 -1
  22. package/dist/tui/App.d.ts +1 -0
  23. package/dist/tui/App.js +1091 -0
  24. package/dist/tui/App.js.map +1 -0
  25. package/dist/tui/components/Banner.d.ts +4 -0
  26. package/dist/tui/components/Banner.js +78 -0
  27. package/dist/tui/components/Banner.js.map +1 -0
  28. package/dist/tui/components/Divider.d.ts +1 -0
  29. package/dist/tui/components/Divider.js +7 -0
  30. package/dist/tui/components/Divider.js.map +1 -0
  31. package/dist/tui/components/Footer.d.ts +4 -0
  32. package/dist/tui/components/Footer.js +143 -0
  33. package/dist/tui/components/Footer.js.map +1 -0
  34. package/dist/tui/components/Header.d.ts +4 -0
  35. package/dist/tui/components/Header.js +53 -0
  36. package/dist/tui/components/Header.js.map +1 -0
  37. package/dist/tui/components/Modal.d.ts +5 -0
  38. package/dist/tui/components/Modal.js +99 -0
  39. package/dist/tui/components/Modal.js.map +1 -0
  40. package/dist/tui/components/TabBar.d.ts +4 -0
  41. package/dist/tui/components/TabBar.js +16 -0
  42. package/dist/tui/components/TabBar.js.map +1 -0
  43. package/dist/tui/components/Toast.d.ts +4 -0
  44. package/dist/tui/components/Toast.js +9 -0
  45. package/dist/tui/components/Toast.js.map +1 -0
  46. package/dist/tui/index.js +19 -0
  47. package/dist/tui/index.js.map +1 -0
  48. package/dist/tui/platform-detect.d.ts +1 -1
  49. package/dist/tui/platform-detect.js +19 -22
  50. package/dist/tui/platform-detect.js.map +1 -1
  51. package/dist/tui/state.d.ts +33 -6
  52. package/dist/tui/state.js +65 -17
  53. package/dist/tui/state.js.map +1 -1
  54. package/dist/tui/tabs/BillingTab.d.ts +4 -0
  55. package/dist/tui/tabs/BillingTab.js +68 -0
  56. package/dist/tui/tabs/BillingTab.js.map +1 -0
  57. package/dist/tui/tabs/KnowledgeTab.d.ts +5 -0
  58. package/dist/tui/tabs/KnowledgeTab.js +83 -0
  59. package/dist/tui/tabs/KnowledgeTab.js.map +1 -0
  60. package/dist/tui/tabs/ProjectTab.d.ts +4 -0
  61. package/dist/tui/tabs/ProjectTab.js +31 -0
  62. package/dist/tui/tabs/ProjectTab.js.map +1 -0
  63. package/dist/tui/tabs/TeamTab.d.ts +4 -0
  64. package/dist/tui/tabs/TeamTab.js +39 -0
  65. package/dist/tui/tabs/TeamTab.js.map +1 -0
  66. package/dist/tui/tabs/YouTab.d.ts +4 -0
  67. package/dist/tui/tabs/YouTab.js +9 -0
  68. package/dist/tui/tabs/YouTab.js.map +1 -0
  69. package/dist/tui/utils.d.ts +6 -0
  70. package/dist/tui/utils.js +58 -0
  71. package/dist/tui/utils.js.map +1 -0
  72. package/package.json +9 -2
  73. package/dist/tui/ansi.d.ts +0 -41
  74. package/dist/tui/ansi.js +0 -117
  75. package/dist/tui/ansi.js.map +0 -1
  76. package/dist/tui/dashboard.js +0 -1250
  77. package/dist/tui/dashboard.js.map +0 -1
  78. package/dist/tui/keys.d.ts +0 -31
  79. package/dist/tui/keys.js +0 -56
  80. package/dist/tui/keys.js.map +0 -1
  81. package/dist/tui/render.d.ts +0 -5
  82. package/dist/tui/render.js +0 -158
  83. package/dist/tui/render.js.map +0 -1
  84. package/dist/tui/views/billing.d.ts +0 -3
  85. package/dist/tui/views/billing.js +0 -127
  86. package/dist/tui/views/billing.js.map +0 -1
  87. package/dist/tui/views/knowledge.d.ts +0 -3
  88. package/dist/tui/views/knowledge.js +0 -202
  89. package/dist/tui/views/knowledge.js.map +0 -1
  90. package/dist/tui/views/modals.d.ts +0 -3
  91. package/dist/tui/views/modals.js +0 -198
  92. package/dist/tui/views/modals.js.map +0 -1
  93. package/dist/tui/views/project.d.ts +0 -3
  94. package/dist/tui/views/project.js +0 -76
  95. package/dist/tui/views/project.js.map +0 -1
  96. package/dist/tui/views/team.d.ts +0 -3
  97. package/dist/tui/views/team.js +0 -106
  98. package/dist/tui/views/team.js.map +0 -1
  99. package/dist/tui/views/you.d.ts +0 -3
  100. package/dist/tui/views/you.js +0 -40
  101. package/dist/tui/views/you.js.map +0 -1
  102. /package/dist/tui/{dashboard.d.ts → index.d.ts} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TabBar.js","sourceRoot":"","sources":["../../../src/tui/components/TabBar.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,IAAI,EAAY,MAAM,aAAa,CAAC;AAE7C,MAAM,UAAU,GAAwB;IACtC,SAAS,EAAE,WAAW;IACtB,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,GAAG,EAAE,KAAK;CACX,CAAC;AAEF,MAAM,UAAU,MAAM,CAAC,EAAE,MAAM,EAAmB;IAChD,OAAO,CACL,KAAC,GAAG,cACD,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CACb,CAAC,KAAK,MAAM;YACV,CAAC,CAAC,MAAC,IAAI,oBAAU,KAAC,IAAI,IAAC,IAAI,kBAAE,UAAU,CAAC,CAAC,CAAC,GAAQ,UAArC,CAAC,CAA4C;YAC1D,CAAC,CAAC,MAAC,IAAI,qBAAW,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,YAAE,UAAU,CAAC,CAAC,CAAC,GAAQ,KAA9C,CAAC,CAAoD,CACrE,CAAC,GACE,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { AppState } from '../state.js';
2
+ export declare function Toast({ toast }: {
3
+ toast: NonNullable<AppState['toast']>;
4
+ }): import("react/jsx-runtime").JSX.Element | null;
@@ -0,0 +1,9 @@
1
+ import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
+ import { Box, Text } from 'ink';
3
+ export function Toast({ toast }) {
4
+ if (Date.now() > toast.expiresAt)
5
+ return null;
6
+ const color = toast.type === 'success' ? 'green' : toast.type === 'error' ? 'red' : 'gray';
7
+ return (_jsx(Box, { children: _jsxs(Text, { color: color, children: [" ", toast.message] }) }));
8
+ }
9
+ //# sourceMappingURL=Toast.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Toast.js","sourceRoot":"","sources":["../../../src/tui/components/Toast.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAGhC,MAAM,UAAU,KAAK,CAAC,EAAE,KAAK,EAA6C;IACxE,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAC9C,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;IAC3F,OAAO,CACL,KAAC,GAAG,cACF,MAAC,IAAI,IAAC,KAAK,EAAE,KAAK,mBAAK,KAAK,CAAC,OAAO,IAAQ,GACxC,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,19 @@
1
+ // TUI entry point — manages alt-screen and Ink lifecycle.
2
+ import React from 'react';
3
+ import { render } from 'ink';
4
+ import App from './App.js';
5
+ export async function launchDashboard() {
6
+ // Enter alt-screen + hide cursor
7
+ process.stdout.write('\x1b[?1049h\x1b[?25l');
8
+ const { waitUntilExit } = render(React.createElement(App), {
9
+ exitOnCtrlC: false,
10
+ });
11
+ try {
12
+ await waitUntilExit();
13
+ }
14
+ finally {
15
+ // Show cursor + reset attributes + exit alt-screen
16
+ process.stdout.write('\x1b[?25h\x1b[0m\x1b[?1049l');
17
+ }
18
+ }
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tui/index.tsx"],"names":[],"mappings":"AAAA,0DAA0D;AAE1D,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,GAAG,MAAM,UAAU,CAAC;AAE3B,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,iCAAiC;IACjC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAE7C,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE;QACzD,WAAW,EAAE,KAAK;KACnB,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,MAAM,aAAa,EAAE,CAAC;IACxB,CAAC;YAAS,CAAC;QACT,mDAAmD;QACnD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACtD,CAAC;AACH,CAAC"}
@@ -1,2 +1,2 @@
1
- import type { PlatformStatus } from "./state";
1
+ import type { PlatformStatus } from "./state.js";
2
2
  export declare function detectPlatformStatuses(): PlatformStatus[];
@@ -1,16 +1,13 @@
1
- "use strict";
2
1
  // Platform status detection for the You tab.
3
2
  // Two states: configured or not-detected.
4
- Object.defineProperty(exports, "__esModule", { value: true });
5
- exports.detectPlatformStatuses = detectPlatformStatuses;
6
- const fs_1 = require("fs");
7
- const path_1 = require("path");
8
- const os_1 = require("os");
3
+ import { existsSync, readFileSync } from "fs";
4
+ import { join } from "path";
5
+ import { homedir, platform } from "os";
9
6
  function vscodeUserDir() {
10
- if ((0, os_1.platform)() === "darwin") {
11
- return (0, path_1.join)("Library", "Application Support", "Code", "User");
7
+ if (platform() === "darwin") {
8
+ return join("Library", "Application Support", "Code", "User");
12
9
  }
13
- return (0, path_1.join)(".config", "Code", "User");
10
+ return join(".config", "Code", "User");
14
11
  }
15
12
  const PLATFORMS = [
16
13
  {
@@ -23,52 +20,52 @@ const PLATFORMS = [
23
20
  {
24
21
  name: 'cursor',
25
22
  detectPath: '.cursor',
26
- configPath: (0, path_1.join)('.cursor', 'mcp.json'),
23
+ configPath: join('.cursor', 'mcp.json'),
27
24
  configFormat: 'json',
28
25
  rootKey: 'mcpServers',
29
26
  },
30
27
  {
31
28
  name: 'windsurf',
32
- detectPath: (0, path_1.join)('.codeium', 'windsurf'),
33
- configPath: (0, path_1.join)('.codeium', 'windsurf', 'mcp_config.json'),
29
+ detectPath: join('.codeium', 'windsurf'),
30
+ configPath: join('.codeium', 'windsurf', 'mcp_config.json'),
34
31
  configFormat: 'json',
35
32
  rootKey: 'mcpServers',
36
33
  },
37
34
  {
38
35
  name: 'cline',
39
- detectPath: (0, path_1.join)(vscodeUserDir(), 'globalStorage', 'saoudrizwan.claude-dev'),
40
- configPath: (0, path_1.join)(vscodeUserDir(), 'globalStorage', 'saoudrizwan.claude-dev', 'settings', 'cline_mcp_settings.json'),
36
+ detectPath: join(vscodeUserDir(), 'globalStorage', 'saoudrizwan.claude-dev'),
37
+ configPath: join(vscodeUserDir(), 'globalStorage', 'saoudrizwan.claude-dev', 'settings', 'cline_mcp_settings.json'),
41
38
  configFormat: 'json',
42
39
  rootKey: 'mcpServers',
43
40
  },
44
41
  {
45
42
  name: 'codex',
46
43
  detectPath: '.codex',
47
- configPath: (0, path_1.join)('.codex', 'config.toml'),
44
+ configPath: join('.codex', 'config.toml'),
48
45
  configFormat: 'toml',
49
46
  rootKey: 'mcp_servers',
50
47
  },
51
48
  ];
52
- function detectPlatformStatuses() {
53
- const home = (0, os_1.homedir)();
49
+ export function detectPlatformStatuses() {
50
+ const home = homedir();
54
51
  const results = [];
55
52
  for (const p of PLATFORMS) {
56
- const detectFull = (0, path_1.join)(home, p.detectPath);
57
- if (!(0, fs_1.existsSync)(detectFull)) {
53
+ const detectFull = join(home, p.detectPath);
54
+ if (!existsSync(detectFull)) {
58
55
  results.push({ name: p.name, state: 'not-detected' });
59
56
  continue;
60
57
  }
61
- const configFull = (0, path_1.join)(home, p.configPath);
58
+ const configFull = join(home, p.configPath);
62
59
  const configured = isConfigured(configFull, p.configFormat, p.rootKey);
63
60
  results.push({ name: p.name, state: configured ? 'configured' : 'not-detected' });
64
61
  }
65
62
  return results;
66
63
  }
67
64
  function isConfigured(configPath, format, rootKey) {
68
- if (!(0, fs_1.existsSync)(configPath))
65
+ if (!existsSync(configPath))
69
66
  return false;
70
67
  try {
71
- const content = (0, fs_1.readFileSync)(configPath, 'utf8');
68
+ const content = readFileSync(configPath, 'utf8');
72
69
  if (format === 'json') {
73
70
  const parsed = JSON.parse(content);
74
71
  return !!parsed?.[rootKey]?.cohvu;
@@ -1 +1 @@
1
- {"version":3,"file":"platform-detect.js","sourceRoot":"","sources":["../../src/tui/platform-detect.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"platform-detect.js","sourceRoot":"","sources":["../../src/tui/platform-detect.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,21 @@
1
- import type { MeResponse, MemoryItem, MemberItem, BillingInfo, InviteLink, PendingApproval, Notification } from "../api";
1
+ import type { MeResponse, MemoryItem, MemberItem, BillingInfo, InviteLink, PendingApproval, Notification } from "../api.js";
2
+ /** A project in the flat navigation list — knows its ownership context. */
3
+ export interface FlatProject {
4
+ project_id: string;
5
+ slug: string;
6
+ name: string;
7
+ created_at: string;
8
+ owner: {
9
+ kind: 'personal';
10
+ } | {
11
+ kind: 'team';
12
+ teamId: string;
13
+ teamName: string;
14
+ teamSlug: string;
15
+ };
16
+ }
17
+ /** Team as stored in state (mirroring MeResponse shape). */
18
+ export type TeamInfo = MeResponse['teams'][0];
2
19
  export type Tab = 'knowledge' | 'team' | 'billing' | 'project' | 'you';
3
20
  export type KnowledgeMode = 'browse' | 'search' | 'forget';
4
21
  export type Modal = null | {
@@ -64,9 +81,11 @@ export interface PlatformStatus {
64
81
  }
65
82
  export interface AppState {
66
83
  user: MeResponse['user'] | null;
67
- projects: MeResponse['projects'];
84
+ projects: FlatProject[];
68
85
  activeProjectId: string | null;
69
86
  userRole: 'admin' | 'member' | 'viewer';
87
+ teams: TeamInfo[];
88
+ individualSubscription: MeResponse['individual_subscription'];
70
89
  tab: Tab;
71
90
  knowledgeMode: KnowledgeMode;
72
91
  memories: MemoryItem[];
@@ -90,7 +109,6 @@ export interface AppState {
90
109
  billing: BillingInfo | null;
91
110
  platforms: PlatformStatus[];
92
111
  modal: Modal;
93
- bannerLines: string[];
94
112
  firstLogin: boolean;
95
113
  joinedProjectName: string | null;
96
114
  pendingApprovals: PendingApproval[];
@@ -120,8 +138,6 @@ export type Action = {
120
138
  type: 'SCROLL_UP';
121
139
  } | {
122
140
  type: 'SCROLL_DOWN';
123
- } | {
124
- type: 'PAGE_DOWN';
125
141
  } | {
126
142
  type: 'ENTER_SEARCH';
127
143
  } | {
@@ -218,6 +234,17 @@ export type Action = {
218
234
  } | {
219
235
  type: 'SET_OPERATION';
220
236
  operation: string | null;
237
+ } | {
238
+ type: 'SET_FORGET_CONFIRMING';
239
+ confirming: boolean;
240
+ } | {
241
+ type: 'UPDATE_MEMORY';
242
+ memory: MemoryItem;
243
+ } | {
244
+ type: 'SET_FIRST_LOGIN';
245
+ firstLogin: boolean;
221
246
  };
222
247
  export declare function reduce(state: AppState, action: Action): AppState;
223
- export declare function getActiveProject(state: AppState): MeResponse['projects'][0] | null;
248
+ export declare function getActiveProject(state: AppState): FlatProject | null;
249
+ /** Get the team info for the active project, or null if personal. */
250
+ export declare function getActiveTeam(state: AppState): TeamInfo | null;
package/dist/tui/state.js CHANGED
@@ -1,18 +1,14 @@
1
- "use strict";
2
1
  // TUI state machine — single source of truth for the dashboard.
3
2
  // Reducer pattern: keypresses → actions → new state → render.
4
- Object.defineProperty(exports, "__esModule", { value: true });
5
- exports.TABS = void 0;
6
- exports.initialState = initialState;
7
- exports.reduce = reduce;
8
- exports.getActiveProject = getActiveProject;
9
- exports.TABS = ['knowledge', 'team', 'billing', 'project', 'you'];
10
- function initialState() {
3
+ export const TABS = ['knowledge', 'team', 'billing', 'project', 'you'];
4
+ export function initialState() {
11
5
  return {
12
6
  user: null,
13
7
  projects: [],
14
8
  activeProjectId: null,
15
9
  userRole: 'member',
10
+ teams: [],
11
+ individualSubscription: null,
16
12
  tab: 'knowledge',
17
13
  knowledgeMode: 'browse',
18
14
  memories: [],
@@ -36,7 +32,6 @@ function initialState() {
36
32
  billing: null,
37
33
  platforms: [],
38
34
  modal: null,
39
- bannerLines: [],
40
35
  firstLogin: false,
41
36
  joinedProjectName: null,
42
37
  pendingApprovals: [],
@@ -49,29 +44,37 @@ function initialState() {
49
44
  sseConnected: false,
50
45
  };
51
46
  }
52
- function reduce(state, action) {
47
+ export function reduce(state, action) {
53
48
  switch (action.type) {
54
49
  case 'SET_USER_DATA': {
55
50
  const me = action.me;
51
+ const flatProjects = deriveFlatProjects(me);
56
52
  const activeId = me.user.active_project_id;
57
- const activeProject = me.projects.find(p => p.project_id === activeId) ?? me.projects[0] ?? null;
58
- const role = (activeProject?.role ?? 'member');
53
+ const activeProject = flatProjects.find(p => p.project_id === activeId) ?? flatProjects[0] ?? null;
54
+ // Derive role: personal projects admin; team projects → team role
55
+ let role = 'admin';
56
+ if (activeProject && activeProject.owner.kind === 'team') {
57
+ const ownerTeamId = activeProject.owner.teamId;
58
+ const team = me.teams.find(t => t.team_id === ownerTeamId);
59
+ role = (team?.role ?? 'member');
60
+ }
59
61
  return {
60
62
  ...state,
61
63
  user: me.user,
62
- projects: me.projects,
64
+ projects: flatProjects,
63
65
  activeProjectId: activeProject?.project_id ?? null,
64
66
  userRole: role,
67
+ teams: me.teams,
68
+ individualSubscription: me.individual_subscription,
65
69
  };
66
70
  }
67
71
  case 'SWITCH_TAB':
68
72
  return { ...state, tab: action.tab, modal: null };
69
73
  case 'NEXT_TAB': {
70
- const idx = exports.TABS.indexOf(state.tab);
71
- return { ...state, tab: exports.TABS[(idx + 1) % exports.TABS.length], modal: null };
74
+ const idx = TABS.indexOf(state.tab);
75
+ return { ...state, tab: TABS[(idx + 1) % TABS.length], modal: null };
72
76
  }
73
77
  case 'SCROLL_UP': {
74
- const list = currentList(state);
75
78
  const newSelected = Math.max(0, state.memorySelected - 1);
76
79
  const newScroll = newSelected < state.memoryScroll ? newSelected : state.memoryScroll;
77
80
  return { ...state, memorySelected: newSelected, memoryScroll: newScroll };
@@ -191,6 +194,18 @@ function reduce(state, action) {
191
194
  return { ...state, toast: action.toast };
192
195
  case 'SET_OPERATION':
193
196
  return { ...state, operationPending: action.operation };
197
+ case 'SET_FORGET_CONFIRMING':
198
+ return { ...state, forgetConfirming: action.confirming };
199
+ case 'UPDATE_MEMORY': {
200
+ const updated = action.memory;
201
+ return {
202
+ ...state,
203
+ memories: state.memories.map(m => m.id === updated.id ? updated : m),
204
+ searchResults: state.searchResults?.map(m => m.id === updated.id ? updated : m) ?? null,
205
+ };
206
+ }
207
+ case 'SET_FIRST_LOGIN':
208
+ return { ...state, firstLogin: action.firstLogin };
194
209
  default:
195
210
  return state;
196
211
  }
@@ -200,7 +215,40 @@ function currentList(state) {
200
215
  return state.searchResults;
201
216
  return state.memories;
202
217
  }
203
- function getActiveProject(state) {
218
+ export function getActiveProject(state) {
204
219
  return state.projects.find(p => p.project_id === state.activeProjectId) ?? null;
205
220
  }
221
+ /** Get the team info for the active project, or null if personal. */
222
+ export function getActiveTeam(state) {
223
+ const project = getActiveProject(state);
224
+ if (!project || project.owner.kind !== 'team')
225
+ return null;
226
+ const owner = project.owner;
227
+ return state.teams.find(t => t.team_id === owner.teamId) ?? null;
228
+ }
229
+ /** Flatten personal_projects + team projects into a single navigable list. */
230
+ function deriveFlatProjects(me) {
231
+ const list = [];
232
+ for (const p of me.personal_projects) {
233
+ list.push({
234
+ project_id: p.project_id,
235
+ slug: p.slug,
236
+ name: p.name,
237
+ created_at: p.created_at,
238
+ owner: { kind: 'personal' },
239
+ });
240
+ }
241
+ for (const team of me.teams) {
242
+ for (const p of team.projects) {
243
+ list.push({
244
+ project_id: p.project_id,
245
+ slug: p.slug,
246
+ name: p.name,
247
+ created_at: p.created_at,
248
+ owner: { kind: 'team', teamId: team.team_id, teamName: team.name, teamSlug: team.slug },
249
+ });
250
+ }
251
+ }
252
+ return list;
253
+ }
206
254
  //# sourceMappingURL=state.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/tui/state.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/tui/state.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { AppState } from '../state.js';
2
+ export declare function BillingTab({ state }: {
3
+ state: AppState;
4
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,68 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { Box, Text } from 'ink';
3
+ import { getActiveProject, getActiveTeam } from '../state.js';
4
+ import { formatDate, daysUntil } from '../utils.js';
5
+ export function BillingTab({ state }) {
6
+ const project = getActiveProject(state);
7
+ if (!project) {
8
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { height: 1 }), _jsx(Text, { color: "gray", children: " no active project" })] }));
9
+ }
10
+ if (project.owner.kind === 'team')
11
+ return _jsx(TeamBilling, { state: state });
12
+ return _jsx(IndividualBilling, { state: state });
13
+ }
14
+ function Field({ label, children }) {
15
+ return (_jsxs(Box, { children: [_jsx(Box, { width: 12, children: _jsxs(Text, { color: "gray", dimColor: true, children: [" ", label] }) }), children] }));
16
+ }
17
+ function IndividualBilling({ state }) {
18
+ const sub = state.individualSubscription;
19
+ const user = state.user;
20
+ // Trial state
21
+ if (user?.trial_ends_at) {
22
+ const days = daysUntil(user.trial_ends_at);
23
+ if (days > 0) {
24
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { height: 1 }), _jsx(Field, { label: "status", children: _jsx(Text, { color: "yellow", dimColor: true, children: "trial" }) }), _jsxs(Field, { label: "ends", children: [_jsx(Text, { dimColor: true, children: formatDate(user.trial_ends_at) }), _jsx(Text, { color: "gray", dimColor: true, children: " \u00B7 " }), _jsxs(Text, { color: "yellow", dimColor: true, children: [days, " day", days !== 1 ? 's' : '', " left"] })] }), _jsx(Field, { label: "plan", children: _jsx(Text, { color: "gray", children: "$19/month after trial" }) })] }));
25
+ }
26
+ // Trial ended
27
+ if (!sub || sub.status !== 'active') {
28
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { height: 1 }), _jsxs(Text, { color: "red", children: [" trial ended ", formatDate(user.trial_ends_at)] }), _jsx(Text, { color: "gray", children: " subscribe to keep your agents connected" }), _jsx(Box, { height: 1 }), _jsx(Field, { label: "plan", children: _jsx(Text, { color: "gray", children: "$19/month" }) })] }));
29
+ }
30
+ }
31
+ // No subscription
32
+ if (!sub) {
33
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { height: 1 }), _jsx(Text, { color: "red", children: " locked" }), _jsx(Text, { color: "gray", children: " subscribe to keep your agents connected" }), _jsx(Box, { height: 1 }), _jsx(Field, { label: "plan", children: _jsx(Text, { color: "gray", children: "$19/month" }) })] }));
34
+ }
35
+ // Payment failed
36
+ if (sub.status === 'past_due') {
37
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { height: 1 }), _jsx(Text, { color: "red", children: " ! payment failed" }), _jsx(Text, { color: "gray", children: " update your payment method to continue" })] }));
38
+ }
39
+ // Canceled
40
+ if (sub.status === 'canceled' || sub.cancel_at_period_end) {
41
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { height: 1 }), _jsx(Text, { color: "red", children: " subscription canceled" }), sub.current_period_end && (_jsxs(Text, { color: "gray", children: [" your agents will stop working ", formatDate(sub.current_period_end)] })), _jsx(Box, { height: 1 }), sub.current_period_end && (_jsx(Field, { label: "ends", children: _jsx(Text, { dimColor: true, children: formatDate(sub.current_period_end) }) }))] }));
42
+ }
43
+ // Active
44
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { height: 1 }), _jsx(Field, { label: "status", children: _jsx(Text, { color: "green", children: "active" }) }), _jsx(Field, { label: "plan", children: _jsx(Text, { dimColor: true, children: "$19/month" }) }), sub.current_period_end && (_jsx(Field, { label: "renews", children: _jsx(Text, { dimColor: true, children: formatDate(sub.current_period_end) }) }))] }));
45
+ }
46
+ function TeamBilling({ state }) {
47
+ const team = getActiveTeam(state);
48
+ if (!team) {
49
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { height: 1 }), _jsx(Text, { color: "gray", children: " no team context" })] }));
50
+ }
51
+ const sub = team.subscription;
52
+ const isAdmin = state.userRole === 'admin';
53
+ // No subscription
54
+ if (!sub) {
55
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { height: 1 }), _jsx(Field, { label: "team", children: _jsx(Text, { dimColor: true, children: team.name }) }), isAdmin ? (_jsxs(_Fragment, { children: [_jsx(Text, { color: "red", children: " no subscription" }), _jsx(Text, { color: "gray", children: " subscribe to keep your agents connected" }), _jsx(Box, { height: 1 }), _jsx(Field, { label: "plan", children: _jsx(Text, { color: "gray", children: "$34/seat/month" }) })] })) : (_jsx(Field, { label: "status", children: _jsx(Text, { color: "red", children: "locked" }) }))] }));
56
+ }
57
+ // Payment failed
58
+ if (sub.status === 'past_due') {
59
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { height: 1 }), _jsx(Field, { label: "team", children: _jsx(Text, { dimColor: true, children: team.name }) }), isAdmin ? (_jsxs(_Fragment, { children: [_jsx(Text, { color: "red", children: " ! payment failed" }), _jsx(Text, { color: "gray", children: " update your payment method to continue" }), _jsx(Box, { height: 1 }), _jsx(Field, { label: "seats", children: _jsx(Text, { dimColor: true, children: String(sub.seat_count) }) })] })) : (_jsxs(_Fragment, { children: [_jsx(Field, { label: "status", children: _jsx(Text, { color: "red", children: "past due" }) }), _jsx(Field, { label: "seats", children: _jsx(Text, { dimColor: true, children: String(sub.seat_count) }) })] }))] }));
60
+ }
61
+ // Canceled
62
+ if (sub.status === 'canceled' || sub.cancel_at_period_end) {
63
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { height: 1 }), _jsx(Field, { label: "team", children: _jsx(Text, { dimColor: true, children: team.name }) }), isAdmin ? (_jsxs(_Fragment, { children: [_jsx(Text, { color: "red", children: " subscription canceled" }), sub.current_period_end && (_jsxs(Text, { color: "gray", children: [" your agents will stop working ", formatDate(sub.current_period_end)] })), _jsx(Box, { height: 1 }), _jsx(Field, { label: "seats", children: _jsx(Text, { dimColor: true, children: String(sub.seat_count) }) }), sub.current_period_end && (_jsx(Field, { label: "ends", children: _jsx(Text, { dimColor: true, children: formatDate(sub.current_period_end) }) }))] })) : (_jsxs(_Fragment, { children: [_jsx(Field, { label: "status", children: _jsx(Text, { color: "red", children: "canceled" }) }), _jsx(Field, { label: "seats", children: _jsx(Text, { dimColor: true, children: String(sub.seat_count) }) })] }))] }));
64
+ }
65
+ // Active
66
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { height: 1 }), _jsx(Field, { label: "team", children: _jsx(Text, { dimColor: true, children: team.name }) }), isAdmin ? (_jsxs(_Fragment, { children: [_jsx(Field, { label: "status", children: _jsx(Text, { color: "green", children: "active" }) }), _jsxs(Field, { label: "seats", children: [_jsx(Text, { dimColor: true, children: String(sub.seat_count) }), _jsxs(Text, { color: "gray", children: [" ($", sub.seat_count * 34, "/month)"] })] }), sub.current_period_end && (_jsx(Field, { label: "renews", children: _jsx(Text, { dimColor: true, children: formatDate(sub.current_period_end) }) }))] })) : (_jsxs(_Fragment, { children: [_jsx(Field, { label: "status", children: _jsx(Text, { color: "green", children: "active" }) }), _jsx(Field, { label: "seats", children: _jsx(Text, { dimColor: true, children: String(sub.seat_count) }) })] }))] }));
67
+ }
68
+ //# sourceMappingURL=BillingTab.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BillingTab.js","sourceRoot":"","sources":["../../../src/tui/tabs/BillingTab.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { AppState } from '../state.js';
2
+ export declare function KnowledgeTab({ state, height }: {
3
+ state: AppState;
4
+ height: number;
5
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,83 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { Box, Text, useStdout } from 'ink';
3
+ import { truncate, timeAgo, wrapText } from '../utils.js';
4
+ export function KnowledgeTab({ state, height }) {
5
+ switch (state.knowledgeMode) {
6
+ case 'browse': return _jsx(BrowseMode, { state: state, height: height });
7
+ case 'search': return _jsx(SearchMode, { state: state, height: height });
8
+ case 'forget': return _jsx(ForgetMode, { state: state, height: height });
9
+ }
10
+ }
11
+ function BrowseMode({ state, height }) {
12
+ const { stdout } = useStdout();
13
+ const width = stdout.columns;
14
+ if (state.memories.length === 0 && !state.memoryLoading) {
15
+ return (_jsxs(Box, { flexDirection: "column", alignItems: "center", justifyContent: "center", height: height, children: [_jsx(Text, { color: "gray", children: "your agents will start contributing automatically" }), _jsx(Text, { color: "gray", dimColor: true, children: "open any agent and start working" })] }));
16
+ }
17
+ const maxLines = height - 3;
18
+ const visible = state.memories.slice(state.memoryScroll, state.memoryScroll + maxLines);
19
+ const rows = [];
20
+ let linesUsed = 0;
21
+ for (let i = 0; i < visible.length && linesUsed < maxLines; i++) {
22
+ const mem = visible[i];
23
+ const globalIdx = state.memoryScroll + i;
24
+ const isSelected = globalIdx === state.memorySelected;
25
+ const isLive = mem.id === state.liveDotId && Date.now() < state.liveDotExpiry;
26
+ const bodyWidth = width - 12;
27
+ if (isSelected) {
28
+ rows.push(_jsxs(Box, { width: width, children: [_jsx(Text, { children: '> ' }), _jsx(Text, { color: isLive ? 'green' : 'gray', dimColor: !isLive, children: "\u00B7 " }), _jsx(Text, { children: truncate(mem.body, bodyWidth) }), _jsx(Box, { flexGrow: 1 }), mem.memory_type && _jsxs(Text, { color: "gray", dimColor: true, children: [mem.memory_type, " "] }), _jsx(Text, { color: "gray", children: timeAgo(mem.updated_at) })] }, mem.id));
29
+ linesUsed++;
30
+ const bodyLines = wrapText(mem.body, width - 6);
31
+ if (bodyLines.length > 1 && linesUsed < maxLines) {
32
+ rows.push(_jsx(Box, { children: _jsxs(Text, { color: "gray", children: [" ", truncate(bodyLines[1], width - 6)] }) }, `${mem.id}-1`));
33
+ linesUsed++;
34
+ }
35
+ if (bodyLines.length > 2 && linesUsed < maxLines) {
36
+ rows.push(_jsx(Box, { children: _jsxs(Text, { color: "gray", children: [" ", truncate(bodyLines[2], width - 6), "\u2026"] }) }, `${mem.id}-2`));
37
+ linesUsed++;
38
+ }
39
+ }
40
+ else {
41
+ rows.push(_jsxs(Box, { width: width, children: [_jsx(Text, { children: ' ' }), _jsx(Text, { color: isLive ? 'green' : 'gray', dimColor: !isLive, children: "\u00B7 " }), _jsx(Text, { dimColor: true, children: truncate(mem.body, bodyWidth) }), _jsx(Box, { flexGrow: 1 }), mem.memory_type && _jsxs(Text, { color: "gray", dimColor: true, children: [mem.memory_type, " "] }), _jsx(Text, { color: "gray", children: timeAgo(mem.updated_at) })] }, mem.id));
42
+ linesUsed++;
43
+ }
44
+ }
45
+ // Pagination
46
+ let pagination = '';
47
+ if (state.memories.length > 0) {
48
+ const start = state.memoryScroll + 1;
49
+ const end = Math.min(state.memoryScroll + maxLines, state.memories.length);
50
+ pagination = `${start}\u2013${end} of ${state.memoryTotal}`;
51
+ if (state.memoryHasMore)
52
+ pagination += ' · space for more';
53
+ }
54
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { height: 1 }), rows, _jsx(Box, { height: 1 }), _jsxs(Text, { color: "gray", children: [" ", pagination] })] }));
55
+ }
56
+ function SearchMode({ state, height }) {
57
+ const { stdout } = useStdout();
58
+ const width = stdout.columns;
59
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { height: 1 }), _jsxs(Box, { children: [_jsx(Text, { color: "gray", children: " / " }), _jsxs(Text, { children: [state.searchQuery, "_"] })] }), _jsx(Box, { height: 1 }), _jsx(Box, { children: _jsxs(Text, { color: "gray", dimColor: true, children: [" ", '─'.repeat(width - 4)] }) }), _jsx(Box, { height: 1 }), state.searching ? (_jsx(Text, { color: "gray", dimColor: true, children: " searching\u2026" })) : state.searchResults === null ? null : state.searchResults.length === 0 ? (_jsx(Text, { color: "gray", children: " no results" })) : (_jsxs(_Fragment, { children: [state.searchResults.map((mem, i) => {
60
+ const isSelected = i === state.memorySelected;
61
+ const isLive = mem.id === state.liveDotId && Date.now() < state.liveDotExpiry;
62
+ const bodyWidth = width - 12;
63
+ return (_jsxs(Box, { width: width, children: [_jsx(Text, { children: isSelected ? '> ' : ' ' }), _jsx(Text, { color: isLive ? 'green' : 'gray', dimColor: !isLive, children: "\u00B7 " }), _jsx(Text, { ...(isSelected ? {} : { dimColor: true }), children: truncate(mem.body, bodyWidth) }), _jsx(Box, { flexGrow: 1 }), _jsx(Text, { color: "gray", children: timeAgo(mem.updated_at) })] }, mem.id));
64
+ }), _jsx(Box, { height: 1 }), _jsxs(Text, { color: "gray", children: [" ", state.searchResults.length, " result", state.searchResults.length !== 1 ? 's' : ''] })] }))] }));
65
+ }
66
+ function ForgetMode({ state, height }) {
67
+ const { stdout } = useStdout();
68
+ const width = stdout.columns;
69
+ const list = state.searchResults ?? state.memories;
70
+ const filtered = state.userRole === 'admin'
71
+ ? list
72
+ : list.filter(m => m.contributed_by?.user_id === state.user?.id);
73
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { height: 1 }), _jsx(Text, { color: "gray", children: " select memories to remove \u00B7 space to toggle" }), _jsx(Box, { height: 1 }), filtered.length === 0 && state.userRole !== 'admin' ? (_jsx(Text, { color: "gray", children: " you can only forget memories your agents contributed" })) : (filtered.map((mem, i) => {
74
+ const isCursor = i === state.memorySelected;
75
+ const isToggled = state.forgetSelected.has(mem.id);
76
+ return (_jsxs(Box, { children: [_jsx(Text, { children: isCursor ? '> ' : ' ' }), isToggled
77
+ ? _jsxs(_Fragment, { children: [_jsx(Text, { color: "red", children: "[x] " }), _jsx(Text, { dimColor: true, children: truncate(mem.body, width - 8) })] })
78
+ : _jsxs(_Fragment, { children: [_jsx(Text, { color: "gray", dimColor: true, children: "[ ] " }), _jsx(Text, { color: "gray", children: truncate(mem.body, width - 8) })] })] }, mem.id));
79
+ })), _jsx(Box, { height: 1 }), state.forgetSelected.size > 0
80
+ ? _jsxs(Text, { color: "yellow", dimColor: true, children: [" ", state.forgetSelected.size, " selected"] })
81
+ : _jsx(Text, { color: "gray", children: " 0 selected" })] }));
82
+ }
83
+ //# sourceMappingURL=KnowledgeTab.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KnowledgeTab.js","sourceRoot":"","sources":["../../../src/tui/tabs/KnowledgeTab.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AAE3C,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE1D,MAAM,UAAU,YAAY,CAAC,EAAE,KAAK,EAAE,MAAM,EAAuC;IACjF,QAAQ,KAAK,CAAC,aAAa,EAAE,CAAC;QAC5B,KAAK,QAAQ,CAAC,CAAC,OAAO,KAAC,UAAU,IAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,GAAI,CAAC;QACnE,KAAK,QAAQ,CAAC,CAAC,OAAO,KAAC,UAAU,IAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,GAAI,CAAC;QACnE,KAAK,QAAQ,CAAC,CAAC,OAAO,KAAC,UAAU,IAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,GAAI,CAAC;IACrE,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,EAAE,KAAK,EAAE,MAAM,EAAuC;IACxE,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,CAAC;IAC/B,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC;IAE7B,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;QACxD,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,UAAU,EAAC,QAAQ,EAAC,cAAc,EAAC,QAAQ,EAAC,MAAM,EAAE,MAAM,aACpF,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,kEAAyD,EAC3E,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,EAAC,QAAQ,uDAAwC,IAC/D,CACP,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,CAAC;IAC5B,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,YAAY,GAAG,QAAQ,CAAC,CAAC;IACxF,MAAM,IAAI,GAAsB,EAAE,CAAC;IACnC,IAAI,SAAS,GAAG,CAAC,CAAC;IAElB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,IAAI,SAAS,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;QAChE,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACvB,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC;QACzC,MAAM,UAAU,GAAG,SAAS,KAAK,KAAK,CAAC,cAAc,CAAC;QACtD,MAAM,MAAM,GAAG,GAAG,CAAC,EAAE,KAAK,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,aAAa,CAAC;QAC9E,MAAM,SAAS,GAAG,KAAK,GAAG,EAAE,CAAC;QAE7B,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,CAAC,IAAI,CACP,MAAC,GAAG,IAAc,KAAK,EAAE,KAAK,aAC5B,KAAC,IAAI,cAAE,IAAI,GAAQ,EACnB,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,MAAM,wBAAW,EACpE,KAAC,IAAI,cAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,GAAQ,EAC5C,KAAC,GAAG,IAAC,QAAQ,EAAE,CAAC,GAAI,EACnB,GAAG,CAAC,WAAW,IAAI,MAAC,IAAI,IAAC,KAAK,EAAC,MAAM,EAAC,QAAQ,mBAAE,GAAG,CAAC,WAAW,UAAU,EAC1E,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,YAAE,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,GAAQ,KAN3C,GAAG,CAAC,EAAE,CAOV,CACP,CAAC;YACF,SAAS,EAAE,CAAC;YAEZ,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;YAChD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,GAAG,QAAQ,EAAE,CAAC;gBACjD,IAAI,CAAC,IAAI,CACP,KAAC,GAAG,cACF,MAAC,IAAI,IAAC,KAAK,EAAC,MAAM,qBAAM,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,IAAQ,IADzD,GAAG,GAAG,CAAC,EAAE,IAAI,CAEjB,CACP,CAAC;gBACF,SAAS,EAAE,CAAC;YACd,CAAC;YACD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,GAAG,QAAQ,EAAE,CAAC;gBACjD,IAAI,CAAC,IAAI,CACP,KAAC,GAAG,cACF,MAAC,IAAI,IAAC,KAAK,EAAC,MAAM,qBAAM,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,cAAS,IAD1D,GAAG,GAAG,CAAC,EAAE,IAAI,CAEjB,CACP,CAAC;gBACF,SAAS,EAAE,CAAC;YACd,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CACP,MAAC,GAAG,IAAc,KAAK,EAAE,KAAK,aAC5B,KAAC,IAAI,cAAE,IAAI,GAAQ,EACnB,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,MAAM,wBAAW,EACpE,KAAC,IAAI,IAAC,QAAQ,kBAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,GAAQ,EACrD,KAAC,GAAG,IAAC,QAAQ,EAAE,CAAC,GAAI,EACnB,GAAG,CAAC,WAAW,IAAI,MAAC,IAAI,IAAC,KAAK,EAAC,MAAM,EAAC,QAAQ,mBAAE,GAAG,CAAC,WAAW,UAAU,EAC1E,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,YAAE,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,GAAQ,KAN3C,GAAG,CAAC,EAAE,CAOV,CACP,CAAC;YACF,SAAS,EAAE,CAAC;QACd,CAAC;IACH,CAAC;IAED,aAAa;IACb,IAAI,UAAU,GAAG,EAAE,CAAC;IACpB,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,GAAG,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC3E,UAAU,GAAG,GAAG,KAAK,SAAS,GAAG,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC;QAC5D,IAAI,KAAK,CAAC,aAAa;YAAE,UAAU,IAAI,qBAAqB,CAAC;IAC/D,CAAC;IAED,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,KAAC,GAAG,IAAC,MAAM,EAAE,CAAC,GAAI,EACjB,IAAI,EACL,KAAC,GAAG,IAAC,MAAM,EAAE,CAAC,GAAI,EAClB,MAAC,IAAI,IAAC,KAAK,EAAC,MAAM,mBAAI,UAAU,IAAQ,IACpC,CACP,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,EAAE,KAAK,EAAE,MAAM,EAAuC;IACxE,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,CAAC;IAC/B,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC;IAE7B,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,KAAC,GAAG,IAAC,MAAM,EAAE,CAAC,GAAI,EAClB,MAAC,GAAG,eACF,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,qBAAY,EAC9B,MAAC,IAAI,eAAE,KAAK,CAAC,WAAW,SAAS,IAC7B,EACN,KAAC,GAAG,IAAC,MAAM,EAAE,CAAC,GAAI,EAClB,KAAC,GAAG,cAAC,MAAC,IAAI,IAAC,KAAK,EAAC,MAAM,EAAC,QAAQ,yBAAI,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,IAAQ,GAAM,EACvE,KAAC,GAAG,IAAC,MAAM,EAAE,CAAC,GAAI,EACjB,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CACjB,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,EAAC,QAAQ,wCAAoB,CAChD,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAC3E,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,6BAAoB,CACvC,CAAC,CAAC,CAAC,CACF,8BACG,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;wBAClC,MAAM,UAAU,GAAG,CAAC,KAAK,KAAK,CAAC,cAAc,CAAC;wBAC9C,MAAM,MAAM,GAAG,GAAG,CAAC,EAAE,KAAK,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,aAAa,CAAC;wBAC9E,MAAM,SAAS,GAAG,KAAK,GAAG,EAAE,CAAC;wBAC7B,OAAO,CACL,MAAC,GAAG,IAAc,KAAK,EAAE,KAAK,aAC5B,KAAC,IAAI,cAAE,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAQ,EACvC,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,MAAM,wBAAW,EACpE,KAAC,IAAI,OAAK,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,YAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,GAAQ,EACxF,KAAC,GAAG,IAAC,QAAQ,EAAE,CAAC,GAAI,EACpB,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,YAAE,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,GAAQ,KAL3C,GAAG,CAAC,EAAE,CAMV,CACP,CAAC;oBACJ,CAAC,CAAC,EACF,KAAC,GAAG,IAAC,MAAM,EAAE,CAAC,GAAI,EAClB,MAAC,IAAI,IAAC,KAAK,EAAC,MAAM,mBAAI,KAAK,CAAC,aAAa,CAAC,MAAM,aAAS,KAAK,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAQ,IAC3G,CACJ,IACG,CACP,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,EAAE,KAAK,EAAE,MAAM,EAAuC;IACxE,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,CAAC;IAC/B,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC;IAC7B,MAAM,IAAI,GAAG,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,QAAQ,CAAC;IACnD,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,KAAK,OAAO;QACzC,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,EAAE,OAAO,KAAK,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAEnE,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,KAAC,GAAG,IAAC,MAAM,EAAE,CAAC,GAAI,EAClB,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,mEAAqD,EACvE,KAAC,GAAG,IAAC,MAAM,EAAE,CAAC,GAAI,EACjB,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,CACrD,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,uEAA8D,CACjF,CAAC,CAAC,CAAC,CACF,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;gBACtB,MAAM,QAAQ,GAAG,CAAC,KAAK,KAAK,CAAC,cAAc,CAAC;gBAC5C,MAAM,SAAS,GAAG,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACnD,OAAO,CACL,MAAC,GAAG,eACF,KAAC,IAAI,cAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAQ,EACpC,SAAS;4BACR,CAAC,CAAC,8BAAE,KAAC,IAAI,IAAC,KAAK,EAAC,KAAK,qBAAY,EAAA,KAAC,IAAI,IAAC,QAAQ,kBAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,GAAQ,IAAG;4BACzF,CAAC,CAAC,8BAAE,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,EAAC,QAAQ,2BAAY,EAAA,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,YAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,GAAQ,IAAG,KAJjG,GAAG,CAAC,EAAE,CAMV,CACP,CAAC;YACJ,CAAC,CAAC,CACH,EACD,KAAC,GAAG,IAAC,MAAM,EAAE,CAAC,GAAI,EACjB,KAAK,CAAC,cAAc,CAAC,IAAI,GAAG,CAAC;gBAC5B,CAAC,CAAC,MAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,EAAC,QAAQ,yBAAI,KAAK,CAAC,cAAc,CAAC,IAAI,iBAAiB;gBAC7E,CAAC,CAAC,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,6BAAoB,IAEtC,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { AppState } from '../state.js';
2
+ export declare function ProjectTab({ state }: {
3
+ state: AppState;
4
+ }): import("react/jsx-runtime").JSX.Element;