@quantiya/codevibe-codex-plugin 1.0.6 → 1.0.8

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 (66) hide show
  1. package/README.md +59 -106
  2. package/dist/server.js +22 -1051
  3. package/package.json +10 -12
  4. package/dist/approval-detector.d.ts +0 -38
  5. package/dist/approval-detector.d.ts.map +0 -1
  6. package/dist/approval-detector.js +0 -174
  7. package/dist/approval-detector.js.map +0 -1
  8. package/dist/appsync-client.d.ts +0 -69
  9. package/dist/appsync-client.d.ts.map +0 -1
  10. package/dist/appsync-client.js +0 -937
  11. package/dist/appsync-client.js.map +0 -1
  12. package/dist/auth-cli.d.ts +0 -11
  13. package/dist/auth-cli.d.ts.map +0 -1
  14. package/dist/auth-cli.js +0 -241
  15. package/dist/auth-cli.js.map +0 -1
  16. package/dist/config.d.ts +0 -29
  17. package/dist/config.d.ts.map +0 -1
  18. package/dist/config.js +0 -116
  19. package/dist/config.js.map +0 -1
  20. package/dist/crypto-service.d.ts +0 -115
  21. package/dist/crypto-service.d.ts.map +0 -1
  22. package/dist/crypto-service.js +0 -278
  23. package/dist/crypto-service.js.map +0 -1
  24. package/dist/event-mapper.d.ts +0 -39
  25. package/dist/event-mapper.d.ts.map +0 -1
  26. package/dist/event-mapper.js +0 -302
  27. package/dist/event-mapper.js.map +0 -1
  28. package/dist/key-manager.d.ts +0 -87
  29. package/dist/key-manager.d.ts.map +0 -1
  30. package/dist/key-manager.js +0 -287
  31. package/dist/key-manager.js.map +0 -1
  32. package/dist/logger.d.ts +0 -2
  33. package/dist/logger.d.ts.map +0 -1
  34. package/dist/logger.js +0 -18
  35. package/dist/logger.js.map +0 -1
  36. package/dist/prompt-parser.d.ts +0 -3
  37. package/dist/prompt-parser.d.ts.map +0 -1
  38. package/dist/prompt-parser.js +0 -8
  39. package/dist/prompt-parser.js.map +0 -1
  40. package/dist/prompt-responder.d.ts +0 -18
  41. package/dist/prompt-responder.d.ts.map +0 -1
  42. package/dist/prompt-responder.js +0 -78
  43. package/dist/prompt-responder.js.map +0 -1
  44. package/dist/server.d.ts +0 -8
  45. package/dist/server.d.ts.map +0 -1
  46. package/dist/server.js.map +0 -1
  47. package/dist/session-id-cache.d.ts +0 -16
  48. package/dist/session-id-cache.d.ts.map +0 -1
  49. package/dist/session-id-cache.js +0 -90
  50. package/dist/session-id-cache.js.map +0 -1
  51. package/dist/session-log-watcher.d.ts +0 -61
  52. package/dist/session-log-watcher.d.ts.map +0 -1
  53. package/dist/session-log-watcher.js +0 -372
  54. package/dist/session-log-watcher.js.map +0 -1
  55. package/dist/tmux-pane-observer.d.ts +0 -39
  56. package/dist/tmux-pane-observer.d.ts.map +0 -1
  57. package/dist/tmux-pane-observer.js +0 -255
  58. package/dist/tmux-pane-observer.js.map +0 -1
  59. package/dist/token-storage.d.ts +0 -39
  60. package/dist/token-storage.d.ts.map +0 -1
  61. package/dist/token-storage.js +0 -169
  62. package/dist/token-storage.js.map +0 -1
  63. package/dist/types.d.ts +0 -158
  64. package/dist/types.d.ts.map +0 -1
  65. package/dist/types.js +0 -17
  66. package/dist/types.js.map +0 -1
package/package.json CHANGED
@@ -1,31 +1,27 @@
1
1
  {
2
2
  "name": "@quantiya/codevibe-codex-plugin",
3
- "version": "1.0.6",
4
- "description": "Mobile companion for OpenAI Codex CLI - monitor and control your Codex CLI sessions from your phone",
3
+ "version": "1.0.8",
4
+ "description": "Control OpenAI Codex CLI from your iPhone and Android real-time sync, approve file edits, send prompts by voice. Part of CodeVibe.",
5
5
  "main": "dist/server.js",
6
6
  "bin": {
7
7
  "codevibe-codex": "./bin/codevibe-codex"
8
8
  },
9
9
  "files": [
10
- "dist",
10
+ "dist/**/*.js",
11
11
  "bin",
12
12
  "hooks",
13
13
  "README.md",
14
14
  ".env.example"
15
15
  ],
16
16
  "scripts": {
17
- "build": "tsc",
17
+ "typecheck": "tsc --noEmit",
18
+ "build": "rm -rf dist && npm run typecheck && esbuild src/server.ts --bundle --platform=node --target=node18 --minify --packages=external --outfile=dist/server.js",
18
19
  "prepack": "node scripts/prepare-publish.js && npm run build",
19
20
  "postpack": "node scripts/restore-dev.js",
20
21
  "dev": "ts-node src/server.ts",
21
22
  "start": "node dist/server.js",
22
- "watch": "tsc --watch",
23
23
  "test": "jest --config jest.config.js"
24
24
  },
25
- "repository": {
26
- "type": "git",
27
- "url": "git+https://github.com/hendryyeh/quantiya-codevibe-codex-plugin.git"
28
- },
29
25
  "keywords": [
30
26
  "codex",
31
27
  "codex-cli",
@@ -34,6 +30,7 @@
34
30
  "extension",
35
31
  "mobile",
36
32
  "ios",
33
+ "android",
37
34
  "codevibe",
38
35
  "companion",
39
36
  "remote-control",
@@ -43,9 +40,9 @@
43
40
  "author": "Quantiya <support@quantiya.ai>",
44
41
  "license": "MIT",
45
42
  "bugs": {
46
- "url": "https://github.com/hendryyeh/quantiya-codevibe-codex-plugin/issues"
43
+ "email": "support@quantiya.ai"
47
44
  },
48
- "homepage": "https://github.com/hendryyeh/quantiya-codevibe-codex-plugin#readme",
45
+ "homepage": "https://quantiya.ai/codevibe",
49
46
  "engines": {
50
47
  "node": ">=18.0.0"
51
48
  },
@@ -53,7 +50,7 @@
53
50
  "darwin"
54
51
  ],
55
52
  "dependencies": {
56
- "@quantiya/codevibe-core": "^1.0.3",
53
+ "@quantiya/codevibe-core": "^1.0.5",
57
54
  "chokidar": "^4.0.0",
58
55
  "dotenv": "^16.6.1",
59
56
  "express": "^5.1.0",
@@ -67,6 +64,7 @@
67
64
  "@types/node": "^24.10.1",
68
65
  "@types/uuid": "^10.0.0",
69
66
  "@types/ws": "^8.18.1",
67
+ "esbuild": "^0.28.0",
70
68
  "jest": "^30.3.0",
71
69
  "ts-jest": "^29.4.9",
72
70
  "ts-node": "^10.9.2",
@@ -1,38 +0,0 @@
1
- import { EventEmitter } from 'events';
2
- import { PendingToolCall } from './types';
3
- /**
4
- * Detects when Codex might be waiting for approval using timeout heuristic.
5
- * Emits an event with contextual metadata (file path, diff, parsed input) so the
6
- * mobile client can show an interactive prompt with details.
7
- */
8
- export declare class ApprovalDetector extends EventEmitter {
9
- private pendingCalls;
10
- private timers;
11
- private timeoutMs;
12
- constructor();
13
- /**
14
- * Called when a tool call starts.
15
- */
16
- onToolCallStart(callId: string, name: string, input: string): void;
17
- /**
18
- * Called when a tool call completes (output received).
19
- */
20
- onToolCallComplete(callId: string): void;
21
- /**
22
- * Check if a call is still pending after timeout.
23
- */
24
- private checkPendingCall;
25
- /**
26
- * Extract a user-facing hint for the pending approval.
27
- */
28
- private extractHint;
29
- private mapToolName;
30
- private parseInput;
31
- private extractFilePath;
32
- private extractDiff;
33
- getPendingCalls(): PendingToolCall[];
34
- hasPendingCalls(): boolean;
35
- clear(): void;
36
- shutdown(): void;
37
- }
38
- //# sourceMappingURL=approval-detector.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"approval-detector.d.ts","sourceRoot":"","sources":["../src/approval-detector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAGtC,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE1C;;;;GAIG;AACH,qBAAa,gBAAiB,SAAQ,YAAY;IAChD,OAAO,CAAC,YAAY,CAA2C;IAC/D,OAAO,CAAC,MAAM,CAA0C;IACxD,OAAO,CAAC,SAAS,CAAS;;IAQ1B;;OAEG;IACI,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IA4BzE;;OAEG;IACI,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAY/C;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA4BxB;;OAEG;IACH,OAAO,CAAC,WAAW;IA2BnB,OAAO,CAAC,WAAW;IAWnB,OAAO,CAAC,UAAU;IASlB,OAAO,CAAC,eAAe;IAcvB,OAAO,CAAC,WAAW;IAYZ,eAAe,IAAI,eAAe,EAAE;IAIpC,eAAe,IAAI,OAAO;IAI1B,KAAK,IAAI,IAAI;IASb,QAAQ,IAAI,IAAI;CAKxB"}
@@ -1,174 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ApprovalDetector = void 0;
4
- const events_1 = require("events");
5
- const codevibe_core_1 = require("@quantiya/codevibe-core");
6
- const logger_1 = require("./logger");
7
- /**
8
- * Detects when Codex might be waiting for approval using timeout heuristic.
9
- * Emits an event with contextual metadata (file path, diff, parsed input) so the
10
- * mobile client can show an interactive prompt with details.
11
- */
12
- class ApprovalDetector extends events_1.EventEmitter {
13
- constructor() {
14
- super();
15
- this.pendingCalls = new Map();
16
- this.timers = new Map();
17
- this.timeoutMs = (0, codevibe_core_1.getConfig)().codex.approvalTimeoutMs;
18
- logger_1.logger.info('Approval detector initialized', { timeoutMs: this.timeoutMs });
19
- }
20
- /**
21
- * Called when a tool call starts.
22
- */
23
- onToolCallStart(callId, name, input) {
24
- logger_1.logger.debug('Tool call started', { callId, name });
25
- // Parse input for extra context (file path, diff, parsed JSON)
26
- const parsedInput = this.parseInput(input);
27
- const filePath = this.extractFilePath(name, input, parsedInput);
28
- const diff = this.extractDiff(name, input, parsedInput);
29
- const pending = {
30
- callId,
31
- name,
32
- input,
33
- filePath,
34
- diff,
35
- parsedInput,
36
- timestamp: Date.now(),
37
- notificationSent: false,
38
- };
39
- this.pendingCalls.set(callId, pending);
40
- const timer = setTimeout(() => {
41
- this.checkPendingCall(callId);
42
- }, this.timeoutMs);
43
- this.timers.set(callId, timer);
44
- }
45
- /**
46
- * Called when a tool call completes (output received).
47
- */
48
- onToolCallComplete(callId) {
49
- logger_1.logger.debug('Tool call completed', { callId });
50
- this.pendingCalls.delete(callId);
51
- const timer = this.timers.get(callId);
52
- if (timer) {
53
- clearTimeout(timer);
54
- this.timers.delete(callId);
55
- }
56
- }
57
- /**
58
- * Check if a call is still pending after timeout.
59
- */
60
- checkPendingCall(callId) {
61
- const pending = this.pendingCalls.get(callId);
62
- if (!pending)
63
- return;
64
- if (pending.notificationSent)
65
- return;
66
- const elapsed = Date.now() - pending.timestamp;
67
- logger_1.logger.info('Tool call still pending after timeout', {
68
- callId,
69
- name: pending.name,
70
- elapsedMs: elapsed,
71
- });
72
- pending.notificationSent = true;
73
- this.pendingCalls.set(callId, pending);
74
- this.emit('approval-pending', {
75
- callId,
76
- toolName: pending.name,
77
- hint: this.extractHint(pending.name, pending.input, pending.filePath),
78
- filePath: pending.filePath,
79
- diff: pending.diff,
80
- toolInput: pending.parsedInput,
81
- rawInput: pending.input,
82
- elapsedMs: elapsed,
83
- });
84
- }
85
- /**
86
- * Extract a user-facing hint for the pending approval.
87
- */
88
- extractHint(name, input, filePath) {
89
- if (filePath) {
90
- return `File: ${filePath}`;
91
- }
92
- if (name === 'apply_patch' && input) {
93
- const match = input.match(/\*\*\* (?:Update|Add|Delete) File: (.+)/);
94
- if (match) {
95
- return `File: ${match[1].trim()}`;
96
- }
97
- }
98
- if (name === 'shell_command' || name === 'shell') {
99
- try {
100
- const args = JSON.parse(input);
101
- if (args.command) {
102
- const cmd = args.command.substring(0, 50);
103
- return `Command: ${cmd}${args.command.length > 50 ? '...' : ''}`;
104
- }
105
- }
106
- catch {
107
- // Ignore parse errors
108
- }
109
- }
110
- return `Tool: ${this.mapToolName(name)}`;
111
- }
112
- mapToolName(name) {
113
- const mapping = {
114
- shell_command: 'Bash',
115
- shell: 'Bash',
116
- apply_patch: 'File Edit',
117
- write_file: 'Write File',
118
- read_file: 'Read File',
119
- };
120
- return mapping[name] || name;
121
- }
122
- parseInput(input) {
123
- if (!input)
124
- return undefined;
125
- try {
126
- return JSON.parse(input);
127
- }
128
- catch {
129
- return undefined;
130
- }
131
- }
132
- extractFilePath(name, rawInput, parsedInput) {
133
- if (name === 'apply_patch' && rawInput) {
134
- const match = rawInput.match(/\*\*\* (?:Update|Add|Delete) File: (.+)/);
135
- if (match)
136
- return match[1].trim();
137
- }
138
- const candidate = parsedInput?.file_path || parsedInput?.path || parsedInput?.filePath;
139
- if (candidate && typeof candidate === 'string') {
140
- return candidate;
141
- }
142
- return undefined;
143
- }
144
- extractDiff(name, rawInput, parsedInput) {
145
- if (name === 'apply_patch' && rawInput) {
146
- return rawInput;
147
- }
148
- if (parsedInput?.diff && typeof parsedInput.diff === 'string') {
149
- return parsedInput.diff;
150
- }
151
- return undefined;
152
- }
153
- getPendingCalls() {
154
- return Array.from(this.pendingCalls.values());
155
- }
156
- hasPendingCalls() {
157
- return this.pendingCalls.size > 0;
158
- }
159
- clear() {
160
- for (const timer of this.timers.values()) {
161
- clearTimeout(timer);
162
- }
163
- this.timers.clear();
164
- this.pendingCalls.clear();
165
- logger_1.logger.debug('Approval detector cleared');
166
- }
167
- shutdown() {
168
- this.clear();
169
- this.removeAllListeners();
170
- logger_1.logger.info('Approval detector shutdown');
171
- }
172
- }
173
- exports.ApprovalDetector = ApprovalDetector;
174
- //# sourceMappingURL=approval-detector.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"approval-detector.js","sourceRoot":"","sources":["../src/approval-detector.ts"],"names":[],"mappings":"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"}
@@ -1,69 +0,0 @@
1
- import { CreateEventInput, CreateSessionInput, UpdateSessionInput, UpdateEventStatusInput, CreateFileChangeInput, Event, Session, EventSource, DownloadUrlResponse } from './types';
2
- export declare class AppSyncClient {
3
- private authenticated;
4
- private currentUserId;
5
- private currentEmail;
6
- private storedTokens;
7
- private activeSubscriptions;
8
- constructor();
9
- getCurrentUserId(): string;
10
- getCurrentUserEmail(): string | null;
11
- /**
12
- * Authenticate using stored OAuth tokens from 'codevibe-codex login'
13
- * Returns true if successfully authenticated, false otherwise
14
- */
15
- authenticateWithStoredTokens(): Promise<boolean>;
16
- /**
17
- * Refresh expired tokens using the refresh token
18
- */
19
- private refreshStoredTokens;
20
- /**
21
- * Check if stored tokens exist and are valid
22
- */
23
- hasValidStoredTokens(): boolean;
24
- signOutUser(): void;
25
- /**
26
- * Make a direct GraphQL request to AppSync using fetch
27
- * Uses stored OAuth tokens for Cognito User Pool authentication
28
- * Automatically refreshes token and retries on 401 errors
29
- */
30
- private graphqlRequest;
31
- createSession(input: CreateSessionInput): Promise<Session>;
32
- updateSession(input: UpdateSessionInput): Promise<Session>;
33
- createEvent(input: CreateEventInput): Promise<Event>;
34
- updateEventStatus(input: UpdateEventStatusInput): Promise<Event>;
35
- createFileChange(input: CreateFileChangeInput): Promise<any>;
36
- getSession(sessionId: string): Promise<Session | null>;
37
- listEvents(sessionId: string, source?: EventSource): Promise<Event[]>;
38
- subscribeToEvents(sessionId: string, onEvent: (event: Event) => void, onError?: (error: Error) => void): () => void;
39
- /**
40
- * Build the AppSync real-time WebSocket URL with authorization
41
- */
42
- private buildRealtimeUrl;
43
- /**
44
- * Create a custom WebSocket subscription to AppSync
45
- * This bypasses Amplify which doesn't work with externally stored tokens
46
- */
47
- private createSubscription;
48
- /**
49
- * Send subscription start message
50
- */
51
- private sendSubscriptionStart;
52
- /**
53
- * Reset the keep-alive timer - if no message received in 5 minutes, reconnect
54
- */
55
- private resetKeepAliveTimer;
56
- private handleSubscriptionError;
57
- private cleanupSubscriptionState;
58
- cleanupSubscriptions(): void;
59
- getAttachmentDownloadUrl(s3Key: string): Promise<DownloadUrlResponse>;
60
- isAuthenticated(): boolean;
61
- registerDeviceKey(deviceId: string, publicKey: string, platform: string, deviceName?: string): Promise<void>;
62
- removeDeviceKey(deviceId: string): Promise<void>;
63
- listUserDeviceKeys(): Promise<Array<{
64
- deviceId: string;
65
- publicKey: string;
66
- }>>;
67
- grantSessionKey(sessionId: string, deviceId: string, encryptedKey: string, ephemeralPublicKey: string): Promise<void>;
68
- }
69
- //# sourceMappingURL=appsync-client.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"appsync-client.d.ts","sourceRoot":"","sources":["../src/appsync-client.ts"],"names":[],"mappings":"AAUA,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,EACrB,KAAK,EACL,OAAO,EACP,WAAW,EAEX,mBAAmB,EACpB,MAAM,SAAS,CAAC;AA0OjB,qBAAa,aAAa;IACxB,OAAO,CAAC,aAAa,CAAkB;IACvC,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,YAAY,CAA6B;IACjD,OAAO,CAAC,mBAAmB,CAA6C;;IAOjE,gBAAgB,IAAI,MAAM;IAK1B,mBAAmB,IAAI,MAAM,GAAG,IAAI;IAI3C;;;OAGG;IACU,4BAA4B,IAAI,OAAO,CAAC,OAAO,CAAC;IA2C7D;;OAEG;YACW,mBAAmB;IAoDjC;;OAEG;IACI,oBAAoB,IAAI,OAAO;IAM/B,WAAW,IAAI,IAAI;IAQ1B;;;;OAIG;YACW,cAAc;IAqDf,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC;IAwC1D,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC;IAsB1D,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,KAAK,CAAC;IA8BpD,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO,CAAC,KAAK,CAAC;IAuBhE,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,GAAG,CAAC;IA6B5D,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IActD,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAc3E,iBAAiB,CACtB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,EAC/B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAC/B,MAAM,IAAI;IAoCb;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAuBxB;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAuI1B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA8B7B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAa3B,OAAO,CAAC,uBAAuB;IAoE/B,OAAO,CAAC,wBAAwB;IAgCzB,oBAAoB,IAAI,IAAI;IActB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAmB3E,eAAe,IAAI,OAAO;IAOpB,iBAAiB,CAC5B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC;IAuBH,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAchD,kBAAkB,IAAI,OAAO,CAAC,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAqB7E,eAAe,CAC1B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,kBAAkB,EAAE,MAAM,GACzB,OAAO,CAAC,IAAI,CAAC;CAmBjB"}