@kenkaiiii/ggcoder 4.3.224 → 4.3.225

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 (61) hide show
  1. package/dist/cli/auth.d.ts +4 -0
  2. package/dist/cli/auth.d.ts.map +1 -0
  3. package/dist/cli/auth.js +344 -0
  4. package/dist/cli/auth.js.map +1 -0
  5. package/dist/cli/pixel.d.ts +27 -0
  6. package/dist/cli/pixel.d.ts.map +1 -0
  7. package/dist/cli/pixel.js +103 -0
  8. package/dist/cli/pixel.js.map +1 -0
  9. package/dist/cli/shared.d.ts +13 -0
  10. package/dist/cli/shared.d.ts.map +1 -0
  11. package/dist/cli/shared.js +82 -0
  12. package/dist/cli/shared.js.map +1 -0
  13. package/dist/cli.d.ts.map +1 -1
  14. package/dist/cli.js +8 -537
  15. package/dist/cli.js.map +1 -1
  16. package/dist/core/runtime-mode.js +1 -1
  17. package/dist/core/runtime-mode.js.map +1 -1
  18. package/dist/system-prompt.js +2 -2
  19. package/dist/system-prompt.js.map +1 -1
  20. package/dist/tools/bash.d.ts.map +1 -1
  21. package/dist/tools/bash.js +2 -1
  22. package/dist/tools/bash.js.map +1 -1
  23. package/dist/tools/plan-mode.test.js +13 -1
  24. package/dist/tools/plan-mode.test.js.map +1 -1
  25. package/dist/tools/read-only-bash.d.ts +13 -0
  26. package/dist/tools/read-only-bash.d.ts.map +1 -0
  27. package/dist/tools/read-only-bash.js +155 -0
  28. package/dist/tools/read-only-bash.js.map +1 -0
  29. package/dist/tools/read-only-bash.test.d.ts +2 -0
  30. package/dist/tools/read-only-bash.test.d.ts.map +1 -0
  31. package/dist/tools/read-only-bash.test.js +47 -0
  32. package/dist/tools/read-only-bash.test.js.map +1 -0
  33. package/dist/ui/App.d.ts.map +1 -1
  34. package/dist/ui/App.js +105 -1034
  35. package/dist/ui/App.js.map +1 -1
  36. package/dist/ui/hooks/useContextCompaction.d.ts +41 -0
  37. package/dist/ui/hooks/useContextCompaction.d.ts.map +1 -0
  38. package/dist/ui/hooks/useContextCompaction.js +149 -0
  39. package/dist/ui/hooks/useContextCompaction.js.map +1 -0
  40. package/dist/ui/hooks/useGoalOrchestration.d.ts +81 -0
  41. package/dist/ui/hooks/useGoalOrchestration.d.ts.map +1 -0
  42. package/dist/ui/hooks/useGoalOrchestration.js +745 -0
  43. package/dist/ui/hooks/useGoalOrchestration.js.map +1 -0
  44. package/dist/ui/hooks/useModeState.d.ts +61 -0
  45. package/dist/ui/hooks/useModeState.d.ts.map +1 -0
  46. package/dist/ui/hooks/useModeState.js +86 -0
  47. package/dist/ui/hooks/useModeState.js.map +1 -0
  48. package/dist/ui/hooks/usePixelFixFlow.d.ts +57 -0
  49. package/dist/ui/hooks/usePixelFixFlow.d.ts.map +1 -0
  50. package/dist/ui/hooks/usePixelFixFlow.js +102 -0
  51. package/dist/ui/hooks/usePixelFixFlow.js.map +1 -0
  52. package/dist/ui/hooks/useSessionPersistence.d.ts +34 -0
  53. package/dist/ui/hooks/useSessionPersistence.d.ts.map +1 -0
  54. package/dist/ui/hooks/useSessionPersistence.js +67 -0
  55. package/dist/ui/hooks/useSessionPersistence.js.map +1 -0
  56. package/dist/ui/terminal-history.test.js +60 -0
  57. package/dist/ui/terminal-history.test.js.map +1 -1
  58. package/dist/ui/transcript/spacing.d.ts.map +1 -1
  59. package/dist/ui/transcript/spacing.js +9 -0
  60. package/dist/ui/transcript/spacing.js.map +1 -1
  61. package/package.json +4 -4
@@ -0,0 +1,149 @@
1
+ import { useCallback, useRef, } from "react";
2
+ import { compact, shouldCompact, getCompactionReserveTokens, } from "../../core/compaction/compactor.js";
3
+ import { estimateConversationTokens } from "../../core/compaction/token-estimator.js";
4
+ import { getContextWindow } from "../../core/model-registry.js";
5
+ import { log } from "../../core/logger.js";
6
+ import { toErrorItem } from "../error-item.js";
7
+ /**
8
+ * Owns context compaction: the manual `compactConversation` flow (spinner +
9
+ * credential resolution + abort handling) and the `transformContext` callback
10
+ * the agent loop calls before each turn / on overflow. Extracted verbatim from
11
+ * `App.tsx`.
12
+ */
13
+ export function useContextCompaction({ currentModel, currentProvider, maxTokens, authStorage, contextWindowOptions, activeApiKey, activeAccountId, activeProjectId, activeBaseUrl, setLiveItems, getId, approvedPlanPathRef, settingsRef, messagesRef, lastActualTokensRef, lastActualTokensTimestampRef, persistCompactedSession, }) {
14
+ const compactionAbortRef = useRef(null);
15
+ const lastCompactionTimeRef = useRef(0);
16
+ const compactConversation = useCallback(async (messages, signal) => {
17
+ const contextWindow = getContextWindow(currentModel, contextWindowOptions);
18
+ const tokensBefore = estimateConversationTokens(messages);
19
+ const spinId = getId();
20
+ log("INFO", "compaction", `Running compaction`, {
21
+ messages: String(messages.length),
22
+ estimatedTokens: String(tokensBefore),
23
+ contextWindow: String(contextWindow),
24
+ });
25
+ // Show animated spinner
26
+ setLiveItems((prev) => [...prev, { kind: "compacting", id: spinId }]);
27
+ const ownedAbort = signal ? null : new AbortController();
28
+ const compactionSignal = signal ?? ownedAbort?.signal;
29
+ if (ownedAbort)
30
+ compactionAbortRef.current = ownedAbort;
31
+ try {
32
+ // Resolve fresh credentials for compaction too
33
+ let compactApiKey = activeApiKey;
34
+ let compactAccountId = activeAccountId;
35
+ let compactProjectId = activeProjectId;
36
+ let compactBaseUrl = activeBaseUrl;
37
+ if (authStorage) {
38
+ const creds = await authStorage.resolveCredentials(currentProvider);
39
+ compactApiKey = creds.accessToken;
40
+ compactAccountId = creds.accountId;
41
+ compactProjectId = creds.projectId;
42
+ compactBaseUrl = creds.baseUrl ?? compactBaseUrl;
43
+ }
44
+ const result = await compact(messages, {
45
+ provider: currentProvider,
46
+ model: currentModel,
47
+ apiKey: compactApiKey,
48
+ accountId: compactAccountId,
49
+ projectId: compactProjectId,
50
+ baseUrl: compactBaseUrl,
51
+ contextWindow,
52
+ signal: compactionSignal,
53
+ approvedPlanPath: approvedPlanPathRef.current,
54
+ });
55
+ if (result.result.compacted) {
56
+ // Replace spinner with completed notice
57
+ setLiveItems((prev) => prev.map((item) => item.id === spinId
58
+ ? {
59
+ kind: "compacted",
60
+ originalCount: result.result.originalCount,
61
+ newCount: result.result.newCount,
62
+ tokensBefore: result.result.tokensBeforeEstimate,
63
+ tokensAfter: result.result.tokensAfterEstimate,
64
+ id: spinId,
65
+ }
66
+ : item));
67
+ }
68
+ else {
69
+ // Nothing was actually compacted — remove spinner silently
70
+ log("INFO", "compaction", `Compaction skipped: ${result.result.reason ?? "unknown"}`);
71
+ setLiveItems((prev) => prev.filter((item) => item.id !== spinId));
72
+ }
73
+ return result.messages;
74
+ }
75
+ catch (err) {
76
+ const msg = err instanceof Error ? err.message : String(err);
77
+ const isAbort = compactionSignal?.aborted || msg.includes("aborted") || msg.includes("abort");
78
+ log(isAbort ? "WARN" : "ERROR", "compaction", isAbort ? "Compaction aborted" : `Compaction failed: ${msg}`);
79
+ setLiveItems((prev) => isAbort
80
+ ? prev.filter((item) => item.id !== spinId)
81
+ : prev.map((item) => item.id === spinId ? toErrorItem(err, spinId, "Compaction failed") : item));
82
+ return messages; // Return unchanged on failure/abort
83
+ }
84
+ finally {
85
+ if (ownedAbort && compactionAbortRef.current === ownedAbort)
86
+ compactionAbortRef.current = null;
87
+ }
88
+ }, [
89
+ currentModel,
90
+ currentProvider,
91
+ activeApiKey,
92
+ activeAccountId,
93
+ activeProjectId,
94
+ activeBaseUrl,
95
+ contextWindowOptions,
96
+ authStorage,
97
+ setLiveItems,
98
+ getId,
99
+ approvedPlanPathRef,
100
+ ]);
101
+ const transformContext = useCallback(async (messages, options) => {
102
+ const settings = settingsRef.current;
103
+ const autoCompact = settings?.get("autoCompact") ?? true;
104
+ const threshold = settings?.get("compactThreshold") ?? 0.8;
105
+ // Force-compact on context overflow regardless of settings
106
+ if (options?.force) {
107
+ const result = await compactConversation(messages);
108
+ if (result !== messages) {
109
+ messagesRef.current = result;
110
+ await persistCompactedSession(result);
111
+ }
112
+ lastCompactionTimeRef.current = Date.now();
113
+ return result;
114
+ }
115
+ if (!autoCompact)
116
+ return messages;
117
+ // Time-based cooldown: skip if compaction ran within the last 30 seconds
118
+ if (Date.now() - lastCompactionTimeRef.current < 30_000) {
119
+ log("INFO", "compaction", `Skipping compaction — cooldown active`);
120
+ return messages;
121
+ }
122
+ const contextWindow = getContextWindow(currentModel, contextWindowOptions);
123
+ const reserveTokens = getCompactionReserveTokens(maxTokens);
124
+ const tokensFresh = lastActualTokensTimestampRef.current > lastCompactionTimeRef.current;
125
+ const actualTokens = lastActualTokensRef.current > 0 && tokensFresh ? lastActualTokensRef.current : undefined;
126
+ if (shouldCompact(messages, contextWindow, threshold, actualTokens, reserveTokens)) {
127
+ const result = await compactConversation(messages);
128
+ if (result !== messages) {
129
+ messagesRef.current = result;
130
+ await persistCompactedSession(result);
131
+ }
132
+ lastCompactionTimeRef.current = Date.now();
133
+ return result;
134
+ }
135
+ return messages;
136
+ }, [
137
+ currentModel,
138
+ compactConversation,
139
+ contextWindowOptions,
140
+ persistCompactedSession,
141
+ maxTokens,
142
+ settingsRef,
143
+ messagesRef,
144
+ lastActualTokensRef,
145
+ lastActualTokensTimestampRef,
146
+ ]);
147
+ return { compactionAbortRef, compactConversation, transformContext };
148
+ }
149
+ //# sourceMappingURL=useContextCompaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useContextCompaction.js","sourceRoot":"","sources":["../../../src/ui/hooks/useContextCompaction.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,81 @@
1
+ import { type Dispatch, type MutableRefObject, type SetStateAction } from "react";
2
+ import type { Message, Provider, ThinkingLevel } from "@kenkaiiii/gg-ai";
3
+ import { type GoalRun } from "../../core/goal-store.js";
4
+ import { type GoalWorkerCompletion } from "../../core/goal-worker.js";
5
+ import type { SessionManager } from "../../core/session-manager.js";
6
+ import type { CompletedItem, GoalProgressDraft } from "../app-items.js";
7
+ import type { DoneStatus } from "../layout-decisions.js";
8
+ import type { GoalStatusEntry } from "../components/GoalStatusBar.js";
9
+ import type { UseAgentLoopReturn } from "./useAgentLoop.js";
10
+ /** Subset of App's resetUI used by the task launcher. */
11
+ type ResetUI = (options?: {
12
+ messages?: Message[];
13
+ wipeSession?: boolean;
14
+ history?: CompletedItem[];
15
+ sessionPath?: string;
16
+ pendingAction?: {
17
+ prompt: string;
18
+ infoText?: string;
19
+ planEvent?: {
20
+ event: "approved" | "rejected" | "dismissed";
21
+ detail?: string;
22
+ };
23
+ };
24
+ }) => void;
25
+ /** Minimal session-store surface the orchestration touches. */
26
+ interface GoalSessionStore {
27
+ overlay?: "model" | "goal" | "skills" | "plan" | "theme" | "pixel" | null;
28
+ }
29
+ interface UseGoalOrchestrationOptions {
30
+ cwd: string;
31
+ resetUI?: ResetUI;
32
+ sessionStore?: GoalSessionStore;
33
+ currentProvider: Provider;
34
+ currentModel: string;
35
+ thinkingLevel: ThinkingLevel | undefined;
36
+ agentLoop: UseAgentLoopReturn;
37
+ appendGoalProgress: (item: GoalProgressDraft) => void;
38
+ goalNumberForRun: (runId: string) => number;
39
+ clearGoalStatusEntry: (runId: string) => void;
40
+ upsertGoalStatusEntry: (entry: GoalStatusEntry) => void;
41
+ setGoalModeAndPrompt: (nextMode: "off" | "planner" | "setup" | "coordinator") => Promise<void>;
42
+ clearGoalModeIfIdle: () => void;
43
+ agentRunningRef: MutableRefObject<boolean>;
44
+ runningGoalIdsRef: MutableRefObject<Set<string>>;
45
+ activeVerifierRunIdsRef: MutableRefObject<Set<string>>;
46
+ queuedGoalSyntheticEventsRef: MutableRefObject<number>;
47
+ goalContinuationFlightsRef: MutableRefObject<Set<string>>;
48
+ goalContinuationRecentChoicesRef: MutableRefObject<Map<string, number>>;
49
+ startGoalRunRef: MutableRefObject<(run: GoalRun) => void>;
50
+ startTaskRef: MutableRefObject<(title: string, prompt: string, taskId: string) => void>;
51
+ messagesRef: MutableRefObject<Message[]>;
52
+ persistedIndexRef: MutableRefObject<number>;
53
+ sessionManagerRef: MutableRefObject<SessionManager | null>;
54
+ sessionPathRef: MutableRefObject<string | undefined>;
55
+ cwdRef: MutableRefObject<string>;
56
+ setLiveItems: Dispatch<SetStateAction<CompletedItem[]>>;
57
+ setHistory: Dispatch<SetStateAction<CompletedItem[]>>;
58
+ setLastUserMessage: Dispatch<SetStateAction<string>>;
59
+ setDoneStatus: Dispatch<SetStateAction<DoneStatus | null>>;
60
+ getId: () => string;
61
+ clearPendingHistory: () => void;
62
+ }
63
+ export interface GoalOrchestration {
64
+ runGoalSyntheticEvent: (eventText: string) => void;
65
+ continueGoalRun: (runId: string) => void;
66
+ handleGoalWorkerComplete: (run: GoalRun, completion: GoalWorkerCompletion) => void;
67
+ startGoalRun: (run: GoalRun) => void;
68
+ verifyGoalRun: (run: GoalRun) => Promise<void>;
69
+ pauseGoalRun: (run: GoalRun) => void;
70
+ startTask: (title: string, prompt: string, taskId: string) => void;
71
+ }
72
+ /**
73
+ * Owns the entire Goal orchestration lifecycle — synthetic-event routing,
74
+ * continuation, worker-completion handling, the worker-completion subscription,
75
+ * starting runs/tasks/workers, verifier execution, and pausing. Extracted
76
+ * verbatim from `App.tsx`; the mutual recursion between these callbacks is
77
+ * preserved via `startGoalRunRef`/`startTaskRef`.
78
+ */
79
+ export declare function useGoalOrchestration({ cwd, resetUI, sessionStore, currentProvider, currentModel, thinkingLevel, agentLoop, appendGoalProgress, goalNumberForRun, clearGoalStatusEntry, upsertGoalStatusEntry, setGoalModeAndPrompt, clearGoalModeIfIdle, agentRunningRef, runningGoalIdsRef, activeVerifierRunIdsRef, queuedGoalSyntheticEventsRef, goalContinuationFlightsRef, goalContinuationRecentChoicesRef, startGoalRunRef, startTaskRef, messagesRef, persistedIndexRef, sessionManagerRef, sessionPathRef, cwdRef, setLiveItems, setHistory, setLastUserMessage, setDoneStatus, getId, clearPendingHistory, }: UseGoalOrchestrationOptions): GoalOrchestration;
80
+ export {};
81
+ //# sourceMappingURL=useGoalOrchestration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useGoalOrchestration.d.ts","sourceRoot":"","sources":["../../../src/ui/hooks/useGoalOrchestration.ts"],"names":[],"mappings":"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"}