copilot-liku-cli 0.0.1

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 (71) hide show
  1. package/ARCHITECTURE.md +411 -0
  2. package/CONFIGURATION.md +302 -0
  3. package/CONTRIBUTING.md +225 -0
  4. package/ELECTRON_README.md +121 -0
  5. package/INSTALLATION.md +350 -0
  6. package/LICENSE.md +1 -0
  7. package/PROJECT_STATUS.md +229 -0
  8. package/QUICKSTART.md +255 -0
  9. package/README.md +167 -0
  10. package/TESTING.md +274 -0
  11. package/package.json +61 -0
  12. package/scripts/start.js +30 -0
  13. package/src/assets/tray-icon.png +0 -0
  14. package/src/cli/commands/agent.js +327 -0
  15. package/src/cli/commands/click.js +108 -0
  16. package/src/cli/commands/drag.js +85 -0
  17. package/src/cli/commands/find.js +109 -0
  18. package/src/cli/commands/keys.js +132 -0
  19. package/src/cli/commands/mouse.js +79 -0
  20. package/src/cli/commands/repl.js +290 -0
  21. package/src/cli/commands/screenshot.js +72 -0
  22. package/src/cli/commands/scroll.js +74 -0
  23. package/src/cli/commands/start.js +67 -0
  24. package/src/cli/commands/type.js +57 -0
  25. package/src/cli/commands/wait.js +84 -0
  26. package/src/cli/commands/window.js +104 -0
  27. package/src/cli/liku.js +249 -0
  28. package/src/cli/util/output.js +174 -0
  29. package/src/main/agents/base-agent.js +410 -0
  30. package/src/main/agents/builder.js +484 -0
  31. package/src/main/agents/index.js +62 -0
  32. package/src/main/agents/orchestrator.js +362 -0
  33. package/src/main/agents/researcher.js +511 -0
  34. package/src/main/agents/state-manager.js +344 -0
  35. package/src/main/agents/supervisor.js +365 -0
  36. package/src/main/agents/verifier.js +452 -0
  37. package/src/main/ai-service.js +1633 -0
  38. package/src/main/index.js +2208 -0
  39. package/src/main/inspect-service.js +467 -0
  40. package/src/main/system-automation.js +1186 -0
  41. package/src/main/ui-automation/config.js +76 -0
  42. package/src/main/ui-automation/core/helpers.js +41 -0
  43. package/src/main/ui-automation/core/index.js +15 -0
  44. package/src/main/ui-automation/core/powershell.js +82 -0
  45. package/src/main/ui-automation/elements/finder.js +274 -0
  46. package/src/main/ui-automation/elements/index.js +14 -0
  47. package/src/main/ui-automation/elements/wait.js +66 -0
  48. package/src/main/ui-automation/index.js +164 -0
  49. package/src/main/ui-automation/interactions/element-click.js +211 -0
  50. package/src/main/ui-automation/interactions/high-level.js +230 -0
  51. package/src/main/ui-automation/interactions/index.js +47 -0
  52. package/src/main/ui-automation/keyboard/index.js +15 -0
  53. package/src/main/ui-automation/keyboard/input.js +179 -0
  54. package/src/main/ui-automation/mouse/click.js +186 -0
  55. package/src/main/ui-automation/mouse/drag.js +88 -0
  56. package/src/main/ui-automation/mouse/index.js +30 -0
  57. package/src/main/ui-automation/mouse/movement.js +51 -0
  58. package/src/main/ui-automation/mouse/scroll.js +116 -0
  59. package/src/main/ui-automation/screenshot.js +183 -0
  60. package/src/main/ui-automation/window/index.js +23 -0
  61. package/src/main/ui-automation/window/manager.js +305 -0
  62. package/src/main/utils/time.js +62 -0
  63. package/src/main/visual-awareness.js +597 -0
  64. package/src/renderer/chat/chat.js +671 -0
  65. package/src/renderer/chat/index.html +725 -0
  66. package/src/renderer/chat/preload.js +112 -0
  67. package/src/renderer/overlay/index.html +648 -0
  68. package/src/renderer/overlay/overlay.js +782 -0
  69. package/src/renderer/overlay/preload.js +90 -0
  70. package/src/shared/grid-math.js +82 -0
  71. package/src/shared/inspect-types.js +230 -0
@@ -0,0 +1,112 @@
1
+ const { contextBridge, ipcRenderer } = require('electron');
2
+
3
+ // Expose protected methods for chat window
4
+ contextBridge.exposeInMainWorld('electronAPI', {
5
+ // ===== MESSAGING =====
6
+ sendMessage: (message) => ipcRenderer.send('chat-message', message),
7
+
8
+ // ===== MODE CONTROL =====
9
+ setMode: (mode) => ipcRenderer.send('set-mode', mode),
10
+
11
+ // ===== WINDOW CONTROLS =====
12
+ minimizeWindow: () => ipcRenderer.send('minimize-chat'),
13
+ hideWindow: () => ipcRenderer.send('hide-chat'),
14
+
15
+ // ===== SCREEN CAPTURE =====
16
+ captureScreen: (options) => ipcRenderer.send('capture-screen', options),
17
+ captureRegion: (x, y, width, height) => ipcRenderer.send('capture-region', { x, y, width, height }),
18
+
19
+ // ===== AI SERVICE CONTROL =====
20
+ setAIProvider: (provider) => ipcRenderer.send('set-ai-provider', provider),
21
+ setProvider: (provider) => ipcRenderer.send('set-ai-provider', provider), // Alias
22
+ setApiKey: (provider, key) => ipcRenderer.send('set-api-key', { provider, key }),
23
+ getAIStatus: () => ipcRenderer.invoke('get-ai-status'),
24
+ checkAuth: (provider) => ipcRenderer.send('check-auth', provider),
25
+
26
+ // ===== AGENTIC ACTIONS =====
27
+ executeActions: (actionData) => ipcRenderer.send('execute-actions', actionData),
28
+ cancelActions: () => ipcRenderer.send('cancel-actions'),
29
+
30
+ // ===== VISUAL AWARENESS =====
31
+ getActiveWindow: () => ipcRenderer.invoke('get-active-window'),
32
+ findElementAt: (x, y) => ipcRenderer.invoke('find-element-at', { x, y }),
33
+ detectUIElements: (options) => ipcRenderer.invoke('detect-ui-elements', options),
34
+ extractText: (options) => ipcRenderer.invoke('extract-text', options),
35
+ analyzeScreen: (options) => ipcRenderer.invoke('analyze-screen', options),
36
+ getScreenDiffHistory: () => ipcRenderer.invoke('get-screen-diff-history'),
37
+
38
+ // ===== EVENT LISTENERS =====
39
+ onDotSelected: (callback) => ipcRenderer.on('dot-selected', (event, data) => callback(data)),
40
+ onAgentResponse: (callback) => ipcRenderer.on('agent-response', (event, data) => callback(data)),
41
+ onAgentTyping: (callback) => ipcRenderer.on('agent-typing', (event, data) => callback(data)),
42
+ onScreenCaptured: (callback) => ipcRenderer.on('screen-captured', (event, data) => callback(data)),
43
+ onVisualContextUpdate: (callback) => ipcRenderer.on('visual-context-update', (event, data) => callback(data)),
44
+ onProviderChanged: (callback) => ipcRenderer.on('provider-changed', (event, data) => callback(data)),
45
+ onScreenAnalysis: (callback) => ipcRenderer.on('screen-analysis', (event, data) => callback(data)),
46
+ onAuthStatus: (callback) => ipcRenderer.on('auth-status', (event, data) => callback(data)),
47
+ onTokenUsage: (callback) => ipcRenderer.on('token-usage', (event, data) => callback(data)),
48
+
49
+ // ===== AGENTIC ACTION EVENTS =====
50
+ onActionExecuting: (callback) => ipcRenderer.on('action-executing', (event, data) => callback(data)),
51
+ onActionProgress: (callback) => ipcRenderer.on('action-progress', (event, data) => callback(data)),
52
+ onActionComplete: (callback) => ipcRenderer.on('action-complete', (event, data) => callback(data)),
53
+
54
+ // ===== SAFETY GUARDRAILS API =====
55
+ // Safe click with pre-analysis and confirmation for risky actions
56
+ safeClickAt: (params) => ipcRenderer.invoke('safe-click-at', params),
57
+
58
+ // Label to pixel coordinate conversion
59
+ labelToCoordinates: (label) => ipcRenderer.invoke('label-to-coordinates', label),
60
+
61
+ // Analyze action safety before execution
62
+ analyzeActionSafety: (params) => ipcRenderer.invoke('analyze-action-safety', params),
63
+
64
+ // Pending action management (for user confirmation flow)
65
+ confirmPendingAction: (actionId) => ipcRenderer.invoke('confirm-pending-action', { actionId }),
66
+ rejectPendingAction: (actionId) => ipcRenderer.invoke('reject-pending-action', { actionId }),
67
+ getPendingAction: () => ipcRenderer.invoke('get-pending-action'),
68
+
69
+ // Safety event listeners
70
+ onActionRequiresConfirmation: (callback) => {
71
+ ipcRenderer.on('action-requires-confirmation', (event, data) => callback(data));
72
+ },
73
+ onActionRejected: (callback) => {
74
+ ipcRenderer.on('action-rejected', (event, data) => callback(data));
75
+ },
76
+ onActionExecuted: (callback) => {
77
+ ipcRenderer.on('action-executed', (event, data) => callback(data));
78
+ },
79
+
80
+ // ===== MULTI-AGENT SYSTEM API =====
81
+ // Spawn a new agent session
82
+ agentSpawn: (params) => ipcRenderer.invoke('agent-spawn', params),
83
+
84
+ // Execute a task with multi-agent orchestration
85
+ agentRun: (params) => ipcRenderer.invoke('agent-run', params),
86
+
87
+ // Research using researcher agent
88
+ agentResearch: (params) => ipcRenderer.invoke('agent-research', params),
89
+
90
+ // Build using builder agent
91
+ agentBuild: (params) => ipcRenderer.invoke('agent-build', params),
92
+
93
+ // Verify using verifier agent
94
+ agentVerify: (params) => ipcRenderer.invoke('agent-verify', params),
95
+
96
+ // Get agent system status
97
+ agentStatus: () => ipcRenderer.invoke('agent-status'),
98
+
99
+ // Reset agent system
100
+ agentReset: () => ipcRenderer.invoke('agent-reset'),
101
+
102
+ // Get handoff history
103
+ agentHandoffs: () => ipcRenderer.invoke('agent-handoffs'),
104
+
105
+ // Agent event listeners
106
+ onAgentEvent: (callback) => {
107
+ ipcRenderer.on('agent-event', (event, data) => callback(data));
108
+ },
109
+
110
+ // ===== STATE =====
111
+ getState: () => ipcRenderer.invoke('get-state')
112
+ });