@google/gemini-cli 0.9.0-nightly.20251003.2ab61dd1 → 0.9.0-nightly.20251005.7f8537a1
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/package.json +2 -2
- package/dist/src/commands/extensions/update.js +2 -6
- package/dist/src/commands/extensions/update.js.map +1 -1
- package/dist/src/config/extensions/github.d.ts +1 -1
- package/dist/src/config/extensions/github.js +15 -30
- package/dist/src/config/extensions/github.js.map +1 -1
- package/dist/src/config/extensions/github.test.js +5 -10
- package/dist/src/config/extensions/github.test.js.map +1 -1
- package/dist/src/config/extensions/update.d.ts +1 -1
- package/dist/src/config/extensions/update.js +12 -7
- package/dist/src/config/extensions/update.js.map +1 -1
- package/dist/src/config/extensions/update.test.js +5 -5
- package/dist/src/config/extensions/update.test.js.map +1 -1
- package/dist/src/generated/git-commit.d.ts +2 -2
- package/dist/src/generated/git-commit.js +2 -2
- package/dist/src/ui/commands/extensionsCommand.js +30 -32
- package/dist/src/ui/commands/extensionsCommand.js.map +1 -1
- package/dist/src/ui/hooks/useExtensionUpdates.js +68 -18
- package/dist/src/ui/hooks/useExtensionUpdates.js.map +1 -1
- package/dist/src/ui/hooks/useExtensionUpdates.test.js +4 -4
- package/dist/src/ui/hooks/useExtensionUpdates.test.js.map +1 -1
- package/dist/src/ui/hooks/useQuotaAndFallback.js +3 -17
- package/dist/src/ui/hooks/useQuotaAndFallback.js.map +1 -1
- package/dist/src/ui/hooks/useQuotaAndFallback.test.js +13 -43
- package/dist/src/ui/hooks/useQuotaAndFallback.test.js.map +1 -1
- package/dist/src/ui/state/extensions.d.ts +22 -3
- package/dist/src/ui/state/extensions.js +26 -4
- package/dist/src/ui/state/extensions.js.map +1 -1
- package/dist/src/utils/handleAutoUpdate.js +1 -5
- package/dist/src/utils/handleAutoUpdate.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -3
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* Copyright 2025 Google LLC
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
+
import type { ExtensionUpdateInfo } from '../../config/extension.js';
|
|
6
7
|
export declare enum ExtensionUpdateState {
|
|
7
8
|
CHECKING_FOR_UPDATES = "checking for updates",
|
|
8
9
|
UPDATED_NEEDS_RESTART = "updated, needs restart",
|
|
@@ -15,12 +16,24 @@ export declare enum ExtensionUpdateState {
|
|
|
15
16
|
}
|
|
16
17
|
export interface ExtensionUpdateStatus {
|
|
17
18
|
status: ExtensionUpdateState;
|
|
18
|
-
|
|
19
|
+
notified: boolean;
|
|
19
20
|
}
|
|
20
21
|
export interface ExtensionUpdatesState {
|
|
21
22
|
extensionStatuses: Map<string, ExtensionUpdateStatus>;
|
|
22
23
|
batchChecksInProgress: number;
|
|
24
|
+
scheduledUpdate: ScheduledUpdate | null;
|
|
23
25
|
}
|
|
26
|
+
export interface ScheduledUpdate {
|
|
27
|
+
names: string[] | null;
|
|
28
|
+
all: boolean;
|
|
29
|
+
onCompleteCallbacks: OnCompleteUpdate[];
|
|
30
|
+
}
|
|
31
|
+
export interface ScheduleUpdateArgs {
|
|
32
|
+
names: string[] | null;
|
|
33
|
+
all: boolean;
|
|
34
|
+
onComplete: OnCompleteUpdate;
|
|
35
|
+
}
|
|
36
|
+
type OnCompleteUpdate = (updateInfos: ExtensionUpdateInfo[]) => void;
|
|
24
37
|
export declare const initialExtensionUpdatesState: ExtensionUpdatesState;
|
|
25
38
|
export type ExtensionUpdateAction = {
|
|
26
39
|
type: 'SET_STATE';
|
|
@@ -29,14 +42,20 @@ export type ExtensionUpdateAction = {
|
|
|
29
42
|
state: ExtensionUpdateState;
|
|
30
43
|
};
|
|
31
44
|
} | {
|
|
32
|
-
type: '
|
|
45
|
+
type: 'SET_NOTIFIED';
|
|
33
46
|
payload: {
|
|
34
47
|
name: string;
|
|
35
|
-
|
|
48
|
+
notified: boolean;
|
|
36
49
|
};
|
|
37
50
|
} | {
|
|
38
51
|
type: 'BATCH_CHECK_START';
|
|
39
52
|
} | {
|
|
40
53
|
type: 'BATCH_CHECK_END';
|
|
54
|
+
} | {
|
|
55
|
+
type: 'SCHEDULE_UPDATE';
|
|
56
|
+
payload: ScheduleUpdateArgs;
|
|
57
|
+
} | {
|
|
58
|
+
type: 'CLEAR_SCHEDULED_UPDATE';
|
|
41
59
|
};
|
|
42
60
|
export declare function extensionUpdatesReducer(state: ExtensionUpdatesState, action: ExtensionUpdateAction): ExtensionUpdatesState;
|
|
61
|
+
export {};
|
|
@@ -18,6 +18,7 @@ export var ExtensionUpdateState;
|
|
|
18
18
|
export const initialExtensionUpdatesState = {
|
|
19
19
|
extensionStatuses: new Map(),
|
|
20
20
|
batchChecksInProgress: 0,
|
|
21
|
+
scheduledUpdate: null,
|
|
21
22
|
};
|
|
22
23
|
export function extensionUpdatesReducer(state, action) {
|
|
23
24
|
switch (action.type) {
|
|
@@ -29,19 +30,19 @@ export function extensionUpdatesReducer(state, action) {
|
|
|
29
30
|
const newStatuses = new Map(state.extensionStatuses);
|
|
30
31
|
newStatuses.set(action.payload.name, {
|
|
31
32
|
status: action.payload.state,
|
|
32
|
-
|
|
33
|
+
notified: false,
|
|
33
34
|
});
|
|
34
35
|
return { ...state, extensionStatuses: newStatuses };
|
|
35
36
|
}
|
|
36
|
-
case '
|
|
37
|
+
case 'SET_NOTIFIED': {
|
|
37
38
|
const existing = state.extensionStatuses.get(action.payload.name);
|
|
38
|
-
if (!existing || existing.
|
|
39
|
+
if (!existing || existing.notified === action.payload.notified) {
|
|
39
40
|
return state;
|
|
40
41
|
}
|
|
41
42
|
const newStatuses = new Map(state.extensionStatuses);
|
|
42
43
|
newStatuses.set(action.payload.name, {
|
|
43
44
|
...existing,
|
|
44
|
-
|
|
45
|
+
notified: action.payload.notified,
|
|
45
46
|
});
|
|
46
47
|
return { ...state, extensionStatuses: newStatuses };
|
|
47
48
|
}
|
|
@@ -55,6 +56,27 @@ export function extensionUpdatesReducer(state, action) {
|
|
|
55
56
|
...state,
|
|
56
57
|
batchChecksInProgress: state.batchChecksInProgress - 1,
|
|
57
58
|
};
|
|
59
|
+
case 'SCHEDULE_UPDATE':
|
|
60
|
+
return {
|
|
61
|
+
...state,
|
|
62
|
+
// If there is a pre-existing scheduled update, we merge them.
|
|
63
|
+
scheduledUpdate: {
|
|
64
|
+
all: state.scheduledUpdate?.all || action.payload.all,
|
|
65
|
+
names: [
|
|
66
|
+
...(state.scheduledUpdate?.names ?? []),
|
|
67
|
+
...(action.payload.names ?? []),
|
|
68
|
+
],
|
|
69
|
+
onCompleteCallbacks: [
|
|
70
|
+
...(state.scheduledUpdate?.onCompleteCallbacks ?? []),
|
|
71
|
+
action.payload.onComplete,
|
|
72
|
+
],
|
|
73
|
+
},
|
|
74
|
+
};
|
|
75
|
+
case 'CLEAR_SCHEDULED_UPDATE':
|
|
76
|
+
return {
|
|
77
|
+
...state,
|
|
78
|
+
scheduledUpdate: null,
|
|
79
|
+
};
|
|
58
80
|
default:
|
|
59
81
|
checkExhaustive(action);
|
|
60
82
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extensions.js","sourceRoot":"","sources":["../../../../src/ui/state/extensions.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"extensions.js","sourceRoot":"","sources":["../../../../src/ui/state/extensions.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,11 +15,7 @@ export function handleAutoUpdate(info, settings, projectRoot, spawnFn = spawnWra
|
|
|
15
15
|
return;
|
|
16
16
|
}
|
|
17
17
|
const installationInfo = getInstallationInfo(projectRoot, settings.merged.general?.disableAutoUpdate ?? false);
|
|
18
|
-
if ([
|
|
19
|
-
PackageManager.NPX,
|
|
20
|
-
PackageManager.PNPX,
|
|
21
|
-
PackageManager.BUNX
|
|
22
|
-
].includes(installationInfo.packageManager)) {
|
|
18
|
+
if ([PackageManager.NPX, PackageManager.PNPX, PackageManager.BUNX].includes(installationInfo.packageManager)) {
|
|
23
19
|
return;
|
|
24
20
|
}
|
|
25
21
|
let combinedMessage = info.message;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handleAutoUpdate.js","sourceRoot":"","sources":["../../../src/utils/handleAutoUpdate.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD,MAAM,UAAU,gBAAgB,CAC9B,IAAyB,EACzB,QAAwB,EACxB,WAAmB,EACnB,UAAwB,YAAY;IAEpC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO;IACT,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,gBAAgB,EAAE,CAAC;QAC9C,OAAO;IACT,CAAC;IAED,MAAM,gBAAgB,GAAG,mBAAmB,CAC1C,WAAW,EACX,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,iBAAiB,IAAI,KAAK,CACpD,CAAC;IAEF,IACE
|
|
1
|
+
{"version":3,"file":"handleAutoUpdate.js","sourceRoot":"","sources":["../../../src/utils/handleAutoUpdate.ts"],"names":[],"mappings":"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"}
|