@kenkaiiii/ggcoder 4.14.1 → 4.14.3
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/app-sidecar.js +63 -7
- package/dist/app-sidecar.js.map +1 -1
- package/dist/core/agent-session.d.ts +9 -0
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +41 -2
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/language-detector.d.ts +11 -0
- package/dist/core/language-detector.d.ts.map +1 -1
- package/dist/core/language-detector.js +102 -0
- package/dist/core/language-detector.js.map +1 -1
- package/dist/core/steering.d.ts +25 -0
- package/dist/core/steering.d.ts.map +1 -0
- package/dist/core/steering.js +29 -0
- package/dist/core/steering.js.map +1 -0
- package/dist/system-prompt.d.ts.map +1 -1
- package/dist/system-prompt.js +2 -1
- package/dist/system-prompt.js.map +1 -1
- package/dist/system-prompt.test.js +6 -4
- package/dist/system-prompt.test.js.map +1 -1
- package/dist/ui/App.d.ts +2 -1
- package/dist/ui/App.d.ts.map +1 -1
- package/dist/ui/components/ActivityIndicator.d.ts +1 -1
- package/dist/ui/components/ActivityIndicator.d.ts.map +1 -1
- package/dist/ui/components/AnimationContext.d.ts +1 -1
- package/dist/ui/components/AnimationContext.d.ts.map +1 -1
- package/dist/ui/components/AssistantMessage.d.ts +1 -1
- package/dist/ui/components/AssistantMessage.d.ts.map +1 -1
- package/dist/ui/components/BackgroundTasksBar.d.ts +2 -1
- package/dist/ui/components/BackgroundTasksBar.d.ts.map +1 -1
- package/dist/ui/components/Banner.d.ts +2 -1
- package/dist/ui/components/Banner.d.ts.map +1 -1
- package/dist/ui/components/ChatFooterPane.d.ts +2 -1
- package/dist/ui/components/ChatFooterPane.d.ts.map +1 -1
- package/dist/ui/components/ChatInputStack.d.ts +1 -1
- package/dist/ui/components/ChatInputStack.d.ts.map +1 -1
- package/dist/ui/components/ChatLayout.d.ts +4 -4
- package/dist/ui/components/ChatLayout.d.ts.map +1 -1
- package/dist/ui/components/ChatLivePane.d.ts +1 -1
- package/dist/ui/components/ChatLivePane.d.ts.map +1 -1
- package/dist/ui/components/ChatScreen.d.ts +1 -1
- package/dist/ui/components/ChatScreen.d.ts.map +1 -1
- package/dist/ui/components/ChatStatusRow.d.ts +1 -1
- package/dist/ui/components/ChatStatusRow.d.ts.map +1 -1
- package/dist/ui/components/CompactionNotice.d.ts +3 -2
- package/dist/ui/components/CompactionNotice.d.ts.map +1 -1
- package/dist/ui/components/DiffFrame.d.ts +1 -1
- package/dist/ui/components/DiffFrame.d.ts.map +1 -1
- package/dist/ui/components/DiffView.d.ts +2 -1
- package/dist/ui/components/DiffView.d.ts.map +1 -1
- package/dist/ui/components/Footer.d.ts +2 -1
- package/dist/ui/components/Footer.d.ts.map +1 -1
- package/dist/ui/components/FooterStatusRow.d.ts +2 -1
- package/dist/ui/components/FooterStatusRow.d.ts.map +1 -1
- package/dist/ui/components/FullScreenOverlayRouter.d.ts +2 -1
- package/dist/ui/components/FullScreenOverlayRouter.d.ts.map +1 -1
- package/dist/ui/components/IdealHookMessage.d.ts +1 -1
- package/dist/ui/components/IdealHookMessage.d.ts.map +1 -1
- package/dist/ui/components/InputArea.d.ts +1 -1
- package/dist/ui/components/InputArea.d.ts.map +1 -1
- package/dist/ui/components/LiveToolPanel.d.ts +2 -1
- package/dist/ui/components/LiveToolPanel.d.ts.map +1 -1
- package/dist/ui/components/Markdown.d.ts +2 -2
- package/dist/ui/components/Markdown.d.ts.map +1 -1
- package/dist/ui/components/ModelSelector.d.ts +2 -1
- package/dist/ui/components/ModelSelector.d.ts.map +1 -1
- package/dist/ui/components/Overlay.d.ts +1 -1
- package/dist/ui/components/Overlay.d.ts.map +1 -1
- package/dist/ui/components/PixelOverlay.d.ts +2 -1
- package/dist/ui/components/PixelOverlay.d.ts.map +1 -1
- package/dist/ui/components/PlanApproval.d.ts +2 -1
- package/dist/ui/components/PlanApproval.d.ts.map +1 -1
- package/dist/ui/components/PlanBanner.d.ts +2 -1
- package/dist/ui/components/PlanBanner.d.ts.map +1 -1
- package/dist/ui/components/PlanModeLogo.d.ts +2 -1
- package/dist/ui/components/PlanModeLogo.d.ts.map +1 -1
- package/dist/ui/components/PlanOverlay.d.ts +3 -2
- package/dist/ui/components/PlanOverlay.d.ts.map +1 -1
- package/dist/ui/components/PlanProgress.d.ts +2 -1
- package/dist/ui/components/PlanProgress.d.ts.map +1 -1
- package/dist/ui/components/QueueIndicator.d.ts +2 -1
- package/dist/ui/components/QueueIndicator.d.ts.map +1 -1
- package/dist/ui/components/RewindOverlay.d.ts +2 -1
- package/dist/ui/components/RewindOverlay.d.ts.map +1 -1
- package/dist/ui/components/SelectList.d.ts +2 -1
- package/dist/ui/components/SelectList.d.ts.map +1 -1
- package/dist/ui/components/ServerToolExecution.d.ts +2 -1
- package/dist/ui/components/ServerToolExecution.d.ts.map +1 -1
- package/dist/ui/components/SessionSelector.d.ts +2 -1
- package/dist/ui/components/SessionSelector.d.ts.map +1 -1
- package/dist/ui/components/SessionSummary.d.ts +2 -1
- package/dist/ui/components/SessionSummary.d.ts.map +1 -1
- package/dist/ui/components/SettingsSelector.d.ts +2 -1
- package/dist/ui/components/SettingsSelector.d.ts.map +1 -1
- package/dist/ui/components/SkillsOverlay.d.ts +2 -1
- package/dist/ui/components/SkillsOverlay.d.ts.map +1 -1
- package/dist/ui/components/SlashCommandMenu.d.ts +2 -1
- package/dist/ui/components/SlashCommandMenu.d.ts.map +1 -1
- package/dist/ui/components/SlashStyledSelectList.d.ts +2 -1
- package/dist/ui/components/SlashStyledSelectList.d.ts.map +1 -1
- package/dist/ui/components/Spinner.d.ts +2 -1
- package/dist/ui/components/Spinner.d.ts.map +1 -1
- package/dist/ui/components/StreamingArea.d.ts +1 -1
- package/dist/ui/components/StreamingArea.d.ts.map +1 -1
- package/dist/ui/components/SubAgentPanel.d.ts +2 -1
- package/dist/ui/components/SubAgentPanel.d.ts.map +1 -1
- package/dist/ui/components/TaskPickerMenu.d.ts +2 -1
- package/dist/ui/components/TaskPickerMenu.d.ts.map +1 -1
- package/dist/ui/components/ThemeSelector.d.ts +2 -1
- package/dist/ui/components/ThemeSelector.d.ts.map +1 -1
- package/dist/ui/components/ThinkingBlock.d.ts +1 -1
- package/dist/ui/components/ThinkingBlock.d.ts.map +1 -1
- package/dist/ui/components/ToolExecution.d.ts +2 -1
- package/dist/ui/components/ToolExecution.d.ts.map +1 -1
- package/dist/ui/components/ToolGroupExecution.d.ts +2 -1
- package/dist/ui/components/ToolGroupExecution.d.ts.map +1 -1
- package/dist/ui/components/TranscriptViewport.d.ts +1 -1
- package/dist/ui/components/TranscriptViewport.d.ts.map +1 -1
- package/dist/ui/components/UserMessage.d.ts +2 -1
- package/dist/ui/components/UserMessage.d.ts.map +1 -1
- package/dist/ui/hooks/useAgentLoop.d.ts.map +1 -1
- package/dist/ui/hooks/useAgentLoop.js +5 -1
- package/dist/ui/hooks/useAgentLoop.js.map +1 -1
- package/dist/ui/transcript/MiscRows.d.ts +8 -7
- package/dist/ui/transcript/MiscRows.d.ts.map +1 -1
- package/dist/ui/transcript/StatusRow.d.ts +1 -1
- package/dist/ui/transcript/StatusRow.d.ts.map +1 -1
- package/dist/ui/transcript/ToolRows.d.ts +7 -6
- package/dist/ui/transcript/ToolRows.d.ts.map +1 -1
- package/dist/ui/transcript/TranscriptItemFrame.d.ts +1 -1
- package/dist/ui/transcript/TranscriptItemFrame.d.ts.map +1 -1
- package/dist/utils/image.d.ts +17 -0
- package/dist/utils/image.d.ts.map +1 -1
- package/dist/utils/image.js +57 -2
- package/dist/utils/image.js.map +1 -1
- package/dist/utils/prompt-enhancer.d.ts +50 -0
- package/dist/utils/prompt-enhancer.d.ts.map +1 -0
- package/dist/utils/prompt-enhancer.js +127 -0
- package/dist/utils/prompt-enhancer.js.map +1 -0
- package/package.json +4 -4
|
@@ -1,23 +1,24 @@
|
|
|
1
|
+
import React from "react";
|
|
1
2
|
import type { DurationItem, ErrorItem, QueuedItem, SetupHintItem, StepDoneItem, StylePackItem, UpdateNoticeItem } from "../app-items.js";
|
|
2
3
|
export declare function StylePackRow({ item }: {
|
|
3
4
|
item: StylePackItem;
|
|
4
|
-
}):
|
|
5
|
+
}): React.JSX.Element;
|
|
5
6
|
export declare function SetupHintRow({ item }: {
|
|
6
7
|
item: SetupHintItem;
|
|
7
|
-
}):
|
|
8
|
+
}): React.JSX.Element;
|
|
8
9
|
export declare function ErrorRow({ item }: {
|
|
9
10
|
item: ErrorItem;
|
|
10
|
-
}):
|
|
11
|
+
}): React.JSX.Element;
|
|
11
12
|
export declare function UpdateNoticeRow({ item }: {
|
|
12
13
|
item: UpdateNoticeItem;
|
|
13
|
-
}):
|
|
14
|
+
}): React.JSX.Element;
|
|
14
15
|
export declare function StepDoneRow({ item }: {
|
|
15
16
|
item: StepDoneItem;
|
|
16
|
-
}):
|
|
17
|
+
}): React.JSX.Element;
|
|
17
18
|
export declare function QueuedRow({ item }: {
|
|
18
19
|
item: QueuedItem;
|
|
19
|
-
}):
|
|
20
|
+
}): React.JSX.Element;
|
|
20
21
|
export declare function DurationRow({ item }: {
|
|
21
22
|
item: DurationItem;
|
|
22
|
-
}):
|
|
23
|
+
}): React.JSX.Element;
|
|
23
24
|
//# sourceMappingURL=MiscRows.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MiscRows.d.ts","sourceRoot":"","sources":["../../../src/ui/transcript/MiscRows.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"MiscRows.d.ts","sourceRoot":"","sources":["../../../src/ui/transcript/MiscRows.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EACV,YAAY,EACZ,SAAS,EACT,UAAU,EACV,aAAa,EACb,YAAY,EACZ,aAAa,EACb,gBAAgB,EACjB,MAAM,iBAAiB,CAAC;AAWzB,wBAAgB,YAAY,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,aAAa,CAAA;CAAE,qBAsC7D;AAED,wBAAgB,YAAY,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,aAAa,CAAA;CAAE,qBAoC7D;AAED,wBAAgB,QAAQ,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,qBA0BrD;AAED,wBAAgB,eAAe,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,gBAAgB,CAAA;CAAE,qBAanE;AAED,wBAAgB,WAAW,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,qBAmB3D;AAED,wBAAgB,SAAS,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,qBAoBvD;AAED,wBAAgB,WAAW,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,qBAY3D"}
|
|
@@ -9,6 +9,6 @@ interface StatusRowProps {
|
|
|
9
9
|
muted?: boolean;
|
|
10
10
|
presentation?: StatusPresentation;
|
|
11
11
|
}
|
|
12
|
-
export declare function StatusRow({ id, glyph, children, glyphColor, bold, muted, presentation, }: StatusRowProps):
|
|
12
|
+
export declare function StatusRow({ id, glyph, children, glyphColor, bold, muted, presentation, }: StatusRowProps): React.JSX.Element;
|
|
13
13
|
export {};
|
|
14
14
|
//# sourceMappingURL=StatusRow.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StatusRow.d.ts","sourceRoot":"","sources":["../../../src/ui/transcript/StatusRow.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAE5D,UAAU,cAAc;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,YAAY,CAAC,EAAE,kBAAkB,CAAC;CACnC;AAED,wBAAgB,SAAS,CAAC,EACxB,EAAE,EACF,KAAK,EACL,QAAQ,EACR,UAAU,EACV,IAAI,EACJ,KAAK,EACL,YAAY,GACb,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"StatusRow.d.ts","sourceRoot":"","sources":["../../../src/ui/transcript/StatusRow.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAE5D,UAAU,cAAc;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,YAAY,CAAC,EAAE,kBAAkB,CAAC;CACnC;AAED,wBAAgB,SAAS,CAAC,EACxB,EAAE,EACF,KAAK,EACL,QAAQ,EACR,UAAU,EACV,IAAI,EACJ,KAAK,EACL,YAAY,GACb,EAAE,cAAc,qBA4BhB"}
|
|
@@ -1,20 +1,21 @@
|
|
|
1
|
+
import React from "react";
|
|
1
2
|
import type { ServerToolDoneItem, ServerToolStartItem, SubAgentGroupItem, ToolDoneItem, ToolGroupItem, ToolStartItem } from "../app-items.js";
|
|
2
3
|
export declare function ToolStartRow({ item }: {
|
|
3
4
|
item: ToolStartItem;
|
|
4
|
-
}):
|
|
5
|
+
}): React.JSX.Element;
|
|
5
6
|
export declare function ToolDoneRow({ item }: {
|
|
6
7
|
item: ToolDoneItem;
|
|
7
|
-
}):
|
|
8
|
+
}): React.JSX.Element;
|
|
8
9
|
export declare function ToolGroupRow({ item }: {
|
|
9
10
|
item: ToolGroupItem;
|
|
10
|
-
}):
|
|
11
|
+
}): React.JSX.Element;
|
|
11
12
|
export declare function ServerToolStartRow({ item }: {
|
|
12
13
|
item: ServerToolStartItem;
|
|
13
|
-
}):
|
|
14
|
+
}): React.JSX.Element;
|
|
14
15
|
export declare function ServerToolDoneRow({ item }: {
|
|
15
16
|
item: ServerToolDoneItem;
|
|
16
|
-
}):
|
|
17
|
+
}): React.JSX.Element;
|
|
17
18
|
export declare function SubAgentGroupRow({ item }: {
|
|
18
19
|
item: SubAgentGroupItem;
|
|
19
|
-
}):
|
|
20
|
+
}): React.JSX.Element;
|
|
20
21
|
//# sourceMappingURL=ToolRows.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToolRows.d.ts","sourceRoot":"","sources":["../../../src/ui/transcript/ToolRows.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ToolRows.d.ts","sourceRoot":"","sources":["../../../src/ui/transcript/ToolRows.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,OAAO,KAAK,EACV,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,YAAY,EACZ,aAAa,EACb,aAAa,EACd,MAAM,iBAAiB,CAAC;AAEzB,wBAAgB,YAAY,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,aAAa,CAAA;CAAE,qBAW7D;AAED,wBAAgB,WAAW,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,qBAY3D;AAED,wBAAgB,YAAY,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,aAAa,CAAA;CAAE,qBAE7D;AAED,wBAAgB,kBAAkB,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,mBAAmB,CAAA;CAAE,qBAWzE;AAED,wBAAgB,iBAAiB,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,kBAAkB,CAAA;CAAE,qBAWvE;AAED,wBAAgB,gBAAgB,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,iBAAiB,CAAA;CAAE,qBAErE"}
|
|
@@ -3,6 +3,6 @@ interface TranscriptItemFrameProps {
|
|
|
3
3
|
children: React.ReactNode;
|
|
4
4
|
marginTop: number;
|
|
5
5
|
}
|
|
6
|
-
export declare function TranscriptItemFrame({ children, marginTop }: TranscriptItemFrameProps):
|
|
6
|
+
export declare function TranscriptItemFrame({ children, marginTop }: TranscriptItemFrameProps): React.JSX.Element;
|
|
7
7
|
export {};
|
|
8
8
|
//# sourceMappingURL=TranscriptItemFrame.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TranscriptItemFrame.d.ts","sourceRoot":"","sources":["../../../src/ui/transcript/TranscriptItemFrame.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,UAAU,wBAAwB;IAChC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,mBAAmB,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,wBAAwB,
|
|
1
|
+
{"version":3,"file":"TranscriptItemFrame.d.ts","sourceRoot":"","sources":["../../../src/ui/transcript/TranscriptItemFrame.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,UAAU,wBAAwB;IAChC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,mBAAmB,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,wBAAwB,qBAOpF"}
|
package/dist/utils/image.d.ts
CHANGED
|
@@ -55,6 +55,23 @@ export declare function extractImagePaths(text: string, cwd: string): Promise<{
|
|
|
55
55
|
/** Alias of {@link extractImagePaths} that also picks up video paths (video
|
|
56
56
|
* extensions are part of ATTACHABLE_EXTENSIONS). Name reflects the widened scope. */
|
|
57
57
|
export declare const extractMediaPaths: typeof extractImagePaths;
|
|
58
|
+
/**
|
|
59
|
+
* Validate that a base64-decoded buffer is a REAL, fully-decodable image in a
|
|
60
|
+
* format the vision APIs accept. Returns the corrected media type on success,
|
|
61
|
+
* or `null` when the data is corrupt or an unsupported format.
|
|
62
|
+
*
|
|
63
|
+
* Why this exists: an image content block with corrupt or unsupported bytes
|
|
64
|
+
* (e.g. a malformed `.ico`, or a `.png` with a bad IDAT/CRC) makes the provider
|
|
65
|
+
* reject the ENTIRE turn with "The image data you provided does not represent a
|
|
66
|
+
* valid image" — the agent never gets to respond. Callers use the `null` return
|
|
67
|
+
* to downgrade such an attachment to a plain file note (saved to disk, inspected
|
|
68
|
+
* with tools) so the request still succeeds and the model can diagnose the file.
|
|
69
|
+
*
|
|
70
|
+
* The header sniff alone is insufficient (a corrupt PNG still has PNG magic), so
|
|
71
|
+
* this forces a full pixel decode — resized small to bound memory — which makes
|
|
72
|
+
* libvips surface mid-stream corruption here instead of at the provider.
|
|
73
|
+
*/
|
|
74
|
+
export declare function validateVisionImage(buffer: Buffer): Promise<string | null>;
|
|
58
75
|
/**
|
|
59
76
|
* Downscale an image buffer so it fits within both MAX_IMAGE_DIMENSION per side
|
|
60
77
|
* (Anthropic's hard pixel cap for many-image requests) and MAX_IMAGE_BYTES.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image.d.ts","sourceRoot":"","sources":["../../src/utils/image.ts"],"names":[],"mappings":"AA0CA,eAAO,MAAM,gBAAgB,aAA8D,CAAC;AAC5F,eAAO,MAAM,gBAAgB,aAAqD,CAAC;AAQnF;;;+EAG+E;AAC/E,eAAO,MAAM,eAAe,QAAmB,CAAC;AAYhD,MAAM,MAAM,sBAAsB,GAC9B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,CAAA;CAAE,GAC1E;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAMlC;;;;;;;;;;GAUG;AACH,wBAAsB,kBAAkB,CACtC,SAAS,EAAE,MAAM,EACjB,WAAW,GAAE,MAA8B,EAC3C,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,sBAAsB,CAAC,CAqFjC;AAED,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAOpD,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAMpD,CAAC;AAKF,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,OAAO,GAAG,OAAO,GAAG,MAAM,CAAC;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,kEAAkE;AAClE,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAGrD;AAED,iEAAiE;AACjE,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAGrD;AAED,yEAAyE;AACzE,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAG1D;AAyCD;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,GACV,OAAO,CAAC;IAAE,UAAU,EAAE,MAAM,EAAE,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CA2BtD;AAED;sFACsF;AACtF,eAAO,MAAM,iBAAiB,0BAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"image.d.ts","sourceRoot":"","sources":["../../src/utils/image.ts"],"names":[],"mappings":"AA0CA,eAAO,MAAM,gBAAgB,aAA8D,CAAC;AAC5F,eAAO,MAAM,gBAAgB,aAAqD,CAAC;AAQnF;;;+EAG+E;AAC/E,eAAO,MAAM,eAAe,QAAmB,CAAC;AAYhD,MAAM,MAAM,sBAAsB,GAC9B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,CAAA;CAAE,GAC1E;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAMlC;;;;;;;;;;GAUG;AACH,wBAAsB,kBAAkB,CACtC,SAAS,EAAE,MAAM,EACjB,WAAW,GAAE,MAA8B,EAC3C,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,sBAAsB,CAAC,CAqFjC;AAED,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAOpD,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAMpD,CAAC;AAKF,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,OAAO,GAAG,OAAO,GAAG,MAAM,CAAC;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,kEAAkE;AAClE,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAGrD;AAED,iEAAiE;AACjE,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAGrD;AAED,yEAAyE;AACzE,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAG1D;AAyCD;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,GACV,OAAO,CAAC;IAAE,UAAU,EAAE,MAAM,EAAE,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CA2BtD;AAED;sFACsF;AACtF,eAAO,MAAM,iBAAiB,0BAAoB,CAAC;AAyBnD;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAgBhF;AAED;;;;GAIG;AACH,wBAAsB,WAAW,CAC/B,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAiFhD;AAED;;;;;;;GAOG;AACH,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAYzE;AAED;;;;;;GAMG;AACH,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAkF9E;AAED;yBACyB;AACzB,eAAO,MAAM,aAAa,sBAAgB,CAAC;AAE3C;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAoDnE"}
|
package/dist/utils/image.js
CHANGED
|
@@ -255,6 +255,45 @@ const SHARP_FORMAT_TO_MEDIA = {
|
|
|
255
255
|
gif: "image/gif",
|
|
256
256
|
webp: "image/webp",
|
|
257
257
|
};
|
|
258
|
+
/** Media types the Anthropic + OpenAI vision APIs actually accept as image
|
|
259
|
+
* blocks. Anything else (.ico, .bmp, .svg, .tiff, …) must NOT be sent as an
|
|
260
|
+
* image or the provider rejects the whole request. */
|
|
261
|
+
const VISION_MEDIA_TYPES = new Set(["image/png", "image/jpeg", "image/gif", "image/webp"]);
|
|
262
|
+
/**
|
|
263
|
+
* Validate that a base64-decoded buffer is a REAL, fully-decodable image in a
|
|
264
|
+
* format the vision APIs accept. Returns the corrected media type on success,
|
|
265
|
+
* or `null` when the data is corrupt or an unsupported format.
|
|
266
|
+
*
|
|
267
|
+
* Why this exists: an image content block with corrupt or unsupported bytes
|
|
268
|
+
* (e.g. a malformed `.ico`, or a `.png` with a bad IDAT/CRC) makes the provider
|
|
269
|
+
* reject the ENTIRE turn with "The image data you provided does not represent a
|
|
270
|
+
* valid image" — the agent never gets to respond. Callers use the `null` return
|
|
271
|
+
* to downgrade such an attachment to a plain file note (saved to disk, inspected
|
|
272
|
+
* with tools) so the request still succeeds and the model can diagnose the file.
|
|
273
|
+
*
|
|
274
|
+
* The header sniff alone is insufficient (a corrupt PNG still has PNG magic), so
|
|
275
|
+
* this forces a full pixel decode — resized small to bound memory — which makes
|
|
276
|
+
* libvips surface mid-stream corruption here instead of at the provider.
|
|
277
|
+
*/
|
|
278
|
+
export async function validateVisionImage(buffer) {
|
|
279
|
+
try {
|
|
280
|
+
const sharp = await loadSharp();
|
|
281
|
+
const meta = await sharp(buffer).metadata();
|
|
282
|
+
const mediaType = meta.format ? SHARP_FORMAT_TO_MEDIA[meta.format] : undefined;
|
|
283
|
+
if (!mediaType || !VISION_MEDIA_TYPES.has(mediaType))
|
|
284
|
+
return null;
|
|
285
|
+
// Force a full decode (failOn: "error") so a corrupt payload the header check
|
|
286
|
+
// misses is caught here. Resize small so a huge image doesn't balloon memory.
|
|
287
|
+
await sharp(buffer, { failOn: "error" })
|
|
288
|
+
.resize(256, 256, { fit: "inside", withoutEnlargement: true })
|
|
289
|
+
.raw()
|
|
290
|
+
.toBuffer();
|
|
291
|
+
return mediaType;
|
|
292
|
+
}
|
|
293
|
+
catch {
|
|
294
|
+
return null;
|
|
295
|
+
}
|
|
296
|
+
}
|
|
258
297
|
/**
|
|
259
298
|
* Downscale an image buffer so it fits within both MAX_IMAGE_DIMENSION per side
|
|
260
299
|
* (Anthropic's hard pixel cap for many-image requests) and MAX_IMAGE_BYTES.
|
|
@@ -409,12 +448,28 @@ export async function readImageFile(filePath) {
|
|
|
409
448
|
try {
|
|
410
449
|
const mediaType = MEDIA_TYPES[ext] ?? "image/png";
|
|
411
450
|
const rawBuffer = await fs.readFile(filePath);
|
|
412
|
-
const { buffer
|
|
451
|
+
const { buffer } = await shrinkToFit(rawBuffer, mediaType);
|
|
452
|
+
// Final guard: confirm the (possibly shrunk) buffer is a real, fully-decodable
|
|
453
|
+
// image in a vision-supported format. shrinkToFit short-circuits without a
|
|
454
|
+
// full decode when the image is already within size limits, so a corrupt or
|
|
455
|
+
// unsupported file (e.g. a malformed .ico) could slip through and make the
|
|
456
|
+
// provider reject the whole turn. On failure, degrade to a text placeholder
|
|
457
|
+
// the model can still read as <file> context — never break the turn.
|
|
458
|
+
const validatedType = await validateVisionImage(buffer);
|
|
459
|
+
if (!validatedType) {
|
|
460
|
+
return {
|
|
461
|
+
kind: "text",
|
|
462
|
+
fileName,
|
|
463
|
+
filePath,
|
|
464
|
+
mediaType: "text/plain",
|
|
465
|
+
data: `[image ${fileName} is not a valid/supported image (corrupt or unsupported format); saved at ${filePath} — inspect it with your tools if needed]`,
|
|
466
|
+
};
|
|
467
|
+
}
|
|
413
468
|
return {
|
|
414
469
|
kind: "image",
|
|
415
470
|
fileName,
|
|
416
471
|
filePath,
|
|
417
|
-
mediaType:
|
|
472
|
+
mediaType: validatedType,
|
|
418
473
|
data: buffer.toString("base64"),
|
|
419
474
|
};
|
|
420
475
|
}
|
package/dist/utils/image.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image.js","sourceRoot":"","sources":["../../src/utils/image.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAGtC,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAe1C,IAAI,OAAO,GAAmB,IAAI,CAAC;AACnC,KAAK,UAAU,SAAS;IACtB,IAAI,OAAO;QAAE,OAAO,OAAO,CAAC;IAC5B,uEAAuE;IACvE,6EAA6E;IAC7E,yEAAyE;IACzE,mCAAmC;IACnC,MAAM,GAAG,GAAG,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,CAA+C,CAAC;IAClF,OAAO,GAAG,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC;IAC7B,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,sDAAsD;AACtD,MAAM,eAAe,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AACxC,sFAAsF;AACtF,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAC9B;sEACsE;AACtE,MAAM,mBAAmB,GAAG,IAAI,CAAC;AAEjC,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;AAC5F,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AACnF,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;AACjD,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAC;IACpC,GAAG,gBAAgB;IACnB,GAAG,gBAAgB;IACnB,GAAG,eAAe;CACnB,CAAC,CAAC;AAEH;;;+EAG+E;AAC/E,MAAM,CAAC,MAAM,eAAe,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAEhD,6EAA6E;AAE7E;gDACgD;AAChD,MAAM,qBAAqB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAC/C,MAAM,kBAAkB,GAAG,IAAI,CAAC,CAAC,gDAAgD;AACjF,MAAM,YAAY,GAAG,CAAC,CAAC,CAAC,sDAAsD;AAC9E,MAAM,mBAAmB,GAAG,EAAE,CAAC,CAAC,2BAA2B;AAC3D,MAAM,uBAAuB,GAAG,GAAG,CAAC,CAAC,0CAA0C;AAM/E,SAAS,eAAe,CAAC,GAAY;IACnC,OAAQ,GAA6B,EAAE,IAAI,KAAK,QAAQ,CAAC;AAC3D,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,SAAiB,EACjB,cAAsB,qBAAqB,EAC3C,MAAoB;IAEpB,qDAAqD;IACrD,IAAI,WAAmB,CAAC;IACxB,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,aAAa,CACpC,SAAS,EACT,CAAC,IAAI,EAAE,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,KAAK,EAAE,mBAAmB,EAAE,SAAS,CAAC,EAC1F,EAAE,MAAM,EAAE,CACX,CAAC;QACF,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IACjD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO;YACL,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,eAAe,CAAC,GAAG,CAAC;gBAC1B,CAAC,CAAC,iCAAiC;gBACnC,CAAC,CAAC,0BAA0B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;SACjF,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,WAAW,IAAI,CAAC,EAAE,CAAC;QACtD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,oCAAoC,EAAE,CAAC;IACrE,CAAC;IAED,0EAA0E;IAC1E,oEAAoE;IACpE,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,GAAG,WAAW,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;IAC7E,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,uBAAuB,EAAE,SAAS,GAAG,mBAAmB,CAAC,CAAC;IACrF,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,sBAAsB,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAE/E,IAAI,CAAC;QACH,MAAM,aAAa,CACjB,QAAQ,EACR;YACE,IAAI;YACJ,UAAU;YACV,WAAW;YACX,OAAO;YACP,IAAI;YACJ,SAAS;YACT,KAAK;YACL,cAAc,kBAAkB,gBAAgB,YAAY,EAAE;YAC9D,MAAM;YACN,SAAS;YACT,MAAM;YACN,GAAG,SAAS,GAAG;YACf,UAAU;YACV,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,GAAG,CAAC,GAAG;YACjC,UAAU;YACV,GAAG,SAAS,GAAG;YACf,SAAS;YACT,UAAU;YACV,MAAM;YACN,KAAK;YACL,MAAM;YACN,GAAG,mBAAmB,GAAG;YACzB,OAAO;SACR,EACD,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,CACxC,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACzC,OAAO;YACL,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,eAAe,CAAC,GAAG,CAAC;gBAC1B,CAAC,CAAC,yBAAyB;gBAC3B,CAAC,CAAC,8BAA8B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;SACrF,CAAC;IACJ,CAAC;IAED,IAAI,eAAuB,CAAC;IAC5B,IAAI,aAAqB,CAAC;IAC1B,IAAI,CAAC;QACH,eAAe,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;QAChD,aAAa,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;IAClD,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACzC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,uCAAuC,EAAE,CAAC;IACxE,CAAC;IACD,IAAI,eAAe,GAAG,WAAW,EAAE,CAAC;QAClC,MAAM,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACzC,OAAO;YACL,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,6BAA6B,CAAC,eAAe,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK;SACvF,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,CAAC;AACrE,CAAC;AAED,MAAM,CAAC,MAAM,iBAAiB,GAA2B;IACvD,MAAM,EAAE,WAAW;IACnB,MAAM,EAAE,YAAY;IACpB,OAAO,EAAE,YAAY;IACrB,MAAM,EAAE,WAAW;IACnB,OAAO,EAAE,YAAY;IACrB,MAAM,EAAE,WAAW;CACpB,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAA2B;IACvD,MAAM,EAAE,WAAW;IACnB,MAAM,EAAE,iBAAiB;IACzB,OAAO,EAAE,YAAY;IACrB,MAAM,EAAE,iBAAiB;IACzB,MAAM,EAAE,kBAAkB;CAC3B,CAAC;AAEF,gDAAgD;AAChD,MAAM,WAAW,GAAG,iBAAiB,CAAC;AAUtC,kEAAkE;AAClE,MAAM,UAAU,WAAW,CAAC,QAAgB;IAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;IACjD,OAAO,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACnC,CAAC;AAED,iEAAiE;AACjE,MAAM,UAAU,WAAW,CAAC,QAAgB;IAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;IACjD,OAAO,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACnC,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,gBAAgB,CAAC,QAAgB;IAC/C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;IACjD,OAAO,qBAAqB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACxC,CAAC;AAED,SAAS,WAAW,CAAC,QAAgB,EAAE,GAAW;IAChD,IAAI,QAAQ,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC/B,2BAA2B;IAC3B,IACE,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACpD,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EACpD,CAAC;QACD,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC;IACD,uBAAuB;IACvB,IAAI,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QACnC,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC/B,CAAC;IACD,0DAA0D;IAC1D,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC5C,mBAAmB;IACnB,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACnE,CAAC;SAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACtC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACtC,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;GAIG;AACH,SAAS,aAAa,CAAC,KAAa;IAClC,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;IACnD,OAAO,CACL,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC;QACtB,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;QACvB,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC;QACxB,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAC/B,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,IAAY,EACZ,GAAW;IAEX,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,MAAM,UAAU,GAAa,EAAE,CAAC;IAEhC,6EAA6E;IAC7E,IAAI,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACzC,IAAI,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;YACjE,OAAO,EAAE,UAAU,EAAE,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;QACpD,CAAC;IACH,CAAC;IAED,yFAAyF;IACzF,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC;IACrD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,CAAC,KAAK;YAAE,SAAS;QACrB,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YACzC,IAAI,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;gBAC/D,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC1B,SAAS;YACX,CAAC;QACH,CAAC;QACD,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IAED,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;AACzD,CAAC;AAED;sFACsF;AACtF,MAAM,CAAC,MAAM,iBAAiB,GAAG,iBAAiB,CAAC;AAEnD,KAAK,UAAU,UAAU,CAAC,QAAgB;IACxC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrC,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;IACvB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,gFAAgF;AAChF,MAAM,qBAAqB,GAA2B;IACpD,GAAG,EAAE,WAAW;IAChB,IAAI,EAAE,YAAY;IAClB,GAAG,EAAE,YAAY;IACjB,GAAG,EAAE,WAAW;IAChB,IAAI,EAAE,YAAY;CACnB,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,MAAc,EACd,SAAiB;IAEjB,MAAM,KAAK,GAAG,MAAM,SAAS,EAAE,CAAC;IAChC,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC;IACjC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC;IAClC,MAAM,UAAU,GAAG,KAAK,GAAG,mBAAmB,IAAI,KAAK,GAAG,mBAAmB,CAAC;IAE9E,2EAA2E;IAC3E,sEAAsE;IACtE,6CAA6C;IAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC9E,IAAI,QAAQ,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QACvC,SAAS,GAAG,QAAQ,CAAC;IACvB,CAAC;IAED,oDAAoD;IACpD,IAAI,CAAC,UAAU,IAAI,MAAM,CAAC,MAAM,IAAI,eAAe,EAAE,CAAC;QACpD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAC/B,CAAC;IAED,yCAAyC;IACzC,MAAM,SAAS,GAAoD;QACjE,WAAW,EAAE,KAAK;QAClB,YAAY,EAAE,MAAM;QACpB,WAAW,EAAE,KAAK;QAClB,YAAY,EAAE,MAAM;QACpB,WAAW,EAAE,KAAK,EAAE,gDAAgD;KACrE,CAAC;IACF,IAAI,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC;IAC9C,IAAI,YAAY,GAAG,SAAS,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;IAEvE,yEAAyE;IACzE,2EAA2E;IAC3E,6EAA6E;IAC7E,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,mBAAmB,GAAG,KAAK,EAAE,mBAAmB,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAClG,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC;IACnD,IAAI,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC;IAEpD,0EAA0E;IAC1E,kCAAkC;IAClC,CAAC;QACC,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC;aAC9B,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC;aAClE,QAAQ,CAAC,SAAS,CAAC;aACnB,QAAQ,EAAE,CAAC;QACd,IAAI,KAAK,CAAC,MAAM,IAAI,eAAe,EAAE,CAAC;YACpC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC;QACpD,CAAC;IACH,CAAC;IAED,0DAA0D;IAC1D,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC;QAC9C,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC;QAC9C,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;QAChD,IAAI,KAAK,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC;YAAE,MAAM;QAEnC,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC;aAC/B,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC;aAClE,QAAQ,CAAC,SAAS,CAAC;aACnB,QAAQ,EAAE,CAAC;QAEd,IAAI,MAAM,CAAC,MAAM,IAAI,eAAe,EAAE,CAAC;YACrC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC;QACrD,CAAC;QAED,kFAAkF;QAClF,IAAI,OAAO,KAAK,CAAC,IAAI,SAAS,KAAK,KAAK,EAAE,CAAC;YACzC,SAAS,GAAG,MAAM,CAAC;YACnB,YAAY,GAAG,YAAY,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,yDAAyD;IACzD,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC;SAC/B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,EAAE;QACzD,GAAG,EAAE,QAAQ;QACb,kBAAkB,EAAE,IAAI;KACzB,CAAC;SACD,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;SACrB,QAAQ,EAAE,CAAC;IACd,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC;AACrD,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,MAAc;IACtD,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,SAAS,EAAE,CAAC;QAChC,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;QAC9B,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,iBAAiB;YAAE,OAAO,MAAM,CAAC;QAC3D,OAAO,MAAM,KAAK,CAAC,MAAM,CAAC;aACvB,MAAM,CAAC,iBAAiB,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC;aACjF,QAAQ,EAAE,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,MAAM,CAAC;IAChB,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,QAAgB;IAClD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;IACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAEzC,IAAI,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QAC9B,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,iBAAiB,CAAC,GAAG,CAAC,IAAI,WAAW,CAAC;YACxD,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACrC,0EAA0E;YAC1E,sEAAsE;YACtE,wEAAwE;YACxE,0EAA0E;YAC1E,wEAAwE;YACxE,mCAAmC;YACnC,MAAM,IAAI,GACR,IAAI,CAAC,IAAI,IAAI,eAAe,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACvF,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;QAChE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,MAAM,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAChE,OAAO;gBACL,IAAI,EAAE,MAAM;gBACZ,QAAQ;gBACR,QAAQ;gBACR,SAAS,EAAE,YAAY;gBACvB,IAAI,EAAE,UAAU,QAAQ,yBAAyB,MAAM,GAAG;aAC3D,CAAC;QACJ,CAAC;IACH,CAAC;IAED,IAAI,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7B,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACrD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QACtF,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,MAAM,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAChE,OAAO;gBACL,IAAI,EAAE,MAAM;gBACZ,QAAQ;gBACR,QAAQ;gBACR,SAAS,EAAE,YAAY;gBACvB,IAAI,EAAE,SAAS,QAAQ,uBAAuB,MAAM,GAAG;aACxD,CAAC;QACJ,CAAC;IACH,CAAC;IAED,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,WAAW,CAAC;QAClD,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC9C,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,GAAG,MAAM,WAAW,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACtF,OAAO;YACL,IAAI,EAAE,OAAO;YACb,QAAQ;YACR,QAAQ;YACR,SAAS,EAAE,cAAc;YACzB,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;SAChC,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,MAAM,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAChE,OAAO;YACL,IAAI,EAAE,MAAM;YACZ,QAAQ;YACR,QAAQ;YACR,SAAS,EAAE,YAAY;YACvB,IAAI,EAAE,UAAU,QAAQ,yBAAyB,MAAM,GAAG;SAC3D,CAAC;IACJ,CAAC;AACH,CAAC;AAED;yBACyB;AACzB,MAAM,CAAC,MAAM,aAAa,GAAG,aAAa,CAAC;AAE3C;;;GAGG;AACH,MAAM,UAAU,iBAAiB;IAC/B,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ;QAAE,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAEhE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,oCAAoC;QACpC,QAAQ,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,gBAAgB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;YAC9D,IAAI,GAAG,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;gBAClE,OAAO,CAAC,IAAI,CAAC,CAAC;gBACd,OAAO;YACT,CAAC;YAED,gCAAgC;YAChC,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YACtC,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;YAC1C,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;YACnC,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC;YAErD,0DAA0D;YAC1D,MAAM,OAAO,GAAG,0BAA0B,IAAI,CAAC,GAAG,EAAE,IAAI,GAAG,EAAE,CAAC;YAC9D,MAAM,WAAW,GAAG;gBAClB,0CAA0C,SAAS,GAAG;gBACtD,+BAA+B,OAAO,GAAG;gBACzC,+DAA+D;gBAC/D,0BAA0B;gBAC1B,sBAAsB;aACvB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEb,QAAQ,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;gBAC5D,IAAI,QAAQ,EAAE,CAAC;oBACb,OAAO,CAAC,IAAI,CAAC,CAAC;oBACd,OAAO;gBACT,CAAC;gBACD,IAAI,CAAC;oBACH,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;oBAC7C,MAAM,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;oBACzC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,cAAc,EAAE,GAAG,MAAM,WAAW,CAC1E,SAAS,EACT,SAAS,CACV,CAAC;oBACF,OAAO,CAAC;wBACN,IAAI,EAAE,OAAO;wBACb,QAAQ,EAAE,aAAa,GAAG,EAAE;wBAC5B,QAAQ,EAAE,OAAO;wBACjB,SAAS,EAAE,cAAc;wBACzB,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC;qBACrC,CAAC,CAAC;gBACL,CAAC;gBAAC,MAAM,CAAC;oBACP,OAAO,CAAC,IAAI,CAAC,CAAC;gBAChB,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
1
|
+
{"version":3,"file":"image.js","sourceRoot":"","sources":["../../src/utils/image.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { type Provider } from "@kenkaiiii/gg-ai";
|
|
2
|
+
/**
|
|
3
|
+
* One piece of an enhanced prompt. A `text` segment is verbatim prose; a `term`
|
|
4
|
+
* segment is a corrected technical term the model swapped in, carrying the
|
|
5
|
+
* user's `original` phrasing (and an optional `note`) so the UI can teach the
|
|
6
|
+
* difference via a tooltip.
|
|
7
|
+
*/
|
|
8
|
+
export type PromptSegment = {
|
|
9
|
+
kind: "text";
|
|
10
|
+
text: string;
|
|
11
|
+
} | {
|
|
12
|
+
kind: "term";
|
|
13
|
+
text: string;
|
|
14
|
+
original: string;
|
|
15
|
+
note?: string;
|
|
16
|
+
};
|
|
17
|
+
export interface EnhanceResult {
|
|
18
|
+
/** The plain rewritten prompt — exactly what gets sent to the agent. */
|
|
19
|
+
enhanced: string;
|
|
20
|
+
/** The same prompt split into prose + corrected-term segments for the UI. */
|
|
21
|
+
segments: PromptSegment[];
|
|
22
|
+
}
|
|
23
|
+
export declare const ENHANCER_SYSTEM_PROMPT = "You rewrite a developer's rough request into a tight, well-structured prompt for a CODING AGENT, and you teach them the correct vocabulary as you go. You only rewrite it \u2014 never answer, plan, or implement the request, never ask the user questions, and never add code snippets.\n\nThe teaching part: when the user described something in plain or informal words that has a precise, conventional software-engineering name, use that real name AND wrap it so the user learns the term. This highlighting is the main point \u2014 using the right term but failing to wrap it is a miss.\n\nMarker format \u2014 wrap each introduced technical term EXACTLY like this, with BOTH fields always present:\n \u27E6correct term\u00A6the user's own words for it\u00A6short note\u27E7\nThe third field (note) is an optional plain-language gloss and may be omitted: \u27E6correct term\u00A6the user's own words\u27E7. Never emit a marker without the user's-own-words field (no bare \u27E6term\u27E7). The user's-own-words field must quote the relevant part of THEIR phrasing, not a paraphrase.\n\nMark ONLY genuine vocabulary lessons \u2014 a real plain-words \u2192 established-technical-term upgrade, where the wrapped word is named software/CS jargon (e.g. debounce, throttle, lazy loading, caching, memoization, retry with backoff, concurrency, race, optimistic locking, idempotent, infinite scroll, virtualization, skeleton UI, mock/stub, persistence, WebSocket, cron job, deep copy, hot reload). Usually 0\u20133 per prompt, and often 0 \u2014 many requests have no jargon to teach, and that is fine. Do NOT wrap: plain descriptive English that is not a named technical concept (positions like \"to the right of\", directions, sizes, colors, \"between\", \"reorder\"), ordinary words (updates, changes, loading, bottom, the whole app), terms the user already used correctly, or generic rewording. If the only candidates are plain English, wrap nothing. When in doubt, leave it unwrapped.\n\nOther rules:\n- Keep it concise and easy to follow (usually 1\u20133 sentences). No preamble, no headings, no code fences, no commentary.\n- Preserve every concrete detail the user gave (file names, numbers, identifiers, intent) and never invent requirements or scope.\n- NEVER ask the user for clarification or more detail, and never replace their request with a question. If the request is too vague or trivial to add real terminology (e.g. \"fix the bug\", \"make the button blue\"), return it essentially unchanged with no markers \u2014 the result must always read as the user's own instruction to the agent, never a message back to the user.\n- Output ONLY the rewritten prompt, with markers inline. Nothing else.";
|
|
24
|
+
/**
|
|
25
|
+
* Parse the model's marker-annotated output into clean segments + a plain
|
|
26
|
+
* enhanced string. Strips code fences and a leading "Here's…" preamble first,
|
|
27
|
+
* then splits on the term markers. Always returns at least one segment, so a
|
|
28
|
+
* model that ignores the format still yields a usable cleaned-up prompt (just
|
|
29
|
+
* with no highlighted terms).
|
|
30
|
+
*/
|
|
31
|
+
export declare function parseEnhanced(raw: string): EnhanceResult;
|
|
32
|
+
/**
|
|
33
|
+
* Makes a one-off LLM call (no agent loop, no tools) to rewrite a draft prompt
|
|
34
|
+
* into a tighter, terminology-correct version. Uses the ACTIVE provider/model
|
|
35
|
+
* so the rewrite benefits from the strongest available terminology — unlike
|
|
36
|
+
* session-title generation, which downshifts to a cheap model.
|
|
37
|
+
*/
|
|
38
|
+
export declare function enhancePrompt(opts: {
|
|
39
|
+
provider: Provider;
|
|
40
|
+
model: string;
|
|
41
|
+
prompt: string;
|
|
42
|
+
/** Short project stack string (e.g. "Next.js, TypeScript, Tailwind CSS") used
|
|
43
|
+
* to bias terminology toward the user's stack. Omitted when unknown. */
|
|
44
|
+
stack?: string;
|
|
45
|
+
apiKey?: string;
|
|
46
|
+
baseUrl?: string;
|
|
47
|
+
accountId?: string;
|
|
48
|
+
signal?: AbortSignal;
|
|
49
|
+
}): Promise<EnhanceResult>;
|
|
50
|
+
//# sourceMappingURL=prompt-enhancer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-enhancer.d.ts","sourceRoot":"","sources":["../../src/utils/prompt-enhancer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,KAAK,QAAQ,EAAoB,MAAM,kBAAkB,CAAC;AAEzF;;;;;GAKG;AACH,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpE,MAAM,WAAW,aAAa;IAC5B,wEAAwE;IACxE,QAAQ,EAAE,MAAM,CAAC;IACjB,6EAA6E;IAC7E,QAAQ,EAAE,aAAa,EAAE,CAAC;CAC3B;AAUD,eAAO,MAAM,sBAAsB,mpFAcoC,CAAC;AAExE;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CAiDxD;AAaD;;;;;GAKG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE;IACxC,QAAQ,EAAE,QAAQ,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf;6EACyE;IACzE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,GAAG,OAAO,CAAC,aAAa,CAAC,CAyCzB"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import { stream } from "@kenkaiiii/gg-ai";
|
|
2
|
+
// Markers the model wraps each corrected term in. The delimiters are rare
|
|
3
|
+
// Unicode (U+27E6 ⟦, U+27E7 ⟧, U+00A6 ¦) — effectively impossible in normal
|
|
4
|
+
// prose, so parsing is unambiguous and the agent never sees raw markers (the
|
|
5
|
+
// sidecar strips them to plain text before the prompt is sent).
|
|
6
|
+
const OPEN = "\u27E6"; // ⟦
|
|
7
|
+
const CLOSE = "\u27E7"; // ⟧
|
|
8
|
+
const BAR = "\u00A6"; // ¦
|
|
9
|
+
export const ENHANCER_SYSTEM_PROMPT = `You rewrite a developer's rough request into a tight, well-structured prompt for a CODING AGENT, and you teach them the correct vocabulary as you go. You only rewrite it — never answer, plan, or implement the request, never ask the user questions, and never add code snippets.
|
|
10
|
+
|
|
11
|
+
The teaching part: when the user described something in plain or informal words that has a precise, conventional software-engineering name, use that real name AND wrap it so the user learns the term. This highlighting is the main point — using the right term but failing to wrap it is a miss.
|
|
12
|
+
|
|
13
|
+
Marker format — wrap each introduced technical term EXACTLY like this, with BOTH fields always present:
|
|
14
|
+
${OPEN}correct term${BAR}the user's own words for it${BAR}short note${CLOSE}
|
|
15
|
+
The third field (note) is an optional plain-language gloss and may be omitted: ${OPEN}correct term${BAR}the user's own words${CLOSE}. Never emit a marker without the user's-own-words field (no bare ${OPEN}term${CLOSE}). The user's-own-words field must quote the relevant part of THEIR phrasing, not a paraphrase.
|
|
16
|
+
|
|
17
|
+
Mark ONLY genuine vocabulary lessons — a real plain-words → established-technical-term upgrade, where the wrapped word is named software/CS jargon (e.g. debounce, throttle, lazy loading, caching, memoization, retry with backoff, concurrency, race, optimistic locking, idempotent, infinite scroll, virtualization, skeleton UI, mock/stub, persistence, WebSocket, cron job, deep copy, hot reload). Usually 0–3 per prompt, and often 0 — many requests have no jargon to teach, and that is fine. Do NOT wrap: plain descriptive English that is not a named technical concept (positions like "to the right of", directions, sizes, colors, "between", "reorder"), ordinary words (updates, changes, loading, bottom, the whole app), terms the user already used correctly, or generic rewording. If the only candidates are plain English, wrap nothing. When in doubt, leave it unwrapped.
|
|
18
|
+
|
|
19
|
+
Other rules:
|
|
20
|
+
- Keep it concise and easy to follow (usually 1–3 sentences). No preamble, no headings, no code fences, no commentary.
|
|
21
|
+
- Preserve every concrete detail the user gave (file names, numbers, identifiers, intent) and never invent requirements or scope.
|
|
22
|
+
- NEVER ask the user for clarification or more detail, and never replace their request with a question. If the request is too vague or trivial to add real terminology (e.g. "fix the bug", "make the button blue"), return it essentially unchanged with no markers — the result must always read as the user's own instruction to the agent, never a message back to the user.
|
|
23
|
+
- Output ONLY the rewritten prompt, with markers inline. Nothing else.`;
|
|
24
|
+
/**
|
|
25
|
+
* Parse the model's marker-annotated output into clean segments + a plain
|
|
26
|
+
* enhanced string. Strips code fences and a leading "Here's…" preamble first,
|
|
27
|
+
* then splits on the term markers. Always returns at least one segment, so a
|
|
28
|
+
* model that ignores the format still yields a usable cleaned-up prompt (just
|
|
29
|
+
* with no highlighted terms).
|
|
30
|
+
*/
|
|
31
|
+
export function parseEnhanced(raw) {
|
|
32
|
+
let cleaned = stripWrapping(raw);
|
|
33
|
+
// Robustness pass: a model may emit a malformed marker — most commonly a bare
|
|
34
|
+
// ⟦term⟧ with no ¦original field (observed from Claude). Unwrap any ⟦…⟧ that
|
|
35
|
+
// contains no ¦ down to its inner text BEFORE the main parse, so the literal
|
|
36
|
+
// brackets never leak into the user-visible prompt (there's no original to
|
|
37
|
+
// teach, so it simply becomes plain text).
|
|
38
|
+
cleaned = cleaned.replace(new RegExp(`${OPEN}([^${BAR}${CLOSE}]*)${CLOSE}`, "g"), (_full, inner) => inner);
|
|
39
|
+
const segments = [];
|
|
40
|
+
// ⟦term¦original¦note⟧ — note (3rd field) optional. Term/original forbid the
|
|
41
|
+
// delimiters so the match can't run past its closing bracket.
|
|
42
|
+
const re = new RegExp(`${OPEN}([^${BAR}${CLOSE}]+)${BAR}([^${BAR}${CLOSE}]+)(?:${BAR}([^${CLOSE}]+))?${CLOSE}`, "g");
|
|
43
|
+
let lastIndex = 0;
|
|
44
|
+
let m;
|
|
45
|
+
while ((m = re.exec(cleaned)) !== null) {
|
|
46
|
+
if (m.index > lastIndex) {
|
|
47
|
+
segments.push({ kind: "text", text: cleaned.slice(lastIndex, m.index) });
|
|
48
|
+
}
|
|
49
|
+
const term = m[1].trim();
|
|
50
|
+
const original = m[2].trim();
|
|
51
|
+
const note = m[3]?.trim();
|
|
52
|
+
segments.push({ kind: "term", text: term, original, ...(note ? { note } : {}) });
|
|
53
|
+
lastIndex = re.lastIndex;
|
|
54
|
+
}
|
|
55
|
+
if (lastIndex < cleaned.length) {
|
|
56
|
+
segments.push({ kind: "text", text: cleaned.slice(lastIndex) });
|
|
57
|
+
}
|
|
58
|
+
// Final safety net: replace any orphan delimiter glyphs left by a malformed
|
|
59
|
+
// marker with a space (not nothing) so degraded output never surfaces raw
|
|
60
|
+
// ⟦ ⟧ ¦ characters NOR glues adjacent words together ("debounceprevent"),
|
|
61
|
+
// then collapse the resulting double spaces.
|
|
62
|
+
const stripOrphans = (s) => s.replace(new RegExp(`[${OPEN}${CLOSE}${BAR}]`, "g"), " ").replace(/ {2,}/g, " ");
|
|
63
|
+
for (const seg of segments) {
|
|
64
|
+
if (seg.kind === "text")
|
|
65
|
+
seg.text = stripOrphans(seg.text);
|
|
66
|
+
}
|
|
67
|
+
const trimmed = segments.filter((s) => s.kind !== "text" || s.text.length > 0);
|
|
68
|
+
if (trimmed.length === 0) {
|
|
69
|
+
trimmed.push({ kind: "text", text: stripOrphans(cleaned) });
|
|
70
|
+
}
|
|
71
|
+
const enhanced = trimmed.map((s) => s.text).join("");
|
|
72
|
+
return { enhanced, segments: trimmed };
|
|
73
|
+
}
|
|
74
|
+
/** Strip Markdown code fences and a leading "Here's…/Sure…" preamble line. */
|
|
75
|
+
function stripWrapping(raw) {
|
|
76
|
+
let text = raw.trim();
|
|
77
|
+
// ```lang\n … \n``` → inner content.
|
|
78
|
+
const fence = text.match(/^```[^\n]*\n([\s\S]*?)\n```$/);
|
|
79
|
+
if (fence)
|
|
80
|
+
text = fence[1].trim();
|
|
81
|
+
// Drop a single conversational preamble line if the model added one.
|
|
82
|
+
text = text.replace(/^(?:sure|okay|ok|here(?:'s| is)|here you go)[^\n]*:\s*\n+/i, "");
|
|
83
|
+
return text.trim();
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Makes a one-off LLM call (no agent loop, no tools) to rewrite a draft prompt
|
|
87
|
+
* into a tighter, terminology-correct version. Uses the ACTIVE provider/model
|
|
88
|
+
* so the rewrite benefits from the strongest available terminology — unlike
|
|
89
|
+
* session-title generation, which downshifts to a cheap model.
|
|
90
|
+
*/
|
|
91
|
+
export async function enhancePrompt(opts) {
|
|
92
|
+
// Append a one-line, fact-only stack hint so terminology is idiomatic to the
|
|
93
|
+
// user's project (e.g. "reactive state" for React vs "goroutine" for Go),
|
|
94
|
+
// without giving the enhancer any file/scope context to invent from.
|
|
95
|
+
const system = opts.stack?.trim()
|
|
96
|
+
? `${ENHANCER_SYSTEM_PROMPT}\n\nProject stack: ${opts.stack.trim()}. Prefer terminology idiomatic to this stack, but never invent stack-specific files, APIs, or scope the user didn't mention.`
|
|
97
|
+
: ENHANCER_SYSTEM_PROMPT;
|
|
98
|
+
const messages = [
|
|
99
|
+
{ role: "system", content: system },
|
|
100
|
+
{ role: "user", content: opts.prompt },
|
|
101
|
+
];
|
|
102
|
+
const result = stream({
|
|
103
|
+
provider: opts.provider,
|
|
104
|
+
model: opts.model,
|
|
105
|
+
messages,
|
|
106
|
+
maxTokens: 700,
|
|
107
|
+
// No temperature — the enhancer runs on whatever model is active, and some
|
|
108
|
+
// (e.g. OpenAI reasoning models like gpt-5.5) reject the parameter outright.
|
|
109
|
+
apiKey: opts.apiKey,
|
|
110
|
+
baseUrl: opts.baseUrl,
|
|
111
|
+
accountId: opts.accountId,
|
|
112
|
+
signal: opts.signal,
|
|
113
|
+
});
|
|
114
|
+
// Attach a no-op catch immediately to prevent Node's unhandled rejection
|
|
115
|
+
// detection from firing in the microtask gap before our await hooks up.
|
|
116
|
+
result.response.catch(() => { });
|
|
117
|
+
const response = await result;
|
|
118
|
+
const msg = response.message;
|
|
119
|
+
const text = typeof msg.content === "string"
|
|
120
|
+
? msg.content
|
|
121
|
+
: msg.content
|
|
122
|
+
.filter((c) => c.type === "text")
|
|
123
|
+
.map((c) => c.text)
|
|
124
|
+
.join("");
|
|
125
|
+
return parseEnhanced(text);
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=prompt-enhancer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-enhancer.js","sourceRoot":"","sources":["../../src/utils/prompt-enhancer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAiD,MAAM,kBAAkB,CAAC;AAmBzF,0EAA0E;AAC1E,4EAA4E;AAC5E,6EAA6E;AAC7E,gEAAgE;AAChE,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,IAAI;AAC3B,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,IAAI;AAC5B,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,IAAI;AAE1B,MAAM,CAAC,MAAM,sBAAsB,GAAG;;;;;IAKlC,IAAI,eAAe,GAAG,8BAA8B,GAAG,aAAa,KAAK;iFACI,IAAI,eAAe,GAAG,uBAAuB,KAAK,qEAAqE,IAAI,OAAO,KAAK;;;;;;;;uEAQjJ,CAAC;AAExE;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,IAAI,OAAO,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IACjC,8EAA8E;IAC9E,6EAA6E;IAC7E,6EAA6E;IAC7E,2EAA2E;IAC3E,2CAA2C;IAC3C,OAAO,GAAG,OAAO,CAAC,OAAO,CACvB,IAAI,MAAM,CAAC,GAAG,IAAI,MAAM,GAAG,GAAG,KAAK,MAAM,KAAK,EAAE,EAAE,GAAG,CAAC,EACtD,CAAC,KAAK,EAAE,KAAa,EAAE,EAAE,CAAC,KAAK,CAChC,CAAC;IAEF,MAAM,QAAQ,GAAoB,EAAE,CAAC;IACrC,6EAA6E;IAC7E,8DAA8D;IAC9D,MAAM,EAAE,GAAG,IAAI,MAAM,CACnB,GAAG,IAAI,MAAM,GAAG,GAAG,KAAK,MAAM,GAAG,MAAM,GAAG,GAAG,KAAK,SAAS,GAAG,MAAM,KAAK,QAAQ,KAAK,EAAE,EACxF,GAAG,CACJ,CAAC;IACF,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,IAAI,CAAyB,CAAC;IAC9B,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACvC,IAAI,CAAC,CAAC,KAAK,GAAG,SAAS,EAAE,CAAC;YACxB,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC3E,CAAC;QACD,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;QAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACjF,SAAS,GAAG,EAAE,CAAC,SAAS,CAAC;IAC3B,CAAC;IACD,IAAI,SAAS,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;QAC/B,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAClE,CAAC;IACD,4EAA4E;IAC5E,0EAA0E;IAC1E,0EAA0E;IAC1E,6CAA6C;IAC7C,MAAM,YAAY,GAAG,CAAC,CAAS,EAAU,EAAE,CACzC,CAAC,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,IAAI,IAAI,GAAG,KAAK,GAAG,GAAG,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IACpF,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM;YAAE,GAAG,CAAC,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC7D,CAAC;IACD,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC/E,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC9D,CAAC;IACD,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACrD,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;AACzC,CAAC;AAED,8EAA8E;AAC9E,SAAS,aAAa,CAAC,GAAW;IAChC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IACtB,qCAAqC;IACrC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;IACzD,IAAI,KAAK;QAAE,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAClC,qEAAqE;IACrE,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,4DAA4D,EAAE,EAAE,CAAC,CAAC;IACtF,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;AACrB,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAWnC;IACC,6EAA6E;IAC7E,0EAA0E;IAC1E,qEAAqE;IACrE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE;QAC/B,CAAC,CAAC,GAAG,sBAAsB,sBAAsB,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,8HAA8H;QAChM,CAAC,CAAC,sBAAsB,CAAC;IAE3B,MAAM,QAAQ,GAAc;QAC1B,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE;QACnC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE;KACvC,CAAC;IAEF,MAAM,MAAM,GAAG,MAAM,CAAC;QACpB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,QAAQ;QACR,SAAS,EAAE,GAAG;QACd,2EAA2E;QAC3E,6EAA6E;QAC7E,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,MAAM,EAAE,IAAI,CAAC,MAAM;KACpB,CAAC,CAAC;IAEH,yEAAyE;IACzE,wEAAwE;IACxE,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAEhC,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC;IAC9B,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC;IAC7B,MAAM,IAAI,GACR,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ;QAC7B,CAAC,CAAC,GAAG,CAAC,OAAO;QACb,CAAC,CAAC,GAAG,CAAC,OAAO;aACR,MAAM,CAAC,CAAC,CAAC,EAAoB,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC;aAClD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;aAClB,IAAI,CAAC,EAAE,CAAC,CAAC;IAElB,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kenkaiiii/ggcoder",
|
|
3
|
-
"version": "4.14.
|
|
3
|
+
"version": "4.14.3",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "CLI coding agent with OAuth authentication for Anthropic, OpenAI, and Gemini",
|
|
6
6
|
"license": "MIT",
|
|
@@ -113,10 +113,10 @@
|
|
|
113
113
|
"typescript-language-server": "^5.3.0",
|
|
114
114
|
"wrap-ansi": "^10.0.0",
|
|
115
115
|
"zod": "^4.4.3",
|
|
116
|
-
"@kenkaiiii/gg-agent": "4.14.
|
|
116
|
+
"@kenkaiiii/gg-agent": "4.14.3",
|
|
117
117
|
"@kenkaiiii/gg-pixel": "4.3.101",
|
|
118
|
-
"@kenkaiiii/gg-ai": "4.14.
|
|
119
|
-
"@kenkaiiii/gg-core": "4.14.
|
|
118
|
+
"@kenkaiiii/gg-ai": "4.14.3",
|
|
119
|
+
"@kenkaiiii/gg-core": "4.14.3"
|
|
120
120
|
},
|
|
121
121
|
"optionalDependencies": {
|
|
122
122
|
"@huggingface/transformers": "^3.6.0",
|