@sumicom/quicksave 0.8.1 → 0.8.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -0
- package/dist/ai/cardBuilder.d.ts +2 -0
- package/dist/ai/cardBuilder.d.ts.map +1 -1
- package/dist/ai/cardBuilder.js +62 -0
- package/dist/ai/cardBuilder.js.map +1 -1
- package/dist/ai/claudeCliProvider.d.ts +25 -1
- package/dist/ai/claudeCliProvider.d.ts.map +1 -1
- package/dist/ai/claudeCliProvider.js +77 -53
- package/dist/ai/claudeCliProvider.js.map +1 -1
- package/dist/ai/codexLogin.d.ts +57 -0
- package/dist/ai/codexLogin.d.ts.map +1 -0
- package/dist/ai/codexLogin.js +240 -0
- package/dist/ai/codexLogin.js.map +1 -0
- package/dist/ai/codexSdkProvider.d.ts.map +1 -1
- package/dist/ai/codexSdkProvider.js +66 -5
- package/dist/ai/codexSdkProvider.js.map +1 -1
- package/dist/ai/provider.d.ts +5 -0
- package/dist/ai/provider.d.ts.map +1 -1
- package/dist/ai/sessionManager.d.ts +6 -0
- package/dist/ai/sessionManager.d.ts.map +1 -1
- package/dist/ai/sessionManager.js +90 -4
- package/dist/ai/sessionManager.js.map +1 -1
- package/dist/files/fileBrowser.d.ts +25 -0
- package/dist/files/fileBrowser.d.ts.map +1 -0
- package/dist/files/fileBrowser.js +186 -0
- package/dist/files/fileBrowser.js.map +1 -0
- package/dist/handlers/messageHandler.d.ts +77 -5
- package/dist/handlers/messageHandler.d.ts.map +1 -1
- package/dist/handlers/messageHandler.js +399 -53
- package/dist/handlers/messageHandler.js.map +1 -1
- package/dist/index.js +2 -2
- package/dist/service/ipcClient.js +1 -1
- package/dist/service/run.d.ts.map +1 -1
- package/dist/service/run.js +57 -4
- package/dist/service/run.js.map +1 -1
- package/dist/service/types.js +1 -1
- package/dist/terminal/terminalManager.d.ts +48 -0
- package/dist/terminal/terminalManager.d.ts.map +1 -0
- package/dist/terminal/terminalManager.js +244 -0
- package/dist/terminal/terminalManager.js.map +1 -0
- package/package.json +4 -3
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { Message, License, Repository, SessionRegistryEntry } from '@sumicom/quicksave-shared';
|
|
1
|
+
import { Message, License, Repository, SessionRegistryEntry, CodexModelInfo } from '@sumicom/quicksave-shared';
|
|
2
2
|
import type { PushClient } from '../service/pushClient.js';
|
|
3
3
|
import { CommitSummaryStateStore } from '../ai/commitSummaryStore.js';
|
|
4
4
|
import { SessionManager } from '../ai/sessionManager.js';
|
|
5
|
+
import { CodexLoginManager } from '../ai/codexLogin.js';
|
|
5
6
|
export declare class MessageHandler {
|
|
6
7
|
private repos;
|
|
7
8
|
private agentVersion;
|
|
@@ -21,20 +22,74 @@ export declare class MessageHandler {
|
|
|
21
22
|
private versionCheckInFlight;
|
|
22
23
|
private codexModelsCache;
|
|
23
24
|
private codexModelsCheckInFlight;
|
|
25
|
+
private codexModelsUpdateHandler;
|
|
26
|
+
private codexModelsWatcher;
|
|
27
|
+
private codexModelsWatchDebounce;
|
|
28
|
+
/** Override for tests; defaults to `~/.codex`. */
|
|
29
|
+
private readonly codexCacheDir;
|
|
30
|
+
private codexLoginManager;
|
|
24
31
|
onHistoryUpdated?: (cwd: string, entry: SessionRegistryEntry, action: 'upsert' | 'delete') => void;
|
|
25
32
|
private productionBuild;
|
|
26
|
-
constructor(repos: Repository[], _license?: License, codingPaths?: string[], productionBuild?: boolean
|
|
33
|
+
constructor(repos: Repository[], _license?: License, codingPaths?: string[], productionBuild?: boolean, options?: {
|
|
34
|
+
codexCacheDir?: string;
|
|
35
|
+
});
|
|
27
36
|
/**
|
|
28
37
|
* Check npm registry for latest version. Deduped: returns cached value
|
|
29
38
|
* if checked within the last 12 hours. Only runs in production builds.
|
|
30
39
|
*/
|
|
31
40
|
private checkLatestVersion;
|
|
32
41
|
/**
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
42
|
+
* Resolve the Codex model list for the current user.
|
|
43
|
+
*
|
|
44
|
+
* Priority:
|
|
45
|
+
* 1. `~/.codex/models_cache.json` — the Codex CLI's own cache of
|
|
46
|
+
* models the signed-in account can actually use. This is the
|
|
47
|
+
* authoritative list for ChatGPT-OAuth logins (the common case)
|
|
48
|
+
* and is kept fresh by the CLI itself. Reads are essentially free,
|
|
49
|
+
* so we use a short 5min in-memory TTL — and `startCodexModelsWatcher`
|
|
50
|
+
* invalidates the cache the moment the file is rewritten.
|
|
51
|
+
* 2. `OPENAI_API_KEY` env var + OpenAI `/v1/models` — fallback for
|
|
52
|
+
* API-key users, who are rare but still supported. Held to a 1h
|
|
53
|
+
* sub-TTL so we don't hammer OpenAI when the local cache is absent.
|
|
54
|
+
*
|
|
55
|
+
* Returns `null` when neither source is available (not logged in and no
|
|
56
|
+
* API key set). Concurrent calls are deduped.
|
|
36
57
|
*/
|
|
37
58
|
private fetchCodexModels;
|
|
59
|
+
/** Snapshot accessor for the bus `/codex/models` subscription. */
|
|
60
|
+
getCachedCodexModels(): CodexModelInfo[];
|
|
61
|
+
/**
|
|
62
|
+
* Wire the daemon's bus broadcast for unsolicited model-list pushes.
|
|
63
|
+
* Called once during daemon boot; the watcher invokes this on cache change.
|
|
64
|
+
*/
|
|
65
|
+
setCodexModelsUpdateHandler(handler: (models: CodexModelInfo[]) => void): void;
|
|
66
|
+
/**
|
|
67
|
+
* Watch the Codex CLI cache directory and refresh the in-memory model list
|
|
68
|
+
* the moment the CLI rewrites it (typically after a `codex` startup or
|
|
69
|
+
* upgrade). Tolerant of a missing `~/.codex` directory — falls back to TTL
|
|
70
|
+
* alone if the watch can't be set up. Idempotent.
|
|
71
|
+
*/
|
|
72
|
+
startCodexModelsWatcher(): void;
|
|
73
|
+
/** Tear down the fs.watch handle (test cleanup). */
|
|
74
|
+
stopCodexModelsWatcher(): void;
|
|
75
|
+
private scheduleCodexModelsRefresh;
|
|
76
|
+
private refreshCodexModelsAndPublish;
|
|
77
|
+
/**
|
|
78
|
+
* Read models from the Codex CLI's local cache. File shape (as of codex
|
|
79
|
+
* CLI v0.125): `{ models: [{ slug, display_name, visibility, supported_in_api, ... }] }`.
|
|
80
|
+
* We surface only entries that are listable and API-supported, so hidden
|
|
81
|
+
* internal models (e.g. `codex-auto-review`) don't leak into the picker.
|
|
82
|
+
*/
|
|
83
|
+
private readCodexModelsCacheFile;
|
|
84
|
+
/** Fallback for API-key users (no ChatGPT OAuth). */
|
|
85
|
+
private fetchCodexModelsFromOpenAI;
|
|
86
|
+
/**
|
|
87
|
+
* Best-effort check for whether the local Codex CLI has valid auth.
|
|
88
|
+
* Matches how `fetchCodexModels` resolves credentials, so the PWA can
|
|
89
|
+
* prompt for login when this returns false. Does not validate the
|
|
90
|
+
* token — just checks that a credential source exists.
|
|
91
|
+
*/
|
|
92
|
+
private getCodexLoginStatus;
|
|
38
93
|
addRepo(repo: Repository): void;
|
|
39
94
|
removeRepo(path: string): void;
|
|
40
95
|
private getClientRepoPath;
|
|
@@ -106,6 +161,16 @@ export declare class MessageHandler {
|
|
|
106
161
|
private handleAgentUpdate;
|
|
107
162
|
private handleAgentRestart;
|
|
108
163
|
private handleCodexListModels;
|
|
164
|
+
/**
|
|
165
|
+
* Kick off the Codex device-auth OAuth flow on the daemon. Returns the
|
|
166
|
+
* one-time verification URL + user code so the PWA can display them — the
|
|
167
|
+
* user typically completes this on a different device (e.g. phone).
|
|
168
|
+
*/
|
|
169
|
+
private handleCodexLoginStart;
|
|
170
|
+
private handleCodexLoginStatus;
|
|
171
|
+
private handleCodexLoginCancel;
|
|
172
|
+
/** Expose for the daemon to wire login-state updates into bus broadcasts. */
|
|
173
|
+
getCodexLoginManager(): CodexLoginManager;
|
|
109
174
|
private handleClaudeStart;
|
|
110
175
|
private handleClaudeResume;
|
|
111
176
|
private handleClaudeCancel;
|
|
@@ -140,6 +205,13 @@ export declare class MessageHandler {
|
|
|
140
205
|
private getGitBranchQuiet;
|
|
141
206
|
private getGitDirtyQuiet;
|
|
142
207
|
private handlePushSubscriptionOffer;
|
|
208
|
+
private handleTerminalCreate;
|
|
209
|
+
private handleTerminalInput;
|
|
210
|
+
private handleTerminalResize;
|
|
211
|
+
private handleTerminalClose;
|
|
212
|
+
private handleTerminalRename;
|
|
213
|
+
private handleFilesList;
|
|
214
|
+
private handleFilesRead;
|
|
143
215
|
private createErrorResponse;
|
|
144
216
|
}
|
|
145
217
|
//# sourceMappingURL=messageHandler.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messageHandler.d.ts","sourceRoot":"","sources":["../../src/handlers/messageHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EAqCP,OAAO,EAQP,UAAU,EA0CV,oBAAoB,
|
|
1
|
+
{"version":3,"file":"messageHandler.d.ts","sourceRoot":"","sources":["../../src/handlers/messageHandler.ts"],"names":[],"mappings":"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"}
|