next-anteater 0.1.2 → 0.1.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.
@@ -0,0 +1,3 @@
1
+ import type { AnteaterBarProps } from "../types";
2
+ export declare function AnteaterBar({ apiEndpoint, mode, placeholder, branch, }: AnteaterBarProps): import("react/jsx-runtime").JSX.Element;
3
+ //# sourceMappingURL=anteater-bar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anteater-bar.d.ts","sourceRoot":"","sources":["../../src/components/anteater-bar.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAe,MAAM,UAAU,CAAC;AAsF9D,wBAAgB,WAAW,CAAC,EAC1B,WAA6B,EAC7B,IAAa,EACb,WAAoC,EACpC,MAAM,GACP,EAAE,gBAAgB,2CAkOlB"}
@@ -0,0 +1,186 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ import { useState, useRef, useEffect } from "react";
4
+ import { useAnteaterRuns } from "../hooks/use-anteater-runs";
5
+ const BUTTON_SIZE = 48;
6
+ const STEP_EMOJI = {
7
+ initializing: "\u{1F680}",
8
+ working: "\u{1F528}",
9
+ merging: "\u{1F500}",
10
+ redeploying: "\u{2699}\uFE0F",
11
+ done: "\u{2705}",
12
+ error: "\u{274C}",
13
+ };
14
+ function AnteaterLogo({ size = 22, color = "#888" }) {
15
+ return (_jsx("svg", { width: size, height: size, viewBox: "0 0 3815 2340", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: _jsx("g", { transform: "translate(3814.6667, 0) scale(-1, 1)", children: _jsx("path", { fill: color, d: "m 182.30276,2338.6321 c -25.23821,-3.9691 -53.21149,-19.3932 -71.53764,-39.4449 -13.958656,-15.273 -31.281076,-45.4993 -43.329612,-75.6069 C 52.348006,2185.8788 29.948821,2089.765 18.127022,2012 7.3503548,1941.11 0.73193799,1854.4643 0.8640631,1786 1.0197659,1705.3183 11.290219,1581.6276 24.113397,1506 30.594022,1467.7791 50.859424,1371.4946 59.192438,1339.3333 96.466833,1195.4729 140.26877,1078.0772 204.82439,949.01802 234.917,888.85707 267.6281,829.37112 289.33502,795.33333 c 4.20902,-6.6 13.23217,-21 20.05146,-32 C 383.13932,644.36468 486.57803,519.01711 592.66668,420.05291 707.66832,312.77428 808.75523,240.06773 940.66669,169.75465 1053.8863,109.40491 1197.5613,57.586132 1326.6667,30.537289 1389.3841,17.397383 1444.5277,9.6398893 1522,3.0581926 c 40.3889,-3.43125434 165.6731,-3.43383441 208,-0.00428 86.5824,7.0153529 144.3217,15.3103319 224.6667,32.2762279 46.2392,9.764011 48.2291,10.254819 84.6667,20.883785 89.2233,26.026725 181.5133,59.145248 240,86.124668 148.7124,68.59982 251.3358,128.12635 387.3333,224.67201 42.4068,30.10491 111.1713,84.97179 169.3334,135.11039 94.3341,81.32076 147.4322,130.97142 199.1713,186.24012 26.4556,28.26029 38.5537,36.88163 51.8413,36.94294 7.2142,0.0333 5.685,1.70153 22.5745,-24.62685 11.8797,-18.51872 26.3758,-33.27502 38.4129,-39.10256 21.0954,-10.21294 36.9789,-10.09015 58.0843,0.44904 32.0231,15.99101 52.1473,47.14976 59.404,91.97632 2.5551,15.78384 2.0125,50.89765 -1.4836,96 -2.7234,35.13499 -2.9004,41.61027 -1.4552,53.23957 1.791,14.41207 6.4964,30.93707 11.7961,41.4271 7.3083,14.46577 35.5048,61.76003 62.7562,105.26143 5.4879,8.7605 20.7702,33.9605 33.9604,56 13.1903,22.0395 26.7921,44.2719 30.2262,49.4052 23.9784,35.8436 78.5028,134.7578 125.3127,227.3334 9.6618,19.1081 57.4784,121.0759 69.7155,148.6666 18.2937,41.2466 52.8121,125.6082 70.3775,172 2.7766,7.3334 10.2659,27.1334 16.6428,44 20.2143,53.4658 59.5797,173.6147 77.3228,236 21.7424,76.4472 33.8635,125.4051 45.225,182.6667 12.3599,62.293 11.6558,91.916 -2.8836,121.3333 -11.3715,23.0076 -34.9808,40.9392 -64.3504,48.8753 -16.36,4.4207 -44.053,4.3897 -59.3174,-0.066 -22.7272,-6.6345 -41.0676,-18.1321 -61.6208,-38.63 -19.7205,-19.6675 -35.9701,-48.2657 -56.1645,-98.8456 -23.7503,-59.4865 -62.7745,-141.33 -99.4954,-208.6667 -19.372,-35.5234 -47.4287,-82.7649 -70.476,-118.6667 -80.6181,-125.5823 -149.8956,-212.5934 -244.7823,-307.4418 -67.7099,-67.6825 -115.4814,-109.3553 -173.5361,-151.3819 -72.1222,-52.2103 -125.5361,-82.0843 -185.2585,-103.6139 -46.372,-16.7169 -74.0174,-22.5684 -106.6664,-22.5772 -30.3448,-0.01 -50.7167,4.3738 -73.8901,15.8939 -35.4623,17.6292 -60.7334,41.8224 -75.7704,72.5383 -7.6337,15.5933 -10.9677,27.6339 -13.8214,49.916 -1.8862,14.7272 -1.9861,19.7356 -0.6641,33.3115 3.8149,39.1788 15.2694,75.2852 38.7847,122.2554 13.9901,27.9443 45.5244,81.9949 68.7074,117.7664 29.3149,45.2329 65.1262,102.2906 92.8946,148.0076 40.7262,67.0504 77.6292,149.3023 97.0141,216.2314 11.2209,38.7419 16.0654,69.2928 17.0107,107.2753 1.0563,42.4406 -2.4824,66.343 -13.6816,92.412 -12.7939,29.7815 -31.6056,49.7294 -59.8662,63.4822 -39.6598,19.3002 -84.8134,17.0969 -119.0616,-5.8097 -23.407,-15.6555 -40.5848,-35.6295 -75.3361,-87.5988 -30.0517,-44.9414 -46.1877,-67.9888 -63.4778,-90.6667 -43.4808,-57.0299 -91.4949,-111.2316 -147.0681,-166.0207 -63.3788,-62.4845 -111.4374,-102.9115 -300.4087,-252.7041 -12.449,-9.868 -29.249,-23.2776 -37.3333,-29.7991 -67.985,-54.8425 -108.8275,-86.783 -143.1167,-111.9229 -74.1598,-54.3719 -153.9841,-97.1415 -232.1162,-124.3668 -87.7162,-30.565 -183.514,-45.1992 -266.4136,-40.6976 -147.2011,7.9933 -289.3273,57.5801 -425.34015,148.3982 -77.33395,51.6372 -160.45976,129.6244 -229.28678,215.113 -11.78586,14.639 -33.01899,43.8999 -71.11349,98 -13.68395,19.4334 -30.45614,43.1334 -37.27153,52.6667 -6.81539,9.5333 -21.07762,30.5333 -31.69385,46.6667 -26.09105,39.6502 -71.55779,105.6268 -113.23957,164.3214 -37.90541,53.3769 -91.58196,110.1984 -136.14021,144.1165 -23.84606,18.1519 -50.91697,33.7338 -74.81857,43.0654 -22.03271,8.6019 -54.52798,13.2904 -72.51209,10.4621 z" }) }) }));
16
+ }
17
+ function SendIcon({ size = 20, color = "#fff" }) {
18
+ return (_jsxs("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: color, strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("line", { x1: "22", y1: "2", x2: "11", y2: "13" }), _jsx("polygon", { points: "22 2 15 22 11 13 2 9 22 2" })] }));
19
+ }
20
+ function RunsList({ runs }) {
21
+ if (runs.length === 0)
22
+ return null;
23
+ return (_jsx("div", { style: { padding: "10px 14px", display: "flex", flexDirection: "column", gap: "6px" }, children: runs.map((run) => (_jsxs("div", { style: {
24
+ display: "flex",
25
+ alignItems: "center",
26
+ gap: "8px",
27
+ }, children: [_jsx("span", { style: { fontSize: "14px", flexShrink: 0 }, children: STEP_EMOJI[run.step] || STEP_EMOJI.working }), _jsx("span", { style: {
28
+ fontSize: "13px",
29
+ color: run.step === "done" ? "#888" : "#ccc",
30
+ overflow: "hidden",
31
+ textOverflow: "ellipsis",
32
+ whiteSpace: "nowrap",
33
+ flex: 1,
34
+ minWidth: 0,
35
+ }, children: run.prompt })] }, run.branch))) }));
36
+ }
37
+ export function AnteaterBar({ apiEndpoint = "/api/anteater", mode = "prod", placeholder = "Describe a change...", branch, }) {
38
+ const [prompt, setPrompt] = useState("");
39
+ const [isExpanded, setIsExpanded] = useState(false);
40
+ const inputRef = useRef(null);
41
+ const { runs, submitting, error, canSubmit, submit } = useAnteaterRuns(apiEndpoint);
42
+ useEffect(() => {
43
+ if (isExpanded && inputRef.current) {
44
+ const isMobile = window.matchMedia("(max-width: 768px)").matches;
45
+ if (!isMobile) {
46
+ inputRef.current.focus();
47
+ }
48
+ }
49
+ }, [isExpanded]);
50
+ const handleSubmit = async (e) => {
51
+ if (e)
52
+ e.preventDefault();
53
+ if (!prompt.trim() || submitting)
54
+ return;
55
+ const result = await submit({
56
+ prompt: prompt.trim(),
57
+ mode,
58
+ branch,
59
+ context: {
60
+ pathname: typeof window !== "undefined" ? window.location.pathname : undefined,
61
+ },
62
+ });
63
+ if (result) {
64
+ setPrompt("");
65
+ }
66
+ };
67
+ const handleButtonClick = () => {
68
+ if (!isExpanded) {
69
+ setIsExpanded(true);
70
+ return;
71
+ }
72
+ if (prompt.trim() && canSubmit) {
73
+ handleSubmit();
74
+ return;
75
+ }
76
+ if (runs.length === 0) {
77
+ setIsExpanded(false);
78
+ setPrompt("");
79
+ }
80
+ };
81
+ const hasRuns = runs.length > 0;
82
+ const hasText = prompt.trim().length > 0;
83
+ const canSend = hasText && canSubmit;
84
+ return (_jsxs(_Fragment, { children: [_jsx("style", { children: `
85
+ @keyframes anteater-pulse {
86
+ 0%, 100% { opacity: 1; transform: scale(1); }
87
+ 50% { opacity: 0.5; transform: scale(0.75); }
88
+ }
89
+ @keyframes anteater-slide-up {
90
+ from { opacity: 0; transform: translateY(8px); }
91
+ to { opacity: 1; transform: translateY(0); }
92
+ }
93
+ ` }), _jsx("div", { style: {
94
+ position: "fixed",
95
+ bottom: "24px",
96
+ right: "24px",
97
+ zIndex: 9999,
98
+ display: "flex",
99
+ flexDirection: "column",
100
+ alignItems: "flex-end",
101
+ }, children: _jsxs("div", { style: { position: "relative" }, children: [isExpanded && (_jsxs("div", { style: {
102
+ position: "absolute",
103
+ bottom: 0,
104
+ left: "40px",
105
+ right: `${BUTTON_SIZE / 2 + 40}px`,
106
+ zIndex: 0,
107
+ background: "#111",
108
+ border: "1px solid #444",
109
+ borderRadius: "12px",
110
+ overflow: "hidden",
111
+ boxShadow: "0 -4px 16px rgba(0, 0, 0, 0.3)",
112
+ animation: "anteater-slide-up 0.25s ease-out",
113
+ paddingBottom: `${BUTTON_SIZE + 4}px`,
114
+ }, children: [hasRuns && _jsx(RunsList, { runs: runs }), !hasRuns && !error && (_jsx("div", { style: {
115
+ padding: "12px 16px",
116
+ fontSize: "13px",
117
+ color: "#555",
118
+ }, children: "No active changes" })), error && (_jsx("div", { style: {
119
+ padding: "10px 16px",
120
+ fontSize: "13px",
121
+ color: "#ef4444",
122
+ }, children: error }))] })), _jsxs("div", { style: { position: "relative", zIndex: 1 }, children: [_jsx("form", { onSubmit: handleSubmit, style: {
123
+ overflow: "hidden",
124
+ width: isExpanded ? "min(360px, calc(100vw - 100px))" : "0px",
125
+ opacity: isExpanded ? 1 : 0,
126
+ marginRight: `${BUTTON_SIZE / 2}px`,
127
+ transition: "width 0.3s ease, opacity 0.2s ease",
128
+ }, children: _jsx("div", { style: {
129
+ display: "flex",
130
+ alignItems: "center",
131
+ background: "#111",
132
+ border: "1px solid #333",
133
+ borderRadius: "12px",
134
+ padding: "8px 16px",
135
+ height: `${BUTTON_SIZE}px`,
136
+ boxSizing: "border-box",
137
+ boxShadow: "0 4px 24px rgba(0, 0, 0, 0.4)",
138
+ }, children: _jsx("input", { ref: inputRef, type: "text", value: prompt, onChange: (e) => setPrompt(e.target.value), placeholder: submitting
139
+ ? "Sending..."
140
+ : !canSubmit && runs.length >= 5
141
+ ? "Max 5 runs at once"
142
+ : placeholder, disabled: submitting || runs.length >= 5, style: {
143
+ flex: 1,
144
+ background: "transparent",
145
+ border: "none",
146
+ outline: "none",
147
+ color: error ? "#ef4444" : "#fff",
148
+ fontSize: "16px",
149
+ fontFamily: "inherit",
150
+ minWidth: 0,
151
+ }, onKeyDown: (e) => {
152
+ if (e.key === "Escape" && !hasRuns) {
153
+ setIsExpanded(false);
154
+ setPrompt("");
155
+ }
156
+ } }) }) }), _jsx("button", { type: "button", onClick: handleButtonClick, style: {
157
+ position: "absolute",
158
+ right: 0,
159
+ bottom: 0,
160
+ zIndex: 2,
161
+ width: `${BUTTON_SIZE}px`,
162
+ height: `${BUTTON_SIZE}px`,
163
+ borderRadius: "50%",
164
+ border: "none",
165
+ background: canSend ? "#888" : "#fff",
166
+ cursor: "pointer",
167
+ display: "flex",
168
+ alignItems: "center",
169
+ justifyContent: "center",
170
+ boxShadow: canSend
171
+ ? "0 4px 24px rgba(0, 0, 0, 0.4)"
172
+ : "0 4px 24px rgba(0, 0, 0, 0.3)",
173
+ transition: "all 0.2s ease",
174
+ }, onMouseEnter: (e) => {
175
+ e.currentTarget.style.transform = "scale(1.08)";
176
+ e.currentTarget.style.boxShadow = canSend
177
+ ? "0 4px 32px rgba(0, 0, 0, 0.5)"
178
+ : "0 4px 32px rgba(0, 0, 0, 0.4)";
179
+ }, onMouseLeave: (e) => {
180
+ e.currentTarget.style.transform = "scale(1)";
181
+ e.currentTarget.style.boxShadow = canSend
182
+ ? "0 4px 24px rgba(0, 0, 0, 0.4)"
183
+ : "0 4px 24px rgba(0, 0, 0, 0.3)";
184
+ }, children: canSend ? (_jsx(SendIcon, { size: 20, color: "#000" })) : (_jsx("span", { style: { marginTop: "-3px" }, children: _jsx(AnteaterLogo, { size: 34, color: "#111" }) })) })] })] }) })] }));
185
+ }
186
+ //# sourceMappingURL=anteater-bar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anteater-bar.js","sourceRoot":"","sources":["../../src/components/anteater-bar.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { AnteaterRequest, AnteaterResponse, AnteaterRun } from "../types";
2
+ export declare function useAnteaterRuns(apiEndpoint?: string): {
3
+ runs: AnteaterRun[];
4
+ submitting: boolean;
5
+ error: string | null;
6
+ canSubmit: boolean;
7
+ submit: (request: AnteaterRequest) => Promise<AnteaterResponse | null>;
8
+ };
9
+ //# sourceMappingURL=use-anteater-runs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-anteater-runs.d.ts","sourceRoot":"","sources":["../../src/hooks/use-anteater-runs.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,WAAW,EAAwB,MAAM,UAAU,CAAC;AAKrG,wBAAgB,eAAe,CAAC,WAAW,GAAE,MAAwB;;;;;sBAkEjD,eAAe;EA6ClC"}
@@ -0,0 +1,99 @@
1
+ "use client";
2
+ import { useState, useCallback, useRef, useEffect } from "react";
3
+ const POLL_ACTIVE = 3000; // 3s when runs are active
4
+ const POLL_IDLE = 30000; // 30s when no runs (discover others' runs)
5
+ export function useAnteaterRuns(apiEndpoint = "/api/anteater") {
6
+ const [runs, setRuns] = useState([]);
7
+ const [submitting, setSubmitting] = useState(false);
8
+ const [error, setError] = useState(null);
9
+ const pollingRef = useRef(null);
10
+ const initialDeploymentIdRef = useRef(null);
11
+ const mountedRef = useRef(true);
12
+ const pollRuns = useCallback(async () => {
13
+ try {
14
+ const res = await fetch(`${apiEndpoint}/runs`, { cache: "no-store" });
15
+ if (!res.ok)
16
+ return;
17
+ const data = await res.json();
18
+ if (!mountedRef.current)
19
+ return;
20
+ setRuns(data.runs);
21
+ // Track deployment ID for reload detection
22
+ if (data.deploymentId && !initialDeploymentIdRef.current) {
23
+ initialDeploymentIdRef.current = data.deploymentId;
24
+ }
25
+ // Detect new deployment — a run completed and Vercel redeployed
26
+ if (data.deploymentId &&
27
+ initialDeploymentIdRef.current &&
28
+ data.deploymentId !== initialDeploymentIdRef.current) {
29
+ console.log("[anteater] New deployment detected, reloading...");
30
+ // Prefetch to warm CDN, then reload
31
+ try {
32
+ await fetch(window.location.href, { cache: "no-store" });
33
+ }
34
+ catch { }
35
+ window.location.reload();
36
+ return;
37
+ }
38
+ }
39
+ catch {
40
+ // Network error — will retry on next interval
41
+ }
42
+ }, [apiEndpoint]);
43
+ // Start/restart polling with the appropriate interval
44
+ const startPolling = useCallback((interval) => {
45
+ if (pollingRef.current)
46
+ clearInterval(pollingRef.current);
47
+ pollingRef.current = setInterval(pollRuns, interval);
48
+ }, [pollRuns]);
49
+ // Adjust poll frequency based on active runs
50
+ useEffect(() => {
51
+ const interval = runs.length > 0 ? POLL_ACTIVE : POLL_IDLE;
52
+ startPolling(interval);
53
+ }, [runs.length, startPolling]);
54
+ // Poll immediately on mount, clean up on unmount
55
+ useEffect(() => {
56
+ mountedRef.current = true;
57
+ pollRuns();
58
+ return () => {
59
+ mountedRef.current = false;
60
+ if (pollingRef.current)
61
+ clearInterval(pollingRef.current);
62
+ };
63
+ }, [pollRuns]);
64
+ const submit = useCallback(async (request) => {
65
+ if (runs.length >= 5) {
66
+ setError("Maximum 5 concurrent runs");
67
+ return null;
68
+ }
69
+ setSubmitting(true);
70
+ setError(null);
71
+ try {
72
+ const res = await fetch(apiEndpoint, {
73
+ method: "POST",
74
+ headers: { "Content-Type": "application/json" },
75
+ body: JSON.stringify(request),
76
+ });
77
+ const data = await res.json();
78
+ if (!res.ok || data.status === "error") {
79
+ setError(data.error || `Request failed (${res.status})`);
80
+ setSubmitting(false);
81
+ return null;
82
+ }
83
+ setSubmitting(false);
84
+ // Immediately poll to pick up the new run
85
+ await pollRuns();
86
+ // Switch to fast polling
87
+ startPolling(POLL_ACTIVE);
88
+ return data;
89
+ }
90
+ catch (err) {
91
+ setError(err instanceof Error ? err.message : "Unknown error");
92
+ setSubmitting(false);
93
+ return null;
94
+ }
95
+ }, [apiEndpoint, runs.length, pollRuns, startPolling]);
96
+ const canSubmit = !submitting && runs.length < 5;
97
+ return { runs, submitting, error, canSubmit, submit };
98
+ }
99
+ //# sourceMappingURL=use-anteater-runs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-anteater-runs.js","sourceRoot":"","sources":["../../src/hooks/use-anteater-runs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { AnteaterRequest, AnteaterResponse } from "../types";
2
+ type Status = "idle" | "submitting" | "success" | "error";
3
+ export type PipelineStep = "initializing" | "working" | "merging" | "redeploying" | "done";
4
+ export declare function useAnteater(apiEndpoint?: string): {
5
+ status: Status;
6
+ response: AnteaterResponse | null;
7
+ error: string | null;
8
+ pipelineStep: PipelineStep | null;
9
+ pipelineSteps: PipelineStep[];
10
+ submit: (request: AnteaterRequest) => Promise<AnteaterResponse | null>;
11
+ reset: () => void;
12
+ };
13
+ export {};
14
+ //# sourceMappingURL=use-anteater.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-anteater.d.ts","sourceRoot":"","sources":["../../src/hooks/use-anteater.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAA0B,MAAM,UAAU,CAAC;AAE1F,KAAK,MAAM,GAAG,MAAM,GAAG,YAAY,GAAG,SAAS,GAAG,OAAO,CAAC;AAE1D,MAAM,MAAM,YAAY,GAAG,cAAc,GAAG,SAAS,GAAG,SAAS,GAAG,aAAa,GAAG,MAAM,CAAC;AAO3F,wBAAgB,WAAW,CAAC,WAAW,GAAE,MAAwB;;;;;;sBAwG7C,eAAe;;EAoDlC"}
@@ -0,0 +1,143 @@
1
+ "use client";
2
+ import { useState, useCallback, useRef, useEffect } from "react";
3
+ const PIPELINE_STEPS = ["initializing", "working", "merging", "redeploying"];
4
+ const POLL_INTERVAL = 3000;
5
+ const POLL_TIMEOUT = 6 * 60 * 60 * 1000; // 6 hours
6
+ export function useAnteater(apiEndpoint = "/api/anteater") {
7
+ const [status, setStatus] = useState("idle");
8
+ const [response, setResponse] = useState(null);
9
+ const [error, setError] = useState(null);
10
+ const [pipelineStep, setPipelineStep] = useState(null);
11
+ const pollingRef = useRef(null);
12
+ const branchRef = useRef(null);
13
+ const pollingStartRef = useRef(0);
14
+ const initialDeploymentIdRef = useRef(null);
15
+ const stopPolling = useCallback(() => {
16
+ if (pollingRef.current) {
17
+ clearInterval(pollingRef.current);
18
+ pollingRef.current = null;
19
+ }
20
+ }, []);
21
+ // Clean up on unmount
22
+ useEffect(() => stopPolling, [stopPolling]);
23
+ const triggerReload = useCallback(() => {
24
+ console.log(`[anteater] New deployment detected, reloading...`);
25
+ stopPolling();
26
+ setPipelineStep("done");
27
+ // Wait for CDN propagation, then reload with a cache-busted prefetch
28
+ // so the browser picks up fresh content without a visible query param
29
+ setTimeout(async () => {
30
+ if (typeof window === "undefined")
31
+ return;
32
+ try {
33
+ await fetch(window.location.href, { cache: "no-store" });
34
+ }
35
+ catch { }
36
+ window.location.reload();
37
+ }, 4000);
38
+ }, [stopPolling]);
39
+ const pollStatus = useCallback(async () => {
40
+ const branch = branchRef.current;
41
+ if (!branch)
42
+ return;
43
+ // Timeout after 5 minutes of polling
44
+ const elapsed = Date.now() - pollingStartRef.current;
45
+ if (pollingStartRef.current > 0 && elapsed > POLL_TIMEOUT) {
46
+ console.error(`[anteater] Polling timed out after ${Math.round(elapsed / 1000)}s`, { branch });
47
+ stopPolling();
48
+ setStatus("error");
49
+ setError("Request timed out — check GitHub Actions for details");
50
+ setPipelineStep(null);
51
+ return;
52
+ }
53
+ try {
54
+ const res = await fetch(`${apiEndpoint}?branch=${encodeURIComponent(branch)}`, {
55
+ cache: "no-store",
56
+ });
57
+ if (!res.ok) {
58
+ console.warn(`[anteater] Poll failed: ${res.status} ${res.statusText}`, { branch });
59
+ return;
60
+ }
61
+ const data = await res.json();
62
+ console.log(`[anteater] Poll: step=${data.step}, deployId=${data.deploymentId ?? "n/a"}`, { branch });
63
+ // Track the initial deployment ID from the first response
64
+ if (data.deploymentId && !initialDeploymentIdRef.current) {
65
+ initialDeploymentIdRef.current = data.deploymentId;
66
+ console.log(`[anteater] Initial deployment ID: ${data.deploymentId}`);
67
+ }
68
+ if (data.step === "error") {
69
+ console.error(`[anteater] Pipeline error: ${data.error}`, { branch });
70
+ stopPolling();
71
+ setStatus("error");
72
+ setError(data.error || "Workflow failed");
73
+ setPipelineStep(null);
74
+ return;
75
+ }
76
+ // Detect new deployment: if deployment ID changed, new code is live
77
+ if (data.deploymentId &&
78
+ initialDeploymentIdRef.current &&
79
+ data.deploymentId !== initialDeploymentIdRef.current) {
80
+ console.log(`[anteater] New deployment detected: ${initialDeploymentIdRef.current} → ${data.deploymentId}`);
81
+ triggerReload();
82
+ return;
83
+ }
84
+ setPipelineStep(data.step);
85
+ }
86
+ catch (err) {
87
+ console.warn(`[anteater] Poll network error (will retry):`, err);
88
+ }
89
+ }, [apiEndpoint, stopPolling, triggerReload]);
90
+ const startPolling = useCallback(() => {
91
+ stopPolling();
92
+ pollingStartRef.current = Date.now();
93
+ initialDeploymentIdRef.current = null;
94
+ pollStatus();
95
+ pollingRef.current = setInterval(pollStatus, POLL_INTERVAL);
96
+ }, [stopPolling, pollStatus]);
97
+ const submit = useCallback(async (request) => {
98
+ console.log(`[anteater] Submitting: prompt="${request.prompt}", mode=${request.mode}`);
99
+ setStatus("submitting");
100
+ setError(null);
101
+ setResponse(null);
102
+ setPipelineStep("initializing");
103
+ try {
104
+ const res = await fetch(apiEndpoint, {
105
+ method: "POST",
106
+ headers: { "Content-Type": "application/json" },
107
+ body: JSON.stringify(request),
108
+ });
109
+ const data = await res.json();
110
+ if (!res.ok || data.status === "error") {
111
+ console.error(`[anteater] Submit failed: ${data.error}`, { status: res.status, data });
112
+ setStatus("error");
113
+ setError(data.error || `Request failed (${res.status})`);
114
+ setPipelineStep(null);
115
+ return null;
116
+ }
117
+ console.log(`[anteater] Queued: requestId=${data.requestId}, branch=${data.branch}`);
118
+ setStatus("success");
119
+ setResponse(data);
120
+ branchRef.current = data.branch;
121
+ startPolling();
122
+ return data;
123
+ }
124
+ catch (err) {
125
+ console.error(`[anteater] Submit error:`, err);
126
+ setStatus("error");
127
+ setError(err instanceof Error ? err.message : "Unknown error");
128
+ setPipelineStep(null);
129
+ return null;
130
+ }
131
+ }, [apiEndpoint, startPolling]);
132
+ const reset = useCallback(() => {
133
+ setStatus("idle");
134
+ setResponse(null);
135
+ setError(null);
136
+ setPipelineStep(null);
137
+ branchRef.current = null;
138
+ initialDeploymentIdRef.current = null;
139
+ stopPolling();
140
+ }, [stopPolling]);
141
+ return { status, response, error, pipelineStep, pipelineSteps: PIPELINE_STEPS, submit, reset };
142
+ }
143
+ //# sourceMappingURL=use-anteater.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-anteater.js","sourceRoot":"","sources":["../../src/hooks/use-anteater.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export { AnteaterBar } from "./components/anteater-bar";
2
+ export { useAnteater } from "./hooks/use-anteater";
3
+ export { useAnteaterRuns } from "./hooks/use-anteater-runs";
4
+ export type { AnteaterConfig, AnteaterRequest, AnteaterResponse, AnteaterStatusResponse, AnteaterRun, AnteaterRunsResponse, AnteaterBarProps, } from "./types";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,YAAY,EACV,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,sBAAsB,EACtB,WAAW,EACX,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,SAAS,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,4 @@
1
+ export { AnteaterBar } from "./components/anteater-bar";
2
+ export { useAnteater } from "./hooks/use-anteater";
3
+ export { useAnteaterRuns } from "./hooks/use-anteater-runs";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC"}
@@ -0,0 +1,71 @@
1
+ export interface AnteaterConfig {
2
+ /** GitHub repo in "owner/repo" format */
3
+ repo: string;
4
+ /** Branch to target for production changes */
5
+ productionBranch?: string;
6
+ /** Enabled modes */
7
+ modes?: Array<"prod" | "copy">;
8
+ /** Auto-merge safe PRs */
9
+ autoMerge?: boolean;
10
+ /** Glob patterns the AI may edit */
11
+ allowedGlobs?: string[];
12
+ /** Glob patterns the AI must never edit */
13
+ blockedGlobs?: string[];
14
+ /** Keywords that require human review */
15
+ requireReviewFor?: string[];
16
+ /** Max files the AI can change in one run */
17
+ maxFilesChanged?: number;
18
+ /** Max diff size in bytes */
19
+ maxDiffBytes?: number;
20
+ }
21
+ export interface AnteaterRequest {
22
+ prompt: string;
23
+ mode: "prod" | "copy";
24
+ route?: string;
25
+ branch?: string;
26
+ context?: {
27
+ pathname?: string;
28
+ userId?: string;
29
+ role?: string;
30
+ };
31
+ }
32
+ export interface AnteaterResponse {
33
+ requestId: string;
34
+ branch: string;
35
+ status: "queued" | "error";
36
+ error?: string;
37
+ }
38
+ export interface AnteaterStatusResponse {
39
+ /** Current pipeline step */
40
+ step: "initializing" | "working" | "merging" | "redeploying" | "done" | "error";
41
+ /** Whether the workflow has completed */
42
+ completed: boolean;
43
+ /** Error message if failed */
44
+ error?: string;
45
+ /** Vercel deployment ID — changes when new code is deployed */
46
+ deploymentId?: string;
47
+ }
48
+ /** A single active run in the multi-run list */
49
+ export interface AnteaterRun {
50
+ branch: string;
51
+ requestId: string;
52
+ prompt: string;
53
+ step: AnteaterStatusResponse["step"];
54
+ mode: "prod" | "copy";
55
+ }
56
+ /** Response from GET /api/anteater/runs */
57
+ export interface AnteaterRunsResponse {
58
+ runs: AnteaterRun[];
59
+ deploymentId?: string;
60
+ }
61
+ export interface AnteaterBarProps {
62
+ /** API endpoint to submit prompts to */
63
+ apiEndpoint?: string;
64
+ /** Default mode */
65
+ mode?: "prod" | "copy";
66
+ /** Placeholder text */
67
+ placeholder?: string;
68
+ /** Branch override (for invite/copy mode) */
69
+ branch?: string;
70
+ }
71
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,8CAA8C;IAC9C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,oBAAoB;IACpB,KAAK,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;IAC/B,0BAA0B;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,oCAAoC;IACpC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,2CAA2C;IAC3C,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,yCAAyC;IACzC,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,6CAA6C;IAC7C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,6BAA6B;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE;QACR,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,sBAAsB;IACrC,4BAA4B;IAC5B,IAAI,EAAE,cAAc,GAAG,SAAS,GAAG,SAAS,GAAG,aAAa,GAAG,MAAM,GAAG,OAAO,CAAC;IAChF,yCAAyC;IACzC,SAAS,EAAE,OAAO,CAAC;IACnB,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+DAA+D;IAC/D,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,gDAAgD;AAChD,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,sBAAsB,CAAC,MAAM,CAAC,CAAC;IACrC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;CACvB;AAED,2CAA2C;AAC3C,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,WAAW,EAAE,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC/B,wCAAwC;IACxC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mBAAmB;IACnB,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,uBAAuB;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6CAA6C;IAC7C,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}