@assistkick/create 1.0.1 → 1.3.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.
- package/dist/src/scaffolder.d.ts +6 -1
- package/dist/src/scaffolder.js +20 -9
- package/dist/src/scaffolder.js.map +1 -1
- package/package.json +3 -2
- package/templates/{product-system → assistkick-product-system}/CLAUDE.md +4 -4
- package/templates/{product-system → assistkick-product-system}/package.json +5 -5
- package/templates/{product-system → assistkick-product-system}/packages/backend/package.json +2 -2
- package/templates/{product-system → assistkick-product-system}/packages/backend/src/routes/auth.ts +1 -1
- package/templates/{product-system → assistkick-product-system}/packages/backend/src/routes/coherence.ts +1 -1
- package/templates/assistkick-product-system/packages/backend/src/routes/git.ts +231 -0
- package/templates/{product-system → assistkick-product-system}/packages/backend/src/routes/graph.ts +3 -3
- package/templates/{product-system → assistkick-product-system}/packages/backend/src/routes/kanban.ts +6 -6
- package/templates/assistkick-product-system/packages/backend/src/routes/pipeline.ts +88 -0
- package/templates/assistkick-product-system/packages/backend/src/routes/terminal.ts +82 -0
- package/templates/{product-system → assistkick-product-system}/packages/backend/src/server.ts +23 -10
- package/templates/{product-system → assistkick-product-system}/packages/backend/src/services/coherence-review.ts +4 -4
- package/templates/assistkick-product-system/packages/backend/src/services/github_app_service.ts +146 -0
- package/templates/assistkick-product-system/packages/backend/src/services/init.ts +147 -0
- package/templates/{product-system → assistkick-product-system}/packages/backend/src/services/invitation_service.ts +1 -1
- package/templates/{product-system → assistkick-product-system}/packages/backend/src/services/password_reset_service.ts +1 -1
- package/templates/{product-system → assistkick-product-system}/packages/backend/src/services/project_service.ts +72 -1
- package/templates/assistkick-product-system/packages/backend/src/services/project_workspace_service.test.ts +87 -0
- package/templates/assistkick-product-system/packages/backend/src/services/project_workspace_service.ts +194 -0
- package/templates/assistkick-product-system/packages/backend/src/services/pty_session_manager.test.ts +159 -0
- package/templates/{product-system → assistkick-product-system}/packages/backend/src/services/pty_session_manager.ts +114 -39
- package/templates/{product-system → assistkick-product-system}/packages/backend/src/services/terminal_ws_handler.ts +28 -14
- package/templates/{product-system → assistkick-product-system}/packages/backend/src/services/user_management_service.ts +1 -1
- package/templates/{product-system → assistkick-product-system}/packages/frontend/package.json +1 -1
- package/templates/{product-system → assistkick-product-system}/packages/frontend/src/App.tsx +1 -1
- package/templates/{product-system → assistkick-product-system}/packages/frontend/src/api/client.ts +151 -0
- package/templates/assistkick-product-system/packages/frontend/src/components/GitRepoModal.tsx +352 -0
- package/templates/{product-system → assistkick-product-system}/packages/frontend/src/components/KanbanView.tsx +208 -95
- package/templates/{product-system → assistkick-product-system}/packages/frontend/src/components/ProjectSelector.tsx +17 -1
- package/templates/assistkick-product-system/packages/frontend/src/components/TerminalView.tsx +333 -0
- package/templates/{product-system → assistkick-product-system}/packages/frontend/src/components/Toolbar.tsx +15 -13
- package/templates/{product-system → assistkick-product-system}/packages/frontend/src/constants/graph.ts +1 -0
- package/templates/{product-system → assistkick-product-system}/packages/frontend/src/hooks/useProjects.ts +4 -0
- package/templates/{product-system → assistkick-product-system}/packages/frontend/src/routes/dashboard.tsx +22 -4
- package/templates/{product-system → assistkick-product-system}/packages/frontend/src/styles/index.css +486 -38
- package/templates/assistkick-product-system/packages/frontend/vite.config.ts +31 -0
- package/templates/assistkick-product-system/packages/shared/db/migrations/0001_vengeful_wallop.sql +1 -0
- package/templates/assistkick-product-system/packages/shared/db/migrations/0002_greedy_excalibur.sql +4 -0
- package/templates/assistkick-product-system/packages/shared/db/migrations/meta/0001_snapshot.json +826 -0
- package/templates/assistkick-product-system/packages/shared/db/migrations/meta/0002_snapshot.json +854 -0
- package/templates/assistkick-product-system/packages/shared/db/migrations/meta/_journal.json +27 -0
- package/templates/{product-system → assistkick-product-system}/packages/shared/db/schema.ts +5 -0
- package/templates/{product-system → assistkick-product-system}/packages/shared/lib/claude-service.ts +54 -1
- package/templates/{product-system → assistkick-product-system}/packages/shared/lib/db.ts +1 -1
- package/templates/{product-system → assistkick-product-system}/packages/shared/lib/git_workflow.ts +25 -0
- package/templates/{product-system → assistkick-product-system}/packages/shared/lib/pipeline-state-store.ts +4 -0
- package/templates/{product-system → assistkick-product-system}/packages/shared/lib/pipeline.ts +329 -89
- package/templates/assistkick-product-system/packages/shared/lib/pipeline_orchestrator.ts +186 -0
- package/templates/{product-system → assistkick-product-system}/packages/shared/lib/prompt_builder.ts +2 -2
- package/templates/{product-system → assistkick-product-system}/packages/shared/package.json +1 -1
- package/templates/assistkick-product-system/packages/shared/tools/db_explorer.ts +275 -0
- package/templates/{product-system → assistkick-product-system}/packages/shared/tools/get_kanban.ts +2 -1
- package/templates/{product-system → assistkick-product-system}/packages/shared/tools/move_card.ts +3 -2
- package/templates/{product-system → assistkick-product-system}/packages/shared/tools/update_node.ts +2 -2
- package/templates/{product-system → assistkick-product-system}/tests/db_sqlite_fallback.test.ts +1 -1
- package/templates/{product-system → assistkick-product-system}/tests/kanban.test.ts +1 -1
- package/templates/{product-system → assistkick-product-system}/tests/pipeline_stats_all_cards.test.ts +1 -1
- package/templates/{product-system → assistkick-product-system}/tests/web_terminal.test.ts +189 -150
- package/templates/skills/{product-bootstrap → assistkick-bootstrap}/SKILL.md +36 -28
- package/templates/skills/{product-code-reviewer → assistkick-code-reviewer}/SKILL.md +26 -18
- package/templates/skills/assistkick-db-explorer/SKILL.md +86 -0
- package/templates/skills/{product-debugger → assistkick-debugger}/SKILL.md +35 -27
- package/templates/skills/{product-developer → assistkick-developer}/SKILL.md +40 -32
- package/templates/skills/{product-interview → assistkick-interview}/SKILL.md +37 -29
- package/templates/product-system/packages/backend/src/routes/pipeline.ts +0 -41
- package/templates/product-system/packages/backend/src/services/init.ts +0 -80
- package/templates/product-system/packages/backend/src/services/pty_session_manager.test.ts +0 -88
- package/templates/product-system/packages/frontend/src/components/TerminalView.tsx +0 -200
- package/templates/product-system/packages/frontend/vite.config.ts +0 -20
- package/templates/product-system/packages/shared/db/migrations/meta/_journal.json +0 -13
- /package/templates/{product-system → assistkick-product-system}/.env.example +0 -0
- /package/templates/{product-system → assistkick-product-system}/packages/backend/src/middleware/auth_middleware.test.ts +0 -0
- /package/templates/{product-system → assistkick-product-system}/packages/backend/src/middleware/auth_middleware.ts +0 -0
- /package/templates/{product-system → assistkick-product-system}/packages/backend/src/routes/projects.ts +0 -0
- /package/templates/{product-system → assistkick-product-system}/packages/backend/src/routes/users.ts +0 -0
- /package/templates/{product-system → assistkick-product-system}/packages/backend/src/services/auth_service.test.ts +0 -0
- /package/templates/{product-system → assistkick-product-system}/packages/backend/src/services/auth_service.ts +0 -0
- /package/templates/{product-system → assistkick-product-system}/packages/backend/src/services/email_service.ts +0 -0
- /package/templates/{product-system → assistkick-product-system}/packages/backend/src/services/invitation_service.test.ts +0 -0
- /package/templates/{product-system → assistkick-product-system}/packages/backend/src/services/password_reset_service.test.ts +0 -0
- /package/templates/{product-system → assistkick-product-system}/packages/backend/src/services/project_service.test.ts +0 -0
- /package/templates/{product-system → assistkick-product-system}/packages/backend/src/services/user_management_service.test.ts +0 -0
- /package/templates/{product-system → assistkick-product-system}/packages/backend/tsconfig.json +0 -0
- /package/templates/{product-system → assistkick-product-system}/packages/frontend/index.html +0 -0
- /package/templates/{product-system → assistkick-product-system}/packages/frontend/package-lock.json +0 -0
- /package/templates/{product-system → assistkick-product-system}/packages/frontend/public/favicon.svg +0 -0
- /package/templates/{product-system → assistkick-product-system}/packages/frontend/src/api/client_projects.test.ts +0 -0
- /package/templates/{product-system → assistkick-product-system}/packages/frontend/src/api/client_refresh.test.ts +0 -0
- /package/templates/{product-system → assistkick-product-system}/packages/frontend/src/components/CoherenceView.tsx +0 -0
- /package/templates/{product-system → assistkick-product-system}/packages/frontend/src/components/GraphLegend.tsx +0 -0
- /package/templates/{product-system → assistkick-product-system}/packages/frontend/src/components/GraphSettings.tsx +0 -0
- /package/templates/{product-system → assistkick-product-system}/packages/frontend/src/components/GraphView.tsx +0 -0
- /package/templates/{product-system → assistkick-product-system}/packages/frontend/src/components/InviteUserDialog.tsx +0 -0
- /package/templates/{product-system → assistkick-product-system}/packages/frontend/src/components/LoginPage.tsx +0 -0
- /package/templates/{product-system → assistkick-product-system}/packages/frontend/src/components/QaIssueSheet.tsx +0 -0
- /package/templates/{product-system → assistkick-product-system}/packages/frontend/src/components/SidePanel.tsx +0 -0
- /package/templates/{product-system → assistkick-product-system}/packages/frontend/src/components/UsersView.tsx +0 -0
- /package/templates/{product-system → assistkick-product-system}/packages/frontend/src/hooks/useAuth.tsx +0 -0
- /package/templates/{product-system → assistkick-product-system}/packages/frontend/src/hooks/useGraph.ts +0 -0
- /package/templates/{product-system → assistkick-product-system}/packages/frontend/src/hooks/useKanban.ts +0 -0
- /package/templates/{product-system → assistkick-product-system}/packages/frontend/src/hooks/useTheme.ts +0 -0
- /package/templates/{product-system → assistkick-product-system}/packages/frontend/src/hooks/useToast.tsx +0 -0
- /package/templates/{product-system → assistkick-product-system}/packages/frontend/src/hooks/use_projects_logic.test.ts +0 -0
- /package/templates/{product-system → assistkick-product-system}/packages/frontend/src/main.tsx +0 -0
- /package/templates/{product-system → assistkick-product-system}/packages/frontend/src/pages/accept_invitation_page.tsx +0 -0
- /package/templates/{product-system → assistkick-product-system}/packages/frontend/src/pages/forgot_password_page.tsx +0 -0
- /package/templates/{product-system → assistkick-product-system}/packages/frontend/src/pages/register_page.tsx +0 -0
- /package/templates/{product-system → assistkick-product-system}/packages/frontend/src/pages/reset_password_page.tsx +0 -0
- /package/templates/{product-system → assistkick-product-system}/packages/frontend/src/routes/ProtectedRoute.tsx +0 -0
- /package/templates/{product-system → assistkick-product-system}/packages/frontend/src/routes/accept_invitation.tsx +0 -0
- /package/templates/{product-system → assistkick-product-system}/packages/frontend/src/routes/forgot_password.tsx +0 -0
- /package/templates/{product-system → assistkick-product-system}/packages/frontend/src/routes/login.tsx +0 -0
- /package/templates/{product-system → assistkick-product-system}/packages/frontend/src/routes/register.tsx +0 -0
- /package/templates/{product-system → assistkick-product-system}/packages/frontend/src/routes/reset_password.tsx +0 -0
- /package/templates/{product-system → assistkick-product-system}/packages/frontend/src/utils/auth_validation.test.ts +0 -0
- /package/templates/{product-system → assistkick-product-system}/packages/frontend/src/utils/auth_validation.ts +0 -0
- /package/templates/{product-system → assistkick-product-system}/packages/frontend/src/utils/login_validation.test.ts +0 -0
- /package/templates/{product-system → assistkick-product-system}/packages/frontend/src/utils/login_validation.ts +0 -0
- /package/templates/{product-system → assistkick-product-system}/packages/frontend/src/utils/logout.test.ts +0 -0
- /package/templates/{product-system → assistkick-product-system}/packages/frontend/src/utils/node_sizing.test.ts +0 -0
- /package/templates/{product-system → assistkick-product-system}/packages/frontend/src/utils/node_sizing.ts +0 -0
- /package/templates/{product-system → assistkick-product-system}/packages/frontend/src/utils/task_status.test.ts +0 -0
- /package/templates/{product-system → assistkick-product-system}/packages/frontend/src/utils/task_status.ts +0 -0
- /package/templates/{product-system → assistkick-product-system}/packages/frontend/tsconfig.json +0 -0
- /package/templates/{product-system → assistkick-product-system}/packages/shared/.env.example +0 -0
- /package/templates/{product-system → assistkick-product-system}/packages/shared/README.md +0 -0
- /package/templates/{product-system → assistkick-product-system}/packages/shared/db/migrate.ts +0 -0
- /package/templates/{product-system → assistkick-product-system}/packages/shared/db/migrations/0000_dashing_gorgon.sql +0 -0
- /package/templates/{product-system → assistkick-product-system}/packages/shared/db/migrations/meta/0000_snapshot.json +0 -0
- /package/templates/{product-system → assistkick-product-system}/packages/shared/drizzle.config.js +0 -0
- /package/templates/{product-system → assistkick-product-system}/packages/shared/lib/coherence.ts +0 -0
- /package/templates/{product-system → assistkick-product-system}/packages/shared/lib/completeness.ts +0 -0
- /package/templates/{product-system → assistkick-product-system}/packages/shared/lib/constants.ts +0 -0
- /package/templates/{product-system → assistkick-product-system}/packages/shared/lib/graph.ts +0 -0
- /package/templates/{product-system → assistkick-product-system}/packages/shared/lib/kanban.ts +0 -0
- /package/templates/{product-system → assistkick-product-system}/packages/shared/lib/markdown.ts +0 -0
- /package/templates/{product-system → assistkick-product-system}/packages/shared/lib/relevance_search.ts +0 -0
- /package/templates/{product-system → assistkick-product-system}/packages/shared/lib/session.ts +0 -0
- /package/templates/{product-system → assistkick-product-system}/packages/shared/lib/validator.ts +0 -0
- /package/templates/{product-system → assistkick-product-system}/packages/shared/lib/work_summary_parser.ts +0 -0
- /package/templates/{product-system → assistkick-product-system}/packages/shared/scripts/assign-project.ts +0 -0
- /package/templates/{product-system → assistkick-product-system}/packages/shared/tools/add_edge.ts +0 -0
- /package/templates/{product-system → assistkick-product-system}/packages/shared/tools/add_node.ts +0 -0
- /package/templates/{product-system → assistkick-product-system}/packages/shared/tools/end_session.ts +0 -0
- /package/templates/{product-system → assistkick-product-system}/packages/shared/tools/get_gaps.ts +0 -0
- /package/templates/{product-system → assistkick-product-system}/packages/shared/tools/get_node.ts +0 -0
- /package/templates/{product-system → assistkick-product-system}/packages/shared/tools/get_status.ts +0 -0
- /package/templates/{product-system → assistkick-product-system}/packages/shared/tools/migrate_to_turso.ts +0 -0
- /package/templates/{product-system → assistkick-product-system}/packages/shared/tools/rebuild_index.ts +0 -0
- /package/templates/{product-system → assistkick-product-system}/packages/shared/tools/remove_edge.ts +0 -0
- /package/templates/{product-system → assistkick-product-system}/packages/shared/tools/remove_node.ts +0 -0
- /package/templates/{product-system → assistkick-product-system}/packages/shared/tools/resolve_question.ts +0 -0
- /package/templates/{product-system → assistkick-product-system}/packages/shared/tools/search_nodes.ts +0 -0
- /package/templates/{product-system → assistkick-product-system}/packages/shared/tools/start_session.ts +0 -0
- /package/templates/{product-system → assistkick-product-system}/packages/shared/tsconfig.json +0 -0
- /package/templates/{product-system → assistkick-product-system}/pnpm-workspace.yaml +0 -0
- /package/templates/{product-system → assistkick-product-system}/smoke_test.ts +0 -0
- /package/templates/{product-system → assistkick-product-system}/tests/coherence_review.test.ts +0 -0
- /package/templates/{product-system → assistkick-product-system}/tests/edge_type_color_coding.test.ts +0 -0
- /package/templates/{product-system → assistkick-product-system}/tests/emit-tool-use-events.test.ts +0 -0
- /package/templates/{product-system → assistkick-product-system}/tests/feature_kind.test.ts +0 -0
- /package/templates/{product-system → assistkick-product-system}/tests/gap_indicators.test.ts +0 -0
- /package/templates/{product-system → assistkick-product-system}/tests/graceful_init.test.ts +0 -0
- /package/templates/{product-system → assistkick-product-system}/tests/graph_legend.test.ts +0 -0
- /package/templates/{product-system → assistkick-product-system}/tests/graph_settings_sheet.test.ts +0 -0
- /package/templates/{product-system → assistkick-product-system}/tests/hide_defined_filter.test.ts +0 -0
- /package/templates/{product-system → assistkick-product-system}/tests/neighborhood_focus.test.ts +0 -0
- /package/templates/{product-system → assistkick-product-system}/tests/node_search.test.ts +0 -0
- /package/templates/{product-system → assistkick-product-system}/tests/node_sizing.test.ts +0 -0
- /package/templates/{product-system → assistkick-product-system}/tests/node_type_toggle_filters.test.ts +0 -0
- /package/templates/{product-system → assistkick-product-system}/tests/node_type_visual_encoding.test.ts +0 -0
- /package/templates/{product-system → assistkick-product-system}/tests/pipeline-state-store.test.ts +0 -0
- /package/templates/{product-system → assistkick-product-system}/tests/pipeline-unit.test.ts +0 -0
- /package/templates/{product-system → assistkick-product-system}/tests/pipeline.test.ts +0 -0
- /package/templates/{product-system → assistkick-product-system}/tests/play_all.test.ts +0 -0
- /package/templates/{product-system → assistkick-product-system}/tests/qa_issue_sheet.test.ts +0 -0
- /package/templates/{product-system → assistkick-product-system}/tests/relevance_search.test.ts +0 -0
- /package/templates/{product-system → assistkick-product-system}/tests/search_reorder.test.ts +0 -0
- /package/templates/{product-system → assistkick-product-system}/tests/serve_ui.test.ts +0 -0
- /package/templates/{product-system → assistkick-product-system}/tests/serve_ui_drizzle.test.ts +0 -0
- /package/templates/{product-system → assistkick-product-system}/tests/session_context_recall.test.ts +0 -0
- /package/templates/{product-system → assistkick-product-system}/tests/side_panel.test.ts +0 -0
- /package/templates/{product-system → assistkick-product-system}/tests/spec_completeness_label.test.ts +0 -0
- /package/templates/{product-system → assistkick-product-system}/tests/url_routing_test.ts +0 -0
- /package/templates/{product-system → assistkick-product-system}/tests/user_login.test.ts +0 -0
- /package/templates/{product-system → assistkick-product-system}/tests/user_registration.test.ts +0 -0
- /package/templates/{product-system → assistkick-product-system}/tests/work_summary.test.ts +0 -0
- /package/templates/{product-system → assistkick-product-system}/tests/zoom_pan.test.ts +0 -0
- /package/templates/{product-system → assistkick-product-system}/tsconfig.json +0 -0
- /package/templates/skills/{product-debugger → assistkick-debugger}/references/agent-browser.md +0 -0
|
@@ -1,200 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Terminal view component — embeds an xterm.js terminal connected
|
|
3
|
-
* to the backend PTY via WebSocket. Admin-only access.
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
import React, { useEffect, useRef, useCallback, useState } from 'react';
|
|
7
|
-
import { Terminal } from '@xterm/xterm';
|
|
8
|
-
import { FitAddon } from '@xterm/addon-fit';
|
|
9
|
-
import { WebLinksAddon } from '@xterm/addon-web-links';
|
|
10
|
-
import '@xterm/xterm/css/xterm.css';
|
|
11
|
-
|
|
12
|
-
interface TerminalViewProps {
|
|
13
|
-
visible: boolean;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
type ConnectionStatus = 'connecting' | 'connected' | 'disconnected' | 'error';
|
|
17
|
-
|
|
18
|
-
export function TerminalView({ visible }: TerminalViewProps) {
|
|
19
|
-
const containerRef = useRef<HTMLDivElement>(null);
|
|
20
|
-
const terminalRef = useRef<Terminal | null>(null);
|
|
21
|
-
const fitAddonRef = useRef<FitAddon | null>(null);
|
|
22
|
-
const wsRef = useRef<WebSocket | null>(null);
|
|
23
|
-
const [status, setStatus] = useState<ConnectionStatus>('disconnected');
|
|
24
|
-
const [errorMsg, setErrorMsg] = useState('');
|
|
25
|
-
|
|
26
|
-
const connect = useCallback(() => {
|
|
27
|
-
if (wsRef.current?.readyState === WebSocket.OPEN) return;
|
|
28
|
-
|
|
29
|
-
const protocol = window.location.protocol === 'https:' ? 'wss:' : 'ws:';
|
|
30
|
-
const wsUrl = `${protocol}//${window.location.host}/api/terminal`;
|
|
31
|
-
|
|
32
|
-
setStatus('connecting');
|
|
33
|
-
setErrorMsg('');
|
|
34
|
-
|
|
35
|
-
const ws = new WebSocket(wsUrl);
|
|
36
|
-
wsRef.current = ws;
|
|
37
|
-
|
|
38
|
-
ws.onopen = () => {
|
|
39
|
-
setStatus('connected');
|
|
40
|
-
|
|
41
|
-
// Send initial resize
|
|
42
|
-
if (terminalRef.current && fitAddonRef.current) {
|
|
43
|
-
fitAddonRef.current.fit();
|
|
44
|
-
const { cols, rows } = terminalRef.current;
|
|
45
|
-
ws.send(JSON.stringify({ type: 'resize', cols, rows }));
|
|
46
|
-
}
|
|
47
|
-
};
|
|
48
|
-
|
|
49
|
-
ws.onmessage = (event) => {
|
|
50
|
-
try {
|
|
51
|
-
const msg = JSON.parse(event.data);
|
|
52
|
-
if (msg.type === 'output' && terminalRef.current) {
|
|
53
|
-
terminalRef.current.write(msg.data);
|
|
54
|
-
}
|
|
55
|
-
} catch {
|
|
56
|
-
// Ignore malformed messages
|
|
57
|
-
}
|
|
58
|
-
};
|
|
59
|
-
|
|
60
|
-
ws.onclose = (event) => {
|
|
61
|
-
wsRef.current = null;
|
|
62
|
-
if (event.code === 4001) {
|
|
63
|
-
setStatus('error');
|
|
64
|
-
setErrorMsg('Authentication required. Please log in.');
|
|
65
|
-
} else if (event.code === 4003) {
|
|
66
|
-
setStatus('error');
|
|
67
|
-
setErrorMsg('Access denied. Admin privileges required.');
|
|
68
|
-
} else {
|
|
69
|
-
setStatus('disconnected');
|
|
70
|
-
}
|
|
71
|
-
};
|
|
72
|
-
|
|
73
|
-
ws.onerror = () => {
|
|
74
|
-
setStatus('error');
|
|
75
|
-
setErrorMsg('Failed to connect to terminal.');
|
|
76
|
-
wsRef.current = null;
|
|
77
|
-
};
|
|
78
|
-
}, []);
|
|
79
|
-
|
|
80
|
-
// Initialize terminal
|
|
81
|
-
useEffect(() => {
|
|
82
|
-
if (!containerRef.current || terminalRef.current) return;
|
|
83
|
-
|
|
84
|
-
const terminal = new Terminal({
|
|
85
|
-
cursorBlink: true,
|
|
86
|
-
fontSize: 14,
|
|
87
|
-
fontFamily: 'Menlo, Monaco, "Courier New", monospace',
|
|
88
|
-
theme: {
|
|
89
|
-
background: '#1e1e2e',
|
|
90
|
-
foreground: '#cdd6f4',
|
|
91
|
-
cursor: '#f5e0dc',
|
|
92
|
-
selectionBackground: '#585b7066',
|
|
93
|
-
black: '#45475a',
|
|
94
|
-
red: '#f38ba8',
|
|
95
|
-
green: '#a6e3a1',
|
|
96
|
-
yellow: '#f9e2af',
|
|
97
|
-
blue: '#89b4fa',
|
|
98
|
-
magenta: '#f5c2e7',
|
|
99
|
-
cyan: '#94e2d5',
|
|
100
|
-
white: '#bac2de',
|
|
101
|
-
brightBlack: '#585b70',
|
|
102
|
-
brightRed: '#f38ba8',
|
|
103
|
-
brightGreen: '#a6e3a1',
|
|
104
|
-
brightYellow: '#f9e2af',
|
|
105
|
-
brightBlue: '#89b4fa',
|
|
106
|
-
brightMagenta: '#f5c2e7',
|
|
107
|
-
brightCyan: '#94e2d5',
|
|
108
|
-
brightWhite: '#a6adc8',
|
|
109
|
-
},
|
|
110
|
-
});
|
|
111
|
-
|
|
112
|
-
const fitAddon = new FitAddon();
|
|
113
|
-
const webLinksAddon = new WebLinksAddon();
|
|
114
|
-
|
|
115
|
-
terminal.loadAddon(fitAddon);
|
|
116
|
-
terminal.loadAddon(webLinksAddon);
|
|
117
|
-
terminal.open(containerRef.current);
|
|
118
|
-
|
|
119
|
-
fitAddon.fit();
|
|
120
|
-
terminalRef.current = terminal;
|
|
121
|
-
fitAddonRef.current = fitAddon;
|
|
122
|
-
|
|
123
|
-
// Forward user input to WebSocket
|
|
124
|
-
terminal.onData((data) => {
|
|
125
|
-
const ws = wsRef.current;
|
|
126
|
-
if (ws?.readyState === WebSocket.OPEN) {
|
|
127
|
-
ws.send(JSON.stringify({ type: 'input', data }));
|
|
128
|
-
}
|
|
129
|
-
});
|
|
130
|
-
|
|
131
|
-
return () => {
|
|
132
|
-
terminal.dispose();
|
|
133
|
-
terminalRef.current = null;
|
|
134
|
-
fitAddonRef.current = null;
|
|
135
|
-
};
|
|
136
|
-
}, []);
|
|
137
|
-
|
|
138
|
-
// Connect when visible
|
|
139
|
-
useEffect(() => {
|
|
140
|
-
if (visible && status === 'disconnected') {
|
|
141
|
-
connect();
|
|
142
|
-
}
|
|
143
|
-
}, [visible, status, connect]);
|
|
144
|
-
|
|
145
|
-
// Handle resize
|
|
146
|
-
useEffect(() => {
|
|
147
|
-
if (!visible) return;
|
|
148
|
-
|
|
149
|
-
const handleResize = () => {
|
|
150
|
-
if (fitAddonRef.current && terminalRef.current) {
|
|
151
|
-
fitAddonRef.current.fit();
|
|
152
|
-
const { cols, rows } = terminalRef.current;
|
|
153
|
-
const ws = wsRef.current;
|
|
154
|
-
if (ws?.readyState === WebSocket.OPEN) {
|
|
155
|
-
ws.send(JSON.stringify({ type: 'resize', cols, rows }));
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
};
|
|
159
|
-
|
|
160
|
-
// Fit on visibility change
|
|
161
|
-
handleResize();
|
|
162
|
-
|
|
163
|
-
window.addEventListener('resize', handleResize);
|
|
164
|
-
return () => window.removeEventListener('resize', handleResize);
|
|
165
|
-
}, [visible]);
|
|
166
|
-
|
|
167
|
-
// Clean up WebSocket on unmount
|
|
168
|
-
useEffect(() => {
|
|
169
|
-
return () => {
|
|
170
|
-
wsRef.current?.close();
|
|
171
|
-
wsRef.current = null;
|
|
172
|
-
};
|
|
173
|
-
}, []);
|
|
174
|
-
|
|
175
|
-
return (
|
|
176
|
-
<div className="terminal-view" style={{ display: visible ? 'flex' : 'none' }}>
|
|
177
|
-
{errorMsg && (
|
|
178
|
-
<div className="terminal-error">
|
|
179
|
-
<span>{errorMsg}</span>
|
|
180
|
-
{status !== 'connecting' && (
|
|
181
|
-
<button className="terminal-reconnect-btn" onClick={connect}>
|
|
182
|
-
Reconnect
|
|
183
|
-
</button>
|
|
184
|
-
)}
|
|
185
|
-
</div>
|
|
186
|
-
)}
|
|
187
|
-
{status === 'connecting' && (
|
|
188
|
-
<div className="terminal-status">Connecting...</div>
|
|
189
|
-
)}
|
|
190
|
-
<div ref={containerRef} className="terminal-container" />
|
|
191
|
-
{status === 'disconnected' && !errorMsg && (
|
|
192
|
-
<div className="terminal-overlay">
|
|
193
|
-
<button className="terminal-connect-btn" onClick={connect}>
|
|
194
|
-
Connect to Terminal
|
|
195
|
-
</button>
|
|
196
|
-
</div>
|
|
197
|
-
)}
|
|
198
|
-
</div>
|
|
199
|
-
);
|
|
200
|
-
}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { defineConfig } from 'vite';
|
|
2
|
-
import react from '@vitejs/plugin-react';
|
|
3
|
-
|
|
4
|
-
export default defineConfig({
|
|
5
|
-
plugins: [react()],
|
|
6
|
-
build: {
|
|
7
|
-
outDir: 'dist',
|
|
8
|
-
emptyOutDir: true,
|
|
9
|
-
},
|
|
10
|
-
server: {
|
|
11
|
-
port: 5173,
|
|
12
|
-
strictPort: true,
|
|
13
|
-
proxy: {
|
|
14
|
-
'/api': {
|
|
15
|
-
target: 'http://localhost:3000',
|
|
16
|
-
ws: true,
|
|
17
|
-
},
|
|
18
|
-
},
|
|
19
|
-
},
|
|
20
|
-
});
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/templates/{product-system → assistkick-product-system}/packages/backend/src/routes/users.ts
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/templates/{product-system → assistkick-product-system}/packages/backend/tsconfig.json
RENAMED
|
File without changes
|
/package/templates/{product-system → assistkick-product-system}/packages/frontend/index.html
RENAMED
|
File without changes
|
/package/templates/{product-system → assistkick-product-system}/packages/frontend/package-lock.json
RENAMED
|
File without changes
|
/package/templates/{product-system → assistkick-product-system}/packages/frontend/public/favicon.svg
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/templates/{product-system → assistkick-product-system}/packages/frontend/src/main.tsx
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/templates/{product-system → assistkick-product-system}/packages/frontend/tsconfig.json
RENAMED
|
File without changes
|
/package/templates/{product-system → assistkick-product-system}/packages/shared/.env.example
RENAMED
|
File without changes
|
|
File without changes
|
/package/templates/{product-system → assistkick-product-system}/packages/shared/db/migrate.ts
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/templates/{product-system → assistkick-product-system}/packages/shared/drizzle.config.js
RENAMED
|
File without changes
|
/package/templates/{product-system → assistkick-product-system}/packages/shared/lib/coherence.ts
RENAMED
|
File without changes
|
/package/templates/{product-system → assistkick-product-system}/packages/shared/lib/completeness.ts
RENAMED
|
File without changes
|
/package/templates/{product-system → assistkick-product-system}/packages/shared/lib/constants.ts
RENAMED
|
File without changes
|
/package/templates/{product-system → assistkick-product-system}/packages/shared/lib/graph.ts
RENAMED
|
File without changes
|
/package/templates/{product-system → assistkick-product-system}/packages/shared/lib/kanban.ts
RENAMED
|
File without changes
|
/package/templates/{product-system → assistkick-product-system}/packages/shared/lib/markdown.ts
RENAMED
|
File without changes
|
|
File without changes
|
/package/templates/{product-system → assistkick-product-system}/packages/shared/lib/session.ts
RENAMED
|
File without changes
|
/package/templates/{product-system → assistkick-product-system}/packages/shared/lib/validator.ts
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/templates/{product-system → assistkick-product-system}/packages/shared/tools/add_edge.ts
RENAMED
|
File without changes
|
/package/templates/{product-system → assistkick-product-system}/packages/shared/tools/add_node.ts
RENAMED
|
File without changes
|
/package/templates/{product-system → assistkick-product-system}/packages/shared/tools/end_session.ts
RENAMED
|
File without changes
|
/package/templates/{product-system → assistkick-product-system}/packages/shared/tools/get_gaps.ts
RENAMED
|
File without changes
|
/package/templates/{product-system → assistkick-product-system}/packages/shared/tools/get_node.ts
RENAMED
|
File without changes
|
/package/templates/{product-system → assistkick-product-system}/packages/shared/tools/get_status.ts
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/templates/{product-system → assistkick-product-system}/packages/shared/tools/remove_edge.ts
RENAMED
|
File without changes
|
/package/templates/{product-system → assistkick-product-system}/packages/shared/tools/remove_node.ts
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/templates/{product-system → assistkick-product-system}/packages/shared/tsconfig.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/templates/{product-system → assistkick-product-system}/tests/coherence_review.test.ts
RENAMED
|
File without changes
|
/package/templates/{product-system → assistkick-product-system}/tests/edge_type_color_coding.test.ts
RENAMED
|
File without changes
|
/package/templates/{product-system → assistkick-product-system}/tests/emit-tool-use-events.test.ts
RENAMED
|
File without changes
|
|
File without changes
|
/package/templates/{product-system → assistkick-product-system}/tests/gap_indicators.test.ts
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/templates/{product-system → assistkick-product-system}/tests/graph_settings_sheet.test.ts
RENAMED
|
File without changes
|
/package/templates/{product-system → assistkick-product-system}/tests/hide_defined_filter.test.ts
RENAMED
|
File without changes
|
/package/templates/{product-system → assistkick-product-system}/tests/neighborhood_focus.test.ts
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/templates/{product-system → assistkick-product-system}/tests/pipeline-state-store.test.ts
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/templates/{product-system → assistkick-product-system}/tests/qa_issue_sheet.test.ts
RENAMED
|
File without changes
|
/package/templates/{product-system → assistkick-product-system}/tests/relevance_search.test.ts
RENAMED
|
File without changes
|
/package/templates/{product-system → assistkick-product-system}/tests/search_reorder.test.ts
RENAMED
|
File without changes
|
|
File without changes
|
/package/templates/{product-system → assistkick-product-system}/tests/serve_ui_drizzle.test.ts
RENAMED
|
File without changes
|
/package/templates/{product-system → assistkick-product-system}/tests/session_context_recall.test.ts
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/templates/{product-system → assistkick-product-system}/tests/user_registration.test.ts
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/templates/skills/{product-debugger → assistkick-debugger}/references/agent-browser.md
RENAMED
|
File without changes
|